`

abap 屏幕元素

 
阅读更多
 通过这个屏幕实例可以了解屏幕元素的构成,及屏幕事件。
一.首先我们先完成窗体显示部分的代码
TABLES: BKPF,SSCRFIELDS.
DATA FLAG TYPE I.
SELECTION-SCREEN BEGIN OF BLOCK PART1 WITH FRAME TITLE TITLE1.
*了解type/like/必选/memory id
PARAMETERS:NUMBER1 TYPE I OBLIGATORY,"必填
NUMBER2 TYPE I,
BUMBER3 TYPE I.
PARAMETERS: P_BUKRS4 TYPE C MEMORY ID HK."注意memory id 不能超过三字符
PARAMETERS:S_BUKRS LIKE BKPF-BUKRS DEFAULT '1000'.
SELECTION-SCREEN END OF BLOCK PART1.

SELECTION-SCREEN BEGIN OF BLOCK PART2 WITH FRAME TITLE TITLE2.
*注意了解一下no-extension/no intervals/mod if
SELECT-OPTIONS:S_BUKRS1 FOR BKPF-BUKRS NO-EXTENSION MODIF ID G1,"关闭不连续多选
S_BUKRS2 FOR BKPF-BUKRS NO INTERVALS MODIF ID G1,"不显示高的条件
S_BUKRS3 FOR BKPF-BUKRS MODIF ID G1,
S_BUKRS4 FOR BKPF-BUKRS DEFAULT '1111' MODIF ID G1."带默认值
SELECTION-SCREEN SKIP 1.“换行
SELECT-OPTIONS:S_MONAT1 FOR BKPF-MONAT NO-EXTENSION MODIF ID G2,
S_MONAT2 FOR BKPF-MONAT NO INTERVALS MODIF ID G2,
S_MONAT3 FOR BKPF-MONAT MODIF ID G2,
S_MONAT4 FOR BKPF-MONAT DEFAULT '1111' MODIF ID G2.
*添加一组按钮控制显示,放置在一行内
SELECTION-SCREEN BEGIN OF LINE.
SELECTION-SCREEN PUSHBUTTON 30(10) BTNTXT1 USER-COMMAND BUT1.
SELECTION-SCREEN PUSHBUTTON 45(10) BTNTXT2 USER-COMMAND BUT2.
SELECTION-SCREEN PUSHBUTTON 60(10) BTNTXT3 USER-COMMAND BUT3.
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN END OF BLOCK PART2.

SELECTION-SCREEN BEGIN OF BLOCK PART3 WITH FRAME TITLE TITLE3.
*了解checkbox/comment/line/radiobutton
SELECTION-SCREEN BEGIN OF LINE.
*复选按钮放在一行上
SELECTION-SCREEN POSITION 1."定位
SELECTION-SCREEN COMMENT 1(5) CHK1 FOR FIELD PCK1.
SELECTION-SCREEN COMMENT 20(5) CHK2 FOR FIELD PCK2.
SELECTION-SCREEN POSITION 10."定位,调试容易出错,特别要注意这个数据不能冲突,
PARAMETERS PCK1 AS CHECKBOX DEFAULT 'X'.
SELECTION-SCREEN POSITION 26.
PARAMETERS PCK2 AS CHECKBOX.
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN ULINE.”划横线

SELECTION-SCREEN BEGIN OF LINE.
*单选按钮放在一行上
SELECTION-SCREEN COMMENT 1(5) RD1 FOR FIELD PRD1.
PARAMETERS:PRD1 RADIOBUTTON GROUP SG1 DEFAULT 'X'.
SELECTION-SCREEN COMMENT 10(5) RD2 FOR FIELD PRD2.
PARAMETERS:PRD2 RADIOBUTTON GROUP SG1.
SELECTION-SCREEN END OF LINE.

SELECTION-SCREEN END OF BLOCK PART3.

SELECTION-SCREEN BEGIN OF BLOCK PART4 WITH FRAME TITLE TITLE4.
*function key
SELECTION-SCREEN COMMENT 1(50) PART4TXT.
*在应用工具条上添加功能键按钮响应事件
SELECTION-SCREEN:FUNCTION KEY 1,
FUNCTION KEY 2.
SELECTION-SCREEN END OF BLOCK PART4.

INITIALIZATION.
*用于屏幕初始化,屏幕字段默认值的填充和赋值
TITLE1 = '第一个Frame(了解type/like/必选/memory id)'.
TITLE2 = '第二个Frame(了解一下no-extension/no intervals/mod if/radiobutton)'.
TITLE3 = '第三个Frame(了解checkbox/comment/line)'.
TITLE4 = '第四个Frame(了解checkbox/comment/line)'.
NUMBER1 = 1000.
CHK1 = 'CHINA'.
CHK2 = 'USA'.
RD1 = '中文'.
RD2 = '英文'.
BTNTXT1 = '全部显示'.
BTNTXT2 = '只显示第一组'.
BTNTXT3 = '只显示第二组'.
PART4TXT = '看看function key是否出发 start-of-selection?'.
SSCRFIELDS-FUNCTXT_01 = 'SELF_FUNCTION1'.
SSCRFIELDS-FUNCTXT_02 = 'SELF_FUNCTION2'.

完成这部分代码,你就可以看见下面这样一个界面了


二.接着你可以先看看下面这张图,然后继续后面的事件代码

了解了这张图,就对选择屏幕中的事件响应过程和顺序有了了解,也就可以显示我们下面的功能了,继续coding:
AT SELECTION-SCREEN OUTPUT.
*屏幕更改(屏幕显示出来前判断哪些要显示)
LOOP AT SCREEN.
IF SCREEN-GROUP1 = 'G1' AND FLAG > 0.
SCREEN-ACTIVE = '0'.
ENDIF.
IF SCREEN-GROUP1 = 'G2' AND FLAG < 0.
SCREEN-ACTIVE = '0'.
ENDIF.
MODIFY SCREEN.
ENDLOOP.

"下面的这些message是为了让自己了解程序运行过程的
AT SELECTION-SCREEN ON BLOCK PART1.
MESSAGE '你想检查 PART1 块内的字段就在这里处理' TYPE 'I'.

AT SELECTION-SCREEN ON BLOCK PART2.
MESSAGE '你想检查 PART2 块内的字段就在这里处理' TYPE 'I'.

AT SELECTION-SCREEN ON NUMBER1.
MESSAGE '你只想验证某一具体字段可以这样处理' TYPE 'I'.

AT SELECTION-SCREEN ON VALUE-REQUEST FOR NUMBER1.
MESSAGE '可以显示你想要的列表值' TYPE 'I'.

AT SELECTION-SCREEN ON HELP-REQUEST FOR NUMBER2.
MESSAGE '你可为屏幕字段显示自定义帮助' TYPE 'I'.

AT SELECTION-SCREEN ON RADIOBUTTON GROUP SG1.
MESSAGE '对于单选按钮选择后的处理可以在这里处理' TYPE 'I'.

AT SELECTION-SCREEN.
MESSAGE '你操作界面上面的所有字段都要检查就在这里处理' TYPE 'I'.
*如果你在initialztion中已经初始化了,在这里或者下面的output中再修改看看
NUMBER1 = 2000.
TITLE4 = '第四个Frame'.
*先判断是哪一个按钮
MESSAGE SSCRFIELDS-UCOMM TYPE 'I'.
CASE SSCRFIELDS-UCOMM.
WHEN 'BUT1'.
FLAG = 0.
WHEN 'BUT2'.
FLAG = -1.
WHEN 'BUT3'.
FLAG = 1.
WHEN 'FC01'.
MESSAGE 'FUNCTION 1' TYPE 'I'.
WHEN 'FC02'.
MESSAGE 'FUNCTION 2' TYPE 'I'.

WHEN OTHERS.
FLAG = 0.
ENDCASE.

START-OF-SELECTION.
MESSAGE '你在这里开始进行按添加取数的处理' TYPE 'I'.

END-OF-SELECTION.
MESSAGE '你将你取出的数展现到屏幕,如果你偷懒也可以放在start-of-selection里面' TYPE 'I'.

AT LINE-SELECTION.
MESSAGE '你点我干吗?' TYPE 'I'.

需要注意的是:

AT USER-COMMAND和 AT LINE-SELECTION.事件的触发,如果功能代码不是和PICK绑定就会触发AT USER-COMMAND,当你双击选择行,然而at line-selection中的程序却不执行。

三.选择屏幕的调用

我们另外定义一个选择屏幕500
SELECTION-SCREEN BEGIN OF SCREEN 500.
SELECTION-SCREEN BEGIN OF LINE.
SELECT-OPTIONS:S_BUKRS6 FOR BKPF-BUKRS NO INTERVALS .
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN END OF SCREEN 500.
修改START-OF-SELECTION事件为:
CALL SELECTION-SCREEN 500.

四.选择屏幕嵌入到标准屏幕
1.需要在标准屏幕中的PBO/PAI中加入
PBO: CALL SUBSCREEN subsc1 INCLUDING sy-repid 屏幕编号参数."不能直接输编号,DATA: 参数 TYPE sy-dynnr VALUE '500'.
PAI: CALL SUBSCRENN subsc1. "主要就显示了在标准屏幕中操作选择屏幕,这些事件能够传递个选择屏幕处理事件;
2.主程序
DATA: SUBSCNUMBER TYPE SY-DYNNR VALUE '500'.
SELECTION-SCREEN BEGIN OF SCREEN 500 AS SUBSCREEN."这个as subscreen很重要
PARAMETERS P TYPE I.
SELECTION-SCREEN END OF SCREEN 500.
START-OF-SELECTION.
CALL SCREEN 1200.“500选择屏幕嵌入到1200标准屏幕
AT SELECTION-SCREEN.
IF SY-DYNNR = '500'.
MESSAGE 'click subscree' TYPE 'I'.
ENDIF.

需要注意两个地方:一个是as subscreen,另外一个就是激活了,因为嵌来嵌去的,你调试的时候容易报错。

分享到:
评论

相关推荐

    SAP ABAP 屏幕字段输入帮助实现

    ### SAP ABAP 屏幕字段输入帮助实现 #### 一、概述 在SAP ABAP开发过程中,为了提高用户体验和减少输入错误,开发者经常会为屏幕字段设置输入帮助(Input Help)。当用户按下F4键时,系统会弹出一个搜索帮助窗口,...

    ABAP-选择屏幕

    通过本文,我们将了解 Dynpros 的基本结构、屏幕元素的构成、屏幕事件等知识点。 屏幕元素 在 Dynpros 中,屏幕元素是构成屏幕的基本组件。屏幕元素可以是文字、按钮、输入框、复选框、单选按钮等。这些元素可以...

    ABAP屏幕开发-仿照采购订单界面

    本教程将聚焦于“ABAP屏幕开发-仿照采购订单界面”,这是一个实用的示例,旨在帮助学习者掌握如何在SAP系统中构建类似的实际业务界面。 首先,我们要理解ABAP屏幕开发的基本概念。在ABAP中,屏幕是由一系列的屏幕...

    SAP ABAP开发学习——第15课:屏幕设计(视频教程)

    3. **屏幕元素(Screen Elements)**:这些是屏幕上的基本组件,包括输入字段、选择字段、按钮、文本框等。每个元素都有其特定的属性,如大小、位置、颜色、是否可读/写等。 4. **屏幕事件(Screen Events)**:在...

    Abap基础学习文档4_将数据输出到屏幕.doc

    ### ABAP基础学习知识点:将数据输出到屏幕 #### 一、概述 本文档主要介绍了如何使用ABAP语言中的`WRITE`语句将数据输出到屏幕。`WRITE`语句是ABAP编程中最基本也是最常用的输出语句之一,它可以方便地在屏幕上展示...

    第05章 标准列表和选择屏幕.rar_ABAP列表_ABAP选择屏幕_hide

    在ABAP编程中,标准列表(Standard List)和选择屏幕(Selection Screen)是两种非常重要的交互界面元素。它们主要用于数据的展示和用户输入,确保用户能够有效地与SAP系统进行交互。下面将详细阐述这两个概念以及...

    abap学习资料abap

    7. **屏幕编程**:讨论如何利用屏幕事件和用户接口元素进行用户交互界面的设计。 8. **报表程序**:深入理解REPORT语句,包括如何生成简单的到复杂的报表。 9. **函数模块**:介绍如何创建和使用函数模块,理解其...

    ABAP中文帮助文档

    2. **语法基础**:包括数据类型、变量声明、常量、运算符和表达式等基本元素。 3. **控制结构**:如IF...THEN...ELSE、CASE语句、LOOP循环以及选择结构,用于实现程序的逻辑流程。 4. **输入/输出处理**:学会如何...

    abap初学最好的教材

    - SCREEN-OBJECTS:用于定义屏幕元素,如输入字段、按钮等。 7. ABAP报表开发: - ALV(ABAP List Viewer):用于快速生成表格形式的报告。 - SMARTFORMS:创建复杂的打印格式。 8. ABAP Web Dynpro: - 用于...

    SAP ABAP开发BADI与增强资料

    BADI(Business Add-In)和屏幕增强是ABAP开发中的关键概念,它们允许用户自定义和扩展标准SAP功能以满足特定业务需求。 **BADI简介** BADI是一种灵活的、面向对象的设计技术,它允许开发人员在不修改标准SAP代码的...

    SAP ABAP 电子书

    1. ABAP基础:理解ABAP的语法结构,如数据元素、数据类型、内部表、选择屏幕和屏幕设计。 2. ABAP程序设计:掌握程序结构、流程控制、错误处理和模块化编程。 3. ABAP与数据库:熟练运用ABAP SQL进行数据库操作,...

    ABAP WorkBenchABAP WorkBench

    5. **ABAP Reports**: ABAP Report是最基本的开发单元,用于生成打印报告或交互式屏幕。在SE38中,可以创建和编辑报告,通过选择不同的程序类型(如Report, Function Module等)来满足不同需求。 6. **Function ...

    ABAP考试试题

    1. 在ABAP/4的开发工作中,哪一个TCODE是直接进入就可以创建程序、函数组以及程序内部各种元素的? 答案:A) SE80 知识点:SE80是ABAP Workbench的入口,用于创建、编辑和测试ABAP程序。 2. 下面的定义语句中,哪...

    ABAP入门教程试用于初学者,很友好.pdf

    ABAP的基本语言元素包括数据元素声明(如数值和字符数据变量声明)、操作符(如加减乘除)、控制元素(如布尔值)、特殊数据格式(如日期和时间)、字符处理函数(如字符串截取)、子程序或自定义函数的调用以及SQL...

    ABAP中文完美学习手册

    6. 文本元素:ABAP中的文本元素包括标题、表头和列表头等,可通过创建和更改文本元素来调整程序的显示内容。还包括复制、比较文本符号、翻译文本元素等操作。 7. 控制ABAP程序流:ABAP通过编程逻辑表达式控制程序的...

    abap程序员之路

    屏幕元素(如字段、按钮)的定义和事件(如输入事件、选择事件)的处理,都需要通过ABAP Screen Painter和相关的编程技术来实现。 ABAP还支持Web编程,如WebDynpro ABAP,这是一种用于开发富客户端应用程序的技术。...

    ABAP基本概念了解

    在ABAP字典中,你可以创建、维护和组织数据库表、结构、域、数据元素等数据对象。这些对象在SAP系统中被用来存储和处理业务数据。例如,你可以创建一个名为“EMPLOYEE”的表来存储员工信息,定义每个字段的数据类型...

    SAP ABAP ALV 详解

    ② 作为屏幕元素之一与其他屏幕元素结合出现。 ALV 的特点是:① ALV 是独立的二进制软件元素;② 安装在系统的前台(即 SAPGUI 中),将列表处理功能从应用服务器移至显示层,因而提高了相应速度;③ 可以通过 ...

    SAP ABAP中文帮助

    1. **ABAP/4的基本组件**:介绍语言的基础元素,如数据声明、数据操作、流程控制和事件响应机制等。 2. **如何编写报表程序**:教授如何利用ABAP/4来设计和实现报表,包括数据提取、处理和展示的技巧。 3. **...

Global site tag (gtag.js) - Google Analytics