我在SAP成都研究院做过的CRM中间件的项目其实并不是很多:

1. 2013年下半年和2014年上半年曾经支持过中联重科和蒙牛的CRM项目相关的中间件问题;

2. 2014年上半年做过一个CRM物料主数据的中间件开发项目;

3. 2014年负责CRM物料主数据的维护工作。

这个列表里所有的文章都是我在实际开发或者项目过程中遇到问题后记录下来的心得。2013年直到清明节前,我其实对CRM中间件是一点都不了解的,但是我的老板Poseidon让我把这一块的知识空缺补上,因为将来成都团队需要负责中间件这块的维护和持续开发。

我先把SAP中间件培训教程CR500看了一遍,了解了一些基本概念。但是这个教程讲的比较笼统,对SAP中间件标准开发人员帮助不是很大。

于是2013年清明节的时候,我把CRM物料主数据这个模块收到的SAP内部测试人员报的所有的tickets搜索出来学习了一遍,一共有200多个。有25%的tickets是因为测试人员的配置不正确造成的。我借此又积累了一些如何处理形如"如果遇到XXX的错误消息, 可能是因为YYY配置出错造成"这类问题的经验。 当我把所有内部tickets过了一遍之后,对中间件的框架代码有了一定的了解,成为写下列这些文章的基础。

我遇到使用中间件时报错误信息的这类问题,分析过程也就下列两种办法:

1. 根据错误信息的technical信息作为关键字去Google或者SAP Community上搜索。如果别人也遇到过同样问题,那就能节省很多debug时间。

2. 自己debug。

CRM中间件的上传下载方向的定义,都是以ERP作为主系统(leading system)而言,所以从ERP上抓数据到CRM称为下载,从CRM主动发送数据到ERP称为上传。

以从CRM上触发从ERP系统下载数据为例。如果下载过程不能按照您期望的工作, 那理论上说,出问题的可能性有以下几种:

1. 代码在ERP上从数据库表中抓取数据时不能正常工作: 没有抓取到期望的数据;

2. 代码从ERP数据库表里成功抓取到期望数据之后,在把数据发送给CRM之前,由于种种原因(比如配置), 一部分数据被过滤掉了,根本没有发送到CRM;

3. ERP工作完全正常,期望的数据全部发送到CRM,但是CRM inbound处理时因为配置的原因,在处理这些数据或者试图存储到CRM数据库表时出错。

这三种可能性分别对应下图Point1,2,3。

调试的关键在于找到针对这三种可能性的调试入口,即在哪里设置断点。下面我的原创文章里有讲述。

点击文末的"阅读原文", 即可在新打开的页面里通过点击超链接直接跳转到对应的文章。

1. Step by step to debug Product Initial Download in CRM system

讲述如何调试第三种可能性: https://blogs.sap.com/2013/11/27/step-by-step-to-debug-product-initial-download-in-crm-system/

2. Step by step to debug Product Initial Download in ERP system

如何调试第一和第二种可能性:https://blogs.sap.com/2013/11/27/step-by-step-to-debug-product-initial-download-in-erp-system/

3. How to debug Product Delta download in ERP and CRM side

如何调试增量下载:

https://blogs.sap.com/2013/11/28/how-to-debug-product-delta-download-in-erp-and-crm-side/

4. How to debug Product initial upload in ERP and CRM system

如何debug上传:

https://blogs.sap.com/2013/11/28/how-to-debug-product-initial-upload-in-erp-and-crm-system/

5. Step by step for IDOC debug

https://blogs.sap.com/2013/12/16/step-by-step-for-idoc-debug/

6. An example to fix Generic stop set error status in tcode SMQ1

使用事务码SMQ1发现outbound队列里状态为STOP的处理方法:

https://blogs.sap.com/2014/07/28/an-example-to-fix-generic-stop-set-error-status-in-tcode-smq1/

7. How to resolve error message IB_CRM_UPLOAD_MSG 025 in equipment replication

