首页 > SAP > ABAP > SAP提供RESTful给第三方调用的接口实现
2024
12-12

SAP提供RESTful给第三方调用的接口实现

第三方调用SAP的接口通常使用PI来实现,也可以直接让第三方调用SAP的RFC,或者是SAP生成WEBSERVICE给第三方调用,有的项目上没有PI,而使用RFC感觉不那么通用,第三没做过还不好实现,WEBSERVICE方式,SAP实现起来感觉又太麻烦,使用下来还是直接RESTful方式更方便些,并且可以传JSON,也可实现HTTP的POST ,GET 等方法,总来来说还是RESTful更方便些,

以下是现实项目中实现的框架,包含了保存日志,及不同接口自动配置调用,对开发新接口时,接口功能不用再修改,只需要增加配置,并按规范增加处理函数就行。

1.创建接口

使用事务码SICF创建一个服务ZREST_INTERFACE,服务名可以自己取,如图创建后那么接口地址就是:http://ip:80000/rf_rest/zrest_interface?sap-client=310

SAP提供RESTful给第三方调用的接口实现 - 第1张  | 优通SAP

其中在服务ZREST_INTERFACE中在“登陆数据”中设置连接到的CLIETN及用户名密码,此用户密码就是提供接口使用的用户密码,并有“处理器清单”中增加一个自定义类名,比如ZREST_INTERFACE,后面一步创建这个类,

2.接口类实现

SE24创建一个类ZREST_INTERFACE,用来处理接口数据,其中类的接口中增加IF_HTTP_EXTENSION,此时就可以修改方法IF_HTTP_EXTENSION~HANDLE_REQUEST,来实再接口调用方法了,类激活后,如要IF_HTTP_EXTENSION~HANDLE_REQUEST方法中打断点,你会发现,当POST ,GET 调用地址http://ip:80000/rf_rest/zrest_interface?sap-client=310,断点就会来到这个方法中了。

程序中用到三个表,ZREST_LOG(接口日志表),ZREST_CONFIG(SCIF接口配置表),ZREST_F_CONFIG(接口函数配置表) CALL FUNCTION LS_ZREST_CONFIG-ZC_REF_FUNCTION就是调用配置的接口函数 功能,

  • ZREST_LOG-接口日志表
  • ZC_UUID ZC_UUID CHAR 32 0 接口请求唯一ID
  • ZC_DATE ZC_DATE DATS 8 0 接口日期
  • ZC_TIME ZC_TIME TIMS 6 0 接口时间
  • ZC_END_TIME ZC_END_TIME TIMS 6 0 接口执行结束时间
  • ZC_ID ZC_ID CHAR 20 0 接口ID
  • ZC_DIRECTION ZC_DIRECTION CHAR 10 0 接口方向
  • ZC_REQUEST_INFO ZC_REQUEST_INFO STRING 0 0 请求报文
  • ZC_RESPONSE_INFO ZC_RESPONSE_INFO STRING 0 0 返回报文
  • ZC_CODE ZC_CODE CHAR 10 0 错误返回码
  • ZC_MSG ZC_MSG STRING 0 0 错误返回信息
  • ZREST_CONFIG-SCIF接口配置表
  • ZC_ID ZC_ID CHAR 20 0 接口ID
  • ZCNAME ZCNAME CHAR 100 0 接口名称
  • ZC_REF_DATA ZC_REF_DATA CHAR 30 0 接口参考结构
  • ZC_REF_FUNCTION ZC_REF_FUNCTION CHAR 50 0 接口业务实现
  • ZC_URL ZC_URL STRING 0 0 接口地址url
  • ZC_URL1 ZC_URL STRING 0 0 接口地址url
  • ZC_YW_USERID ZC_YW_USERID CHAR 20 0 运维人员工号
  • ZREST_F_CONFIG-接口函数配置表
  • ZC_REF_FUNCTION ZC_REF_FUNCTION CHAR 50 0 接口业务实现
  • ZC_STYLLE ZC_STYLLE CHAR 10 0 接口函数类型
  • ZC_PARAM ZC_PARAM CHAR 20 0 接口函数参数名称
  • ZC_REF_DATA ZC_REF_DATA CHAR 30 0 接口参考结构
  • __________________ __________________ _ ___________________________________________________

3.增加一个新接口函数配置

增加一个接口配置,SCM030,同时创建结构ZCC_SCM030,配置接口调用函数ZC_F_SCM030

SAP提供RESTful给第三方调用的接口实现 - 第2张  | 优通SAP

其中结构 为函数 的传入参数结构 ,此结构 对应接口POST传入参数的JSON结构 ,此结构中必须包含ZC_ID,用于指定接口编号 ,对于此接口此值 传为“SCM030”,
ZC_UUID,用于标记每次接口调用数据的主键值 ,用于标记接口调用的唯一性,如不考虑接口数据唯一性时,此值为随机字符串就行,如要防止业务数据重复传输,可以业务主键放到此字段中,比如采购订单只能收货一次时,可把采购订单放到此字段中。

后面的内容就是接口真实的数据内容了,

SAP提供RESTful给第三方调用的接口实现 - 第3张  | 优通SAP

在表ZREST_F_CONFIG中指定函数 的传入,传出参数名入定义的类型

SAP提供RESTful给第三方调用的接口实现 - 第4张  | 优通SAP
SAP提供RESTful给第三方调用的接口实现 - 第5张  | 优通SAP

4.增加一个接口函数功能代码

在函数 ZC_F_SCM030,传入结构用ZCC_SCM030,

此函数 只要与接收到结构 化数据的数据处理逻辑就行,

5.日志查询程序

在上面接口中会自动把接口的传入,传出数据保存到日志表中,所以创建 一个程序来做日志查询处理。

6.其它

前面的程序还用到一个JSON结构 化数据的函数 ,其中ZC_ID CHAR20,ZC_JSON_PARAM为STRING类型

SAP提供RESTful给第三方调用的接口实现 - 第6张  | 优通SAP

最后编辑:
作者:yangsen
本站为个人博客网站,全由我个人维护,我从事SAP开发13年,其它ERP开发7年,基本都是零售行业。本站记录工作学习的过程, 有SAP相关询问专、兼职工作可随时联系我。 有网站相关的问题可直接在文章下方留言,或者联系我。 邮件:yan252@163.com给我。 QQ:415402519

留下一个回复

你的email不会被公开。