• ERP 数据抽取-简介


    1. 准备工作

    1.1 RFC连接 SM59

    一般公司需要SD:卖东西 MM:买东西 FI:财务记账
    在SAP里面会分四大组:

    1. LO logistics 后勤,不是物流
    2. FI Finance/Accounting
    3. HR/HCM Human Resourses Human Capital Management
    4. IS Industry Sector
      在这里插入图片描述
      就说这些ERP模块的数据,我们要给抽到BW上面来,首先得是要弄个RFC连接。这个是Basis弄。

    1.2 包、开发类 SE21、SE80

    改了后,要保存的时候总会问你要包,这个包用来在不同系统间传输。
    SE21 Z打头建一个。
    在这里插入图片描述
    建完了之后后期改的东西都放在这个包里,SE80能看到。
    在这里插入图片描述
    一般情况下运维的都有包了,这个包就像一个文件夹,你建在这个包里的所有东西,都能在SE80里面看到。
    在这里插入图片描述

    1.3 查看ERP系统的数据库/主数据交易数据表 SE11/SE13

    在这里插入图片描述
    在这里插入图片描述
    ERP数据有主数据和交易数据,SAP提供了一些预定义的表,你的交易会自动保存到预定义表里。有时候我们得自己建主数据表和交易数据表。为啥呢?因为现有表不满足需求。。。
    在这里插入图片描述
    建表要注意选择是主数据表还是交易数据表。
    在这里插入图片描述
    SE13直接去看预定义表技术设置是主数据还是交易数据。
    在这里插入图片描述
    一般建表都是basis去做,当然BW有时候也需要自己去建表的。

    2. 一般数据源

    2.1 数据抽取 SBIW RSO2 RSA6 RSA5 RSA3 RSDS SE11 SE16

    一般数据源就是咱自己去建的。
    分为5个步骤
    在ERP里:1. 提取结构
    2.提取器
    SAPI 负责转运数据 3.复制数据源
    在BW里: 4.转换:传输规则
    5.DTP
    SBIW里面是一般数据源的所有操作。
    在这里插入图片描述
    这里在ERP里建一个数据源,如果是基于表。那就类似于在BW里面建一个数据源,基于file。其实是一个意思。
    RSO2去建一般数据源。
    在这里插入图片描述
    数据源里可以隐藏字段,可以选择一些用来过滤的字段。
    在这里插入图片描述
    建完了去RSA6去看看,是不是保存好了。现在ODQ有些会自动释放,有些需要手动释放。
    接下来去RSA3去检查是不是能拿出数据到数据源去。

    接下来去BW去复制数据源了。找到源系统,右键复制数据源。然后建一个target,中间通过转换和DTP把数据拉过来。
    RSDS现在还能用来复制。但是这个要再激活一下,现在直接可以在BWMT里面直接复制加激活。
    在这里插入图片描述

    在ERP里的提取结构,如果直接从表或者视图抽取,会生成一个传输结构。在SE11里面能看到。也就是你最后选择了的那些字段的结构。结构以/BIC/开头。以数据源名字结尾。
    在BW里面有一个表,叫RSFWNFIELD
    在这里插入图片描述
    这个表里会有数据源字段对应的匹配信息对象。
    在这里插入图片描述在这里插入图片描述
    同时RSDIOBJ这个表也能看见字段对应的信息对象。
    在这里插入图片描述

    2.2 数据抽取的方式 table/view/query/FM/domain

    table和view都很简单。
    domain就是建文本数据源的时候,可以把domain的值抽取过来。
    在这里插入图片描述
    query,这个就是infoset。那么问题就来了,view和infoset有啥区别?
    区别是,view它其实只是个inner join,infoset是可以有left outer join等其他复杂的定义。

    那么首先就得建一个infoset。SQ02去建infoset。 easy,就是一些拖拖拽拽,默认inner join,可以改成left outer join。
    在这里插入图片描述
    最后就是用function module, 写代码来select数据。也就是这个数据表里的数据,得用逻辑处理一下,再抽取到BW去。
    好歹得有个case的判断,或者if的判断。

    这个就是跟前几个不同了,一般我们用table,用view的话,只要填写了table名,view名,domain名字,还有infoset的名字,那么系统会自己给我们创建一个extract structure。然后我们去选需要传输的字段,系统会再建一个传输结构。这个以/BIC/开头,数据源名字结尾的结构。

    到FM这就不同了,你得自己个去建这个extract structure。然后再建一个FM,最后把数据给用FM基于extract structure抽取数据到数据源。

    整个流程:

    1. SE11 提取结构 (创建data type: structure)
    2. SE37 创建FM
    3. RSO2 创建数据源 (基于FM和extract structure)
      在这里插入图片描述
      对于FM来说,所有的FM得放在function group下面。
      这个就是类似于infoobject了,你得把个infoobject放在infoarea下面。其实就是个folder分组来的。

    这个一般咱们都是不自己从头建的。就是直接copy一个SAP已经有的模板,然后修改。
    在这SAP就提供了个function group: RSAX
    在这里插入图片描述
    我们就去copy它这个function group建一个新的,然后去copy它底下的function module去建一个新的。
    在这里插入图片描述
    se37去建一个新的function group。或者直接SE80去copy一个。
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    2.3 一般数据源的增量机制 Numeric pointer/calendar day/time stamp

    一般我们建数据源,弄了上面的几种方式,简单的来讲都是搞全量。但是如果你要弄成增量的,也是可以的。
    增量机制我们自己设,一共给了三个选项:1. 时间戳 2. 日历日 3. 编号
    选的这些要对应到数据源里面的Field NM, 得数据源里面有相应的字段,你才能根据这个字段来搞增量。
    在这里插入图片描述
    一般BW那边一开始都是做个initial delta,这个就是先做一个full load, 然后把下次做delta。但是系统做完了这个initial之后,就同步会在一个表里存一个delta status。以便于下次delta的时候先检查之前抽到哪里了。 这个表就是:ROOSGENDLM
    在这里插入图片描述

    比如说你这个是按编号来的,第一次做initial抽了1-89号,那么delta status会给你记录编号字段,89.
    之后的delta抽取,就会先去检查你的delta status的编号,从89后面的那个直接抽了。等这个delta抽取完,再设置一个新的delta status。
    对于数据源那边可以按个啥编号来递增的,就可以选numeric pointer. 但是这种情况就是,不会对之前的编号做修改的。只针对特定没有修改的,只有新增的情况。
    对于数值来说,选择new status for changed records就是只会去拿最新的数值。原先10,现在变成20,那就会只取20.
    如果选addictive delta,那它就会取个增加的值10.
    在这里插入图片描述
    由于这个编号限制的有点多。所以还有CALDAY的选项。
    也就是数据源里有这个日期的。
    这个会涉及到安全区间上限和安全区间下限。
    比如说第一次initial把所有更新日期是8月31号之前的数据都抽取了一遍。
    那么delta status会记成8月31号。

    那么一般我们一天delta一次。假设我今天晚上9点抽取完了所有数据。但是接下来在晚上也会去新增或修改一些数据。
    那么数据源里就可能会有日期是8月31号的但是被修改了的数据。或者是被新增了的数据。
    这段时间的数据我下次抽取的时候也要拿过来。
    如果此时再去执行一遍delta,那么这个8月31号的日期的记录就不会被取过来。因为delta status里面记了8月31号。它是个日期,不会精确到时间点的。它下次只会去找创建日期大于8月31号的,也就是9月1号后的数据。
    为了解决这个,就得去设安全下限,和安全上限。我可以把安全下限设置成1天。就会去把上次delta status之前一天的数据都拿过来。这样就囊括了所有可能丢失的数据。不管你啥时候跑delta,只要是一天跑一次,数据就丢不了。

    但是这个日期最好是系统记录的更新日期。这也是个限制。

    最后就是一个timestamp。
    timestamp也是有点像CALDAY的,只不过是精确到时间了。那么比如10点去抽一次delta。那么有可能是有个订单9点59开始建,到10点02才保存。10点去抽的时候,并不能抽到这一条。因为它还没保存,但是下次的10点再去抽,已经保存好了的话,可是它的时间会记录成9点59. 我下次抽的时间戳就会是上次的10点后建的。那这条就抽不到了。
    于是还得去设置安全下限,这种一般设置个1小时,2小时的。

    但是无论怎样,得是数据源里有这三种字段才可以设置增量。而且都还有丢失数据的风险。实在丢了,就只能用full来抽取一下了。

    3. 标准数据源

    在RSA5里面看到所有预定义的数据源。
    使用前得先激活。
    在这里插入图片描述
    激活后会在RSA6看到。要是在RSA5里面,在版本比较那里也能看到是不是激活状态。

    3.1 LO数据源

    在这里插入图片描述
    LO数据源的抽取需要首先填充setup表,要先告知业务用户不要搞了,然后让basis锁住用户权限(一般都是在非工作时间,下班后啥的)然后咱去SBIW去手动填充。
    要是人家先填充完了,就去LBWG或者SE14给删掉再重新填充。
    在这里插入图片描述

    3.2 CO-PA数据源

    这个是自己去生成数据源。COPA的数据都是从各个模块填充过来的。

    4. BI Content

    在BI content下面,也就是RSORBCT下。
    BI Content下面都是delivery版本的SAP给你预定义好的对象。所有对象一开始都是D版本。
    用之前得install。

    install并且激活了之后,就能在metadata repository里面看到激活版本。
    在这里插入图片描述

  • 相关阅读:
    【安卓学习之常见问题】jar文件中Class转java文件不准(不同软件打开的class文件不一样)
    PHP+Nginx配置备忘
    vulnhub靶场之DIGITALWORLD.LOCAL: FALL
    鸡卵清白蛋白偶联维生素A(VA-OVA),Vitamin A-Ovalbumin Conjugate
    1、强化学习基础知识点
    【代码随想录】刷题笔记Day33
    Design Compiler工具学习笔记(1)
    【云原生 | 从零开始学Kubernetes】二、使用kubeadm搭建K8S集群
    广州穗雅医院健康汇:为什么口腔溃疡会反反复复?
    Blazor前后端框架Known-V1.2.4
  • 原文地址:https://blog.csdn.net/weixin_45689053/article/details/126585425