业务场景为SAP ERP系统与仓储业务系统集成,核心集成分两步:

创建、修改、删除采购订单时,可在BADI的增强出口ME_PURCHDOC_POSTED触发订单同步:

在POST方法中调用接口,根据OLD和NEW值判断更改标识:

CALL FUNCTION 'XXXXX' STARTING NEW TASK 'XXXXX'EXPORTINGim_ekko     = im_ekkoTABLESim_eket     = im_eketim_ekpo     = im_ekpoim_ekpo_old = im_ekpo_oldim_ekkn     = im_ekkn.

2. 仓储业务系统负责业务端来料登记、质检、入库业务数据,通过接口将数据同步至SAP。SAP不记录质检数据,只记录来料登记数量(103)、质检不合格退货数量(124)、合格入库数量(105)、合格入库后其他质量问题退库,未做发票校验(122)操作。针对采购退货订单(161移动类型)、103、124、105、122、161冲销凭证实现过于简单不做赘述。具体参考:

这里涉及一个重要问题就是供应商主数据是否勾选了基于收货的发票校验,这个数据选项影响到105(质检合格)、124(质检不合格)、122(质检合格后,未做发票校验退货)的凭证是否要参考物料凭证过账,前台MIGO过账,系统会自动匹配,调用BAPI过账需求自开发程序进行匹配。如下图:

ECC版本:

S4版本:

在代码逻辑实现要进行考虑:

1、105和124的凭证过账时,都是参考103的凭证。需要计算排除104冲销产生的103凭证外,剩余103凭证可被参考(103-104-105+106-124+125)的凭证数据。

2、122的凭证参考的也是103的凭证。需要排除104冲销掉产生的103凭证和已经做了发票校验的凭证外可被参考的凭证,即:(105+123-122-106)-已作发票校验的数量。

