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

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.



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值