【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

相关文章

SpringBoot+RustFS 实现文件切片极速上传的实例代码

《SpringBoot+RustFS实现文件切片极速上传的实例代码》本文介绍利用SpringBoot和RustFS构建高性能文件切片上传系统,实现大文件秒传、断点续传和分片上传等功能,具有一定的参考... 目录一、为什么选择 RustFS + SpringBoot?二、环境准备与部署2.1 安装 RustF

Nginx部署HTTP/3的实现步骤

《Nginx部署HTTP/3的实现步骤》本文介绍了在Nginx中部署HTTP/3的详细步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学... 目录前提条件第一步:安装必要的依赖库第二步:获取并构建 BoringSSL第三步:获取 Nginx

MyBatis Plus实现时间字段自动填充的完整方案

《MyBatisPlus实现时间字段自动填充的完整方案》在日常开发中,我们经常需要记录数据的创建时间和更新时间,传统的做法是在每次插入或更新操作时手动设置这些时间字段,这种方式不仅繁琐,还容易遗漏,... 目录前言解决目标技术栈实现步骤1. 实体类注解配置2. 创建元数据处理器3. 服务层代码优化填充机制详

Python实现Excel批量样式修改器(附完整代码)

《Python实现Excel批量样式修改器(附完整代码)》这篇文章主要为大家详细介绍了如何使用Python实现一个Excel批量样式修改器,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一... 目录前言功能特性核心功能界面特性系统要求安装说明使用指南基本操作流程高级功能技术实现核心技术栈关键函

Java实现字节字符转bcd编码

《Java实现字节字符转bcd编码》BCD是一种将十进制数字编码为二进制的表示方式,常用于数字显示和存储,本文将介绍如何在Java中实现字节字符转BCD码的过程,需要的小伙伴可以了解下... 目录前言BCD码是什么Java实现字节转bcd编码方法补充总结前言BCD码(Binary-Coded Decima

SpringBoot全局域名替换的实现

《SpringBoot全局域名替换的实现》本文主要介绍了SpringBoot全局域名替换的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一... 目录 项目结构⚙️ 配置文件application.yml️ 配置类AppProperties.Ja

Python实现批量CSV转Excel的高性能处理方案

《Python实现批量CSV转Excel的高性能处理方案》在日常办公中,我们经常需要将CSV格式的数据转换为Excel文件,本文将介绍一个基于Python的高性能解决方案,感兴趣的小伙伴可以跟随小编一... 目录一、场景需求二、技术方案三、核心代码四、批量处理方案五、性能优化六、使用示例完整代码七、小结一、

Java实现将HTML文件与字符串转换为图片

《Java实现将HTML文件与字符串转换为图片》在Java开发中,我们经常会遇到将HTML内容转换为图片的需求,本文小编就来和大家详细讲讲如何使用FreeSpire.DocforJava库来实现这一功... 目录前言核心实现:html 转图片完整代码场景 1:转换本地 HTML 文件为图片场景 2:转换 H

C#使用Spire.Doc for .NET实现HTML转Word的高效方案

《C#使用Spire.Docfor.NET实现HTML转Word的高效方案》在Web开发中,HTML内容的生成与处理是高频需求,然而,当用户需要将HTML页面或动态生成的HTML字符串转换为Wor... 目录引言一、html转Word的典型场景与挑战二、用 Spire.Doc 实现 HTML 转 Word1

C#实现一键批量合并PDF文档

《C#实现一键批量合并PDF文档》这篇文章主要为大家详细介绍了如何使用C#实现一键批量合并PDF文档功能,文中的示例代码简洁易懂,感兴趣的小伙伴可以跟随小编一起学习一下... 目录前言效果展示功能实现1、添加文件2、文件分组(书签)3、定义页码范围4、自定义显示5、定义页面尺寸6、PDF批量合并7、其他方法