二维码

SAP选择屏幕中实现三级联动下拉框效果

Twilight发表于 2014-02-07 18:56zhongguomao 最后回复于 2017-11-17 15:23 [复制链接] 5473 1

主程序代码:
  1. TYPE-POOLS:VRM.
  2. DATA: NAME TYPE VRM_ID.
  3. DATA:NUM TYPE I. "根据PRODH字段长度判断 某行属于哪一级
  4. DATA:LOADED TYPE C LENGTH 1."控制不重复查询数据库和不反复append数据 to WA1[]

  5. TYPES: BEGIN OF WA,
  6.    KEY(40),
  7.    TEXT(80) TYPE C,
  8. END OF WA.
  9. DATA:GT LIKE T179T OCCURS 0 WITH HEADER LINE.
  10. DATA:WA1 TYPE TABLE OF WA WITH HEADER LINE."111
  11. DATA:WA2 TYPE TABLE OF WA WITH HEADER LINE.                 "111222
  12. DATA:WA3 TYPE TABLE OF WA WITH HEADER LINE.                 "111222333

  13. DATA:ITAB LIKE T179T OCCURS 0 WITH HEADER LINE.
  14. DATA: PS_T(15) TYPE C.
  15. SELECTION-SCREEN BEGIN OF BLOCK T1 WITH FRAME TITLE TEXT-001.

  16. SELECTION-SCREEN BEGIN OF LINE.
  17. SELECTION-SCREEN COMMENT 1(31) TEXT-003.
  18. PARAMETERS: PL1 LIKE PS_T AS LISTBOX VISIBLE LENGTH 15 USER-COMMAND P1.
  19. "一级类
  20. SELECTION-SCREEN END OF LINE.
  21. SELECTION-SCREEN SKIP 1.

  22. SELECTION-SCREEN BEGIN OF LINE.
  23. SELECTION-SCREEN COMMENT 1(31) TEXT-004.
  24. PARAMETERS: PL2 LIKE PS_T AS LISTBOX VISIBLE LENGTH 15 USER-COMMAND P2.
  25. "二级类
  26. SELECTION-SCREEN END OF LINE.
  27. SELECTION-SCREEN SKIP 1.

  28. SELECTION-SCREEN BEGIN OF LINE.
  29. SELECTION-SCREEN COMMENT 1(31) TEXT-005.
  30. PARAMETERS: PL3 LIKE PS_T AS LISTBOX VISIBLE LENGTH 15.
  31. "三级类
  32. SELECTION-SCREEN END OF LINE.

  33. SELECTION-SCREEN END OF BLOCK T1.

  34. INITIALIZATION.


  35. AT SELECTION-SCREEN OUTPUT.
  36.   NAME = 'PL1'.
  37.   IF LOADED  IS INITIAL.
  38.   SELECT *  FROM T179T INTO TABLE GT  WHERE SPRAS = 1.
  39.   LOADED = 'X'.
  40.   LOOP AT GT.
  41.     NUM = STRLEN( GT-PRODH ).
  42.     IF NUM = 5.
  43.       WA1-TEXT  = GT-VTEXT."Description
  44.       WA1-KEY   = GT-PRODH."Product hierarchy   key field
  45.       APPEND: WA1.
  46.     ENDIF.
  47.     CLEAR: GT,NUM,WA1."CLEAR 清空WA1工作区,不清空WA1[]内表
  48.   ENDLOOP.
  49.   ENDIF.



  50.   CALL FUNCTION 'VRM_SET_VALUES'
  51.     EXPORTING
  52.       ID     = NAME
  53.       VALUES = WA1[].


  54. AT SELECTION-SCREEN.

  55.   CASE SY-UCOMM.
  56.     WHEN 'P1'.
  57.       CLEAR: PL2,PL3.
  58.       "清空2、3级下拉空默认值,当用户在选择屏幕上重新选择时需要清除
  59.       CLEAR:WA2,WA2[].
  60.       "清空2级下拉内表对应的值,当用户在选择屏幕上重新选择时需要清除
  61.       CLEAR NUM.
  62.       LOOP AT GT .
  63.         NUM = STRLEN( GT-PRODH ).
  64.         IF NUM = 10 AND GT-PRODH+0(5) = PL1.

  65.           WA2-TEXT  = GT-VTEXT.
  66.           WA2-KEY   = GT-PRODH.
  67.           APPEND: WA2.

  68.         ENDIF.
  69.         CLEAR:GT,NUM,WA2.
  70.       ENDLOOP.

  71.       CALL FUNCTION 'VRM_SET_VALUES'
  72.         EXPORTING
  73.           ID     = 'PL2'
  74.           VALUES = WA2[].
  75.       CLEAR PL2.
  76.     WHEN 'P2'.
  77.       CLEAR PL3.
  78.       "清空3级下拉空默认值,当用户在选择屏幕上重新选择时需要清除
  79.       CLEAR:WA3,WA3[].
  80.       "清空3级下拉内表对应的值,当用户在选择屏幕上重新选择时需要清除
  81.       CLEAR NUM.
  82.       LOOP AT GT .
  83.         NUM = STRLEN( GT-PRODH ).
  84.         IF NUM = 18 AND GT-PRODH+0(10) = PL2.

  85.           WA3-TEXT  = GT-VTEXT.
  86.           WA3-KEY   = GT-PRODH.
  87.           APPEND: WA3.

  88.         ENDIF.
  89.         CLEAR:GT,NUM,WA3.
  90.       ENDLOOP.

  91.       CALL FUNCTION 'VRM_SET_VALUES'
  92.         EXPORTING
  93.           ID     = 'PL3'
  94.           VALUES = WA3[].
  95.       CLEAR PL3.
  96.   ENDCASE.
复制代码

执行效果:
选择父
联动下拉框父.jpg
选择子
联动下拉框子.jpg
选择孙
联动下拉框孙.jpg
回复

使用道具 举报

zhongguomao
学习了。
回复

使用道具 举报

快速回帖

本版积分规则
您需要登录后才可以回帖 登录 | 注册有礼

快速回复 返回顶部 返回列表