【ECC EWM实现外向交货单数量修改以及增加行项目-实现原理说明】

2023-10-14 09:20

本文主要是介绍【ECC EWM实现外向交货单数量修改以及增加行项目-实现原理说明】,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

系列文章目录

第一章 实现原理介绍

第二章 实现代码说明


目录

系列文章目录

前言

一、系统环境说明

二、实现步骤

1.ECC中的开发

2.EWM中的开发

总结


前言

在ECC和EWM集成的时候,当外向交货单已经下发到EWM之后,则ECC中的交货单无法进行数量修改,或者新增新的行项目,这个对用户造成了非常大的困扰,对于部分客户来说创建一个新的交货单需要走比较复杂的审批流程,这样就会导致工作效率低下,影响用户体验。

为了解决这种情况,结合SAP ECC和EWM现有的集成特点和预留的一些增强,做一些增强开发实现这一业务诉求。


一、系统环境说明

本方案是基于ECC 6.0S/4 EWM 2020进行实现的,如果ERP用的是S/4并且是大于1809版本的,则这个功能已经具备了的,不需要再进行实现,直接配置下就可以。

二、实现步骤

1.ECC中的开发

1.1.修改交货单状态

实现目的:标准的VL02N在检查交货单已经下发的时候,则直接不给修改交货单,所以这个地方是需要进行调整,使得VL02N进来之后可修改交货单。

增强点:MV50AFDB,FORM likp_select。

处理逻辑:在以上form中做隐式增强,判断如果TCODE是VL02N并且LIKP-VLSTK=B,则临时将likp-vlstk修改成D状态。

1.2.获取EWM中的可修改的字段

实现目的:因为下发EWM的交货单不是所有的字段都可以进行修改的,需要考虑EWM中当前交货单的状态。

增强点:LE_SHP_DELIVERY_PROC- IF_EX_LE_SHP_DELIVERY_PROC~READ_DELIVERY。

处理逻辑:如果LIKP–VLSTK=B(此处需要从数据库表中读取),则调用EWM函数/SCWM/OUTB_DLV_GET_CHANGEABLE获取可以修改的字段以及是否可以增加行项目

1.3.修改交货单具体字段时的校验

实现目的:根据EWM函数/SCWM/OUTB_DLV_GET_CHANGEABLE返回的可修改的字段信息进行判断哪些字段是可以修改的,如果不在返回范围内的字段变更,则不允许修改,需要进行报错。

增强点:

LE_SHP_DELIVERY_PROC-IF_EX_LE_SHP_DELIVERY_PROC~CHANGE_DELIVERY_HEADER

LE_SHP_DELIVERY_PROC-IF_EX_LE_SHP_DELIVERY_PROC~CHANGE_DELIVERY_ITEM

处理逻辑:如果TCODE是VL02N、cs_likp-vlstk = 'D'以及LIKP–VLSTK=B,如果对应的抬头或者行项目的字段发生了变更,则需要判断发生变更的字段在不在EWM返回的可修改的字段范围内,如果不在,则需要进行报错,不允许修改。

ECC和EWM的字段映射关系如下:

mapping = VALUE #( ( bapi_field = 'DLV_PRIO'          delivery_fields = VALUE #( ( 'LIKP-LPRIO' ) ) )( bapi_field = 'INCOTERMS1'        delivery_fields = VALUE #( ( 'LIKP-INCO1' ) ) )( bapi_field = 'INCOTERMS2'        delivery_fields = VALUE #( ( 'LIKP-INCO2_L' ) ) )( bapi_field = 'INCOTERMSV'        delivery_fields = VALUE #( ( 'LIKP-INCOV' ) ) )( bapi_field = 'DLV_BLOCK'         delivery_fields = VALUE #( ( 'LIKP-LIFSK' ) ) )( bapi_field = 'SHIP_COND'         delivery_fields = VALUE #( ( 'LIKP-VSBED' ) ) )( bapi_field = 'ROUTE'             delivery_fields = VALUE #( ( 'LIKP-ROUTE' ) ) )( bapi_field = 'ROUTESCHED'        delivery_fields = VALUE #( ( 'LIKP-AULWE' ) ) )( bapi_field = 'TRANSP_ID'         delivery_fields = VALUE #( ( 'LIKP-TRAID' ) ) )( bapi_field = 'TRANS_CAT'         delivery_fields = VALUE #( ( 'LIKP-TRATY' ) ) )( bapi_field = 'WSHDRLFDAT'        delivery_fields = VALUE #( ( 'LIKP-LFDAT' )( 'LIKP-LFUHR' ) ) )( bapi_field = 'WSHDRWADAT'        delivery_fields = VALUE #( ( 'LIKP-WADAT' )( 'LIKP-WAUHR' ) ) )( bapi_field = 'WSHDRWADTI'        delivery_fields = VALUE #( ( 'LIKP-WADAT_IST' )( 'LIKP-SPE_WAUHR_IST' ) ) )( bapi_field = 'WSHDRLDDAT'        delivery_fields = VALUE #( ( 'LIKP-LDDAT' )( 'LIKP-LDUHR' ) ) )( bapi_field = 'WSHDRTDDAT'        delivery_fields = VALUE #( ( 'LIKP-TDDAT' )( 'LIKP-TDUHR' ) ) )( bapi_field = 'WSHDRKODAT'        delivery_fields = VALUE #( ( 'LIKP-KODAT' )( 'LIKP-KOUHR' ) ) )( bapi_field = 'BATCH'             delivery_fields = VALUE #( ( 'LIPS-CHARG' ) ) )( bapi_field = 'DLV_QTY'           delivery_fields = VALUE #( ( 'LIPS-LFIMG' ) ) )( bapi_field = 'STGE_LOC'          delivery_fields = VALUE #( ( 'LIPS-LGORT' ) ) )( bapi_field = 'SALES_QTY_DENOM'   delivery_fields = VALUE #( ( 'LIPS-UMVKN' ) ) )( bapi_field = 'SALES_QTY_NUM'     delivery_fields = VALUE #( ( 'LIPS-UMVKZ' ) ) )( bapi_field = 'SALES_UNIT'        delivery_fields = VALUE #( ( 'LIPS-VRKME' ) ) ))

