本文共 2666 字,大约阅读时间需要 8 分钟。
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."111DATA:WA2 TYPE TABLE OF WA WITH HEADER LINE. "111222DATA:WA3 TYPE TABLE OF WA WITH HEADER LINE. "111222333DATA: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.