关键词:
/SAPSLL/MATMAS_DIRR3、/SAPSLL/DEBMAS_DIRR3、/SAPSLL/CREMAS_DIRR3、BD53、RBDMIDOC、BD22
一、GTS 主数据传输的两条腿
SAP GTS 的所有合规与海关判断,都建立在 产品主数据(Product Master) 与 业务伙伴(Business Partner) 之上。这两类数据来自 feeder system,传输方式分两条腿:
| 阶段 | 方式 | 典型事务/程序 |
|---|---|---|
| 初始传输(Initial Transfer) | 直接 RFC 批量下发 | /SAPSLL/MATMAS_DIRR3、/SAPSLL/DEBMAS_DIRR3、/SAPSLL/CREMAS_DIRR3、/SAPSLL/BOMMAT_DIRR3 |
| 增量传输(Delta Transfer) | ALE 更改指针(Change Pointers)驱动 | RBDMIDOC(作业调度)+ 削减消息类型 |
物料主数据进入 GTS 后会自动生成产品主数据;客户/供应商主数据则会被转换为 SAP 业务伙伴(BP),并带上地址数据。
产品主数据在 GTS 中包含多个视图:
- General Basic Data:基本计量单位、GTS 内部产品标识号;
- Classification(分类):关税税则中的商品编码(Commodity Code)——海关归类的核心;
- Legal Control(法务控制):进出口管制用的清单号,供出口管制判断使用。
其中,商品编码与出口清单号一般不在 feeder 侧维护,而是在 GTS 中通过海关管理与合规管理的功能来做分类。这一点在项目蓝图阶段就要讲清楚,否则很容易出现"两边都维护、两边都不准"的局面。
二、初始传输:一次性把家底搬过去
在 feeder 系统的事务 /SAPSLL/MENU_LEGALR3(GTS Cockpit)中可以看到全部数据传输事务:
| 事务代码 | 用途 |
|---|---|
/SAPSLL/MATMAS_DIRR3 | 物料主数据初始传输到 GTS |
/SAPSLL/DEBMAS_DIRR3 | 客户主数据初始传输到 GTS |
/SAPSLL/CREMAS_DIRR3 | 供应商主数据初始传输到 GTS |
/SAPSLL/BOMMAT_DIRR3 | BOM 初始传输(优惠确定与再出口控制需要) |
说明:在 S/4HANA 环境下,BOM 的初始传输也可能使用
/BORAT_R3;此外 S/4HANA 提供 Fiori 应用 “计划用于后台处理的主数据传输”,可以把主数据传输纳入统一的作业调度。具体以你的系统版本与配置指南为准。
实施建议:
- 初始传输前,先在 feeder 侧把选择条件收敛好(工厂、采购组织、销售组织、账户组),避免把几十年历史的主数据全量灌进去;
- 分批执行 + 记录日志,GTS 侧用
/SAPSLL/PARTNER_APPL等监控事务复核; - 初始传输完成后,再启用更改指针,否则会在切换窗口期产生大量重复。
三、ALE 更改指针:增量传输的发动机
3.1 为什么用"削减的消息类型"
标准 ALE 消息类型:MATMAS(物料)、CREMAS(供应商)、DEBMAS(客户)。
但 GTS 只需要主记录中的一小部分字段。如果直接激活标准消息类型的更改指针,任何无关字段(比如某个销售视图的文本)的修改都会触发一次传输,白白消耗性能。
因此 SAP GTS 提供了削减的消息类型(Reduced Message Types):
| 削减消息类型 | 内容 |
|---|---|
/SAPSLL/MATMAS_SLL | 物料主数据(GTS 相关字段) |
/SAPSLL/CREMAS_SLL | 供应商主数据 |
/SAPSLL/DEBMAS_SLL | 客户主数据 |
/SAPSLL/BNKMAS_SLL | 银行主数据 |
/SAPSLL/BOMMAT_SLL | BOM |
只有这些被选中的字段发生变化时,才会写入更改指针。
3.2 配置五步走
Step 1 — 全局激活更改指针
/SAPSLL/MENU_LEGALR3 → Basic Settings → Activate Change Pointers Globally
勾选 Change pointers activated – generally,保存。
Step 2 — 用 BD53 创建削减消息类型
事务 BD53
→ 创建 /SAPSLL/DEBMAS_SLL(客户)
→ 创建 /SAPSLL/CREMAS_SLL(供应商)
→ 创建 /SAPSLL/MATMAS_SLL(物料)
- 消息类型参考分别填:
DEBMAS/CREMAS/MATMAS; - 描述依次填:Customer master data / Vendor master data / Material master data;
- 系统会提示
"is not in valid name range"之类的警告,确认即可。
Step 3 — 修改处理函数模块(V_TBDME)
SM30 → 视图 V_TBDME
→ /SAPSLL/DEBMAS_SLL → 函数模块改为 /SAPSLL/DEBMAS_DISTRIBUTE_R3
→ /SAPSLL/CREMAS_SLL → 函数模块改为 /SAPSLL/CREMAS_DISTRIBUTE_R3
→ /SAPSLL/MATMAS_SLL → 函数模块改为 /SAPSLL/MATMAS_DISTRIBUTE_R3
这一步是削减消息类型能直接送进 GTS 的关键——把 ALE 出站处理函数换成 GTS 插件提供的分发函数。
Step 4 — 激活消息类型的更改指针
/SAPSLL/MENU_LEGALR3 → Basic Settings → Activate Change Pointers for Message Types
→ 新建条目:/SAPSLL/DEBMAS_SLL、/SAPSLL/CREMAS_SLL、/SAPSLL/MATMAS_SLL → 激活
Step 5 — 激活削减消息的更改指针
/SAPSLL/MENU_LEGALR3 → Basic Settings → Activate Change Pointers for Reduced Messages
→ 选中上述三个 → Activate change pointers
3.3 定期作业 RBDMIDOC
配置完成后,用后台作业定期跑 RBDMIDOC:
程序:RBDMIDOC
变式:消息类型 = /SAPSLL/MATMAS_SLL(每个消息类型一个步骤)
频率:按业务需要,如每 15 分钟 / 每小时
RBDMIDOC 会读取该消息类型下所有尚未处理的更改指针,通过 RFC 把相关主记录送往 GTS。
四、经典故障:DBSQL_DUPLICATE_KEY_ERROR
升级到 GTS 11(SLL-LEG V1100)后,不少项目遇到过这样的现象:
- 手工用
/SAPSLL/MENU_LEGALR3(Transfer Customers)传输成功; - 但用
RBDMIDOC后台作业传输失败; - GTS 端
/SAPSLL/PARTNER_APPL里没有错误日志(甚至还是绿灯); - ST22 里却是:
Category ABAP programming error
Runtime Errors DBSQL_DUPLICATE_KEY_ERROR
Except. CX_SY_OPEN_SQL_DB
ABAP Program /SAPSLL/SAPLPARMA_DB_UPDATE
Application Component SLL
根因:feeder 端的更改指针里堆积了历史遗留的、已经传过的伙伴主数据。作业一跑,GTS 收到一大批"已存在"的伙伴,触发主键重复。
解决方案:
事务 BD22 → 重置客户(DEBMAS)与供应商(CREMAS)的更改指针
重置之后再跑作业,客户与供应商就都能正常传输了。
运维建议:把 BD22 重置 + 全量初始传输 + 重置后启用增量 固化成上线切换的标准 Runbook;每次大版本升级后,先小批量验证再放开作业。
五、主数据传输之后会发生什么
数据到 GTS 后并不是"存着"就完事:
| 主数据 | GTS 中的后续动作 |
|---|---|
| 物料 → 产品主数据 | 需要维护商品编码(Classification 视图)、进出口清单号(Legal Control 视图) |
| 客户/供应商 → 业务伙伴 | 会进行制裁名单筛查(SPL Screening),命中则冻结 |
| BOM | 用于**优惠确定(Preference Determination)**与再出口控制 |
对应的增强点:
- BAdI
PARTNER_UPDATE:业务伙伴过账数据时的增强,GTS 标准实现会填充 GTS 专用表/SAPSLL/PNTBP与/SAPSLL/ADRCON; - BAdI
/SAPSLL/BP:方法/SAPSLL/IF_EX_BP~MAP_BUT0BK_TO_ADDRESS可以把银行账户持有人字段解析/转换成地址结构,从而让账户持有人也参与 SPL 筛查。
这两个 BAdI 是主数据层面做客户化扩展的主要抓手。
六、运维监控清单
| 位置 | 事务 / 程序 | 看什么 |
|---|---|---|
| feeder 端 | /SAPSLL/MENU_LEGALR3 | 主数据传输、更改指针、系统通信 |
| feeder 端 | SM58 | 失败的 tRFC LUW,可手动重处理 |
| feeder 端 | BD87 / WE05 | IDoc 状态 |
| feeder 端 | BD22 | 重置更改指针(故障处理) |
| GTS 端 | /SAPSLL/PARTNER_APPL | 业务伙伴传输日志 |
| GTS 端 | /SAPSLL/MENU_LEGAL | GTS 侧 Cockpit、合规监控 |
七、小结
- 先初始、后增量:切换窗口期不要同时开;
- 削减消息类型是性能关键:只把 GTS 关心的字段纳入更改指针;
V_TBDME里把处理函数换成/SAPSLL/*_DISTRIBUTE_R3,否则增量根本送不进 GTS;RBDMIDOC定期作业 +BD22应急重置,是 GTS 主数据运维的两把扳手;- 主数据到位后,商品编码与 SPL 筛查才是合规检查真正生效的起点。
转载自 CSDN-专业IT技术社区
原文链接:https://blog.csdn.net/champaignwolf/article/details/165481127




