【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

相关文章

Flutter实现文字镂空效果的详细步骤

《Flutter实现文字镂空效果的详细步骤》:本文主要介绍如何使用Flutter实现文字镂空效果,包括创建基础应用结构、实现自定义绘制器、构建UI界面以及实现颜色选择按钮等步骤,并详细解析了混合模... 目录引言实现原理开始实现步骤1:创建基础应用结构步骤2:创建主屏幕步骤3:实现自定义绘制器步骤4:构建U

SpringBoot中四种AOP实战应用场景及代码实现

《SpringBoot中四种AOP实战应用场景及代码实现》面向切面编程(AOP)是Spring框架的核心功能之一,它通过预编译和运行期动态代理实现程序功能的统一维护,在SpringBoot应用中,AO... 目录引言场景一:日志记录与性能监控业务需求实现方案使用示例扩展:MDC实现请求跟踪场景二:权限控制与

Android实现定时任务的几种方式汇总(附源码)

《Android实现定时任务的几种方式汇总(附源码)》在Android应用中,定时任务(ScheduledTask)的需求几乎无处不在:从定时刷新数据、定时备份、定时推送通知,到夜间静默下载、循环执行... 目录一、项目介绍1. 背景与意义二、相关基础知识与系统约束三、方案一:Handler.postDel

Python开发文字版随机事件游戏的项目实例

《Python开发文字版随机事件游戏的项目实例》随机事件游戏是一种通过生成不可预测的事件来增强游戏体验的类型,在这篇博文中,我们将使用Python开发一款文字版随机事件游戏,通过这个项目,读者不仅能够... 目录项目概述2.1 游戏概念2.2 游戏特色2.3 目标玩家群体技术选择与环境准备3.1 开发环境3

使用Python实现IP地址和端口状态检测与监控

《使用Python实现IP地址和端口状态检测与监控》在网络运维和服务器管理中,IP地址和端口的可用性监控是保障业务连续性的基础需求,本文将带你用Python从零打造一个高可用IP监控系统,感兴趣的小伙... 目录概述:为什么需要IP监控系统使用步骤说明1. 环境准备2. 系统部署3. 核心功能配置系统效果展

Python实现微信自动锁定工具

《Python实现微信自动锁定工具》在数字化办公时代,微信已成为职场沟通的重要工具,但临时离开时忘记锁屏可能导致敏感信息泄露,下面我们就来看看如何使用Python打造一个微信自动锁定工具吧... 目录引言:当微信隐私遇到自动化守护效果展示核心功能全景图技术亮点深度解析1. 无操作检测引擎2. 微信路径智能获

redis中使用lua脚本的原理与基本使用详解

《redis中使用lua脚本的原理与基本使用详解》在Redis中使用Lua脚本可以实现原子性操作、减少网络开销以及提高执行效率,下面小编就来和大家详细介绍一下在redis中使用lua脚本的原理... 目录Redis 执行 Lua 脚本的原理基本使用方法使用EVAL命令执行 Lua 脚本使用EVALSHA命令

Python中pywin32 常用窗口操作的实现

《Python中pywin32常用窗口操作的实现》本文主要介绍了Python中pywin32常用窗口操作的实现,pywin32主要的作用是供Python开发者快速调用WindowsAPI的一个... 目录获取窗口句柄获取最前端窗口句柄获取指定坐标处的窗口根据窗口的完整标题匹配获取句柄根据窗口的类别匹配获取句

在 Spring Boot 中实现异常处理最佳实践

《在SpringBoot中实现异常处理最佳实践》本文介绍如何在SpringBoot中实现异常处理,涵盖核心概念、实现方法、与先前查询的集成、性能分析、常见问题和最佳实践,感兴趣的朋友一起看看吧... 目录一、Spring Boot 异常处理的背景与核心概念1.1 为什么需要异常处理?1.2 Spring B

Python位移操作和位运算的实现示例

《Python位移操作和位运算的实现示例》本文主要介绍了Python位移操作和位运算的实现示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一... 目录1. 位移操作1.1 左移操作 (<<)1.2 右移操作 (>>)注意事项:2. 位运算2.1