具体代码:

 "判断基于发票的勾是否勾上SELECT SINGLE webreFROM ekpoINTO @DATA(lv_webre)WHERE ebeln = @lw_po-ebelnAND ebelp = @lw_po-ebelp."105,124凭证需要参考凭证IF ( lt_item-move_type = '105' OR lt_item-move_type = '124' ) AND lv_webre IS NOT INITIAL."订单行的所有103凭证SELECT gjahr,belnr,buzei,bamng,lfgja ,lfbnr,lfposFROM ekbeINTO TABLE @DATA(lt_103)WHERE ebeln = @lw_po-ebelnAND ebelp = @lw_po-ebelpAND bwart = '103'.LOOP AT lt_103 INTO DATA(lw_103).IF lw_103-belnr NE lw_103-lfbnr."104冲销产生的103凭证排除lw_103-bamng = 0."SAP中,103凭证未被完全参考时,参考凭证 = 原凭证ELSE.SELECT SUM(CASE bwartWHEN '104' THEN bamng * -1WHEN '105' THEN bamng * -1WHEN '124' THEN bamng * -1ELSE bamngEND )FROM ekbeINTO @DATA(lv_bamng)WHERE ebeln = @lw_po-ebelnAND ebelp = @lw_po-ebelpAND bwart IN ( '105' , '106' , '104', '124' , '125' ,'103' )AND lfgja = @lw_103-gjahrAND lfbnr = @lw_103-belnrAND lfpos = @lw_103-buzei.lw_103-bamng = lv_bamng.        "计算103凭证可剩余冲105的数量(103-104-105-124=lv_bamng),数量为0删除ENDIF.MODIFY lt_103 FROM lw_103.CLEAR:lw_103,lv_bamng.ENDLOOP.DELETE lt_103 WHERE bamng = 0.SORT lt_103 BY belnr.LOOP AT lt_103 INTO lw_103.IF lw_po-erfmg >= lw_103-bamng.lt_item-entry_qnt = lw_103-bamng.lt_item-ref_doc_yr = lw_103-gjahr.lt_item-ref_doc = lw_103-belnr.lt_item-ref_doc_it = lw_103-buzei.lw_po-erfmg = lw_po-erfmg - lw_103-bamng.APPEND lt_item.CLEAR:lt_item-entry_qnt,lt_item-ref_doc_yr,lt_item-ref_doc,lt_item-ref_doc_it.ELSEIF lw_po-erfmg < lw_103-bamng AND lw_po-erfmg > 0.lt_item-entry_qnt = lw_po-erfmg.lt_item-ref_doc_yr = lw_103-gjahr.lt_item-ref_doc = lw_103-belnr.lt_item-ref_doc_it = lw_103-buzei.lw_po-erfmg = 0.APPEND lt_item.CLEAR:lt_item-entry_qnt,lt_item-ref_doc_yr,lt_item-ref_doc,lt_item-ref_doc_it.ELSE.EXIT.ENDIF.ENDLOOP."IF lw_po-erfmg > 0.lt_item-entry_qnt = lw_103-bamng.CLEAR:lt_item-entry_qnt.lw_po-erfmg = lw_po-erfmg - lw_103-bamng.APPEND lt_item.CLEAR:lt_item-entry_qnt.ENDIF.CLEAR:lt_item."122 也需要参考103的凭证ELSEIF  lt_item-move_type = '122'AND lv_webre IS NOT INITIAL."订单行的所有103凭证SELECT gjahr,belnr,buzei,bamng,lfgja ,lfbnr,lfposFROM ekbeINTO TABLE @DATA(lt_105)WHERE ebeln = @lw_po-ebelnAND ebelp = @lw_po-ebelpAND bwart = '103'.LOOP AT lt_105 INTO DATA(lw_105)."104冲销产生的103凭证排除IF lw_105-belnr NE lw_105-lfbnr.lw_105-bamng = 0.ELSE.SELECT SUM(CASE bwartWHEN '106'  THEN bamng * -1WHEN '122'  THEN bamng * -1ELSE bamngEND )FROM ekbeINTO @DATA(lv_bamng1)WHERE ebeln = @lw_po-ebelnAND ebelp = @lw_po-ebelpAND bwart IN ( '105' , '106' , '123' , '122' )AND lfgja = @lw_105-gjahrAND lfbnr = @lw_105-belnrAND lfpos = @lw_105-buzei."排除已经发票校验的数据SELECT SUM(CASE shkzgWHEN 'S'  THEN menge * 1WHEN 'H'  THEN menge * -1ELSE mengeEND)FROM ekbeINTO @DATA(lv_menge)WHERE ebeln = @lw_po-ebelnAND ebelp = @lw_po-ebelpAND bwart = @spaceAND lfgja = @lw_105-gjahrAND lfbnr = @lw_105-belnrAND lfpos = @lw_105-buzei."计算103凭证可剩余冲105的数量(103-104-105-124=lv_bamng),数量为0删除lw_105-bamng = lv_bamng1 - lv_menge.        ENDIF.MODIFY lt_105 FROM lw_105.CLEAR:lw_105,lv_bamng1,lv_menge.ENDLOOP.DELETE lt_105 WHERE bamng = 0.SORT lt_105 BY belnr.LOOP AT lt_105 INTO lw_105.IF lw_po-erfmg >= lw_105-bamng.lt_item-entry_qnt = lw_105-bamng.lt_item-ref_doc_yr = lw_105-gjahr.lt_item-ref_doc = lw_105-belnr.lt_item-ref_doc_it = lw_105-buzei.lw_po-erfmg = lw_po-erfmg - lw_105-bamng.APPEND lt_item.CLEAR:lt_item-entry_qnt,lt_item-ref_doc_yr,lt_item-ref_doc,lt_item-ref_doc_it.ELSEIF lw_po-erfmg < lw_105-bamng AND lw_po-erfmg > 0.lt_item-entry_qnt = lw_po-erfmg.lt_item-ref_doc_yr = lw_105-gjahr.lt_item-ref_doc = lw_105-belnr.lt_item-ref_doc_it = lw_105-buzei.lw_po-erfmg = 0.APPEND lt_item.CLEAR:lt_item-entry_qnt,lt_item-ref_doc_yr,lt_item-ref_doc,lt_item-ref_doc_it.ELSE.EXIT.ENDIF.ENDLOOP.IF lw_po-erfmg > 0.lt_item-entry_qnt = lw_105-bamng.CLEAR:lt_item-entry_qnt.lw_po-erfmg = lw_po-erfmg - lw_105-bamng.APPEND lt_item.CLEAR:lt_item-entry_qnt.ENDIF.CLEAR:lt_item.ELSE.  "未启用基于发票的校验lt_item-entry_qnt = lw_po-erfmg.APPEND lt_item.CLEAR:lt_item.ENDIF.

