ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

SAP Workflow 配置与管理实战:从审批流搭建到全链路可运维排错

SAP Workflow 配置与管理实战:从审批流搭建到全链路可运维排错 简介这份《SAP Workflow配置与管理手册》面向负责SAP业务流程自动化的IT运维与实施人员聚焦2021至2022年版本环境下的工作流配置、监控与故障处理适合具备一定SAP基础、需要系统掌握工作流日常运维的中高级技术人员。资源包内共1个doc文档压缩包约39.73MB内容以操作手册形式组织涵盖工作流基本概念、日常监控事务码如SBWP、SWI2_ADM1、SWPR、SWI2_DEAD、SWI2_DIAG、每周维护任务SWU3、SWEQADM、RSWELOGD以及月度性能检查与报告分析并延伸至销售订单、资本承诺项目、差旅审批、HSE事件日志等典型错误的解决方案与告警管理。读者可据此建立从任务监控、错误诊断到流程重启的完整排错思路掌握事件队列与截止日期监控等关键运维动作从而保障SAP工作流稳定运行。目前已有342人学习下载。1. SAP Workflow 配置与管理从一张审批流到全链路可运维很多做 SAP MM、SD 的同行第一次接触 Workflow都是被业务逼出来的采购订单金额超过 10 万要自动找总监审批请假单要按部门层级逐级上报物料主数据变更要通知到对应负责人。手工在后台配个审批条件、写个用户出口短期能跑但订单一多、组织一调整整条链路就开始玄学——有人收不到工作项有人审批完单据状态没变有人重启系统后流程全卡死。SAP Workflow 就是来解决这类跨模块、跨人员、有状态流转问题的引擎它把「谁在什么条件下该做什么」从代码里抽出来变成可配置、可监控、可重启的流程定义。这篇笔记面向已经会 SAP GUI 基础操作、想真正把 Workflow 用起来的顾问和运维从配置对象讲到排错把 2021-2022 年那套经典配置与管理手册里的关键点用能复现的方式重新拆一遍。2. Workflow 的配置底座从组织架构到流程模板2.1 先搞清楚 Workflow 到底依赖哪些配置对象SAP Workflow 不是一个孤立事务它跑起来至少依赖四层配置组织架构组织单位、职位、岗位、用户分配、流程模板工作流定义 WS 开头、步骤与任务标准任务 TS、客户任务、以及触发事件业务对象事件、状态管理、变更文档。很多人配流程只盯着 PFTC 里的步骤结果发布后没人收到工作项回头查才发现组织架构里那个职位根本没分配用户或者责任代理没配。常见做法是先在 PPOME 或 PPOSE 里把组织单位、职位、岗位搭好再把用户用 SU01 的角色或直接分配挂到岗位下最后才去 SWDD 里画流程。顺序反了后面全是返工。组织架构这块核心是「谁负责」。SAP 里工作项的收件人可以是用户、职位、岗位、组织单位、责任代理甚至表达式动态算出来。配置时最容易翻车的是职位和岗位混用职位是具体岗位描述岗位是人员编制用户挂在岗位上。如果流程步骤收件人写的是职位但职位下没挂岗位和用户工作项就变成「无人认领」在 SWI1 里能看到但没人处理。我一般会先用 PPOME 检查一遍组织单位到用户的完整链路再用 SWDA 看流程定义有没有语法错误最后才发布。2.2 用 SWDD 搭一条最小可跑的审批流下面这条流程是我在测试系统里复现过的最小审批流采购订单创建后如果金额大于 5000触发一个两步审批第一步给采购主管第二步给财务经理。这里不贴完整截图只把关键配置步骤和参数写清楚照着在 SWDD 里点一遍就能跑通。第一步创建流程定义。事务码 SWDD输入流程名称比如 ZPO_APPROVE描述写「采购订单两级审批」然后点「新建」。系统会生成一个 WS 开头的流程模板号这个号后面发布和监控都要用。第二步定义触发事件。在流程定义的「开始」步骤里绑定业务对象 BUS2012采购订单的事件 CREATED。这里要注意BUS2012 的 CREATED 事件不是所有采购订单类型都会触发得确认业务对象的事件链路是通的。常见做法是先用 SWELS 打开事件跟踪再 SWEC 看事件队列确认 CREATED 事件确实产生了。第三步加条件步骤。在流程里插入一个「条件」步骤条件表达式写* 采购订单金额大于 5000 才走审批 * 这里的 NETWR 是采购订单净价值字段 if BUS2012.NETWR 5000. result APPROVE. else. result SKIP. endif.这段逻辑说明BUS2012.NETWR是容器元素引用取的是触发事件时业务对象里的净价值。参数说明5000 是阈值实际项目里一般会从配置表读不写死。条件步骤的结果APPROVE和SKIP分别连到后续步骤SKIP 直接结束流程。第四步加审批步骤。插入一个「用户决策」步骤任务选标准任务 TS00008267审批采购订单收件人用表达式指定* 根据采购组织动态找采购主管 * 这里用 AC 容器里的采购组织字段 DATA: lv_ekorg TYPE ekorg. lv_ekorg BUS2012.EKORG. * 调用自定义函数或规则找对应主管 * 实际项目里一般用 HR 组织架构或自建映射表逻辑说明收件人不是写死某个用户而是根据采购组织动态解析。参数说明BUS2012.EKORG是采购组织字段实际项目里可能还要结合公司代码、工厂。如果组织架构没配好这里解析出来就是空工作项会进不了任何人的收件箱。第五步发布流程。点「发布」系统会生成版本号。发布后不要急着测先用 SWU3 做一次全面检查看 RFC 目标、后台作业、事件队列是不是都正常。SWU3 里任何一项红灯流程都可能跑不起来。2.3 触发事件与容器流程能跑起来的关键Workflow 的触发靠事件事件靠业务对象。业务对象 BUS2012 的 CREATED 事件底层是采购订单保存时调用了SWE_EVENT_CREATE或者通过状态管理触发。如果事件没触发流程根本不会启动。排查时先看 SWEL 里有没有事件记录再看 SWEC 里事件队列有没有被处理。常见坑是事件队列积压后台作业SWEQSRV没跑事件一直躺在队列里流程自然不动。容器是流程里传数据的黑匣子。触发事件时系统会把业务对象的字段塞进事件容器流程定义里再用BUS2012.字段名引用。如果字段名写错或者业务对象里根本没这个字段流程跑到那一步就报错。我一般会在 SWDD 里用「容器」视图检查每个步骤的容器元素确认引用的字段都存在。另外容器元素有类型字符串和数字比较时要注意隐式转换金额字段一般用 CURR 类型直接和数字比可能不准。3. 工作项管理与代理让审批真正落到人头上3.1 工作项收件人的五种解析方式与优先级工作项的收件人解析是 Workflow 里最容易出玄学的地方。SAP 支持至少五种方式直接指定用户、指定职位、指定岗位、指定组织单位、用责任代理或规则动态解析。优先级上直接指定用户最硬职位和岗位次之组织单位最软。如果同一个步骤同时配了职位和岗位系统会按组织架构展开把所有挂在这个职位下的用户都拉进来变成多人工作项。很多人以为配了职位就只找一个人结果一发布整个部门都收到了审批这就是没理解展开逻辑。实际项目里我一般会先用 PPOME 确认组织架构的层级再用 SWDD 的「收件人」视图选「表达式」用规则或函数动态算。比如采购主管这个角色如果组织架构里维护得规范可以直接用职位如果组织架构乱就自建一张映射表用函数读表返回用户。两种方式各有代价用组织架构省事但依赖 HR 数据质量用自建表灵活但要自己维护。3.2 用 SWI1 和 SWI2 监控工作项状态流程发布后日常运维主要看两个事务SWI1 看工作项SWI2 看流程实例。SWI1 里能按用户、状态、时间筛选工作项重点看「就绪」「处理中」「已完成」「错误」四种状态。如果工作项一直是「就绪」但没人处理先查收件人解析对不对如果是「错误」点进去看错误消息一般是容器字段缺失或业务对象方法报错。SWI2 看的是流程实例级别的状态能追踪整条流程走到哪一步、哪个步骤卡住。常见操作是选中一个流程实例点「重启」或「重新启动」把卡住的步骤重新推一遍。但重启不是万能药如果底层业务对象状态已经变了重启可能报新错。我一般会先看流程日志确认是配置问题还是数据问题再决定要不要重启。3.3 责任代理与替代请假期间流程不断责任代理是 Workflow 里很实用但容易被忽略的功能。用户请假时可以用 SU01 或 SWU3 里的「责任代理」把工作项转给同事。配置时要注意代理规则是按时间代理、按流程类型代理还是全代理。全代理最省事但风险大万一代理人有权限问题可能误批。我一般建议按流程类型代理比如采购审批代理给采购经理请假审批代理给 HR。替代规则在 SWU3 里配底层是 HR 的替代关系。如果 HR 模块没上也可以用自定义表加函数实现。常见坑是代理关系没生效工作项还是发给原用户。排查时先看 SWI1 里工作项的「代理」字段再看 SWU3 的替代检查有没有报错。4. 避坑与排查Workflow 上线后最常见的五类翻车4.1 工作项收不到事件没触发还是收件人没解析现象采购订单保存后SWI1 里没有任何工作项流程实例也没生成。原因事件没触发或者触发了但事件队列没处理。常见原因是 SWU3 里事件队列后台作业没跑或者业务对象的事件链路被增强打断。解决先用 SWEL 看事件有没有产生再看 SWEC 看队列有没有积压。如果队列有积压检查 SM37 里SWEQSRV作业是不是在跑。如果事件根本没产生检查采购订单保存时有没有调用SWE_EVENT_CREATE或者状态管理里有没有配事件。4.2 工作项多人收到收件人展开逻辑没搞清现象本来只想让采购主管审批结果整个采购部都收到了工作项。原因收件人配的是职位或组织单位系统按组织架构展开把所有挂在这个职位下的用户都拉进来了。解决如果只想给一个人收件人直接指定用户或者用规则函数返回单个用户。如果确实要用职位确保职位下只挂一个岗位和一个用户。检查 PPOME 里的组织架构确认职位和岗位的对应关系。4.3 流程卡在某个步骤容器字段缺失或方法报错现象流程走到审批步骤后不动了SWI2 里显示「错误」点进去看是容器字段找不到。原因流程定义里引用了业务对象里不存在的字段或者字段名拼写错误。也可能是业务对象方法执行时报错比如权限检查失败。解决在 SWDD 里检查该步骤的容器元素确认引用的字段在业务对象里存在。用 SWO1 看业务对象的字段列表或者用 SWUE 模拟事件看容器里到底有哪些字段。如果是方法报错用 SLG1 看应用日志定位具体错误消息。4.4 重启后流程状态错乱业务对象状态已变现象流程卡住后手动重启结果报新错或者流程跳到不该去的步骤。原因重启时业务对象的状态已经变了比如采购订单已经被删除或修改流程定义里的条件重新计算后走了不同分支。解决重启前先确认业务对象当前状态用 SWI2 看流程实例的容器快照对比当前业务对象数据。如果状态确实变了不要硬重启先回滚业务数据或调整流程定义。我一般会先在测试系统复现确认重启后的分支走向再决定要不要在生产重启。4.5 代理关系不生效替代规则没配或时间不对现象用户请假前配了责任代理但工作项还是发到原用户代理人没收到。原因替代规则没生效或者代理时间没覆盖当前时间。也可能是代理关系配了但没激活。解决用 SWU3 的「替代」检查看代理关系是不是激活状态。检查代理的时间范围确认当前时间在范围内。如果用的是 HR 替代确认 HR 模块的替代关系已经同步到 Workflow。5. 进阶技巧用 SWU3 做全链路健康检查与批量修复SWU3 是 Workflow 的后悔药很多配置问题都能在这里查出来。我一般会在流程上线前和上线后各跑一次 SWU3重点看几项RFC 目标是不是通、后台作业是不是在跑、事件队列是不是正常、责任代理是不是配了、业务对象是不是激活。任何一项红灯流程都可能跑不起来。除了 SWU3还有几个技巧值得掌握。第一用 SWPC 看流程实例的容器快照对比不同步骤的容器变化定位字段在哪一步丢了。第二用 SWUD 做流程诊断能自动检查流程定义的语法和配置问题。第三用 SWE2 配事件类型和接收者控制哪些事件触发哪些流程。第四批量修复工作项可以用 SWIA 或 SWIB但批量操作风险大我一般先在测试系统跑一遍。下面这张表是我常用的 Workflow 监控事务清单按用途分类事务码用途关键检查点SWI1工作项监控状态、收件人、代理SWI2流程实例监控步骤、容器、错误SWU3全链路健康检查RFC、作业、事件队列SWDD流程定义步骤、条件、收件人SWPC容器快照字段变化、缺失SWUD流程诊断语法、配置错误SWEL事件跟踪事件产生、消费SWEC事件队列积压、处理状态最后说一个我自己的习惯每次改完流程定义不要直接在生产发布先在测试系统用 SWUE 模拟事件跑一遍确认容器字段、收件人解析、条件分支都正确再传到生产。生产发布后第一时间用 SWI1 和 SWI2 盯半小时看有没有异常工作项。Workflow 这东西配置时多花十分钟检查上线后少熬一晚上排错。希望帮到你。本文还有配套的精品资源点击获取
RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进