1.4.交货单保存前处理

主要目的:主要有以下两个目的:

(1)由于抬头的字段校验只检查一次,所以需要在保存的时候在校验一次;

(2)由于正式触发EWM修改是走队列模式的,所以在ECC保存交货单之前需要进行模拟修改一次,这样可以减少队列报错的几率,尽量保证ECC和EWM交货单一致。

增强点:LE_SHP_DELIVERY_PROC- IF_EX_LE_SHP_DELIVERY_PROC~DELIVERY_FINAL_CHECK

处理逻辑:

(1)针对抬头有修改值的字段与EWM可修改的字段再次进行比对,判断是否允许修改;

(2)调用EWM修改函数/SCWM/OUTB_DLV_CHANGE2进行模拟修改。

1.5.交货单保存时调用接口修改

主要目的:在ECC的交货单修改成功之后,通过对立的调用方式调用EWM的接口进行修改。

增强点:SHP_BAPI_DELIVERY_CHANGE。

               LV50KF09,FORM bapi_obdlv_chg_call_prepare

处理逻辑:如果IT_YLIKP –VLSTK=B,则直接调用函数/SCWM/OUTB_DLV_CHANGE2进行修改,这时需要获取一个tocken(可随便给一个值),IV_SIMULATE不给值,表示是正式修改。修改按照队列的方式进行,队列名称格式DLVS+原系统的逻辑系统+交货单号。

2.EWM中的开发

EWM中的增强开发为可选择项,这个主要看具体项目上是否有对应的修改需求。

2.1.重写是否可以增加行项目的逻辑

EWM标准的逻辑是只要仓库活动状态不为0,则就不能增加行项目,但是实际仓库需求可能是部分行项目已经拣配了或者已经创建了仓库任务,所以这部分逻辑需要重新确定,具体是否影响等后续程序测试的时候再检查。

增强点:/SCWM/ES_ERP_OD_CHANGE,如下图所示:

 2.2.重写数量是否可修改的逻辑

标准的检查逻辑是如果行项目的dwa(活动状态)状态为已开始,则不允许修改,可根据项目的实际需求再增加自己特殊的或者特定的校验。

增强点:/SCWM/ES_ERP_OD_CHANGE-MODIFY_CHANGEABLE。

2.3.修改交货单的MAPIN处理

如果在创建交货单的MAPIN里面有对应字段处理逻辑的增强,则需要将这部分逻辑也移到修改的MAPIN增强点。

增强点:/SCWM/IF_EX_MAPIN_OD_CHANGE~MAPIN


总结

使用上述增强方案,增强之后,即可实现从ECC已经下发到EWM的交货单,也可以在ECC中通过VL02N中进行修改以及新增新的行项目。

本章主要是说明了实现原理,下一章会着重说明具体代码是如何实现的。

这篇关于【ECC EWM实现外向交货单数量修改以及增加行项目-实现原理说明】的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/209595

相关文章

Zookeeper安装和配置说明

