先写一个CDS
下面是一个简单的例子,其中zfield字段为空,用来segw做增强的逻辑处理
事务码SEGW创建ODATA工程
进入segw
创建一个project
输入project的名称和描述,选择本地或者自己去包请求
创建成功后,就生成了一个ODATA工程对像ZTEST_JERRY,此工程中可引入多个表,或者多个定义的CDS,下面以引入前文创建的CDS为例。
引入CDS到ODATA工程中
右击Data Model,导入自己的CDS
导入成功的结果
激活ODATA项目工程,点击“Generate Runtime Objects”,此步骤,一定要先选择工程项目(ZTEST),否则激活时会报错的。成功后如图。
对ODATA进行增强
激活过后可以看到Runtime那里可以展开了
选择DPC_EXT
DPC:data provider class CRUD的地方
MPC:modle provider class 数据提供的地方
进去后,下拉找到get_entityset
双击get_entityset,进入到方法内部,然后把里面的代码复制
然后返回到上一页面,选择get_entityset,点击左上角更改,然后点击重新定义方法
进入方法体后,把里面的替换为上面复制的
然后添加写上自己的代码,最后激活
(为什么需要这样重新定义方法,而不是在上一步进入get_entityset里面后直接去点击更改,然后写代码 ?第一种:点击重新定义方法,这个方法就会变色,见下图,很容易看出来这个方法做了增强。第二种:如果在get_entityset方法体里面直接点击更改,然后写代码,这个方法是不会变色的,看不出来对哪个方法做了增强。两种除了这个差别,两者最终能实现的的效果其实都一样)
把ODATA工程生成ODATA服务
运行事务码:/IWFND/MAINT_SERVICE 打开激活服务功能,如运行此事务码报错:“用户不能再登陆”,如图。可以在此事务码前面加/O,也就是:/O/IWFND/MAINT_SERVICE 来打开,或者直接在SE93中打开,或者把此事务码添加到收藏菜单中,就不会报错了。
添加服务
然后返回上一页面,找到自己的服务
可以看到我这里做的增强已经成功了
也可以用Postman测试。