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