STATU 处理状态(N未处理、B采购订单)--只要转过,数量没有转完也是B,可以判断menge > bsmng有没有 完全转完
MENGE 采购申请数量 BSMNG 已订购数量 MEINS 采购申请计量单位 BADAT 需求(请求)日期
EBKN 采购申请帐户设置(分配、订单号等)
EBELN 采购凭证号 LIFNR 供应商号 BSART 采购凭证类型
EKGRP 采购组 WAERS 货币码(作为货币参考字段) FRGKE 审批标识
PSTYP 采购凭证项目类别(有转换例程,存表和增强里是数字,可以直接关联采购信息记录类别)
KNTTP 科目分配类别(决定收货到库存还是消耗)(如成本中心、固定资产、办公用品等)
REPOS 发票收据标识(可以用来判断是否为免费项目,为空时标识免费,X表示非免费;目前只能用这个字段判断)
ELIKZ 交货已完成(X) EREKZ 最后发票标识(X,判断是否已清排除不需要开票的,合计开票数量和行项目数量比一下)
注:采购订单项目项目类别中的'L'表示分包,分包和工序外协的区别是分包是从采购订单直接创建,工序外协由生产订单带过来,分包可以是多个工序直接得到成品
select a003~mwskz konp~knumh konp~kopos konp~kbetr into table gt_konp
inner join konp on a003~knumh = konp~knumh
where a003~kappl = 'TX' and a003~kschl = 'MWVS' and a003~aland = 'CN' .
EBELN 采购凭证号 EBELP 采购凭证项目 EINDT 项目交货日期
MENGE 计划交货数量 WEMNG 收货数量(已检验确认)
EKBE采购凭证(收货)历史(包含了对应的采购凭证、物料凭证、发票凭证、以及交货数量)(没有收货就没有采购订单项目对应的数据,判断是否冲销)(只取收货数量可以直接去EKET)
VGABE 事件类型(P预制,2过账)(比如预制发票后EKBE会多一条P的参考凭证,物料平时新的s)
MENGE 数量(101移动类型) WESBS 数量(收货至冻结库存)(103、104、105、106移动类型)(对于工序是103收货、104冲销、105确认、106冲销)(105为负值,103、104、106为正值)
BEWTP 采购订单历史分类(收货、发票、分包等 英文字母表示)
SHKZG 借贷标识(收货时H为负,发料时S为负) (贷项和冲销都是H)
采购订单历史类别:E 为收货,O 为减库存(分包项目是给供应商提供物料,所以会减库存),Q 为发票校验,此项目中 BELNR 为发票凭证号,LFBNR为物料凭证号
采购订单项目有多张101物料凭证时,参考凭证都是第一张101。
注:当采购订单中勾选了“基于收货的IV”时,多张105凭证会合并,此时105凭证就没有对应的参考凭证了;这个选项会从信息记录带过来,免费订单由于不用开票,所以默认勾选了。
在103收货时,WESBS数量为正,SHKZG借贷标识为S(借)。在105确认时,WESBS数量为负,SHKZG借贷标识为H(贷)
在104退货或冲销时,WESBS数量为正,SHKZG借贷标识为H
预制发票时填写的参考凭证就应该是这里的参考凭证(比如105填写物料凭证会报错)。
物料凭证的过账日期决定了收货的记账期间,发票凭证的记账日期决定了付款的记账期间,一个是物流,一个现金流,可以发生在不同期间
采购订单收货中,如果物料凭证记错了,则是整张冲销,如果是不合格,则是退货不合格的数量;有检验批的物料不允许退货,只能冲销,对应的检验批会增加取消状态
item_100-menge = gt_ekbe-menge. "数量
item_100-wrbtr = gt_ekbe-wrbtr. "金额
item_100-menge = 0 - gt_ekbe-menge.
item_100-wrbtr = 0 - gt_ekbe-wrbtr.
item_100-menge = 0 - gt_ekbe-menge.
item_100-wrbtr = 0 - gt_ekbe-wrbtr.
item_100-menge = gt_ekbe-menge.
item_100-wrbtr = gt_ekbe-wrbtr.
item_200-menge = gt_ekbz-menge. "数量
item_200-wrbtr = gt_ekbz-dmbtr. "金额
item_200-menge = 0 - gt_ekbz-menge.
item_200-wrbtr = 0 - gt_ekbz-dmbtr.
IVTYP 发票来源(空MIR7 MIRO,A用函数。存在BUG(超预制)导致为空,同时CDHDR也没有数据) CPUDT 输入日期(可以被重新,预制时记录预置日期,过账时重写成过账日期)
EKKN 采购凭证中的账户设置(采购订单项目分配到生产订单)(项目上填写了科目分配类别才有科目分配的,如工序,否则没有和采购订单对应的数据)
EBELN 采购凭证号 EBELP 项目号 AUFNR 生产订单号
注:当采购订单科目分配项目为'F'时,项目细节才有‘科目分配’,只有采购订单为工序时,才会对应生产订单(因为我们的工序分配到生产订单上)
LIFNR 供应商号 bukrs 公司代码 zterm 付款条件
LFM1LIFNR 供应商编号 LFM1WAERS 采购订单货币
T163YPSTYP 项目类别(编号) T163YEPSTP 项目类别(代码) T163YSPRAS 语言代码
采购定价表(采购订单直接用条件记录号找不走a表)
IMG-物料管理-采购-条件-定义价格确定流程-定义条件类型
KNUMH 条件记录号 MATNR 物料号 LIFNR 供应商号
取数逻辑
注:取采购信息记录价格,先根据物料号、供应商号、有效日期在A017取条件记录号,然后用条件记录号在KONP中取价格(不用管KOPOS,每个KNUMH只有一条记录)
EINA (采购信息记录 --根据物料号和供应商号取采购信息记录编号)
INFNR 采购信息记录编号 EKORG ekgrp 采购组
MWSKZ 税代码(税率) LOEKZ 组织数据的删除标记(两个删除标记都要检查)
EORD Purchasing Source List
( eord~febel = 'X' or eord~FLIFN = 'X' ) Fixed vendor
INFNR 采购信息记录编号 EBELN 采购订单号 EBELP 项目号
QUNUM配额协议 QUPOS项目 SOBES 特殊采购(寄售)
其中SOBES存储的123之类的数值(比如寄售是2),和SOKEZ(寄售是K)的对应关系可以在SPRO->采购->定义项目类别的外部表示中配置,表T163Y(项目类型文本)
取数逻辑及代码
附: 采购凭证项目已清数量 = SUM(计划行计划交货数量 计划行收货数量)
采购凭证项目已收货数量 = SUM(MENGE + WESBS)(通过借贷标识判断数量正负,借为正,贷为负)
取采购信息记录 净价(信息记录的删除标记和价格不为空有遗留问题)
SELECT SINGLE KNUMH INTO ITABKNUMH
WHERE A017~MATNR = ITABMATNR AND A017~LIFNR = ITABLIFNR AND A017~DATBI > ITABAEDAT. "信息记录有效截止日期大于采购订单创建日期
SELECT SINGLE KBETR INTO ITABKBETR
WHERE KNUMH = ITABKNUMH AND KBETR NE 0.