ABAP data extract 数据抽取总结(转帖)

所谓Data extract就是通过SAP ABAP代码对数据库数据进行抽取的操作,然后导出并保存为DAT文件。

 

在Commscope中,有SAP的ERP系统和BI的数据系统(貌似叫dataStage),由于两个系统的数据有时会出现不一致的现象,一般情况下是BI系统的数据较少,这时就需要Data extract。

 

当BI team 所需要的数据不存在与 BI的系统中时, 此时就需要对SAP 系统的数据进行抽取,并且导入到BI的系统中。

 

Data Extract 的操作是在SAP ABAP Workbench下完成的,通过ABAP代码将数据以DAT的文件格式保存到Aplication server上。然后BI人员会通过他们的工具对DAT文件进行解析处理,这个过程需要SAP ABAP编程人员以及 BI的编程人员共同完成。

以下是如何进行Data extract

 

首先,要在SAP 系统中建立一个用于抽取的程序,并且要符合以下的命名规则

程序名:ZBI_XXX(数据库表名)

Title: BI:CommScope program for XXX extract (SAP 1)

BI:Legacy Andrew program for XXX extract (SAP 2)

 

Develp class ( ECC6-Package ):ZBI

 

Authorization group:Z_XXXX(first four letters of the table name)

CTS ( Request ): [issue number] – ABAP extract for table XXXX(table name)

 

在符合的规范的情况下,要进行ABAP编程以实现数据库数据抽取。

1.       使用Tables关键字对所要抽取的表进行声明

2.       建立存放数据的内表,命名规范为IT_XXX(数据库表名)

3.       建立存放数据的structure,命名规范ST_1.

4.       structure的组建要符合命名规范F_1(字段长度) TYPE C, “ For [数据库表名]-[字段名]

5.       声明i类型变量以记录数据的数量

6.       声明 文件名称DATA: DSN   LIKE RLGRAP-FILENAME. 并声明用来储存DAT文件名称的变量DATA: V_PARAM(255) TYPE C.

7.       生成DAT文件的名称,

8.       调用 Function module ‘FILE_GET_NAME’ 获取文件路径并传递给DSN。

9.       打开文件进行数据抽取,OPEN DATASET DSN FOR OUTPUT IN TEXT MODE.

10.   用Select循环对数据库表内的数据进行查询,并放到IT_XXX内表中。

11.   将IT_XXX中的数据按照对应关系复制到IT_1 中的字段中

12.   将结构体 IT_1 传到指定的文件中TRANSFER IT_1 TO DSN LENGTH nn(结构体所有字段的长度之和)。

13.   把记录行数的变量叠加。

14.   endselect以后,将记录行数的变量打印出来

15.   关闭文件传输CLOSE DATASET DSN.

 注:  也正是在写总结的时候,发现了自己程序中的大BUG!在使用move-corresponding IT_XXX to IT_1的时候, IT_1里根本没有数据,因为这两个结构体的字段名根本就不一样!!

好危险。。。 幸亏发现。。。

 由于data extract 程序都使用的是固定模板,只需要更改数据库表名和字段名即可,但是当数据库表中存在大量字段时,比如说BSAD数据库表,里面就有160多个字段,如果你每一个字段都查数据库,并且计算所有字段的长度之和的话,工作量将会非常庞大,而且抽取的数据还不一定准确,所以我自己开发了一个专门打印 extract data program code的程序,只需要输入数据库表名就可以自动打印出代码,不仅节省了时间,而且还可以降低手动编码的错误几率。

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/181844/viewspace-609104/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/181844/viewspace-609104/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值