Customer Relationship Management Blogs by SAP
Stay up-to-date on the latest developments and product news about intelligent customer experience and CRM technologies through blog posts from SAP experts.
cancel
Showing results for 
Search instead for 
Did you mean: 
former_member182985
Contributor
0 Kudos

众所周知,bdoc中包含着CRM和ECC或者mobile client交互过程中很多重要的信息。学会如何准确分析bdoc error是保证数据正确传输的一个很重要的能力。但是大家经常会面对bdoc error不知道从何下手,找不到处理的方向。Don't worry!在这篇文章中,我将为大家介绍如何处理E04类型的bdoc error。

E04 error被称为“Bdoc validation error”,是bdoc error中比较常见的一种。顾名思义,这个error通常发生在CRM这边validation的过程当中。我在我们内部系统选取了一个例子来给大家做详细的步骤解析,来告诉大家如何处理这一error。

1. 先要选取这一行的bdoc error,然后点击“Show BDoc Msg errors/Receivers”按钮(如下图所示),就能看到bdoc error的详细信息了。点击错误后边的Longtext按钮,通常能看到一些注释,可以根据这些注释来检查你的customizing。在我们这个例子里边,注释是空的,所以我们接着进行下一个步骤。

2. 可以试着点击“reprocess”按钮来对这个bdoc error进行再处理。

3. 如果再处理也不好用,你可以针对bdoc error中包含的那个object来执行request load。用t-code R3AR2来定义request load的object,用t-code R3AR4来执行这个load,再通过t-code R3AR3来观察load的进度。比如我们的例子,通过error信息我们可以看到是bp在CRM这边不存在造成的这个error,那我们就可以定义request load从ERP重新download这个BP/customer。实际上,这个R11124 error通过重新download这个bp也就成功解决了。

4. 如果我们想通过debug来看这个error是从哪里抛出的,我们应该怎么做呢?我们看到error信息的最后一行有这样的字眼“Validation error occurred: Module ****, BDoc type ****”。我们可以从这个validation函数开始debug,在这个函数中设断点,然后点击reprocess按钮,程序就会停在这个函数中。再通过设置watchpoint在error代码出,执行,程序就会停到error抛出的地方了。

也是拿我们的这个例子来说,validation的函数是CRM_BUPA_MAIN_VAL。这个函数的名字可以在t-code SMO8FD中通过bdoc类型找到。我们在这个函数开始处设置断点,然后再处理这个bdoc error。

可以看到这时候程序停在了这个函数处。

之后我们通过Breakpoints -> Breakpoint at -> Breakpoint at message,来在error message R11 124处再设置断点。

点击F8。看!现在你看到是哪里抛出的这个bdoc error了。

在分析的过程中,我们发现其实E04这个类型的error并不是通过middleware抛出的,因此我们应该通过分析不同application的validation来解决这个error。如果你依然不能解决这个bdoc error,那么就根据这个validation函数或者抛出error的函数属于哪个模块,来报SAP incident到对应的模块。

针对这一话题,我同时还创建了SAP KBA 2300784, 如果有兴趣,大家可以继续查看这个KBA。

英文原版链接:http://scn.sap.com/docs/DOC-71725