ABAP选择屏幕的事件触发,以及F4的制作

ABAP选择屏幕的事件触发,以及F4的制作

直接看实例
REPORT zjob_ljr_10.

TABLES:ztest_ljr01.

SELECTION-SCREEN BEGIN OF BLOCK bl02 WITH FRAME TITLE TEXT-002.
PARAMETERS: p_zsfqgq TYPE ztest_ljr01-bukrs AS LISTBOX VISIBLE LENGTH 10 USER-COMMAND ucomm.
SELECT-OPTIONS: s_zxnzt FOR ztest_ljr01-zdjbh MODIF ID m4.
SELECTION-SCREEN END OF BLOCK bl02.

AT SELECTION-SCREEN OUTPUT.
PERFORM frm_set_params_art.
PERFORM frm_set_zsfqgq.

AT SELECTION-SCREEN ON VALUE-REQUEST FOR s_zxnzt-low.
PERFORM frm_set_zxnzt_value USING ‘S_ZXNZT’.

AT SELECTION-SCREEN ON VALUE-REQUEST FOR s_zxnzt-high.
PERFORM frm_set_zxnzt_value USING ‘S_ZXNZT’."

&---------------------------------------------------------------------
*& Form FRM_SET_PARAMS_ART
&---------------------------------------------------------------------
*& text
&---------------------------------------------------------------------
*& --> p1 text
& <-- p2 text
&---------------------------------------------------------------------
FORM frm_set_params_art .
LOOP AT SCREEN.
CASE screen-group1.
WHEN ‘M4’.
IF p_zsfqgq = ‘01’.
screen-input = 0.
screen-active = 0.
MODIFY SCREEN.
FREE s_zxnzt.
ENDIF.
ENDCASE.
ENDLOOP.
ENDFORM.
&---------------------------------------------------------------------
*& Form FRM_SET_ZSFQGQ
&---------------------------------------------------------------------
*& text
&---------------------------------------------------------------------
*& --> p1 text
*& <-- p2 text
&---------------------------------------------------------------------
FORM frm_set_zsfqgq .
DATA: lt_list TYPE vrm_values, "使用列表的清单内容
ls_list LIKE LINE OF lt_list.

REFRESH lt_list.

ls_list-key = ‘00’.
ls_list-text = ‘是’.
APPEND ls_list TO lt_list.
CLEAR:ls_list.

ls_list-key = ‘01’.
ls_list-text = ‘否’.
APPEND ls_list TO lt_list.
CLEAR:ls_list.

CALL FUNCTION ‘VRM_SET_VALUES’
EXPORTING
id = ‘P_ZSFQGQ’
values = lt_list. "屏幕中的下拉菜单的NAME,下拉菜单选择LISTBOX
*WITH KEY 若选LISTBOX的话带不出KEY值

REFRESH lt_list.

***************************下拉框表赋值
ls_list-key = ‘Y’.
ls_list-text = ‘是’.
APPEND ls_list TO lt_list.
CLEAR:ls_list.

ls_list-key = ‘N’.
ls_list-text = ‘否’.
APPEND ls_list TO lt_list.
CLEAR:ls_list.

CALL FUNCTION ‘VRM_SET_VALUES’
EXPORTING
id = ‘P_CWCP’
values = lt_list. "屏幕中的下拉菜单的NAME,下拉菜单选择LISTBOX
*WITH KEY 若选LISTBOX的话带不出KEY值
ENDFORM.
&---------------------------------------------------------------------
*& Form FRM_SET_ZXNZT_VALUE
&---------------------------------------------------------------------
*& text
&---------------------------------------------------------------------
*& --> P_
&---------------------------------------------------------------------
FORM frm_set_zxnzt_value USING p_field.
TYPES: BEGIN OF lty_xnztlx,
zxnztlx TYPE zexnztlx,
zxnztlxt TYPE zexnztlxt, " add start by N20190522045 20190904 编号
END OF lty_xnztlx.

DATA:
lt_xnztlx TYPE TABLE OF lty_xnztlx.

CLEAR lt_xnztlx.

lt_xnztlx = VALUE #(
( zxnztlx = ‘01’ zxnztlxt = ‘3’ )
( zxnztlx = ‘02’ zxnztlxt = ‘2’ )
( zxnztlx = ‘03’ zxnztlxt = '1 )
).

CALL FUNCTION ‘F4IF_INT_TABLE_VALUE_REQUEST’
EXPORTING
retfield = ‘ZXNZTLX’
dynpprog = sy-repid
dynpnr = sy-dynnr
dynprofield = p_field
value_org = ‘S’
"* display = gv_dispaly
TABLES
value_tab = lt_xnztlx[]
EXCEPTIONS
parameter_error = 1
no_values_found = 2
OTHERS = 3.
IF sy-subrc <> 0.
ELSE.
ENDIF.
ENDFORM.

代码分析
USER-COMMAND ucomm会触发AT SELECTION-SCREEN OUTPUT.后面的FORM,从而执行 PERFORM frm_set_params_art.
ABAP选择屏幕的事件触发,以及F4的制作
通过执行FORM frm_set_params_art .将s_zxnzt弄成可输或不可输

ABAP选择屏幕的事件触发,以及F4的制作
FORM frm_set_zsfqgq .是制作下拉的form
ABAP选择屏幕的事件触发,以及F4的制作
为选择屏幕设置F4注意要是SELECT-OPTIONS的话要写两个一个给LOW一个给HIGH
ABAP选择屏幕的事件触发,以及F4的制作