selection-screen的示例

该ABAP程序用于显示在线用户信息,并允许通过选择屏幕输入用户名来检索特定用户的详细信息。程序还提供了两个按钮选项,分别对应不同的用户命令,用于进一步处理选定用户的数据。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

TABLES: v_username, sscrfields.

DATA: BEGIN OF usr_tabl OCCURS 10.
INCLUDE STRUCTURE uinfo.
DATA: END OF usr_tabl.

DATA: opcode TYPE x,
slave_mode TYPE x,
loc_utid LIKE usr_tabl-tid.

CONSTANTS: c_fcode_slon LIKE sy-ucomm VALUE 'SLON',
c_fcode_slof LIKE sy-ucomm VALUE 'SLOF'.

SELECTION-SCREEN BEGIN OF BLOCK userid WITH FRAME title frTitle.
PARAMETERS: p_userid LIKE uinfo-bname.
SELECTION-SCREEN END OF BLOCK userid.
SELECTION-SCREEN BEGIN OF BLOCK show WITH FRAME.
SELECTION-SCREEN PUSHBUTTON /10(25) slon USER-COMMAND slon.
SELECTION-SCREEN PUSHBUTTON 45(25) slof USER-COMMAND slof.
SELECTION-SCREEN END OF BLOCK show.

INITIALIZATION.
MOVE 'On Screen Flow Show' TO slon.
MOVE 'Off Screen Flow Show' TO slof.
move 'Enter an online user.' to frTitle.

AT SELECTION-SCREEN ON p_userid.
IF NOT p_userid IS INITIAL.
SELECT SINGLE bname
INTO v_username-bname
FROM v_username
WHERE bname = p_userid.
IF sy-subrc <> 0.
MESSAGE e999 WITH 'User not logged on'.
ENDIF.
ELSE.
 "MESSAGE E000 WITH 'UserID' display like 'E'.
 message id 'ZMSGCZW' type 'E' NUMBER '000' WITH 'UserID' display like 'E'.
ENDIF.

AT SELECTION-SCREEN.
refresh usr_tabl.
FREE usr_tabl.
opcode = 2.
CALL 'ThUsrInfo' ID 'OPCODE' FIELD opcode ID 'TAB' FIELD
usr_tabl-*sys*.

READ TABLE usr_tabl WITH KEY bname = p_userid TRANSPORTING tid.
IF sy-subrc <> 0.
MESSAGE e999 WITH 'Requested User Id is not available'.
ENDIF.

loc_utid = usr_tabl-tid.
slave_mode = 5.

IF sscrfields-ucomm = c_fcode_slon.
opcode = 14.
CALL 'ThUsrInfo' ID 'OPCODE' FIELD opcode ID 'S_TID' FIELD loc_utid
ID 'S_MODE' FIELD slave_mode.
ELSEIF sscrfields-ucomm = c_fcode_slof.
opcode = 15.
CALL 'ThUsrInfo' ID 'OPCODE' FIELD opcode ID 'S_TID' FIELD loc_utid.
ENDIF.

