邢台市网站建设_网站建设公司_全栈开发者_seo优化
2025/12/25 8:36:48 网站建设 项目流程

EREKZ并不是“有没有做过发票校验”的标志,而是“这张 PO 行项目被手工勾选为‘最终发票’(Final Invoice)”的标记。
只要你在 MIRO 里没点过菜单项发票 → 最终发票(或代码里没把XBLNR-FINAL置位),它就永远空。
所以做了 1 张、10 张发票,只要没人为去勾最终,EREKZ 仍是空——这就是你看到的“不对”的根源。


  1. 三个字段别混
    | 字段 | 中文短名 | 何时回写 | 业务含义 | |----|--------|---------|---------| |EREKZ| 最终发票标识 | MIRO 勾“最终发票”或批量设置 | 告诉系统:以后再也不接受这张 PO 的发票了,剩余金额全部结清。 | |DABMG| 已开票数量 | 每张 MIRO 过账时累加 | 数量维度“已开多少”。 | |WRBTR/DMBTR| 已开票金额 | 同上 | 价值维度“已开多少”。 |


  1. 正确判断“发票是否做完”
    业务上99% 的场景只要比较:

剩余可开票数量 = PO 数量 – DABMG 剩余可开票金额 = 行净值 – 累计发票金额(EKBE-WRBTR 汇总)

当剩余数量 ≤ 0 且剩余金额 ≤ 0 时,就是“做完发票”。
系统状态EKPO-STATU

  • C已完成(数量角度)

  • L最后发票已入账(需同时满足数量+金额+EREKZ='X' 才出现)


  1. 快速取数代码(无金额差异版)

SELECT SINGLE ekpo~ebeln, ekpo~ebelp, ekpo~menge AS po_qty, ekpo~netwr AS po_val, ( SELECT SUM( dabmg ) FROM ekbe WHERE ebeln = ekpo~ebeln AND ebelp = ekpo~ebelp AND vgabe = '2' ) AS inv_qty, ( SELECT SUM( wrbtr ) FROM ekbe WHERE ebeln = ekpo~ebeln AND ebelp = ekpo~ebelp AND vgabe = '2' ) AS inv_val INTO @DATA(ls_stat) FROM ekpo WHERE ebeln = @lv_ebeln AND ebelp = @lv_ebelp. IF ls_stat-po_qty <= ls_stat-inv_qty AND ls_stat-po_val <= ls_stat-inv_val. "=== 发票已完成 === ENDIF.

  1. 什么时候才需要EREKZ

  • 做寄售/管道结算(MRKO)前,系统会强制把对应结算行标成最终发票;

  • 项目或政府合同,审计要求“一张 PO 只能对应一张发票”时,由用户手工勾;

  • 写报表只关心“再也不会有发票进来”才用EREKZ='X'当过滤条件。


结论
EREKZ='X'≠ 已做发票;
想看“发票是否做完”直接比较DABMG vs MENGE(数量)+ 累计发票金额(价值),或者看STATU = 'L'

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询