SAP IDOC测试
SAP EDI IDoc+workflow实例
IDOC and Workflow 实例一、业务场景(Business Scenario):公司的采购部门在SAP系统创建了一份询价单(RFQ),通过EDI消息实时发送给了供应商Vendor;供应商的销售部门会得到工作流workflow通知,从而及时处理接收到的客户询价。
Own company –RFQ(EDI) ---- > Vendor (Sales)---- > received the notice of workflow Create a RFQ in own SAP system ----EDI----> Vendor (Sales dept) ----> received the notice of workflow in Vendor side二、技术分析:SAP标准为MM和SD的单据预定义了基于Message的EDI处理方式。
IDoc是EDI的一种具体实现,基于ALE架构传递,我们可以用来处理SAP系统之间的数据交互,从而实现我们的业务需求。
(ALE ---- > EDI ----- > IDOC)ALE is working between different R/3 systems . And EDI is working between non-SAP and SAP system .三、实现步骤:在本公司的SAP系统(记为系统A)创建物料(1-01-01)和供应商(11001)主数据:TCODE: MM01保存,物料创建OK。
TCODE:MK01保存,供应商创建OK。
TCODE:ME41(create RFQ)Header=>vendor address工具栏=>overview, 返回后点选工具栏的messages到达这一步后,需要创建一个EDI类型的Medium,partner function为LS(逻辑系统),partner为11001(对应供应商)的输出类型(先保存次RFQ,编号为6000000019,登配置好了,再通过ME42修改次RFQ的输出类型)。
ECC系统发送供应商主数据(IDoc)到SAP PI系统的配置步骤
业务场景将SAP ECC中的供应商主数据以IDoc形式通过SAP PI同步到费用管理系统中,实现供应商主数据的自动分发和同步。
SAP ECC系统配置创建逻辑系统 BD54TCODE BD54逻辑系统是用来接收IDoc的目标系统。
在此场景中,供应商主数据需要发送到费用管理系统中。
只有先定义逻辑系统,在WE20中才能创建针对该逻辑系统的伙伴参数文件。
点击”新条目”输入逻辑系统标识和名称逻辑系统LTD_ZJ_FY 自定义外围系统的标识名称费用管理系统外围系统描述创建ECC 系统到PI系统的系统连接SM59用途:此链接用于TCODE:WE21中创建IDoc端口使用的RFC连接。
项目值说明RFC Destination D31CLNT100 自定义名称Connection Type 3 R3连接Target Host xidev01 此项为PI系统的主机名或IP地址。
Service No. 50000 服务端口配置登录信息:项目值说明language EN 登录使用的语言client 100 PI系统Client编号User PIAPPLUSER PI系统用户执行连接测试: 点击连接测试成功。
创建IDOC处理端口 WE21用途:该端口用于在WE20中,为IDoc类型指定的端口展开端口。
鼠标选中”事务性RFC”,点击”创建”选择”自己的端口名称”,然后指定端口名称。
端口类型自己的端口名称名称D31CLNT100 自定义RFC目标D31CLNT100 SM59中创建的RFC连接在RFC目标中,输入在SM59中创建的RFC连接。
创建合作伙伴参数文件 WE20TCODE: WE20对应表系统表 EDP13创建合作伙伴鼠标选中伙伴参数文件 -> 伙伴类型LS(逻辑系统),点击快捷方式栏中的Create(创建)。
输入合作伙伴编号,伙伴类型等信息合作伙伴编号 LTD_ZJ_FY 使用TCODE:BD54中创建的逻辑系统伙伴类型LS 逻辑系统(一般IDoc接口此处都选择逻辑系统)代理类型US 用户代理CHICHU SAP登录账号语言ZH 登录语言完成后点击回车配置出站参数点击出战参数部分的”创建出战参数”按钮输入消息类型,接收端口以及IDoc类型等信息消息类型CREMAS IDoc对应的消息类型接收方端口D31CLNT100 SM59中创建的RFC连接基本类型CREMAS05 IDoc类型输出模式立即转换IDoc产生后立即发送维护分配模型 BD64TCODE BD64点击”创建模型视图”输入模型描述,技术名称短文本费用管理系统模型文本描述技术名称模型的ID 自定义模型ID创建完成创建“集团公司代码Cross company’ code” SALE TCODE : SALE,配置路径创建跨系统公司代码选择跨系统公司代码创建集团公司代码,可以和公司代码相同全球公司代码2002分配集团公司代码到会计科目表分配公司代码到跨系统公司代码找到SAP公司代码,分配对应的集团公司代码SAP PI系统配置SAP PI到ECC系统的RFC连接 SM59用途:此链接用于TCODE:IDX1中创建PORT端口使用的RFC连接。
sap信息记录IDoc发送
1.Bd50激活修改指针2.在SALE里增加发送方和接收方的逻辑系统,如果有就不需要添加3.WE21 创建端口4.维护分配模型BD64将配置同步到集团服务器5.WE20合作伙伴参数文件,添加出站参数里的消息类型这里面基本类型选哪个?6.集团服务器,检查BD64里面消息类型是否同步,并生成伙伴参数文件7.WE20维护进站参数8.初步测试,不通过作业,手工发送信息记录到集团服务器在控股服务器上建立信息记录ME18发送信息记录WE02查看,已成功发送在集团服务器,WE02查看发现有错误51应该是WE20里面入站参数有问题查出原因是基本类型不对,控股服务器里之前配置了2个出站参数,一个基本类型是INFRECMASS01,另一个是INFREC01,删掉一个重新发送后就好了。
INFRECMASS01在WE57里面,根据消息类型,只找到一个:9.SE38创建变式,SM36创建作业10.测试采购信息记录5300072893 MYJT 建立,控股系统在集团服务器上找到信息记录,但是没有条件。
查了资料,Conditions for info records must be transferred separately using the standard conditions distribution (message COND_A).11.BD64增加消息类型COND_A,生成伙伴参数文件,并传送到集团服务器怎么有4个,选哪个呢?怎么信息记录的基本类型变了?又建了个信息记录5300072894,看会不会有问题,发现没有问题。
12.集团服务器,WE20维护入站参数13.集团服务器,BD64生成伙伴参数文件14.发送条件的IDOC,发现没有,只能从那个程序rbdmidoc来发送了根据ME18在菜单栏搜出来的SE38执行程序后原因是更改指针没有激活控股服务器已成功发送。
集团服务器接收成功。
集团服务器上的条件更新成功。
最后再定义个作业即可。
IDOC配置步骤
IDOC配置步骤IDOC(Intermediate Document)是SAP系统中的数据交换格式,用于在不同的应用系统之间传输数据。
IDOC配置步骤如下:1. 创建传输端口(Partner Profile):首先,在SAP系统的事务码WE.20中创建一个传输端口,用于定义与外部应用系统之间的通信。
在创建传输端口时,需要指定端口名称、通信方式(如RFC或文件传输)、目标系统等信息。
2. 创建基本类型(Basic Type):基本类型定义了IDOC中要传输的数据的结构和字段。
使用事务码WE.31创建一个基本类型,并根据需要定义必要的字段和结构。
例如,可以创建一个基本类型用于传输销售订单数据。
3. 创建消息类型(Message Type):消息类型是将基本类型与具体业务过程相结合的概念。
使用事务码WE.81定义一个消息类型,并选择一个已经存在的基本类型。
例如,可以创建一个消息类型用于传输销售订单数据。
4. 创建发送基本类型和消息类型的关系(Outbound Process Code):在事务码WE.57中定义一个发送基本类型和消息类型的关系。
在这一步中,需要指定一个处理代码(Process Code),用于在发送IDOC时触发特定的逻辑操作。
5. 创建接收基本类型和消息类型的关系(Inbound Process Code):在事务码WE.57中定义一个接收基本类型和消息类型的关系。
在这一步中,需要指定一个处理代码,用于在接收IDOC时触发特定的逻辑操作。
6. 配置逻辑接口(Logical System):在事务码WE.20中,配置逻辑系统用于定义源系统和目标系统之间的逻辑连接。
在这一步中,需要定义源系统的业务伙伴号码(Business Partner Number),目标系统的逻辑系统名称等信息。
7. 配置端口(Port):在事务码WE.21中,配置端口用于定义数据交换的技术连接。
在这一步中,需要指定传输方法(如RFC、文件传输等)、端口号、通信目标等信息。
IDOC讲议
状态记录(Status Record) 状态记录
IDoc概述 概述
控制记录(Control 控制记录 Record)
每个IDoc的Control Record可以认为是 文件头,它包含发送及接收端, IDoc ID, 发送日期等信息,当Idoc被触发时,SAP 会首先检查这些信息是否正确.
IDoc概述 概述
数据记录(Data Record) 数据记录 多个数据段(Segment)组成的一个层 次结构,装载传输的数据,每个数据段 不能超过1000个字符
当发送或接收这些IDoc时,数 据将会被解析到这些特定层 级关系的数据段中,SAP将会 将中FM的逻辑中对此数据加 以操作.
IDoc概述 概述
状态记录(Status Record) 状态记录 用来记录IDOC从发送方到接受 方的历史状态信息.
T-CODE:WE81 定义消息类型
T-CODE:WE82 IDoc 类型分配给消息类型,Release代表不同的版本
IDoc概述 概述
IDoc示例 示例
演示2个示例帮助理解 具体工作模式和设计: 演示2个示例帮助理解IDoc具体工作模式和设计 具体工作模式和设计 1,配置一个跨 配置一个跨Client传输主数据的示例 传输主数据的示例. 配置一个跨 传输主数据的示例 通常在实际应用中,为了简化系统过多的人为操作或更好的实现自动化,有时我们 需要在同一集团内跨公司交易时传输相关的数据, 例如: 1).SAP系统中同一集团A和B两个公司,A向B开PO传出IDoc自动创建B公司的SO. 2).在主数据中,可以方便的通过Idoc传输物料主档/BOM/Work Center/Routing/Vendor/Customer等资料. 3).SAP也可轻易地做到跨Client交换数据.
SAP IDoc开发配置1.0
IDoc开发使用笔记IDoc的理论这里就不说了,网上都有,反正我们知道IDoc是用来与在系统之间进行数据传输的工具即可。
双方既可以都是SAP也可以有一方不是SAP,都不是的就不用考虑了吧☺。
这里主要是接收IDoc,发送IDoc且见下回分解。
其中有很多细节依然不明白,没有资料,只能在以后工作中逐渐增加了,但现阶段不影响基础配置。
●我理解的IDoc数据传输过程:(不是标准,权作理解便利而已)可以把IDoc理解成一个邮政系统,我们把要发送的数据按该系统要求的方式打包,交给该系统,该系统以自有的方式传送到目的地,(怎么传送的,我们可以不考虑),等到数据到达目的地后,按照事先安排的流程处理数据,该流程是与系统约好的,也就是说,数据到了后,该系统会主动出发该流程,流程里怎么处理是用户事先自定义的。
当然,要知道,邮政系统里存储的不是一个用户的数据,如何区分那个用户和用户发送的数据,就是IDoc里的信息类型,基本类型的功能了。
●下面开始配置网络连接第一步:配置逻辑系统第二步:配置RFC目标T-code:SM59双击其中某一行,可以查看(若需要新建则点击新建按钮)保存之后进行测试还需要设置登录:第三步:配置端口T-code:SM21可以自己命名端口,也可以系统自动给定其中“RFC目标”填入的是sm59种定义的RFC Connection(连接),即RFC目标。
IDoc的配置过程IDoc的事务码比较多,不常用的话记不住,但SAP提供了一个事务码列出的基本上所有的IDoc相关第一步,创建IDoc所包含的字段(传输数据的数据格式):即定义segmentT-code:WE31输入自定义的段类型名称(接收时,注意段类型名要与对方发送的段类型名相同)点击创建(新建)或修改第二步:创建IDoc基本类型(Idoc type,也称为“开发对象”)T-code:WE30输入自定义的开发对象名称(接收时,注意该名称也要与对方发送的开发对象名相同)这里的内容(例如zpoppjg_yj)是在上面第一步中定义的segment 这里实际上是把segment分配给了开发对象。
SAP-公司间开票Idoc配置项
Idoc实战-公司间开票业务公司间开发票,在调拨业务已经统销业务中最常用的就是一方开发票,另外一方自动收发票进行发票的校验工作;自动产生凭证业务会越来越多的应用到各个业务场景中,Idoc的基本业务介绍网上好多资料,在此就不足一详细介绍了,下面结合配置来介绍下Idoc业务配置分为的四大部分分别为1.Message type配置;2.Idoc配置;3.公司间发票配置;4.FI入账配置;1.Message type配置这是个典型的条件技术的应用;在sap中这种应用非常多,也算是sap的一大特色,首先根据凭证类型来确定输出的过程,过程中有许多输出类型,比如我们用的rd04输出类型,同理输出过程中包括requer和vv31的条件类型限制,必须同时满足这两个才能在输出的时候自动选择输出;如下图;这个表示合作伙伴类型的输出配置,在输出的配置过程中合伙人类型也就是输出的合作伙伴类型这个很重要;就是系统会把生产的idoc文件输出给合伙人中的那种类型,是收票方,还是收货方,还是xx;等;用vv31Tcode可以根据条件技术来维护输出的合伙人的数据,但是如何不维护,则系统会自动从主数据中获取;也就是优先条件,如果条件技术中没有则从主数据中合伙人类型的数据获取;前台用vv31来维护条件表里面的数据;总结:维护好这些后,则系统会自动调用消息类型中的程序,来触发ied的出站程序,生产idco文件;2.IDoc配置Idoc的配置在前台,是sap标准的功能;操作步骤是首先要创建一个RFC的连接,然后在创建一个端口号,给端口号分配一个RFC的连接,;一个连接可以有多个端口号,后台维护逻辑系统维护和添加逻辑系统如下图,1)这个客户表示收票方,也就是咱们在配置消息类型输出的时候合作伙伴的类型的一个具体客户编码,这个是站在发货工厂的角度去看的,也就是IED输出的BP合作伙伴的编号;如果站在收票方的角度,要根据这个收票方找到具体记账的公司代码才行,也就是一定会有一个对照关系转换表;同理,收票方要根据发票的出具方找到供应商编码才行,也就是开票方才行,这样的对照关系一定有,并且在产生的idoc文件里面有字段来标记;收票方会自动从idoc文件的相关字段里面获取;2)消息类型和消息代码:这个可以自己开发,sap有标准的,标准一个idoc文件的具体行为,比如IOVOIC表示SD开票行为,生成Idoc文件,3)这个就是我们建立的端口号,idoc文件中存在此处的端口号;4)Idoc基本类型,这个也可以自己建立,sap本身也有建立好的;5)这个RD04就是我们建立的输出类型,处理代码就是生产Idoc的代码;RD04对应的消息类型INVOIC(FI);RD05对应的消息类型是INVOIC(MM)消息代码:,如果几个IDoc 类型有相同的消息类型,可以通过消息代码维护唯一的分配。
ECC系统发送供应商主数据(IDoc)到SAP PI系统的配置步骤
业务场景将SAP ECC中的供应商主数据以IDoc形式通过SAP PI同步到费用管理系统中,实现供应商主数据的自动分发和同步。
SAP ECC系统配置创建逻辑系统 BD54TCODE BD54逻辑系统是用来接收IDoc的目标系统。
在此场景中,供应商主数据需要发送到费用管理系统中。
只有先定义逻辑系统,在WE20中才能创建针对该逻辑系统的伙伴参数文件。
点击”新条目”输入逻辑系统标识和名称逻辑系统LTD_ZJ_FY 自定义外围系统的标识名称费用管理系统外围系统描述创建ECC 系统到PI系统的系统连接SM59用途:此链接用于TCODE:WE21中创建IDoc端口使用的RFC连接。
项目值说明RFC Destination D31CLNT100 自定义名称Connection Type 3 R3连接Target Host xidev01 此项为PI系统的主机名或IP地址。
Service No. 50000 服务端口配置登录信息:项目值说明language EN 登录使用的语言client 100 PI系统Client编号User PIAPPLUSER PI系统用户执行连接测试: 点击连接测试成功。
创建IDOC处理端口 WE21用途:该端口用于在WE20中,为IDoc类型指定的端口展开端口。
鼠标选中”事务性RFC”,点击”创建”选择”自己的端口名称”,然后指定端口名称。
端口类型自己的端口名称名称D31CLNT100 自定义RFC目标D31CLNT100 SM59中创建的RFC连接在RFC目标中,输入在SM59中创建的RFC连接。
创建合作伙伴参数文件 WE20TCODE: WE20对应表系统表 EDP13创建合作伙伴鼠标选中伙伴参数文件 -> 伙伴类型LS(逻辑系统),点击快捷方式栏中的Create(创建)。
输入合作伙伴编号,伙伴类型等信息合作伙伴编号 LTD_ZJ_FY 使用TCODE:BD54中创建的逻辑系统伙伴类型LS 逻辑系统(一般IDoc接口此处都选择逻辑系统)代理类型US 用户代理CHICHU SAP登录账号语言ZH 登录语言完成后点击回车配置出站参数点击出战参数部分的”创建出战参数”按钮输入消息类型,接收端口以及IDoc类型等信息消息类型CREMAS IDoc对应的消息类型接收方端口D31CLNT100 SM59中创建的RFC连接基本类型CREMAS05 IDoc类型输出模式立即转换IDoc产生后立即发送维护分配模型 BD64TCODE BD64点击”创建模型视图”输入模型描述,技术名称短文本费用管理系统模型文本描述技术名称模型的ID 自定义模型ID创建完成创建“集团公司代码Cross company’ code” SALE TCODE : SALE,配置路径创建跨系统公司代码选择跨系统公司代码创建集团公司代码,可以和公司代码相同全球公司代码2002分配集团公司代码到会计科目表分配公司代码到跨系统公司代码找到SAP公司代码,分配对应的集团公司代码SAP PI系统配置SAP PI到ECC系统的RFC连接 SM59用途:此链接用于TCODE:IDX1中创建PORT端口使用的RFC连接。
SAP_SD培训测试脚本
步骤说明
操作事务
数据
结果
1
包装
拣配,发货过账
VL02N
交货单号:
(如存在批次,则需要将批次号找出)
第六课
出具发票
序号
步骤说明
操作事务
数据
结果
1
单独出具发票
VF01
交货单号:
发票凭证:
2
集中出具发票
VF04
3
查看发票凭证及会计凭证
VF03
发票凭证:
信贷管理
序号
步骤说明
操作事务
数据
结果
1
创建信贷主数据
FBL5N
FD10N
客户编号:
公司代码:
第七课创建退货订单
序号
步骤说明
操作事务
数据
结果
1
创建退货订单
(带参考创建)
VA01
销售组织:1100
分销渠道:10
产品组:11
退货订单编号:
2
审批退货订单
VA14L/VA02
订单编号:
3
查看退货订单
VA03
订单编号:
4
创建交货单
VL01N
退货订单编号:
退货收货单号
MLCC SAP SD模块培训DEMO步骤
第一课客户主数据:
序号
步骤说明
操作事务
数据
结果
1
显示客户
XD03
客户编号:
公司代码:1002
销售组织:1100
分销渠道:10
产品组:11
客户编号:
2
创建客户
XD01
账户组:DEBI / EY01
公司代码:1002
SAP IDoc配置的相关事务码
IDoc(Intermediate Document)IDoc的两个特征1、面向消息(message-oriented)2、异步(asynchronous)IDOC的两种应用ALE:是面向于同一个公司不同的系统;EDI:是面向于不同公司;IDoc的结构和类型1、最小结构单元:Segment数据段2、控制记录(Control Record),也称为IDoc头3、数据记录(Data Record),不超过1000个字符的数据段文本4、状态记录(Status Record),历史状态信息5、IDoc类型(IDoc Type):定义了数据段以及数据段的层次和次序。
标准SAP 系统提供了IDOC类型,也称为基本类型(Basis Type).6、数据段:命名部分包括SAP版本无关的数据段类型以及至少一个版本相关的数据段名称。
7、数据段类型均为定义在数据字典中的ABAP结构。
SAP标准数据段类型以E1作为前缀,数据段名称则以E2作为前缀。
IDoc出站处理1、系统中生成新的应用文档(即应用数据)2、创建出站IDoc3、寻找伙伴参数和端口4、通过该端口将IDoc传递至外部系统4.1、通过消息控制的发送处理:消息查找和Idoc发送4.2、通过ALE的发送处理4.2.1、首先创建仅存在于运行时的Master IDoc4.2.2、传入FM: MSATER_IDOC_DISTRIBUTE4.2.3、调用FM: Communication_IDoc_Create,该FM对Master Idoc进行"过滤",过滤后的IDoc称为Communication IDoc4.4.4、调用FM: EDI_OUTPUT_NEWIDoc入站处理1、从系统的入站端口中接受发送方的Idoc数据2、创建入站Idoc (Inbound Idoc)3、通过伙伴参数文档查找Idoc的处理类型4、确定相关应用后写入文档4.1、直接处理4.2、通过SAP业务工作流常用IDocBOMMAT BOMECMMAS ECN CC92(BD50激活+BD21发送) MASTER_IDOC_CREATE_ECMMAS MATMAS 物料主数据IDoc数据表EDIDC IDOCEDIDS IDOC状态EDID4 IDOC数据记录IDoc相关函数IDOC_READ_COMPLETELY 读取IDOC的函数SREL_GET_NEXT_NEIGHBORS 读取IDOC一些信息(比如进站IDOC相关的出站IDOC编号)IDoc常用事务码BALE: 打开IDoc(ALE)区域菜单,很实用WEDI: 打开IDoc(EDI)区域菜单SALE: IMG-IDoc(ALE)配置SARA: 归档管理BD53: 消息类型缩减BD55: 维护 IDoc 转换BD56: 维护 IDoc 段筛选BD59: 分配对象类型->凭证类型BD62: 定义段转换规则BD71: 定义相关业务对象的 FMBD79: 维护 IDoc 转换规则BD82: 生成伙伴参数文件BDM2: 监控:接收系统的 IDocBDM5: 技术一致性检查BDM7: ALE审计:统计分析WE47: 状态维护WC34: IDoc准备传输的入站处理BDA1: 执行尚未执行的调用BD75: 执行tRFC成功时转换状态BD73: 启动未发布IDoc的错误处理BDM8: 发送审计确认SMQS: 目标系统登记创建IDoc(进站)SM59:定义IDOC传输的RFC连接WE31: 创建Segment(IDoc所包含的段)WE30: 创建基本IDoc类型,把Segment分配给IDocWE81: 创建信息类型(Message Type)WE82: 把基本IDoc类型与信息类型对应BD51: 添加入站代码处理函数WE57: 分配消息或者IDOC类型给数据处理函数模块WE41: 出站处理代码WE21: 定义端口WE20: 定义合作伙伴,配置进出站IDoc消息类型BD64: 维护分配模型创建IDoc(入站)SE37: 创建入站处理函数WE57: 分配消息或者IDoc类型给数据处理函数模块BD51: 添加入站处理函数的输入类型(批量/独立)WE42: 入站处理代码WE20: 定义合作伙伴,配置进站IDoc消息类型,选择入站处理代码修改指针BD50: 激活修改指针(对应主数据修改时,表bdcp2会记录下来)BD61: 激活更改指针(一般)BD52: 修改指针过滤(修改哪些字段时,产生修改指针存入表bdcp2)BDCP_BEFORE_WRITEBD21: 按修改指针发送IDOC管理IDocWE02: 显示IDOC,可以根据时间,IDOC类型查找IDOC,查看成功,出错信息。
IDOC测试过程及操作抓图
1,WE02 搜53成功状态的,或最近日期的,查看单号有生成的IDOC。
作为参考
2,搜索到IDOC号,拿到WE19里去修改,重跑
选中第1行,点开,出现这个窗口,点全部字段
如果没出来,可以点第1个菜单下的“编辑控制记录”
3,参考销售退货业务,
需要改发送方(JLPOS单号,外部系统单号)
关键字:后面随便改动一下
其他栏位:
这4个地方,都需要替代单号
当然,如果是退货业务,记得先准备好销售订单号,把销售订单号对应的PO号填到这个IDOC里。
退货业务,这个是原参考订单号
跑完WE19后,去WE02里看状态和生成的最终单据
4,带安业务,记得先维护这个表:ZSDT0116
5,RC1_IDOC_SET_STATUS,SE38改idoc状态。
6,如果IDOC跑出是71的
7,需要RC1_IDOC_SET_STATUS,SE38改idoc状态。
从71改为51 再BD87重新执行IDOC
51 IDOC初始状态
71 提示重复存档为IDOC重载
53 成功
8,。
2024版什么是IDOC以及IDOC的步骤
03
业务流程自动化
通过IDOC,可以实现业务流程的自动化,提高业务处理效率和准确性。
01
数据传输
IDOC可以在SAP系统内部或与其他外部系统之间进行数据传输,实现数据的共享和集成。
02
数据转换
IDOC可以对传输的数据进行转换和映射,以适应不与EDI关系
什么是IDOC以及IDOC的步骤
目录
IDOC概述 IDOC类型 IDOC创建与发送 IDOC接收与处理 IDOC错误处理与监控 总结与展望
01
CHAPTER
IDOC概述
IDOC定义
IDOC(Intermediate Document)是SAP系统中用于数据交换的一种标准格式。
它是一种基于XML或EDI(电子数据交换)的结构化数据格式,用于在SAP系统内部或与其他系统进行数据交换。
数据转换
在处理过程中遇到错误时,需要进行相应的错误处理,如记录错误日志、发送错误通知等。
错误处理
处理IDOC
记录处理结果
将处理结果记录到日志或数据库中,以便后续跟踪和审计。
通知相关人员
根据需要,可以将处理结果通知给相关人员,以便及时了解处理情况。
发送确认消息
在处理完IDOC后,需要向发送方发送确认消息,告知IDOC已被成功接收并处理。
03
03
CHAPTER
IDOC创建与发送
定义IDOC类型
根据业务需求,选择或定义适当的IDOC类型,例如订单、发货通知、发票等。
填写IDOC数据
根据IDOC类型的要求,填写相关的业务数据,如订单号、客户信息、产品信息、数量、价格等。
设置IDOC参数
配置IDOC的发送参数,如接收方系统、发送方系统、通信协议、端口号等。
IDoc的初学者教程
IDoc的初學者教程•IDoc基本概念与概述•IDoc创建与配置•IDoc处理与传输•IDoc数据映射与转换目录•IDoc安全性与性能优化•IDoc实战案例解析•总结与展望IDoc基本概念与概述IDoc定义及作用IDoc(Intermediate Document)是SAP系统中一种用于数据交换的标准格式。
它允许在SAP系统内部或与其他外部系统之间进行数据的传输和交换。
IDoc作为一种中间文件,可以在不同的应用程序和系统之间传递业务数据,实现数据的集成和共享。
IDoc类型与结构IDoc类型IDoc结构每个IDoc都由头部、段落和数据记录三部分组成。
头部包含传输控制信息,段落定义了数据的逻辑结构,数据记录则包含了实际的业务数据。
IDoc在SAP系统中重要性实现系统间数据交换01提高数据一致性和准确性02提升业务效率和灵活性03IDoc创建与配置创建IDoc基本步骤步骤一步骤二步骤三步骤四属性设置IDoc 的属性决定了其处理方式和行为。
可以通过事务代码WE21或BD64对IDoc 的属性进行设置,如设置传输方式、优先级、重试次数等。
参数配置在SAP 系统中,可以通过事务代码WE20或BD64对IDoc 的参数进行配置,如设置处理模式、输出模式、错误处理等。
自定义逻辑根据业务需求,可以在IDoc 的处理过程中添加自定义逻辑,如数据转换、验证规则等。
这可以通过ABAP 编程实现。
配置IDoc 参数及属性问题四IDoc 数据不一致。
可能原因包括数据转换错误、数据源问题等。
解决方法包括核对数据源、修复数据转换逻辑等。
问题一IDoc 无法创建或保存。
可能原因包括权限不足、数据不完整或格式错误等。
解决方法包括检查用户权限、核对数据完整性和格式等。
问题二IDoc 处理失败。
可能原因包括处理逻辑错误、系统资源不足等。
解决方法包括检查处理逻辑、优化系统性能等。
问题三IDoc 传输失败。
可能原因包括网络故障、接收系统故障等。
IDOC测试
1.在事务码we19下,输入模版文件的路径,将EDI文件导入到sap系统,并生成进站文件按f8或者点击执行进入到图2所示界面。
图1.图2.2.点击图3中的标准入站按钮,进行入站处理,此时系统提示未维护伙伴参数。
图3双击IDOC抬头数据,显示信息显示如下图,可以看到发送方和接收方的相关信息数据没有维护完全,按照图5所示的数据进行维护之后,再次点击标准入站按钮,已ok。
图4图5图63.点击图6中的继续按钮,生成进站文件,如图7。
图74.进入we02查询idoc编号为5399的文件.图85.再次进入we19下,修改5399文件,在抬头数据部分添加基本类型为orders05.修改保存之后再次进行进站操作。
生成的文件编号为5340.可以将图11和图7进行比较。
图9图10.图115.进入we02对文件5340进行进站处理。
发现有三个错误信息提示,现在一个一个来处理图126.在事务码voe2下创建下图所示记录,重新进行进站处理,结果如图,错误信息依旧。
图13图147.在we19按照下图修改文件,再次进行入站处理,结果如图16,把图14中的第三个错误给修正了,但是第一个错误依旧存在,现在看下系统是否有供应商82052的数据,在事物码xk03下查询不到供应商数据,如图17。
图15图16图178.修改供应商数据为图18,再次进行入站处理,第一个错误已经修正。
图18图199.在we19中删除E1EDK05节点,再次进行入站处理,错误已经修正,但有新的错误,如图20,,按照图21修改物料编码,再次进行入站处理,出现图22错误。
图20图21图2210.按照图23进行修改,再次进行入站处理,所有错误已经处理,订单376已经生成。
图23图24。
SAPIDOC错误监控[试题]
SAP IDOC错误监控操作步骤00
一、进入SAP后用事务代码WE02进入IDOC显示界面00
WE02进入以后的IDOC显示界面00
二、在IDOC显示界面,点击执行按钮,查看IDOC详细信息。
00
点击执行按钮后进入的IDOC清单界面00
三、查看错误信息并处理错误00
1.查看IDOC清单下面的状态,若状态显示是51,则表示有错误,同时状态灯是红灯;若状态显示是53,则表示没有错误,同时状态灯是绿灯。
00
2.如果状态是51,则双击该IDOC编号,进入IDOC显示,查看IDOC状态记录并复制IDOC编号。
00
3.新建一个会话,用事务代码BD87进入消息状态监视器。
00
4.粘贴IDOC编号,进入错误处理界面。
00
5.点击错误信息,点击处理按钮,当IDOC状态从51变为53就说明处理成功,处理完成。
00。
IDOC练习过程
这份文档主要是自己学习IDOC的一些练习过程及心得,可能讲的不全面,但应该可以帮助大家了解IDOC的一些工作方式.IDOC或者说是ALE,事实上,是SAP用于分布和集成数据的一种方式.所以,我个人就将这个东西理解为数据的发出和数据的接收处理.事实上,也就是ALE中的出站(outbound)和入站(inbound).然后,我们从ALE的出站开始说起.说明如何从头开始自己配置一个消息段,并将这个消息发出.出站在实际应用中,是当我们的一项业务数据生成后,系统自动将该数据内容发出给指定的系统的过程.那么,在这中间,我们将该部分内容分为两步,一步是我们先调用函数将自己的数据发出,第二步,我们在说明如何使用系统的功能将一些数据发送出去.在IDOC出站过程中,需要我们确定2个要素,一个是发给谁,还有一个是数据的内容.那么,SAP对于这两点,分别是通过设置伙伴参数文件(partner profile)来确定信息接收对象,配置消息类型(Message Type)来确定发送的数据的数据格式.我们先从配置消息类型开始.消息类型由一个或者数个信息段组成.配置过程为:1.创建一个信息段,事务码WE31.该步骤的作用为创建我们需要传输的数据结构2.创建一个基本凭证类型,事务码WE30在一个基本凭证类型下,可以挂多个段,用于保存多种不同类型的数据.3.通过WE81创建一个逻辑消息类型,并使用WE82将创建的逻辑消息类型与凭证类型之间的关联.到这步为止,我们已经完成消息类型的创建.下一步,我们需要确定发送目标.ALE的目标地址(合作伙伴)分为银行,利益提供者,客户,供应商,逻辑系统和客户几类,具体应用要看实际情况而定.当前,我们测试使用逻辑系统作为合作伙伴.类型为逻辑系统的合作伙伴有消息类型和接收端口两个主要数据接收端口根据类型又分为事务性RFC,文件,CPI-C,Internet,ABAP-PI,XML等几个类型其中,文件和XML这两种类型是通过文件方式传输的,因此,只需要配置文件存放目录,不需要配置RFC目的地,其它几种类型,均需要配置RFC目的地.端口的作用,我们可以看作一种管道的作用,在ALE的发送过程中,只需要将数据从端口的这端放入,至于另外一端去了哪里,我们可以通过端口的配置进行灵活的动作.那当前测试过程中,我们使用事务性RFC作为端口类型.事务性RFC的端口类型,与其对接的就是另一个SAP系统或者同一SAP的相同或者不同的集团.下面开始配置步骤:1.配置一个RFC目的地事务码sm59,我测试中,需要将idoc 传到同一服务器中,因此,选择ABAP connections.在target host中填写目标服务器名称,在登录信息中,填写相应的登录信息即可.保存后,点击connection test ,如果成功,表示该目标设置成功.2.设置端口,事务码we21在创建时,我们可以选择系统自动给号,也可以选择自己编写端口名称.我们选择自己命名端口名称在出现的页面中,只需要填写描述和rfc 目的地即可.3.设置伙伴参数,事务码we20在设置伙伴参数前,需要先为目标对象定义一个逻辑系统名,路径如下在其中,我们增加一条记录定义完成后,我们使用we20进入如下界面我们选择逻辑系统(LS),然后,在outbound paramtrs 中,增加一个参数,保存后,我们在发送端的所有工作完成,这表示我们可以通过我们的配置,使用程序创建一条idoc.以下是程序.REPORT ZTEST_IDOC .DATA: BEGIN OF F_IDOC_HEADER.INCLUDE STRUCTURE EDIDC.DATA: END OF F_IDOC_HEADER.DATA: BEGIN OF T_IDOC_DATA OCCURS 10.INCLUDE STRUCTURE EDIDD.DATA: END OF T_IDOC_DATA.DATA: BEGIN OF T_IDOC_COMM_CONTROL OCCURS 10.INCLUDE STRUCTURE EDIDC.DATA: END OF T_IDOC_COMM_CONTROL.start-of-selection.F_IDOC_HEADER-MESTYP = 'ZBOBO'.F_IDOC_HEADER-IDOCTP = 'ZBOBO'.F_IDOC_HEADER-RCVPRN = 'IDOC800R'.F_IDOC_HEADER-RCVPRT = 'LS'.T_IDOC_DATA-SEGNAM = 'Z1BOBO'.T_IDOC_DATA-SDATA = 'ABCD'.“在sdata中赋值中需要注意的是,如果在这个段中,存在超过一个的字段,则需要将所有字段按照固定长度串在一起赋值.APPEND T_IDOC_DATA.CALL FUNCTION 'MASTER_IDOC_DISTRIBUTE'EXPORTINGMASTER_IDOC_CONTROL = F_IDOC_HEADERTABLESCOMMUNICATION_IDOC_CONTROL = T_IDOC_COMM_CONTROLMASTER_IDOC_DATA = T_IDOC_DATAEXCEPTIONSERROR_IN_IDOC_CONTROL = 1ERROR_WRITING_IDOC_STATUS = 2ERROR_IN_IDOC_DATA = 3SENDING_LOGICAL_SYSTEM_UNKNOWN = 4OTHERS = 5.IF SY-SUBRC = 0.COMMIT WORK.ENDIF.执行该程序后,使用we02应该就可以看到一条成功的出站信息.同时,由于IDOC800R指向的是本集团,因此,我们还能看到一条错误的入站信息。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
IDOC测试……对于这些标准的IDOC,只要做相应配置就可以启用。
下面的测试是创建自定义的消息类型,IDOC类型和相关处理程序。
两个Client,138和118,138作为发送端,118为接收端。
Outbound IDOC :138端的配置1 设置IDOC Type.1.1 WE31,创建segment。
这里先输入YPOHEAD,点击创建,在接下来的屏幕中,录入EBELN, BUKRS, BEDAT等字段及他们对应的data element。
接着创建YPOITEM,输入EBELN, EBELP, MATNR, MENGE, MEINS等字段及他们对应的data element。
1.2 WE30, 创建IDOC Type,定义结点间的相互逻辑关系.先输入YPOIDOC,然后点击创建,紧跟着点击create new进入。
在主界面中,先点击创建按钮,将YPOHEAD添加,设置Mandatory seg打勾,min =1,max =1,代表我们每个IDOC 仅包含一张采购订单。
然后在YPOHEAD下添加YPOITEM,同样的Mandatory seg打勾,min =1,max =999。
最后如下:2 创建Message Type.2.1 WE81,创建Message Type.先切换到编辑状态,然后点击New Entries,输入YPO即可。
2.2 WE82,关联Message Type和IDOC Type.3,创建到118的端口.3.1 SM59,创建到接收端的连接3.2 WE21,创建PortWE21创建Port,类型TRANSACTIONAL RFC,名为DEV118-1。
4 创建并分配Logical System。
4.1 BD54,创建逻辑系统4.2 SCC4,分配逻辑系统给CLIENT。
分配R3P118给客户端118,如下:分配R3P138给客户端138,截图略5 WE20,定义Partner profile。
在PARTNER TYPE为logical system下,创建一个patner no为R3P118的partner,type填写LS。
下面的Post processing:Permitted agent,填写US(User),Agent为你自己的用户名或某basis 人员用户名。
然后,点击outbound下方的加号,创建一个outbound parameter。
Message Type 为YPO,receiver port为DEV118-1,output mode选择transfer idoc immed.,Basic Type填写YPOIDOC,保存即可。
出站参数设置如下在PARTNER TYPE为logical system下,创建一个patner no为I02LS的partner,type填写LS。
下面的Permitted agent,填写US(User),Agent为你自己的用户名或某basis人员用户名。
然后,点击outbound下方的加号,创建一个outbound parameter。
Message Type为YPO,receiver port为I02PORT,output mode选择transfer idoc immed.,Basic Type填写YPOIDOC,保存即可。
6 编程发送IDOCREPORT ytestidoc_o.DATA: ls_pohead TYPE ypohead,ls_poitem TYPE ypoitem,ls_edidc TYPE edidc,lt_edidc TYPE TABLE OF edidc,lt_edidd TYPE TABLE OF edidd WITH HEADER LINE.DATA: L_ebeln TYPE ebeln.CLEAR ls_edidc.*系统根据下面4行即可与WE20设置关联起来ls_edidc-mestyp = 'YPO'. "message typels_edidc-idoctp = 'YPOIDOC'. "idoc typels_edidc-rcvprn = 'R3P118'. "partner number of recipient ls_edidc-rcvprt = 'LS'. "partner type of receiverL_ebeln = '0310101222'.*添加IDOC结点CLEAR lt_edidd.lt_edidd-segnam = 'YPOHEAD'. "结点名称lt_edidd-dtint2 = 0.CLEAR ls_pohead.ls_pohead-ebeln = L_ebeln.LS_POHEAD-BUKRS = 'HCTH'.ls_pohead-bedat = '20140827'.lt_edidd-sdata = ls_pohead. "结点内容APPEND lt_edidd.CLEAR lt_edidd.lt_edidd-segnam = 'YPOITEM'.lt_edidd-dtint2 = 0.CLEAR ls_poitem.ls_poitem-ebeln = L_ebeln.ls_poitem-ebelp = '0010'.ls_poitem-matnr = '141-50007-011002'.LS_POITEM-MENGE = '100'.ls_poitem-meins = 'ST'.lt_edidd-sdata = ls_poitem.APPEND lt_edidd.CLEAR lt_edidd.CALL FUNCTION 'MASTER_IDOC_DISTRIBUTE'EXPORTINGmaster_idoc_control = ls_edidc* OBJ_TYPE = ''* CHNUM = ''TABLEScommunication_idoc_control = lt_edidcmaster_idoc_data = lt_ediddEXCEPTIONSERROR_IN_IDOC_CONTROL = 1ERROR_WRITING_IDOC_STATUS = 2ERROR_IN_IDOC_DATA = 3SENDING_LOGICAL_SYSTEM_UNKNOWN = 4OTHERS = 5.IF sy-subrc <> 0.MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNOWITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.ELSE.* COMMIT WORK.CALL FUNCTION 'DB_COMMIT'.CALL FUNCTION 'DEQUEUE_ALL'.COMMIT WORK AND WAIT.CALL FUNCTION 'EDI_DOCUMENT_DEQUEUE_LATER'EXPORTINGdocnum = ls_edidc-docnumEXCEPTIONSidoc_is_not_to_dequeue = 1OTHERS = 2.WRITE: 'idoc sent:'.LOOP AT lt_edidc INTO ls_edidc.NEW-LINE.WRITE: 'idoc number is', ls_edidc-docnum,'; receiver partner is', ls_edidc-rcvprn,'; sender partner', ls_edidc-sndprn.ENDLOOP.ENDIF.---------------------------------------------------------------------------------------------------------------------------------Inbound IDOC :118端的配置1 创建IDOC Type和Message Type.与上面Outbound Idoc中的前两个步骤完全一样。
(因为是跨客户端的,如果是同一个系统就省了这步)2 SM37,创建一个function:Y_IDOC_PO_PROCESS.当IDOC设置完毕之后,SAP可以自动调用该Funtion Module处理IDOC。
所以这个函数的接口都是规范的。
下面步骤中将介绍的tcode:BD51中可以查询到很多Inbound Function,比如IDOC_INPUT_BBP_IV,可参照创建我们的接口。
接下来就可以写我们的代码了,为了简化,这里仅仅将接收到的数据存入表中,先创建两个表YPOHEAD02和YPOITEM02,字段参考WE31中的YPOHEAD和YPOITEM。
然后写入下面代码:DATA: lv_subrc LIKE sy-subrc,ls_chead TYPE ypohead,ls_citem TYPE ypoitem,ls_pohead TYPE ypohead02,lt_poitem TYPE TABLE OF ypoitem02 WITH HEADER LINE.CLEAR idoc_contrl.READ TABLE idoc_contrl INDEX 1.IF idoc_contrl-mestyp NE 'YPO'.RAISE wrong_function_called.ENDIF.LOOP AT idoc_contrl.CLEAR: ls_pohead, lt_poitem[].LOOP AT idoc_data WHERE docnum = idoc_contrl-docnum.CASE idoc_data-segnam.WHEN 'YPOHEAD'.CLEAR: ls_chead, ls_pohead.ls_chead = idoc_data-sdata.MOVE-CORRESPONDING ls_chead TO ls_pohead.WHEN 'YPOITEM'.CLEAR: ls_citem, lt_poitem.ls_citem = idoc_data-sdata.MOVE-CORRESPONDING ls_citem TO lt_poitem.APPEND lt_poitem.WHEN OTHERS.ENDCASE.ENDLOOP.lv_subrc = 0.INSERT ypohead02 FROM ls_pohead.IF sy-subrc EQ 0.INSERT ypoitem02 FROM TABLE lt_poitem.lv_subrc = sy-subrc.ELSE.* 订单号已经存在lv_subrc = sy-subrc.ENDIF.IF lv_subrc EQ 0.COMMIT WORK.CLEAR idoc_status.idoc_status-docnum = idoc_contrl-docnum.idoc_status-status = '53'. "idoc处理成功 APPEND idoc_status.ELSE.ROLLBACK WORK.CLEAR idoc_status.idoc_status-docnum = idoc_contrl-docnum.idoc_status-status = '51'. "idoc不成功idoc_status-msgty = 'E'.* 错误信息idoc_status-msgid = 'YMSG'.idoc_status-msgno = '001'.APPEND idoc_status.ENDIF.ENDLOOP.3 BD51,注册我们的Function Module.在编辑状态下,点击New Entries,填入函数名Y_IDOC_PO_PROCESS,Input Type=1即可。