
1. 未完成项目日志到底在记什么一个常被忽略的检查机制在销售与分销SD模块里做后台配置的人几乎都见过这条菜单路径Sales and Distribution → Basic Functions → Log of Incomplete Items → Define Incompletion Procedure for Sales Documents。翻译过来就是“销售和分销 → 基础功能 → 未完成项目日志 → 定义不完整过程”。很多顾问第一反应是“哦就是定义订单保存时的必填字段检查嘛。”实际远不止这么简单。未完成项目日志Log of Incomplete Items的本质是一套附着在单据上的“完整性状态看板”。用户在 VA01 里创建销售订单保存时系统会拿后台定义好的检查规则逐项核对抬头、项目、计划行上的关键字段。缺了什么就往日志里写一条单据状态会带上“未完成”标记后续交货、开票环节也能明显感觉到它的存在。比如你建了一张标准销售订单但没填“装运条件”订单照样能保存可等你去做交货单时系统可能就提示缺这个字段单子卡在半路。这就是未完成日志在背后做的事。这套机制最容易被低估的地方是它不只是“保存时弹几个提示”而是订单到现金全链路中一道真实的质量闸门。我见过不少项目订单执行人员每天早上用事务代码 V.02 拉未完成销售订单清单哪张缺采购订单号、哪张缺交货日期一目了然补完字段再保存日志里的记录自动清掉流程继续往下走。所以“定义不完整过程”不是可有可无的后台项它直接决定了单据能不能顺畅流转也决定了业务团队有没有一个结构化的工具去做订单质量监控。这套完整性检查分三条线销售单据一套过程外向交货单一套过程开票单据一套过程。它们结构完全一致只是检查对象和字段范围不同。标题里这条 IMG 路径对应的就是销售单据这条线事务代码是 OV56。把这一条线彻底弄懂另外两条线基本就是照葫芦画瓢。1.1 从一个真实场景理解它的价值假设你们公司的业务员创建销售订单时经常不填“客户采购订单号”。在没配置未完成日志的情况下单子安静地保存了没人发现异常。等到发货后财务要开票发现客户账单上的采购订单号对不上或客户坚持说“我没下过这个单”才回头翻订单——这时候排查成本已经很高了。配置了未完成日志之后同一张订单保存时系统可能直接给出警告“客户采购订单号缺失”并把缺失记录写进日志。单子可以保存但会出现在 V.02 的未完成清单里。销售内勤每天看这个清单打电话催业务员补号问题在发货前就解决了。这个差别就是“事后救火”和“事中提示”的差别。1.2 检查对象与三层配置入口未完成日志检查的对象不是某个孤立字段而是单据三个层级上的数据抬头层比如售达方、客户采购订单号、销售组织、销售渠道等。项目层比如物料编号、物料描述、交货工厂、装运条件、数量、价格等。计划行层比如计划交货日期、已确认数量等。每个层级有各自的业务含义配置时选错了层级检查就不会生效或者会在错误的地方报错。例如“客户采购订单号”通常挂在抬头层你把它配到项目层系统检查时找不到对应字段这条规则等于白配。三条业务线对应三个配置入口。销售单据入口就是本文标题里的“Define Incompletion Procedure for Sales Documents”事务代码 OV56交货单有单独的入口开票单据也有单独的入口。三者共用同一套设计思想所以先把销售单据这条线吃透另外两条只是字段集不同。2. 先从入口认门OV56 与配套路径怎么分工进 SPRO 后台看图很多人会把“Log of Incomplete Items”下面几个节点搞混因为名字太像了。这里先把它拆清楚。2.1 三个配置入口的对应关系配置节点常见事务代码适用范围Define Incompletion Procedure for Sales DocumentsOV56销售单据标准订单、询价、报价、退货等Define Incompletion Procedure for DeliveriesOV57外向交货单Define Incompletion Procedure for Billing DocumentsOV58开票单据路径前缀都一样都是“Log of Incomplete Items”节点下区别只在最后一段说明。配置销售订单时一定选 Sales Documents别手滑配到 Delivery 那边去了我见过顾问在项目里把销售订单要检查的字段配到交货单过程里结果交货单疯狂提示缺物料号销售订单却什么都没发生。这类问题排查起来很耗时间因为表面现象五花八门。2.2 不完整过程怎么跟单据类型绑定定义了过程不等于生效。销售单据类型配置事务代码 VOV8也就是 Define Sales Document Types里有一个字段叫“未完成过程/Incompletion Procedure”你要把 OV56 里维护好的过程编号填进去。系统在建单、改单时按“单据类型 → 不完整过程 → 逐条检查规则”这个链条执行。交货单、开票单据也是同样的绑定逻辑只不过在各自的单据类型配置界面里。这里有几个项目习惯建议从一开始就建立先把三个事务代码和对应的适用范围整理成一张表发给项目里的业务方和测试人员。很多人分不清“未完成项目日志”到底是订单的还是交货的给一张对照表能省下不少答疑时间。不要直接修改 SAP 预置的标准过程。标准过程是经过验证的模板直接改会污染标准配置也对后续升级和问题排查不利。我习惯复制出一个以 Z 开头的自有过程在上面调整。配置完一定要去前台验证而不是只在后台看配置界面。未完成日志最终是给用户用的V.02 清单、VA02 里的日志入口、VL02N 和 VF02 里的提示这些界面都要实际走一遍。提示销售单据类型配置里“未完成过程”这个字段一旦留空该类型单据就完全不执行未完成日志检查。有些项目为了图省事把不常用的单据类型留空表面是不做检查实际上是让质量闸门失效。除非业务方明确接受否则不建议留空。3. 配置不完整过程的完整动作复制、拆组、定字段、挂单据类型进入 OV56 后第一步是理解这个界面的结构左边或上面是“不完整过程”清单每个过程是一个代码加一段描述双击进入过程后会看到一排排的配置行每行代表一条检查规则。整个配置动作可以拆成四步。3.1 复制标准过程还是新起炉灶我的建议是复制。进入 OV56选中标准过程例如系统里针对标准销售订单的那条过程复制出一个新编号比如 ZA01描述写成“标准订单未完成检查自定义”。这么做的好处是标准过程里的组结构、常用字段、需求编号都经过验证你只需要在复制结果上做加减法风险小得多。从空白新建不是不行但你要对着字段目录一个个查 F4 帮助还要自己设计组结构非常容易漏掉关键字段。SAP 的未完成字段目录很大漏掉“装运条件”“交货工厂”这类基础字段后续交货环节就会反复出问题。复制时记得把描述改成项目自己的内容并放进传输请求Transport Request统一管理。很多新手在这步忽略传输直接在开发机甚至生产机上改配置要么后续被覆盖要么完全没有可追溯性出问题时连“什么时候改的、谁改的”都查不到。3.2 一列配置行里到底填什么组、字段、层级、消息类型进入某条过程的维护界面你会看到若干列每一列都对应一个关键决策。我习惯把它们理解成四个问题配置列要回答的问题说明组Group这条检查属于哪个业务域例如客户信息组、物料信息组、装运信息组。组主要用于日志展示时按业务域归类也方便配置时查找字段Field检查哪个字段通过 F4 从字段目录选择例如 BSTKD客户采购订单号、MATNR物料编号、VSBED装运条件层级Level在单据的哪一层检查通常是抬头、项目、计划行。同一个字段在不同层级含义不同消息类型Message Type字段缺失时给什么反馈信息、警告、错误等下文专门讲另外还有一个容易忽略的列需求Requirement。它决定这条检查在什么业务条件下才执行。例如某条需求编号表示“仅当项目类别为 XX 时才检查”这在有特殊单据场景的项目里特别有用。看到这里你应该明白不完整过程本质上是一张规则表。每个字段配不配、配在哪一层、缺了之后给什么反馈、什么情况下才执行四个问题都答对了这张配置才是可用的。3.3 消息类型与需求的选择逻辑消息类型是整个配置里最需要思考的部分。它大致可以分成几档仅记录字段缺失时写入未完成日志但保存过程完全不打扰用户。适合“最好有但非强制”的信息类字段。信息提示保存时弹一条信息单据正常保存日志记录。警告保存时弹警告用户可以忽略并保存但单据会被标记为未完成。错误保存时直接阻止不补字段就存不了单。有一套简单的取舍逻辑真正影响下游流程的字段才值得设成错误。缺失后导致交货单建不了、开票建不了、定价算不了这种字段设错误只是“业务希望有”但一时拿不到设警告纯粹为了以后查询方便仅记录就够了。你把不该拦的字段设成错误订单录入效率立刻下降你把该拦的字段设成信息问题只是后移到了交货或开票环节而且更难发现。需求Requirement解决的是“不同场景不同规则”的问题。比如免费赠品订单不需要客户采购订单号退货订单不需要装运条件这些差异化需求都应该通过需求条件实现。标准过程里自带的需求编号是有说明的复制后一定要逐条看一遍对照你们项目里的单据类型和项目类别配置。不要图省事把需求条件删掉删掉意味着无条件检查会误伤特殊业务。3.4 挂到销售单据类型上才算生效过程维护完回到销售单据类型配置VOV8找到标准订单类型通常是 OR在“未完成过程/Incompletion Procedure”字段填入 ZA01保存。之后建一张测试订单故意不填客户采购订单号、不填装运条件、不填计划交货日期看系统是否按你配置的级别给出提示和日志记录。一个容易被忽略的动作每种要用的单据类型都要分别验证包括退货单、赠品单、询价单、报价单。不同单据类型可能挂接不同的不完整过程也可能共用同一个过程但业务场景差异很大。你只测标准订单是不够的至少要给每一类需要管控的单据类型建一条测试数据。4. 运行那一刻发生了什么从保存订单到日志落库配置讲完把运行侧的完整链路走一遍。很多“为什么我配置了没反应”的问题都是因为对运行机制理解不透。4.1 保存时系统做了什么用户在 VA01/VA02 里录入销售订单点保存。系统按以下顺序执行不完整检查根据单据类型找到绑定的不完整过程。逐行读取检查规则。先判断需求条件是否满足。如果不满足直接跳过这行。如果满足读取对应层级的字段值。字段为空或不符合要求则按该行消息类型生成反馈并写入未完成项目日志。同时在单据状态表里更新“未完成”标志。这里要特别强调一个容易误解的点未完成日志不是一张静态的流水表它是随单据保存、修改动态刷新的。你补上缺失字段再次保存系统会重新跑一遍完整的检查满足条件的记录会被自动清掉。所以它更像是单据当前状态的“健康检查报告”而不是历史记录台账。4.2 用户怎么看未完成日志V.02 与单据内查看日常使用侧有几个查看入口事务代码 V.02列出所有未完成销售订单。这是最常用的批量入口适合销售内勤做每日巡检。选中某行可以直接跳到 VA02 补字段也可以先查看具体缺了什么。VA02 修改界面中通过菜单“环境 → 显示未完成日志”具体菜单位置随系统版本略有差异打开当前单据的日志。适合单张单据排查。交货单的未完成状态在 VL02N 操作界面中体现开票单据的未完成状态在 VF02 操作界面中体现各自也有对应的清单入口。日志内容本身按组展示告诉你在哪个业务域、缺哪个字段、消息级别是什么。例如“装运信息组 → 装运条件缺失警告”。这种结构化的展示正是你在后台把字段按组分好的直接收益组设计得好业务人员看日志时一眼就能判断问题落在客户信息、物料信息还是装运信息。4.3 补完字段后的闭环模拟一次完整闭环业务人员建标准订单时没填客户采购订单号保存时系统警告订单保存成功V.02 清单里能看到它。打开未完成日志显示“客户信息组 → 客户采购订单号缺失”。业务人员进入 VA02填上采购订单号保存。系统重跑检查该行通过日志记录清除。再次打开 V.02这张单已经不在未完成清单里了。很多新手会试图去后台表里直接删未完成日志记录这是完全错误的方向。后台表删了只要字段还是空的下次保存又会生成。正确做法永远是补字段不是删日志。这个认知如果不在项目初期传达到位后面会有不少人跟你反馈“日志删不掉”“清单一直有脏数据”。5. 真实项目中遇到的高频坑位和我的配置习惯最后这部分是纯实战经验。配置手册里一般不会写这些但你在项目里几乎一定会碰到。5.1 “错误级别字段”太多会导致什么我见过不止一个项目业务方一口气列了二十多个“必填项”全部设成错误级别。结果订单录入员每保存一张单要面对十几个报错弹窗录入效率断崖式下降抱怨四起最后不得不重新开会把字段降级。教训很直接错误级别是稀缺资源能不能设成错误应该拿“缺失后下游流程会不会断”来衡量而不是拿“业务觉得这个字段重要”来衡量。可以做这样一个判定顺序缺了这个字段交货单能不能正常创建并过账缺了这个字段开票能不能正常创建缺了这个字段会不会影响定价、库存可用性、信用检查等核心逻辑四问都答“不影响”那它最多设警告或仅记录。如果字段对下游影响确实很大但业务暂时就是填不了我建议保留警告级别同时把 V.02 未完成清单纳入日常监控。这样既保留质量闸门又不至于把录入端彻底卡死。5.2 需求条件被无视的隐患复制标准过程时标准行里自带了一些需求条件。很多人复制后不去读需求说明直接保留或删除。有两个典型场景一是某些需求条件限定“仅当项目类别为 XX 时检查”但你复制后没有对照自己项目的项目类别配置导致检查在赠品行上误触发。二是你删掉了某条需求条件变成无条件检查结果退货单也被迫填客户采购订单号业务跑来找你“退货单为什么要求填这个”。正确的做法是上线前把过程里每条需求编号的说明逐条过一遍对照项目里的单据类型和项目类别清单。如果确实需要新的检查条件请开发评估在需求例程里做增强这是扩展未完成日志能力的标准方向。新增条件属于开发工作要排计划、要测试别当成普通后台配置随手做。5.3 固定检查清单分享一套我每做一个与销售订单相关配置时都会跑一遍的清单确认每一类销售单据类型都挂接了正确的未完成过程没有留空。对照业务方给出的“必填字段矩阵”检查过程里是否覆盖了所有关键字段。明确每个字段的消息级别与业务方逐条确认哪些是“下游阻断型必填”哪些是“提醒型建议填写”。用各单据类型分别建测试单据故意缺字段验证日志记录和消息反馈符合预期。补全字段再次保存确认日志清除、未完成清单刷新。查看 V.02 线上清单确认业务方能看到统一入口。全部配置变更放入传输请求并在测试环境回归后再搬到生产。这套清单做完绝大部分与未完成项目日志相关的返工都能避免。还有一个日常习惯值得分享我在项目里都会推荐客户把 V.02 未完成订单清单纳入销售内勤的每日晨会检查项。未完成日志本质上是一个流程质量信号它不会自己消失只会等人工补数。每天花十分钟梳理一遍很多订单卡壳问题都能在交货之前解决而不是拖到开票环节才炸出来。真正用好了这个配置业务团队会觉得“这个功能很有用”用不好它只会变成一堆没人看的警告弹窗。配置本身不复杂复杂的是想清楚每一条规则背后到底想守住哪一道质量关口。