TYPE-POOLS : slis. "调用类型池 SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE v_text. SELECTION-SCREEN PUSHBUTTON /10(3) push1 USER-COMMAND push1. SELECTION-SCREEN PUSHBUTTON 14(3) push2 USER-COMMAND push2. SELECTION-SCREEN PUSHBUTTON 18(3) push3 USER-COMMAND push3. SELECTION-SCREEN PUSHBUTTON 22(3) push4 USER-COMMAND push4. SELECTION-SCREEN PUSHBUTTON /10(3) push5 USER-COMMAND push5. SELECTION-SCREEN PUSHBUTTON 14(3) push6 USER-COMMAND push6. SELECTION-SCREEN PUSHBUTTON 18(3) push7 USER-COMMAND push7. SELECTION-SCREEN PUSHBUTTON 22(3) push8 USER-COMMAND push8. SELECTION-SCREEN PUSHBUTTON /10(3) push9 USER-COMMAND push9. SELECTION-SCREEN PUSHBUTTON 14(3) push10 USER-COMMAND push10. SELECTION-SCREEN PUSHBUTTON 18(3) push11 USER-COMMAND push11. SELECTION-SCREEN PUSHBUTTON 22(3) push12 USER-COMMAND push12. SELECTION-SCREEN PUSHBUTTON /10(3) push13 USER-COMMAND push13. SELECTION-SCREEN PUSHBUTTON 14(3) push14 USER-COMMAND push14. SELECTION-SCREEN PUSHBUTTON 18(3) push15 USER-COMMAND push15. SELECTION-SCREEN PUSHBUTTON 22(3) push16 USER-COMMAND push16. SELECTION-SCREEN END OF BLOCK b1. SELECTION-SCREEN PUSHBUTTON /10(10) start USER-COMMAND start. SELECTION-SCREEN PUSHBUTTON 25(10) exit USER-COMMAND exit. TYPES: BEGIN OF coord, x TYPE i, y TYPE i, END OF coord. *----------------------------------------------------------------------* * CLASS BUTTN DEFINITION *----------------------------------------------------------------------* * *----------------------------------------------------------------------* CLASS buttn DEFINITION. PUBLIC SECTION. CLASS-DATA: flag TYPE char3 VALUE 'Z' READ-ONLY. CLASS-METHODS: c_isswap IMPORTING but1 TYPE REF TO buttn but2 TYPE REF TO buttn RETURNING VALUE(r_che) TYPE char1, c_swap IMPORTING but1 TYPE REF TO buttn but2 TYPE REF TO buttn. "构造函数,名称固定CONSTRUCTOR METHODS: constructor IMPORTING i_id TYPE i i_name TYPE fieldname i_ucomm TYPE sy-ucomm i_icon TYPE char3 i_x TYPE i i_y TYPE i, show_icon, get_id RETURNING VALUE(r_id) TYPE char10, get_icon RETURNING VALUE(r_icon) TYPE char3, set_icon IMPORTING i_icon TYPE char3, set_icon2 IMPORTING i_icon2 TYPE char3, get_ucomm RETURNING VALUE(r_ucomm) TYPE sy-ucomm, get_name RETURNING VALUE(r_name) TYPE fieldname, get_coord0 RETURNING VALUE(r_coord0) TYPE coord, swap IMPORTING i_btn TYPE REF TO buttn RETURNING VALUE(r_result) TYPE char1, che_sort RETURNING VALUE(r_che) TYPE char1, get_nearcoord IMPORTING i_coord TYPE coord RETURNING VALUE(r_coord0) TYPE coord, * GET_NEARCOORD EXPORTING IT_TAB TYPE REF TO DATA. che_coord IMPORTING i_coord TYPE coord RETURNING VALUE(r_che) TYPE char1. PRIVATE SECTION. DATA id TYPE i. DATA name TYPE fieldname. DATA ucomm TYPE sy-ucomm. DATA icon TYPE char3. DATA icon2 TYPE char3. DATA coord0 TYPE coord. ENDCLASS. "buttn1 DEFINITION *----------------------------------------------------------------------* * CLASS buttn1 IMPLEMENTATION *----------------------------------------------------------------------* * *----------------------------------------------------------------------* CLASS buttn IMPLEMENTATION. METHOD constructor. id = i_id. name = i_name. ucomm = i_ucomm. icon = i_icon. coord0-x = i_x. coord0-y = i_y. CONDENSE: name, ucomm, icon. ENDMETHOD. "set_value METHOD show_icon. FIELD-SYMBOLS <fs> TYPE any. ASSIGN (name) TO <fs>. <fs> = icon. ENDMETHOD. "SHOW_ICON METHOD get_id. r_id = id. ENDMETHOD. "get_icon METHOD set_icon. icon = i_icon. CONDENSE icon. ENDMETHOD. "SET_ICON METHOD set_icon2. icon2 = i_icon2. CONDENSE icon2. ENDMETHOD. "SET_ICON2 METHOD get_icon. r_icon = icon. ENDMETHOD. "get_icon METHOD get_ucomm. r_ucomm = ucomm. ENDMETHOD. "get_ucomm METHOD get_name. r_name = name. ENDMETHOD. "GET_NAME METHOD get_coord0. r_coord0 = coord0. ENDMETHOD. "get_coord0 METHOD swap. DATA coord2 TYPE coord. coord2 = i_btn->get_coord0( ). DATA l_tmp TYPE i. IF coord2-x = me->coord0-x. l_tmp = coord2-y - me->coord0-y. ELSEIF coord2-y = me->coord0-y. l_tmp = coord2-x - me->coord0-x. ELSE. r_result = ''. "不可交换 RETURN. ENDIF. IF l_tmp = 1 OR l_tmp = -1. r_result = 'X'. "结果为可交换 ELSE. r_result = ''. "不可交换 RETURN. "退出METHOD模块 ENDIF. DATA l_icon TYPE char3. l_icon = i_btn->get_icon( ). CONDENSE: l_icon, me->icon. i_btn->set_icon( me->icon ). me->icon = l_icon. ENDMETHOD. "SWAP_BTN METHOD che_sort. CONDENSE: me->icon, me->icon2. IF me->icon = me->icon2. r_che = 'X'. ELSE. r_che = ''. ENDIF. ENDMETHOD. 这段代码为什么从9个按钮改为了16个按钮后,运行报错 <fs> = icon.字段符号尚未分配
07-04
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值