最近在做PI和BW的一个接口,从其他数据源发送数据到BW的“直_第1页
最近在做PI和BW的一个接口,从其他数据源发送数据到BW的“直_第2页
最近在做PI和BW的一个接口,从其他数据源发送数据到BW的“直_第3页
最近在做PI和BW的一个接口,从其他数据源发送数据到BW的“直_第4页
最近在做PI和BW的一个接口,从其他数据源发送数据到BW的“直_第5页
已阅读5页,还剩1页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、最近在做PI和BW的一个接口,从其他数据源发送数据到BW的“直接更新”类型的CUBE,确切的说应该是BCS单户数据。当中,遇到了2个问题:1 DSO的最多只能设置16个主键,而我们的模型需要设置超过16个主键?2 上载数据如何实现增量上载?解决方法:1 自定义一个字段,作为主键,其他字段都作为数据字段。在开始例程中判断数据是否已经存在,存在,取原数据的主键;不存在,取时间戳和数据包上载记录的顺序号做为DSO的主键。2 利用DSO的增量机制,KEY FIGURE的Aggregation属性设置为OVERWRITE,上载数据默认为后镜像数据,每次上载的数据覆盖以前的数据,这样,对于修改和新增的数据

2、都可以实现增量。对于数据包中删除的数据,将数据为0的记录写入到数据包。这样做,可以将删除的数据清为0。但要注意的是,在判断数据是否删除之前,必须要指定一个范围,即指定在哪个范围的数据内操作,否则程序会将除上载数据外的所有数据都置为0。如:我们的例子中规定,每次上载一个合并单位下的某个期间的数据,在第二次上载的时候,我就要考虑数据是否在这个范围(合并单位+年度+期间)内存在,如果不存在,才将key figure为0的数据记录写入。关于DELTA机制,请参考:  METHOD start_routine.*= Segments = 

3、60;  FIELD-SYMBOLS:      <SOURCE_FIELDS>    TYPE _ty_s_SC_1.    DATA:      MONITOR_REC     TYPE rstmonitor.*$*$ begin of routine 

4、- insert your code only below this line        *-*    . "insert your code here*-  fill table "MONITOR" with values of structure

5、60;"MONITOR_REC"*-   to make monitor entries    . "to cancel the update process*    raise exception type CX_RSROUT_ABORT.    DATA: lt_dso type

6、60;TABLE OF /BIC/AZTBCSD0100,          ls_dso type /BIC/AZTBCSD0100.    data: lv_index type i,          lv_index_str(6) type c. &#

7、160;  data: lv_stamp1(14) type c,          lv_stamp2(14) type c.    data: sf_fields type _ty_s_SC_1.    types: BEGIN OF ts_id ,  &

8、#160;       FISCPER3 type /BIC/AZTBCSD0100-FISCPER3,          FISCYEAR type /BIC/AZTBCSD0100-FISCYEAR,          CS_UNIT  type /BIC

9、/AZTBCSD0100-CS_UNIT,      END OF ts_id.    data: lt_id type TABLE OF ts_id,          ls_id type ts_id.    select * from 

10、;/BIC/AZTBCSD0100 into table lt_dso.    concatenate sy-datum sy-uzeit into lv_stamp1.    move lv_stamp1 to lv_stamp2.* 设置DSO主键    loop at SOURCE_PACKAGE ASSIGNING <sou

11、rce_fields>.* 如果时间过1秒,事件重新从1开始累计      concatenate sy-datum sy-uzeit into lv_stamp2.      if lv_stamp1 <> lv_stamp2.        clear lv_index.  &

12、#160;     move lv_stamp2 to lv_stamp1.      endif.      lv_index = lv_index + 1.* 查询数据是否已存在,本例中,所有字段都是主键      read table lt_dso with

13、60;key        CS_VERSION     = <source_fields>-CS_VERSION        CS_CHART       = <source_fields>-CS_CHART     &#

14、160;  CS_ITEM        = <source_fields>-CS_ITEM        COUNTRY        = <source_fields>-COUNTRY        MOVE_T

15、YPE      = <source_fields>-MOVE_TYPE        ACQ_YEAR       = <source_fields>-ACQ_YEAR        ACQ_PER     

16、60;  = <source_fields>-ACQ_PER        BLINE_DATE     = <source_fields>-BLINE_DATE        CS_PARTNER     = <source_fields>-CS_PA

17、RTNER        FUNC_AREA      = <source_fields>-FUNC_AREA        /BIC/Z03BCS_01 = <source_fields>-/BIC/Z03BCS_01        /BIC/

18、Z03BCS_02 = <source_fields>-/BIC/Z03BCS_02        /BIC/Z03BCS_03 = <source_fields>-/BIC/Z03BCS_03        /BIC/Z03BCS_04 = <source_fields>-/BIC/Z03BCS_04   &#

19、160;    /BIC/Z03BCS_05 = <source_fields>-/BIC/Z03BCS_05        /BIC/Z03BCS_06 = <source_fields>-/BIC/Z03BCS_06        /BIC/Z03BCS_07 = <source_fields>-/