ERP实施-采购业务集成(103和105移动类型两步入库)相关推荐

  1. 什么是Odoo ERP:部署方式、业务集成、成本投入、发展与未来

    ERP部署的类型 如何部署ERP 系统?通过多年的发展,ERP系统的部署方式更加多样化,包括公有云或私有云部署.本地部署或整合不同环境的混合部署场景,企业可根据自身条件与应用场景加以选择.下面介绍了每 ...

  2. ERP物料采购系统需求分析与效果展示 ERP实施以失败告终的四个原因分析

    三年前给客户做的一个物料采购系统,客户因为价格问题搁置,今天把它拿出来分享,以分析改善方法. 项目名称: Item Purchasing System /Item Purchasing Request ...

  3. sap委外采购订单冲销 102_ERP软件教程:金蝶ERP委外业务系统的操作(二)

    ERP软件教程:金蝶ERP委外加工业务系统操作培训 关注我,我将定期分享更多的ERP解决方案 转发关注并私信我,了解更多的解决方案及操作方法哦 欢迎大家随时咨询关于金蝶ERP的任何问题! 大家好,我是 ...

  4. SAP MM 103 + 105 移动类型组合初探

    SAP MM 103 + 105 移动类型组合初探 加入SY项目不久就发现,其某种类型的物料的采购收货,不是传统的方式101移动类型,而是使用103 + 105 组合来实现的.业务背景是采购的物料需要 ...

  5. SAP License:ERP实施风险是什么?

    ERP实施风险是什么?企业资源计划(EntERPrise Resource Planning.ERP)是一个集合企业所有资源进行有效的计划和控制.以达到最大效益的集成系统.随着经济全球化和信息技术的飞 ...

  6. SAP License:电子行业ERP实施

    SAP License:电子行业ERP实施 行业动态  2021/11/24 13:06  1 电子行业制造企业面临的市场竞争不断加剧,企业要想适应市场与客户的需求,就必须建立新的竞争优势.竞争市场决 ...

  7. SAP License:ERP实施关键问题

    无论是软件商.管理咨询公司.学术研究机构都从不同的视角给出ERP失败的原因和相应的对策,比如说流程优化.管理改造与ERP项目的结合.ERP系统上线后的持续改进等等,这些都是把注意力放在解决目前ERP所 ...

  8. ERP中的财务管理集成

    财务四大基础模块 ERP系统是分模块的,在财务会计领域,一般总会有如下的4大模块:总帐,应收帐款,应付帐款和固定资产.如图一所示,这四个模块本身是相互集成的(图中以连接模块的线条代表模块间的集成),比 ...

  9. 企业ERP实施的能力成熟度分析(转)

    原文来自: http://blog.itpub.net/post/2130/35773 企业ERP实施的能力成熟度分析 发表人:hpj168 | 发表时间: 2005年七月21日, 21:47 由于E ...

最新文章

  1. 基于OpenCV的实时睡意检测系统
  2. 单例模式的一种实现方法
  3. org.springframework.data.mapping.PropertyReferenceException: No property xxxx found for type Xxxx
  4. 洛谷 P2015 二叉苹果树
  5. LVS、Nginx、HAProxy工作环境中选择
  6. WebRTC成为W3C和IETF正式标准
  7. ELK - 实用日志分析系统
  8. python给定起始和结束日期,如何得到中间所有日期
  9. 07:有趣的跳跃【一维数组】
  10. 为什么现在的人越来越容易离婚了?
  11. 表白,整人,无门槛,娱乐代码
  12. 数字图像处理,图像配准SIFT算法 (Lowe的代码)
  13. 知识图谱 | 从六个方面解析知识图谱的价值和应用
  14. Spring Microservices in Action中文版
  15. 二叉树:后序遍历非递归算法
  16. 利用css将复选框设为透明并改变勾选样式
  17. Py之utils:Python库之utils的简介、安装、使用方法之详细攻略
  18. 渗透之——Metasploit渗透BSPlayer V2.68
  19. 浏览器的标准模式、怪异模式
  20. 北航计算机考研经历总结

热门文章

  1. 华为服务器协议标准,配置服务器的标准和要求
  2. php 工商银行公众号支付代码_php实现银联商务公众号+服务窗支付
  3. Java架构师必备技术:java编译器eclipse下载
  4. [高项]职能型组织VS矩阵型组织
  5. 腾讯、阿里的城市大脑较量
  6. 【云原生】coding部署docker镜像到远程服务器
  7. es对已有的索引给主键_Elasticsearch(ES) 创建索引
  8. 【PP-YOLOE+】第18届全国大学生智能汽车竞赛百度完全模型组线上资格
  9. 利用lingo计算工厂生产最优解
  10. 生成Mac icns 和Windows ico