一、Zookeeper的搭建方式 Zookeeper安装方式有三种,单机模式和集群模式以及伪集群模式。 ■ 单机模式:Zookeeper只运行在一台服务器上,适合测试环境; ■ 伪集群模式:就是在一台物理机上运行多个Zookeeper 实例; ■ 集群模式:Zookeeper运行于一个集群上,适合生产环境,这个计算机集群被称为一个“集合体”(ensemble) Zookeeper通过复制来实现

这15个Vue指令,让你的项目开发爽到爆

1. V-Hotkey 仓库地址: github.com/Dafrok/v-ho… Demo: 戳这里 https://dafrok.github.io/v-hotkey 安装: npm install --save v-hotkey 这个指令可以给组件绑定一个或多个快捷键。你想要通过按下 Escape 键后隐藏某个组件,按住 Control 和回车键再显示它吗?小菜一碟: <template

如何用Docker运行Django项目

本章教程,介绍如何用Docker创建一个Django,并运行能够访问。 一、拉取镜像 这里我们使用python3.11版本的docker镜像 docker pull python:3.11 二、运行容器 这里我们将容器内部的8080端口,映射到宿主机的80端口上。 docker run -itd --name python311 -p

hdu1043(八数码问题,广搜 + hash(实现状态压缩) )

利用康拓展开将一个排列映射成一个自然数,然后就变成了普通的广搜题。 #include<iostream>#include<algorithm>#include<string>#include<stack>#include<queue>#include<map>#include<stdio.h>#include<stdlib.h>#include<ctype.h>#inclu

深入探索协同过滤:从原理到推荐模块案例

文章目录 前言一、协同过滤1. 基于用户的协同过滤(UserCF)2. 基于物品的协同过滤(ItemCF)3. 相似度计算方法 二、相似度计算方法1. 欧氏距离2. 皮尔逊相关系数3. 杰卡德相似系数4. 余弦相似度 三、推荐模块案例1.基于文章的协同过滤推荐功能2.基于用户的协同过滤推荐功能 前言     在信息过载的时代,推荐系统成为连接用户与内容的桥梁。本文聚焦于

【C++】_list常用方法解析及模拟实现

相信自己的力量,只要对自己始终保持信心,尽自己最大努力去完成任何事,就算事情最终结果是失败了,努力了也不留遗憾。💓💓💓 目录   ✨说在前面 🍋知识点一:什么是list? •🌰1.list的定义 •🌰2.list的基本特性 •🌰3.常用接口介绍 🍋知识点二:list常用接口 •🌰1.默认成员函数 🔥构造函数(⭐) 🔥析构函数 •🌰2.list对象

【Prometheus】PromQL向量匹配实现不同标签的向量数据进行运算

✨✨ 欢迎大家来到景天科技苑✨✨ 🎈🎈 养成好习惯,先赞后看哦~🎈🎈 🏆 作者简介:景天科技苑 🏆《头衔》:大厂架构师,华为云开发者社区专家博主,阿里云开发者社区专家博主,CSDN全栈领域优质创作者,掘金优秀博主,51CTO博客专家等。 🏆《博客》:Python全栈,前后端开发,小程序开发,人工智能,js逆向,App逆向,网络系统安全,数据分析,Django,fastapi

hdu4407(容斥原理)

题意:给一串数字1,2,......n,两个操作:1、修改第k个数字,2、查询区间[l,r]中与n互质的数之和。 解题思路:咱一看,像线段树,但是如果用线段树做,那么每个区间一定要记录所有的素因子,这样会超内存。然后我就做不来了。后来看了题解,原来是用容斥原理来做的。还记得这道题目吗?求区间[1,r]中与p互质的数的个数,如果不会的话就先去做那题吧。现在这题是求区间[l,r]中与n互质的数的和

让树莓派智能语音助手实现定时提醒功能

最初的时候是想直接在rasa 的chatbot上实现,因为rasa本身是带有remindschedule模块的。不过经过一番折腾后,忽然发现,chatbot上实现的定时,语音助手不一定会有响应。因为,我目前语音助手的代码设置了长时间无应答会结束对话,这样一来,chatbot定时提醒的触发就不会被语音助手获悉。那怎么让语音助手也具有定时提醒功能呢? 我最后选择的方法是用threading.Time

Android实现任意版本设置默认的锁屏壁纸和桌面壁纸(两张壁纸可不一致)

客户有些需求需要设置默认壁纸和锁屏壁纸  在默认情况下 这两个壁纸是相同的  如果需要默认的锁屏壁纸和桌面壁纸不一样 需要额外修改 Android13实现 替换默认桌面壁纸: 将图片文件替换frameworks/base/core/res/res/drawable-nodpi/default_wallpaper.*  (注意不能是bmp格式) 替换默认锁屏壁纸: 将图片资源放入vendo