SAP S/4HANA Cloud, public edition ABAP开发案例之一:增强收货流程
2023-12-6 10:36:57 Author: blogs.sap.com(查看原文) 阅读量:13 收藏

我们将发布一系列在 SAP S/4HANA Cloud, public edition 的 ABAP 环境中的开发案例。在我们开始之前,您可以阅读这篇 Blog 来了解我们这一系列的全部案例,希望我们的 Blog 可以为您在公有云三系统的探索中带来一些有价值的洞察。接下来就让我们开始吧!

1.1  案例背景

仓库同事在收货时,基于货物分拣及收货的实际情况,希望传递收货信息比如内物破损、产品效期异常等信息至 QA 质检人员,此时仓库人员会在收货过账时填写备注至收货过账产生的物料凭证的抬头文本字段,此字段不会通过标准功能从收货物料凭证传递至收货自动生成的检验批,希望通过开发途径实现这一业务需求。

1.2  系统操作:

前台条件:物料主数据质量试图需要激活相应的检验类型,同时QM模块的配置需完善。

在基于Purchase Document来创建Material Document时候,会在选中的Item上自动生成一个Inspection Lot,自动创建的Inspection Lot的Short Text为空。想要将一些信息传递给下游,所以在创建Inspection Lot的时候,调用BADI来修改Short Text。

1.2.1  创建 Material Document

使用 Post Goods Receipt for Purchase Document APP,在创建 Material Document 时在Note字段填写的内容,反映到自动创建的 Inspection Lot 上。

%u521B%u5EFA%20Material%20Document

创建 Material Document

1.2.2  显示Inspection Log

使用Display Inspection Log APP,查看自动创建的Inspection Lot中Short Text字段已经设置成Material Document的Note中填写的内容。

*Content from Material Document Note filled into Inspection lot’s short text

%u663E%u793A%20Inspection%20Lot

显示 Inspection Lot

2.1  找到Release出来的BAdI

Enhancements Spots MMIM_GR4XY_FIORI

– MMIM_GR4XY_CHECK_DATA            Change Header and Item Data in Goods Receipts

在创建Material Document时,将Note字段的值保存起来,留待后续使用。

Release Objects > Enhancements > MM > MM-IM > Enhancements Spots路径下可以找到该BAdI。

BAdI%20%u2013%20MMIM_GR4XY_CHECK_DATA

BAdI – MMIM_GR4XY_CHECK_DATA

Enhancements Spots QPL1_INSPLOT_CHANGE

– QPL1_INSPLOT_CHANGE      Change Inspection Lot Header During Lot Creation

在自动创建Inspection Lot时,将刚才保存起来的Note字段的值,赋值给Short Text。

Release Objects > Enhancements > QM > QM-IM > Enhancements Spots路径下可以找到该BAdI。

BAdI%20%u2013%20QPL1_INSPLOT_CHANGE

BAdI – QPL1_INSPLOT_CHANGE

2.2  定义BAdI增强的实施

首先创建一个Package,右键选择ZLOCAL > New > ABAP Package

填写好PackageNameDescription,勾选Add to favorite packages方便后续查找。点击Next

点击Next > Finish完成Package的创建。

New%20ABAP%20Package

新建 ABAP Package

右键新建的Package,点击New > Other ABAP Repository Object

输入BAdI进行搜索,选中BadI Enhancement Implementation并点击Next

输入NameDescription,然后点击Enhancement Spot右边的Browse

输入MMIM_GR4XY_FIORI进行搜索并选中,点击OK

点击Next > Finish 完成第一个BAdI增强实施的创建。

New%20BAdI%20Enhancement%20Implementation

新建 BAdI 增强实施

通过相同的步骤完成对第二个BAdI增强实施的创建,选择QPL1_CHANGE_AT_CREATE4CLD作为Enhancement Spot

2.3  为Material Document上的增强扩展点添加BAdI Definition

打开上一步创建的第一个增强实施,点击Add BAdI Implementation,在BAdI Definition右边点击Browse,搜索并选中MMIM_GR4XY_CHECK_DATA,点击OK

