IDOC配置手册
ECC系统接收财务凭证IDoc的配置步骤
[SAP PI]EC凛统接收财务凭证IDoc的配置步骤(总账应收应付)1. 业务场景外围系统,通过IDoc,在SAP系统中创建财务凭证,包括总账,应收和应付.2. IDoc,FM和增强对应关系3. 数据库表4. 本业务配置涉及的TCODE:TCODE 描述WE20 维护伙伴参数F-02 输入总账科目记账F-43 输入供应商发票—F-22 输入客户发票FB03 显示凭证WE02 IDoc活单,查看IDoc发送情况5. 维护分配模型BD64EC欲收IDoc不需要配置分配模型6. WE20配置合作伙伴参数点击进站参数部分的”创建入站参数”按钮者■径娥弟参敷支。
□乡己尽b靠曰虫已钗伴堀遇甘作秋件S-3相件细曳甘伏件我型(LS1簪系统•Ul依绊类垩a •Ul秋:伴类垩BP •C□伙犊垩曲•Ul秋:伴卖垩E •Ul秋朝垩L1利益相性当业浊含作秋:律客户俱应商避楫席弟用户r前m中字符-不#处]里浒河代理明分港电 ________________________ ,7y- [5s-S用尸•C□秋:伴套塑隽*Ul袜件类型US«S |xuxc语言回目文曰炫数___________________________________________________________ I |谀伴•色奏型_[椒安式避站参物画心鼬输入消息类型,处理代码和触发方式等信息含卷我择微况二 合作秋佯阴 ___________________ USM I 〔 T伙伴坷 _LS翌机某姓傀伟陵邑处阻代用[电£1 〉内向W 】皿口单独灿理/扫叫语游百鼠舌H 涓姓珪拔屿四虐」耕t 理由后与程序融发E 立刖帼发应收刨即件喝W ISHDS僚律孕举对备包K用启羹重:L;理础心E1LLFC 合计=貌票逾fc (OA&: LOAD RECEVA..滴息代而iwmn□m讯K构向诜侦•记陛?i理浒可代^器R "♦话针用堀EAFII 切FJ面加UDE朝械胆应付消息类型ACC_INVOICE_RECEIRDdc对应的消息类型«理代码BAPI i 周用BAPI处理此£方式立即触发1台拄钦岸概况'人站番我当作队带冠E fms?供ff甬色堂借食凳里!人乂1HVEC也RLCKIPT会+过帏澄羊格收1。
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 类型有相同的消息类型,可以通过消息代码维护唯一的分配。
JCO2.0 IDOC(ECC为Outbound)
一:ECC配置1:先在ECC配置一OUTBOOUND的IDOC: TEST001 1):IDOC 段类型:ZTEST001_HEADIDOC 段类型:ZTEST001_ITEM2):IDOC其本类型:ZTEST0013):DIOC TYPE :TEST0012:逻辑系统、合作伙伴类型LS配置根据PI中业务系统的名称在ECC中配置一个同名的逻辑系统BS_TEST01WE20创建设同名合作伙伴类型LS BS_TEST013:SM59配置RFC连接ZJCO_IDOC_0024:WE21配置端口 A000000003填入刚才配置的RFC连接5:在合作伙伴类型LS “BS_TEST01”配置IDOC“ZTEST001”的出参信息出站参数中加入IDOC ZTEST001维护接收方端口和IDOC基本类型6:发送IDOC的程序代码REPORT ZTESTCHEN005.DATA: G_IDOC_CTL LIKE EDIDC.DATA: GI_RET_CTL LIKE EDIDC OCCURS 0,GI_IDOC_DATA TYPE TABLE OF EDIDD WITH HEADER LINE.DATA: WA_HEAD TYPE ZTEST001_HEAD.DATA: WA_ITEM TYPE ZTEST001_ITEM.DATA: IT_ITEM LIKE STANDARD TABLE OF WA_ITEM.TYPES: BEGIN OF TYP_EKPO,EBELN TYPE EKPO-EBELN,EBELP TYPE EKPO-EBELP,TXZ01 TYPE EKPO-TXZ01,MATNR TYPE EKPO-MATNR,WERKS TYPE EKPO-WERKS,LGORT TYPE EKPO-LGORT,MENGE TYPE EKPO-MENGE,MEINS TYPE EKPO-MEINS,END OF TYP_EKPO.DATA: WA_EKPO TYPE TYP_EKPO,IT_EKPO LIKE STANDARD TABLE OF WA_EKPO.PARAMETERS: P_EBELN TYPE EKKO-EBELN OBLIGATORY.PERFORM BUILD_IDOC_CTL.PERFORM BUILD_IDOC_SEG.PERFORM CREATE_IDOC.*&------------------------------------------------------------------* *& Form CREATE_IDOC*&------------------------------------------------------------------* * textFORM CREATE_IDOC.CALL FUNCTION 'MASTER_IDOC_DISTRIBUTE'EXPORTINGMASTER_IDOC_CONTROL = G_IDOC_CTLTABLESCOMMUNICATION_IDOC_CONTROL = GI_RET_CTLMASTER_IDOC_DATA = GI_IDOC_DATAEXCEPTIONSERROR_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.ENDIF.ENDFORM. " CREATE_IDOC*&------------------------------------------------------------------* *& Form BUILD_IDOC_CTL*&------------------------------------------------------------------* * text*-------------------------------------------------------------------* * --> p1 text* <-- p2 text*-------------------------------------------------------------------* FORM BUILD_IDOC_CTL.* TYPEG_IDOC_CTL-IDOCTP = 'ZTEST001'. "IDOC TYPEG_IDOC_CTL-MESTYP = 'ZTEST001'. "MESSAGE TYPE* RECEIVERG_IDOC_CTL-RCVPRT = 'LS'. "PARTNER TYPEG_IDOC_CTL-RCVPRN = 'BS_TEST01'. "PARTNER NOG_IDOC_CTL-RCVPOR = 'A000000003'. "PORT* SENDERG_IDOC_CTL-SNDPRT = 'LS'. "PARTNER TYPEG_IDOC_CTL-SNDPRN = 'ECDCLNT300'. "PARTNER NO* G_IDOC_CTL-SNDPOR = ''. "PORTENDFORM. " BUILD_IDOC_CTL*&------------------------------------------------------------------* *& Form BUILD_IDOC_SEG*&------------------------------------------------------------------* FORM BUILD_IDOC_SEG.DATA: L_COUNT TYPE I.CLEAR: L_COUNT.* HEAD DATAGI_IDOC_DATA-SEGNAM = 'ZTEST001_HEAD'. "SEGMENT NAME ADD 1 TO L_COUNT.GI_IDOC_DATA-SEGNUM = L_COUNT. "SEGMENT NO SELECT SINGLE *FROM EKKOINTO CORRESPONDING FIELDS OF WA_HEADWHERE EBELN EQ P_EBELN.MOVE WA_HEAD TO GI_IDOC_DATA-SDATA.APPEND GI_IDOC_DATA.SELECT *FROM EKPOINTO CORRESPONDING FIELDS OF TABLE IT_EKPOWHERE EBELN EQ P_EBELN.LOOP AT IT_EKPO INTO WA_EKPO.* ITEM DATAGI_IDOC_DATA-SEGNAM = 'ZTEST001_ITEM'. "SEGMENT NAME ADD 1 TO L_COUNT.GI_IDOC_DATA-SEGNUM = L_COUNT. "SEGMENT NO MOVE-CORRESPONDING WA_EKPO TO WA_ITEM.MOVE WA_ITEM TO GI_IDOC_DATA-SDATA.APPEND GI_IDOC_DATA.ENDLOOP.ENDFORM. " BUILD_IDOC_SEG二:Jar文件下载和Eclipse实现到/connectors中下载如下Jar文件1:sapjco21P_10-100022432:sapjbidoc10P_5-200072993:sapjcoidoc10P_9-20007299下载完成后在Eclipse的工程中引用刚才下载的Jar文件创建JCoIDocSample3类JCoIDocSample3类代码如下:import com.sap.mw.idoc.*;import com.sap.mw.idoc.jco.*;import com.sap.mw.jco.*;import com.sap.mw.idoc.jco.JCoIDoc.*;import com.sap.mw.idoc.jco.JCoIDoc.SAPRepository;import java.io.*;public class JCoIDocSample3implements JCO.ServerExceptionListener{/** Formatter for timestamp strings. */private static final java.text.SimpleDateFormat timestampFormat= new java.text.SimpleDateFormat("yyyyMMddHHmmss");/** Path to write the incoming data. */private static String incomingPath = "c:\\Temp\\";/** Default constructor. */public JCoIDocSample3(){}//constructor JCoIDocSample3/*** Class MyIDocServer is for receiving IDocs and function requests. * The reason for implementing the class as an inner class of the sample * program is only to keep all the sample source code within one file. */public static class MyIDocServerextends JCoIDoc.Server{/*** Overridden constructor of JCoIDoc.Server.* Choose the constructors that one would like to make public. */public MyIDocServer(String gwhost, String gwserv, String progid, IRepository jcoRepository, IDoc.Repository idocRepository){super(gwhost, gwserv, progid, jcoRepository, idocRepository); }//constructor MyIDocServer/*** Overridden constructor of JCoIDoc.Server.* Choose the constructors that one would like to make public. */public MyIDocServer(java.util.Properties properties,IRepository jcoRepository, IDoc.RepositoryidocRepository){super(properties, jcoRepository, idocRepository);}//constructor MyIDocServer/*** Overridden method of JCoIDoc.Server.* Function requests that do not contain IDocs will be handled here. * These requests will be stored as XML file in the incoming path. * No other action will be done. The return values won't be filled and* no exception will be thrown to the caller.*/protected void handleRequest(JCO.Function function){System.out.println("Incoming function request '" +function.getName() + "'...");String filename = function.getName() + "_" +timestampFormat.format(new java.util.Date()) + ".xml";System.out.println("Storing function request as XML file '"+ filename + "'...");function.writeXML(incomingPath + filename);}//method handleRequest/*** Overridden method of JCoIDoc.Server.* Function requests that contain IDocs will be handled here.* All IDocs will be stored as XML files in the incoming path. * Additionally, IDocs that are part of an ORDERS message will be * processed specifically. Some relevant information is extracted from* these IDocs and will be stored in a text file in the incoming path.*/protected void handleRequest(IDoc.DocumentList documentList){System.out.println("Incoming IDoc list request containing "+ documentList.getNumDocuments() + " documents...");IDoc.DocumentIterator iterator = documentList.iterator();IDoc.Document doc = null;while (iterator.hasNext()){doc = iterator.nextDocument();System.out.println("Processing document no. " +doc.getIDocNumber() + "...");String iDocType = doc.getIDocTypeExtension();if (iDocType.length() == 0) iDocType = doc.getIDocType(); String filename = "IDOC_" + iDocType + "_" +doc.getIDocNumber() + "_" +timestampFormat.format(newjava.util.Date()) + ".xml";System.out.print("Storing IDoc as XML file '" + filename + "'...");doc.writeXML(incomingPath + filename);System.out.println(" done.");if (doc.getMessageType().equals("ZTEST001")) {System.out.println("Processing message of type'ZTEST001'...");processOrder(doc);} else {System.out.println("Message of type '" +doc.getMessageType() +"' won't be processed.");}}}//method handleRequest/*** The following 4 methods for transaction management are not implemented* here in this sample program. For a description on how to implement * them in real production scenarios please see the JCo API specification* for the JCO.Server class.*/protected boolean onCheckTID(String tid) {return true;}//method onCheckTIDprotected void onConfirmTID(String tid) {}//method onConfirmTIDprotected void onCommit(String tid) {}//method onCommitprotected void onRollback(String tid) {}//method onRollback}//class MyIDocServer/*** Process an IDoc of type ORDERS##.* Please note that this is only a sample processing that does not reflect * all possible application data scenarios for ORDERS. There are different* segment navigation and iteration techniques used within this method. */public static void processOrder(IDoc.Document order){try {String filename = "ZTEST001_"+ order.getIDocNumber() + "_"+timestampFormat.format(new java.util.Date()) + ".txt";System.out.print("Storing IDoc as text file '" + filename + "'...");PrintWriter out = new PrintWriter(newFileOutputStream(incomingPath + filename));out.println("General data:");out.println("-------------");out.println("IDoc number: " + order.getIDocNumber());out.println("Partner number: " +order.getSenderPartnerNumber());out.println("IDoc type: " + order.getIDocType());out.println("IDoc type extension: " +order.getIDocTypeExtension());//get the root segment from the document//The root segment does not contain any fields or data. It is only//used as the standard parent segment.IDoc.Segment root = order.getRootSegment();IDoc.Segment seg = null;IDoc.Segment seg2 = null;//get the document header general dataseg = root.getFirstChild("ZTEST001_HEAD");out.println("--------------ZTEST001_HEAD--------------"); out.println("EBELN: " + seg.getString("EBELN"));out.println("BSART: " + seg.getString("BSART"));out.println("BUKRS: " + seg.getString("BUKRS"));out.println("EKORG: " + seg.getString("EKORG"));out.println("EKGRP: " + seg.getString("EKGRP"));out.println("LIFNR: " + seg.getString("LIFNR"));//process the order itemsIDoc.SegmentIterator orderItems =root.getChildrenIterator("ZTEST001_HEAD");out.println("--------------ZTEST001_ITEM--------------"); IDoc.Segment segItemID = null;seg = orderItems.nextSegment();segItemID = seg.getFirstChild("ZTEST001_ITEM");while (segItemID!=null){out.println("BEGIN--------------ZTEST001_ITEM--------------");out.println("EBELP: " + segItemID.getString("EBELP")); out.println("TXZ01: " + segItemID.getString("TXZ01")); out.println("WERKS: " + segItemID.getString("WERKS")); out.println("LGORT: " + segItemID.getString("LGORT")); out.println("MENGE: " + segItemID.getString("MENGE")); out.println("MEINS: " + segItemID.getString("MEINS"));out.println("END--------------ZTEST001_ITEM--------------");segItemID = segItemID.getNextSibling("ZTEST001_ITEM");}out.close();System.out.println(" done.");}catch (ng.Exception ex) {System.out.println("Exception occurred: " + ex);}}//method processOrder/*** Interface method of JCO.ServerExceptionListener to be notified about* server exceptions.*/public void serverExceptionOccurred(JCO.Server server,ng.Exception ex){System.out.println("Server exception occurred: " + ex);}//method serverExceptionOccurred/*** Main method initializing and starting the JCoIDoc.Server.*/@SuppressWarnings("deprecation")public static void main(String[] args){try {//instantiate main classJCoIDocSample3 myApp = new JCoIDocSample3();//add server exception listener to be notified about server exceptionsJCO.addServerExceptionListener(myApp);//server properties to log on at the gateway serverjava.util.Properties srvProps = new java.util.Properties(); srvProps.put("jco.server.gwhost", "192.168.0.150");srvProps.put("jco.server.gwserv", "sapgw00");srvProps.put("jco.server.progid", "ZJCO_IDOC_001");srvProps.put("jco.server.unicode", "1"); // enter "1" for unicode systems//client properties to log on for repository queriesjava.util.Properties clntProps = new java.util.Properties(); clntProps.put("jco.client.client", "300");clntProps.put("er", "dev003");clntProps.put("jco.client.passwd", "dev003");clntProps.put("ng", "EN");clntProps.put("jco.client.ashost", "192.168.0.150");clntProps.put("jco.client.sysnr", "00");//create a JCo client poolJCO.addClientPool("MyPool", 5, clntProps);//create a JCo repository that will be used for querying//meta data for standard function requestsIRepository jcoRepository =JCO.createRepository("MyJCoRepository", "MyPool");//create an IDoc repository that will be used for querying//IDoc meta dataIDoc.Repository idocRepository =JCoIDoc.createRepository("MyIDocRepository", "MyPool");//create a JCoIDoc.Server instanceMyIDocServer server = new MyIDocServer(srvProps, jcoRepository, idocRepository);//start the JCoIDoc.Server instance and listen for incoming//function requests and IDocsserver.start();System.out.println("Started MyIDocServer.");System.out.println("MyIDocServer is listening now...");}catch ( ng.Exception ex ) {System.out.println("Application error: " + ex);}}//method main}//class JCoIDocSample3三:测试结果执行JCoIDocSample3类,程序开始监听,等待接收ECC发送的IDOC在ECC中运行程序:ZTESTCHEN005 发送IDOC在Eclipse中显示已经接收到ECC发送过来的IDOC在C:\temp会增加一个XML文件和TXT文件XML文件内容如下:TXT文件内容如下。
SAPIDOC配置步骤
CHAPTER
集成其他模块实现业务协同
SAP ERP集成
通过SAP ERP系统与其他SAP模块(如SAP HR、SAP FI/CO等)进行集成,实现业务流程的自动化和协同工作。
SAP S/4HANA集成
将SAPIDOC与SAP S/4HANA系统进行集成,利用S/4HANA的先进功能和性能,提升业务处理效率和数据准确性。
SAPIDOC配置步骤
目录
SAPIDOC简介与前期准备 基础设置与参数配置 文档管理功能使用指南 报表生成与数据分析功能介绍 集成其他模块实现业务协同 系统维护与故障排除方法
01
CHAPTER
SAPIDOC简介与前期准备
1
2
3
SAPIDOC能够自动生成SAP系统的技术文档,包括数据字典、程序文档等,方便开发人员和系统管理员查看和维护。
SAP Cloud Platform集成
通过SAP Cloud Platform将SAPIDOC与其他SAP云应用进行集成,实现云上云下业务的无缝连接和高效协同。
与SAP其他模块集成方案讨论
数据同步策略制定
制定合理的数据同步策略,确保不同系统间的数据实时性和一致性。
数据安全保障
在数据传输和同步过程中,采用加密、身份验证等安全措施,确保数据的安全性和完整性。
操作演示
提供数据备份和恢复的详细操作步骤和演示,让用户能够熟练掌握操作方法。
数据备份恢复操作演示
用户培训
针对系统的功能和操作进行培训,让用户能够充分了解系统的使用方法和注意事项。
技术支持服务
提供全天候的技术支持服务,解答用户在使用过程中遇到的问题,确保系统的稳定运行。
服务介绍
详细介绍用户培训和技术支持服务的内容和方式,让用户能够了解并享受到完善的服务保障。
IDOC配置手册
SAP IDoc/ALE Setup
Create Partner Profile
SAP IDoc/ALE Setup
Distribute the distribution model
• Tcode: BD64 • Choose the distribution model • Edit Model view distribute
by Rajeev Kasturi
SAP IDoc/ALE Setup
What is IDOC/ALE?
What is IDOC? • An EDI implementation used in SAP • Most documents in SAP can be sent to external
SAP IDoc/ALE Setup
SAP IDoc/ALE Setup
DeHale Waihona Puke ine Logical System
• Create a new entry and save • Naming convention: RRSSSNNN
XX is the region, e.g. HK SSS is the system name, e.g. DVP, UAT, PRD NNN is the client number, e.g. 646, 777
done automatically • e.g. the PO sent to IPC will be posted
automatically as a SO in the IPC SAP system
SAP IDoc/ALE Setup
Main Steps to setup IDoc/ALE
1. * Define Logical System 2. * Assign Client to Logical System 3. ** Define RFC Destination 4. Ports in IDoc Processing 5. Maintain Distribution Model 6. Create Partner Profile 7. Distribute the Distribution Model
IDOC培训教程
IDOC培训教程一、概述二、IDOC功能介绍1.文档创建:IDOC支持在线创建多种类型的文档,如Word、Excel、PPT等。
用户只需在系统中选择相应的模板,即可快速文档。
2.文档编辑:IDOC提供丰富的文本编辑功能,包括字体、字号、颜色、对齐方式等,用户可以方便地对文档进行排版和美化。
3.文档审核:IDOC内置智能审核功能,可自动检测文档中的错误和问题,并提出修改建议。
用户可以根据建议进行修改,确保文档质量。
4.文档管理:IDOC提供便捷的文档管理功能,包括文档分类、标签、搜索、分享等。
用户可以轻松地组织和管理自己的文档。
5.团队协作:IDOC支持多人在线协作,团队成员可以实时查看和编辑同一文档,提高工作效率。
6.版本控制:IDOC自动保存文档的每个版本,用户可以随时查看历史版本,并进行比较和恢复。
7.数据分析:IDOC可以对文档中的数据进行智能分析,图表和报告,帮助用户更好地理解和利用数据。
8.智能搜索:IDOC提供强大的搜索功能,用户可以通过关键词、标签、作者等条件快速找到所需文档。
三、IDOC操作流程1.注册和登录:访问IDOC官网,注册账号并登录。
2.创建文档:在IDOC首页选择“新建文档”,选择相应的模板,填写文档内容。
3.文档编辑:在编辑页面,用户可以对文档进行排版、美化等操作。
4.文档审核:“审核”按钮,系统会自动检测文档中的错误和问题,并提出修改建议。
5.文档管理:在“我的文档”页面,用户可以对文档进行分类、标签、搜索等操作。
6.团队协作:在“团队”页面,用户可以邀请团队成员加入,共同编辑和审核文档。
7.版本控制:在“历史版本”页面,用户可以查看和恢复文档的历史版本。
8.数据分析:在“数据分析”页面,用户可以查看文档中的数据图表和报告。
9.智能搜索:在搜索框输入关键词,“搜索”按钮,系统会展示相关文档。
四、IDOC使用技巧1.快捷键:熟练使用IDOC的快捷键,可以提高工作效率。
IDOC receiver的配置与设计
PI 7.1: IDOC receiver的配置与设计按照”正常”的先后顺序,下面的说明介绍了如何在PI7.1场景中配置与设计IDOC Receiver.1.导入IDOC定义到ESR中。
在每个SWCV下面都有一个子节点Imported Objects,右键即可开始导入IDOC.上图中就导入了一个IDOC TYPE ACC_DOCUMENT03.2.由于IDOC的定义一般都只支持单个的IDOC创建,所以这里需要一点技巧来实现多个IDOC的同时创建:双击上面导入的IDOC,在右边的XSD或者WSDL tab页将这个IDOC 的定义下载到本地,然后使用文本编辑器打开添加入下面的红色文字从而修改IDOC属性:<xsd:element name=”IDOC”type=”ACC_DOCUMENT.ACC_DOCUMENT03″maxOccurs=”999999999″ />也可以加入maxOccurs=”unbounded”然后保存这个文件作为External Definitions再导入到ESR中。
3.接下来需要完成MESSAGE MAPPING和OPERATION MAPPING,这里首先要注意的是MESSAGE MAPPING是和external definitions mapping,而OPERATION MAPPING是和IDOC ACC_DOCUMENT.ACC_DOCUMENT03 MAPPING.对于MAPPING,需要特别注意的是对于Occurences为0…n也就是不是强制要求的IDOC 段,如果也有值填充的话,一定要ASSIGN一个值为空的常量给他,否则的话这个段就会被忽略。
对于BEGIN默认为1,而每个段的SEGMENT值可以参考ECC里面IDOC段的定义。
4.接下来可以去SLD中检查一下作为发送方的BUSINESS SYSTEM,有没有维护Logical system name.这个值比较重要,需要在三个地方保持一致。
最新AURORA-IDOC设计说明及开发指南
H AND E NTERPRISE S OLUTIONS AURORA-IDOC设计说明及开发指南作者: Jinxiao.lin建档日期: 2011/7/10最近更新: 2013/5/23控制号:版本: 1 .3审批:Project Manager拷贝号_____文档控制记录更改审阅人分发文档目录文档控制 (xxi)基本概念介绍 (1)SAP IDoc介绍 (1)IDoc主要功能 (1)IDoc文件例子 (1)IDoc的数据结构 (2)IDoc文件 (2)Aurora IDoc (2)Aurora IDoc事务流程 (3)项目实施 (4)部署 (4)从公司cvs下载最新的aurora_idoc项目 (4)修改配置文件 (4)开放端口 (5)前台配置 (8)配置JCO功能。
(9)在系统中注册配置页面,效果如下: (10)管理 (13)启动和关闭Aurora IDoc (13)监控,查询数据 (13)数据库表 (13)起初配置表 (13)运行时表 (13)SAP IDOC配置 (15)配置接收/发送IDOC系统(TCODE: SALE) (15)定义RFC目标系统(TCODE:SM59) (15)配置IDOC端口(TCODE:WE21) (16)创建段类型(TCODE:WE31) (17)创建IDOC类型(TCODE:WE30) (18)定义消息类(TCODE:WE81) (19)把基本类型分配给消息类型(TCODE:WE82) (19)分配模型视图(TCODE:BD64) (19)把消息类型加入伙伴参数文件的出站参数 (20)编写代码 (21)把idoc设置成后台自动发送(TCODE:sm36) (22)察看IDOC发送情况(TCODE:WE02和sm59) (22)SAP网关配置 (22)常见问题 (26)附件 (28)基本概念介绍SAP IDoc介绍IDoc的全称是Intermediate Document,是SAP用于传输业务数据的一种数据格式。
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配置步骤(MIGO自动发票校验IDOC配置)
准备
1.创建段类型WE31
WE31
2.创建基本凭证类型WE30
3.创建逻辑信息类型WE81
4.将逻辑信息类型与基本凭证类型绑定
WE82
出站设置
1.配置RFC目的地(如果出站的系统与入站的系统相同,则这步可以省略,一般系统中BASIS都已经配置
好了RFC链接)
SM59
2.设置端口
3.设置合作伙伴参数3.1定义逻辑系统
3.2设置合作伙伴(SAVE后添加出站参数)
入站准备
1.将函数与消息类型关联WE57
2.设置入站函数特性BD51
3.定义执行代码WE42
入站设置
1.设置合作伙伴(SCC4中查找集团逻辑系统)
WE20 合作伙伴编号写的是集团逻辑系统号,可以通过SCC4来查找。
譬如本需求中是直接连接自身的R3系统,此时找到当前R3系统的逻辑系统编号即可
TCODE:WE02、BD87可以查看IDOC的执行情况列如:WE02查IDOC执行情况
(1)IDOC配置问题
合作伙伴没有激活:
(2)传输数据问题
原因是FK01下没有建立对应的科目
TCODE:WE19可以重新运行IDOC。
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分配给了开发对象。
IDoc & ALE 配置
T-code : WE21 Port definition
T-code : BD64 Create Distribution Model
T-code : WE20 Partner profile
IDoc的测试
T-code : WE19
IDoc的显示
T-code: WE02
Hale Waihona Puke ALE/IDoc的实践性很强的技术,也就是说你做得越多,碰到的问题越多,提高也就越多,光是理论是没什么用得。
所以先把一般配置一套ALE/IDoc的流程总结一下,以后再把经验性、总结性的东西慢慢添加进去。
有两个比较有用的Menu T-code:WEDI, SALE。分别用来配置IDoc/EDI, 和ALE的。
自定义IDoc流程:
Create Segment: WE31
Create IDoc Type: WE30
Create IDoc Message Type: WE81
Assign Message Type to IDoc Type: WE82
ALE配置:
T-code SALE
Define Logical System
EDI(Electronic Data Interchange),名字上来看就是电子数据交换,用于不同企业间的电子数据的交换。比如,你要用DHL进行发货,那么就可以直接通过EDI来通知DHL,并且进行反馈。这里的IDoc是符合EDI标准的,需要用EDI子系统进行转换。
这里我要说一下分布式,听起来很玄乎的一个词。简单点来说就是,由于服务器性能和地域的限制,一个公司不可能把所有的业务都在一台机器上做,那么就要分开来。分开来之后,就有了几台,几十台,甚至几百台的服务器中。不同机器存储着相关的主数据,也就是说牵一发,而动全身,改动一台中的数据,就要使其他服务器上的数据也要做相应改动。如果人工来干这件事情的话,可想而知这个工作量和风险了,这是我们就引入了ALE/IDoc。有了这个技术,可以做到分布式主数据自动修改,只要有一台机器改动了,就会自动向其他相关服务器发出消息,说‘Hi, Let’s update together!’,结合SAP的Job技术,所有的一切都是自动的。这个对于跨区域的大型公司来说是很有用的!
IDOC配置手册
IDOC配置手册1.自建IDOC类型 (1)2.扩展标准IDOC (8)3.创建接口端口和逻辑系统 (13)4. 配置分布模型和伙伴参数 (17)5.激活指针 (21)6.设置筛选器 (22)7.异常处理 (27)1.自建IDOC类型1.1首先创建用来记录增量发送时间戮的自建表ZIDOC_LOG,结构如下图:通过自建表来记录IDOC发送的时间戳,有一定的漏单危险,推荐每次取值设置的时间为当前时间往前一段时间来避免因为多次IDOC发送过程中遗漏的记录。
假如想统计或查询已发记录,可以通过自建表来保存已发送信息。
1.2WE31定义自定义段ZMKAL(用于自定义IDOC类型发布生产版本),开发完成后可设置批rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr1.3WE30定义基本类型ZMKAL_IDOC,将刚才定义的段ZMKAL挂在此类型下,开发完成后可设置版本,表示开发完成,如需修改则需要取消发布。
1.4 WE81定义消息类型MKAL_IDOC。
1.5WE82 把基本类型MKAL_IDOC分配给消息类型MKAL_IDOC。
1.6定义自定义IDOC类型所需的结构ZMKAL_LINE。
表结构,ZMKAL_TYP,对应行类型结构为ZMKAL_LINE1.7创建发送生产版本IDOC用的函数:ZMKAL_IDOC_SEND,源代码如下,参数、异常定义见函数开头说明FUNCTION zmkal_idoc_send .*"----------------------------------------------------------------------*"*"Local interface:*" TABLES*" ZMKAL TYPE ZMKAL_TYP*" EXCEPTIONS*" NO_IDOC*" NO_MODEL*"----------------------------------------------------------------------*variables of general interestDATA:*control record for the IDocidoc_control LIKE edidc,*data records for the IDoct_idoc_data LIKE edidd OCCURS0WITH HEADER LINE,*table for the IDocs created by MASTER_IDOC_CONTROLt_comm_control LIKE edidc OCCURS0WITH HEADER LINE,*partner type for logical systemc_partner_type_logical_system LIKE edidc-rcvprt,*help variable for the check if an IDoc has to be createdh_create_idoc.* variables specific for this exampleDATA:* field strings with IDoc segment structuree1xmkal TYPE zmkal_line,* data to be put to the control recordc_message_type LIKE edidc-mestyp VALUE'ZMKAL_IDOC',c_base_idoc_type LIKE edidc-idoctp VALUE'ZMKAL_IDOC',* segment types to be put to the data record tablec_header_segtyp LIKE edidd-segnam VALUE'ZMKAL'.* check if an IDoc has to be created, read the distribution model CALL FUNCTION'ALE_MODEL_DETERMINE_IF_TO_SEND'EXPORTINGmessage_type = c_message_type* SENDING_SYSTEM = ' '* RECEIVING_SYSTEM = ' '* VALIDDATE = SY-DATUMIMPORTINGidoc_must_be_sent = h_create_idoc.* exceptions* own_system_not_defined = 1* others = 2.IF h_create_idoc IS INITIAL.raise no_model.* no message flow maintained in the model, nothing to do EXIT.ENDIF.* put the application header record to the IDocLOOP AT zmkal.MOVE-CORRESPONDING zmkal TO e1xmkal.* append record to IDoc data tablet_idoc_data-segnam = c_header_segtyp.t_idoc_data-sdata = e1xmkal.APPEND t_idoc_data.ENDLOOP.idoc_control-mestyp = c_message_type.idoc_control-idoctp = c_base_idoc_type.CALL FUNCTION'MASTER_IDOC_DISTRIBUTE'* in update task "if application document is posted in update taskEXPORTINGmaster_idoc_control = idoc_controlTABLEScommunication_idoc_control = t_comm_controlmaster_idoc_data = t_idoc_dataEXCEPTIONSerror_in_idoc_control = 1error_writing_idoc_status = 2error_in_idoc_data = 3sending_logical_system_unknown = 4OTHERS = 5.* A commit work has to be done. It could also be done in the calling * application.COMMIT WORK.READ TABLE t_comm_control INDEX1.IF sy-subrc <> 0.raise no_idoc.* no IDoc was created, you can react here, if neccessary ENDIF.ENDFUNCTION.1.8程序中通过自建时间戳表来抓取增量数据,并调用函数zmkal_idoc_send。
SAPIDOC的配置步骤
定义数据交换格式
确定与SAPIDOC进行数据交换的格式和标准,例 如XML、JSON或CSV等。确保数据格式的一致性 和准确性。
开发集成接口
在目标SAP系统上开发与SAPIDOC的集成接口, 实现数据的传输和交换。这可能涉及编写ABAP代 码、配置中间件或使用其他集成工具。
在SAPIDOC中,定义销售订单的类型,如标准订单、退货订单 、免费订单等。
建立和维护客户主数据,包括客户的基本信息、地址、联系方 式、信用控制等。
定义销售订单中的项目信息,如物料、数量、价格、交货日期 等。
根据企业实际需求,配置销售订单的审批流程、自动创建后续 文档(如发货、发票等)的规则。
实例三:发票配置演示
创建文档模板
使用SAPIDOC的模板设计器创 建适用于SAP S/4HANA的文 档模板,根据需求定义文档的 布局和样式。
配置数据映射和数据处理 逻辑
将数据从SAP S/4HANA的 OData服务映射到文档模板中 的对应字段,并配置必要的数 据处理逻辑,以满足业务需求 。
与其他SAP系统集成
确定集成方式
确定业务需求
明确需要实现的业务功能
根据企业或组织的实际需求,明确需要通过 SAPIDOC实现的具体业务功能,例如数据 交换、系统集成等。
分析业务流程
对需要实现的业务功能进行深入分析,了解业务流 程、数据流向以及涉及的系统和应用。
制定技术实现方案
根据业务需求和分析结果,制定技术实现方 案,包括系统架构、技术选型、数据交换格 式等。
测试输出和打印
IDOC 创建,增强,管理,配置
创建IDOC:
第一步:WE31 创建IDOC所包含的字段.
第二步:WE30 创建IDOC 把Segment分配给IDOC
第三步:WE81 创建信息类型
第四步:WE82 把IDOC类型与信息类型对应.
第五步:WE57 Assign Message & Idoc Type to a Function Module for Data Process
第六步:SM59 Define a RFC connection for Idoc transfer
第七步:WE21 Define a Port ( Assign a RFC destination which created in SM59 )
第八步:WE41/42 Creat Process Code
第九步:WE20 Define a Partner Profiles( Also creat a Outbound parameters with Port, or Inbound parameters with Process code )
管理IDOC:
WE02 显示IDOC,可以根据时间,IDOC类型查找IDOC,查看成功,出错信息。
WE46 IDOC管理(出\入)
WE60 IDOC类型文档(可以查看IDOC结构,和每个字段的描述.
WE19 根据IDOC号进行IDOC处理,可以修改IDOC值进行补发动作,处理分为内向和外向。
消息配置:
WE20 配置伙伴消息进和出IDOC类型
WE21 配置伙伴,。
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 传输失败。
可能原因包括网络故障、接收系统故障等。
PO发送SO创立IDOC配置
1、BD54逻辑系统创建 (2)2、SCC4将逻辑系统分配给客户端 (2)3、SM59新建RFC (3)4、WE21创建IDOC处理端口号 (4)5、XK02修改供应商 (4)6、WE20创建合作伙伴参数-供应商 (5)7、XD02客户设置(纳期回答使用) (6)8、WE20建立合作伙伴参数-客户(纳期回答使用) (7)9、WE20建立合作伙伴参数-逻辑系统 (8)10、NACR输出类型 (10)11、NACR纳期回答设置 (10)13、ME11采购信息记录设置 (12)14、VOE2 SD EDI 客户/供销商设置 (12)15、VOE4 SD EDI 转换 (13)16、CUNI EDI单位设置 (13)17、CMOD个别字段值设置 (13)PO发送SO创建IDOC配置1、BD54逻辑系统创建2、SCC4将逻辑系统分配给客户端3、SM59新建RFC数据发送设置4、WE21创建IDOC处理端口号5、XK02修改供应商6、WE20创建合作伙伴参数-供应商7、XD02客户设置(纳期回答使用)8、WE20建立合作伙伴参数-客户(纳期回答使用)数据接收设置9、WE20建立合作伙伴参数-逻辑系统注:如不需要纳期回答,不用配置ORDRSP10、NACR输出类型11、NACR纳期回答设置12、MM02物料设置13、ME11采购信息记录设置14、VOE2 SD EDI 客户/供销商设置15、VOE4 SD EDI 转换16、CUNI EDI单位设置17、CMOD个别字段值设置17-1 价格条件17-2 仓库17-3 抬头交货日期字段。
idoc两台机器的数据传输配置以及完整操作截图
1.创建记录发送时间的表:2.定义自定义段:WE313.定义基本类型WE30将段挂在基本类型下:4.定义消息类型we815.基本类型分配给消息类型:6.定义自定义结构zmkpf_line.(即数据库表mkpf的前五个字段)7.表结构,ZMKpf_TYP,对应行类型结构为ZMKpf_LINE8.创建发送idoc的函数:FUNCTION ZMKPF_IDOC_SEND .*"----------------------------------------------------------------------*"*"Local interface:*" TABLES*" ZMKPF TYPE ZMKPF_TYP*" EXCEPTIONS*" NO_IDOC*" NO_MODEL*"----------------------------------------------------------------------*variables of general interestDATA:*control record for the IDocidoc_control LIKE edidc,*data records for the IDoct_idoc_data LIKE edidd OCCURS 0 WITH HEADER LINE,*table for the IDocs created by MASTER_IDOC_CONTROLt_comm_control LIKE edidc OCCURS 0 WITH HEADER LINE,*partner type for logical systemc_partner_type_logical_system LIKE edidc-rcvprt,*help variable for the check if an IDoc has to be createdh_create_idoc.* variables specific for this exampleDATA:* field strings with IDoc segment structuree1xmkal TYPE ZMKPF_line,* data to be put to the control recordc_message_type LIKE edidc-mestyp VALUE 'ZMKPF_IDOC',c_base_idoc_type LIKE edidc-idoctp VALUE 'ZMKPF_IDOC',* segment types to be put to the data record tablec_header_segtyp LIKE edidd-segnam VALUE 'ZMKPF'.* check if an IDoc has to be created, read the distribution modelCALL FUNCTION 'ALE_MODEL_DETERMINE_IF_TO_SEND'EXPORTINGmessage_type = c_message_type* SENDING_SYSTEM = ' '* RECEIVING_SYSTEM = ' '* VALIDDATE = SY-DATUMIMPORTINGidoc_must_be_sent = h_create_idoc.* exceptions* own_system_not_defined = 1* others = 2.IF h_create_idoc IS INITIAL.raise no_model.* no message flow maintained in the model, nothing to doEXIT.ENDIF.* put the application header record to the IDocLOOP AT zmkpf.MOVE-CORRESPONDING zmkpf TO e1xmkal.* append record to IDoc data tablet_idoc_data-segnam = c_header_segtyp.t_idoc_data-sdata = e1xmkal.APPEND t_idoc_data.ENDLOOP.idoc_control-mestyp = c_message_type.idoc_control-idoctp = c_base_idoc_type.CALL FUNCTION 'MASTER_IDOC_DISTRIBUTE'* in update task "if application document is posted in update task EXPORTINGmaster_idoc_control = idoc_controlTABLEScommunication_idoc_control = t_comm_controlmaster_idoc_data = t_idoc_dataEXCEPTIONSerror_in_idoc_control = 1error_writing_idoc_status = 2error_in_idoc_data = 3sending_logical_system_unknown = 4OTHERS = 5.* A commit work has to be done. It could also be done in the calling * application.COMMIT WORK.READ TABLE t_comm_control INDEX 1.IF sy-subrc <> 0.raise no_idoc.* no IDoc was created, you can react here, if neccessaryENDIF.ENDFUNCTION.函数截图:11.定义逻辑系统:分配到集团:12.定义目标系统:13连接与权限测试:14配置分布模型:生成伙伴参数文件:更改伙伴参数文件:新建端口we21新建出站参数:执行函数ZMKPF_IDOC_SEND:发送数据:查看结果we02消息的状态监视:bd87点击处理按钮:端口xml文件:(发送了三次,xml文件有点大)<?xml version="1.0" encoding="UTF-8"?><ZMKPF_IDOC><IDOCBEGIN="1"><EDI_DC40SEGMENT="1"><TABNAM>EDI_DC40</TABNAM><MANDT>114</M ANDT><DOCNUM>0000000000002001</DOCNUM><DOCREL>702</DOCREL><STATUS>30</STATUS><DIRECT>1< /DIRECT><OUTMOD>4</OUTMOD><IDOCTYP>ZMKPF_IDOC</IDOCTYP><MESTYP>ZMKPF_IDOC</MESTYP><SND POR>SAPBP1</SNDPOR><SNDPRT>LS</SNDPRT><SNDPRN>ZSYS4674</SNDPRN><RCVPOR>ZXML</RCVPOR><RC VPRT>LS</RCVPRT><RCVPRN>BP5CLNT300</RCVPRN><CREDAT>20120821</CREDAT><CRETIM>050516</CRETI M><SERIAL>20120821050515</SERIAL></EDI_DC40><ZMKPF SEGMENT="1"><MJAHR>0000</MJAHR></ZMKPF></IDOC><IDOC BEGIN="1"><EDI_DC40 SEGMENT="1"><TABNAM>EDI_DC40</TABNAM><MANDT>114</MANDT><DOCNUM>0000000000002002</DOC NUM><DOCREL>702</DOCREL><STATUS>30</STATUS><DIRECT>1</DIRECT><OUTMOD>4</OUTMOD><IDOCTYP >ZMKPF_IDOC</IDOCTYP><MESTYP>ZMKPF_IDOC</MESTYP><SNDPOR>SAPBP1</SNDPOR><SNDPRT>LS</SNDP RT><SNDPRN>ZSYS4674</SNDPRN><RCVPOR>ZXML</RCVPOR><RCVPRT>LS</RCVPRT><RCVPRN>BP5CLNT300</ RCVPRN><CREDAT>20120821</CREDAT><CRETIM>050718</CRETIM><SERIAL>20120821050717</SERIAL></EDI_ DC40><ZMKPFSEGMENT="1"><MANDT>114</MANDT><MBLNR>4900000000</MBLNR><MJAHR>2011</MJAHR><VGART>WA< /VGART><BLART>PR</BLART></ZMKPF></IDOC><IDOC BEGIN="1"><EDI_DC40SEGMENT="1"><TABNAM>EDI_DC40</TABNAM><MANDT>114</MANDT><DOCNUM>0000000000003001</DOC NUM><DOCREL>702</DOCREL><STATUS>30</STATUS><DIRECT>1</DIRECT><OUTMOD>4</OUTMOD><IDOCTYP >ZMKPF_IDOC</IDOCTYP><MESTYP>ZMKPF_IDOC</MESTYP><SNDPOR>SAPBP1</SNDPOR><SNDPRT>LS</SNDP RT><SNDPRN>ZSYS4674</SNDPRN><RCVPOR>ZXML</RCVPOR><RCVPRT>LS</RCVPRT><RCVPRN>BP5CLNT300</ RCVPRN><CREDAT>20120821</CREDAT><CRETIM>190105</CRETIM><SERIAL>20120821190104</SERIAL></EDI_ DC40><ZMKPFSEGMENT="1"><MANDT>114</MANDT><MBLNR>4900000000</MBLNR><MJAHR>2011</MJAHR><VGART>WA< /VGART><BLART>PR</BLART></ZMKPF></IDOC></ZMKPF_IDOC>。
IDOC配置步骤(MIGO自动发票校验IDOC配置)
准备
1.创建段类型WE31
WE31
2.创建基本凭证类型WE30
3.创建逻辑信息类型WE81
4.将逻辑信息类型与基本凭证类型绑定
WE82
出站设置
1.配置RFC目的地(如果出站的系统与入站的系统相同,则这步可以省略,一般系统中BASIS都已经配置
好了RFC链接)
SM59
2.设置端口
3.设置合作伙伴参数3.1定义逻辑系统
3.2设置合作伙伴(SAVE后添加出站参数)
入站准备
1.将函数与消息类型关联WE57
2.设置入站函数特性BD51
3.定义执行代码WE42
入站设置
1.设置合作伙伴(SCC4中查找集团逻辑系统)
WE20 合作伙伴编号写的是集团逻辑系统号,可以通过SCC4来查找。
譬如本需求中是直接连接自身的R3系统,此时找到当前R3系统的逻辑系统编号即可
TCODE:WE02、BD87可以查看IDOC的执行情况列如:WE02查IDOC执行情况
(1)IDOC配置问题
合作伙伴没有激活:
(2)传输数据问题
原因是FK01下没有建立对应的科目
TCODE:WE19可以重新运行IDOC。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
IDOC配置手册作为目前ERP市场上最为领先的应用系统之一,一直以来,SAP R/3在提供API应用编程接口和接口工具方面也同样领先于其它ERP厂商。
ALE/IDocs 是SAP公司为SAP R/3 R4.6C版本所提供的接口机制,目前应用最为广泛。
在R4.0以后的版本中,又添加了技术上先进的BAPI。
本文作为系列介绍之一,对ALE/IDocs,BAPI以及其它可用的整合方式进行介绍。
1、ALE/IDocs是什么?ALE 是Application Link and Enabling的缩写,是SAP专门为SAP与SAP 之间所设计的整合中间件。
IDocs是中介文本(Intermediate DOCument) 的缩写,是SAP提供的系统整合专用的数据/消息格式。
ALE在SAP 3.0版本开始就作为SAP整个应用体系的一部分,为分布式数据交换提供了可靠安全的通讯机制。
A LE的设计,原本作为两个SAP流程之间的一种消息传递服务(Messaging Servic e) ,使SAP与SAP的业务流程之间企业数据能够有效的交换,为两个独立的S AP之间提供了的系统整合服务。
不过,随着应用的发展,ALE/IDocs接口机制也已然成为与其它非SAP系统的标准的整合方式。
ALE的设计结构可以分为三层,即应用层,数据/消息分配层和通讯层。
通讯层是SAP整合机制的基础,它利用远程功能呼叫RFC(Remote Function Call) 调用SAP系统的功能模块。
数据/消息分配层,主要提供三个关键服务:按数据分配模型决定数据接收者。
消息的过滤和转换。
数据/消息的压缩,以提高传递效率。
应用层直接与SAP系统接口,生成或从其它系统接收含有路由信息的消息文本IDocs,包括消息接收者的姓名,要求发送的类型以及对消息进行处理的规则。
ALE的机制代替了原来的SAP所提供的批数据通讯BDC(Batch Data Com munication) 方式。
顾名思义,BDC为系统之间提供了简单的数据批处理服务,还不能作为一种中间件技术,它没有提供系统之间进行无缝整合所要求的纠错功能、系统管理和其它安全措施。
总得说来,应用SAP的ALE机制进行SAP与S AP或非SAP系统整合有以下几个好处:ALE技术不受SAP版本升级的影响,它提供了版本向后兼容性。
ALE定义于SAP应用层,与SAP的逻辑层相对独立,整个ALE中间件独立于发送和接收系统。
ALE消息设计逻辑保证消息的“一次且只有一次”的消息传递。
ALE采用“存储-发送”技术确保消息即使系统发生故障或接收方没有准备接收时也可以达到目的地。
这样就保证接收方不至于收到重复消息。
ALE也提供了IDocs管理功能。
主要有文本缩减、文本版本控制以及文本数据过滤。
三种控制机制使得SAP开发人员可以根据实际需要对IDocs文本在运行中进行动态处理。
ALE提供了系统管理功能,允许对ALE系统进行启动/复位/恢复等系统操作,为开发人员提供了进一步的管理控制。
IDoc 几乎可以传带任何SAP应用的数据,是一种“外围”定义格式,与S AP的应用数据定义不直接相关。
IDocs已经广泛应用于早期的SAP-EDI的数据交换,因而它的设计有点类似于EDI的标准,即EDIFACT标准。
IDocs是以字符基础的,因而是可读的。
它有三种纪录类型,即:控制纪录-含文本信息,如IDoc类型,发送/接收方信息以及文本标识。
数据纪录-含管理和实际数据部分。
状态纪录-用来追踪文本传递各点的状态,如状态码,系统时间,错误标识等。
1.自建IDOC类型 (3)2.扩展标准IDOC (10)3. WE21,选择端口类型后点新建按钮 (15)4. 配置分布模型和伙伴参数 (19)5.激活指针 (23)RBDMIDOC 增量发送程序 (23)6.设置筛选器 (24)7.异常处理 (29)1.自建IDOC类型1.1首先创建用来记录增量发送时间戮的自建表ZIDOC_LOG,结构如下图:通过自建表来记录IDOC发送的时间戳,有一定的漏单危险,推荐每次取值设置的时间为当前时间往前一段时间来避免因为多次IDOC发送过程中遗漏的记录。
假如想统计或查询已发记录,可以通过自建表来保存已发送信息。
1.2WE31定义自定义段ZMKAL(用于自定义IDOC类型发布生产版本),开发完成后可设置批准,表示开发完成,如需修改则需要取消批准1.3WE30定义基本类型ZMKAL_IDOC,将刚才定义的段ZMKAL挂在此类型下,开发完成后可设置版本,表示开发完成,如需修改则需要取消发布。
1.4 WE81定义消息类型MKAL_IDOC。
1.5WE82 把基本类型Z MKAL_IDOC分配给消息类型MKAL_IDOC。
1.6定义自定义IDOC类型所需的结构ZMKAL_LINE。
表结构,ZMKAL_TYP,对应行类型结构为ZMKAL_LINE1.7创建发送生产版本IDOC用的函数:ZMKAL_IDOC_SEND,源代码如下,参数、异常定义见函数开头说明FUNCTION zmkal_idoc_send .*"----------------------------------------------------------------------*"*"Local interface:*" TABLES*" ZMKAL TYPE ZMKAL_TYP*" EXCEPTIONS*" NO_IDOC*" NO_MODEL*"----------------------------------------------------------------------*variables of general interestDATA:*control record for the IDocidoc_control LIKE edidc,*data records for the IDoct_idoc_data LIKE edidd OCCURS0WITH HEADER LINE,*table for the IDocs created by MASTER_IDOC_CONTROLt_comm_control LIKE edidc OCCURS0WITH HEADER LINE,*partner type for logical systemc_partner_type_logical_system LIKE edidc-rcvprt,*help variable for the check if an IDoc has to be createdh_create_idoc.* variables specific for this exampleDATA:* field strings with IDoc segment structuree1xmkal TYPE zmkal_line,* data to be put to the control recordc_message_type LIKE edidc-mestyp VALUE'ZMKAL_IDOC',c_base_idoc_type LIKE edidc-idoctp VALUE'ZMKAL_IDOC',* segment types to be put to the data record tablec_header_segtyp LIKE edidd-segnam VALUE'ZMKAL'.* check if an IDoc has to be created, read the distribution model CALL FUNCTION'ALE_MODEL_DETERMINE_IF_TO_SEND'EXPORTINGmessage_type = c_message_type* SENDING_SYSTEM = ' '* RECEIVING_SYSTEM = ' '* VALIDDATE = SY-DATUMIMPORTINGidoc_must_be_sent = h_create_idoc.* exceptions* own_system_not_defined = 1* others = 2.IF h_create_idoc IS INITIAL.raise no_model.* no message flow maintained in the model, nothing to do EXIT.ENDIF.* put the application header record to the IDocLOOP AT zmkal.MOVE-CORRESPONDING zmkal TO e1xmkal.* append record to IDoc data tablet_idoc_data-segnam = c_header_segtyp.t_idoc_data-sdata = e1xmkal.APPEND t_idoc_data.ENDLOOP.idoc_control-mestyp = c_message_type.idoc_control-idoctp = c_base_idoc_type.CALL FUNCTION'MASTER_IDOC_DISTRIBUTE'* in update task "if application document is posted in update taskEXPORTINGmaster_idoc_control = idoc_controlTABLEScommunication_idoc_control = t_comm_controlmaster_idoc_data = t_idoc_dataEXCEPTIONSerror_in_idoc_control = 1error_writing_idoc_status = 2error_in_idoc_data = 3sending_logical_system_unknown = 4OTHERS = 5.* A commit work has to be done. It could also be done in the calling * application.COMMIT WORK.READ TABLE t_comm_control INDEX1.IF sy-subrc <> 0.raise no_idoc.* no IDoc was created, you can react here, if neccessary ENDIF.ENDFUNCTION.1.8程序中通过自建时间戳表来抓取增量数据,并调用函数zmkal_idoc_send。