前言
随着SAP推动Clean Core并引入多种关键用户扩展工具,客户项目中仍然有很大一部分需求需要使用自定义表来进行维护,本篇进行介绍如何使用基于RAP的Business Configurations来代替之前使用的SM30/SM54维护的自定义业务配置对象,这也是在ABAP Cloud云开发模型下的最佳实践建议。
正文
借助ADT向导工具可以快速的创建出一个Business Configuration Maintenance Object,创建完成后即可自动集成到Custom Business Configurations app中,也就是所有的表格维护都将有一个统一的入口,但私有云和op环境中目前我所使用的版本仅能够自动生成维护对象,并不能使用Custom Business Configurations app,所以出于这个原因,本文的示例内容将在公有云环境中进行。
以下是截至S4HANA 2023 FPS01为止可用的功能列表:
![]()
开发步骤
1. 创建开发包
为了和之前的开发示例进行区分,新创建一个开发包:
2. 创建自定义表
注意点:
-
• @AbapCatalog.deliveryClass必须是 #C -
• @AbapCatalog.dataMaintenance必须是 #ALLOWED -
• 必须至少包含以下两个字段用于草稿处理和并发控制
1. last_changed_at : abp_lastchange_tstmpl;
2. local_last_changed_at : abp_locinst_lastchange_tstmpl;
这里主键使用了自定义数据元素,因为后续文本表的外键必须要求关联字段有对应的数据元素,而不是预定义的abap类型,同时UI上的字段描述也来自于数据元素的标签描述:
configdeprecationcode : config_deprecation_code;
此字段是一个可选项,添加了此字段后续生成的界面中会多出一个反对的功能,处于演示,这里也添加了此字段。
zsrap_demo_manage结构是在之前章节中创建的通用结构,在此处进行了复用。
1. @EndUserText.label : 'Status Code'
2. @AbapCatalog.enhancement.category : #NOT_EXTENSIBLE
3. @AbapCatalog.tableCategory : #TRANSPARENT
4. @AbapCatalog.deliveryClass : #C
5. @AbapCatalog.dataMaintenance : #ALLOWED
6. define table ztstatus {
7.
8. key client : abap.clnt not null;
9. key status_code : ze_status_code not null;
10. configdeprecationcode : config_deprecation_code;
11. "%manage" : include zsrap_demo_manage;
12.
13. }
3. 创建文本描述表
基本要求还是和ztstatus表一样,必须是 #C 和 #ALLOWED,其次定义好外键关联,用于ADT工具自动生成维护对象时确定绑定关系:
1. @EndUserText.label : 'Status Code Description'
2. @AbapCatalog.enhancement.category : #NOT_EXTENSIBLE
3. @AbapCatalog.tableCategory : #TRANSPARENT
4. @AbapCatalog.deliveryClass : #C
5. @AbapCatalog.dataMaintenance : #ALLOWED
6. define table ztstatust {
7.
8. key client : abap.clnt not null;
9. @AbapCatalog.textLanguage
10. key langu : abap.lang not null;
11. @AbapCatalog.foreignKey.keyType : #TEXT_KEY
12. @AbapCatalog.foreignKey.screenCheck : false
13. key status_code : ze_status_code not null
14. with foreign key [0..*,1] ztstatus
15. where client = ztstatust.client
16. and status_code = ztstatust.status_code;
17. description : ze_description;
18. "%manage" : include zsrap_demo_manage;
19.
20. }
数据元素和域如下,为了区分大小写:
4. 创建业务配置维护对象
右键配置表,点击Generate ABAP Repository Objects:
选择Business Configuration Maintenance Object然后点击下一步:
选择之前创建的包并继续下一步:
这里可以根据需求进行勾选,包括是否需要拷贝功能,是否需要请求传输等等,这里处于演示全部选中:
查看将会自动创建的对象内容:
确认无误后点击下一步,接下面就是等待自动创建所有对象,最终你将看到左侧这些对象内容。
最后你需要手动Publish Service Binding来激活一些后台作业,来使得此app可用:
如果打开的预览界面如下所示,不要着急,有些后台作业仍在进行,等一会就好了:
即使可以正常显示,也是无法编辑的,因为仍需要下一步操作,进行权限分配,所以在等待的过程中可以先进行后续的步骤。
5. 为业务配置维护对象提供授权控制


