首先感谢本文作者,群里的朋友:金刀不无敌
以下是作者整理的干货:
SEGW创建服务ZCRUD_DEMO。SE代表Editor,GW代表Gateway
我们可以用表ZTEST_CRUD_TABLE作为EntityType,创建一个叫做EtPersonSet的EntitySet,并且设置键值、支持的操作类型等。
Association分类下面,可以创建EntitySet间的映射关系,而Service Implementation下面,则有实现增删改查的方法,我们需要在这些方法中Redefine自己的代码,重写的类以EXT为结尾即extension的意思。
本文主要讲增删改查时URI的格式以及注意事项,并未列出重写方法的代码,因为这些代码本质上都是SQL语句,如下面通过Filter作为WHERE条件进行查询的语句。
创建对象后,记得按红色圆圈,以创建run time object。
其中键值的用法如下,这是GET查询操作:
/sap/opu/odata/SAP/ZCRUD_DEMO_SRV/EtPersonSet(Zid='1')?$format=json
SAP Gateway Client效果如图(该工具说明见后方):
Filter用法如下,依然是GET操作:
/sap/opu/odata/SAP/ZCRUD_DEMO_SRV/EtPersonSet?$filter=( Zid eq '1' or Zid eq '10' )
SAP Gateway Client效果如图(该工具说明见后方):
系统不会自动解析Filter里的字符串,我们需要用动态SQL把iv_filter_string作为WHERE条件,注意,虽然我们可以用TO_UPPER()将字符串变成大写,但实践证明不用大写字符串也能正常运行。
可以看到表内增加了一行:
UPDATE需要PUT方法,URI写法如下:
可以看到对应行更新了
删除需要DELETE方法,URI写法如下:
/sap/opu/odata/SAP/ZCRUD_DEMO_SRV/EtPersonSet(Zid='10')
可以看到id为10的行不见了
SAP Gateway Client说明如下:
如果采用嵌入式Gateway Hub,那么服务已经直接发布成功了。如果采用非嵌入式Gateway Hub,则还需要去事务代码/n/IWFND/MAINT_SERVICE激活服务。