业务场景为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. 28. extjs中Ext.BLANK_IMAGE_URL的作用
  2. python之绝对导入和相对导入
  3. python基础课程第12章_流畅的python学习笔记-第12章
  4. SqlServer规则
  5. Python中的三目表达式
  6. 软件开发工程师证书有用吗_软件设计师证书重要吗?
  7. [转载]自己亲身经历,房屋买卖二手房,和中介打官司,唉,烦心!
  8. 概率论的学习和整理10:古典概型 和 二项分布(N重伯努利试验)
  9. kiv8测量方法_特殊的长度测量方法-初二物理长度的测量
  10. nginx 同一服务器部署多个网站
  11. mysql 日志重做,設置MySQL重做日志大小
  12. linux定时任务之自动启动Tomcat失效问题排查
  13. 硬件参数 调整 麦克风MIC灵敏度 原理
  14. 3D游戏之投影矩阵算法技术实现
  15. Android 大姨妈、经期日历,美柚经期效果
  16. 【Java版oj】逆波兰表达式求值
  17. 百度测试开发实习生技术面总结笔记
  18. MFC CStdioFile
  19. GitHub 登录失败
  20. 英语二-常用写作范文参考

热门文章

  1. Linux 文件与目录管理
  2. el-table 按照某种规则 进行自定义升序降序的排序
  3. 游戏引擎mota-js-v3.0 施工记录
  4. Python在生物学领域的简单应用——处理DNA序列
  5. 怎么让word文档不显示标记及修改的状态
  6. win10iis服务器如何配置虚拟目录,win10系统iis6部署网站时配置虚拟目录的解决方法...
  7. Vue+element-ui文件上传阿里云oss+预览word 、excel、ppt、pdf、png、jpg文件
  8. 『主动些,你与“开源”才有故事可言』—— 新晋 PMC 成员端正强专访
  9. 使用matlab编写人脸识别的程序,并制作UI界面
  10. 计算机主板优缺点,不同的电脑主板有什么区别 不同类型主板优缺点介绍[多图]...