SAP BW-Function Module 数据源ABAP开发

SE37创建函数,BW做Function Module数据源时需要ABAP开发函数,这个函数BW给了一个固定的传参格式,相当于BW数据源对ABAP的开放的一个接口

可以复制标准函数: RSAX_BIW_GET_DATA_SIMPLE

参数说明:

传入参数:

I_REQUNR: 请求次数      I_DSOURCE: 数据源名称     I_MAXSIZE :数据包大小

I_INITFLAG:是否是初始化 I_READ_ONLY: 只读标识    I_REMOTE_CALL:远程调用 

传出参数:

E_T_DATA:目标数据参数名称 (根据实际需求来的自定义结构)

I_T_SELECT:抽取的选择条件 I_T_FIELDS:选择条件的字段 

RSO2 创建数据源

 创建完成后 rsa3 测试

 代码逻辑部分参考:

FUNCTION ZFM_FJBW_WLBB.
*"----------------------------------------------------------------------
*"*"本地接口:
*"  IMPORTING
*"     VALUE(I_REQUNR) TYPE  SRSC_S_IF_SIMPLE-REQUNR
*"     VALUE(I_DSOURCE) TYPE  SRSC_S_IF_SIMPLE-DSOURCE OPTIONAL
*"     VALUE(I_MAXSIZE) TYPE  SRSC_S_IF_SIMPLE-MAXSIZE OPTIONAL
*"     VALUE(I_INITFLAG) TYPE  SRSC_S_IF_SIMPLE-INITFLAG OPTIONAL
*"     VALUE(I_READ_ONLY) TYPE  SRSC_S_IF_SIMPLE-READONLY OPTIONAL
*"     VALUE(I_REMOTE_CALL) TYPE  SBIWA_FLAG DEFAULT SBIWA_C_FLAG_OFF
*"  TABLES
*"      E_T_DATA TYPE  ZFJT_BW01 OPTIONAL
*"      I_T_SELECT TYPE  SRSC_S_IF_SIMPLE-T_SELECT OPTIONAL
*"      I_T_FIELDS TYPE  SRSC_S_IF_SIMPLE-T_FIELDS OPTIONAL
*"  EXCEPTIONS
*"      NO_MORE_DATA
*"      ERROR_PASSED_TO_MESS_HANDLER
*"----------------------------------------------------------------------

  DATA ls_out like LINE OF E_T_DATA .
* Auxiliary Selection criteria structure
  DATA l_s_select     TYPE srsc_s_select.

* Maximum number of lines for DB table
  STATICS: l_s_if               TYPE srsc_s_if_simple,

* counter
           lv_counter_datapakid LIKE sy-tabix,

* cursor
           lv_cursor            TYPE cursor.

  RANGES: RS_LFMON FOR MARD-LFMON .
  RANGES: RS_LFGJA FOR MARD-LFGJA .
* Initialization mode (first call by SAPI) or data transfer mode
* (following calls) ?
  IF i_initflag = sbiwa_c_flag_on.

************************************************************************
* Initialization: check input parameters
*                 buffer input parameters
*                 prepare data selection
************************************************************************
* Check DataSource validity
    CASE i_dsource.
      WHEN 'ZDS_FI_ZWLB'.
      WHEN OTHERS.
        RAISE error_passed_to_mess_handler.
    ENDCASE.

    APPEND LINES OF i_t_select TO l_s_if-t_select.

* Fill parameter buffer for data extraction calls
    l_s_if-requnr  = i_requnr.
    l_s_if-dsource = i_dsource.
    l_s_if-maxsize = i_maxsize.

* Fill field list table for an optimized select statement
* (in case that there is no 1:1 relation between InfoSource fields
* and database table fields this may be far from beeing trivial)
    APPEND LINES OF i_t_fields TO l_s_if-t_fields.

  ELSE.                 "Initialization mode or data extraction ?
    IF lv_counter_datapakid = 0.
      LOOP AT l_s_if-t_select INTO l_s_select WHERE fieldnm = 'GJAHR'.
        IF l_s_select-fieldnm = 'GJAHR'.
          RS_LFGJA =  VALUE #( SIGN = 'I' OPTION = 'EQ' LOW = l_s_select-LOW ).
          APPEND RS_LFGJA .
          IF l_s_select-LOW EQ SY-DATUM+0(4).
            DATA(LV_YEAR) = 'X'.
          ENDIF.
        ENDIF.
        IF l_s_select-FIELDNM = 'LFMON'.
          IF l_s_select-LOW EQ '12'.
            RS_LFMON =  VALUE #( SIGN = 'I' OPTION = 'BT' LOW = '12' HIGH = '16').
            APPEND RS_LFMON .
          ELSE.
            RS_LFMON =  VALUE #( SIGN = 'I' OPTION = 'BT' LOW = l_s_select-LOW ).
            APPEND RS_LFMON .
          ENDIF.
        ENDIF.
      ENDLOOP .

      LOOP AT LT_MAIN INTO DATA(LS_MAIN).
             .....
      ENDLOOP.

    ENDIF.


    IF e_t_data[] IS INITIAL .
      RAISE no_more_data.
    ENDIF.

  ENDIF.              "Initialization mode or data extraction ?
ENDFUNCTION.

 

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Gong JX

多谢鼓励

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值