ABAP屏幕下拉框连动选择

参考程序:ZSCRN001

TYPE-POOLS:vrm.

DATA: name TYPE vrm_id.

DATA:num TYPE i. "内表判断字段长度的变量

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 title1.

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 SKIP 1.

SELECTION-SCREEN BEGIN OF LINE.

SELECTION-SCREEN PUSHBUTTON 1(11) btntxt USER-COMMAND btn1.

SELECTION-SCREEN COMMENT 12(20) text-006.

PARAMETERS:z_sn2 TYPE matnr.

SELECTION-SCREEN END OF LINE.

SELECTION-SCREEN END OF BLOCK t1.

INITIALIZATION.

  btntxt = '从开始到现在'.

AT SELECTION-SCREEN OUTPUT.

  name = 'PL1'.

   SELECT *  FROM t179t INTO TABLE gt  WHERE spras = 1   .

   LOOP AT gt.

   num = STRLEN( gt-prodh ).

   IF num = 5.

     wa1-text  = gt-vtext.

     wa1-key   = gt-prodh.

     APPEND: wa1.

   ENDIF.

   CLEAR: gt,num,wa1.

   ENDLOOP.

 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.

猜你喜欢

转载自www.cnblogs.com/jimi520/p/12125573.html
今日推荐