ABAP Dynamic Selection…

可以根据下拉框的选项,动态显示选择屏幕
ABAP <wbr>Dynamic <wbr>Selection <wbr>Screen <wbr>using <wbr>Tabbed <wbr>Selection <wbr>Screen

ABAP <wbr>Dynamic <wbr>Selection <wbr>Screen <wbr>using <wbr>Tabbed <wbr>Selection <wbr>Screen

code:
*&---------------------------------------------------------------------*
*& Report  ZLM_SCREEN_001
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*

REPORT ZLM_SCREEN_001 .

*&---------------------------------------------------------------------*
*& Purpose Dynamic Selection Screen using the Tabbed Selected Screen
*& Author  Naimesh Patel
*& URL     -
*&---------------------------------------------------------------------*
*
CLASS lcl_main  DEFINITION .
    PUBLIC  SECTION .
        TYPES :
            BEGIN  OF ty_vrm_values ,
                KEY   TYPE char40 ,
                text  TYPE char80 ,
            END    OF ty_vrm_values .
        TYPES : tt_vrm_values  TYPE  STANDARD  TABLE  OF ty_vrm_values
                          WITH  DEFAULT  KEY .
        TYPES :
            BEGIN  OF ty_config ,
                KEY   TYPE char10 ,
                desc  TYPE char50 ,
                dynnr  TYPE sy -dynnr ,
            END    OF ty_config .
        DATA : t_config  TYPE  STANDARD  TABLE  OF ty_config .
        METHODS :
            get_vrm_values
                RETURNING  VALUE (rt_values )  TYPE tt_vrm_values ,
            get_dynnr
                IMPORTING iv_objtype  TYPE char10
                RETURNING  VALUE (rv_dynnr )  TYPE sy -dynnr .
ENDCLASS .                     "lcl_main DEFINITION
*
DATA : t_objtypes  TYPE lcl_main =>tt_vrm_values .
DATA : o_main  TYPE  REF  TO lcl_main .

*
DATA : v_vbeln  TYPE vbak -vbeln ,
            v_erdat  TYPE vbak -erdat ,
            v_vkorg  TYPE vbak -vkorg ,
            v_vtweg  TYPE vbak -vtweg ,
            v_spart  TYPE vbak -spart .

Object type Selector
PARAMETER : p_objtyp  TYPE char10  AS LISTBOX
                          VISIBLE  LENGTH  30  USER-COMMAND v_obj  .
*
TABBED Selection screen for displaying the screen
SELECTION-SCREEN :  BEGIN  OF TABBED  BLOCK mytab  FOR  LINES ,
                                    TAB  ( 20 ) seltab  USER-COMMAND push1 ,
                                    END  OF  BLOCK mytab .
*
Default screen
SELECTION-SCREEN  BEGIN  OF  SCREEN  100  AS SUBSCREEN .
SELECTION-SCREEN  END  OF  SCREEN  100 .
*
for SO
SELECTION-SCREEN  BEGIN  OF  SCREEN  200  AS SUBSCREEN .
SELECT-OPTIONS : so_vbeln  FOR v_vbeln ,
                                so_erdat  FOR v_erdat ,
                                so_vkorg  FOR v_vkorg ,
                                so_vtweg  FOR v_vtweg ,
                                so_spart  FOR v_spart .
SELECTION-SCREEN  END  OF  SCREEN  200 .
*
for Billing
SELECTION-SCREEN  BEGIN  OF  SCREEN  300  AS SUBSCREEN .
SELECT-OPTIONS : bi_vbeln  FOR v_vbeln ,
                                bi_erdat  FOR v_erdat ,
                                bi_vkorg  FOR v_vkorg ,
                                bi_vtweg  FOR v_vtweg ,
                                bi_spart  FOR v_spart .
SELECTION-SCREEN  END  OF  SCREEN  300 .
*
INITIALIZATION .
    CREATE OBJECT  o_main .
    t_objtypes  o_main ->get_vrm_values (  ) .
    CALL  FUNCTION  'VRM_SET_VALUES'
        EXPORTING
            ID      'P_OBJTYP'
            VALUES  t_objtypes .
*
    mytab -dynnr  o_main ->get_dynnr ( p_objtyp  ) .
    mytab -prog  sy -repid .
    mytab -activetab  'PUSH1' .
*
    seltab  'Selection Criteria' .
*
dynamic text for objec type
    %_p_objtyp_%_app_% - text  'Object Type' .
*
*
AT  SELECTION-SCREEN  OUTPUT .
Set the selection screen based on the object type
    mytab -dynnr  o_main ->get_dynnr ( p_objtyp  ) .
*
*
START-OF-SELECTION .
*
*
CLASS lcl_main  IMPLEMENTATION .
    METHOD get_vrm_values .
        DATA : ls_config  LIKE  LINE  OF me ->t_config .
---- Config entries, in real time it comes from table
*
        ls_config - KEY    ".             Default
        ls_config -desc    ".
        ls_config -dynnr  '0100' .
        APPEND ls_config  TO me ->t_config .
*
        ls_config - KEY    'ORDER' .
        ls_config -desc    'Sales Order' .
        ls_config -dynnr  '0200' .
        APPEND ls_config  TO me ->t_config .
*
        ls_config - KEY    'BILLING' .
        ls_config -desc    'Billing Document' .
        ls_config -dynnr  '0300' .
        APPEND ls_config  TO me ->t_config .
*
  vrm set values
        DATA : ls_vrm  LIKE  LINE  OF rt_values .
        LOOP  AT me ->t_config  INTO ls_config .
            ls_vrm - KEY ls_config - KEY .
            ls_vrm - text ls_config -desc .
            APPEND ls_vrm  TO rt_values .
        ENDLOOP .

    ENDMETHOD .                     "get_vrm_values
    METHOD get_dynnr .
  get the screen number
        DATA : ls_config  LIKE  LINE  OF me ->t_config .
        READ  TABLE me ->t_config  INTO ls_config
            WITH  KEY  KEY iv_objtype .
        IF sy -subrc  EQ  0 .
            rv_dynnr  ls_config -dynnr .
        ELSE .
    fallback if default is not maintained in config
            rv_dynnr  '0100' .
        ENDIF .
    ENDMETHOD .                     "get_dynnr

ENDCLASS .                     "lcl_main IMPLEMENTATION
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值