随着三系统(3SL)被引入到了SAP S/4HANA Cloud,public edition,我们在可扩展性中增加了一个全新的板块:开发者可扩展性,也被称为云ABAP开发。但是,开发者可扩展性能做什么?我们可以像在以前做OP一样在SAP S/4HANA Cloud中进行ABAP编程吗?我们可以进行代码调试吗?关键用户扩展之后会没用了吗?……我们脑海中涌现出许多问题。今天,我想给你们介绍一些我们使用开发者可扩展性做的扩展案例,希望它能给你们提供一些关于开发者可扩展性能力的具体展示,以及我们可以使用开发者可扩展性实现的典型场景。

案例1: 批量更改工作中心


在SAP S/4HANA Cloud中,我们确实有一些用于批量处理的标准应用,例如用于主数据的批量维护的应用等。然而,并不是每一个业务对象都有标准的批量处理应用。从我们的客户那里了解到,他们确实对某些业务对象有批量处理的需求。
在API Business Hub上,有一个全新的部分叫做“Developer Extensibility”,在这个部分下,你可以找到业务对象接口(Business Object Interface):

API Business Hub上的Business Object Interface部分


随着业务对象接口(Business Object Interface)的可用性,我们可以开发用于批量处理的定制Fiori应用程序。在这里,我们提供了一个示例,我们通过利用工作中心的业务对象接口创建一个全新的应用程序。有了这个新应用程序,客户可以选择多个工作中心来批量更新某些字段的值。

业务对象接口:工作中心


自开发应用“批量更改工作中心”


选择需要批量更改的字段


如您在上文中看到的,我们根据客户需求选择三个字段(Supply Area,Usage,Back Flush)进行批量更新。只要业务对象接口支持,您也可以实施其他字段的批量更新。
另外要提的是,在SAP S/4HANA Cloud中,我们无法在两系统中创建自定义业务目录。使用三系统,我们也可以创建自定义业务目录,并将自定义应用程序分配给自定义业务目录。这将帮助我们更准确地进行权限控制。

为自开发应用程序创建自定义业务目录


案例2: 采购申请批量上传


这是批量处理的另一个自定义应用程序的案例——采购申请的批量上传/创建。在这个例子中,我们为批量上传采购申请创建了一个定制的Fiori应用程序。它可以从Excel文件模板中创建多个采购申请。您可以根据自己的需求定义上传模板。这是通过采购申请的业务对象接口实现的。

业务对象接口:采购申请


自定义应用程序“批量上传采购申请”


案例3: 增强的收货流程


在API Business Hub网站的Developer Extensibility部分下,有一个部分是:Business Add-Ins,也就是我们熟知的BAdIs。你可以找到一份BAdIs的列表,你可以利用这些BAdIs来通过实施自己的逻辑来增强你的业务流程。

适用于开发扩展的BAdls


我们收到一个需求,当为采购单据做过账货物收货时,客户希望将一些备注信息传递给系统自动创建的检验批上。我们通过使用两个BAdI来实现这个功能。第一个BAdI是MMIM_GR4XY_CHECK_DATA(检查收货中的表头和行项目数据),我们在过账货物收货时保存备注信息。第二个BAdI是BADI_QPL1_CHANGE_AT_CREATE4CLD(在创建检验批期间更改检查批表头),当系统自动创建检查批时,我们将保存的备注文本传递到新创建的检查批的短文本字段上。

做收货动作时输入备注信息


备注信息会保存到自动创建的检验批上


通过2个BAdl来对收货动作进行增强


通过开发扩展,我们可以像以前一样,在代码中设置断点,并轻松地调试代码。当需要故障排除时,这将使开发者的工作变得更容易。

在Eclipse ADT工具中进行调试


案例4: 自定义库龄报表


报表是SAP S/4HANA Cloud中常用的业务场景之一。在两系统中,客户通常创建自定义CDS视图,并使用嵌入式SAC创建各种报表。有了三系统,我们可以在ADT工具里使用ABAP创建自定义CDS视图。我们可以在ABAP代码中实现更复杂的业务逻辑,这在两系统中不容易做到。
库龄报表是被我们的客户们广泛使用的报告之一。我们使用ABAP代码在三系统中实现了该报表。我们定义了一个自定义实体进行数据存储,并在自定义类中实现复杂的逻辑。此外,我们定义了一个维护对象,客户可以在其中维护哪些移动类型将被计入库龄报表的统计中,这给我们这张库龄报表带来了非常大的灵活性。

自定义实体


自定义类里写业务逻辑


自定义库龄报表


由于篇幅所限,此篇博客并未涵盖所有我们目前所尝试的开发扩展的案例介绍,我们将在之后对每一个场景做更详细的技术实现介绍,敬请期待。希望此篇博客能给您带来一些新的想法。
在此感谢以下同事对这些扩展案例的支持: rex.xie , hongbowang , riya_yang1 , qi.liu4 , ecco.liu , summer23 , angeladai , joey.li1 .
如果您想了解更多关于开发扩展的场景,我建议您访问: SAP Extensibility Explorer .
如果您想了解关于开发扩展的更多信息,您可以访问: official Developer Extensibility Help Document . Technical Monitoring Cockpit Introduction Series – Key Concepts in Enterprise Resource Planning Blogs by SAP Technical Monitoring Cockpit Introduction Series – Clicking Through in Enterprise Resource Planning Blogs by SAP Database restore / Cleaning activity for SAP S4HANA Public Cloud Quality and Customising Server in Enterprise Resource Planning Q&A Is there an Internal Order field available in S4HANA Public Cloud? in Enterprise Resource Planning Q&A