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.
SELECT * FROM T179T INTO TABLE GT WHERE SPRAS = 1.
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.