BW Query 变量增强(给日期变量设置黙认值为系统当天)
Query 变量增强(给日期变量设置黙认值为系统当天)
1 由于要求在打开报表的时候,弹出一个对话框来输入日期(用于计算)。
在“过滤限制”中添加日期特征,右击选择 ,然后在“显示”输入框处选择“变量”,点击“新增”变量按钮。
在“处理由”处选择“用户出口”。
替换路径功能区为默认.
明细处如果你做的变量是不可输入的话就不对任何复选框做选择,如果是可输入性的,则选中变量已准备输入。其他的功能区就保持默认状态即可,然后点击OK按钮。
在BW系统中运行CMOD进行做增强。
使用"RSR00001" BI: Enhancements for Global Variables in Reporting.
代码,双击:ZXRSRU01
进行编写代码:
data: ls_range like LINE OF E_T_RANGE,
ls_var_range LIKE LINE OF i_t_var_range,
loc_ls_range LIKE LINE OF e_t_range,
gv_date LIKE SY-DATUM.
case I_VNAM. "Name of Variable to be Replaced
WHEN 'VAR_CUTDATE'.
"I_STEP 值说明:
"I_STEP = 1,请直接发生前变量条目。可用于预先填充选择变量。
"I_STEP = 2,呼叫发生后直接变量条目。这一步的时候,才开始了同一个变量是无法输入准备,并且不能在L_STEP = 1填补。
"I_STEP = 3,在此调用,您可以检查变量的值。触发一个异常(提高)导致变量屏幕再次出现。随
"后,L_step = 2,也再次调用。
"I_STEP = 0,是不是从屏幕变量呼吁提高。调用可以来自授权检查或从监视器。这
"是你要推出填充授权对象的模型设计。因为这是为代码如下:
if i_step = 1.
* 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 = 'I' .
gv_date = SY-DATUM + 4.
ls_range-low = gv_date.
INSERT ls_range INTO TABLE e_t_range.
* ENDIF.
endif.
ENDCASE.
使用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字段的长度,尽量小于或者等于这个长度,否则必然出错。
Using Exit to populate query authorization object dynamically.
Please note the article has been written from an ABAPers point of view and some knowledge of creating bw queries be required.
分享到:
相关推荐
SAP bw更改query查询变量属性,不需要创建新的变量来更改变量的类型及其他属性信息
从DB中取检索值传递给shell,生成环境变量 1. 编写myshellpara.sql 通过spool 执行一个SQL读取所要的值,结果保存在myshellvar_export.sh set feedback off; set heading off; set pagesize 0; set linesize 1000; ...
向fastreport报表传递变量总是不成功,利用网上的信息,一个一个地试,弄了个通宵都没有成功,后来终于成功了,利用delphi的表单中的edit,向fastreport报表传递变量终于成功。与大家一起分享。 fastreport做报表画...
PHP获取当前url路径的函数及服务器变量:QUERY_STRING、REQUEST_URI、SCRIPT_NAME、PHP_SELF
1、Interval(间隔),此变量可以表示查询的时间跨度,这样在查询的SQL中不用硬编码时间间隔,而是使用 2、Query(查询),此变量用于编写数据源查询,
文章链接:https://blog.csdn.net/liuting52001/article/details/111220596
1,nginx内置变量 nginx 有很多内置变量可以进行简单的过滤。 $arg_name 请求行中的name参数。 $args 请求行中参数字符串。 $cookie_name 名为name的cookie。 与$uri相同。 $http_name 任意请求头的值;变量名的后...
oracle exp query参数 转义符的各个操作系统通用解决方法
@ html.TextBoxfor(x => x.Name)中的值,使用Jquery进行可变
有时候在操作linux过程中,自己都不清楚有些变量是什么,也不清楚如何查看,下面在这里写一篇关于环境变量和部分命令的文章。
matlab 数据表查询,使用匹配和范围标准% TABLEQUERY 作为对表的逻辑 AND 查询操作,即% 提取满足所有查询条件的 DataTable 部分% TABLEQUERY 根据以下组合从表中提取数据% 变量名 + 查询条件% TABLEQUERY 支持两种...
然后Hibernate会自动根据所设置的数据库方言翻译成相应的SQL语句提交给数据库。比如如果数据库是Oracle,SQL Server等,则翻译为类似select ... top 10之类的SQL语句,若是MySQL,则翻译为select ... limit 10之类的...
MYSQL系统优化与系统设置参数的一次调查-(2)_Linux技术文章_Linux_操作系统.mht Mysql优化.txt 让apache支持shtml.txt shtml语法介绍.txt IIS Insider – 2003 年 3 月:有关 Internet 信息服务的问题及其解答.htm ...
该程序与普通的C语言程序并无区别,只是多了我们不常用的getenv函数,它在stdlib.h头文件中声明,作用是获取指定的环境变量的值,比如我的系统中HOME这个环境变量值为/home/latelee/,则该函数返回指向这个值的指针...
Hibernate SQLQuery 查询Oracle char类型结果为一个字符解决方法 Hibernate SQLQuery 查询Oracle char类型结果为一个字符解决方法 Hibernate SQLQuery 查询Oracle char类型结果为一个字符解决方法 Hibernate SQL...
react-query-hook:用于查询字符串的读写变量的自定义React钩子
power query 入门手册
query查询器query查询器query查询器query查询器query查询器query查询器query查询器query查询器
1.Query报表制作 2.Query报表上传、下载
QueryWrapper 常用用法