1.创建一个主从表关系的CDS,及BOPF

本文介绍创建一个有主从表关系的CDS,并同时生成BOPF,其中使用到两个自定义表:ZTUSER(用户表),ZTUSER_MENU(用户可用菜单 表),每个用户可用的菜单可能有多个,表结构如图,其中表ZTUSER,包含结构:/BOBF/S_LIB_ADMIN_DATA,用于记录数据的创建、修改信息,后面介绍BOPF的Determinations增强时使用。

1.创建一个主从表关系的CDS,及BOPF - 第1张  | 优通SAP
1.创建一个主从表关系的CDS,及BOPF - 第2张  | 优通SAP

1.创建使用到的主、从表结构

结构如上图,

2.在HANA Studio中创建两个CDS

1.在创建BOPF的CDS时创建建议VIEW的名字定义格式为:Z***_I_**,其中的I表示的是Interface(接口)的意思,以使用于与其它的ODATA的CDS(Z***_C_**)、查询的CDS等区别Z***_Q_**),

2.sqlViewName名字在VIEW名字后面加V;

3.在从表CDS中由于使用了@ObjectModel.association.type: [#TO_COMPOSITION_ROOT,#TO_COMPOSITION_PARENT],所以不能使用:transactionalProcessingEnabled: true参考,否则提示报错,也就是说从表CDS不会生成BOPF.

4.仔细查看两个CDS发现他们是互相包含,所以在激活时需要选择两个一起激活;

3.BOPF增强,

上面的两个CDS激活后,主表的CDS就会激活一个BOPF Business Objects的对像ZUSER_I_USER2。双击打开此对像。

并在Determinations中增加一个增强类LIB_ADMIN(自己取名),

1.创建一个主从表关系的CDS,及BOPF - 第3张  | 优通SAP

第四步创建成功LIB_ADMIN后,点击第五步。

1.创建一个主从表关系的CDS,及BOPF - 第4张  | 优通SAP

点击Implementation class,就可以写入代码来实现在主表创建、修改时的触类了,类的代码主要写在/BOBF/IF_FRW_DETERMINATION~EXECUTE方法中,如下,此可做为通用的记录表的创建、修改信息增强类使用。

4.BOPF测试

在SAP GUI中使用事务码BOBT打开ZUSER_I_USER2,就可创建数据了

1.创建一个主从表关系的CDS,及BOPF - 第5张  | 优通SAP

创建并保存的后,SE16N打开主表可发现同时记录了创建及修改信息,但在ODATA操作时只会记录一个,可进行测试.

1.创建一个主从表关系的CDS,及BOPF - 第6张  | 优通SAP

在此测试时,发现是输入数据回车后,就会触发前面的Determinations中增加一个增强类LIB_ADMIN,结果就是点击增加时状态为”C”,修改数据回车时就触发的就是“U”,这可能与我们需求有差异,当然事实上,如我们是最后生成的ODATA或者其它的功能使用时,这也不会有问题的,

这时我们可以使用BOBX打开此BOPF对像,把此LIB_ADMIN类的触发条件从原来的”After Modify”修改为“Before Save”,如图,结果就完美了。

1.创建一个主从表关系的CDS,及BOPF - 第7张  | 优通SAP

下一步是使用此CDS创建并生成新ODATA