使用BOPF自动填写入默认值

在创建表时,我们通常会有一些默认值,比如创建人,创建时间,更改人,更改时间等,通常的们会有创建表维护时使用“事件”,来在创建、更改时实现这功能,但当我们的数据是在FIORI中使用或者其它接口中使用时,这种方法就不行了,当然我们也可以用提供的ODATA的数据中直接填入默认值,但这样就做不到统一了,也不是很方便,

为了实现这功能,我们可以创建一个CDS,并生成BOPF来实现,最后使用这人CDS替换到真实表中。

1.创建表

表中INCLUDE结构:/BOBF/S_LIB_ADMIN_DATA,主要是需要引用以下四个字段名,测试时发现默认情况下字段名不能改变,否则后面默认不能成功。

CREA_DATE_TIME
CREA_UNAME
LCHG_DATE_TIME
LCHG_UNAME

使用BOPF自动填写入默认值 - 第1张  | 优通SAP

2.创建CDS,并生成BOPF

在ECLIPSE中创建CDS,其中的@Semantics.systemDateTime.createdAt就会在BOPF创建数据时使用系统用户填写,其它的类似功能。

注:字段名不用AS 重定义,发现用AS重定义后BOPF的字段会多出AS的字段,默认值只会写到结构的AS名字下,而不能保存表真实表中。

3.检查BOPF

在前一步的CDS中会生成 BOPF:ZDDL_I_ZTESTH,打开BOPF,会发现默认生成了一个名为“ADMINISTRATIVE_DATA”的Determinations,有前一步中参数引用的默认值,就是在这表Determinations的类中写入的,代码是自动生成的,引用了类:/BOBF/CL_LIB_D_ADMIN_DATA_AI,可以打开此类查看更多细节。

4.测试

事务码:BOBT,打开ZDDL_I_ZTESTH,创建一行数据,点击保存后,就会填入默认的用户时间了。

使用BOPF自动填写入默认值 - 第2张  | 优通SAP