【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

相关文章

MySQL双主搭建+keepalived高可用的实现

《MySQL双主搭建+keepalived高可用的实现》本文主要介绍了MySQL双主搭建+keepalived高可用的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,... 目录一、测试环境准备二、主从搭建1.创建复制用户2.创建复制关系3.开启复制,确认复制是否成功4.同

Java实现文件图片的预览和下载功能

《Java实现文件图片的预览和下载功能》这篇文章主要为大家详细介绍了如何使用Java实现文件图片的预览和下载功能,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... Java实现文件(图片)的预览和下载 @ApiOperation("访问文件") @GetMapping("

使用Sentinel自定义返回和实现区分来源方式

《使用Sentinel自定义返回和实现区分来源方式》:本文主要介绍使用Sentinel自定义返回和实现区分来源方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录Sentinel自定义返回和实现区分来源1. 自定义错误返回2. 实现区分来源总结Sentinel自定

Java实现时间与字符串互相转换详解

《Java实现时间与字符串互相转换详解》这篇文章主要为大家详细介绍了Java中实现时间与字符串互相转换的相关方法,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录一、日期格式化为字符串(一)使用预定义格式(二)自定义格式二、字符串解析为日期(一)解析ISO格式字符串(二)解析自定义

opencv图像处理之指纹验证的实现

《opencv图像处理之指纹验证的实现》本文主要介绍了opencv图像处理之指纹验证的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学... 目录一、简介二、具体案例实现1. 图像显示函数2. 指纹验证函数3. 主函数4、运行结果三、总结一、

Springboot处理跨域的实现方式(附Demo)

《Springboot处理跨域的实现方式(附Demo)》:本文主要介绍Springboot处理跨域的实现方式(附Demo),具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不... 目录Springboot处理跨域的方式1. 基本知识2. @CrossOrigin3. 全局跨域设置4.

Spring Boot 3.4.3 基于 Spring WebFlux 实现 SSE 功能(代码示例)

《SpringBoot3.4.3基于SpringWebFlux实现SSE功能(代码示例)》SpringBoot3.4.3结合SpringWebFlux实现SSE功能,为实时数据推送提供... 目录1. SSE 简介1.1 什么是 SSE?1.2 SSE 的优点1.3 适用场景2. Spring WebFlu

基于SpringBoot实现文件秒传功能

《基于SpringBoot实现文件秒传功能》在开发Web应用时,文件上传是一个常见需求,然而,当用户需要上传大文件或相同文件多次时,会造成带宽浪费和服务器存储冗余,此时可以使用文件秒传技术通过识别重复... 目录前言文件秒传原理代码实现1. 创建项目基础结构2. 创建上传存储代码3. 创建Result类4.

Tomcat版本与Java版本的关系及说明

《Tomcat版本与Java版本的关系及说明》:本文主要介绍Tomcat版本与Java版本的关系及说明,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录Tomcat版本与Java版本的关系Tomcat历史版本对应的Java版本Tomcat支持哪些版本的pythonJ

SpringBoot日志配置SLF4J和Logback的方法实现

《SpringBoot日志配置SLF4J和Logback的方法实现》日志记录是不可或缺的一部分,本文主要介绍了SpringBoot日志配置SLF4J和Logback的方法实现,文中通过示例代码介绍的非... 目录一、前言二、案例一:初识日志三、案例二:使用Lombok输出日志四、案例三:配置Logback一