query 中出口变量的增强
来源:互联网 发布:国产手机推荐 知乎 编辑:程序博客网 时间:2024/04/29 04:48
QUERY中特征限制处加入变量(新建),再定义变量,选择用户出口,然后在SAP-CMOD增强RSR00001中加入代码
*&---------------------------------------------------------------------*
*& Include ZXRSRU01
*&---------------------------------------------------------------------*
DATA: L_S_RANGE TYPE RSR_S_RANGESID.
data: l_s_range_v like line of I_T_VAR_RANGE ,
tmp_date type d,
tmp_month(2) type n.
DATA: l_year(4) TYPE C,
l_month(2) TYPE C,
l_zzhgs(4) type n,
l_txtsh type RSTXTSH,
l_nd(4) type c,
l_zqlx(1) type c,
result type i.
CASEI_VNAM. " Variablenname
when 'ZVAR_DQKJND'."当前会计年度
IF i_step = 2.
l_s_range-low = sy-datum+0(4).
l_s_range-high = l_s_range-low.
l_s_range-opt = 'EQ'.
l_s_range-sign = 'I'.
INSERT l_s_range INTO TABLE e_t_range.
endif.
when 'ZV_KJNDQJTB'. "会计年度期间同比
IF i_step = 2.
READ TABLE i_t_var_range INTO l_s_range_v
WITH KEY vnam = 'ZV_KJNDQJ1'.
clear tmp_date.
l_s_range-low+0(4) = l_s_range_v-low+0(4) - 1.
l_s_range-low+4(3) = l_s_range_v-low+4(3).
l_s_range-opt = 'EQ'.
l_s_range-sign = 'I'.
INSERT l_s_range INTO TABLE e_t_range.
endif.
when 'ZV_PD_BEG'."期初日期
IF i_step = 2.
READ TABLE i_t_var_range INTO l_s_range_v
* WITH KEY vnam = '0I_CALMO'.
WITH KEY vnam = 'ZVAR_RLNYFW1'.
clear tmp_date.
if not l_s_range_v-LOW is initial.
tmp_date+0(6) = l_s_range_v-LOW.
tmp_date+6(2) = '01'.
tmp_date = tmp_date - 1.
l_s_range-sign = 'I'.
l_s_range-opt = 'BT'.
l_s_range-high = tmp_date.
INSERT l_s_range INTO TABLE e_t_range.
else.
l_s_range-sign = 'I'.
l_s_range-opt = 'BT'.
l_s_range-high = '19000101'.
INSERT l_s_range INTO TABLE e_t_range.
endif.
endif.
when 'ZV_PD_END'."期末日期
IF i_step = 2.
READ TABLE i_t_var_range INTO l_s_range_v
* WITH KEY vnam = '0I_CALMO'.
WITH KEY vnam = 'ZVAR_RLNYFW1'.
clear tmp_date.
clear tmp_month.
if not l_s_range_v-high is initial.
tmp_month = l_s_range_v-high+4(2).
if tmp_month = '12'.
tmp_date+0(4) = l_s_range_v-high+0(4) + 1.
tmp_date+4(2) = '01'.
else.
tmp_date+0(4) = l_s_range_v-high+0(4).
tmp_date+4(2) = l_s_range_v-high+4(2) + 1.
endif.
tmp_date+6(2) = '01'.
tmp_date = tmp_date - 1.
l_s_range-sign = 'I'.
l_s_range-opt = 'BT'.
l_s_range-high = tmp_date.
INSERT l_s_range INTO TABLE e_t_range.
else.
tmp_date+6(2) = '01'.
tmp_date = tmp_date - 1.
l_s_range-sign = 'I'.
l_s_range-opt = 'BT'.
l_s_range-high = '20991231'.
INSERT l_s_range INTO TABLE e_t_range.
endif.
endif.
when 'ZV_ZLFX_QCRQ'."账龄分析-基线日期-期初日期
if i_step = 2.
READ TABLE i_t_var_range INTO l_s_range_v
WITH KEY vnam = '0P_DYOPT'.
clear tmp_date.
tmp_date+0(6) = l_s_range_v-low+0(6).
tmp_date+6(2) = '01'.
l_s_range-sign = 'I'.
l_s_range-opt = 'BT'.
l_s_range-low = '19000101'.
l_s_range-high = tmp_date.
insert l_s_range into table e_t_range.
endif.
when 'ZV_ZLFX_QMRQ'."账龄分析-基线日期-期末日期
if i_step = 2.
READ TABLE i_t_var_range INTO l_s_range_v
WITH KEY vnam = '0P_DYOPT'.
clear tmp_date.
tmp_date+0(4) = l_s_range_v-low+0(4).
tmp_date+4(2) = l_s_range_v-low+4(2).
if tmp_date+4(2) = '12'.
tmp_date+6(2) = '31'.
Else.
tmp_date+4(2) = l_s_range_v-low+4(2) + 1.
tmp_date+6(2) = '01'.
tmp_date = tmp_date - 1.
endif.
l_s_range-sign = 'I'.
l_s_range-opt = 'BT'.
l_s_range-low = '19000101'.
l_s_range-high = tmp_date.
insert l_s_range into table e_t_range.
endif.
when 'ZV_ZLFX_YNYN'."账龄分析-基线日期_一年以内
if i_step = 2.
READ TABLE i_t_var_range INTO l_s_range_v
WITH KEY vnam = '0P_DYOPT'.
clear tmp_date.
l_s_range-sign = 'I'.
l_s_range-opt = 'BT'.
tmp_date+0(4) = l_s_range_v-low+0(4).
tmp_date+4(4) = l_s_range_v-low+4(4).
tmp_date = tmp_date + 1.
tmp_date+0(4) = tmp_date+0(4) - 1.
l_s_range-low = tmp_date.
l_s_range-high = l_s_range_v-low.
insert l_s_range into table e_t_range.
endif.
when 'ZV_ZLFX_2N'."账龄分析-基线日期_1-2年
if i_step = 2.
read table i_t_var_range into l_s_range_v
with key vnam = '0P_DYOPT'.
clear tmp_date.
l_s_range-sign = 'I'.
l_s_range-opt = 'BT'.
tmp_date = l_s_range_v-low.
tmp_date = tmp_date + 1.
tmp_date+0(4) = tmp_date+0(4) - 2.
l_s_range-low = tmp_date.
clear tmp_date.
tmp_date = l_s_range_v-low.
tmp_date = tmp_date + 1. "在闰年的解决情况,
tmp_date+0(4) = tmp_date+0(4) - 1.
tmp_date = tmp_date - 1. "在闰年的解决情况
l_s_range-high = tmp_date.
insert l_s_range into table e_t_range.
endif.
when 'ZV_ZLFX_3N'."账龄分析-基线日期_2-3年
if i_step = 2.
read table i_t_var_range into l_s_range_v
with key vnam = '0P_DYOPT'.
clear tmp_date.
l_s_range-sign = 'I'.
l_s_range-opt = 'BT'.
tmp_date = l_s_range_v-low.
tmp_date = tmp_date + 1.
tmp_date+0(4) = tmp_date+0(4) - 3.
l_s_range-low = tmp_date.
clear tmp_date.
tmp_date = l_s_range_v-low.
tmp_date = tmp_date + 1.
tmp_date+0(4) = tmp_date+0(4) - 2.
tmp_date = tmp_date - 1.
l_s_range-high = tmp_date.
insert l_s_range into table e_t_range.
endif.
when 'ZV_ZLFX_4N'."账龄分析-基线日期_3-4年
if i_step = 2.
read table i_t_var_range into l_s_range_v
with key vnam = '0P_DYOPT'.
clear tmp_date.
l_s_range-sign = 'I'.
l_s_range-opt = 'BT'.
tmp_date = l_s_range_v-low.
tmp_date = tmp_date + 1.
tmp_date+0(4) = tmp_date+0(4) - 4.
l_s_range-low = tmp_date.
clear tmp_date.
tmp_date = l_s_range_v-low.
tmp_date = tmp_date + 1.
tmp_date+0(4) = tmp_date+0(4) - 3.
tmp_date = tmp_date - 1.
l_s_range-high = tmp_date.
insert l_s_range into table e_t_range.
endif.
when 'ZV_ZLFX_5N'."账龄分析-基线日期_4-5年
if i_step = 2.
read table i_t_var_range into l_s_range_v
with key vnam = '0P_DYOPT'.
clear tmp_date.
l_s_range-sign = 'I'.
l_s_range-opt = 'BT'.
tmp_date = l_s_range_v-low.
tmp_date = tmp_date + 1.
tmp_date+0(4) = tmp_date+0(4) - 5.
l_s_range-low = tmp_date.
clear tmp_date.
tmp_date = l_s_range_v-low.
tmp_date = tmp_date + 1.
tmp_date+0(4) = tmp_date+0(4) - 4.
tmp_date = tmp_date - 1.
l_s_range-high = tmp_date.
insert l_s_range into table e_t_range.
endif.
when 'ZV_ZLFX_5NYS'."账龄分析-基线日期_5年以上
if i_step = 2.
read table i_t_var_range into l_s_range_v
with key vnam = '0P_DYOPT'.
clear tmp_date.
l_s_range-sign = 'I'.
l_s_range-opt = 'BT'.
tmp_date = l_s_range_v-low.
tmp_date = tmp_date + 1.
tmp_date+0(4) = tmp_date+0(4) - 5.
tmp_date = tmp_date - 1.
l_s_range-low = '19000101'.
l_s_range-high = tmp_date.
insert l_s_range into table e_t_range.
endif.
WHEN'C4YEAR01'."当前年(进度管理)--wangxq
IF i_step = 1.
IF sy-datum+4(2) = '01'.
l_s_range-sign = 'I'.
l_s_range-opt = 'EQ'.
l_s_range-LOW+0(4) =sy-datum+0(4) - 1.
INSERT l_s_range INTO TABLE e_t_range.
ELSEIF sy-datum+4(2) = '02'.
l_s_range-sign = 'I'.
l_s_range-opt = 'EQ'.
l_s_range-LOW+0(4) =sy-datum+0(4) - 1.
INSERT l_s_range INTO TABLE e_t_range.
ELSEIF sy-datum+4(2) = '03'.
l_s_range-sign = 'I'.
l_s_range-opt = 'EQ'.
l_s_range-LOW+0(4) =sy-datum+0(4) - 1.
INSERT l_s_range INTO TABLE e_t_range.
ELSE.
l_s_range-sign = 'I'.
l_s_range-opt = 'EQ'.
l_s_range-LOW+0(4) =sy-datum+0(4).
INSERT l_s_range INTO TABLE e_t_range.
ENDIF.
ENDIF.
WHEN 'C4MONTH01'."当前月(进度管理)--wangxq
IF i_step = 1.
IF sy-datum+4(2) = '01'.
l_s_range-sign = 'I'.
l_s_range-opt = 'EQ'.
l_s_range-LOW+0(4) =sy-datum+0(4) - 1.
l_s_range-LOW+4(2) = '11'.
INSERT l_s_range INTO TABLE e_t_range.
ELSEIF sy-datum+4(2) = '02'.
l_s_range-sign = 'I'.
l_s_range-opt = 'EQ'.
l_s_range-LOW+0(4) =sy-datum+0(4) - 1.
l_s_range-LOW+4(2) = '11'.
INSERT l_s_range INTO TABLE e_t_range.
ELSEIF sy-datum+4(2) = '03'.
l_s_range-sign = 'I'.
l_s_range-opt = 'EQ'.
l_s_range-LOW+0(4) = sy-datum+0(4) - 1.
l_s_range-LOW+4(2) = '11'.
INSERT l_s_range INTO TABLE e_t_range.
ELSE.
l_s_range-sign = 'I'.
l_s_range-opt = 'EQ'.
l_s_range-LOW+0(4) = sy-datum+0(4).
l_s_range-LOW+4(2) =sy-datum+4(2) - 1.
IF l_s_range-LOW+4(2) < 10.
CONCATENATE '0' l_s_range-LOW+4(2) INTO l_s_range-LOW+4(2).
endif.
INSERT l_s_range INTO TABLE e_t_range.
ENDIF.
ENDIF.
when 'ZHRRLN02'. "输入的日历年
IF i_step = 2.
READ TABLE i_t_var_range INTO l_s_range_v
WITH KEY vnam = 'ZHRRLN01'.
clear tmp_date.
l_s_range-low+0(4) = l_s_range_v-low+0(4).
l_s_range-low+4(4) = '0101'.
l_s_range-HIGH+0(4) = l_s_range_v-LOW+0(4).
l_s_range-HIGH+4(4) = '1231'.
l_s_range-opt = 'BT'.
l_s_range-sign = 'I'.
INSERT l_s_range INTO TABLE e_t_range.
endif.
when 'ZHRRLN03'. "输入的日历年的上一年
IF i_step = 2.
READ TABLE i_t_var_range INTO l_s_range_v
WITH KEY vnam = 'ZHRRLN01'.
clear tmp_date.
l_s_range-low+0(4) = l_s_range_v-low+0(4) - 1.
l_s_range-low+4(4) = '0101'.
l_s_range-HIGH+0(4) = l_s_range_v-LOW+0(4) - 1.
l_s_range-HIGH+4(4) = '1231'.
l_s_range-opt = 'BT'.
l_s_range-sign = 'I'.
INSERT l_s_range INTO TABLE e_t_range.
endif.
when 'ZHR_DATE01'. "将当前系统查询时间设置为当前年的1月1日到系统当前时间.
IF i_step = 1.
l_s_range-low+0(4) = sy-datum+0(4).
l_s_range-low+4(4) = '0101'.
l_s_range-high = sy-datum.
l_s_range-opt = 'BT'.
l_s_range-sign = 'I'.
INSERT l_s_range INTO TABLE e_t_range.
endif.
when 'ZHR_ENDDATE01'. "将当前系统查询截止日期设置为系统当前时间.
IF i_step = 1.
l_s_range-low = sy-datum.
l_s_range-high = sy-datum.
l_s_range-opt = 'EQ'.
l_s_range-sign = 'I'.
INSERT l_s_range INTO TABLE e_t_range.
endif.
when 'ZHR_PAYMENT01'. "将当前系统薪酬查询时间设置为当前年的1月到系统当前月.
IF i_step = 1.
l_s_range-low+0(4) = sy-datum+0(4).
l_s_range-low+4(2) = '01'.
l_s_range-high+0(6) = sy-datum.
l_s_range-opt = 'BT'.
l_s_range-sign = 'I'.
INSERT l_s_range INTO TABLE e_t_range.
endif.
when 'ZVAR_KJND'.
IFi_step = 1.
l_s_range-low = sy-datum(4).
l_s_range-high = l_s_range-low.
l_s_range-opt = 'EQ'.
l_s_range-sign = 'I'.
INSERT l_s_range INTO TABLE e_t_range.
endif.
when 'ZVAR_KJNDQJ3'. "将当前查询时间设置为当前年月(会计年度/期间).
IF i_step = 1.
l_s_range-low+0(4) = sy-datum+0(4).
concatenate '0' sy-datum+4(2) into l_s_range-low+4(3).
l_s_range-opt = 'EQ'.
l_s_range-sign = 'I'.
INSERT l_s_range INTO TABLE e_t_range.
endif.
when 'ZVAR_KJND1'. "将当前查询时间设置为当前年(会计年度).
IF i_step = 1.
l_s_range-low = sy-datum+0(4).
l_s_range-opt = 'EQ'.
l_s_range-sign = 'I'.
INSERT l_s_range INTO TABLE e_t_range.
endif.
when 'ZVAR_JZQJ1'. "将当前查询时间设置为当前月(记账期间).
IF i_step = 1.
data lc_low(3) type c.
l_s_range-low = sy-datum+4(2).
CALL 'CONVERSION_EXIT_ALPHA_INPUT' ID 'INPUT' FIELD l_s_range-low
ID 'OUTPUT' FIELD lc_low.
l_s_range-low = lc_low.
l_s_range-opt = 'EQ'.
l_s_range-sign = 'I'.
INSERT l_s_range INTO TABLE e_t_range.
endif.
when 'ZVAR_JZQJFW1'. "将记账期间查询范围设置为当前年的1月到系统当前月
IF i_step = 1.
l_s_range-low = '001'.
l_s_range-high = sy-datum+4(2).
CALL 'CONVERSION_EXIT_ALPHA_INPUT' ID 'INPUT' FIELD l_s_range-high
ID'OUTPUT' FIELD lc_low.
l_s_range-high = lc_low.
l_s_range-opt = 'BT'.
l_s_range-sign = 'I'.
INSERT l_s_range INTO TABLE e_t_range.
Endif.
when 'ZVAR_RLNYFW1'."将日历年/月范围设置为当年前的1月到系统当前月
if i_step = 1.
l_s_range-low+0(4) = sy-datum+0(4).
l_s_range-low+4(2) = '01'.
l_s_range-high+0(6) = sy-datum+0(6).
l_s_range-opt = 'BT'.
l_s_range-sign = 'I'.
insert l_s_range into table e_t_range.
endif.
when 'ZVAR_KJNDQJFW1'."将会计年度/记账期间范围设置为当年前的1月到系统当前月
if i_step = 1.
l_s_range-low+0(4) = sy-datum+0(4).
l_s_range-low+4(3) = '001'.
l_s_range-high+0(4) = sy-datum+0(4).
data lc_high(3) type C.
l_s_range-high+4(2) = sy-datum+4(2).
CALL 'CONVERSION_EXIT_ALPHA_INPUT' ID 'INPUT' FIELDl_s_range-high+4(2)
ID'OUTPUT' FIELD lc_high.
l_s_range-high+4(3) = lc_high.
l_s_range-opt = 'BT'.
l_s_range-sign = 'I'.
insert l_s_range into table e_t_range.
endif.
ENDCASE.
- query 中出口变量的增强
- 出口变量增强- 截至到输入日期的本月累计
- SAP系统中设备管理模块的主要增强出口
- 变量的客户出口
- BADI出口增强的查找方法
- SAP BW QUERY VARIABLES (BW增强变量)
- BW Query变量增强(时间及文本)
- SAP BW QUERY VARIABLES (BW增强变量)
- Marklogic 关于增强cts:query中相应的节点
- BEx Query Designer中的变量及其增强【转自WKingChen的博客】
- ABAP 增强出口查找
- SD--发货处理的增强出口说明(摘自:note 415716)
- 获取标准程序的BADI,用户出口,增强
- SD--发货处理的增强出口说明(摘自:note 415716)
- 一个功能非常全面的增强出口查找工具
- 销售订单SO保存校验的用户出口增强
- 找增强出口,一点浅谈
- 字段出口增强FIELD-EXIT
- Android智能指针分析(sp、wp)
- 快速幂取模
- IOS中GET和POST请求方式的差异
- 设计模式------工厂三姐妹
- 普林斯顿公开课 算法1-2:观察
- query 中出口变量的增强
- Linux启动时 Error 15: File not found 问题解决方法
- XML和JSON解析
- OGG 机器重起后挂起,无明显报错信息
- 普林斯顿公开课 算法1-3:数学模型
- 实现图片的点击放大,再点击缩小
- hibernate session缓存
- OCP 1Z0 051 150
- MTK 相机像素差值和做假