ITPub博客

首页 > Linux操作系统 > Linux操作系统 > SAP Report 变量的值传递

SAP Report 变量的值传递

原创 Linux操作系统 作者:leniz 时间:2008-06-18 19:51:38 0 删除 编辑

      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博客 ” ,链接:https://blog.itpub.net/554557/viewspace-351777/ ,如需转载,请注明出处,否则将追究法律责任。

上一篇: 流程图
请登录后发表评论 登录
全部评论

注册时间:2008-05-31

  • 博文量
    448
  • 访问量
    1193698