20、BIC/Z03BCS_07        /BIC/Z03BCS_08 = <source_fields>-/BIC/Z03BCS_08        /BIC/Z03BCS_09 = <source_fields>-/BIC/Z03BCS_09        /BIC/Z03BCS_14

21、60;= <source_fields>-/BIC/Z03BCS_14        /BIC/Z03BCS_15 = <source_fields>-/BIC/Z03BCS_15        /BIC/Z03BCS_16 = <source_fields>-/BIC/Z03BCS_16     &#

22、160;  /BIC/Z03BCS_66 = <source_fields>-/BIC/Z03BCS_66        /BIC/Z03BCS_67 = <source_fields>-/BIC/Z03BCS_67        /BIC/Z03BCS_68 = <source_fields>-/BIC/Z03BCS_6

23、8        /BIC/Z03BCS_69 = <source_fields>-/BIC/Z03BCS_69        /BIC/Z03BCS_70 = <source_fields>-/BIC/Z03BCS_70        /BIC/Z03BCS_72 = &l

24、t;source_fields>-/BIC/Z03BCS_72        /BIC/Z03BCS_71 = <source_fields>-/BIC/Z03BCS_71        /BIC/Z03BCS_74 = <source_fields>-/BIC/Z03BCS_74       &#

25、160;/BIC/Z03BCS_75 = <source_fields>-/BIC/Z03BCS_75        /BIC/Z03BCS_76 = <source_fields>-/BIC/Z03BCS_76        /BIC/Z03BCS_77 = <source_fields>-/BIC/Z03BCS_77  

26、;      /BIC/Z03BCS_10 = <source_fields>-/BIC/Z03BCS_10        /BIC/Z03BCS_11 = <source_fields>-/BIC/Z03BCS_11        /BIC/Z03BCS_12 = <source_fie

27、lds>-/BIC/Z03BCS_12        /BIC/Z03BCS_13 = <source_fields>-/BIC/Z03BCS_13        /BIC/Z03BCS_78 = <source_fields>-/BIC/Z03BCS_78        /BIC/Z03

28、BCS_80 = <source_fields>-/BIC/Z03BCS_80        /BIC/Z03BCS_81 = <source_fields>-/BIC/Z03BCS_81        /BIC/Z03BCS_82 = <source_fields>-/BIC/Z03BCS_82    

29、;    /BIC/Z03BCS_83 = <source_fields>-/BIC/Z03BCS_83        /BIC/Z03BCS_84 = <source_fields>-/BIC/Z03BCS_84        /BIC/Z03BCS_85 = <source_fields>-/BIC

30、/Z03BCS_85        /BIC/Z03BCS_86 = <source_fields>-/BIC/Z03BCS_86        /BIC/Z03BCS_79 = <source_fields>-/BIC/Z03BCS_79        BCS_DIDIEL 

31、0;   = <source_fields>-BCS_DIDIEL        BCS_PRGRP      = <source_fields>-BCS_PRGRP        /BIC/Z03BCS_17 = <source_fields>-/BIC/Z03BCS_1

32、7        SEM_ACOMP      = <source_fields>-SEM_ACOMP        CS_INVESTO     = <source_fields>-CS_INVESTO       

33、; CS_PLEVEL      = <source_fields>-CS_PLEVEL        BCS_DOCTY      = <source_fields>-BCS_DOCTY        BCS_CTFLG   

34、0;  = <source_fields>-BCS_CTFLG        CS_INVESTE     = <source_fields>-CS_INVESTE        CURKEY_GC      = <source_fields>

35、-CURKEY_GC        CURKEY_LC      = <source_fields>-CURKEY_LC        UNIT           = <source_fields>-UNIT &#

36、160;      CURKEY_TC      = <source_fields>-CURKEY_TC        CS_DIMEN       = <source_fields>-CS_DIMEN       

37、 CS_UNIT        = <source_fields>-CS_UNIT        CS_GROUP       = <source_fields>-CS_GROUP        FISCYEAR  

38、     = <source_fields>-FISCYEAR        FISCVARNT      = <source_fields>-FISCVARNT        FISCPER3       =

39、60;<source_fields>-FISCPER3        into ls_dso.      if sy-subrc eq 0.* 如果数据已存在,则使用系统中数据的ZTMSTAMP作为现有的主键        <source_fields>-/BIC/ZTMSTAMP = ls_d

40、so-/BIC/ZTMSTAMP.      else.* 如果数据不存在,则使用获得的时间戳+INDEX作为主键        MOVE LV_INDEX TO LV_INDEX_STR.        CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'  

41、;        EXPORTING            INPUT  = lv_index_str          IMPORTING           

42、; OUTPUT = lv_index_str.        CONCATENATE lv_stamp1 lv_index_str into        <source_fields>-/BIC/ZTMSTAMP.      endif.     

43、60;modify SOURCE_PACKAGE from <source_fields>.* 归集不同数据包(当有多家公司上载时)      MOVE-CORRESPONDING <source_fields> to ls_id.      collect ls_id into lt_id .    endloo

44、p.    loop at lt_id into ls_id.* 对不同公司分别处理      loop at lt_dso into ls_dso         where FISCPER3 eq ls_id-FISCPER3      

