BTE及ECC、CRM主数据同步增强

Note 1156808提供了产品主数据同步增强的范例,其核心是采用Business Transaction Events(BTE)的增强方式。该方式同样适用于客户、设备等主数据的同步。

其中ECC到CRM方向,由FM: CRS_SEND_TO_SERVER出发,编辑Table: TPS34,添加Process Interface: CRM0_200。CRM到ECC方向,由FM: CRM_UPLOAD_TRIGGER触发,Process Interface: CRM0_300。

关于BTE,参考这里 >>

 

BAPI_GOODSMVT_CREATE

客户用BAPI_GOODSMVT_CREATE批量创建物料移动凭证,报M7 022错误。Note 369518说是Buffer的原因。我不是开发,也不懂什么是roll area。不过Note也提出了一个挺特别的解决方案,对这个BAPI是可行的,能否作用在其他场景呢?或者值得一试。

[code]
Example:
————————————————————————
Program Test.

LOOP.
….
CALL FUNCTION func1 DESTINATION ‘NONE’.
CALL FUNCTION RFC_CONNECTION_CLOSE.
….
ENDLOOP.
————————————————————————
FUNCTION func1.
….
CALL FUNCTION ‘BAPI_GOODSMVT_CREATE’.

IF ‘no errors’.
CALL FUNCTION ‘BAPI_TRANSACTION_COMMIT’.
ELSE.
CALL FUNCTION ‘BAPI_TRANSACTION_ROLLBACK’.
ENDIF.

ENDFUNCTION.

[/code]

另外对这个BAPI感兴趣的可以参考SCN Wiki: How To Goods Movements with BAPI

姓名格式

这个Function: ADDR_PERSON_NAME_FORMAT决定了BP姓名输出的格式,如果BP没有维护姓名格式,则取Standard的:

* Standardaufbereitungsregel:
line_of_rule 01 title.
line_of_rule 02 title_aca1.
*392i+
line_of_rule 03 title_sppl.
line_of_rule 04 name_first.
line_of_rule 05 initials.
line_of_rule 06 prefix1.
line_of_rule 07 name_last.

SAP GUI里头可以通过用户参数NAMEFORMAT_COUNTRY设置默认值,CRM Web UI里头就没这只歌仔唱了。

组织传输

为了保证Org Unit号码的一致性,Organizational Structures是可以传输的。当然Org的传输没有这么简单,精要写在两篇Notes里头:327908、548202。

  1. OOCR中设置传输模式,其中X用报表程序RHMOVE30传,T用报表程序RHMOVE50传。个人认为T省事一些,每次编辑Org会自动产生传输记录,然后用程序RHMOVE50生成传输请求。
  2. 在目标系统中用OOTR给CP、Position加锁。因为RHMOVE50生成的传输请求只包含Org,没有Position分配的CP信息。如果不加锁,目标系统手工生成的信息会被覆盖掉。
    Object type – Infotype Subtype
    O 1001 B207
    CP 1000
    CP 1001 B207
    CP 1001 B008
    CP 1001 B208
    CP 1001 B209
    S 1001 A008
  3. 用RHMOVE50生成传输请求,然后传输。
  4. 在目标系统用程序HRALXSYNC生成/修复BP。

 

Log texts

留意到CRM中有些长文本是带log的,从上到下记录了更改人的用户名、更改时间和内容。这不是开发的结果,而是可配置的。

简单来说,在Text Procedure中,需要log的Text Type中Control里头设置Change为P。同时额外配一个Text Type用于记录Log,Control里头设置Change为R。

使用的时候,第一个Text Type输入内容,保存后 该Text Type会清空,同时内容拷贝到第二个Type,并添加用户名、时间等记录信息。

Notes: 773432, 910735, 942771