关于选择屏幕按钮(ABAP SELECTION-SCREEN按钮)

选择屏幕俩种按钮实现的方式:
《一》 SELECTION-SCREEN: FUNCTION KEY 1,
FUNCTION KEY 2,
FUNCTION KEY 3,
FUNCTION KEY 4,
FUNCTION KEY 5.

使用场景:
在这里插入图片描述

1.在选择界面抬头部分显示
使用方法
1.代码顶部做应用TABLES:sscrfields."必须的 否则下边赋值不认 sscrfields
2.初始事件给按钮赋值文本
INITIALIZATION.
sscrfields-functxt_01 = ‘配置表’.
sscrfields-functxt_02 = ‘配置表2’.
”sscrfields-functxt_03 = ‘配置表3’.
MOVE ‘配置表3’ TO sscrfields-functxt_03.

3.按钮ucomm是固定的‘KEY 1 ’是‘FC01’ ,‘KEY 2’ 是‘FC02’ 以此类推到 ‘KEY 7’
触发事件:
AT SELECTION-SCREEN.
CASE sscrfields-ucomm.
WHEN ‘FC01’.
WRITE : ‘FC01’.
WHEN ‘FC02’.
WRITE : ‘FC02’.
WHEN ‘FC03’.
WRITE : ‘FC03’.
WHEN OTHERS.
ENDCASE.
或者
CASE sy-ucomm.
WHEN ‘FC01’.
WRITE : ‘FC01’.
WHEN ‘FC02’.
WRITE : ‘FC02’.
WHEN ‘FC03’.
WRITE : ‘FC03’.
WHEN OTHERS.
ENDCASE.
《二》
在这里插入图片描述

SELECTION SCREEN PUSHBUTTON [/] <pos(len)>
USER-COMMAND [MODIF ID ].
SELECTION-SCREEN PUSHBUTTON [/] <pos(len)> USER-COMMAND [MODIF ID ]
<pos(len)>:PUSHBUTTON按钮在屏幕生成的位置与长度。
:PUSHBUTTON按钮的名称,给按钮赋值时要用到名字。
:必须指定的字符代码,当用户在选择屏幕上触发按钮时,被输入到词典对象字段:SSCRFIELDS-UCOMM中。
需要注意的是,必须显式使用语句TABLES引用SSCRFIELDS。否则将会报如下错误:
如果是用 SY-UCOMM 也可以不用 TABLES引用SSCRFIELDS。
之前在别的资料里看到 USER-COMMAND 必须指定最 多为 4 字符的代码,测试过了 这个不是必须的大于4个也是可以的。
例:
SELECTION-SCREEN PUSHBUTTON 1(20) but1 USER-COMMAND search. "
给按钮添加图片和文本在INITIALIZATION事件或者 AT SELECTION-SCREEN OUTPUT.事件中。

INITIALIZATION./ AT SELECTION-SCREEN OUTPUT.
CALL FUNCTION ‘ICON_CREATE’ " 给按钮添加图标和文本
EXPORTING
name = ‘ICON_EXPORT’ " 按钮的图片的名字 ICON_EXPORT
text = ‘导入模版’ "按钮的文本
info = ‘功能’
IMPORTING
result = but1
EXCEPTIONS
OTHERS = 0.
或者
WRITE ICON_OKAY AS ICON TO PUBU2. "给PUBU2按钮添加图标,并且在给按钮赋值之前,否则将会把文字替换。

CONCATENATE PUBU2 ‘My Second Button’ INTO PUBU2 SEPARATED BY SPACE. "给第二个按钮添加赋值描述
或者
直接赋值文本:
MOVE ‘CALL NEXT SCREEN’ TO but1. "给PUBU1按钮赋值描述
或者
but1 = ‘CALL NEXT SCREEN’ .
定义搜索按钮
AT SELECTION-SCREEN.
CASE sy-ucomm.
WHEN ‘SEARCH’.
write:‘’.
WHEN OTHERS.
ENDCASE.
或者
AT SELECTION-SCREEN.
CASE sscrfields-ucomm.
WHEN ‘SEARCH’.
write:‘’.
WHEN OTHERS.
ENDCASE.

