视图可以进行增删改查吗_一个通过URI对Odata进行增删改查的简单例子

首先感谢本文作者,群里的朋友:金刀不无敌 

以下是作者整理的干货:

25b15b4c501b5097868b84fcd3948475.png

SEGW创建服务ZCRUD_DEMO。SE代表Editor,GW代表Gateway

3011971e6497d0372072dd40bd075a8b.png

0e4d33659ac601970c6b004df90c03e7.png

我们可以用表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效果如图(该工具说明见后方):

fbae6b6708e72e51f21de0e52046e679.png

Filter用法如下,依然是GET操作:

/sap/opu/odata/SAP/ZCRUD_DEMO_SRV/EtPersonSet?$filter=( Zid eq '1' or Zid eq '10' )

SAP Gateway Client效果如图(该工具说明见后方):

37cb468f55b8961f758f7d7ecb4d95d3.png

35440f066d6be7d4e0f79a65b4199d03.png

系统不会自动解析Filter里的字符串,我们需要用动态SQL把iv_filter_string作为WHERE条件,注意,虽然我们可以用TO_UPPER()将字符串变成大写,但实践证明不用大写字符串也能正常运行。

Filter还支持一些特殊用法:

filter=substringof('1',SalesOrder) or startswith(SalesOrder,'2')

这里的意思是找出包含’1’的SalesOrder,或以’2’开头的SalesOrder。

创建需要用POST方法,URI写法如下,注意不要用format参数:

/sap/opu/odata/SAP/ZCRUD_DEMO_SRV/EtPersonSet

除了URI,我们还需要在body里增加要创建的值

{
"Zid": "10",
"Zname": "testname",
"Zphone": "",
"Zaddress": ""
}

001c13b28ab81143c2b26907ecbd9ecb.png

可以看到表内增加了一行:

19c37ba0a113557e4154a0799816a3ed.png

UPDATE需要PUT方法,URI写法如下:

/sap/opu/odata/SAP/ZCRUD_DEMO_SRV/EtPersonSet(Zid='10')

Body部分如下:

{
"Zid": "10",
"Zname": "testname",
"Zphone": "1",
"Zaddress": "1"
}

d54539e91a42f4b178371ac557691cf4.png

可以看到对应行更新了

aac4da8e3d4485172cc9f547c6ffbccc.png

删除需要DELETE方法,URI写法如下:

/sap/opu/odata/SAP/ZCRUD_DEMO_SRV/EtPersonSet(Zid='10')

92dd52e8f575844b87680aa7610eb167.png

可以看到id为10的行不见了

67371c525da5d86eb5501ec4e9cc0003.png

SAP Gateway Client说明如下:

d65abd887ad51f886331e029e81dcf1b.png

如果采用嵌入式Gateway Hub,那么服务已经直接发布成功了。如果采用非嵌入式Gateway Hub,则还需要去事务代码/n/IWFND/MAINT_SERVICE激活服务。

99f00753d20717bfb8780b90b26061e4.png

653bbec9eedcac1081365b7aa2a1a4a3.gif

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值