对平时使用接口的一些总结,想到一点写一点。
有时间的话可以看一看资料:
[SAP ABAP开发技术总结]Function远程、同步、异步调用 - 江正军 - 博客园
SE37功能模块
SE37进来可以看到如下界面:
点击创建可以创建一个接口(功能模块),需要指定功能组(一个功能组能有多个接口)
功能模块命名规则:ZFM<模块>_<描述简写>
功能组命名规则:ZFG<模块>_<描述总简写>
如果是外围系统调用需要选中远程启用模块
在设置参数这里的可根据需要勾选可选按钮和值传递按钮(勾选了远程启用模块一定要勾选值传递,会有系统提示的)
提醒一下,如果是外围系统调用的话,输出参数最好勾可选,不然后期如果输出类型进行改变了,外围系统没有做改变的话,就可能调用的时候就报错了。测试的时候,最好和外围系统那边进行联调测试。
SE80发布服务
创建接口后,如果外围系统要用SoapUi,调用测试,需要创建一个接口服务,并用soamanager发布服务URL。(外围系统如果用RFC的话不用发布服务)
SE80找到对应的包,找到企业服务,服务定义,右键创建
这里服务定义一般填功能模块名
创建完服务后输入soamanager创建服务
值得一提的是,如果已经发布了服务,生成的URL已经使用了一段时间,如果接口的输入输出类型已经改变了,就需要在SE80找到对应的服务定义,右键选择一次性检查,会有一些类型不一致的提醒,然后在右键更改,再点一次性检查,直到一次性检查没有报错了,最后再进行激活。
接口的异步调用
在平时调用接口名后面加STARTING NEW TASK 任务名
CALL FUNCTION '函数名' STARTING NEW TASK '任务名'
TABLES
IT_MATNR = IT_MATNR.
这里的函数是异步调用的,异步调用的意思是新开一个界面独立的跑函数。
SAP之间跨系统的调用
跨系统调用之前要调用的对方系统上用SM59配置号RFC目标
在调用函数的时候,在函数名后加DESTINATION ‘REF目标名’
CALL FUNCTION '函数名' DESTINATION 'REF目标名'
TABLES
IT_MATNR = IT_MATNR.
这样就能调用对方系统上的资源了
http接口
GET单个调用接口-调用外围系统
JS格式的拼接:{ “参数名”:“参数值”, “参数名”:“参数值”}
POST批量调用接口-调用外围系统
SAP中HTTP协议用于解析的函数/UI2/CL_JSON=>DESERIALIZE
JS格式的拼接:
一个对象以“{”(左括号)开始,“}”(右括号)结束
一个数组以“[”(左中括号)开始,“]”(右中括号)结束
按数组的形式传输的时候,用 [ {},{},{},{},{},{} ]的方式进行拼接
接口错误日志查询(SRT_UTIL)
背景:使用SOAP UI调用接口的时候,报错,连接失败,没有返回消息的时候,可以用SRT_UTIL事务代码查询错误。