SAP S/4HANA Cloud ABAP开发案例之二:增强的销售订单App
2023-12-4 12:15:28 Author: blogs.sap.com(查看原文) 阅读量:12 收藏

紧随这篇博客,我们将逐步详细地介绍一个利用SAP S/4HANA Cloud三系统来做开发扩展的案例。

1. 案例背景:

这个案例是关于对标准销售订单应用程序做定制化,添加一个名为“BU Section”的自定义字段。然而,销售订单上的自定义字段在最后一个名为“自定义字段(Custom Fields)”的标签页上。人们往往会忘记维护这个字段的值。所以我们需要将这个自定义字段设置为必填项。

如下图所示,我们使用应用自定义字段来创建一个像下面这样的自定义字段:

%u81EA%u5B9A%u4E49%u5B57%u6BB5BU%20Section

自定义字段BU Section

如果我们没有输入该字段的值,而直接保存销售订单时,系统会提示我们字段BU Section是必输项。

%u63D0%u793A%u81EA%u5B9A%u4E49%u5B57%u6BB5%u4E3A%u5FC5%u586B

提示自定义字段为必填

2. 实现细节:

2.1 找到相关的BAdl

我们检查跟销售领域相关的扩展部分,找到了增强点ES_SD_SLS_EXTEND。在该增强点下面,有一个BAdl叫SD_SLS_FIELDPROP_ITEM,这个BAdl是专门用来检查销售订单行项目上的一些字段属性的,因此我们决定使用该BAdl来完成我们的业务逻辑。

在ADT工具里面,具体的路径如下:

Release Objects > Enhancements > SD > SD-SLS > SD-SLS-EXT Enhancements Spots

%u627E%u5230%u76F8%u5173%u7684BAdl

找到相关的BAdl

2.2 创建BAdl增强

首先,我们新建一个包。同时,我们可以把这个包放到收藏夹里,方面我们之后使用和查找。

%u521B%u5EFA%u4E00%u4E2A%u65B0%u7684%u5305

创建一个新的包

然后,右键该包,选择New -> Other ABAP Repository Object -> BAdl Enhancement Implementation:

BAdl%u589E%u5F3A%u5B9E%u73B0

BAdl增强实现

输入名字和描述,然后选择Browser:

输入ES_SD_SLS_EXTEND,然后查找, 点击OK.

%u627E%u5230%u589E%u5F3A%u70B9

找到增强点

2.3 创建BAdl定义

打开上一步中创建的BAdl增强实现,选择“Add BAdl Implementation”, 点击“Browser”, 查找然后选择 SD_SLS_FIELDPROP_ITEM, 点击OK.

%u9009%u62E9BAdl

选择BAdl

输入你的BAdl实现的名称,然后点击Add:

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

右击上面创建的包,选择新建 -> ABAP类,输入类的名称和描述,点击Next:

%u65B0%u5EFAABAP%u7C7B

新建ABAP类

在该类中,实现以下逻辑。把自定义字段BUSection设为必填项:

CLASS zcl_sls_fieldprop_item DEFINITION
  PUBLIC
  FINAL
  CREATE PUBLIC .

  PUBLIC SECTION.

    INTERFACES if_badi_interface .
    INTERFACES if_sd_sls_fieldprop_item .
  PROTECTED SECTION.
  PRIVATE SECTION.
ENDCLASS.

CLASS ZCL_SLS_FIELDPROP_ITEM IMPLEMENTATION.

  METHOD if_sd_sls_fieldprop_item~set_field_prop.
    loop at field_properties assigning field-symbol(<fs_field_properties>).
        if salesdocument-salesorganization = 'your sales org value'.
            if <fs_field_properties>-field_name = 'YY1_BUSECTION_SDI'.
                <fs_field_properties>-mandatory = 'X'.
            endif.
        endif.
    endloop.
  ENDMETHOD.
ENDCLASS.

2.5 激活BAdl实现

选中复选框 “Active Implementation”, 然后激活. 消息“The implementation will be called” 意味着BAdl实现已被激活。

%u6FC0%u6D3BBAdl

激活BAdl

3.在开发扩展里做代码调试

与关键用户扩展(Key-User Extensibility)相比,使用开发扩展来做自定义逻辑的扩展可以想以前一样做代码调试,这对于开发来说会特别方便。

接下来,我会展示一下如何在开发扩展里做代码调试。

3.1 增加需要的业务目录

对于你想要做代码调试的系统,你需要确保你的用户有以下的业务目录:

  • SAP_A4C_BC_DEV_SUP_PC          —  Development – Analysis and Support
  • SAP_A4C_BC_DEV_OBJ_DIS_PC   —  Development – Development Objects Display

3.2 在代码里设置断点

当在ADT工具里连接好了系统,找到你需要调试的代码,在你想要的代码行设置断点,如下图所示:

%u5728%u4EE3%u7801%u91CC%u8BBE%u7F6E%u65AD%u70B9

在代码里设置断点

3.3 运行程序并调试

打开管理销售订单App,点击修改销售订单,然后你就可以看到系统停在了加载页面。

如果我们打开ADT工具,我们可以看到debug模式已经被激活。自定义字段YY1_BUSECTION_SDI的必填属性已经从空被改为了X。

页面依然在加载中:

当我们点击F8继续,我们可以看到程序会跳过该断点,debug模式结束,页面加载成功:

%u9875%u9762%u52A0%u8F7D%u6210%u529F

页面加载成功

希望该案例能让你了解如何利用开发扩展和ADT工具来做自定义逻辑的扩展,尤其是可以做代码调试,这是以前两系统扩展所做不到的。


文章来源: https://blogs.sap.com/2023/12/04/sap-s-4hana-cloud-abap%e5%bc%80%e5%8f%91%e6%a1%88%e4%be%8b%e4%b9%8b%e4%ba%8c%ef%bc%9a%e5%a2%9e%e5%bc%ba%e7%9a%84%e9%94%80%e5%94%ae%e8%ae%a2%e5%8d%95app/
如有侵权请联系:admin#unsafe.sh