
1. 项目概述为什么工厂日历不是“设置完就扔一边”的配置项在SAP项目现场我见过太多人把工厂日历Factory Calendar当成一个“填完就交差”的基础主数据——打开SCAL事务码勾选几个工作日保存然后转身去处理更“高级”的MRP运行或FICO过账。直到某天销售部门紧急催促交货系统却提示“交货日期不可用”或者MRP跑出来一堆红色的“无可用产能”警告采购计划却显示“物料可供应”又或者ATP检查结果和实际车间排产完全对不上……这时候大家才翻出SCAL盯着那个灰扑扑的界面发呆“这日历到底管了啥”工厂日历绝不是一张静态的“节假日表”。它是SAP整个供应链执行层的时间底层协议是所有与“时间驱动型业务逻辑”挂钩模块的共同锚点。它不直接生成凭证、不触发财务过账、不创建采购订单但它像空气一样渗透在每一个需要判断“某一天是否算作有效工作日”的环节里。从PP模块的生产订单下达与确认到MM模块的采购申请审批周期计算从SD模块的交货日期推算与承诺交付日CDP生成到FICO模块的折旧计提日历依据再到ATP可用性检查中的“可承诺交货日”判定、MRP净需求计算中的“计划时界”起止点——全都在悄悄读取工厂日历的定义。你输入的关键词里“sap md07”MRP结果清单、“sap ko88 增强”成本对象实际过账增强、“sap mdvp”MRP视图维护、“sap sto”库存转储单——这些高频操作背后无一例外都依赖工厂日历提供的时间有效性判断。比如MD07里显示的“需求日期”如果该日被工厂日历标记为假日系统就不会把它当作一个可执行的“计划日”来参与运算KO88增强中若需按“实际工作日”累计工时成本就必须绕过日历里的非工作日STO的交货日期若落在工厂日历定义的“停工日”系统会自动顺延而非报错。这种影响是隐性的、全局性的但一旦出错排查起来往往要兜一大圈最后才发现问题根源在SCAL里一个被忽略的“特殊日期”设置上。所以这篇内容不是教你怎么点开SCAL、怎么勾选周一到周五——那是SAP新手培训第一课的内容。我们要聊的是当项目真正落地面对客户千奇百怪的生产模式三班倒、周末加班、设备大修月、法定假日调休、甚至宗教节日轮休、复杂的多工厂协同A厂按标准日历B厂按化工行业连续生产日历C厂按食品行业季节性停产日历以及跨模块集成的严苛时效要求时工厂日历该如何配置、如何验证、如何规避那些文档里从不写的“坑”。我会用真实项目中的六个典型场景拆解告诉你这个看似最基础的配置如何成为项目成败的关键支点。2. 核心设计逻辑工厂日历不是“日历”而是“时间规则引擎”2.1 工厂日历的本质三层嵌套的规则体系很多人误以为工厂日历就是一张Excel式的日程表其实它是一个高度结构化的三层规则引擎。理解这三层是避免后续所有配置错误的前提。第一层基础日历Base Calendar这是最底层的“模板”。它只定义两类状态工作日Working Day和非工作日Non-Working Day。注意这里没有“半日”、“加班日”概念——基础日历只回答“这一天能不能算作一个完整的工作单位”。它不关心具体几点开工、几点下班只关心“这一天是否计入计划周期”。比如你为某工厂创建一个基础日历将2025年1月1日元旦设为非工作日那么所有引用此日历的模块在计算时都会跳过这一天。这个层级的配置在SCAL中通过“定义日历”完成核心是维护一个“年份日期状态”的映射表。第二层工厂分配Plant Assignment这才是真正让日历“活起来”的关键。一个基础日历可以分配给多个工厂Plant但每个工厂只能分配一个基础日历。这个分配动作本身就完成了“日历与业务实体的绑定”。但重点来了分配本身不产生新逻辑它只是建立引用关系。也就是说如果你把同一个基础日历分配给A厂和B厂那么A厂和B厂在时间计算上就完全一致。现实中90%的配置错误源于忽略了“不同工厂可能需要不同的基础日历”这一事实。比如汽车总装厂A厂和零部件铸造厂B厂的法定假日安排可能完全不同强行共用一个日历必然导致B厂的MRP计划在铸造炉检修日仍试图排产。第三层动态覆盖Dynamic Override这是最容易被忽视、也最具威力的一层。它允许你在基础日历之上针对特定日期或日期范围进行临时性、覆盖性的状态修改。比如基础日历里2025年10月1日是国庆节非工作日但客户今年因订单爆满决定国庆当天加班生产。这时你不能去修改基础日历因为会影响其他年份和其他工厂而应该在SCAL中为该工厂创建一条“动态覆盖”记录日期范围20251001-20251001状态设为“工作日”。系统在运行时会优先读取动态覆盖层的定义再回退到基础日历。这一层的存在让工厂日历具备了应对突发事件的弹性也是实现“柔性排产”的技术基础。提示动态覆盖的优先级永远高于基础日历。但要注意覆盖记录必须明确指定“工厂代码”否则系统无法知道该覆盖应用到哪个实体上。很多项目上线后发现日历失效就是因为动态覆盖漏填了工厂字段导致覆盖规则根本没生效。2.2 为什么“复制粘贴”日历是项目最大的定时炸弹在多个SAP项目中我亲眼见过实施顾问为了赶进度直接从测试系统里导出一个现成的日历导入到生产系统然后简单改个名字就交付。结果上线三个月后客户投诉“交货期总是比预期晚两天”。排查发现那个被复制的日历里有一条2024年12月的动态覆盖记录——那是测试环境为模拟“年底冲量”而人为添加的加班日。这条记录被原封不动带到了生产环境导致2025年12月系统真的把非工作日当成了工作日来排产最终造成交付延误。工厂日历的配置本质上是一次业务规则的翻译过程。它要求你必须深入理解客户的法定节假日执行细则比如调休安排是“补班”还是“放假”企业内部假期政策年假、探亲假、婚假等是否影响生产计划设备维护周期大修、中修、点检日是否固定是否与日历联动行业特殊要求化工行业的连续生产日历、食品行业的季节性停产月这些信息不可能从一个现成的模板里获得。复制粘贴等于把别人的业务规则硬塞进自己的业务流程里。它省下的那两个小时配置时间会在未来三个月里以每天两小时的排查时间十倍奉还。我的经验是哪怕项目再紧工厂日历的配置也必须由熟悉客户业务的顾问带着客户方的生产计划员、设备管理员、HR代表一起坐在会议室里逐月、逐日地核对、确认、签字。这份签字确认的《工厂日历业务规则说明书》其价值远超任何技术文档。2.3 工厂日历与“工作中心日历”的根本区别另一个常见混淆点是把工厂日历Factory Calendar和工作中心日历Work Center Calendar混为一谈。它们虽然都叫“日历”但服务的对象和粒度完全不同。工厂日历作用于整个工厂Plant级别是宏观的、战略性的日历。它决定了“这个工厂在某一天整体上是否具备开展业务活动的能力”。MRP运行、ATP检查、采购申请审批时限、销售订单承诺交货日的初始计算全部基于此。它的变更影响面极广通常按年度规划变动频率低。工作中心日历作用于单个工作中心Work Center级别是微观的、战术性的日历。它决定了“这个具体的机器或班组在某一天是否能执行生产任务”。比如同一工厂内A生产线的数控机床可能全年无休连续生产日历而B生产线的手工装配线则严格遵循标准五天工作制。工作中心日历在CR01/CR02中维护它会叠加在工厂日历之上系统先判断工厂日历是否为工作日再判断工作中心日历是否为工作日两者都满足才算一个有效的“可排产日”。举个实例某日工厂日历显示为“工作日”但该日恰好是A工作中心的设备大修日工作中心日历标记为非工作日。此时MRP在计算该工作中心的产能负荷时会将这一天视为“不可用”但采购模块的交货日期推算依然会把这一天当作有效日期因为它只看工厂日历。这就是为什么有时你会看到MRP报“产能不足”而采购却说“物料可按时交付”——两套日历在各自领域独立生效互不干扰。注意工作中心日历的优先级高于工厂日历但仅限于PP模块的产能计算。对于SD、MM、FICO等模块它们只认工厂日历。这种“分层日历”设计正是SAP实现精细化管理的体现但也要求顾问必须清楚每个模块的“日历消费习惯”。3. 六大实战应用场景深度拆解与配置详解3.1 场景一MRP净需求计算中的“计划时界”校准关联sap md07, sap mdvpMRP的核心输出是“何时需要什么、需要多少”。这个“何时”就是由工厂日历精确锚定的。我们以MD07结果清单为例当你看到某物料的“需求日期”是2025年06月15日这个日期的生成逻辑绝不是简单地在当前日期上加采购提前期GR Processing Time就能得到的。真实计算路径如下系统获取采购提前期例如10天从当前日期假设为2025年06月05日开始向后推算10个工厂日历工作日推算过程中系统会自动跳过工厂日历中定义的所有非工作日节假日、周末、动态覆盖的停工日最终落点的日期才是真正的“需求日期”。这意味着如果工厂日历里漏掉了某个法定假日MRP就会错误地把那个假日当作工作日来计算导致需求日期提前进而引发采购过早下单、库存积压。反之如果多标了一个非工作日需求日期就会被推迟造成采购延误。配置要点与避坑指南关键参数计划时界Planning Horizon。这不是一个固定值而是由工厂日历动态决定的。在OPPQMRP控制参数中你可以设置“计划时界天数”但系统实际执行时会将这个天数转换为“工厂日历工作日数”。例如你设定了90天的计划时界但如果这90天里包含了26个周末和11个法定假日那么系统实际覆盖的自然日可能长达127天。务必在MD07中点击“详细信息”按钮查看系统实际使用的“计划时界结束日期”并与你的业务预期核对。实操技巧利用MDVP做压力测试。在MDVP中选择一个高周转物料手动修改其采购提前期为1天然后运行MRP。观察MD07中“需求日期”的变化。如果今天是周五而工厂日历里周六周日是非工作日那么需求日期应该显示为下周一。如果显示为周六说明日历配置有误。这是最快速、最直观的验证方法。常见错误混淆“日历天数”与“工作日数”。客户常提需求“我们要覆盖未来半年的计划”。这里的“半年”指的是自然日但MRP的计划时界参数必须按工作日来设置。你需要先估算这半年内大约有多少个工作日通常按70%折算再填入OPPQ。直接填180会导致计划覆盖严重不足。3.2 场景二ATP可用性检查中的“可承诺交货日”生成关联sap sto, sap sdATPAvailable-to-Promise是销售承诺的基石。当销售代表向客户承诺“7天后交货”这个“7天”不是简单的7个自然日而是7个工厂日历工作日。ATP检查引擎如CO01/CO02在计算“可承诺交货日”CDP时其核心算法就是从订单创建日开始逐日累加直到找到第N个工厂日历工作日。一个经典故障案例某食品客户上线后销售抱怨“系统老是承诺太晚”。经查ATP检查结果显示一个标准订单的CDP比手工计算晚了整整3天。最终定位到工厂日历里将每年的“春节前一周”统一设为了“非工作日”理由是“车间要大扫除”。但客户的真实业务是大扫除期间包装线照常运转只是生产线暂停。而ATP检查只看工厂日历一概认定整厂停工导致所有交货承诺都被强制顺延。配置要点与避坑指南必须区分“全厂停工”与“局部停工”。ATP检查只认工厂日历它没有“部分产线可用”的概念。因此对于像上述案例中的“包装线不停产”唯一的解决方案是将包装线单独划分为一个工厂Plant并为其配置一个独立的、不包含“大扫除日”的工厂日历。这听起来麻烦但却是保证ATP准确性的唯一合规路径。动态覆盖是救命稻草。对于临时性的、全厂范围的停产如设备升级、安全演练不要修改基础日历而应使用动态覆盖。在SCAL中为该工厂创建一条覆盖记录日期范围即为停产日状态设为“非工作日”。这样既保证了日常生产的准确性又具备了应对突发状况的灵活性。与SD模块的交货日期推算联动。在OVZI交货单类型配置中有一个关键字段“计划交货日期确定方式”。如果选择“基于工厂日历”那么VL01N创建交货单时系统会自动根据工厂日历和运输时间计算出最早的可行交货日期。这个日期就是ATP检查的起点。确保OVZI的配置与工厂日历逻辑一致是避免前后端日期打架的前提。3.3 场景三采购申请PR审批流程的时效控制关联sap mm, sap request采购申请的审批是典型的“时效敏感型”业务流程。客户常要求“PR提交后必须在3个工作日内完成审批”。这个“3个工作日”其计时起点和终点完全由工厂日历定义。系统如何计时起点PR创建时间精确到秒终点最后一个审批人批准的时间计算逻辑系统会计算从起点到终点之间跨越了多少个工厂日历工作日。如果PR在周五下午5点提交审批人在下周一上午10点批准那么系统计算的审批时长是1个工作日因为周六、周日被工厂日历排除在外。配置要点与避坑指南审批工作流Workflow的时效配置。在SWDD中配置PR审批工作流时有一个“截止日期计算”选项。必须选择“基于工厂日历”并指定对应的工厂代码。如果错误地选择了“基于日历天数”那么周五提交的PR系统会在周日就发出“即将超时”的预警邮件这显然不符合业务实际。HR组织架构与日历的耦合。审批人可能属于不同的公司代码或工厂而工厂日历是按工厂分配的。如果审批链路上的某个审批人其组织单元Org Unit被分配到了一个与采购申请所属工厂不同的日历系统会如何计算答案是系统只认采购申请PR本身所归属的工厂的日历。PR的工厂代码EBAN-WERKS是唯一的判断依据与审批人的组织隶属无关。这一点必须在蓝图确认阶段就向客户澄清避免后期因审批人抱怨“我在休假系统还催我”而扯皮。“工作日”不等于“有人上班”。工厂日历只定义日期属性不定义人员排班。即使某日是工作日如果所有审批人都在休假系统依然会按日历计算时效并发出预警。这是流程设计的边界需要通过“代理审批人”Delegation机制来解决而非修改日历。3.4 场景四成本对象实际过账KO88中的工时成本分摊关联sap ko88 增强KO88是将实际发生的成本如人工、能源、折旧过账到成本对象如生产订单、项目的关键事务码。其中人工成本的分摊往往需要按“实际工作日”来计算日均费率。一个增强开发的真实需求客户要求对于夜班工人其日工资率是白班的1.5倍。但系统标准功能只支持按“日历日”分摊。于是开发团队在KO88的增强点如EXIT_SAPLKO88_001中编写逻辑读取工厂日历判断过账日期是否为工作日如果是则按1.5倍计算否则按0计算因为非工作日不产生夜班成本。配置要点与避坑指南日历读取的API选择。在ABAP增强中绝对不要用CALL FUNCTION DATE_CONVERT_TO_FACTORYDATE来判断日期。这个函数的参数FACTORY_CALENDAR_ID必须传入工厂代码且它返回的是“该日期在指定工厂日历中是否为工作日”的布尔值。这是最安全、最标准的方式。切忌自己写SQL去查T009表因为T009存储的是基础日历不包含动态覆盖会导致增强逻辑在覆盖日失效。“工作日”与“班次”的解耦。工厂日历只回答“这一天是否工作”不回答“这一天是否上夜班”。因此增强逻辑中必须将“工厂日历判断”与“班次主数据Shift Definition”查询结合起来。先确认是工作日再查询该日排班表确认是否有夜班。两者都满足才触发1.5倍费率。测试陷阱。在测试增强时务必使用真实的、已激活的工厂日历。很多顾问在开发系统用一个测试日历上线后切换到生产日历结果增强失效。最佳实践是在增强代码中硬编码工厂代码如1000并在开发、测试、上线所有环境中确保该工厂的日历配置完全一致。3.5 场景五库存转储单STO的交货日期自动顺延关联sap stoSTOStock Transport Order是跨工厂调拨的核心单据。其交货日期Delivery Date的生成是工厂日历影响最直观的场景之一。标准逻辑当创建STO时ME21N系统会根据“发货工厂”的工厂日历自动计算一个“最早可行交货日期”。计算公式为创建日期 运输时间Shipping Time但结果必须是一个工厂日历工作日。如果计算出的日期是非工作日系统会自动顺延至下一个工作日。一个血泪教训某汽车项目A工厂主机厂向B工厂零部件厂发送STO。A工厂日历正常B工厂日历里将每月15日设为“设备点检日”非工作日。结果所有15日创建的STO交货日期都被顺延到16日。但B工厂的实际业务是点检只占用上午2小时下午照常收货。这导致A工厂的物流计划被打乱整车装配线因缺件而停线。配置要点与避坑指南交货日期的源头控制。STO的交货日期由两个地方共同决定一是ME21N创建时的手动输入二是系统根据“发货工厂日历运输时间”的自动计算。后者只在创建时起作用一旦单据保存后续修改交货日期系统不再校验日历。因此必须在创建环节就堵住漏洞。解决方案是在ME21N的增强点如USEREXIT_SAVE_DOCUMENT_PREPARE中加入校验如果输入的交货日期在发货工厂日历中是非工作日则弹出错误消息强制用户修改。运输时间Shipping Time的配置位置。这个关键参数不在工厂日历里而在OMJH工厂间运输时间配置中。它定义了从发货工厂到收货工厂的“标准运输天数”。这个天数是按“工厂日历工作日”计算的。因此OMJH的配置必须与双方工厂的日历严格匹配。如果A厂日历有30个非工作日B厂只有20个那么为A→B配置的运输时间就必须比B→A的长以反映实际的物流瓶颈。“顺延”不等于“延迟”。系统顺延交货日期是为了保证业务可行性而非制造障碍。如果顺延导致整体供应链断裂如上述停线案例说明日历配置与业务现实脱节。此时正确的做法是重新评估“设备点检日”的定义——它应该是一个“部分受限日”而非“全厂停工日”。解决方案是将点检任务分配到具体工作中心并在工作中心日历中定义而不是污染整个工厂日历。3.6 场景六固定资产折旧FICO的计提日历依据关联sap fico, sap 固定资产折旧知识FICO模块中固定资产折旧的计提是另一个重度依赖工厂日历的场景。特别是对于“按工作日计提”的折旧方法如“单位产量法”的变种工厂日历是计算“当期工作日数”的唯一依据。标准配置路径在FA01创建资产时选择折旧码Depreciation Key该折旧码在OAYZ中定义。其中有一个关键字段“日历类型Calendar Type”选项包括01日历日Calendar Days02工作日Working Days03自定义日历Custom Calendar当选择02时系统在每月运行AFAB折旧运行时会读取该资产主数据中指定的“工厂代码”所关联的工厂日历统计当月的工作日总数然后按比例分摊月折旧额。配置要点与避坑指南资产主数据中的工厂代码是关键。一个资产可以属于多个公司代码但只能指定一个工厂代码用于折旧计算。这个工厂代码决定了它使用哪个工厂日历。如果客户有跨工厂的资产如总部办公楼必须为其指定一个逻辑上的“管理工厂”并确保该工厂的日历能真实反映该资产的使用强度。“工作日”与“使用率”的映射。选择02并不意味着系统会自动读取设备的实际运行小时数。它只是简单地将月折旧额除以当月工作日数再乘以当月实际工作日数。这是一种粗略的、基于时间的折旧逻辑。如果客户需要更精细的“按实际运行小时计提”则必须使用03自定义日历并配合BAPI或增强将设备PLC采集的运行小时数据写入自定义日历的“权重”字段。年度结账的致命陷阱。在12月31日运行AFAB时系统会计算整个会计年度的折旧。如果工厂日历在12月31日被定义为“非工作日”比如是周末那么系统会认为该日不计入工作日从而少计提一天折旧。这会导致年度报表失真。解决方案是在工厂日历中将12月31日无论星期几强制设为“工作日”因为会计年度的截止日是法律意义上的强制工作日。这属于日历配置的“例外规则”必须在蓝图中明确约定。4. 配置实操全流程与关键参数详解4.1 从零开始SCAL事务码的完整配置步骤配置工厂日历绝不是打开SCAL点几下鼠标那么简单。它是一个需要严谨规划、多方确认、反复验证的闭环过程。以下是我在数十个项目中沉淀下来的标准化流程。第一步业务规则收集与确认耗时2-3天与客户召开专项会议邀请生产计划、设备管理、HR、法务代表参加获取并确认国家法定节假日清单含调休安排、企业内部假期制度、设备大修/中修计划表、行业特殊停产要求输出《工厂日历业务规则说明书》明确每一条规则的适用工厂、生效日期、依据文件如红头文件号并由客户方签字。第二步基础日历创建SCAL - “定义日历”执行事务码SCAL点击“定义日历”按钮输入日历ID建议命名规则Z工厂缩写年份如ZSH1000_2025描述填写“上海工厂2025年日历”点击“创建”进入日历维护界面在“年份”字段输入2025点击“执行”系统自动生成2025年全年日期列表。此时所有日期默认为“工作日”状态1关键操作使用“批量更改”功能工具栏图标选择所有法定节假日如1月1日、2月10-16日等将状态改为2非工作日对于调休日如2月8日、2月17日将其状态改回1工作日保存。注意SCAL中“状态”代码含义1工作日2非工作日3半日仅在部分老版本中支持S/4HANA中已弃用。务必使用1和2。第三步工厂分配SCAL - “分配日历”在SCAL主界面点击“分配日历”按钮输入工厂代码如1000点击“执行”在结果列表中点击“新建”行输入上一步创建的日历IDZSH1000_2025保存。此时工厂1000就正式绑定了该日历。第四步动态覆盖创建SCAL - “维护动态覆盖”在SCAL主界面点击“维护动态覆盖”按钮输入工厂代码1000点击“执行”点击“新建”输入覆盖日期范围如20250601到20250601输入状态1工作日或2非工作日输入描述如“2025年6月1日设备升级”保存。第五步配置验证必做使用事务码SCAL点击“显示日历”输入工厂代码查看日历视图确认所有日期状态正确运行MD07选择一个物料查看其MRP结果中的“需求日期”与手工计算对比创建一个STOME21N观察交货日期是否按预期顺延运行CO01对一个销售订单做ATP检查确认CDP日期合理。4.2 关键参数详解那些藏在角落里的魔鬼细节参数一日历ID的长度与命名规范日历ID最大长度为10位字符强烈建议采用Z3位工厂缩写4位年份格式如ZSH1000_2025。这样做的好处是在SCAL列表中可以按工厂、按年份快速筛选在ABAP代码中可以通过字符串截取轻松提取工厂代码和年份便于动态读取避免使用纯数字ID如10002025因为系统会将其识别为数字可能导致某些增强点解析失败。参数二动态覆盖的日期范围精度动态覆盖支持“单日”20250601-20250601和“区间”20250601-20250630两种格式严禁使用模糊范围。例如不要写20250601-202506系统会报错对于跨年覆盖如春节假期横跨2025-2026必须创建两条覆盖记录分别对应两年。系统不支持跨年范围。参数三日历的“生效日期”与“失效日期”在SCAL中日历本身没有全局的生效/失效日期。它的生命周期由“工厂分配”和“动态覆盖”的日期范围共同决定一个日历ID可以被分配给多个工厂也可以在不同年份被重复使用如ZSH1000_2025和ZSH1000_2026是两个独立日历最佳实践为每个工厂、每个年度创建唯一的日历ID。这样历史数据的追溯和审计将变得无比清晰。如果复用ID当某年日历被修改时历史MRP结果可能会被意外“重算”导致数据不一致。参数四日历与“公司代码”的关系工厂日历与公司代码Company Code没有直接关联。一个公司代码下可以有多个工厂每个工厂可以有自己的日历FICO模块中折旧计算之所以能关联到日历是因为资产主数据中指定了“工厂代码”而非“公司代码”。这是一个常见的认知误区必须向客户澄清。4.3 多工厂、多日历的协同管理策略大型集团客户往往拥有数十个工厂每个工厂的生产模式各异。如何管理如此庞大的日历体系是项目成功的关键。策略一建立“日历矩阵”制作一张Excel表格列为工厂代码行为日历ID。每一格填写该工厂当前年度使用的日历ID。这张表就是你的“日历地图”。每次配置变更都必须在此表上更新并同步通知所有相关模块的负责人。策略二自动化检查脚本ABAP编写一个简单的ABAP报表如Z_CHECK_FACTORY_CALENDAR功能包括检查所有工厂是否都已分配日历检查所有动态覆盖记录的日期范围是否在有效期内避免过期覆盖检查是否存在“空日历”即分配了日历ID但该ID在SCAL中不存在每月初自动运行输出检查报告。这个脚本能在问题发生前就将其扼杀在摇篮里。策略三变更管控流程所有工厂日历的变更包括基础日历修改、动态覆盖增删必须走正式的变更请求Change Request流程变更请求中必须附带《变更影响分析报告》明确列出受影响的模块PP、MM、SD、FICO、事务码MD07、CO01、KO88等和预计影响范围变更必须在非高峰时段如周末执行并在执行后24小时内完成所有关联模块的回归测试。5. 常见问题排查与独家避坑技巧实录5.1 问题速查表从现象反推日历配置错误现象可能原因快速验证方法解决方案MD07中“需求日期”比预期早/晚工厂日历中漏标/多标了非工作日在SCAL中输入需求日期查看其状态是否为1修正基础日历或动态覆盖STO交货日期被无故顺延发货工厂日历中该日期被设为非工作日在ME21N中手动输入该日期看系统是否允许保存修改日历或调整OMJH运输时间ATP检查的CDP日期不合理收货工厂日历与业务实际不符在CO01中输入一个测试订单查看CDP计算过程为收货工厂配置独立日历或使用工作中心日历KO88增强中工作日判断始终为假增强代码中未传入正确的工厂代码在增强代码中WRITE: / 工厂代码:, p_werks.查看输出确保从PR/PO/订单中正确读取工厂代码AFAB折