在SAP中通过MRP或采购申请自动创建采购订单(PO)时,采购信息记录(Info Record)未被带入价格、交货条件等关键字段,是典型配置疏漏问题。常见原因包括:① 信息记录未激活(有效状态为“Released”)或有效期不覆盖PO创建日期;② 物料主数据采购视图中未维护正确的“采购信息记录类型”(如E或F);③ 供应商主数据中未勾选“信息记录相关”(Info Update)标识;④ 自动PO生成事务(如MD04→ME59)未启用“使用信息记录”选项(需检查OMGQ/OMI8中“Info Record Usage”配置);⑤ 信息记录与采购申请/计划行的物料、工厂、采购组织三者未完全匹配。建议按“信息记录状态→主数据一致性→配置开关→运行参数”四级排查,并用ME13验证信息记录是否可被系统识别。忽略任一环节均会导致价格/条款无法自动带出,增加人工干预风险。
1条回答 默认 最新
桃子胖 2026-02-27 00:00关注```html一、现象层:自动PO未带出Info Record关键字段的典型表现
在SAP ECC或S/4HANA环境中,当通过MRP运行(MD01/MD02)生成采购申请(PR),再经ME59批量转为采购订单(PO)时,常出现价格字段(NETPR)、交货条款(EKKO-EKET)、税码(MWSKZ)、采购组织层级条件(如折扣、运费)等空白或默认值。该问题不报错,但导致后续发票校验(MIRO)差异、供应商对账偏差及采购合规审计风险。
二、数据层:主数据四维匹配性验证清单
维度 检查对象 关键字段 合规要求 ① 物料 MARA + MRP视图 MATNR, WERKS, EKORG, BSART 采购视图中“采购信息记录类型”必须为E(标准)或F(框架协议) ② 供应商 LFA1 + LFM1 LIFNR, EKORG, WERKS LFM1-INFO_UPD = 'X'(启用信息记录更新) ③ 信息记录 EINA + EINE INFNR, MATNR, LIFNR, EKORG, WERKS STATUS = 'A'(Released),且VALID FROM ≤ PO日期 ≤ VALID TO ④ 采购申请 EBAN BANFN, BNFPO, MATNR, WERKS, EKORG 与Info Record三要素(物料+工厂+采购组织)严格一致 三、配置层:OMGQ/OMI8中“Info Record Usage”开关逻辑
系统级控制开关位于SPRO路径:Materials Management → Purchasing → Purchase Order → Define Default Values for Document Type。需重点核查:
- OMGQ:针对标准PO类型(如NB),勾选“Use info record”并指定“Info record type”为E/F;
- OMI8:针对自动创建场景(如ME59),确认“Automatic PO creation”下“Info record usage”设为“Always”或“At least one valid”;
- 若使用BAdI
ME_PURCHDOC_POSTED或增强EXIT_SAPLMEGUI_012,需额外验证其是否覆盖了Info Record读取逻辑。
四、执行层:四级递进式诊断流程图
graph TD A[Step 1:状态验证] -->|ME13查INFNR| B[Released? Validity in range?] B -->|否| C[修正EINA-STATUS/EINE-DATBI] B -->|是| D[Step 2:主数据一致性] D --> E[物料采购视图EINART=E/F?] D --> F[供应商LFM1-INFO_UPD='X'?] D --> G[EBAN-EKORG/WERKS/MATNR ≡ EINA?] E & F & G -->|全部满足| H[Step 3:配置开关] H --> I[OMGQ中PO类型启用Info Record?] H --> J[OMI8中ME59策略启用?] I & J -->|启用| K[Step 4:运行参数捕获] K --> L[调试事务ME59时激活ST05 SQL Trace] K --> M[断点调试CL_PO_CREATE_MM->GET_INFO_RECORD]五、验证层:ME13不可替代的黄金验证法
执行ME13 → 输入INFNR → 查看“General Data”和“Conditions”页签,必须同时满足:
- “Status”栏显示“Released”图标(绿色对勾),非“Created”或“Blocked”;
- “Validity Period”覆盖当前系统日期;
- “Conditions”页签下存在至少一条有效条件记录(KONV表有对应KNUMH);
- 点击“Where-Used List”可回溯至EBAN采购申请行项目;
- 使用SE16N查询EINE表,确认EKORG、WERKS、LIFNR、MATNR四字段与采购申请完全一致(区分大小写及空格)。
六、高阶规避:ABAP级防御性编程建议
对于定制化自动PO场景(如IDoc/BAPI采购创建),应在调用
BAPI_PO_CREATE1前插入预检逻辑:DATA: lt_info_record TYPE STANDARD TABLE OF eina. CALL FUNCTION 'ME_GET_INFORECORD' EXPORTING i_matnr = ls_eban-matnr i_lifnr = ls_eban-lifnr i_ekorg = ls_eban-ekorg i_werks = ls_eban-werks IMPORTING e_infnr = lv_infnr TABLES t_eine = lt_info_record. IF sy-subrc <> 0 OR lines( lt_info_record ) = 0. MESSAGE e001(zmm) WITH 'Missing active Info Record for' ls_eban-matnr. ENDIF.该机制可将问题拦截在创建前,避免事后人工补救。
```本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报