BW QUERY 变量增强

本文详细介绍了在ABAP中如何根据不同的业务需求生成特定的日期范围,包括月初、年末、上一年同期等,通过使用FIMA_DATE_CREATE函数进行日期计算。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

*&---------------------------------------------------------------------**&  包含                ZXRSRU01*&---------------------------------------------------------------------*DATA: l_s_range TYPE rsr_s_rangesid.DATA: loc_var_range type rrrangeexit.data: v_date type sy-datum.CASE i_vnam.
  WHEN 'ZFISCPER_OLAP_001'.  "OLAP里面,上一个期间
    if i_step = 0.
      l_s_range-sign = 'I'.
      l_s_range-opt  = 'EQ'.
      clear:v_date.
      CALL FUNCTION 'FIMA_DATE_CREATE'
        EXPORTING
         i_date                  = sy-datum
         i_months                = '-1'
         i_set_last_day_of_month = 'X'
        IMPORTING
         e_date                  = v_date.
      CONCATENATE v_date+0(4) '0' v_date+4(2) INTO l_s_range-low.
      APPEND l_s_range TO e_t_range.
    endif.
  when 'ZVAR_S_CALMONTH_002'.  "年初月份_选择月份*     DATA: L_DATE2 TYPE SY-DATUM.
   if i_step = 2.
    READ TABLE i_t_var_range INTO loc_var_range WITH KEY vnam = 'ZVAR_S_CALMONTH_001'.
    IF SY-SUBRC = 0.
      l_S_range-sign = 'I'.
      l_S_range-opt = 'EQ'.
      CONCATENATE loc_var_range-LOW(4) '01' into l_S_range-low.
      APPEND  l_s_range TO e_t_range.
    ENDIF.
   endif.
  when 'ZVAR_I_CALMONTH_001'.  "本年累计_选择月份*     DATA: L_DATE2 TYPE SY-DATUM.
   if i_step = 2.
    READ TABLE i_t_var_range INTO loc_var_range WITH KEY vnam = 'ZVAR_S_CALMONTH_001'.
    IF SY-SUBRC = 0.
      l_S_range-sign = 'I'.
      l_S_range-opt = 'BT'.
      CONCATENATE loc_var_range-LOW(4) '01' into l_S_range-low.
      l_S_range-high = loc_var_range-LOW.
      APPEND  l_s_range TO e_t_range.
    ENDIF.
   endif.
  when 'ZVAR_I_CALMONTH_002'.  "截止上月本年累计_选择月份*     DATA: L_DATE2 TYPE SY-DATUM.
    if i_step = 2.
      READ TABLE i_t_var_range INTO loc_var_range WITH KEY vnam = 'ZVAR_S_CALMONTH_001'.
      IF SY-SUBRC = 0.
        l_S_range-sign = 'I'.
        l_S_range-opt = 'BT'.
        CONCATENATE loc_var_range-LOW(4) '01' into l_S_range-low.
        clear:v_date.
        CONCATENATE loc_var_range-LOW '01' into v_date.
        CALL FUNCTION 'FIMA_DATE_CREATE'
          EXPORTING
           i_date                  = v_date
           i_months                = '-1'
           i_set_last_day_of_month = 'X'
          IMPORTING
           e_date                  = v_date.
        l_S_range-high = v_date(6).
        APPEND  l_s_range TO e_t_range.
      ENDIF.
   endif.
  when 'ZVAR_I_CALMONTH_003'.  "上年本年累计_选择月份*     DATA: L_DATE2 TYPE SY-DATUM.
    if i_step = 2.
      READ TABLE i_t_var_range INTO loc_var_range WITH KEY vnam = 'ZVAR_S_CALMONTH_001'.
      IF SY-SUBRC = 0.
        l_S_range-sign = 'I'.
        l_S_range-opt = 'BT'.
        clear:v_date.
        v_date(4) = loc_var_range-LOW(4) - 1.
        CONCATENATE v_date(4) '01' into l_S_range-low.
        CONCATENATE v_date(4) loc_var_range-LOW+4(2) into l_S_range-high.
        APPEND  l_s_range TO e_t_range.
      ENDIF.
   endif.
  when 'ZVAR_S_CALMONTH_003'.  "上年12月_选择月份*     DATA: L_DATE2 TYPE SY-DATUM.
    if i_step = 2.
      READ TABLE i_t_var_range INTO loc_var_range WITH KEY vnam = 'ZVAR_S_CALMONTH_001'.
      IF SY-SUBRC = 0.
        l_S_range-sign = 'I'.
        l_S_range-opt = 'EQ'.
        clear:v_date.
        v_date(4) = loc_var_range-LOW(4) - 1.
        CONCATENATE v_date(4) '12' into l_S_range-low.
        APPEND  l_s_range TO e_t_range.
      ENDIF.
   endif.
  when 'ZVAR_S_CALYEAR_001'.  "选择年_选择月份*     DATA: L_DATE2 TYPE SY-DATUM.
    if i_step = 2.
      READ TABLE i_t_var_range INTO loc_var_range WITH KEY vnam = 'ZVAR_S_CALMONTH_001'.
      IF SY-SUBRC = 0.
        l_S_range-sign = 'I'.
        l_S_range-opt = 'EQ'.
        l_S_range-low = loc_var_range-LOW(4).
        APPEND  l_s_range TO e_t_range.
      ENDIF.
   endif.
   when 'ZVAR_S_CALMONTH_004'.  "去年同期月份
     if i_step = 2.
       READ TABLE i_t_var_range INTO loc_var_range WITH KEY vnam = 'ZVAR_S_CALMONTH_001'.
       IF SY-SUBRC = 0.
        clear:v_date.
        v_date(4) = loc_var_range-LOW(4) - 1.
        CONCATENATE v_date(4) loc_var_range-LOW+4(2) into l_S_range-low.
        l_S_range-sign = 'I'.
        l_S_range-opt = 'EQ'.
        APPEND  l_s_range TO e_t_range.
      ENDIF.
   endif.when 'ZVAR_S_CALMONTH_005'.  "下月_选择月份
     if i_step = 2.
       READ TABLE i_t_var_range INTO loc_var_range WITH KEY vnam = 'ZVAR_S_CALMONTH_001'.
       IF SY-SUBRC = 0.
        l_S_range-sign = 'I'.
        l_S_range-opt = 'EQ'.
        clear:v_date.
        CONCATENATE loc_var_range-LOW '01' into v_date.
        CALL FUNCTION 'FIMA_DATE_CREATE'
          EXPORTING
           i_date                  = v_date
           i_months                = '1'
           i_set_last_day_of_month = 'X'
          IMPORTING
           e_date                  = v_date.
        l_S_range-low = v_date(6).
        APPEND  l_s_range TO e_t_range.
      ENDIF.
   endif.when 'ZVAR_I_CALMONTH_004'.  "下月累计_选择月份
     if i_step = 2.
       READ TABLE i_t_var_range INTO loc_var_range WITH KEY vnam = 'ZVAR_S_CALMONTH_001'.
       IF SY-SUBRC = 0.
        l_S_range-sign = 'I'.
        l_S_range-opt = 'EQ'.
        CONCATENATE loc_var_range-LOW(4) '01' into l_S_range-low.
        clear:v_date.
        CONCATENATE loc_var_range-LOW '01' into v_date.
        CALL FUNCTION 'FIMA_DATE_CREATE'
          EXPORTING
           i_date                  = v_date
           i_months                = '1'
           i_set_last_day_of_month = 'X'
          IMPORTING
           e_date                  = v_date.
        l_S_range-high = v_date(6).
        APPEND  l_s_range TO e_t_range.
      ENDIF.
   endif.ENDCASE.

作者:wudongfei1
来源:CSDN
原文:https://blog.csdn.net/wudongfei1/article/details/41351971
版权声明:本文为博主原创文章,转载请附上博文链接!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值