在新版本的SAP中通常会有一个DB_KEY字段(RAW16 键),此类型的表对于处理FIORI时更方便,这样把KEY关键值与业务完全分开在FIORI的程序处理时,可以随意处理业务数据字段,今天在用此类型表做BOPF测试时,发现一些问题,以下记录。
创建测试表ZTEST_H,其中DBKEY为表关键字段

创建CDS生成BOPF,
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
@AbapCatalog.sqlViewName: 'ZTMPC_I_TESTH' @AbapCatalog.compiler.compareFilter: true @AbapCatalog.preserveKey: true @AccessControl.authorizationCheck: #NOT_REQUIRED @EndUserText.label: 'TESTH' @ObjectModel:{ semanticKey: ['Dbkey'], modelCategory: #BUSINESS_OBJECT, compositionRoot: true, transactionalProcessingEnabled: true, // writeDraftPersistence: 'ztest_hd', // draftEnabled: true, writeActivePersistence: 'ztest_h', createEnabled: 'EXTERNAL_CALCULATION', deleteEnabled: 'EXTERNAL_CALCULATION', updateEnabled: 'EXTERNAL_CALCULATION' } define view ZTMP_I_TESTH as select from ztest_h as _head { key _head.dbkey as Dbkey, _head.ebeln as Ebeln, _head.bukrs as Bukrs } |
经测试发现:
- 在定义CDS字段 key _head.dbkey as Dbkey时,AS的字段 不能重定义为其它名字,否则POPF报错,不能激活“Element DBKEY1 is no DB field, no storage”。
- SELECT出来的字段 不能使用业务关系字段(比如EBELN)为关键KEY字段,否则BOPF激活后,当使用BOBT测试BOPF时,保存数据出错会报没有DBKEY字段。
- 当使用草稿时writeDraftPersistence: ‘ztest_hd’, draftEnabled: true,使用BOBT测试此BOPF,保存成功但激活此数据时在CLAS /BOBF/CL_LIB_A_ACTIVATION中报错,但使用此CDS生成 ODATA并生成 SAP Fiori elements使用时正常。暂时没找到原因,