在ABAP中在屏幕上创建按钮,你需要在SELECTION-SCREEN对象中加入PUSHBUTTON参数,语法如下:
[Syntax]
SELECTION-SCREEN PUSHBUTTON [/] <pos(len)> <name> USER-COMMAND <ucom> [MODIF ID <key>]
<pos(len)>:PUSHBUTTON按钮在屏幕生成的位置与长度。
<name>:PUSHBUTTON按钮的名称,给按钮赋值时要用到名字。
<ucom>:必须指定的字符代码,当用户在选择屏幕上触发按钮时,<ucom>被输入到词典对象字段:SSCRFIELDS-UCOMM中,需要注意的是,必须显式使用语句TABLES引用SSCRFIELDS。否则将会报如下错误:
[For Example]
TABLES SSCRFIELDS."引用词典对象
INCLUDE:<icon>. "按钮中加入图标必须调用该类型库,图标请参考T-CODE:ICON
SELECTION-SCREEN PUSHBUTTON /1(20) PUBU1 USER-COMMAND ABCD.
SELECTION-SCREEN SKIP."换行
SELECTION-SCREEN PUSHBUTTON /10(25) PUBU2 USER-COMMAND ABCE. "位置从10开始
AT SELECTION-SCREEN OUTPUT.
MOVE 'CALL NEXT SCREEN' TO PUBU1. "给PUBU1按钮赋值描述
*INITIALIZATION. "屏幕初始化
* PUBU1 = 'First PUSHBUTTON'.
WRITE ICON_OKAY AS ICON TO PUBU2. "给PUBU2按钮添加图标,并且在给按钮赋值之前,否则将会把文字替换。
*MOVE 'THE SECOND BUTTON' TO PUBU2.
CONCATENATE PUBU2 'My Second Button' INTO PUBU2 SEPARATED BY SPACE. "给第二个按钮添加赋值描述
AT SELECTION-SCREEN.
IF SSCRFIELDS-UCOMM = 'ABCD'.
CALL SELECTION-SCREEN 1234. "调用程序中的另一个窗体
ENDIF.
以上代码运行界面如下:
点击"CALL NEXT SCREEN"按钮调用下一个屏幕,如下: