写点什么

利用 CRM 中间件 Middleware 从 ERP 下载 Customer Material 的常见错误

用户头像
Jerry Wang
关注
发布于: 2021 年 05 月 23 日
利用CRM中间件Middleware从ERP下载Customer Material的常见错误

使用事务码 VD51 和 VD52 创建和修改 Customer Material。下图是我在 ERP 创建的 Material,为其维护了一个 Customer Material AOP。



当下载到 CRM 后,在 WebClient UI 上显示如下:




下载 Customer Material 的主要配置:


  • 通过表 KNMT 的字段 KUNNR 指定待下载的 Customer ID:



  • 将 ERP 的 Material 1427 先下载到 CRM

常见错误

  • 错误消息 Number not in interval XXX - XXX when downloading a customer from ERP


这个错误是试图从 ERP 下载上图编号为 3471 的 Customer。错误消息:



为什么错误消息里提到的 interval 是 0000300000 - 0000399999?当 ERP 的 Customer 被下载到 CRM 时,会创建一个对应的 Business Partner 的实例。在这个例子里,通过调试方式得知 CRM 创建 Business Partner 时使用的 Partner group 为 0002:



查看 0002 对应的 number range 设置为 07:



而 07 对应的 interval 即为错误消息里提到的范围:



解决方案:把 0002 对应的 number range 改为 03



  • 错误消息 Form of address 0001 not designated for organization


通过调试 CRM_BUPA_MAIN_VAL,发现错误消息在第 34 行抛出:



虽然这个 Customer 实例被判定成一个 Organization(因为 category 字段为 2),但是 PERSON 的字段被置位,而不是 ORGANIZATN 字段,因此出现这个错误消息。



解决方案:


在 ERP 事务码 SM30 里,打开 view V_TSAD3,把 0003 标记为 Organization:



然后把 Customer 3471 的 title 从 Ms 改成 Company:



之后即可成功下载。



  • Customer classification 06 does not exist

  • 通过调试发现该错误信息是下图第 22 行抛出的,因为在表 crmc_classif 里找不到对应的配置项:



可以在 Define Customer Class 里维护这个配置表:



在我的系统里,没有 06 这个 classification 对应的配置项。



首先要搞清楚代码里的这个 06 从哪里来的?


在 BAPI_CRM_SAVE 里设置断点,在调试器里把变量 BAPISTRUCTURES 的内容下载到本地,用 excel 打开,搜索关键字 06,发现 06 出现在结构 BSS_S040:



然后对这个结构使用"where used list",发现 classification 的数据来自 KUKLA.




classification 是在 ERP Customer 维护界面的 Marketing 项维护的:



在 Define Customer Classification 维护:




解决方案:要么像上图所示在 CRM 里维护 06 对应的 classification,要么将 ERP 里对应的字段设置为空。


  • Tax number category does not exist


错误消息由于表 tfktaxnumtype 中没有查到 US5 对应的配置项,所以在第 32 行报了错误消息:



下一步需要搞清楚为什么 US5 会被查询到。通过调试,发现 US5 和 JERRY 都是从 ERP 传过来的:




解决方案:要么在 CRM 里为 US5 维护对应的 Tax category,要么清掉 ERP 的 Tax number 5 这个字段.



  • Distribution channel is not allowed for sales organization

  • 通过调试发现错误消息在 CRM_PR_SALES_CHECK_DISTR_CHAIN 里抛出,原因是因为 CRM Sales organization O 50040102 和 distribution chain 01 没有找到对应的 ERP 端的匹配项.


错误消息在第 71 行抛出:



当我查看内表 st_distr_chains 时,发现 O 50040102 只有 Channel 10 的组合,而缺少 01 的组合。



解决方案:使用事务码 PPOMA_CRM 添加缺少的 distribution channel 01 组合以及所有的 division 00, 01 和 07:



然后执行 HRBCI_ATTRIBUTES_BUFFER_UPDATE 来更新表 CRMD_ORGMAN_TEMP:



确保缓存表里能看到期望的 O 50040102 拥有的 distribution channel 和 division 的组合。错误消息得以解决。



  • Parent not O.K.: BUPA_MAIN


原因: CUST_MAT_INFO 这个下载对象有三个父下载对象。



如果这三个对象有一个下载失败,则无法进行 CUST_MAT_INFO 的下载。技术上说,就是这三个 parent 对象在表 SMOFDSTAT 的对应记录的列 DNL_STATUS 必须为内容 D-done。在我的例子里,Material 对象的状态为 A-aborted.因此必须先修复 Material 下载的错误。



  • sales area is not assigned for the header product



错误在 CRM 的 COM_IL_PRDSCP_CHECK 抛出:



因为这个 product 是从 ERP 下载的,我们不能在 CRM 端手动为其维护 Distribution Chain:



回到 ERP,检查表 MVKE,发现其实 Sales Organization 0001 和渠道 01 已经正确地维护到了这个 product 上。



再回到 CRM,检查 ERP 的 Sales organization 和渠道的组合 0001-01 是否在 CRM 端维护有对应的映射关系。 当我使用事务码 PPOMA_CRM 维护了缺失的映射关系后,



重新进行一次下载,此时能观察到 Sales Area 这一次被成功下载了:




之后也能在 CRM UI 上看到成功下载的 Sales Area 相关内容。




要获取更多 Jerry 的原创技术文章,请关注公众号"汪子熙":



发布于: 2021 年 05 月 23 日阅读数: 6
用户头像

Jerry Wang

关注

个人微信公众号:汪子熙 2017.12.03 加入

SAP成都研究院开发专家,SAP社区导师,SAP中国技术大使。

评论

发布
暂无评论
利用CRM中间件Middleware从ERP下载Customer Material的常见错误