OData SAPS4OP 中使用 SAPAPIHub 的 API

作者:SAPTAB 约 5 分钟阅读 更新日期:2025-03-02 1 年前更新 标签:ABAP, Cloud Architecture, Data Engineering, S/4HANA, SD, 云架构, 开发, 数据工程, 销售分销
OData SAPS4OP 中使用 SAPAPIHub 的 API - 封面图
OData SAPS4OP 中使用 SAPAPIHub 的 API - 封面图

原创 Tab Zhu [ SAP TAB ](javascript:void\(0\);)

**点击蓝字关注我们**

富强 民主 文明 和谐

自由 平等 公正 法制

爱国 敬业 诚信 友善

**不念过** **去**

**START**

**不畏将来**

最近学习了BTP,看了SAP API Hub上有很多很多可以供使用现成的API,所以想到把 它们用在了自己的OP上,以达到使用快速开发的目的

首先我们打开SAP API Hub - SAP API Business Hub (api.sap.com),点击APIs

OData SAPS4OP 中使用 SAPAPIHub 的 API - 封面图
OData SAPS4OP 中使用 SAPAPIHub 的 API - 封面图

选择OData V2,在右侧搜索框输入Purchase order(如果需要其他的API请自行修改)

OData SAPS4OP 中使用 SAPAPIHub 的 API - 封面图
OData SAPS4OP 中使用 SAPAPIHub 的 API - 封面图

选择第一个API 点击,在Overview界面选择EDMX 下载下来

OData SAPS4OP 中使用 SAPAPIHub 的 API - 封面图
OData SAPS4OP 中使用 SAPAPIHub 的 API - 封面图

在S4 OP 端SEGW事务中创建一个Project

OData SAPS4OP 中使用 SAPAPIHub 的 API - 封面图
OData SAPS4OP 中使用 SAPAPIHub 的 API - 封面图

右击选择Import->Data Model from File

OData SAPS4OP 中使用 SAPAPIHub 的 API - 封面图
OData SAPS4OP 中使用 SAPAPIHub 的 API - 封面图

选择下载下来的API文件

OData SAPS4OP 中使用 SAPAPIHub 的 API - 封面图
OData SAPS4OP 中使用 SAPAPIHub 的 API - 封面图

点击Finish,然后点击Generate 生成

OData SAPS4OP 中使用 SAPAPIHub 的 API - 封面图
OData SAPS4OP 中使用 SAPAPIHub 的 API - 封面图

生成对应的类

OData SAPS4OP 中使用 SAPAPIHub 的 API - 封面图
OData SAPS4OP 中使用 SAPAPIHub 的 API - 封面图

接下来我们ZCL_ZTAB_API_PO_PROCES_DPC_EXT 双击

点击方法->继承方法,选择A_PURCHASEORDER_GET_ENTITYSET重定义

OData SAPS4OP 中使用 SAPAPIHub 的 API - 封面图
OData SAPS4OP 中使用 SAPAPIHub 的 API - 封面图

然后简单写一个获取PO订单信息的代码,保存激活

OData SAPS4OP 中使用 SAPAPIHub 的 API - 封面图
OData SAPS4OP 中使用 SAPAPIHub 的 API - 封面图
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 SAPS4OP 中使用 SAPAPIHub 的 API - 封面图
OData SAPS4OP 中使用 SAPAPIHub 的 API - 封面图

我们输入系统别名(因为创建的OData服务在本地包,所以输入LOCAL),然后对做筛选,选择服务,点击添加所选服务

OData SAPS4OP 中使用 SAPAPIHub 的 API - 封面图
OData SAPS4OP 中使用 SAPAPIHub 的 API - 封面图
OData SAPS4OP 中使用 SAPAPIHub 的 API - 封面图
OData SAPS4OP 中使用 SAPAPIHub 的 API - 封面图

直接选择包,然后点确定,加载服务

OData SAPS4OP 中使用 SAPAPIHub 的 API - 封面图
OData SAPS4OP 中使用 SAPAPIHub 的 API - 封面图

返回服务维护界面:我们可以看到服务已经被添加到其中

OData SAPS4OP 中使用 SAPAPIHub 的 API - 封面图
OData SAPS4OP 中使用 SAPAPIHub 的 API - 封面图

我们可以点击SAP Gateway来测试,点击EntitySets,选择我们刚才重定义过的方法所在的Set

OData SAPS4OP 中使用 SAPAPIHub 的 API - 封面图
OData SAPS4OP 中使用 SAPAPIHub 的 API - 封面图

点击执行,我们可以看到PO数据已经被取到了

OData SAPS4OP 中使用 SAPAPIHub 的 API - 封面图
OData SAPS4OP 中使用 SAPAPIHub 的 API - 封面图

复制地址在浏览器中打开,也可以查看到返回的Json

OData SAPS4OP 中使用 SAPAPIHub 的 API - 封面图
OData SAPS4OP 中使用 SAPAPIHub 的 API - 封面图

**不念过** **去**

**END**

**不畏将来**

OData SAPS4OP 中使用 SAPAPIHub 的 API - 封面图
OData SAPS4OP 中使用 SAPAPIHub 的 API - 封面图

**SAP ABAP TAB**

微信号 : TAB_JXZHU

后台回复'ABAP'免费领取学习资料

长按二维码关注我们

SAPTAB

关于作者:SAPTAB

企业信息化与 SAP 技术顾问,长期专注 SAP ABAP、FI/CO、MM、SD 等模块的技术分享与实战经验总结。查看更多介绍

来源说明:本文内容由「ODataSAPS4OP中使用SAPAPIHub的API.md」整理生成,仅用于内部技术分享与学习交流。