接着填写BAdI Implementation Name,点击Add

Add%20BAdI%20Implementation

添加 BAdI Implementation

完成BAdI Definition的添加后,会提示我们缺少实施类。

Class%20Missing

缺少类

通过相同的步骤创建第为第二个增强实施添加BAdI Definition。选择BADI_QPL1_CHANGE_AT_CREATE4CLD作为第二个增强实施的BAdI Definition

2.4  在ABAP类中自定义实现逻辑

右键创建的Package,点击New ABAP Class

输入类的Name以及Description后,点击Next

点击Finish完成类的创建。

%u65B0%u5EFA%20ABAP%20%u7C7B

新建 ABAP 类

在创建的类里,自定义实现逻辑。当Material Document保存时,用变量存储Material DocumentNote字段,留待后续使用。

保存,点击上方菜单栏的🕯激活,使类生效。

CLASS zcl_gr4xy_check_data DEFINITION
  PUBLIC
  FINAL
  CREATE PUBLIC .

  PUBLIC SECTION.

    CLASS-DATA headertext TYPE string.
    INTERFACES if_badi_interface .
    INTERFACES if_mmim_gr4xy_check_data .
  PROTECTED SECTION.
  PRIVATE SECTION.
ENDCLASS.



CLASS ZCL_GR4XY_CHECK_DATA IMPLEMENTATION.


  METHOD if_mmim_gr4xy_check_data~check.

    headertext = gr4xy_header-materialdocumentheadertext.

  ENDMETHOD.
ENDCLASS.

将刚刚创建的类作为实施类添加给之前创建的BAdI Implementation。点击Browse,选择之前创建的BAdI Implementation,点击OK

通过相同的步骤为第二个BAdI Implementation添加实施类。在创建的类里,自定义实现逻辑。在自动创建Inspection Lot时,将刚才保存起来的Note字段值,赋值给Short Text

保存,点击上方菜单栏的🕯激活,使类生效。

CLASS zcl_change_at_create4cld DEFINITION
  PUBLIC
  FINAL
  CREATE PUBLIC .

  PUBLIC SECTION.

    INTERFACES if_badi_interface .
    INTERFACES if_ex_qpl1_change_at_create4cl .
  PROTECTED SECTION.
  PRIVATE SECTION.
ENDCLASS.



CLASS ZCL_CHANGE_AT_CREATE4CLD IMPLEMENTATION.


  METHOD if_ex_qpl1_change_at_create4cl~execute_change.


*   Test BADI in Lot Change during Creation
    inspectionlottext = zcl_gr4xy_check_data=>headertext.

  ENDMETHOD.
ENDCLASS.

2.5  将BAdI增强激活

Active Implementation勾选上,保存,点击上方菜单栏的🕯激活,下方出现The implementation will be called代表已完成BAdI增强激活。

BAdI%20Enhancement%20Implementation%20%u2013%20MMIM_GR4XY_CHECK_DATA

BAdI 增强实施 – MMIM_GR4XY_CHECK_DATA

BAdI%20Enhancement%20Implementation%20%u2013%20QPL1_INSPLOT_CHANGE

BAdI 增强实施 – QPL1_INSPLOT_CHANGE

以上就是本篇开发案例的全部内容。希望该案例能让你更了解如三系统开发拓展的流程,希望您有所收获!

如果您对本文有任何的建议和想法,欢迎在评论区提出,期待与您一起交流。如果本文对您有任何帮助,欢迎您关注我的个人账号,期待我们在下一篇博文再见!


文章来源: https://blogs.sap.com/2023/12/06/sap-s-4hana-cloud-public-edition-abap%e5%bc%80%e5%8f%91%e6%a1%88%e4%be%8b%e4%b9%8b%e4%b8%80%ef%bc%9a%e5%a2%9e%e5%bc%ba%e6%94%b6%e8%b4%a7%e6%b5%81%e7%a8%8b/
如有侵权请联系:admin#unsafe.sh