SAP Report 变量的值传递

      Report有时涉及到key date的问题,即有些infoobject的attribute是时间依赖的(time-dependent),所以报表一般会有一个时间,而同时也要求输Keydate的时间,如果没有定义report的keydate,那么系统会默认用当前的系统时间,这样有些数据出来就是错误的。

report做了定义,用户不明白原因,导致对此项设置的抱怨,于是采用enhancement 。
CMOD-Enhancements   :建立工程,对enhancement的实际应用
SMOD-SAP Enhancement Management :管理enhancement本身
因为有战友已建立了一个处理report变量的工程,所以我是用CMOD进去的,输入工程名,会有两个比较显眼的按键
“Enhancement Assign”和“Components”。第一个按键是定义工程将用到的Enhancement,Component显示的是En的内部组成(不是很清楚)。

我要用到的是
RSR00001:BW: Enhancements for global variables in reporting

点击进入:Components,选择EXIT_SAPLRRS0_001,双击进入Function,
Function内容为“INCLUDE ZXRSRU01”  . 进入include program“ZXRSRU01”

跳过前面几行的参数定义,可以看到 CASE i_vnam. 这个就是对变量进行过滤的段落,翻到 此Case的末尾,新增一个when段落,注意其他人的东西不要去动,否则后果自负。

比如,我在report里面定义report的时间变量为 zperiod,key date的变量为 zkeydate,那么 when 后面的字符就是用keydate的变量名即“zkeydate”,

大体代码如下:

  WHEN 'ZKEYDATE'.
    DATA: g_date_1(10) TYPE c.
    IF i_step = 2.
      LOOP AT i_t_var_range INTO loc_var_range
        WHERE vnam = 'ZPERIOD' .
        CLEAR l_s_range.
        l_s_range-sign = 'I'.
        l_s_range-opt  = 'EQ'.
            CLEAR g_date_1.
        CONCATENATE
                 loc_var_range-low+0(4)
                 loc_var_range-low+5(2)
                 '01'
                 INTO g_date_1.

                  l_s_range-low  = g_date_1.

                  APPEND l_s_range TO e_t_range.
                  EXIT.
      ENDLOOP.
    ENDIF.

应该代码都很容易,即输入的report的时间变量为年周期,我改为年周期日。

这里要注意,key date的参数类型要为Customer Exit,否则没得搞。当然用RSRT去debug还是很容易发现的。

记录一下。

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/554557/viewspace-351777/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/554557/viewspace-351777/

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值