IDoc概述IDoc处理流程IDoc连接配置IDoc开发示例SAPIDoc技术内容IDoc归档IDoc概述IDoc(Intermediatedocument)是一种系统间通用的数据交换媒介文件,通过IDoc可以方便的和外部系统进行数据交换,它可以内/外传送以实现系统的自动化,在SAP中IDOC主要应用到以下技术:ALE(ApplicationLinkEnabling):用于在同一集团中不同的SAP系统之间的数据交换EDI(electronicdataexchange):实现不同企业间电子数据的交换,通过IDoc文件和业务伙伴进行数据交换通过IDoc也可连接其它应用系统.左图展示的是以IDoc文件交换数据的逻辑示意图,由此可见以它做为通讯媒介构成了一个强大的分布且开放的系统IDoc概述IDoc的结构作为一种传输媒介,IDoc文件的结构包含有特定的格式,如下图所示:控制记录(ControlRecord)数据记录(DataRecord)状态记录(StatusRecord)IDoc结构SAP中一个IDoc的文件结构IDoc概述控制记录(ControlRecord)每个IDoc的ControlRecord可以认为是文件头,它包含发送及接收端,IDocID,发送日期等信息,当Idoc被触发时,SAP会首先检查这些信息是否正确.IDoc概述多个数据段(Segment)组成的一个层次结构,装载传输的数据且每个数据段不能超过1000个字符数据记录(DataRecord)当发送或接收这些IDoc时,数据将会被解析到这些特定层级关系的数据段中IDoc概述状态记录(StatusRecord)用来记录IDOC从发送方到接受方的历史状态信息.IDOC状态示例系统状态列表(TCODEl:WE47)通常,如果是自行开发的IDoc,可以在处理IDoc逻辑的FM中加入自已定义的状态,以此满足不同的需求.IDoc概述IDoc类型IDoc类型是IDoc文件的结构定义和说明,在SAP中,不同的业务对象有不同的IDoc类型,这些类型可以根据不同的传输格式或数据要求多个并存.查看IDoc类型(TCODE:WE30)PATH:Tools-ALE-ALEDevelopment-IDoc-IDocTypeDevelopmentIDocTypes输入:1,在”Obj.Name”栏位输入类型.右图的示例是自定义委外加工PO的IDoc类型定义.ZSUBH:委外PO的Header资料ZSUBL_H:委外PO的Item资料ZUBL:每个Item的装配组件资料.IDoc概述消息类型(MessageType)消息类型是指IDoc类型的视图,一个消息类型可以包含多个IDoc类型.T-CODE:WE81定义消息类型T-CODE:WE82IDoc类型分配给消息类型,Release代表不同的版本IDoc概述数据段(Segment)(T-CODE:WE31)数据段是IDoc的结构组件,这些数据段包含特定的数据类型,每个字段可以参照SAP数据字典,也可以自定义字段,保存后系统自动创建版本号.可以自定字段,以满足特殊的需求.IDoc概述IDoc处理流程如左图,按照系统间的数据流向,分为如下两种处理模式:1:出站处理(Outbound):SAP到外部系统.2:入站处理(Inbound):外部系统到SAP系统.如右图演示一个IDOC处理的过程:IDoc概述IDoc出站处理如上图OutboundProcessing部分:它的流程可以理解成以下几个步骤:1),应用层:生成应用数据2),ALE层:创建出站IDOC3),通讯层:寻找伙伴和端口4),发送IDocIDoc概述IDoc的出站触发机制IDOC可以通过不同的机制发送IDOC:1),通过应用模块的消息控制间接的传送到IDOC接口.伙伴参数的消息控制应用模块的输出类型对应通过消息控制的发送处理注意:IDOC和应用模块的消息类型有联系,但不是同一概念.IDoc概述IDoc的触发机制IDOC可以通过不同的机制发送IDOC:2),直接从应用发送到IDOC接口,这些处理主要是通过以下的FM控制:标准:MASTER_IDOC_DISTRIBUTE/COMMUNICATION_IDOC_CREATE自定义IDOC:L_IDOC_SEND/L_IDOC_SEGMENT_CREATE/L_IDOC_HEADER_CREATE直接发送IDOC的模型IDoc概述IDoc入站处理如上图InboundProcessing部分:它的流程可以理解成以下几个步骤:1),通讯层:接收入站端口传来的数据.2),ALE层:创建入站IDOC并通过伙伴参数文件查找IDOC处理类型.3),应用层:写入文档.Inbound应用处理1.直接处理:通过FMIDOC_INPUT_?处理.2.间接处理:通过SAP业务工作流处理.IDoc示例演示2个示例帮助理解IDoc具体工作模式和设计:1,配置一个跨Client传输主数据的示例.通常在实际应用中,为了简化系统过多的人为操作或更好的实现自动化,有时我们需要在同一集团内跨公司交易时传输相关的数据,例如:1).在SAP系统中同一集团A和B两个公司,A向B开PO并传出IDoc自动创建B公司的SO.2).在主数据中,可以方便的通过Idoc传输物料主档/BOM/WorkCenter/Routing/Vendor/Customer等资料.3).SAP也可轻易地做到跨Client交换数据.SAPR/3SenderSAPR/3ReceiverIDocFilesPortRFC配置一个跨Client传输主数据的示例T-CODE:SALE用来配置IDoc逻辑命令集合1-1),配置发送和接收的逻辑系统.逻辑系统用来识别同一服务器上不同的Client唯一标识1-2),将逻辑系统指派给Client(T-CODE:SCC4)在PRD系统,逻辑系统设定后,如果有数据产生,不能被更改.配置一个跨Client传输主数据的示例1-3),创建RFC连接创建一个逻辑连接图1-3-1图1-3-2定义RFC连接目标时,首先指定连接名称,连接类型(如图1-3-1),描述等信息.配置一个跨Client传输主数据的示例在屏幕维护目标Client的登入参数请确认目标系统是否是Unicode,如果是请转到屏幕如果编码类型设定有误,对于中文字符的传输会有乱码或不能执行IDoc等原因.测试RFC连接配置一个跨Client传输主数据的示例1-4),定义端口IDoc通过端口和目标系统交换数据,它是接口中通信基础,请看以下逻辑示意图:端口类型RFC事务ALE分布式传输过程端口,外部系统也是R/3的解决方案.文件接口以文件形式输出,外部系统可以读取此IDoc文件CPI-C连接到R/2系统ABAP-编程接口将IDoc文件发送到用户定义的FM,以实现特殊的逻辑.XML文件格式输出到XML文件HTTP格式的XML文件输出到MIME(MultipurposeInternetMailExtensions)文件格式配置一个跨Client传输主数据的示例定义端口T-CODE:WE21选中一个端口类型,点击按钮,在图1-4-2中输入端口号图1-4-1图1-4-2图1-4-3在图1-4-3中输入描述及RFC目标配置一个跨Client传输主数据的示例1-5),定义分配模型T-CODE:BD64,用它可以完成在分布式逻辑中发送或接收的对象.传输过程序中筛选数据新建一个视图模型用BAPI处理IDoc逻辑添加一个消息类型1-5-1),点击”Createmodelview”.在此输入描述及技术名称,注意:技术名称在此必须是唯一的配置一个跨Client传输主数据的示例1-5-2),点击”Addmessagetype”按钮增加Messagetype图1-5-2在图1-5-2中维护发送/接收者,消息类型,这三个参数是必须的,它们告诉SAP如何传输数据以及传输对象是什么.在Filter中可以定义或扩展筛选条件配置一个跨Client传输主数据的示例1-5-3),自动建立伙伴参数选中一个消息类型,在菜单Environment-Generatepartnerprofiles.点击执行,系统自动建立Partnerprofile相关参数,以下是系统返回结果:配置一个跨Client传输主数据的示例1-6),手工建立和检查伙伴参数,用此维护发送及接收端伙伴,进/出站,消息类型等参数,T-CODE:WE201-6-1),建立发送端参数维护进站参数Processcode都关联一个FM,用此来处理IDoc逻辑,也可以自定义Processcode,用自定义的FM配置一个跨Client传输主数据的示例1-6-2),建立接收端参数维护出站参数设定端口(请参考端口的配转置及说明)立即执行必须设定BasicType物料主数据没有MessageControl,大部分IDoc一般用这个来触发.配置一个跨Client传输主数据的示例1-7),测试IDoc(T-CODE:WE19)SAP可以有以下几种测试方式,常用的是ExistingIDOC和BasicType两种数据结构:EDIDC:ControlRecordsE1*****:DataRecords配置一个跨Client传输主数据的示例1-8)发送物料(T-CODE:BD10)当点击”执行”后,系统分别会提示以下两个信息以告诉用户有多少IDoc产生配置一个跨Client传输主数据的示例1-9检查IDoc日志(T-CODE:WE02)通常用这个来查看或监视IDoc的执行结果和状态,如果有问题,例如一修改一些测试数据可以放在WE19测试执行,以此找到IDOC的错误原因.配置一个跨Client传输主数据的示例可以按进/出站IDoc来查看结果进一步显示单个IDOC的结果,SAP按照以下方式显示:技术信息如前所述,每个IDoc包含有ControlRecord,DataRecord以及StatusRecord三个必须内容配置一个跨Client传输主数据的示例配置一个跨Client传输主数据的示例第一个示例演示完毕.小结:1,配置逻辑系统2,配置RFC连接3,配置端口4,配置分配模型5,配置伙伴参数6,如有必要可以在规则中设定转换规则(实际中也常用)通常SAP会和外部非SAP系统交换数据,或客户及供应商的SAP系统交换数据,除直接用编程的技术通过RFC和外部沟通外,IDOC也是一个很好的解决方案,以下示例演示如何从头定义一个全新结构的IDoc.2,自定义IDoc传输SO资料到外部系统.自定义IDoc传输SO资料到外部系统示例明细字段参照字段字段长度VBELNVBELN_VA10POSNRPOSNR_VA6MATNRMATNR18ZMENGDZMENG13表头字段参照字段字段长度VBELNVBELN_VA10KUNNRKUNAG10AUARTAUART4模拟情景:需要传输的数据结构,在实际应中可以定义更复杂的结构自定义IDoc传输SO资料到外部系统示例2-2),定义数据段(TCODE:WE31)PATH:Tools-ALE-ALEDevelopment-IDoc-IDocTypeDevelopment-Segments定义传输的表头数据段:在SegmentType栏位中输入ZORDH然后点选新增如下图:输入需要传输的表头段的字段当你保存后,系统自动生成000版本,同时可以点选菜单(EDIT-SETRELEASE)Release这个段.自定义IDoc传输SO资料到外部系统示例定义SOITEM段结构:很简单的三个步骤自定义IDoc传输SO资料到外部系统示例2-3),定义IDOC类型(T-CODE:WE30)PATH:Tools-ALE-ALEDevelopment-IDoc-IDocTypeDevelopment-IDocTypes图2-3-1图2-3-2图2-3-3选中IDOCType,然后点选新增按钮如图2-3-3:MandatorySeg.:这表示必须要维护此SegmentMin./MaxNumber: