IDOC的debug、错误处理和各项IDOC信息查询(各种查询,全)
IDOC总结及Tcode
下面的内容是BC620的课程目录,要是要看详细的可以下载BC620。
Application Link Enabling ALE主要为了分布式业务系统而设计的。
它可以使业务流程中的每个步骤分布在不同的SAP系统上,系统间可以通过IDoc交互数据.IDoc可以认为是个信封,它捎带消息从发送系统到接收系统中,它们可以用于SAP系统或非SAP系统中。
IDoc中包含一个control record,其中有接收系统、发送系统的一些配置信息,还有多条data record,或status record.一,Idoc:Intermediate document,系统间数据交换过程的媒介1): 面向消息(message-oriented)2): 异步(asynchronous)二,IDoc的Structure和Type1)最小结构单元: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 Outbound process1,系统中生成新的应用文档(即应用数据)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_NEW四,IDoc Inbound process1,从系统的入站端口中接受发送方的Idoc数据2,创建入站Idoc (Inbound Idoc)3,通过伙伴参数文档查找Idoc的处理类型4,确定相关应用后写入文档4.1:直接处理4.2:通过SAP业务工作流五,Idoc的Exception process通过工作流实现六,Idoc的连接配置1:Idoc数据交换的合作方必须在业务伙伴参数文档(Parter Profile,简称伙伴参数)中定义2:端口配置(Port:WE21)文件接口(File)事务性RFC(Transcation RFC)CPI-C: 直接连接R/2编程接口:(ABAP-PI,Programming Interfase)文件格式的XML(XML File)HTTP格式的XML(XML HTTP)3:伙伴参数的配置(WE20)通用设定、出站伙伴参数、入站伙伴参数通用设定:伙伴类型(Partner Type)和代码(Partner-Num)出站伙伴参数:伙伴功能、消息类型、消息代码、消息功能入站伙伴参数4:代码处理设定(WE41和WE42)七,Idoc开发A:Idoc类型编辑器(WE30)B:数据段类型(Segment Type)和数据段定义(Segment definition) WE31八,Idoc文档工具九,Idoc的测试工具WE19:通用测试工具WE15:测试通过消息控制(Message Control)的出站过程WE14:测试直接出站过程WE18:测试状态、文档的创建WE17:测试状态、文档的处理WE12:测试入站处理:已更新的出站文档WE16:测试入站处理:原始入站文档十,Idoc状态监控工具:WE02Idoc查找工具:WE09Idoc统计工具:WE07十一,主动监控功能:设置后台作业RSEIDOCM=============================================================创建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, orInbound parameters with Process code )管理IDOC:BDM5 - Consistency check (Transaction scenarios)BD62 - Define rulesBD79 - Maintain rulesBD55 - Defining settings for IDoc conversionWEDI - ALE IDoc AdministrationWE21 - Ports in Idoc processingWE60 - IDoc documentationSARA - IDoc archiving (Object type IDOC)WE47 - IDoc status maintenanceWE07 - IDoc statisticsBALE - ALE Distribution AdministrationWE05 - IDoc overviewBD87 - Inbound IDoc reprocessingBD88 - Outbound IDoc reprocessingBDM2 - IDoc TraceBDM7 - IDoc Audit AnalysisBD21 - Create IDocs from change pointersSM58 - Schedule RFC FailuresBasic config for Distributed data:BD64: Maintain a Distributed ModelBD82: Generate Partner ProfileBD64: Distribute the distribution ModelPrograms:RBDMIDOC – Creating IDoc Type from Change Pointers RSEOUT00 – Process all selected IDocs (EDI)RBDAPP01 - Inbound Processing of IDocs Ready for Transfer RSARFCEX - Execute Calls Not Yet ExecutedRBDMOIND - Status Conversion with Successful tRFC Execution RBDMANIN - Start error handling for non-posted IDocs RBDSTATE - Send Audit ConfirmationsFor testing you can use WE19。
IDOC实例详解(阵全)
IDOC实例详解IDOC是用于在不同的SAP系统之间或SAP系统与外部系统之间传输信息的一种文档表示形式。
本实例讲述从SAP客户端:SAPDEV 200传送自定义表中的内容至SAPPROD 700。
其中SAPPROD 700的在200中逻辑系统名称为:DEVCLNT700200的在200中逻辑系统名称为:DEVCLNT200SAPDEV传送的表结构如下:此表在DEV200和PRD700中均存在。
本实例中在讲述DEV200和PRD700之间的通讯设置中,如有不明白之处,还请参考本人的另一个文档“ALE配置及操作详解(阵全)”。
本实例讲述的是不通过消息控制的,处于不同物理地址的SAP系统间的数据传输。
一、使用TCODE:WE31创建一个段,该段须在DEV200和PRD700同时存在。
该段中只包含一个字段。
二、使用TCODE:WE30创建一个IDOC基本类型,该类型须在DEV200和PRD700同时存在。
三、使用TCODE:WE81创建一个逻辑消息类型。
只需在DEV200中创建。
四、TCODE:WE82在DEV200中指定逻辑消息类型和IDOC基本类型的对应关系。
五、使用TCODE:BD64在DEV200中添加消息类型ZMSGDEPARTMENT,并产生合作伙伴文件及分配,详细操作请见“ALE配置及操作详解(阵全)”。
如下图:BD64界面。
在DEV200中产生的对应于PRD700的RFC端口。
通过TCODE:WE21查看。
在DEV200中产生的对应于PRD700的合作伙伴参数,消息类型为ZMSGDEPARTMENT,可使用TCODE:WE20查看。
六、TCODE:SE38在DEV200中写该IDOC的出站处理程序。
代码如下:*& Report ZCREATEMATARIALIDOC*&*&---------------------------------------------------------------------* REPORT ZCREATEDEPARTMENTIDOC.DATA: G_IDOC_CTL LIKE EDIDC,ZSEGDEPARTMENT LIKE ZSEGDEPARTMENT.DATA: GI_RET_CTL LIKE EDIDC OCCURS 0,GI_IDOC_DATA LIKE EDIDD OCCURS 0 WITH HEADERLINE.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 = 'ZTYPDEPARTMENT'. "IDOC TYPEG_IDOC_CTL-MESTYP = 'ZMSGDEPARTMENT'. "MESSAGE TYPE* RECEIVERG_IDOC_CTL-RCVPRT = 'LS'. "PARTNER TYPEG_IDOC_CTL-RCVPRN = 'DEVCLNT700'. "PARTNER NOG_IDOC_CTL-RCVPOR = 'A000000017'. "PORT* SENDERG_IDOC_CTL-SNDPRT = 'LS'. "PARTNER TYPEG_IDOC_CTL-SNDPRN = 'DEVCLNT200'. "PARTNER NO* G_IDOC_CTL-SNDPOR = 'A000000017'. "PORTENDFORM. " BUILD_IDOC_CTL*&---------------------------------------------------------------------* *& Form BUILD_IDOC_SEG*&---------------------------------------------------------------------* FORM BUILD_IDOC_SEG.* HEAD DATAGI_IDOC_DATA-SEGNAM = 'ZSEGDEPARTMENT'. "SEGMENT NAMEGI_IDOC_DATA-SEGNUM = 1. "SEGMENT NOZSEGDEPARTMENT-DEPT_NAME = '资讯部'. "部门名称MOVE ZSEGDEPARTMENT TO GI_IDOC_DATA-SDATA.APPEND GI_IDOC_DATA.ENDFORM. " BUILD_IDOC_SEG七、PRD700中,使用BD64查看在本文档中第五步产生的分配模型。
Idoc学习笔记
2024/1/24
编写处理程序
为实现自定义逻辑,可以编写ABAP 程序来处理Idoc的生成、发送和接收 过程中的特定任务。
测试与验证
在自定义开发完成后,进行全面的测 试和验证以确保自定义Idoc结构和内 容的正确性和可用性。
10
03
Idoc接收与处理
2024/1/24
11
接收Idoc流程
监听端口
Idoc处理系统需要监听指定的端 口,以便接收来自SAP系统的 Idoc文件。
2024/1/24
接收Idoc
一旦有Idoc文件发送到监听端口, Idoc处理系统就会接收该文件。
验证Idoc
接收到的Idoc文件需要进行验证, 以确保文件的完整性和准确性。验 证过程可能包括检查文件格式、内 容结构、数据有效性等。
12
解析Idoc内容
解析文件
数据存储
经过验证的Idoc文件需要被解析,以 便提取出其中的数据。解析过程通常 基于Idoc的文件格式和结构进行。
转换后的数据可以被存储到数据库、 数据仓库或其他数据存储系统中,以 便后续处理和分析。
数据映射
解析出的数据需要根据预定义的数据 映射规则进行转换,以适应目标系统 的数据格式和要求。
通过IDoc实现采购订单数据的自动传输和 更新,确保采购数据的及时性和准确性。
库存管理
财务管理
利用IDoc进行库存数据的实时传输和更新 ,帮助企业实现库存的精准管理和控制。
通过IDoc实现财务数据的自动传输和处理 ,提高财务处理的效率和准确性。
2024/1/24
18
05
Idoc性能优化与监控
2024/1/24
定义Idoc类型
在SAP系统中,通过IMG( Implementation Guide) 配置自定义的Idoc类型,包 括定义基本结构和所需字段 。
IDoc基础教育(2024)
2024/1/29
1
目 录
2024/1/29
• IDoc概述与基础知识 • IDoc创建与配置方法 • IDoc处理过程详解 • 常见错误排查与解决方案 • 优化IDoc性能与稳定性策略 • 总结回顾与展望未来发展趋势
2
IDoc概述与基础知
01
识
2024/1/29
3
IDoc定义及作用
批量处理
对大量数据进行批量处理,减少数据库访问次数和网络传输次数, 提高处理效率。
缓存机制
引入缓存机制,对频繁访问的数据进行缓存,减少对数据库的访问压 力,提高系统性能。
2024/1/29
22
总结回顾与展望未
06
来发展趋势
2024/1/29
23
关键知识点总结回顾
IDoc基础知识
包括IDoc的基本概念、结构、 类型以及其在SAP系统中的应
的监控和故障排除。
24
行业应用案例分析
1 2
制造业案例
展示了IDoc在制造业中的实际应用,如采购订单 、销售订单和库存管理等业务流程的自动化。
零售业案例
分析了IDoc在零售业中的应用,如实现与供应商 之间的电子数据交换,提高供应链效率。
3
物流业案例
探讨了IDoc在物流业中的应用,如实现订单、发 货和收货等信息的电子化传输和处理。
IDoc类型
根据业务场景和需求,IDoc可分为多种类型,如订单、发票、交货单等。
2024/1/29
IDoc结构
IDoc由控制记录、数据记录和状态记录三部分组成,其中控制记录包含传输控制信息, 数据记录包含实际业务数据,状态记录用于跟踪IDoc的处理状态。
IDoc的扩展性
IDOC的debug、错误处理和各项IDOC信息查询(各种查询,全)
IDOC的debug、错误处理和各项IDOC信息查询(各种查询,全)IDOC的数据表:EDIDC Stores the Control Record information an IDOCEDID4 Stores the Data Records (version 4.6)EDIDD Data Seg (EDI Intermediate doc)EDIDS Stores the Status of an IDOCIDOC的测试一般通过WE09/WE19去测试,但是一些通过标准程序触发的IDOC没法通过WE09/WE19去测试,例如,AP IDOC 的RFFOEDI11、IDOC的查询: WE022、IDOC的FM的查询: IDOC_OUTPUT_ (message type)The function modules for generating the IDocs are usually called IDOC_OUTPUT_, where represents the relevant message type. Dependingon the output mode, the generated IDocs are either collected or forwarded for immediate dispatch.WE42 通过message type 查询到process code,然后再通过process code 查到outbound FM。
WE02查询message type partner no part type到WE20里面查询对应的FM。
其实IDOC的FM的查询,可以反过来去思考IDOC的配置,就可以从中去找了。
3、IDOC test :WE19 ,例如你修改了某个segment 的值,然后通过WE19就可以测试修改是否成功。
可使用于标准订单的重新传输。
4、通过idoc baisc type去查找:通过WE02查找到了这个IDOC的basic type 然后查看到这个basic type里面的segment对应的structure,利用where to used-list,查到对应的程序。
DEBUG命令详解
debug命令DEBUG命令参数详解DEBUG是一个DOS实用程序,是供程序员使用的程序调试工具,可以用它检查内存中任何地方的字节以及修改任何地方的字节。
它可以用于逐指令执行某个程序以验证程序运行的正确性,也可以追踪执行过程、比较一个指令执行前后的值以及比较与移动内存中数据的范围,读写文件与磁盘扇区。
它的功能包括以下几个方面。
1,直接输入,更改,跟踪,运行汇编语言源程序;2,观察操作系统的内容;3,查看ROM BIOS的内容;4,观察更改RAM内部的设置值;5,以扇区或文件的方式读写软盘数据DEBUG把所有数据都作为字节序列处理。
因此它可以读任何类型的文件。
DEB UG可以识别两种数据: 十六进制数据和ASCⅡ码字符。
它的显示格式是各个字节的十六进制值以及值在32与126之间的字节的相应ASCⅡ码字符。
在DEBUG中输入数据有两种方法: 提示方法和非提示方法。
在用提示方法时,用户可以输入要求输入数据的命令,后跟数据所要输入的地址。
然后用户就可以看到该地之中已有内容及一个冒号提示符。
此时用户可以在提示符下输入一个新的值或者按下回车键或CTRL+C回到短横(-)提示符。
在运用非提示方法时,用户可以输入要输入数据的内存地址以及要输入的字节。
但与使用字处理程序或正文编辑程序时不一样,在使用DEBUG时,用户不能直接移动光标到一入口点输入或修改数据,而要一次输入一个或几个字节。
在使用DEBUG时可以只涉及内存中的数据,从而一般都要指定所要处理的内存地址,地址的输入格式是: [段地址]: [位移]。
如果没有输入地址,DEBUG将假定为当前内存段,从位于地址100H的字节开始。
前100H字节保留给程序段前缀使用,这一专用区域用于建立DOS与程序之间的联系。
DEBUG总是用四位十六进制数表示地址。
用两位数表示十六进制数据。
讲到这里大家应该对DEBUG有了初步的了解,但是光知道这些可不够,接下来我来讲讲DEBUG的命令格式和命令。
DEBUG 使用教程 查错 排错 debug 模式 大全
1.项目报错,即eclipse里面项目工程有红叉eclipse中打开Problems视图,window->show view->other->General->Problems通过Problems视图中的错误信息,找到错误源(有可能是java文件,或者(xml,有可能是 1.xml有错;2.含有错误字符(比如从word复制过来);3.假报)buildpath -> eclipse中工程,右键->Build Path-> Configure Build path -> Libraries选项卡察看JRE System Library(引入jdk自带包0),Server Runtime(引入jsp/servlet实现包,比如Apache Tomcat V6.0(这个是window->preferences->server下定义的Runtime Environment对应))Web App Libraries(包含了eclipse中项目工程自带的WEB-INF/lib 下引入的jar包)junit(调试用,不一定需要)User Library(一般eclipse使用者把自己引入的jar包放在一起,定义一个library,在eclipse中引用)2.项目启动,控制台报错察看控制台错误信息可能错误信息包括:1.session factory(可能是hibernate的实体类定义错误), 控制台一般看到dao,sessionFactory,hibernate的关键字eg.Caused by: org.hibernate.PropertyNotFoundException: Could not find a getter for name1 in class demo.ssh2.model.Roleatorg.hibernate.property.BasicPropertyAccessor.createGetter(BasicProperty Accessor.java:306)atorg.hibernate.property.BasicPropertyAccessor.getGetter(BasicPropertyAc cessor.java:299)atorg.hibernate.mapping.Property.getGetter(Property.java:294)atorg.hibernate.tuple.entity.PojoEntityTuplizer.buildPropertyGetter(PojoEnt ityTuplizer.java:300)atorg.hibernate.tuple.entity.AbstractEntityTuplizer.<init>(AbstractEntityTu plizer.java:141)atorg.hibernate.tuple.entity.PojoEntityTuplizer.<init>(PojoEntityTuplizer.ja va:78)... 55 more2.bean定义错误,dao,service,action,1.<property name="" ref=""/>中的ref找不到对应的bean的id从sessionfactory->dao->service->action,前面的错误总能导致出后面的错误eg.比如定义了如下spring配置信息<bean id="sessionFactory" ..../><bean id="baseDao" abstract="true" class="demo.ssh2.dao.BaseHibernateDao"><property name="sessionFactory" ref="sessionFactory1" /></bean>控制台报错org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'userDao' defined in file...(备注:此处省略多少字)Caused by: org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean named 'sessionFactory1' is definedatorg.springframework.beans.factory.support.DefaultListableBeanFactory.g etBeanDefinition(DefaultListableBeanFactory.java:527)atorg.springframework.beans.factory.support.AbstractBeanFactory.getMerg edLocalBeanDefinition(AbstractBeanFactory.java:1083)atorg.springframework.beans.factory.support.AbstractBeanFactory.doGetB ean(AbstractBeanFactory.java:274)atorg.springframework.beans.factory.support.AbstractBeanFactory.getBean (AbstractBeanFactory.java:190)atorg.springframework.beans.factory.support.BeanDefinitionValueResolver .resolveReference(BeanDefinitionValueResolver.java:322)... 30 more2.setter方法名和spring配置文件中的<property name="" ref=""/>中的name 不匹配eg.比如定义如下:<bean id="roleService" class="demo.ssh2.service.RoleService"><property name="roleDao" ref="roleDao"/></bean>RoleService中roleDao的setter方法如下public void setRoleDao1(RoleDao roleDao) {this.roleDao = roleDao;}方法setRoleDao1和<property name="roleDao" 不匹配控制台报错:Caused by: org.springframework.beans.NotWritablePropertyException:Invalid property 'roleDao' of bean class[demo.ssh2.service.RoleService]:Bean property 'roleDao' is not writable or has an invalid setter method.Did you mean 'roleDao1'?atorg.springframework.beans.BeanWrapperImpl.setPropertyValue(BeanWr apperImpl.java:1024)atorg.springframework.beans.BeanWrapperImpl.setPropertyValue(BeanWr apperImpl.java:900)atorg.springframework.beans.AbstractPropertyAccessor.setPropertyValues( AbstractPropertyAccessor.java:76)atorg.springframework.beans.AbstractPropertyAccessor.setPropertyValues( AbstractPropertyAccessor.java:58)atorg.springframework.beans.factory.support.AbstractAutowireCapableBea nFactory.applyPropertyValues(AbstractAutowireCapableBeanFactory.jav a:1358)... 28 more3.缺少setter方法比如配置<bean id="roleService" class="demo.ssh2.service.RoleService"><property name="roleDao" ref="roleDao"/></bean>在类RoleService中没有定义roleDao的setter方法控制台报错:Caused by: org.springframework.beans.NotWritablePropertyException:Invalid property 'roleDao' of bean class [demo.ssh2.service.RoleService]:Bean property 'roleDao' is not writable or has an invalid setter method.Does the parameter type of the setter match the return type of the getter?atorg.springframework.beans.BeanWrapperImpl.setPropertyValue(BeanWr apperImpl.java:1024)atorg.springframework.beans.BeanWrapperImpl.setPropertyValue(BeanWr apperImpl.java:900)atorg.springframework.beans.AbstractPropertyAccessor.setPropertyValues( AbstractPropertyAccessor.java:76)atorg.springframework.beans.AbstractPropertyAccessor.setPropertyValues( AbstractPropertyAccessor.java:58)atorg.springframework.beans.factory.support.AbstractAutowireCapableBea nFactory.applyPropertyValues(AbstractAutowireCapableBeanFactory.jav a:1358)... 28 more3.eclipse缓存问题,更改了文件,部署到web server中的文件仍然旧的servers视图中,先停止server,然后删除servereclipse中点击项目工程,Project->clean->最上面选中Clean Projects selected below->点击ok3.项目运行,控制台报错察看控制台错误信息可能错误信息包括:1.jdbc配置错误(数据库url,用户名,密码)比如jdbc配置文件错误,将ername=root修改为ername=root1页面报错如下:org.springframework.transaction.CannotCreateTransactionException: Could not open Hibernate Session for transaction; nested exception is org.hibernate.exception.GenericJDBCException: Cannot open connection 控制台报错如下:2013-11-20 09:39:25,441 [org.hibernate.util.JDBCExceptionReporter]-[ERROR] Cannot create PoolableConnectionFactory (Access denied for user 'root1'@'localhost' (using password: YES))2.页面访问不到404或页面有异常信息根据访问的url里面的action,找到Action类对应的方法,打个断点(打在方法体内的代码块的第一行)如果不能进入debug视图,表示struts.xml配置文件有问题,页面输入url中的action找不到对应的Action类eg.比如将strus.xml配置名为<action name="role/list",页面访问role/list1.acito页面报错:ng.NoSuchMethodException:demo.ssh2.action.RoleAction.list1()ng.Class.getMethod(Class.java:1605)如果能进入debug视图,表示struts.xml配置文件没有问题,1.一般控制台会有异常栈错误信息eg.比如RoleAction有如下方法public String list(){List<?> list = roleService.getList();ActionContext.getContext().put("roles", list);return "list";}RoleService中getList方法如下public List<?> getList(){throw new RuntimeException();}页面报错:ng.RuntimeExceptiondemo.ssh2.service.RoleService.getList(RoleService.java:13)2.struts2标签或jstl标签使用错误3.页面不能显示出数据,1.action中私有实体类属性没有gettter/setter方法,或者没有使用request.setAttribute,或者使用ActionContext.getContext().put,传值2.struts2标签或jstl标签使用不对,但页面不报错。
2024年度IDoc易学教程
IDoc处理错误,可能原因包括数据格式错误、处理逻辑错 误等,解决方案包括检查数据格式、修复处理逻辑错误等 。
问题三
自定义字段无法识别,可能原因包括字段定义错误、增强 代码错误等,解决方案包括检查字段定义、修复增强代码 错误等。
12
PART 03
IDoc接收与处理
REPORTING
2024/3/23
IDoc易学教程
REPORTING
2024/3/23
1
2024/3/23
• IDoc基本概念与原理 • IDoc创建与配置 • IDoc接收与处理 • IDoc高级功能应用 • 总结回顾与展望未来
目录
PART 01
IDoc基本概念与原理
REPORTING
2024/3/23
3
IDoc定义及作用
在学习过程中,我遇到了很多问题,但通过思考和请教老师,我逐 渐提高了解决问题的能力。
25
行业发展趋势预测
2024/3/23
IDoc在数字化转型中的作用
随着企业数字化转型的加速推进,IDoc作为实现系统间数据传输的重要工具,将在企业 信息化建设中发挥越来越重要的作用。
IDoc与云计算的结合
云计算技术的发展为IDoc的应用提供了新的可能性,未来IDoc有望与云计算技术相结合 ,实现更高效、更灵活的数据传输和处理。
REPORTING
2024/3/23
23
关键知识点总结回顾
IDoc基本概念和原理
介绍了IDoc的定义、作用、传输原理等基本 概念。
IDoc创建与配置
讲解了如何在SAP系统中创建和配置IDoc, 包括基本设置、参数配置等。
2024/3/23
DEBUG命令详解
DEBUG命令详解DEBUG是DOS中的一个外部命令,从DOS 1.0起就带有此命令,因此可见此命令的重要性了。
虽然此命令的功能非常强大,可以解决许多问题,可是对许多人来说,尤其是初学者来说,却非常不易掌握。
因此,现将DEBUG的命令详细介绍一番,以让大家知道它的使用。
Debug:A(汇编)直接将8086/8087/8088 记忆码合并到内存。
该命令从汇编语言语句创建可执行的机器码。
所有数值都是十六进制格式,必须按一到四个字符输入这些数值。
在引用的操作代码(操作码)前指定前缀记忆码。
a [address]参数address指定键入汇编语言指令的位置。
对address 使用十六进制值,并键入不以“h”字符结尾的每个值。
如果不指定地址,a 将在它上次停止处开始汇编。
有关将数据输入到指定字节中的信息,请单击“相关主题”列表中的Debug E(键入)。
有关反汇编字节的信息,请单击“相关主题”列表中的Debug U(反汇编)。
说明使用记忆码段的替代记忆码为cs:、ds:、es: 和ss:。
远程返回的记忆码是retf。
字符串处理的记忆码必须明确声明字符串大小。
例如,使用movsw 可以移动16 位的字串,使用movsb 可以移动8 位字节串。
汇编跳转和调用汇编程序根据字节替换自动将短、近和远的跳转及调用汇编到目标地址。
通过使用near 或far 前缀可以替代这样的跳转或调用,如下例所示:-a0100:05000100:0500 jmp 502 ; a 2-byte short jump0100:0502 jmp near 505 ; a 3-byte near jump0100:0505 jmp far 50a ; a 5-byte far jump可以将near 前缀缩写为ne。
区分字和字节内存位置当某个操作数可以引用某个字内存位置或者字节内存位置时,必须用前缀word ptr 或者前缀byte ptr 指定数据类型。
DEBUG各命令详细说明(很详细)
DEBUG各命令详细说明(很详细)2.启动DEBUG在命令窗口中启动DEBUG,启动命令一般为:DEBUG [文件名] [参数表]。
其中:文件名指定被调试的文件,其包括名和后缀,参数表是被调试文件运行时所需要的参数。
被调试的文件可以是系统中的任何文件,但通常它们的后缀为.EXE或.COM。
当DEBUG启动成功后,将显示连接符“-”,这时,可输入各种DEBUG命令。
DEBUG中所有命令及其含义如DEBUG各命令功能说明表所示。
关于使用命令的几点说明:在提示符“-”下才能输入命令,在按“回车”键后,该命令才开始执行命令是单个字母,命令和参数的大小写可混合输入可用F1、 F2、F3、Ins、Del、左移键、右移键等编辑键来编辑本行命令当命令出现语法错误时,将在出错位置显示“^ Error”可用Ctrl+C或Ctrl+Break来终止当前命令的执行,还可用Ctrl+S或Ctrl+Num Lock来暂停屏幕显示(当连续不断地显示信息时)以下通过实现十九个示例来熟悉DEBUG的命令集和基本的汇编指令。
R命令的使用R命令作用:观看和修改寄存器的值。
在提示符“-”下输入以下命令:R。
DEBUG将会显示出当前所有寄存器和标志位的状态。
接下来再输入命令RCX。
在提示符“:”后输入100。
该命令的作用是将寄存器CX的值设置为100(注意:DEBUG使用的是十六进制,这里的100相当于十进制的256。
)最后再执行R命令,观看修改后的寄存器值。
H命令的使用H命令作用:计算两个十六进制数的和与差。
在提示符“–”下输入以下命令:H 10 1。
观看命令执行结果。
运行结果的前一个数是计算出来的和,后一个数是计算出来的差。
计算结果均用十六进制形式表示。
D命令的使用D命令作用:显示内存区域的内容。
在提示符“–”下连续执行命令R、D、D。
观看命令执行结果。
前面已经介绍过了,命令R的作用是显示当前寄存器的值。
而命令D的作用是显示内存区域的内容,最左边是内存的起始地址,中间以十六进制的形式显示内存值,最右边是以ASCII码的形式显示内存值。
debug主要命令详解
debug主要命令详解DEBUG是为汇编语言设计的一种高度工具,它通过单步、设置断点等方式为汇编语言程序员提供了非常有效的调试手段。
一、DEBUG程序的调用在DOS的提示符下,可键入命令:C:\DEBUG [D:][PATH][FILENAME[.EXT]][PARM1][PARM2]其中,文件名是被调试文件的名字。
如用户键入文件,则DEBUG将指定的文件装入存储器中,用户可对其进行调试。
如果未键入文件名,则用户可以用当前存储器的内容工作,或者用DEBUG命令N和L把需要的文件装入存储器后再进行调试。
命令中的D指定驱动器PATH为路径,PARM1和PARM2则为运行被调试文件时所需要的命令参数。
在DEBUG程序调入后,将出现提示符,此时就可用DEBUG命令来调试程序。
二、DEBUG的主要命令1、显示存储单元的命令D(DUMP),格式为:_D[address]或_D[range]例如,按指定范围显示存储单元内容的方法为:-d100 12018E4:0100 c7 06 04 02 38 01 c7 06-06 02 00 02 c7 06 08 02 G...8.G.....G...18E$:0110 02 02 bb 04 02 e8 02 00-CD 20 50 51 56 57 8B 37 ..;..h..M PQVW.718E4:0120 8B其中0100至0120是DEBUG显示的单元内容,左边用十六进制表示每个字节,右边用ASCII字符表示每个字节,·表示不可显示的字符。
这里没有指定段地址,D命令自动显示DS段的内容。
如果只指定首地址,则显示从首地址开始的80个字节的内容。
如果完全没有指定地址,则显示上一个D命令显示的最后一个单元后的内容。
2、修改存储单元内容的命令有两种。
·输入命令E(ENTER),有两种格式如下:第一种格式可以用给定的内容表来替代指定范围的存储单元内容。
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。
IDOC错误消息查询
2. 根据消息类型和处理状态筛选IDoc
IDoc列表
3. 显示IDoc消息内容鼠标双击IDoc编号,显示IDoc详细内容
IDoc详细信息
鼠标点击段名称,显示IDoc中的业务数据
4. IDoc文档
如果需要查询段名称和字段列表对应的业务数据,可以通过TCODE: WE60,查看IDoc消息对应的文档
输入IDoc基本类型,点击”HTML”格式按钮,显示IDoc文档
IDoc文档
三、只显示包含错误状态的IDoc列表WE07 使用TCODE: WE07,可以只查看报错的IDoc列表
IDoc列表按照发送方向进行分类.双击文件夹,可以显示指定分类的IDoc列表.
按照消息类型分类的IDoc列表,只包含错误的IDoc数据.
四、根据IDoc内的业务数据内容检索IDoc WE09 TCODE: WE09
首先输入日期和IDoc基本类型,如采购订单EKSEKS01.
然后,输入筛选条件段名称,字段名称和筛选值.(段名称和字段名称可以通过IDoc文档WE60进行查询.)
如,需要查找凭证编号为4000010604的采购订单对应的IDoc,则在段部分输入E1PISTY(采购订单抬头信息).然后通过下拉菜单,选择字段EBELN(采购订单编号),最后在值中输入采购订单编号4000010604.
回车后,显示IDoc列表.双击IDoc编号,可以显示消息详细内容
IDoc消息详细内容。
SAP IDOC错误监控
SAP IDOC错误监控操作步骤一、进入SAP后用事务代码WE02进入IDOC显示界面
WE02进入以后的IDOC显示界面
二、在IDOC显示界面,点击执行按钮,查看IDOC详细信息。
点击执行按钮后进入的IDOC清单界面
三、查看错误信息并处理错误
1.查看IDOC清单下面的状态,若状态显示是51,则表示有错误,同时状态灯是红灯;若状态显示是53,则表示没有错误,同时状态灯是绿灯。
2.如果状态是51,则双击该IDOC编号,进入IDOC显示,查看IDOC状态记录并复制IDOC编号。
3.新建一个会话,用事务代码BD87进入消息状态监视器。
4.粘贴IDOC编号,进入错误处理界面。
5.点击错误信息,点击处理按钮,当IDOC状态从51变为53就说明处理成功,处理完成。
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,查看成功,出错信息。
C语言代码调试与错误排查的技巧与工具
C语言代码调试与错误排查的技巧与工具调试是程序开发过程中必不可少的一步,它能帮助开发人员找出代码中的错误,并修复这些错误,以确保程序的正常运行。
对于C语言开发者来说,熟悉并掌握调试技巧以及对应的工具是非常重要的。
本文将介绍一些C语言代码调试与错误排查的技巧与工具,帮助开发者更高效地进行调试。
一、使用printf语句进行调试在C语言中,使用printf语句是最基础的调试方法之一。
通过在代码中插入一些打印语句,我们可以查看程序在不同部分的执行情况,以及变量值的变化。
例如:```c#include <stdio.h>int main() {int a = 10;int b = 5;printf("a的值为:%d\n", a);printf("b的值为:%d\n", b);int c = a + b;printf("c的值为:%d\n", c);return 0;}```上述代码中的printf语句会将变量a、b和c的值打印出来,开发者可以根据需要在代码中添加或删除这些语句,以观察程序的执行情况。
二、使用断言进行错误排查断言是一种验证程序假设是否为真的方法,它可以在代码中插入一些条件判断,用于验证一些预期的条件是否满足。
如果不满足条件,则断言失败,程序会停止执行并打印出相关信息。
在C语言中,我们可以使用`<assert.h>`头文件中的`assert()`宏来进行断言。
例如:```c#include <stdio.h>#include <assert.h>int divide(int a, int b) {assert(b != 0);return a / b;}int main() {int result = divide(10, 0);printf("结果为:%d\n", result);return 0;}```上述代码中的`assert(b != 0)`会验证b是否为0,如果为0,则断言失败,程序停止执行。
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测试
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。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
IDOC的数据表:
EDIDC Stores the Control Record information an IDOC
EDID4 Stores the Data Records (version 4.6)
EDIDD Data Seg (EDI Intermediate doc)
EDIDS Stores the Status of an IDOC
IDOC的测试一般通过WE09/WE19去测试,但是一些通过标准程序触发的IDOC没法通过WE09/WE19去测试,例如,AP IDOC 的RFFOEDI1
1、IDOC的查询:WE02
2、IDOC的FM的查询:IDOC_OUTPUT_<MT> (message type)
The function modules for generating the IDocs are usually called IDOC_OUTPUT_<MT>, where <MT> represents the relevant message type. Depending on the output mode, the generated IDocs are either collected or forwarded for immediate dispatch.
WE42 通过message type 查询到process code,然后再通过process code 查到outbound FM。
WE02查询message type partner no part type到WE20里面查询对应的FM。
其实IDOC的FM的查询,可以反过来去思考IDOC的配置,就可以从中去找了。
3、IDOC test :WE19 ,例如你修改了某个segment 的值,然后通过WE19就可以测试修改是否成功。
可使用于标准订单的重新传输。
4、通过idoc baisc type去查找:
通过WE02查找到了这个IDOC的basic type 然后查看到这个basic type里面的segment对应的structure,利用where to used-list,查到对应的程序。
5、IDOC报错重发(前提是有报错):BD87和WE15
首先IDOC是报错的,有些时候,会指定某个segment的:
BD87:直接运行就好了。
WE15:有些IDOC例如(VL03,VF03里触发的),当报错,需要repeat,然后通过WE15去重发,才可以debug。
A、设断点:
B、repeat IDOC 并设置发送时间:
B、进入WE15重发,debug。
6、IDOC debug的一些技巧:
7、Deactive IDOC type:通过BD64,把原先配好的IDOC basic type删掉即可,然后需要重新激活的时候,再配置上。
IDOC传输成功状态:
传输异常:
中间服务PI堵了。
容易出现这个错误。