ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

SAP MDG工作流配置实战:主数据治理中的审批流程与代理分配

SAP MDG工作流配置实战:主数据治理中的审批流程与代理分配 1. 先说清楚MDG 的工作流为什么不能拿普通 WF 知识硬套我最早接触 MDG 工作流的时候脑子里装的是以前做采购申请释放、做 HR 审批那一套逻辑找个单据类型、挂个状态、配个 WF 模板完事。结果在 MDG 项目里第一次联调就被打脸了——变更请求提交之后工作流压根没有按我想象的方式触发代理也永远解析不对。后来把 MDG 的触发机制、绑定关系和代理逻辑捋清楚之后才发现这套东西和普通 SAP 工作流长得像内核完全是另一套玩法。先给没接触过 MDG 的读者补个底SAP MDGMaster Data Governance是 SAP 的主数据治理平台物料、供应商、客户、财务科目这些主数据的创建和更改都要通过“变更请求Change Request”来完成。举个例子业务人员在 MDG 界面里发起一条“新建供应商”的申请这条申请会走一段审批流审批通过之后数据才真正落库或者发到下游系统。这个审批流就是我们要配的工作流。MDG 工作流和普通工作流最核心的区别在于它既不是挂在事务代码的事件上也不是挂在某个单据的状态转换上而是挂在“变更请求”这个特殊的业务对象上并且由 MDG 框架在特定节点触发。你在标准 WF 里玩得再熟如果不懂 MDG 在哪个节点触发、往工作流容器里塞了什么参数配置起来就只能靠猜。这篇内容适合三类人看刚接手 MDG 项目的业务顾问正在被“代理解析不对”折磨的 WF 开发以及要给主数据团队搭审批体系的管理人员。我会从“为什么 MDG 要单独设计工作流”讲起然后走一遍从复制标准模板到代理分配的完整配置过程最后把我踩过的坑和排查思路一起倒出来。2. 触发源头与绑定关系MDG 工作流是怎么被“激活”的2.1 变更请求MDG 工作流的唯一入口MDG 工作流的触发对象只有一个就是变更请求。这个请求可能对应主数据的创建也可能对应更改或删除。在 MDG 的系统里每个变更请求至少带着三个关键属性变更请求类型比如“供应商变更”“物料变更”本质上是基于某个 MDG 对象类型Supplier、Material生成的请求类型。流程类型Process Type描述这个请求属于哪一类流程比如标准审批流程、简化流程。编辑类型Edit Type这个请求是创建Create、更改Change还是删除Delete主数据。这三个属性决定了它该走哪条工作流。什么意思呢同一种变更请求类型你可以让“创建”走三级审批“更改”只走一级审批“删除”走一个单独的删除审批流程。这是 MDG 工作流配置的底层逻辑也是和普通 SAP 工作流的根本差异——普通工作流的触发条件通常是状态变化而 MDG 是根据“请求类型流程类型编辑类型”这个组合去找工作流模板的。还有一个容易忽略的点MDG 工作流触发不是靠你在 SWDD 里手动“启动”而是 MDG 框架在变更请求保存或提交的事件里自动广播出来的。具体来说当用户在 MDG 界面点了保存/提交框架会发出一个工作流相关事件事件参数里带着变更请求编号、流程类型、编辑类型这些信息。你在工作流模板里做的容器绑定本质上就是把这些事件参数接进工作流内部后续代理规则、消息文本都靠这些参数计算。2.2 工作流分配表MDG 工作流的“路由表”MDG 工作流配好之后怎么告诉系统“哪种请求该用哪个工作流”靠定制里的分配表。在 SPRO 里走SPRO → 主数据治理 → 通用主数据治理 → 更改请求 → 设置工作流 → 分配工作流到流程类型对应的配置视图常见的是 V_TUSMD111。这张表是关键中的关键它的作用就是把“变更请求类型流程类型编辑类型”这个组合映射到一个具体的工作流模板上。维护的时候有几点必须注意这里分配的是工作流模板Workflow Template不是单个任务。标准模板编号一般在系统里是 WS 开头的复制出来的自定义模板会变成 Z 开头。同一组条件只能分配一个工作流模板。如果同一个请求类型、同一个流程类型、同一个编辑类型你维护了两条记录系统会取哪条这取决于你系统的版本和选择顺序但无论如何这都属于配置冗余我强烈建议不要这么干排查问题的时候你会疯掉。没有维护工作流模板的话变更请求不会触发审批流数据可能直接就通过了。很多人测试的时候说“怎么没走审批”第一反应是去查 WF 日志最后发现是这表压根没配。从项目实践看这步是 MDG 工作流配置里最简单也最容易漏的因为 SPRO 节点路径有长有短不同版本还略有差异顾问如果只是照着上一家项目的截图找菜单很容易找错位置。建议直接事务代码查这个视图省时省力。2.3 为什么推荐“复制标准模板”而不是从零建接 MDG 项目的时候我见过有同事打开 SWDD 直接新建模板一个节点一个节点地拖最后配出来的工作流不是容器绑定缺胳膊少腿就是业务对象类型选错导致事件参数接收不到。MDG 工作流这个领域从零开始建模板的代价远高于复制标准模板。标准模板是 SAP 官方维护好的里面已经把业务对象类型、容器元素、事件绑定、消息映射都预设好了。拿常见的单级审批场景来说标准模板里已经有“处理人确定”“审批处理”这类节点你只需要在上面改代理规则、调整审批层级。基于标准模板复制修改可以把低级错误的概率压到最低。我习惯这样做进入 SWDD找到系统里标准的 MDG 工作流模板不同版本编号不同但通常以 WS 开头名字带 MDG 或 CHANGE 关键词用“复制”功能生成一个 Z 开头的自定义模板再在这个副本上做调整。20 分钟能完成的事情不要花半天从零搭还提心吊胆。3. 第一套能跑的审批流模板、任务、步骤的搭建顺序3.1 任务与步骤别把这两个概念搞混很多第一次配 MDG 工作流的人会被“任务Task”和“步骤Step”绕晕。简单说步骤是工作流模板流程图里的一个节点它代表流程走到哪一步了。任务是步骤背后真正执行的东西分为手动任务和自动任务。手动任务会生成一个待办事项需要有人在 SAP 收件箱或者 MDG 的 UI里点审批自动任务则由系统后台执行比如更新状态、发消息。常规做法是在流程图里放一个步骤步骤指向一个手动任务代理就配在这个手动任务上。这样职责清晰换审批人只需调整任务上的代理规则不用动流程图结构。用 SWDD 建任务/步骤的入口分别在事务代码 SWDC维护任务和 SWDD维护工作流模板里。任务建好后要激活模板建好后也要激活——这两个对象相互独立很多人只激活了模板忘了激活任务测试时一直看不到待办查半天才发现任务处于“已修改/未激活”状态。3.2 容器绑定事件参数怎么进工作流容器是工作流的数据交换中枢。MDG 框架触发工作流时把变更请求号、流程类型、编辑类型等信息放到事件参数里你要在模板的容器绑定里把这些参数接到工作流自身的容器元素上。常见需要绑定的元素至少包括变更请求编号Change Request Number流程类型Process Type编辑类型Edit Type如果需要按主数据字段比如金额、工厂做分支或代理判断还得看 MDG 在事件里是否传了相关字段没传的话要自己在工作流里读取。上个月我给别人做代码评审还见过一种低级错误模板里用了一个容器元素叫“LV_REQUEST”事件里传的参数叫“IV_CHANGENUMBER”绑定关系没建工作流启动后容器元素全是空的代理规则直接解析失败。这种问题查起来其实不难但步骤错了会浪费大量时间。绑定关系在 SWDD 的容器/绑定页签里检查多花两分钟看一眼能省两个小时的排查。3.3 最小可用配置从复制到激活的完整动作我建议你第一次配 MDG 工作流时按下面的顺序走一遍先别想着复杂的层级审批就把一条“创建→一级审批→生效”的链路跑通再说。打开 SWDD查看标准 MDG 工作流模板确认当前系统里事件触发的业务对象类型和参数。复制标准模板为 Z 开头的新模板重命名时带上用途后缀比如 ZWF_MAT_CREATE后续维护一目了然。在 SWDC 中复制/新建一个手动任务命名规则同上代理先临时配一个自己的用户名保证能跑通。回到 SWDD把模板里原来的审批步骤指向新任务调整流程线路确保开始事件之后能够到达这个步骤。检查容器绑定把事件参数和任务需要的容器元素一一对上特别是变更请求编号后续代理规则和消息里都要用到。激活任务和模板在 SWDD 里保存并激活模板在 SWDC 里激活任务。到 SPRO 的“分配工作流到流程类型”视图为对应的变更请求类型、流程类型、编辑类型分配这个新模板。回 MDG 界面发起一条测试请求提交之后到 SWIA 里看工作项是否生成。整个流程走下来快的话半天时间。第一次跑通之后你才算真正理解了 MDG 工作流的骨架后面加层级、加条件、换代理规则都属于在这个骨架上做增补。4. 代理分配详解三种落地方式与适用场景4.1 代理分配为什么是 MDG 工作流的“事故高发区”代理分配是整个 MDG 工作流配置里最值得花时间琢磨的地方。原因很简单模板、任务、绑定这些属于“一次性配置”配好之后基本不用动代理规则却和组织的岗位体系、人员主数据、甚至是主数据的归属强相关只要组织结构一变、人员一换、审批策略一调代理就会出问题。在任务或步骤的代理页签里你通常有三条路可以走直接指定用户、通过组织管理解析、通过规则比如 BRF 或 MDG 的责任范围确定。选哪条路决定了你未来维护工作流的成本。我把三种方式放在一个表里对比方式配置位置优点缺点适用场景直接指定用户任务/步骤代理类型用户填用户名最简单无需依赖组织数据人员变动必须改工作流无法复用开发机联调、临时测试组织管理解析代理类型表达式选择组织单位、职位、负责人人员调整只需改组织管理不用动工作流依赖 PPOME/PPOSE 的组织数据质量生产环境标准审批规则/责任范围BRF代理类型规则配置 BRF 决策表或责任范围灵活可按主数据属性工厂/公司决定审批人配置复杂需要 BRF 基础按主数据归属审批、复杂矩阵审批4.2 直接指定用户只配用来“把链路跑通”在实际项目中我见过不少项目上线前还在用这种方式直接把审批人写成某个人的用户名。这样做短期内确实省事但隐患很大一旦这个人离职或者调岗审批流就断了工作项卡死在那里业务人员不停地打电话问“为什么没人审批”。我的建议是这种方式只配在开发环境目标就是把工作流链路跑通、验证事件触发和待办生成逻辑。到了测试环境或生产环境尽早切换到组织管理方式或规则方式。如果你已经上线了还在用直接指定用户建议把这件事列进技术债务清单尽早处理。4.3 组织管理解析生产环境中我最推荐的方式用组织管理OM做代理解析是 SAP 工作流里最成熟、也最符合长期维护需求的方案。核心思路是不直接指定“张三审批”而是指定“这个组织单位的负责人审批”或“这个职位的任职者审批”人员变动时改组织管理就行工作流模板和任务本身不用动。在具体配置时你要先保证几个前置条件在 PPOME组织管理维护里建好组织单元、职位并把人员分配给职位。确定“审批人”对应的关系类型。SAP 组织管理里常用关系 8 表示“负责人”关系 007/B-002 之类的表示其他岗位关系具体用哪个要看项目的组织架构设计。在任务/步骤的代理页签里选“表达式”然后按系统支持的规则写比如“确定组织单位的负责人”“查找职位任职者”等。说到这必须提一个常见坑组织数据没同步。MDG 项目里经常出现的情况是工作流配置完全正确但代理解析出来是空的查到最后发现是 PPOME 里这个组织单位下面根本没有挂职位或者职位上的分配有效期已经过期。这类问题不属于工作流本身但工作流会把锅背了。排查时一定要先确认组织管理的基础数据。使用 OM 方式还有一个设计上的好处审批链可以跟着组织结构走。比如你先配一个“二级主管审批”的规则将来组织调整、汇报线变化只需要在 PPOME 里调整“负责人”关系审批流自动跟着新汇报线走完全不需要碰工作流配置。这才是生产系统该有的姿态。4.4 规则/责任范围面向“数据归属”的治理思维如果你觉得按组织单位审批还不够灵活MDG 还提供了一条更贴近主数据治理本质的路按主数据本身的归属关系决定审批人。这个概念在 MDG 里叫“责任范围Responsibility”。举例来说一张物料主数据属于工厂 1000创建这条物料的审批请求就应该由“工厂 1000 的物料负责人”来审批如果这条物料同时属于工厂 2000可能还得追加工厂 2000 的负责人一起会签。在这个逻辑下审批人不是按单据类型定死的而是按主数据的关键属性动态算出来的。实现上会用到 BRF 应用比如 MDG 规则相关的应用场景或 MDG 的规则配置功能。你需要在规则里定义当流程类型XX、主数据字段YY 时返回哪些代理。这种方式的学习成本和配置成本都明显高于前两种但它在复杂组织架构、多组织协同审批的场景里带来的维护收益也最大。我对社区里读者的建议是如果项目刚开始代理分配能按组织管理走的就先按组织管理走等业务语义复杂到“按组织管不动了”再考虑上规则。不要一上来就炫技BRF 里的判断逻辑一旦写复杂后续维护的人会很想骂人。4.5 多代理时的分配模式会签和或签要分清任务配了多个代理之后还要决定“几个人怎么批”。工作项里通常有两种模式所有代理都必须处理会签和任一代理处理即可或签。这两个概念 MDG 工作流里也同样适用。会签场景比如“所有工厂负责人同意后变更请求才能生效”你在任务代理页签里把分配模式设为“所有代理”每个人都会生成工作项全部处理完才进行下一步。或签场景比如“任一部门经理审批即可”设为“任一代理”尽管多个候选人都能看到工作项但只要有一个人审批该节点就算完成了。我见过最典型的问题是理解了这两个概念却没理解系统默认行为。有些配置里把代理配成了一个职位这个职位上有两个人或签模式下合情合理但如果你期待的是两个人分别审批配置时就要明确选择会签。还有一点当代理是“按组织单位解析”时同一个组织单位解析出多个人系统的分配模式依然受这个设置控制别以为组织单位解析出来的人会自动都算会签。5. 测试与排错工作流没走对该怎么定位问题5.1 三个事务代码定位 80% 的工作流问题MDG 工作流测试时我常用的入口只有三个SWIA、SWI1、SWI2_FAVL。大部分问题用这三个就能定位不需要去啃 ABAP 调试。SWIA看工作项列表。你提交一个变更请求之后正常应该能在这里看到对应的工作项。看不到那就说明工作流可能压根没触发或者 V_TUSMD111 里没有分配模板。SWI1看工作流日志。这里能看到工作流实例运行到哪个节点、事件有没有收到、代理解析结果是什么。代理解析失败、容器参数为空这类问题日志里一般都有线索。SWI2_FAVL看错误工作项。有工作项但报错了在这里能看到具体错误消息。很多代理解析不到人的错误会集中出现在这里。排查思路按顺序来先确认模板有没有触发SWI1再确认工作项有没有生成SWIA最后确认代理对不对SWI1 日志/工作项属性。别上来就点进错误工作项里看半天从源头往外推效率更高。5.2 高频问题排查表我把项目里遇到的高频问题整理成一张表每一条都对应一个“现象→原因→排查入口”方便你以后直接对号入座现象可能原因排查入口提交后完全没有待办V_TUSMD111 未分配模板事件未触发SPRO 分配表SWI1 事件日志待办生成了但代理是空的组织管理里职位/负责人未维护规则返回空SWI1 日志PPOME 检查组织数据待办差人该批的人没看到代理配成了一个职位但该职位没挂人或代理分配模式不对任务代理页签PPOME 职位分配审批完了流程没往下走步骤/连接条件错误任务未激活SWI1 日志SWDD 模板流程图邮件通知收不到用户 SU01 里没维护邮箱通知配置缺失SU01 检查邮箱WF 消息配置工作项一直处于“已启动”状态代理解析到的用户没有该工作流的授权任务激活状态异常SWIA 工作项属性SWDC 检查任务状态5.3 一个让我印象深刻的项目坑代理解析成功但审批人没有待办说一个真实经历。之前某个项目测试环境里工作流日志显示代理已经成功解析到了一个用户但那个用户登录系统后收件箱里就是看不到待办。查了两天最后发现原因是这个用户在 SU01 里被设置为“已锁定”系统不给他生成有效工作项。代理解析出来的不是一个人而是三个人但工作项分配模式是“任一代理”其他两个人没维护邮箱导致通知没有发出去。这类问题的本质是工作流配置没问题但用户主数据和通知基础数据有问题。我后来养成了一个习惯每次排查 MDG 工作流问题先让 Basis 同事确认解析出来的用户是否健康未锁定、有邮箱、有角色再回头查工作流本身。很多时候你以为的“工作流配置问题”其实是主数据问题。6. 代理策略设计建议让工作流少“动手术”6.1 按“变化频率”决定代理配置方式这个思路也是我做了几个项目之后总结出来的什么样的代理信息变化频率低就优先把它固化下来变化频率高的就让它动态解析。用户名变化频率最高离职、调岗、请假所以直接指定用户只适合临时场景。组织结构和汇报线变化频率中等用组织管理解析能扛住大部分调整。主数据属性归属某个工厂归谁负责变化频率相对低但关系复杂适合用规则/责任范围管理。按这个原则去设计代理策略基本不会出大错。反过来如果你发现某个工作流代理“总在改”十有八九是当初选错了代理方式——比如本来应该挂在组织管理上的结果直接写死了用户名。6.2 上线前的最后检查清单工作流传输到生产环境之前我会跑一遍自检清单V_TUSMD111 中目标环境的模板编号正确。任务和工作流模板都处于激活状态。容器绑定齐全变更请求编号等关键元素非空。代理解析出来的用户在 SU01 里有有效邮箱、未被锁定。生产环境的组织管理数据已导入职位和负责人关系有效期正确。至少在生产环境预演一次完整的“创建→审批→拒绝→重新提交”流程。这七项都过了MDG 工作流才敢说具备上线条件。其中第一项和第五项是最容易在生产环境翻车的——因为开发/测试环境和生产环境的配置数据、组织数据是两份很多项目在传输的时候漏了分配表或者忘导入组织数据上线当天才手忙脚乱。6.3 后续可以扩展的方向如果这篇基础配置你已经完全吃透了后续可以往这几个方向做扩展多层审批与条件分支按金额或者主数据属性比如影响公司代码数量判断走几级审批。超时提醒与升级用 SAP 工作流的时间管理功能审批超过 N 天自动发提醒给上级。通过 BRF 重构代理逻辑把代理判断从工作流配置文件里抽出来放到业务规则里统一管理。操作日志与审计结合 MDG 的变更文档功能为每条变更请求保留完整的审批痕迹。这些方向每一个都能单独展开写一篇。但不管扩展到多复杂底层还是离不开今天讲的这些基础逻辑模板绑定、任务代理、容器参数、事件触发。7. 最后分享一点实战感悟MDG 工作流上线后真正消耗运维时间的问题一半以上不是工作流配置本身而是组织和用户主数据没维护好。代理解析不到人、审批人收不到通知、待办没生成大概率是 PPOME 里职位没人、SU01 里没邮箱、分配表里漏配这类基础事情。配置工作流本身只需要小半天但要把代理策略和组织的岗位体系对齐才需要真正花时间。如果你现在正被 MDG 工作流搞得焦头烂额我的建议是先把一条“创建→一级审批→生效”的链路跑通不要急着做多层审批和复杂分支。链路通了之后再逐步加条件、加层级每加一层就做一次完整回归。这样看起来慢实际上是最快能稳定上线的路径。工作流这种东西越简单越可靠复杂逻辑带来的维护成本会在你上线后的每一个深夜以“生产报错”的形式还回来。
返回列表