LT_VARIANT_LOAD


LT_VARIANT_LOAD

 

 http://scnblogs.techweb.com.cn/hellohainiao/archives/17.html

 
1 FM说明
 
       AVL显示数据,标准状态栏可以基本满足我的需要。但是,有些个别需求难以满足,需要自己定制ALV状态栏,将标准ALV的status复制到自己的status,然后通过设置屏蔽掉原有的功能,再增加新的按钮,按照自己的需求设计程序。比如现在,ALV标准导出功能使用有限制,当导出数据列数太多会自动折行,这时需要重新定义导出功能。如图,我将原来的导出功能屏蔽掉,客户定制新的导出功能。
 

 

       但是,自己定义时,如果不进行特殊处理,就没有办法导出修改布局之后的数据。这时就要通过FM:LT_VARIANT_LOAD,获得修改之后的布局。这样有一个弊端,就是必须先保存布局,否则无法按照这个格局导出数据。
 
输入参数:
 
importing:
 
*           I_TOOL                            = ‘LT’
              i_tabname                      = ‘1′     ”必输项,但是一般输入1即可
              i_tabname_slave         = space
 *          I_DIALOG                       = ‘X’    ”若为X,则会弹出交互对话框,让客户选择布局,否则,需要在程序中指定
              i_user_specific              = ‘A’   ”若为A,则为客户指定;若为U,则为标准
              i_default                           = ‘ ‘
              i_via_grid                       = ‘X’
              i_no_reptext_optimize = ‘X’
 
changing
 
            cs_variant          = ls_variant ”指定ALV布局变式
             cs_layout           = ls_layout_kkblo “格式
             ct_default_fieldcat = lt_fieldcat_def_kkblo  “标题列
 
输出参数:
 
          et_fieldcat         = lt_fieldcat_kkblo 
 
2 DEMO
 
  l_itab_rst = g_itab_result.
 
* 1 获取当前布局
   LOOP AT fieldcat_alv.
     MOVE-CORRESPONDING  fieldcat_alv TO  lw_fieldcat_def_kkblo.
     APPEND lw_fieldcat_def_kkblo TO lt_fieldcat_def_kkblo.
   ENDLOOP.
   ls_variant-report = sy-cprog.
   CALL FUNCTION ‘LT_VARIANT_LOAD’
       EXPORTING
 *           I_TOOL                = ‘LT’
            i_tabname             = ‘1′
            i_tabname_slave       = space
 *           I_DIALOG              = ‘X’
            i_user_specific       = ‘A’
            i_default             = ‘ ‘
            i_via_grid            = ‘X’
            i_no_reptext_optimize = ‘X’
       IMPORTING
            e_exit              = l_exit
            et_fieldcat         = lt_fieldcat_kkblo
            et_sort             = lt_sort_kkblo
            et_filter           = lt_filter_kkblo
       CHANGING
            cs_variant          = ls_variant
            cs_layout           = ls_layout_kkblo
            ct_default_fieldcat = lt_fieldcat_def_kkblo
       EXCEPTIONS
            wrong_input         = 1
            fc_not_complete     = 2
            not_found           = 3
            OTHERS              = 4.
 
  IF l_exit IS NOT INITIAL.
     EXIT.
   ENDIF.
 
执行结果:
 

 


如果SO号和SO行号,两列不输出,现在保存布局为/SAVE_TEST1.
 

 


当选择/SAVE_TEST1时,输出参数lt_fieldcat_kkblo 中so号和SO行号两行数据的no_out属性会被打上X。
 

 


然后可以在自己实现的导出功能中,根据此特性进行特殊处理,比如导出时,将此数据过滤掉,不再进行导出。
 
 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值