相关的表:

ekko:采购凭证抬头表 用于判断是否委外

ekpo:采购凭证行项目表 用于判断是否委外以及委外采购的数量

resb:获取委外采购单中bom的相应预留

mseg:获取已经委外原材料出库给供应商的批次

mslb:获取提供给供应商的库存以及批次

bapi

BAPI_GOODSMVT_CREATE:过账bapi

相关移动类型

101:采购收货过账

541:委外原材料出库过账(这里的逻辑默认已经原料出库了)

543:消耗委外原材料出库到供应商的库存的数据

委外流程

创建委外采购单

委外采购单:4500000908



因为bom组件过多,我用作测试的话,就在采购订单中删除了很多bom组件,只留了两个

委外原材料过账

审批后进行委外过账,我这边也是通过接口过账的,也是用的BAPI_GOODSMVT_CREATE这个bapi,移动类型541

过账后你会在mmbe里查看物料的库存时发现有提供给供应商的库存

委外采购过账

因为涉及系统之间的传输,所以并不能完整给出代码,但是主体处理是没有问题的,部分参数我也写死了,根据自己需要改写即可

  DATA: ls_header LIKE  bapi2017_gm_head_01,
lv_code LIKE bapi2017_gm_code VALUE '01',
lv_doc TYPE bapi2017_gm_head_ret-mat_doc,
lv_year TYPE bapi2017_gm_head_ret-doc_year,
lt_item LIKE bapi2017_gm_item_create OCCURS 0 WITH HEADER LINE,
lt_ret LIKE bapiret2 OCCURS 0 WITH HEADER LINE. DATA: lv_outfm TYPE mseg-menge,
lv_outfz TYPE mseg-menge. DATA: lv_line_id TYPE mseg-line_id VALUE '000000',
lv_parent_id TYPE mseg-parent_id VALUE '000000',
lv_line_depth TYPE mseg-line_depth VALUE '00'. "判断 是否是 委外采购订单收货
SELECT
FROM ekko
INNER JOIN ekpo
ON ekko~ebeln EQ ekpo~ebeln
FIELDS
ekko~ebeln,
ekpo~ebelp,
ekpo~matnr,
ekko~bsart,
ekpo~pstyp,
ekpo~menge
WHERE ekpo~ebeln EQ '4500000908'
AND ekpo~ebelp EQ '00010'
AND ekpo~matnr EQ '采购单上的物料号'
AND ekko~bsart EQ 'Z003'
AND ekpo~pstyp EQ '3'
INTO TABLE @DATA(lt_outpo). IF lt_outpo IS NOT INITIAL. " 该采购单是委外采购单
"获取委外采购单的相应bom预留 以及 对应批次
SELECT
FROM resb
INNER JOIN mseg
ON mseg~ebeln EQ resb~ebeln
AND mseg~ebelp EQ resb~ebelp
AND mseg~lifnr eq resb~lifnr
AND mseg~matnr eq resb~matnr
FIELDS
mseg~matnr,
resb~erfmg,
resb~ebeln,
resb~ebelp,
mseg~werks,
mseg~lgort,
mseg~sobkz,
mseg~charg,
mseg~lifnr,
resb~meins
WHERE resb~ebeln EQ '4500000908'
AND resb~ebelp EQ '00010'
AND mseg~lifnr EQ '30108'
AND mseg~sobkz = 'O'
INTO TABLE @DATA(lt_outbom). "获取提供给的供应商库存
SELECT
FROM mslb
FIELDS
mslb~matnr,
mslb~charg,
mslb~werks,
mslb~sobkz,
mslb~lifnr,
mslb~lblab,
mslb~ersda
WHERE mslb~lifnr EQ '30108'
INTO TABLE @DATA(lt_outinv). SORT lt_outinv BY ersda ASCENDING.
ENDIF. lt_item-po_number = '4500000908'.
lt_item-po_item = '00010'.
lt_item-material = '采购单上的物料号'.
lt_item-vendor = '30108'.
lt_item-entry_qnt = '5'.
lt_item-entry_uom = '物料单位'.
lt_item-plant = '工厂'.
lt_item-stge_loc = '存储地点'.
lt_item-move_type = '101'.
lt_item-vendrbatch = '供应商批次'.
lt_item-batch = '内部批次'.
lv_xchpf = 'X'.
lv_line_id = lv_line_id + 1.
lv_parent_id = lv_line_id.
lt_item-line_id = lv_parent_id. " 父项目 _conv_matnr: 'IN' lt_item-material.
_conv_alpha: 'IN' lt_item-vendor.
_conv_alpha: 'IN' lt_item-po_number. APPEND lt_item.
CLEAR: lt_item. "上面的过账一般采购收货都是一样的 ,委外的区别就在下面这个循环,需要将bom组件的数据也写入
IF lt_outpo IS NOT INITIAL. " 该采购单是委外采购单 需要填入明细数据 移动类型为543 lv_outfz = '采购收货的数量'. " 过账的数量 用作分子 READ TABLE lt_outpo INTO DATA(ls_outpo) WITH KEY ebeln = '4500000908' ebelp = '00010'.
IF sy-subrc EQ 0.
lv_outfm = ls_outpo-menge. " 找出采购单的数量 用作分母
ENDIF. LOOP AT lt_outbom ASSIGNING FIELD-SYMBOL(<fs_outbom>) WHERE ebeln = '4500000908' AND ebelp = '00010'. " 获取bom预留
lt_item-move_type = '543'. " 移动类型
lt_item-material = <fs_outbom>-matnr. " 物料号
lt_item-plant = <fs_outbom>-werks. " 工厂
lt_item-stge_loc = <fs_outbom>-lgort. " 存储字典
lt_item-spec_stock = 'O'. " 特殊库存
lt_item-batch = <fs_outbom>-charg. " 内部批次
lt_item-entry_qnt = lv_outfz / lv_outfm * <fs_outbom>-erfmg. " 过账的成品数量 / 采购的成品数量 * BOM组件的数量
lt_item-entry_uom = <fs_outbom>-meins. " 单位
lt_item-parent_id = lv_parent_id. " 父项目编码
lv_line_id = lv_line_id + 1. " 子项目编号
lt_item-line_id = lv_line_id.
lv_line_depth = '01'.
lt_item-line_depth = lv_line_depth. "bom层次 APPEND lt_item. CLEAR lt_item.
ENDLOOP.
ENDIF. clear it_item. CALL FUNCTION 'BAPI_GOODSMVT_CREATE'
EXPORTING
goodsmvt_header = ls_header
goodsmvt_code = lv_code
IMPORTING
materialdocument = lv_doc
matdocumentyear = lv_year
TABLES
goodsmvt_item = lt_item
return = lt_ret. IF lv_doc <> ''.
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
EXPORTING
wait = 'X'. ELSE.
CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.
ENDIF.