案例分析: 如何处理设备(equipment)下载时的错误信息IB_CRM_UPLOAD_MSG 25

https://blogs.sap.com/2014/08/27/how-to-resolve-error-message-ibcrmuploadmsg-025-in-equipment-replication/

8. Step by step to download equipments from ERP with hierarchy

如何把ERP里具有层级结构的多个设备下载到CRM, 并且层级结构在CRM依然得以保持

https://blogs.sap.com/2014/09/03/step-by-step-to-download-equipments-from-erp-with-hierarchy/

9. Step by step to upload equipment from CRM to ERP

如何从CRM上传设备到ERP

https://blogs.sap.com/2014/09/18/step-by-step-to-upload-equipment-from-crm-to-erp/

10. An example of how to find database table and field where Material text and product text is stored in ERP and CRM

同一个概念,比如ERP里叫物料(Material), header数据存在表MARA里,而CRM叫产品(Product), header数据存在COMM_PRODUCT里。这篇文章以物料描述信息这一字段为例,介绍如何去查找这个字段分别是在ERP和CRM哪张表里存储的。

https://blogs.sap.com/2016/05/07/an-example-of-how-to-find-database-table-and-field-where-material-text-and-product-text-is-stored-in-erp-and-crm/

11. A small tip about how to find a given Consolidated Database in Middleware

小技巧: 如何找到对应的Consolidated数据库表

https://blogs.sap.com/2016/05/16/a-small-tip-about-how-to-find-a-given-consolidated-database-in-middleware/

12. How to download ERP plant into CRM via request download

https://blogs.sap.com/2016/09/23/how-to-download-erp-plant-into-crm-via-request-download/

13. How to resolve error message Number not in interval XXX - XXX when downloading a customer from ERP

如何处理这个错误信息:

https://blogs.sap.com/2016/09/24/how-to-resolve-error-message-number-not-in-interval-xxx-xxx-when-downloading-a-customer-from-erp/

14. How to deal with error message Form of address 0001 not designated for organization

如何处理这个错误信息:

https://blogs.sap.com/2016/09/25/how-to-deal-with-error-message-form-of-address-0001-not-designated-for-organization/

15. Why I always see warning message Object is in status Wait when performing a request download

当我们启动下载时,期望的结果是看到下图所示的绿灯,提示我们下载处于运行(Running)状态。但有时我们收到的消息一直是等待(Wait):

这篇文章介绍如何分析引起等待状态的原因。

https://blogs.sap.com/2016/09/25/why-i-always-see-warning-message-object-is-in-status-wait-when-performing-a-request-download/

16. How to resolve error message Customer classification does not exist when downloading a customer into CRM

如何处理这个错误消息:

https://blogs.sap.com/2016/09/25/how-to-resolve-error-message-customer-classification-does-not-exist-when-downloading-a-customer-into-crm/

17. How to resolve error message Distribution channel is not allowed for sales organization when downloading customer material info record from ERP

如何处理这个错误信息:

https://blogs.sap.com/2016/09/26/how-to-resolve-error-message-distribution-channel-is-not-allowed-for-sales-organization-when-downloading-customer-material-info-record-from-erp/

18. How to use SAT to measure CRM Middleware inbound processing performance

如何用SAT分析中间件的性能问题

https://blogs.sap.com/2016/10/10/use-sat-measure-crm-middleware-inbound-processing-performance/

19. How to download Service master from ERP to CRM

如何下载Service Master

https://blogs.sap.com/2016/10/10/download-service-master-erp-crm/

20. How to resolve /SAPPSPRO/S_MAT_ENHANC_COMM issue during request download

一个filter引起的奇怪问题: 在调试器里会观察到一个奇怪的表:/SAPPSPRO/S_MAT_ENHANC_COMM

https://blogs.sap.com/2016/10/27/resolve-sappspros_mat_enhanc_comm-issue-request-download/

