1. 调用SAP BAPI
1.1 前提
项目已创建
SAP环境登录正常
1.2 引入BAPI SDK
商店中下载BAPI SDK
Process中导入BAPI SDK
1.3 新建action group
新建action group时,会要求填写SAP登录信息,根据连接类型分为SSO,Basic和Custom
如果选择SSO和Basic会有预留的参数被放出来填写,若参数不足以登录可以新增参数(例子:BTP没有用SSC打通SAP后端和BTP的防火墙,可以新增SAP Router以设置外网连接)
具体参数和SAP登录时使用的一致,这里使用Custom举例
在此处添加完参数后就需要填写除用户名和密码以外的SAP连接参数
否则下一页面会重新让选择
创建完成后转到detail页面,此时可以填写用户名和密码以连接SAP客户端获取BAPI名以及测试
使用客户的BTP环境无法通过路由连接SAP后端,但试用账号可以连接,这是一个待解决的问题点,猜测是用户BTP有白名单设置
1.4 新建Action
点击新建以创建action,SAP把单个的BAPI封装成了Action供用户操作,好处是创建完成之后无需再创建结构,保存时会根据选择的bapi参数自动生成入参和出参
如果SAP后端连接成功,那么此时会出现可使用的BAPI列表(其实不只是BAPI,所有远程RFC都可以使用)
搜索需要的bapi即可,此处使用bapi_po_getdetail1
选择需要的bapi入参
选择需要的bapi出参
最后可以在test页签测试,入参只有刚刚选中的入参,但是sap会把所有出参都返回
最后保存即可,会自动生成bapi所需的入参和出参结构
1.4 测试
新建流程,在活动处可以搜索出刚刚新建的action group和action,选中拖拽即可使用
除了账号密码以外,刚刚配置的SAP连接信息被自动带过来了
账号密码目前只能明文填写到此处,但实际应该保存在一个凭据管理器中才能保证安全,这部分待解决
入参和出参已经在action保存的时候就生成了,此处可以直接选择生成的参数类型,输入参数即可
最后点击测试,用log查看返回的结果
最后结果也只包含选择的出参
1.5 参考文档
https://developers.sap.com/tutorials/spa-bapi-actiongroup.html
2. 调用S4HC API
2.1 配置S4HC
2.1.1 创建通信用户
这是先决条件,刚拿到S4HC的测试环境了,所以补在前面
登录S4HC创建通讯用户
尽量使用建议密码,S4HC的密码规则很严格
2.1.2 创建通信系统
下述系统和主机名都可以自定义,端口使用HTTPS 443
只维护入站即可,因为此用户只用于调用S4HC API时使用,选择刚刚创建的用户
2.1.3 创建通信场景
在API Hub中找到待使用的API 编号,如下图
注: 此处使用的是物料主数据的API,因为拿到的S4HC系统只有物料主数据,没有销售订单数据,跟下面的销售订单API有一点出入,但方法和步骤都是一样的
使用刚刚在API hub中找到的API 编号,找到对应的通信场景
创建通信安排
填写入站信息即可
后面的出站信息用不上,全部取消激活
保存即可
2.1.4 测试API服务
转到API Hub的try out
在右侧的环境中新建
依次输入环境名称,域名,端口,账号,密码
注:
账号和密码要使用刚刚创建并配置的通信用户账号密码
API的域名在上一步通信场景的入站处,不是S4HC的域名,稍微有一点点不一样
配置完成后选择api,填写参数,最后run即可运行
最后成功访问API,并得到返回结果
2.2 配置BTP与BUILD连接
转到BTP的子环境->connectivity->destination,新建
URL填写2.1.4中tryout里面的链接,用户和密码填写之前新建的通信用户API_USER
右侧需要新增properties:
Key:sap.processautomation.enabled
Value:true
转到SAP Build Control Tower的destination磁贴
点击Add即可将BTP中的destination新增到SAP Build中
2.3 SAP API Hub下载API说明书
若要使用S4HC中的API,优先在SAP API Hub中找到对应的API接口文档
官方地址:https://api.sap.com
选择公有云版本的S4HC
转到API页签,转到ALL页签,搜索需要的API,此处使用销售订单的API故搜索sales
找到sales order的api
在overview找到API Specification,下载zip文件并解压(点一次有时候不生效,多点几次)
最后得到json文件,先暂时保存后面会用
2.4 创建Action
SAP Build的action group和上一步process中action group有些不太一样
action group中的action只针对SAP OP的BAPI做连接
SAP Build的action group则是专门和外部(SAP/非SAP)系统API做连接的
此处其实S4HC的API可以直接在左侧的SAP Business Accelerator Hub中直接选择Sales order的API,但如果外围系统有符合OpenAPI的Specification file,那么也可以通过右侧的upload api specification直接上传到action中
上传刚刚在API Hub中下载的json文件
2.5 选择待使用的API作为Action
此处使用Get的方式在S4HC中查询销售订单,通过筛选找到查询销售订单的API,其实这一步跟刚刚在SAP系统中找BAPI很类似了
SAP Build中叫action,action中还叫action,总感觉这里容易造成歧义
选择完action之后也和process中的bapi action类似,选择出入参数
入参使用filter过滤需要的订单
如SalesOrder eq ‘9000001’
出参自由选择所需参数
测试之前需要先激活CSRF token
测试时输入S4HC中的接口地址即可
即使我设置了destination也无法选中,所以最后选择的手工输入接口地址,参数和API Hub中tryout填写的基本一致
后续没法测试了,没有S4HC的环境
拿到S4HC的环境了,由于该环境没有销售订单,故切换成了物料主数据的接口,步骤和上述一致,已经成功拿到S4HC系统返回的物料主数据信息
测试通过之后,点击右上角release释放
release之后还需要publish到library
2.6 测试
在process中新增全局destination变量
在process中新增dependency,选择add an project dependency
找到销售订单的API,点击Add
添加完成后即可在活动处找到相应的API服务
参数和刚刚的test页面基本一致,但是只能通过destination访问S4HC的接口
这里也没办法继续测试下去了,没有S4HC的环境
拿到S4HC的环境了,测试的API切换成物料主数据的读取,步骤和之前的一样
填写先前创建的destination全局变量即可,top是筛选结果的,这里只获取一条数据
点击test执行测试,就可以在全局变量中选择在sap build中创建的destination
最后测试结果正常获取返回信息
2.7 参考文档
SAP Build 调用S4HC API,官方文档用的是表单举例,这里切换成process了
https://developers.sap.com/tutorials/spa-process-action-create.html
SAP Build destination配置
https://developers.sap.com/group.btp-spa-destinations.html
S4HC API配置
https://blog.youkuaiyun.com/weixin_45423347/article/details/107935638