ABAP 委外采购收货调用过账bapi的更多相关文章

  1. 20170524 委外采购的物料BOM

    目标:找委外采购订单BOM, 我的方法:1.直接在电脑中搜索关键字:2.到系统中找数据查询3.委外采购订单系统如何操作? 数据怎么做, 实施: 结果:MDBAEKET, "采购订单项目计划行 ...

  2. 【MM系列】SAP MM模块-分析采购收货完成标识

    公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[MM系列]SAP MM模块-分析采购收货完成标 ...

  3. 【MM系列】SAP MM模块-委外采购订单 把Warning转换成Error信息提示

    公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[MM系列]SAP MM模块-委外采购订单 把W ...

  4. ERP采购收货在标准成本和移动平均价下的差别

    欢迎关注微信公众号:iERPer (ERP咨询顾问之家) ERP系统在处理主要的采购流程有: 下采购合同->下采购订单->收货->发票校验->付款(财务) 其中 收货和发票校验 ...

  5. SAP交货单过账自动生产采购订单、采购订单自动收货入库

    公司间需要买卖操作,由于发货和收货都是同一批人在操作,为了减少业务人员的工作量,提高工作效率,特实现以上功能 1.增强实现:增强点为交货单过账成功时触发,在提交前触发,如果遇到不可预知问题,可能造成数 ...

  6. 通过数据,修改金蝶ERP的收料通知单不合格和合格数量,修改生产投料单,委外发出数量

    update POInStockEntry set FAuxNotPassQty=不合格数量 where FInterID=(select FInterID from POInStock where ...

  7. SAP MM 标准采购组织的分配对于寄售采购订单收货的影响

    SAP MM 标准采购组织的分配对于寄售采购订单收货的影响 PO 4100004022 是一个寄售的采购订单, 采购组织是CSAS, 工厂代码SZSP.采购信息记录也是有的, MIGO试图对该采购订单 ...

  8. 【MM系列】SAP 采购订单收货后不能修改价格的增强

    公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[MM系列]SAP 采购订单收货后不能修改价格的 ...

  9. 【MM系列】SAP MM模块-收货自动创建采购订单

    公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[MM系列]SAP MM模块-收货自动创建采购订 ...

  10. 收货MIGO

    FUNCTION zrfc_mm003. *"---------------------------------------------------------------------- * ...

随机推荐

  1. vs code .net core Linux下离线安装Nuget包

    本人第一次使用 vs code在linux下开发.net core项目,由于处于内网,无法通过在线安装,所以在遇见离线安装Nuget包时,耗费了一番功夫,网上也没有相关的,最后还是多个思路结合才解决的 ...

  2. session取不到值

    今天鼓捣项目时出现了一个问题 项目重启后,设置session值后,第一次请求经过过滤器时 session取不到值,导致被拦截 经过半天的研究,终于...我请教了别人 把代码给了朋友,在朋友一段时间的琢 ...

  3. DVWA靶场实战(六)——Insecure CAPTCHA

    DVWA靶场实战(六) 六.Insecure CAPTCHA: 1.漏洞原理: Insecure CAPTCHA(不安全的验证码),CAPTCHA全程为Completely Automated Pub ...

  4. win32com操作word API精讲&项目实战 预告

    对win32com的使用和研究有好一段时间了,想起本人刚开始做word编程项目时的各种痛苦:网上能找到的都是简单的示例,如同hello word一般,嚼之无味又无可奈何.读office的word接口文 ...

  5. Odoo View 常用技巧

    隐藏Field <field name="currency_id" invisible="True"/> <field name=" ...

  6. (转载)Python中关键词yield怎么用?

    原文: https://stackoverflow.com/questions/231767/what-does-the-yield-keyword-do 译文: https://zhuanlan.z ...

  7. 从零开始,打造属于你的 ChatGPT 机器人!

    大家好!我是韩老师. 不得不说,最近 OpenAI/ChatGPT 真的是太火了. 前几天,微软宣布推出全新的 Bing 和 Edge,集成了 OpenAI/ChatGPT 相关的技术,带动股价大涨: ...

  8. Matlab导入多个.mat文件进行画图

    目录 0. 实验背景 1. 导入.mat文件存储 1.1 导入.mat文件及作图最简单的方式: 1.2 导入.mat文件及作图的脚本代码 2. plot画图总结 2.1 画散点图 2.1.1 点形状 ...

  9. 《关于我因为flink成为spark源码贡献者这件小事》

    各位读者老爷请放下手上的板砖,我可真没有标题党,且容老弟慢慢道来. spark和flink本身相信我不用做过多的介绍,后端同学不管搞没搞过大数据,应该都多多少少听过. 如果没听过,简单说,spark和 ...

  10. Centos7搭建hadoop3.3.4分布式集群

    目录 1.背景 2.集群规划 2.1 hdfs集群规划 2.2 yarn集群规划 3.集群搭建步骤 3.1 安装JDK 3.2 修改主机名和host映射 3.3 配置时间同步 3.4 关闭防火墙 3. ...