21. Material Sales Organization and distribution channel mapping logic in middleware

ERP和CRM销售组织和分销渠道的映射关系:

https://blogs.sap.com/2016/10/28/material-sales-organization-distribution-channel-mapping-logic-middleware/

22. How to download material division to CRM

如何下载ERP物料的division:

https://blogs.sap.com/2016/10/28/download-material-division-crm/

23. Settype CRMM_PR_SALESA attributes mapping logic between CRM and ERP

https://blogs.sap.com/2016/10/28/settype-crmm_pr_salesa-attributes-mapping-logic-crm-erp/

24. Settype CRMM_PR_SALESG attributes mapping logic between CRM and ERP https://blogs.sap.com/2016/10/31/settype-crmm_pr_salesg-attributes-mapping-logic-crm-erp/

25. Product Sales status handling logic in Middleware

物料销售状态(Sales Status)的映射逻辑

https://blogs.sap.com/2016/11/01/product-sales-status-handling-logic-middleware/

26. How to resolve error message Parent objects have not been downloaded when downloading a BOM from ERP to CRM

如何处理这个错误信息:

https://blogs.sap.com/2016/11/14/how-to-resolve-error-message-parent-objects-have-not-been-downloaded-when-downloading-a-bom-from-erp-to-crm/

27. How to download BOM from ERP to CRM – relationship STRSET or BOMITM

如何下载BOM

https://blogs.sap.com/2016/11/27/how-to-download-bom-from-erp-to-crm-relationship-strset-or-bomitm/

28. Step by step to send IDoc data into external receiver via XIF adapter

IDOC和XIF练习

https://blogs.sap.com/2016/12/23/step-by-step-to-send-idoc-data-into-external-receiver-via-xif-adapter/

29. Settype COM_TA_R3_ID – mapping between ERP Equipment and CRM Individual Object

序列号(Serial Number)知识分享

https://blogs.sap.com/2017/02/08/settype-com_ta_r3_id-mapping-between-erp-equipment-and-crm-individual-object/

30. Another reason that no IDOC is created for BUS_TRANS_MSG although all system configuration are correctly maintained

IDOC排错案例分享: 销售订单成功保存之后,系统没有自动生成对应的BDOC, 怎么办?

https://blogs.sap.com/2017/10/18/another-reason-that-no-idoc-is-created-for-bus_trans_msg-although-all-system-configuration-are-correctly-maintained/

31. BDOC Content Search tool

自己写的根据关键字搜索BDOC的工具,收到一个DBS的同事反馈说很有用。

https://blogs.sap.com/2017/10/27/bdoc-content-search-tool/

要获取更多Jerry的原创技术文章,请关注公众号"汪子熙"或者扫描下面二维码:

