创作背景
泛微更新class文件需要重启服务器才能生效,遇到erp接口调试时需要频繁改动更新代码,调试起来非常麻烦,所以我想到把后端代码固定,采用前端调整代码的方式更新erp接口交互操作。
实现步骤
1、编写后台ERP交互代码
此部分需要适应erp调用各种参数输入情况,做到不需要频繁改动。
代码地址
2、前端调用
2.1、erp交互接口地址:
http://ip:port/api/dcdev/sap/callSap
2.2、输入对象属性说明:
datas:json对象,各属性为erp接口交互时参数内容。
2.2.1、datas.method:必填,SAP接口名称;
2.2.2、datas.sourceId:必填,泛微集成中心-产品集成-SAP集成中配置的数据源的id;
2.2.3、datas.params:可选,参数对象,属性名为输入参数的名称,属性值为输入参数的值;
2.2.4、datas.structures:可选,参数结构对象,属性名为输入结构的名称,属性值为输入结构的键值对;
2.2.5、datas.tables:可选,参数表对象,属性名为输入表的名称,属性值为数组(数组中的每个对象代表输入表的一行)
2.2.6、datas.result:必填,请求需要返回的对象。
params、structures、tables非必选,但是不能全部为空。
2.3、输出对象属性说明:
2.3.1、code:调用结果状态码,200代表成功,其他代表异常。
2.3.2、message:调用结果信息,失败时告知失败原因。
2.3.3、data:调用结果数据,根据2.2输入对象的result参数生成。
3、调用案例
3.1ajax调用
$.ajax({
type: "post",
async : false,
dataType:"json",
url: "/api/dcdev/sap/callSap",
data:{
datas: JSON.stringify(paramObj)
},
success: function(obj){
if(obj.code === "200"){
result = obj.data;
}else{
alert(obj.message);
}
},
error: function(e){
alert("sap交互失败,请联系管理员:" + e.message);
}
});
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
3.2输入案例:
案例说明:
调用的服务器为:SAP集成中心中配置的数据源id为1501的服务器;
调动的接口方法为:Z_PS_WBS_STATUS;
传入的参数为:表格LIST的POSID属性,值为RAJCGZS091-1-1-32;
请求的结果为:表格LISTOUT的STAT和TXT04值。
{"method":"Z_PS_WBS_STATUS","sourceId":"1501","tables":{"LIST":[{"POSID":"RAJCGZS091-1-1-32"}]},"result":{"tables":{"LISTOUT":["STAT","TXT04"]}}}
- 1
3.3输出结果:
案例说明:
code为200,代表调用成功;
message返回的是交互结果信息;
data返回的是请求结果数据,依据上述输入的result;
{"code":"200","data":{"tables":{"LISTOUT":[{"STAT":"I0002","TXT04":"REL"}]}},"message":"调用成功。"}
- 1