zoukankan      html  css  js  c++  java
  • 一个通过URI对Odata进行增删改查的简单例子

    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()将字符串变成大写,但实践证明不用大写字符串也能正常运行。

    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": ""
    }

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

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

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

    Body部分如下:

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

    可以看到对应行更新了

    删除需要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激活服务。

  • 相关阅读:
    Boot.ini
    CCP4 SET
    Install GTK+ GLIB
    C head file
    Changes in Python
    ubuntu
    错误: 配置节中设置 validateRequest=false 可以禁用请求验证
    c++中冒号(:)和双冒号(::)的用法
    C++学习之类和结构体
    C++中双冒号的作用
  • 原文地址:https://www.cnblogs.com/Intercalaryland/p/11098308.html
Copyright © 2011-2022 走看看