【SAP PO】SAP PO 接口配置完整教程之二REST服务对接


本示例以SAP端作为请求端,通过调用封装了外部Rest服务的Sproxy代理类方法,实现与外部服务的对接。

1、了解服务协议

外部服务,由对接方系统提供。
现在主流的服务形式为Restful接口服务,需要使用JSON 数据格式、UTF8 编码。
这里我们以一个SAP推送采购需求到SRM系统的实际案例来进行举例说明。

1.1、服务通讯协议

(1)接口访问方式
请求数据类型:JSON
请求方式:POST
认证方式:Oauth 2.0
传输协议:https

(2)接口认证方式
在每次主动调用SRM开放平台接口时需要带上AccessToken参数,开放平台会根据此次访问的 AccessToken,校验访问的合法性以及所对应的权限并返回相应的结果。
AccessToken的默认有效期为1小时,调用方可定时更新自己本地缓存的token。
设置AccessToken有两种方式,推荐使用第一种,如下所示:
A:在httpHeaders里面设置AccessToken

HttpHeaders httpHeaders = new HttpHeaders();
httpHeaders.add("Authorization", "Bearer " + accessToken);

B:在调用地址后面带上AccessToken

https://*******/sitf/v1/rest/operation-units/conversion-operation-unit?access_token=5e0b05ef-ea2e-4cd8-8a90-2663498e9d87

获取Access Token
① 简要描述:调用该接口,获取token授权,token将作为其他接口的授权凭证。
② 请求方式:POST
③ 请求URL:/oauth/oauth/token
④ 请求参数示例:

https://*******/oauth/oauth/token?grant_type=client_credentials&client_id=*******&client_secret=******&scope=default

请求参数说明

参数名称 类型 非空 描述
grant_type String 授权模式,固定值client_credentials
client_id String 即对接账号(由服务方提供)
client_secret String 客户端密钥(由服务方提供)
scope String 作用域,固定值default

⑤ 反馈示例
正确返回值

{
   
   
    "access_token": "97eb08ad-8c86-459f-9526-905caebe2958",
    "token_type": "Bearer",
    "expires_in": 2263,
    "scope": "default"
}

错误返回值

{
   
   
    "error": "invalid_grant",
    "error_description": "Bad credentials"
}

反馈参数说明

参数名称 类型 非空 描述
access_token String 访问令牌,用于业务接口调用。
token_type String Token类型
expires_in Integer access_token的有效期,单位:秒
scope String 作用域

(3)标准请求结构说明
请求body由两部分组成,一部分是"header"信息(并非httpHeader,每个接口格式固定),一部分是"body"信息(存放的动态业务数据,每个接口视具体接口字段而定),如下所示

{
   
   
    "header":{
   
   
        "applicationCode":"",
        "applicationGroupCode":"",
        "batchCount":"",
        "batchNum":"",
        "externalSystemCode":"",
        "interfaceCode":"",
        "userName":""
    },
    "body":[
        {
   
   
            "sourceCode":"testFiled",
            "esOuCode":"testFiled",
            "erpCreationDate":"2019-09-16 03:01:50",
            "erpLastUpdateDate":"2019-09-16 03:01:50",
            "enabledFlag":1,
            "esOuId":"testFiled",
            "ouName":"testFiled"
        }
    ]
}

请求参数说明

字段 字段类型 是否必填 描述 备注
applicationGroupCode String 应用组 SRM提供,随着对接环境不同会变化
applicationCode String 应用 SRM提供,随着对接环境不同会变化
batchCount String 数据量 对方系统提供,可不传
batchNum String 批次号 对方系统提供,不超过20位递增的数字,建议时间戳
externalSystemCode String 外部系统 SRM提供,固定值
interfaceCode String 接口编码 SRM提供,不同接口编码不同
userName String 用户名 SRM提供,SRM子账户名,随着对接环境不同会变化

(4)标准反馈结构说明
​SRM接口的反馈结构是固定的标准格式,分为批次响应结果(本次请求的响应结果)和单据执行结果(传输的具体单据的执行响应结果),如下所示:

{
   
   
    "batchNum":"",
    "executeResult":"PART",
    "responseMessage":"SSS",
    "responseStatus":"SUCCESS",
    "restResponseDtlDTOList":[
        {
   
   
            "documentCode":"SS",
            "documentId":1,
            "responseMessage":"MM",
            "responseStatus":"SUCCESS"
        },
        {
   
   
            "documentCode":"BB",
            "documentId":2,
            "responseMessage":"",
            "responseStatus":"ERROR"
        }
    ]
}

反馈参数说明

字段 字段类型 描述 备注
batchNum String 批次号 请求的批次号
responseStatus String 程序执行状态 ERROR:失败,SUCCESS:成功;状态为ERROR说明整批数据程序执行异常,无需关心明细响应结构。状态为SUCCESS,需要从restResponseDtlDTOList中获取具体每条数据的执行状态
responseMessage String 错误信息
executeResult String 执行结果 SUCCESS:数据全部执行成功,FAILED:数据全部执行失败,PART:数据部分成功部分失败

restResponseDtlDTOList

字段 字段类型 描述 备注
documentId Long erp业务单据唯一性标识 暂无使用
documentCode String erp业务单据唯一性标识 对应接口的唯一性字段
responseStatus String 执行状态 SUCCESS:成功,ERROR:失败(当前此笔单据执行的状态)
responseMessage String 错误信息 当前此笔单据执行产生的异常信息,如果状态为SUCCESS此处无值,如果为ERROR,此处有具体报错信息

1.2、具体接口协议

(1)接口地址:https://gateway.dev.isrm.going-link.com/sitf/v1/rest/forecast/receiver-data
(2)请求报文结构:

{
   
   
    "header": {
   
   
        "applicationCode": "服务方提供",
        "applicationGroupCode":"服务方提供",
        "batchCount":"此批次数据条数",
        "batchNum":"递增且唯一的少于20位的数字,建议时间戳",
        "externalSystemCode":"服务方提供的外部系统CODE",
        "interfaceCode":"服务方提供",
        "userName": "服务方提供"
    },
    "body": [
        {
   
   
            "esFcstHeaderId": "",
            "esFcstNum": "2200001003361000001101421010",
            "lineNum": "1",
            "sourceCode": "SAP",
            "fcstStartDate": "2022-01-01",
            "esItemId": "",
            "esItemCode": "000000100000110
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值