2026/5/21 15:13:08
网站建设
项目流程
黄江建设网站,工业和信息化部发短信是怎么回事,保定市网站设计,做网站点击软件在SAP中#xff0c;未结PO#xff08;未完全收货/未完全开票#xff09;的状态是动态计算的#xff0c;没有单独的“未结PO表”。不过#xff0c;可以通过几个核心表关联查询。我先梳理流程和表关系#xff0c;再给出查询未结PO的常用方法。一、PO相关主要后台表表名描述…在SAP中未结PO未完全收货/未完全开票的状态是动态计算的没有单独的“未结PO表”。不过可以通过几个核心表关联查询。我先梳理流程和表关系再给出查询未结PO的常用方法。一、PO相关主要后台表表名描述关键字段EKKOPO抬头数据EBELNPO号、BSART凭证类型、LIFNR供应商EKPOPO行项目数据EBELN、EBELP行号、MATNR物料、MENGE数量、NETWR金额EKETPO计划行数据EBELN、EBELP、ETENR计划行号、MENGE计划数量EKESPO确认供应商确认EBELN、EBELP、ETENRRESB预留/相关需求RSNUM预留号、BDMNG需求数量二、收货Goods Receipt相关表表名描述关键字段EKBEPO历史收货/发票凭证EBELN、EBELP、VGABE交易类型、BELNR物料凭证/发票凭证、SHKZG借贷标识、MENGE数量、DMBTR金额MSEG物料凭证项目MBLNR物料凭证、ZEILE行号、EBELN、EBELP、MENGEMKPF物料凭证抬头MBLNR、MJAHR年度、BLART凭证类型关键点EKBE是最重要的表它记录了每一笔与PO相关的收货和发票凭证。VGABE 1表示收货VGABE 2表示发票收据SHKZG S表示借方增加库存/应付SHKZG H表示贷方退货/冲销三、发票校验Invoice Verification相关表表名描述关键字段RBKP发票抬头RBNUM发票凭证、LIFNR、BUDATRSEG发票行项目RBNUM、RBZEILE行号、EBELN、EBELP、MENGE数量、DMBTR金额四、业务流程及数据更新1. PO创建更新表EKKO抬头、EKPO行项目、EKET计划行状态PO行项目的ELIKZ交货完成标识和REPOS发票完成标识均为空2. 收货MIGO更新MSEG/MKPF物料凭证同时更新EKBE增加一条VGABE1的记录SHKZGS收货PO行项目EKPO-MENGE不变但已收货数量可通过EKBE累计计算3. 退货退货交货更新MSEG/MKPF同时更新EKBE增加一条VGABE1的记录SHKZGH退货4. 发票校验MIRO更新RBKP/RSEG发票凭证同时更新EKBE增加一条VGABE2的记录SHKZGS发票如果发票数量小于收货数量则未完全开票5. 完成标识更新当收货数量 ≥ PO数量时系统自动勾选EKPO-ELIKZ X交货完成当发票数量 ≥ PO数量时系统自动勾选EKPO-REPOS X发票完成五、如何查询“未结PO”方法1直接通过EKPO状态字段查询简单但不精确sqlSELECT ebeln, ebelp, menge, elikz, repos FROM ekpo WHERE elikz X OR repos X;缺点只反映最终完成状态不反映部分收货/开票的中间状态。方法2通过EKBE累计计算推荐sqlSELECT e.ebeln, e.ebelp, e.menge AS po_quantity, SUM(CASE WHEN be.vgabe 1 AND be.shkzg S THEN be.menge ELSE 0 END) - SUM(CASE WHEN be.vgabe 1 AND be.shkzg H THEN be.menge ELSE 0 END) AS gr_quantity, SUM(CASE WHEN be.vgabe 2 AND be.shkzg S THEN be.menge ELSE 0 END) - SUM(CASE WHEN be.vgabe 2 AND be.shkzg H THEN be.menge ELSE 0 END) AS iv_quantity, e.menge - (SUM(CASE WHEN be.vgabe 1 AND be.shkzg S THEN be.menge ELSE 0 END) - SUM(CASE WHEN be.vgabe 1 AND be.shkzg H THEN be.menge ELSE 0 END)) AS open_gr, e.menge - (SUM(CASE WHEN be.vgabe 2 AND be.shkzg S THEN be.menge ELSE 0 END) - SUM(CASE WHEN be.vgabe 2 AND be.shkzg H THEN be.menge ELSE 0 END)) AS open_iv FROM ekpo e LEFT JOIN ekbe be ON e.ebeln be.ebeln AND e.ebelp be.ebelp AND be.vgabe IN (1, 2) WHERE e.loekz L -- 未删除 GROUP BY e.ebeln, e.ebelp, e.menge HAVING e.menge (SUM(CASE WHEN be.vgabe 1 AND be.shkzg S THEN be.menge ELSE 0 END) - SUM(CASE WHEN be.vgabe 1 AND be.shkzg H THEN be.menge ELSE 0 END)) OR e.menge (SUM(CASE WHEN be.vgabe 2 AND be.shkzg S THEN be.menge ELSE 0 END) - SUM(CASE WHEN be.vgabe 2 AND be.shkzg H THEN be.menge ELSE 0 END));方法3使用标准视图或事务代码事务代码ME2L、ME2M、ME2N等可以选择“未完全交货”或“未完全开票”的PO视图V_EKPO_EBAN、V_EKBE等组合查询六、关键总结没有独立的“未结PO表”状态是通过EKPO的完成标识和EKBE的累计数量动态判断的。核心表关系EKKO/EKPO→EKBE←MSEG/RBKP判断逻辑未完全收货PO数量 - 累计收货数量 0未完全开票PO数量 - 累计开票数量 0完全完成EKPO-ELIKZ X且EKPO-REPOS X如果你需要具体报表或更复杂的查询逻辑如按供应商、物料、工厂等我可以提供更详细的SQL示例。