<think>用户让我解释一段ABAP代码,看起来是关于选择屏幕上的按钮布局。首先,我需要回忆一下ABAPSELECTION-SCREEN的相关知识。用户提到的代码里有多个PUSHBUTTON,还有BLOCK和USER-COMMAND。首先,用户引用了TYPE-POOLSslis,这可能和ALV有关,但后面的代码主要是选择屏幕按钮,所以可能只是调用了类型池,但具体用途可能和后面的按钮无关。不过需要确认slis的作用,可能用于ALV显示,但这里可能只是预留。接下来是SELECTION-SCREENBEGINOFBLOCKb1WITHFRAMETITLEv_text。这里创建了一个带框架的块,标题是v_text,可能是一个变量,用户需要在程序中定义这个变量的值,比如“按钮组”之类的。块内的按钮排列成三行三列,每行三个按钮,位置分别是/10(3)、14(3)、18(3)。这里的/10可能是指列10的位置,宽度3,所以每个按钮的位置是列10、14、18,宽度3,这样三个按钮在同一行,间隔1列(10到14之间有3列间隔?或者可能列数计算方式不同)。需要解释SELECTION-SCREENPUSHBUTTON的语法,比如位置参数的含义,以及USER-COMMAND的作用。然后,每个按钮的USER-COMMAND参数是push1到push9,这可能是在PAI事件中触发对应的处理逻辑。用户需要知道这些按钮被点击时会触发哪个事件,以及如何在程序中处理这些命令。另外,选择屏幕结束后还有两个按钮:start和exit,位置在/10(10)和25(10),USER-COMMAND分别是start和exit。这两个按钮可能用于启动处理或退出选择屏幕。需要注意的是,用户可能在使用这些按钮时,需要在ATSELECTION-SCREEN事件中处理USER-COMMAND,比如当用户点击push1时,执行相应的逻辑。同时,按钮的显示文本可能需要通过变量或常量来设置,比如push1的文本可能在程序中通过SELECTION-SCREEN:PUSHBUTTON的TEXT参数指定,但代码中没有显示,可能需要用户自行设置。可能用户的问题在于理解按钮的布局和USER-COMMAND的处理方式,以及如何在实际程序中设置按钮的文本和响应事件。需要解释每个部分的作用,以及如何正确使用这些按钮,比如在程序中定义v_text的值,设置按钮的文本,编写对应的事件处理代码。另外,用户可能对SELECTION-SCREEN的位置参数不太清楚,比如/10(3)中的/表示行首,10是列号,3是宽度。所以每个按钮的位置是在第10列,宽度3,这样同一行的三个按钮分别位于列10、14、18,间隔4列?或者可能列的计算方式不同,需要确认ABAPSELECTION-SCREEN的位置语法。总结来说,需要解释代码的结构,每个按钮的布局,USER-COMMAND的作用,以及如何在程序中处理这些按钮的点击事件,可能还包括如何设置按钮的显示文本和块的标题。</think>这段ABAP代码定义了一个选择屏幕Selection Screen),包含按钮布局和交互逻辑,主要用于用户界面(GUI)的交互操作。以下是逐部分解释: ### **1. 类型池引用** ```abap TYPE-POOLS : slis. ``` - 引用SAP标准类型池`SLIS`(通常用于ALV列表的字段目录定义),但此代码中未直接使用`SLIS`类型,可能是为后续ALV显示预留或习惯性引用。 ### **2. 选择屏幕块(Block)定义** ```abap SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE v_text. ...(按钮定义) SELECTION-SCREEN END OF BLOCK b1. ``` - 创建一个带框架的块(Block),标题为变量`v_text`(需在程序中赋值,如`v_text = '按钮组'`)。 - 块内包含9个按钮(`push1`~`push9`),按3行3列布局。 ### **3. 按钮布局与属性** #### **按钮位置语法** - `SELECTION-SCREEN PUSHBUTTON /10(3) push1 USER-COMMAND push1.` - `/10`:表示从第10列开始(行首,因为以`/`开头)。 - `(3)`:按钮宽度为3字符。 - `push1`:按钮屏幕字段名(用于程序内部标识)。 - `USER-COMMAND push1`:用户命令(触发PAI事件时传递的命令值)。 #### **按钮排列逻辑** - **第一行**:`push1`(列10)、`push2`(列14)、`push3`(列18)。 - **第二行**:`push4`(列10)、`push5`(列14)、`push6`(列18)。 - **第三行**:`push7`(列10)、`push8`(列14)、`push9`(列18)。 - 同一行的按钮间隔4列(10→14→18),形成等距排列。 ### **4. 独立按钮(块外)** ```abap SELECTION-SCREEN PUSHBUTTON /10(10) start USER-COMMAND start. SELECTION-SCREEN PUSHBUTTON 25(10) exit USER-COMMAND exit. ``` - `start`按钮:位于第10列,宽度10字符,命令为`start`(触发启动逻辑)。 - `exit`按钮:位于第25列,宽度10字符,命令为`exit`(触发退出逻辑)。 ### **5. 按钮交互逻辑** - **USER-COMMAND的作用**:当用户点击按钮时,系统会触发`AT SELECTION-SCREEN`事件,并传递对应的命令值(如`push1`、`start`)。 - **程序需实现的事件处理**: ```abap AT SELECTION-SCREEN. CASE sy-ucomm. WHEN 'PUSH1'. " 处理push1点击 WHEN 'START'. " 处理start点击 WHEN 'EXIT'. " 处理exit点击(如退出选择屏幕) ENDCASE. ``` ### **6. 按钮文本设置** - 按钮的显示文本需通过`SELECTION-SCREEN`的`TEXT`参数单独设置(代码中未体现,需补充): ```abap SELECTION-SCREEN: PUSHBUTTON /10(3) push1 TEXT '按钮1' USER-COMMAND push1, PUSHBUTTON 14(3) push2 TEXT '按钮2' USER-COMMAND push2, ... ``` ### **代码用途** - 创建一个3x3的按钮网格(`push1`~`push9`)和一个独立按钮行(`start`、`exit`),用于用户选择或触发操作(如启动处理、退出界面)。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值