1.IDoc简介
IDoc:是基于文档,用作异步传输数据的载体,类似于XML;使用功能场景:假设 1040 和 1020 是同一个集团下两个不同子公司的 SAP 系统,1040 需要将其采购订单信息及时发送给 1020,可以使用IDoc传输。
-
IDOC 的整个配置,涉及了远程连接、ALE、消息控制、tRFC 等技术的集成
-
IDoc支持异步、同步、可以收集一定数量的包后发送,最重要的是,IDOC有完整的监控系统和错误处理机制。
-
IDoc支持SAP系统集团之间,SAP-CRM/SRM/PI等之间,SAP-第三方系统之间的集成
-
通过系统预定义IDOC类型,可以自动收集IDoc,挂JOB定时发送,也可以配置消息控制。
数据段是IDoc结构组件,是IDoc构成的单元;有Segment type:数据段类型与Segment.definition:数据段定义
- :Segment type名称与SAP版本无关,以"E1/Z1"开头
- :Segment definition名称与SAP版本有关,外部系统确定数据段版本的关键;以"E2/Z2"开头+版本号 访问IDoc中具体某个字段时,需要通过Segment type。
- IDoc包含多个Segment,每个Segment内包含有多个字段
- Segment类似于XML的节点以及节点属性
IDoc特性:
- IDoc 包含有三种类型的记录:一条控制记录,一个或多个数据记录,一个或多个状态记录
- IDoc type:IDoc 结构,不同的 SAP 业务对象对应不同的 IDoc 类型(一个或多个)。
- IDoc 类型中定义了数据段(Segment)以及数据段的层级和次序。定义节点间的相互逻辑关系。
- 标准 SAP 系统提供的 IDoc 类型称为基本类型(Basic type),该类型可以通过 IDoc 扩展(Extention)进行调整,即在 SAP IDoc 类型结构的基础上增加新的数据段或者在数据段中增加新字段。
- IDoc Basic Type: 是承载数据的一个类型,可以认为是一个数据结构。Basic Type 由 Segment 构成,有点类似于 XML 的格式。每个 Segment 指定了一些字段,在这些字段里面可以输入一些限定的数据。
2.包含组件
-
ALE(Application Link and Enabling)是 SAP 专门为 SAP 与 SAP 之间所设计的整合中间件,多用于同一个企业中不同 SAP 系统之间的数据交换,通过 IDoc 格式的数据创建分布式系统 。分布式数据交换提供了可靠安全的通讯机制。
-
EDI(Electronic Document Interchange,电子数据交换)其实就是采用标准格式的电子数据,用于在通讯网络中在业务伙伴间交换业务文档所用。按相同的排列放置数据到一个数据文档中,并按相同的排列解析此文档以得到所需的内容。
-
IDoc(Intermediate Document,中转文档)是 SAP 提供的系统整合专用的数据 / 消息格式,它通过 ALE 方式来进行交换,IDoc 提供了 EDI 的支持,可以认为 IDoc 是 EDI 的一个实现。
3.IDoc发送接收流程
外发过程(Outbound Process : OP):处理数据集并发出消息
- 应用文档被创建
- IDoc 生成
- IDoc 从 SAP 传送到操作系统
- IDoc 被转换成 EDI 标准格式
- EDI 文件被传送到业务伙伴处(所以业务伙伴可以没有 SAP,因为 EDI 是个标准)
- EDI 子系统将传送的状态回报给 SAP
接收过程(Inbound Process : IP):接收消息并处理
- EDI 文档被接收
- EDI 文档被转换成 IDoc
- IDoc 传送到 SAP 层
- 应用文档在 SAP 中创建
- 应用文档现在可供浏览了
4.IDoc 流程步骤及 TCode
| 外发配置(OP) | 描述 | 接收配置(IP) | 描述 |
|---|---|---|---|
| WE31 | 创建IDOC所需要的字段 | WE31 | 开发Segment Type |
| WE30 | 开发IDOC基本类型和扩展,把Segment分配给IDOC | WE81 | 开发Message Type |
| WE81 | 开发Message Type | WE82 | Message Type和IDoc Type绑定 |
| WE82 | Message Type和IDoc Type绑定 | BD64 | 增加消息类型 |
| BD64 | 添加视图模型,添加消息类型配置伙伴参数 | WE20 | 配置接收系统入站信息 |
| WE20 | 配置发送系统出站信息 | SE37 | 编写接收接口 |
| SE38 | 编写发送程序 | WE57 | 分配IDOC类型给处理函数 |
| WE14 | 若为黄灯,手动发送 | ||
| BD51 | 配置进站函数模块属性 | ||
| WE42 | 配置进站处理代码 | ||
| WE02 | IDOC发送信息检查 |
5.Process Code处理代码设定
- WE41、WE42、WE40、WE64
- 处理代码用于确定数据写入 IDoc 或从 IDoc 读取的处理方式,处理代码对应具体的功能模块或者工作流。入站和出站处理的伙伴参数中都可以指定处理代码
- Outbound Process Code: 出站的处理代码。其实就是具体的一个操作流程。在得到了 Output Type,确定了 IDoc Basic Type 以后,需要从 Output Type 提供的所有数据里面,按 IDoc Basic Type 组合出 IDoc 来,即给 IDoc Basic Type 赋值。
- Inbound Process Code: 进站的处理代码。就是接收到一个 IDoc 以后,根据 Message Type 来确定要怎么处理这个 IDoc。
- 程序的思路就是,把每个 IDOC 结点按字符串形式逐个添加,而字符串的添加次序自然也体现了 IDOC 结点间的逻辑关系。
6.端口(Port):WE21
- 端口用于外发流程,它判断 EDI 子系统程序名称、IDoc 文件传送到操作系统的目录,IDoc 文件名和 RFC 目的地
- 端口,指定这个 IDoc 的接收方,可以是任何其他系统,也可以发到当前的 SAP 当前的 Client。
7.RFC目的地:SM59
- 用于定义到远程系统通讯连接的特性以及需要调用何种功能
8.Partnr Profile:WE20
-
Partnr:对口的合作伙伴
-
Partner Profile:是Partner的一些参数,分为OP和IP.它们是为了让系统知道怎么去处理 Outbound/Inbound 的事件.
-
Partner Profile 指定在外发过程中所用的各类组件(业务伙伴号、IDoc 类型、信息类型、端口、处理码等),通讯方式(异步或同步)以及当错误时通知何人
9.Message Type
-
用于消息类型的处理,就是告诉 Inbound 一方,我这个 IDoc 是用来做什么的。
-
WE81, 创建Message type
-
WE82,连接 Message type和 IDOC type
10.IDoc类型定义的相关函数
函数组 EDIM 中的 SAP 内部功能模块用于操作 IDoc 基本类型和扩展:OBJECT代指所操作的队象,既IDOCTYPE或EXTTYPE.
- [OBJECT]_CREATE
- [OBJECT]_UPDATE
- [OBJECT]_READ
- [OBJECT]_DELETE
- [OBJECT]_CLOSE
- [OBJECT]_UNCLOSE
- [OBJECT]_EXISTENCE_CHECK
- [OBJECT]_INTEGRITY_CHECK
- [OBJECT]_TRANSPORT
函数组EDIJ中的SAP内部功能模块用于操作IDoc数据段
- SEGMENT_CREATE
- SEGMENT_MODIFY
- SEGMENT_DELETE
- SEGMENT_INITION_DELETE
11.IDoc常用事物码
SAP 提供了一个事务码列出的基本上所有的 IDoc 相关的事务码WEDI 。
| /BD87 | /WE18 | /SUIM |
|---|---|---|
| /SM58 | /WE19 | /GS03 |
| /WE09 | /WE20 | /BDLS |