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

最低0.47元/天 解锁文章
2059

被折叠的 条评论
为什么被折叠?