45、;   and   FISCYEAR eq ls_id-FISCYEAR         and   CS_UNIT  eq ls_id-CS_UNIT .        read table SOURCE_PACKAGE with key

46、          CS_VERSION     = ls_dso-CS_VERSION          CS_CHART       = ls_dso-CS_CHART       &#

47、160;  CS_ITEM        = ls_dso-CS_ITEM          COUNTRY        = ls_dso-COUNTRY          MOVE_TYPE

48、60;     = ls_dso-MOVE_TYPE          ACQ_YEAR       = ls_dso-ACQ_YEAR          ACQ_PER       

49、60;= ls_dso-ACQ_PER          BLINE_DATE     = ls_dso-BLINE_DATE          CS_PARTNER     = ls_dso-CS_PARTNER    

50、0;     FUNC_AREA      = ls_dso-FUNC_AREA          /BIC/Z03BCS_01 = ls_dso-/BIC/Z03BCS_01          /BIC/Z03BCS_02 = ls_ds

51、o-/BIC/Z03BCS_02          /BIC/Z03BCS_03 = ls_dso-/BIC/Z03BCS_03          /BIC/Z03BCS_04 = ls_dso-/BIC/Z03BCS_04          /BIC/Z03

52、BCS_05 = ls_dso-/BIC/Z03BCS_05          /BIC/Z03BCS_06 = ls_dso-/BIC/Z03BCS_06          /BIC/Z03BCS_07 = ls_dso-/BIC/Z03BCS_07       &#

53、160;  /BIC/Z03BCS_08 = ls_dso-/BIC/Z03BCS_08          /BIC/Z03BCS_09 = ls_dso-/BIC/Z03BCS_09          /BIC/Z03BCS_14 = ls_dso-/BIC/Z03BCS_14   &#

54、160;      /BIC/Z03BCS_15 = ls_dso-/BIC/Z03BCS_15          /BIC/Z03BCS_16 = ls_dso-/BIC/Z03BCS_16          /BIC/Z03BCS_66 = ls_dso-/BIC/Z03BC

55、S_66          /BIC/Z03BCS_67 = ls_dso-/BIC/Z03BCS_67          /BIC/Z03BCS_68 = ls_dso-/BIC/Z03BCS_68          /BIC/Z03BCS_69 

56、= ls_dso-/BIC/Z03BCS_69          /BIC/Z03BCS_70 = ls_dso-/BIC/Z03BCS_70          /BIC/Z03BCS_72 = ls_dso-/BIC/Z03BCS_72         &#

57、160;/BIC/Z03BCS_71 = ls_dso-/BIC/Z03BCS_71          /BIC/Z03BCS_74 = ls_dso-/BIC/Z03BCS_74          /BIC/Z03BCS_75 = ls_dso-/BIC/Z03BCS_75     &#

58、160;    /BIC/Z03BCS_76 = ls_dso-/BIC/Z03BCS_76          /BIC/Z03BCS_77 = ls_dso-/BIC/Z03BCS_77          /BIC/Z03BCS_10 = ls_dso-/BIC/Z03BCS_10 &#

59、160;        /BIC/Z03BCS_11 = ls_dso-/BIC/Z03BCS_11          /BIC/Z03BCS_12 = ls_dso-/BIC/Z03BCS_12          /BIC/Z03BCS_13 = ls_ds

60、o-/BIC/Z03BCS_13          /BIC/Z03BCS_78 = ls_dso-/BIC/Z03BCS_78          /BIC/Z03BCS_80 = ls_dso-/BIC/Z03BCS_80          /BIC/Z03

61、BCS_81 = ls_dso-/BIC/Z03BCS_81          /BIC/Z03BCS_82 = ls_dso-/BIC/Z03BCS_82          /BIC/Z03BCS_83 = ls_dso-/BIC/Z03BCS_83       &#

62、160;  /BIC/Z03BCS_84 = ls_dso-/BIC/Z03BCS_84          /BIC/Z03BCS_85 = ls_dso-/BIC/Z03BCS_85          /BIC/Z03BCS_86 = ls_dso-/BIC/Z03BCS_86   &#

63、160;      /BIC/Z03BCS_79 = ls_dso-/BIC/Z03BCS_79          BCS_DIDIEL     = ls_dso-BCS_DIDIEL          BCS_PRGRP   &

64、#160;  = ls_dso-BCS_PRGRP          /BIC/Z03BCS_17 = ls_dso-/BIC/Z03BCS_17          SEM_ACOMP      = ls_dso-SEM_ACOMP    

65、      CS_INVESTO     = ls_dso-CS_INVESTO          CS_PLEVEL      = ls_dso-CS_PLEVEL          BCS_DOCTY

66、60;     = ls_dso-BCS_DOCTY          BCS_CTFLG      = ls_dso-BCS_CTFLG          CS_INVESTE     = ls_dso-CS

67、_INVESTE          CURKEY_GC      = ls_dso-CURKEY_GC          CURKEY_LC      = ls_dso-CURKEY_LC          UNIT           = ls_dso-UNIT  &

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论