REPORT TEST.
TYPE-POOLS:vrm.
DATA: name TYPE vrm_id.
DATA:num TYPE i. "根据PRODH字段长度判断 某行属于哪一级
DATA:loaded TYPE c LENGTH 1."控制不重复查询数据库和不反复append数据 to WA1[]
TYPES: BEGIN OF wa,
key(40),
text(80) TYPE c,
END OF wa.
DATA:gt LIKE t179t OCCURS 0 WITH HEADER LINE.
DATA:wa1 TYPE TABLE OF wa WITH HEADER LINE."111
DATA:wa2 TYPE TABLE OF wa WITH HEADER LINE. "111222
DATA:wa3 TYPE TABLE OF wa WITH HEADER LINE. "111222333
DATA:itab LIKE t179t OCCURS 0 WITH HEADER LINE.
DATA: ps_t(15) TYPE c.
SELECTION-SCREEN BEGIN OF BLOCK t1 WITH FRAME TITLE TEXT-001.
SELECTION-SCREEN BEGIN OF LINE.
SELECTION-SCREEN COMMENT 1(31) TEXT-003.
PARAMETERS: pl1 LIKE ps_t AS LISTBOX VISIBLE LENGTH 15 USER-COMMAND p1.
"一级类
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN SKIP 1.
SELECTION-SCREEN BEGIN OF LINE.
SELECTION-SCREEN COMMENT 1(31) TEXT-004.
PARAMETERS: pl2 LIKE ps_t AS LISTBOX VISIBLE LENGTH 15 USER-COMMAND p2.
"二级类
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN SKIP 1.
SELECTION-SCREEN BEGIN OF LINE.
SELECTION-SCREEN COMMENT 1(31) TEXT-005.
PARAMETERS: pl3 LIKE ps_t AS LISTBOX VISIBLE LENGTH 15.
"三级类
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN END OF BLOCK t1.
INITIALIZATION.
AT SELECTION-SCREEN OUTPUT.
name = 'PL1'.
IF loaded IS INITIAL.
gt-prodh = '00001'.
gt-vtext = '服务器'.
append gt.
clear gt.
gt-prodh = '0000100001'.
gt-vtext = '服务器00001'.
append gt.
clear gt.
gt-prodh = '000010000100000001'.
gt-vtext = '服务器0000100000001'.
append gt.
clear gt.
gt-prodh = '000010000100000002'.
gt-vtext = '服务器0000100000002'.
append gt.
clear gt.
gt-prodh = '00002'.
gt-vtext = 'PC'.
append gt.
clear gt.
gt-prodh = '0000200001'.
gt-vtext = 'PC0000200001'.
append gt.
clear gt.
gt-prodh = '000020000100000001'.
gt-vtext = 'PC000020000100000001'.
append gt.
clear gt.
gt-prodh = '000020000100000002'.
gt-vtext = 'PC000020000100000002'.
append gt.
clear gt.
loaded = 'X'.
LOOP AT gt.
num = strlen( gt-prodh ).
IF num = 5.
wa1-text = gt-vtext."Description
wa1-key = gt-prodh."Product hierarchy key field
APPEND: wa1.
ENDIF.
CLEAR: gt,num,wa1."CLEAR 清空WA1工作区,不清空WA1[]内表
ENDLOOP.
ENDIF.
CALL FUNCTION 'VRM_SET_VALUES'
EXPORTING
id = name
values = wa1[].
AT SELECTION-SCREEN.
CASE sy-ucomm.
WHEN 'P1'.
CLEAR: pl2,pl3.
"清空2、3级下拉空默认值,当用户在选择屏幕上重新选择时需要清除
CLEAR:wa2,wa2[].
"清空2级下拉内表对应的值,当用户在选择屏幕上重新选择时需要清除
CLEAR num.
LOOP AT gt .
num = strlen( gt-prodh ).
IF num = 10 AND gt-prodh+0(5) = pl1.
wa2-text = gt-vtext.
wa2-key = gt-prodh.
APPEND: wa2.
ENDIF.
CLEAR:gt,num,wa2.
ENDLOOP.
CALL FUNCTION 'VRM_SET_VALUES'
EXPORTING
id = 'PL2'
values = wa2[].
CLEAR pl2.
WHEN 'P2'.
CLEAR pl3.
"清空3级下拉空默认值,当用户在选择屏幕上重新选择时需要清除
CLEAR:wa3,wa3[].
"清空3级下拉内表对应的值,当用户在选择屏幕上重新选择时需要清除
CLEAR num.
LOOP AT gt .
num = strlen( gt-prodh ).
IF num = 18 AND gt-prodh+0(10) = pl2.
wa3-text = gt-vtext.
wa3-key = gt-prodh.
APPEND: wa3.
ENDIF.
CLEAR:gt,num,wa3.
ENDLOOP.
CALL FUNCTION 'VRM_SET_VALUES'
EXPORTING
id = 'PL3'
values = wa3[].
CLEAR pl3.
ENDCASE.
TYPE-POOLS:vrm.
DATA: name TYPE vrm_id.
DATA:num TYPE i. "根据PRODH字段长度判断 某行属于哪一级
DATA:loaded TYPE c LENGTH 1."控制不重复查询数据库和不反复append数据 to WA1[]
TYPES: BEGIN OF wa,
key(40),
text(80) TYPE c,
END OF wa.
DATA:gt LIKE t179t OCCURS 0 WITH HEADER LINE.
DATA:wa1 TYPE TABLE OF wa WITH HEADER LINE."111
DATA:wa2 TYPE TABLE OF wa WITH HEADER LINE. "111222
DATA:wa3 TYPE TABLE OF wa WITH HEADER LINE. "111222333
DATA:itab LIKE t179t OCCURS 0 WITH HEADER LINE.
DATA: ps_t(15) TYPE c.
SELECTION-SCREEN BEGIN OF BLOCK t1 WITH FRAME TITLE TEXT-001.
SELECTION-SCREEN BEGIN OF LINE.
SELECTION-SCREEN COMMENT 1(31) TEXT-003.
PARAMETERS: pl1 LIKE ps_t AS LISTBOX VISIBLE LENGTH 15 USER-COMMAND p1.
"一级类
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN SKIP 1.
SELECTION-SCREEN BEGIN OF LINE.
SELECTION-SCREEN COMMENT 1(31) TEXT-004.
PARAMETERS: pl2 LIKE ps_t AS LISTBOX VISIBLE LENGTH 15 USER-COMMAND p2.
"二级类
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN SKIP 1.
SELECTION-SCREEN BEGIN OF LINE.
SELECTION-SCREEN COMMENT 1(31) TEXT-005.
PARAMETERS: pl3 LIKE ps_t AS LISTBOX VISIBLE LENGTH 15.
"三级类
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN END OF BLOCK t1.
INITIALIZATION.
AT SELECTION-SCREEN OUTPUT.
name = 'PL1'.
IF loaded IS INITIAL.
gt-prodh = '00001'.
gt-vtext = '服务器'.
append gt.
clear gt.
gt-prodh = '0000100001'.
gt-vtext = '服务器00001'.
append gt.
clear gt.
gt-prodh = '000010000100000001'.
gt-vtext = '服务器0000100000001'.
append gt.
clear gt.
gt-prodh = '000010000100000002'.
gt-vtext = '服务器0000100000002'.
append gt.
clear gt.
gt-prodh = '00002'.
gt-vtext = 'PC'.
append gt.
clear gt.
gt-prodh = '0000200001'.
gt-vtext = 'PC0000200001'.
append gt.
clear gt.
gt-prodh = '000020000100000001'.
gt-vtext = 'PC000020000100000001'.
append gt.
clear gt.
gt-prodh = '000020000100000002'.
gt-vtext = 'PC000020000100000002'.
append gt.
clear gt.
loaded = 'X'.
LOOP AT gt.
num = strlen( gt-prodh ).
IF num = 5.
wa1-text = gt-vtext."Description
wa1-key = gt-prodh."Product hierarchy key field
APPEND: wa1.
ENDIF.
CLEAR: gt,num,wa1."CLEAR 清空WA1工作区,不清空WA1[]内表
ENDLOOP.
ENDIF.
CALL FUNCTION 'VRM_SET_VALUES'
EXPORTING
id = name
values = wa1[].
AT SELECTION-SCREEN.
CASE sy-ucomm.
WHEN 'P1'.
CLEAR: pl2,pl3.
"清空2、3级下拉空默认值,当用户在选择屏幕上重新选择时需要清除
CLEAR:wa2,wa2[].
"清空2级下拉内表对应的值,当用户在选择屏幕上重新选择时需要清除
CLEAR num.
LOOP AT gt .
num = strlen( gt-prodh ).
IF num = 10 AND gt-prodh+0(5) = pl1.
wa2-text = gt-vtext.
wa2-key = gt-prodh.
APPEND: wa2.
ENDIF.
CLEAR:gt,num,wa2.
ENDLOOP.
CALL FUNCTION 'VRM_SET_VALUES'
EXPORTING
id = 'PL2'
values = wa2[].
CLEAR pl2.
WHEN 'P2'.
CLEAR pl3.
"清空3级下拉空默认值,当用户在选择屏幕上重新选择时需要清除
CLEAR:wa3,wa3[].
"清空3级下拉内表对应的值,当用户在选择屏幕上重新选择时需要清除
CLEAR num.
LOOP AT gt .
num = strlen( gt-prodh ).
IF num = 18 AND gt-prodh+0(10) = pl2.
wa3-text = gt-vtext.
wa3-key = gt-prodh.
APPEND: wa3.
ENDIF.
CLEAR:gt,num,wa3.
ENDLOOP.
CALL FUNCTION 'VRM_SET_VALUES'
EXPORTING
id = 'PL3'
values = wa3[].
CLEAR pl3.
ENDCASE.