Jerry的CRM Middleware(中间件)文章合集的更多相关文章

  1. Jerry的ABAP原创技术文章合集

    我之前发过三篇和ABAP相关的文章: 1. Jerry的ABAP, Java和JavaScript乱炖 这篇文章包含我多年来在SAP成都研究院使用ABAP, Java和JavaScript工作过程中的 ...

  2. SAP成都研究院2018年总共87篇技术文章合集

    2018年很快就要结束了.Jerry在2017年年底准备开始写这个公众号时,给自己定的目标是:2018年至少保证每周发布一篇高质量的文章.如今2018年就快过去了,高质量与否需要大家来反馈,至少从量上 ...

  3. php大力力 [025节] 来不及学习和分类的,大力力认为有价值的一些技术文章合集(大力力二叔公)(2015-08-27)

    php大力力 [025节] 来不及学习和分类的,大力力认为有价值的一些技术文章合集(大力力二叔公)(2015-08-27) 比较好的模版 免费模板网,提供大量DIV+CSS布局网页模板下载及后台管理 ...

  4. .Net 2014 Connect() 相关文章合集

    微软在11月中旬的Connect()研讨会中公布了一系列 2015年的发展规划,今天在MSDN Blog上看到了一篇比较全的相关文章合集,这里转录一下,感兴趣的朋友可以看看. Announcement ...

  5. 2018-8-10-dotnet-从入门到放弃的-500-篇文章合集

    title author date CreateTime categories dotnet 从入门到放弃的 500 篇文章合集 lindexi 2018-08-10 19:16:52 +0800 2 ...

  6. [原创]Machine Learning/机器学习 文章合集

    转载请注明出处:https://www.codelast.com/ ➤ 用人话解释机器学习中的Logistic Regression(逻辑回归) ➤ 如何防止softmax函数上溢出(overflow ...

  7. Android 文章合集 200+ 篇

    code小生 一个专注大前端领域的技术平台 公众号回复Android加入安卓技术群 镇楼 2017 文章合集 2017 年度文章分类整理 下面是 2018 年公众号所发表的文章分类整理 面经 一年经验 ...

  8. SpringBoot文章合集

    SpringBoot文章合集 SpringBoot合集为<尚硅谷雷神SpringBoot2零基础入门(spring boot2)>的学习以及项目中使用知识点进行整理. SpringBoot ...

  9. dotnet 从入门到放弃的 500 篇文章合集

    本文是记录我从入门到放弃写的博客 博客包括 C#.WPF.UWP.dotnet core .git 和 VisualStudio 和一些算法,所有博客使用 docx 保存 下载:dotnet 从入门到 ...

随机推荐

  1. python-基础学习篇(一)

    python基础学习(一) 不积硅步,无以至千里.基础的学习越加透彻,才能更清楚的理解和分析需求,我贯彻基础学习“永无止境”的理念,故把自学的知识梳理在博客中,基础学习篇无限更新. python介绍 ...

  2. 2019.3.13 Java的特性——继承

    继承 面向对象编程(OOP)三大特征:继承,封装,多态 目的:为了减少重复代码,避免复制粘贴 创建父类Animal public class Animal { private String name; ...

  3. EntityFramework 并发处理

    转载自:http://www.cnblogs.com/TianFang/p/4439215.html 什么是并发? 并发分悲观并发和乐观并发. 悲观并发:比如有两个用户A,B,同时登录系统修改一个文档 ...

  4. Java线程池详解(一)

    一.线程池初探 所谓线程池,就是将多个线程放在一个池子里面(所谓池化技术),然后需要线程的时候不是创建一个线程,而是从线程池里面获取一个可用的线程,然后执行我们的任务.线程池的关键在于它为我们管理了多 ...

  5. nginx 服务器配置文件指令

    localtion 配置        语法结构: location [ =  ~  ~* ^~ ] uri{ ... }        uri 变量是带匹配的请求字符, 可以是不含正则表达的字符串, ...

  6. TOJ 3744 Transportation Costs

    描述 Minya Konka decided to go to Fuzhou to participate in the ACM regional contest at their own expen ...

  7. React.js 小书 Lesson14 - 实战分析:评论功能(一)

    作者:胡子大哈 原文链接:http://huziketang.com/books/react/lesson14 转载请注明出处,保留原文链接和作者信息. 课程到这里大家已经掌握了 React.js 的 ...

  8. go test遇到的一些问题-command-line-arguments undefined: xxxxx

    一 问题是在我写算法题的时候出的,test后缀的文件编译报command-line-arguments undefined: xxxxx 二 没记错,go test是 所有在以_test结尾的源码内以 ...

  9. C# 类型、对象、线程栈和托管堆在运行时的关系

    我们将讨论类型.对象.线程栈和托管堆在运行时的相互关系,假定有以下两个类定义: internal class Employee    {        public int GetYearsEmplo ...

  10. newInstance和new的区别(good)

    从JVM 的角度看,我们使用关键字new创建一个类的时候,这个类可以没有被加载.但是使用newInstance()方法的时候,就必须保证:1.这个 类已经加载:2.这个类已经连接了.而完成上面两个步骤 ...