`
tianjun309
  • 浏览: 368047 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

(zt) BW Query CMOD变量增强

    博客分类:
  • SAP
阅读更多

(给日期变量设置黙认值为系统当天)

http://www.erpjob88.com/bbs/show.asp?topicid=26335

 

由于要求在打开报表的时候,弹出一个对话框来输入日期(用于计算)。

在“过滤限制”中添加日期特征,右击选择 ,然后在“显示”输入框处选择“变量”,点击“新增”变量按钮。

在“处理由”处选择“用户出口”。

替换路径功能区为默认.

明细处如果你做的变量是不可输入的话就不对任何复选框做选择,如果是可输入性的,则选中变量已准备输入。其他的功能区就保持默认状态即可,然后点击OK按钮。

在BW系统中运行CMOD进行做增强。

使用"RSR00001" BI: Enhancements for Global Variables in Reporting.

代码,双击:ZXRSRU01
进行编写代码:

data  E_T_RANGE,
      ls_var_range 
LIKE  i_t_var_range,
      loc_ls_range 
LIKE  e_t_range,
      gv_date 
LIKE  SY-DATUM.
case
  
WHEN .
"I_STEP  值说明:
"I_STEP = 1 ,请直接发生前变量条目。可用于预先填充选择变量。
"I_STEP = 2 ,呼叫发生后直接变量条目。这一步的时候,才开始了同一个变量是无法输入准备,并且不能在 L_STEP = 1 填补。
"I_STEP = 3 ,在此调用,您可以检查变量的值。触发一个异常(提高)导致变量屏幕再次出现。随
             
" 后, L_step = 2 ,也再次调用。
"I_STEP = 0 ,是不是从屏幕变量呼吁提高。调用可以来自授权检查或从监视器。这
             
" 是你要推出填充授权对象的模型设计。因为这是为代码如下:

      
if .
*      BREAK-POINT.
*      READ TABLE i_t_var_range INTO ls_var_range WITH KEY  vnam = 'ZCUTDATE_NEW'. "'ZCUTDATE_NEW' .
*      IF SY-SUBRC = 0.
        ls_range-opt       = 
'EQ' .
        ls_range-
sign  .
        gv_date = SY-DATUM + 
4 .
        ls_range-low =  gv_date.
        
INSERT  e_t_range.
*      ENDIF.
      
endif .

  
ENDCASE .
 ls_range  INTO  TABLE
      =  'I'
 i_step =  1
 'VAR_CUTDATE'
 I_VNAM.   "Name of Variable to be Replaced
 LINE  OF
 LINE  OF
: ls_range  like  LINE  OF
使用Analyzer运行报表结果:
Note
If I_STEP = 1,call takes place directly before variable entry. Can be used to pre populate selection variables.
If I_STEP = 2,Call takes place directly after variable entry. This step is only started up when the same variable is not input ready and could not be filled at L_STEP = 1.
If I_STEP = 3,In this call, you can check the values of the variables. Triggering an exception (RAISE)causes the variable screen to appear once more. Afterwards, L_step = 2 is also called again.
If I_STEP = 0,The enhancement is not called from the variable screen. The call can come from the authorization check or from the Monitor. This is where you want to put the mod for populating the authorization object. Code for this is as follows:
 
 
DATA:LS_RANGE LIKE LINE OF E_T_RANGE,
     LS_VAR_RANGE LIKE LINE OF I_T_VAR_RANGE,
     YEAR(4) TYPE N,
     QUART(1) TYPE N,
     MONTH(2) TYPE N,
     LASTDAY TYPE D,
     DAYIN TYPE D.           " 定义的字段
CASE I_VNAM.       " 这个I_CNAM可以自动获取你所创建的变量的名称
 WHEN 'ZVBCRLNY'." 日历年月 默认本月 ) 这个定义的是一个带有默认值为当前
" 年度期间的一个可输入的变量
IF I_STEP = 1.
      CLEAR LS_RANGE.
      LS_RANGE-LOW = SY-DATUM(6).
      LS_RANGE-SIGN = 'I'.
      LS_RANGE-OPT = 'EQ'.
      CONDENSE LS_RANGE-LOW NO-GAPS.
      APPEND LS_RANGE TO E_T_RANGE.
    ENDIF.
 WHEN 'ZVBCQT02'." 季度 间隔 )- 本年累计 ( 非输入 )
    IF I_STEP = 2.
      LOOP AT I_T_VAR_RANGE INTO LS_VAR_RANGE
      WHERE VNAM = '0CQUART'.
        CLEAR YEAR.
        YEAR = LS_VAR_RANGE-LOW(4).
        CONCATENATE YEAR '1' INTO LS_RANGE-LOW.
        LS_RANGE-HIGH = LS_VAR_RANGE-LOW.
        LS_RANGE-SIGN = 'I'.
        LS_RANGE-OPT = 'BT'.
        CONDENSE LS_RANGE-LOW NO-GAPS.
        CONDENSE LS_RANGE-HIGH NO-GAPS.
        APPEND LS_RANGE TO E_T_RANGE.
      ENDLOOP.
    ENDIF.
 WHEN ' ZVHJQJ1 '." 会计年度 / 期间 默认本期
*BREAK-POINT.
    IF I_STEP = 1.
      CLEAR LS_RANGE.
      LS_RANGE-LOW(4) = SY-DATUM(4).
      LS_RANGE-LOW+5(1) = '0'.
      LS_RANGE-LOW+6(2) = SY-DATUM+4(2).
      LS_RANGE-SIGN = 'I'.
      LS_RANGE-OPT = 'EQ'.
      CONDENSE LS_RANGE-LOW NO-GAPS.
      APPEND LS_RANGE TO E_T_RANGE.

ENDIF.

这里的黄色与红色标注的地方的字段应该与你命名的变量的技术名称完全相同,否则程序是不可能执行的。此外,我不建议大家用过长的字段来命名变量的名称,否 则在程序在运行的时候CASE I_VNAM.中的I_VNAM这个变量会自动截取部分字段,那么程序是无法按照我们的意愿来执行,导致一些不必要的问题出现。如果必须用很长的技术名 称,我建议你看看这个I_VNAM字段的长度,尽量小于或者等于这个长度,否则必然出错。

分享到:
评论

相关推荐

    SAP增强CMOD和SMOD用法和区别

    CMOD增强通常涉及到创建Z开头的函数模块,该模块会调用标准模块,并在其前后添加自定义逻辑。CMOD的优点在于其结构清晰,维护方便,因为每个增强部分都有明确的开始和结束标志。然而,CMOD的缺点是可能会对系统性能...

    smod与cmod区别

    在探讨“smod与cmod区别”这一主题之前,我们需要明确这两个术语的含义以及它们在IT领域的具体应用。从提供的信息来看,“smod”和“cmod”这两个词汇并未给出明确的定义或背景信息,因此这里我们将基于可能的上下文...

    Using User Exit for Variables in BEx Reporting

    本文档主要介绍了在SAP BW环境中如何利用用户出口(User Exit)来处理BEx报表中的复杂变量逻辑。这一过程涉及大量的ABAP编程工作,并且特别关注了如何使用特定的用户出口`EXIT_SAPLRRS0_001`来处理查询设计器中创建的...

    ABAP SMOD/CMOD

    ### ABAP SMOD/CMOD增强的特殊查找方式 在ABAP开发中,SMOD(模块)和CMOD(客户端可变模块)是常见的增强工具,它们为开发人员提供了灵活的方式来扩展标准SAP应用程序的功能。SMOD允许开发人员在不修改原始程序的...

    CMOD参考手册.pdf

    根据提供的文件信息,以下是关于CMOD参考手册的知识点: 1. CMOD板的概述:CMOD板是一类结合了Xilinx CPLD(复杂可编程逻辑器件)、JTAG编程端口以及电源电路的电路板。这些板子采用600密尔(mil)和40脚DIP(双列...

    cmod5n.zip_CMOD5_cmod5n_out_wind speed

    《基于cmod5n模型计算风速的Python实践》 在现代气象学和风能领域,精确预测风速是至关重要的。"cmod5n.zip_CMOD5_cmod5n_out_wind speed" 提供了一个使用Python实现的Coh-Metrix Model 5 (简称CMOD5) 风速计算案例...

    CMOD5 散射计的海面反演

    CMOD5散射计的海面反演是一个重要的遥感技术应用,主要涉及合成孔径雷达(SAR)数据处理和海洋表面特性分析。在这个领域,SAR散射计是关键工具,它能够通过接收海面反射的微波信号来探测海洋的各种特性,如风速、浪...

    [SAP ABAP开发技术总结]ABAP Enhancement(增强)详解

    示例:VA01增强(CMOD创建项目) 利用系统函数寻找增强 二代增强几个重要的表 第三代:基于类的增强(BADI) BADI命名约束 创建自定义BADI(SE18) BADI两种创建(新式、经典)与两种调用方式 Filter-Depend.过滤器 ...

    采购申请:屏幕增强 、 BAPI增强、创建采购申 请代码

    CMOD (Component Maintenance) 是 SAP 提供的一种增强机制,通过它可以创建屏幕增强、字段增强等。在这个例子中,MEREQ001 是创建的增强组件,用于扩展采购申请的屏幕。 2. **EBAN 表的 CI_EBANDB 结构**: EBAN ...

    手把手教你在Xilinx FPGA开发平台构建MicroBlaze软核——Digilent CMOD A7 FPGA评测白.pdf

    FPGA开发平台构建MicroBlaze软核——Digilent CMOD A7 FPGA评测白 FPGA(Field-Programmable Gate Array),即现场可编程门阵列,是一种可编程逻辑器件。FPGA的门槛(学习成本和价格成本)随着工艺的进步和EDA设计...

    ABAP如何快速寻找增强

    通过查看变量`l_funcname`的值,我们可以识别出正在执行的增强函数,例如`EXIT_SAPLF048_001`。 增强函数的相关信息存储在表TFDIR中。当MANDT字段值为'C'时,表明增强是激活状态,并且系统会在运行时查找相应的增强...

    [SAP ABAP开发技术总结]ABAP Enhancement:第一部分

    示例:VA01增强(CMOD创建项目) 利用系统函数寻找增强 二代增强几个重要的表 第三代:基于类的增强(BADI) BADI命名约束 创建自定义BADI(SE18) BADI两种创建(新式、经典)与两种调用方式 Filter-Depend.过滤器 ...

    [SAP ABAP开发技术总结]ABAP Enhancement:第二部分

    示例:VA01增强(CMOD创建项目) 利用系统函数寻找增强 二代增强几个重要的表 第三代:基于类的增强(BADI) BADI命名约束 创建自定义BADI(SE18) BADI两种创建(新式、经典)与两种调用方式 Filter-Depend.过滤器 ...

    SAP 开发 SD 相关的增强BADI.pdf

    SMOD包含具体的增强点,而CMOD则包含一组相关的SMOD,这样可以使增强的管理更为系统化和结构化。用户退出(User exits)的命名规则通常遵循EXIT_<programname><3digit suffix>的格式,这种命名规则帮助开发者识别...

    IE01屏幕增强

    接下来,开发人员会使用CMOD(Classic Enhancement Module)进行增强开发。CMOD是SAP提供的一个工具,用于在标准程序中插入用户定义的代码段。在这个例子中,开发人员会创建一个新的子屏幕,并定义它为编辑或显示...

    SAP找增强方法

    CMOD是最早的增强方式,它允许用户直接修改标准 SAP 代码来添加新功能或改变现有行为。这种方法的缺点在于,一旦SAP发布了新的升级或修补程序,这些修改可能会与新代码冲突,导致维护问题。因此,现在CMOD已不推荐...

    SAP增强查找

    在这种增强方式中,SAP提供了一个叫CUSTOMER-FUNCTION的函数模块,用户可以通过SMOD和CMOD事务码来实现和维护增强。这类增强无需对象键,直接双击相关包含文件并编写代码即可。增强后的函数模块仅能使用接口传递的...

    SAP 屏幕增强

    在SAP中,CMOD是增强管理工具,用于创建增强包和增强,这些增强可以添加新的功能或修改现有的标准SAP功能。通过CMOD,用户可以将自定义屏幕和功能模块集成到标准SAP系统中。 6. 定制字段的添加: 在定制屏幕中,...

    BADI&user_exit

    SMOD包含具体的增强,而CMOD是包含一组SMOD编写的增强。User exits(Function module exits)是sap提供的出口,它的命名规则如下:EXIT_<program name><3 digit suffix>。例如,SD的事务VA01,对应的程序是SAPMV45A...

Global site tag (gtag.js) - Google Analytics