如何创建使用DELTA QUEUE的数据源

本文详细介绍了如何在SAP系统中使用Delta Queue创建通用数据源,包括定义业务发生事件、创建视图和数据源、编写和调用函数模块等步骤。通过示例展示了如何实现数据源的更新及与BW系统的集成。

本文翻译自SAP标准方法:

https://archive.sap.com/kmuuid2/10b68b99-022e-2a10-999d-c4dc9ec24a59/How%20to%20Create%20Generic%20Data%20Sources%20which%20use%20the%20Delta%20Queue%20(NW7.0).pdf

1. 事务码 FINF

2. 确定 业务发生事件(BTE)。

3. 1 点击示例函数模块,创建函数

3.2.1  SE11  基于EBKN 创建 一个 view   ZEBKN。

3.2.2 查看VIEW中数据

3.3.1 以ZEBKN为基础,RSO2创建数据源 Z_BET_DELTA。

3.3.2 确认数据源的选择选项

3.3.3 SE38 创建Z_CHANGE_DELTA_PROCESS, 输入代码  (4.1)

3.3.4. 跑此程序,需要输入两个参数, 数据源名称和增量方式(此处填写 AIM)。

3.3.5 执行程序,会告诉此数据源正常更新。

3.4.1  FIBF 设置-产品-客户的

3.4.2 创建一个客户产品 Z_DELTA

3.4.3.FIBF 设置-发布/订阅模块-客户的

3.4.5  输入BTE名,产品Z_DELTA,和刚才制作的function module

3.5.1 到SE37中创建Z_WRITE_TO_QUEUE

3.5.2 拷贝代码 (见4.2)

3.5.3 在第一个FUNCTION MODULE 中拷贝代码 (4.3)

3.5.4 在3.5.3 中改数据源为:Z_BTE_DELTA

3.6.1 进 BW  - RSA1复制元数据  激活   ,创建信息包,先初始化。

3.6.2 进源系统 RSA7 可以看到 Z_BTE_DELTA出现在delta queue中

3.6.6 修改一张现有的采购单数据

3.6.7 可以在BW中创建一个DELTA 包 ,可以抽取到修改后的 采购单数据。

 

 

4.1
Z_CHANGE_DELTA_PROCESS
*&---------------------------------------------------------------------*
*& Report Z_CHANGE_DELTA_PROCESS *
*& *
*&---------------------------------------------------------------------*
*& *
*& *
*&---------------------------------------------------------------------*
report z_change_delta_process .
*P_DATAS DataSource
*P_DELTAP Delta Process for DataSource
parameters:
p_datas type roosource-oltpsource,
p_deltap type roosource-delta.
tables:
roosource.
data:
ls_roosource type roosource.
if p_datas(2) ne 'Z_'.
message 'The DataSource needs to begin with ''Z_''.' type 'E'.
endif.
select single * from roosource into ls_roosource
where oltpsource = p_datas
and objvers = 'A'.
if sy-subrc eq 0.
ls_roosource-delta = p_deltap.
update roosource from ls_roosource.
message 'The DataSource has been updated successfully.' type 'I'.
else.
message 'The DataSource entered is not valid, try again.' type 'E'.
endif.

 

4.2  4.2
Z_WRITE_TO_QUEUE
FUNCTION z_write_to_queue.
*"----------------------------------------------------------------------
*"*"Local interface:
*" IMPORTING
*" REFERENCE(I_DATASOURCE) TYPE ROOSOURCE-OLTPSOURCE
*" TABLES
*" I_T_DATA OPTIONAL
*"----------------------------------------------------------------------
* Developed by: Scott Cairncross
TYPE-POOLS:
sbiwa.
DATA:
- 14 -
l_exstruct TYPE roosource-exstruct,
l_initflag TYPE roosprmsc-initstate,
l_subrc TYPE sy-subrc,
lr_is_data TYPE REF TO data,
lr_es_data TYPE REF TO data,
lr_et_data TYPE REF TO data,
l_t_fields TYPE sbiwa_t_fields,
l_t_select TYPE sbiwa_t_select.
FIELD-SYMBOLS:
<i_s_data> TYPE ANY,
<e_s_data> TYPE ANY,
<e_t_data> TYPE STANDARD TABLE.
* Check to see if Delta initialization has been performed.
SELECT SINGLE initstate FROM roosprmsc INTO l_initflag
WHERE oltpsource = i_datasource
AND rlogsys NE space
AND slogsys NE space
AND initrnr NE space.
* If initialization has taken place continue
IF sy-subrc EQ 0 AND l_initflag EQ 'X'.
* grab the extraction structure from roosource based on the
* datasource parameter input.
SELECT SINGLE exstruct FROM roosource INTO l_exstruct
WHERE oltpsource = i_datasource
AND objvers = 'A'.
CHECK sy-subrc = 0.
CREATE DATA lr_is_data LIKE LINE OF i_t_data.
ASSIGN lr_is_data->* TO <i_s_data>.
CREATE DATA lr_es_data TYPE (l_exstruct).
ASSIGN lr_es_data->* TO <e_s_data>.
CREATE DATA lr_et_data TYPE STANDARD TABLE OF (l_exstruct).
ASSIGN lr_et_data->* TO <e_t_data>.
LOOP AT i_t_data ASSIGNING <i_s_data>.
CLEAR <e_s_data>.
MOVE-CORRESPONDING <i_s_data> TO <e_s_data>.
INSERT <e_s_data> INTO TABLE <e_t_data>.
ENDLOOP.
CALL FUNCTION 'EXIT_SAPLRSAP_001'
EXPORTING
i_datasource = i_datasource
i_isource = ''
i_updmode = ''
TABLES
i_t_select = l_t_select
i_t_fields = l_t_fields
c_t_data = <e_t_data>
EXCEPTIONS
rsap_customer_exit_error = 1
OTHERS = 2.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
CALL FUNCTION 'RSC1_TRFC_QUEUE_WRITE'
EXPORTING
i_isource = i_datasource
- 15 -
- 16 -
i_no_flush = 'X'
IMPORTING
e_subrc = l_subrc
TABLES
i_t_data = <e_t_data>
EXCEPTIONS
name_too_long = 1
OTHERS = 2.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
ENDIF.
ENDFUNCTION.
*---------------------------------------------------------------------*
* FORM abs_type_to_rel_type *
*---------------------------------------------------------------------*
* The purpose of this subroutine is to convert an absolute type *
* name into a relative type name. *
* *
*---------------------------------------------------------------------*
* --> TYPE_NAME *
*---------------------------------------------------------------------*
form abs_type_to_rel_type changing type_name.
data junk(100) type c.
split type_name at '\TYPE=' into junk type_name.
endform.

4.3

*"*"Local interface:
*" TABLES
*" T_XEBAN STRUCTURE EBAN OPTIONAL
*" T_XEBKN STRUCTURE EBKN OPTIONAL
*" T_YEBAN STRUCTURE EBAN OPTIONAL
*" T_YEBKN STRUCTURE EBKN OPTIONAL
*"----------------------------------------------------------------------
data:
l_datasource type roosource-oltpsource.
l_datasource = 'Z_BTE_DELTA'.
if lines( t_xebkn[] ) gt 0.
call function 'Z_WRITE_TO_QUEUE'
exporting
i_datasource = l_datasource
tables
i_t_data = t_xebkn.
endif.
endfunction.

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值