前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >SAP ABAP 下拉框多级联动代码分享

SAP ABAP 下拉框多级联动代码分享

作者头像
matinal
发布2023-10-12 18:31:30
3120
发布2023-10-12 18:31:30
举报
文章被收录于专栏:SAP TechnicalSAP Technical
代码语言:javascript
复制
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.

此方法可实现下拉框多级联动的效果。 

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2023-10-11,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档