一個通過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激活服務。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM