2021.09.06 【ABAP隨筆】- OData - 在SAP S4 OP 中使用SAP API Hub 的API


SAP S4 OP 中使用SAP API Hub API

首先我們打開SAP API Hub - SAP API Business Hub(api.sap.com),點擊APIs

 

 

 

 選擇OData V2,在右側搜索框輸入Purchase order(如果需要其他的API請自行修改)

 

 選擇第一個API 點擊,在Overview界面選擇EDMX 下載下來

 

 S4 OP SEGW事務中創建一個Project

 

 右擊選擇Import->Data Model from File

 

選擇下載下來的API文件

 

點擊Finish,然后點擊Generate 生成

 

生成對應的類

 

接下來我們ZCL_ZTAB_API_PO_PROCES_DPC_EXT 雙擊

點擊方法->繼承方法,選擇A_PURCHASEORDER_GET_ENTITYSET重定義

 

然后簡單寫一個獲取PO訂單信息的代碼,保存激活

 

DATA lt_purchaseorder TYPE zcl_ztab_api_po_proces_mpc=>tt_a_purchaseorderitemtype.
  DATA ls_purchaseorder LIKE LINE OF lt_purchaseorder.

  SELECT a~ebeln,b~ebelp,b~werks,b~matnr,b~menge,b~meins
    FROM ekko AS a
    INNER JOIN ekpo AS b ON b~ebeln = a~ebeln
    INTO TABLE @DATA(lt_ekpo)
    UP TO 5 ROWS.
  IF sy-subrc EQ 0.
    LOOP AT lt_ekpo INTO DATA(ls_ekpo).
      ls_purchaseorder-purchaseorder = ls_ekpo-ebeln.
      ls_purchaseorder-purchaseorderitem = ls_ekpo-ebelp.
      ls_purchaseorder-material = ls_ekpo-matnr.
      ls_purchaseorder-plant = ls_ekpo-werks.
      ls_purchaseorder-purchaseorderitem = ls_ekpo-ebelp.
      ls_purchaseorder-orderquantity = ls_ekpo-menge.
      ls_purchaseorder-purchaseorderquantityunit = ls_ekpo-meins.
      APPEND ls_purchaseorder TO lt_purchaseorder.
      CLEAR ls_purchaseorder.
    ENDLOOP.
  ENDIF.

  CHECK lt_purchaseorder IS NOT INITIAL.

  et_entityset = lt_purchaseorder.  

去事務碼/n/iwfnd/maint_service, 點擊添加服務

 

我們輸入系統別名(因為創建的OData服務在本地包,所以輸入LOCAL),然后對做篩選,選擇服務,點擊添加所選服務

 

直接選擇包,然后點確定,加載服務

 

返回服務維護界面:我們可以看到服務已經被添加到其中

 

我們可以點擊SAP Gateway來測試,點擊EntitySets,選擇我們剛才重定義過的方法所在的Set

 

點擊執行,我們可以看到PO數據已經被取到了

 

復制地址在瀏覽器中打開,也可以查看到返回的Json

 

 

 

 


免責聲明!

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



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