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 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.2 创建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.3 选择待使用的API作为Action
此处使用Get的方式在S4HC中查询销售订单,通过筛选找到查询销售订单的API,其实这一步跟刚刚在SAP系统中找BAPI很类似了
SAP Build中叫action,action中还叫action,总感觉这里容易造成歧义
选择完action之后也和process中的bapi action类似,选择出入参数
入参使用filter过滤需要的订单
如SalesOrder eq ‘9000001’
出参自由选择所需参数
测试之前需要先激活CSRF token
测试时输入S4HC中的接口地址和token即可
但是实际上需要用S4HC的destination连接才可以访问,后续的流程中也只允许填写destination参数
后续没法测试了,没有S4HC的环境
点击release 发布,然后publish 到library
2.4 测试
在process中新增dependency,选择add an project dependency
找到销售订单的API,点击Add
添加完成后即可在活动处找到相应的API服务
参数和刚刚的test页面基本一致,但是只能通过destination访问S4HC的接口
这里也没办法继续测试下去了,没有S4HC的环境
2.5 参考文档
官方文档用的是表单举例,这里切换成process了
https://developers.sap.com/tutorials/spa-process-action-create.html