从本地系统上的ABAP触发SCP工作流实例

2020-09-14 13:42发布

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


嗨,

我已经在追踪帐户中建立了一个示例SCP工作流程。 我想从在本地S4系统中运行的ABAP程序触发该工作流程。 我在SAP API滚刀中浏览了工作流API,并在那里获取了与ABAP有关的代码段。 我想首先测试获取xCSRF令牌的代码,因为这是触发工作流的第一步。 我的最终代码如下所示

数据:lo_http_client类型参考if_http_client。
 DATA:响应TYPE字符串。
 "通过URL创建HTTP客户端
 " API沙箱的API端点
 呼叫方法cl_http_client => create_by_url
  出口
  url ='https://bpmworkflowruntimewfs-p1942918606trial.hanatrial.ondemand.com/workflow-service/rest/v1/xsrf-token'
  输入
  客户端= lo_http_client
  例外情况
  arguments_not_found = 1
  plugin_not_active = 2
  internal_error = 3
  其他= 4。
 如果sy-subrc <> 0。
  "错误处理
 万一。
 "设置请求方法
 lo_http_client-> request-> set_method('GET')。
 "添加标题
 lo_http_client-> request-> set_header_field(name ='X-CSRF-Token'value ='Fetch')。
 lo_http_client-> request-> set_header_field(name ='Content-Type'value ='application/json')。
 lo_http_client-> request-> set_header_field(name ='Accept'value ='application/json')。
 lo_http_client-> request-> set_header_field(name ='Authorization'value ='Basic UDE5NDI5MTg2MDY6U2Fua2FyQGhhbmE =')。

 呼叫方法lo_http_client->发送
  例外情况
  http_communication_failure = 1
  http_invalid_state = 2
  http_processing_failed = 3
  http_invalid_timeout = 4
  其他= 5。
 如果sy-subrc = 0。
  调用方法lo_http_client-> receive
  例外情况
  http_communication_failure = 1
  http_invalid_state = 2
  http_processing_failed = 3
  其他= 5。
 万一。
 如果sy-subrc <> 0。
  "错误处理
 万一。
 响应= lo_http_client->响应-> get_cdata()。
 WRITE:"响应:",响应。

代码返回sy-subrc 1,我们在其中调用http客户端的接收方法。 在响应中,我可以看到以下错误

 500 SSL对等证书不受信任
 与bpmworkflowruntimewfs-p1942918606trial.hanatrial.ondemand.com的SSL握手:443失败:SSSLERR_PEER_CERT_UNTRUSTED(-102)
 对等方的X.509证书(链)不受信任
 SapSSLSessionStartNB()== SSSLERR_PEER_CERT_UNTRUSTED 

在可以从ABAP调用API之前,是否需要执行任何BASIS活动(如安装已认证的活动等)?

我在STRUST中安装了证书,然后重新启动了SMICM。 现在我遇到错误了

  404连接被拒绝 

连接到 bpmworkflowruntimewfs-p1942918606trial.hanatrial.ondemand.com :80失败:NIECONN_REFUSED(- 10)

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


嗨,

我已经在追踪帐户中建立了一个示例SCP工作流程。 我想从在本地S4系统中运行的ABAP程序触发该工作流程。 我在SAP API滚刀中浏览了工作流API,并在那里获取了与ABAP有关的代码段。 我想首先测试获取xCSRF令牌的代码,因为这是触发工作流的第一步。 我的最终代码如下所示

数据:lo_http_client类型参考if_http_client。
 DATA:响应TYPE字符串。
 "通过URL创建HTTP客户端
 " API沙箱的API端点
 呼叫方法cl_http_client => create_by_url
  出口
  url ='https://bpmworkflowruntimewfs-p1942918606trial.hanatrial.ondemand.com/workflow-service/rest/v1/xsrf-token'
  输入
  客户端= lo_http_client
  例外情况
  arguments_not_found = 1
  plugin_not_active = 2
  internal_error = 3
  其他= 4。
 如果sy-subrc <> 0。
  "错误处理
 万一。
 "设置请求方法
 lo_http_client-> request-> set_method('GET')。
 "添加标题
 lo_http_client-> request-> set_header_field(name ='X-CSRF-Token'value ='Fetch')。
 lo_http_client-> request-> set_header_field(name ='Content-Type'value ='application/json')。
 lo_http_client-> request-> set_header_field(name ='Accept'value ='application/json')。
 lo_http_client-> request-> set_header_field(name ='Authorization'value ='Basic UDE5NDI5MTg2MDY6U2Fua2FyQGhhbmE =')。

 呼叫方法lo_http_client->发送
  例外情况
  http_communication_failure = 1
  http_invalid_state = 2
  http_processing_failed = 3
  http_invalid_timeout = 4
  其他= 5。
 如果sy-subrc = 0。
  调用方法lo_http_client-> receive
  例外情况
  http_communication_failure = 1
  http_invalid_state = 2
  http_processing_failed = 3
  其他= 5。
 万一。
 如果sy-subrc <> 0。
  "错误处理
 万一。
 响应= lo_http_client->响应-> get_cdata()。
 WRITE:"响应:",响应。

代码返回sy-subrc 1,我们在其中调用http客户端的接收方法。 在响应中,我可以看到以下错误

 500 SSL对等证书不受信任
 与bpmworkflowruntimewfs-p1942918606trial.hanatrial.ondemand.com的SSL握手:443失败:SSSLERR_PEER_CERT_UNTRUSTED(-102)
 对等方的X.509证书(链)不受信任
 SapSSLSessionStartNB()== SSSLERR_PEER_CERT_UNTRUSTED 

在可以从ABAP调用API之前,是否需要执行任何BASIS活动(如安装已认证的活动等)?

我在STRUST中安装了证书,然后重新启动了SMICM。 现在我遇到错误了

  404连接被拒绝 

连接到 bpmworkflowruntimewfs-p1942918606trial.hanatrial.ondemand.com :80失败:NIECONN_REFUSED(- 10)
付费偷看设置
发送
2条回答
黑丝骑士
1楼 · 2020-09-14 14:48.采纳回答

您好Sankara,

您需要导入为 hanatrial.ondemand.com 签署了证书的CA。 您的ABAP实例未执行服务器期望的SSL握手-因此您被拒绝连接。

您需要先将CA添加到ABAP的数据库遵循此过程

CN = DigiCert SHA2安全服务器CA O = DigiCert Inc C =美国

CN = DigiCert全球根CA OU = www.digicert.com O = DigiCert Inc C =美国

一旦数据库中具有上述证书,就可以将以下通配符证书导入到匿名客户端PSE中,并将其添加到访问控制列表中。

CN = *。 hanatrial.ondemand.com OU = SAP Cloud Managed Services O = SAP SE L = Walldorf C = DE

检查注释510007 以获得更多详细信息。

致谢,
伊万

小c菟菟
2楼-- · 2020-09-14 14:26

打开驾驶舱,然后单击浏览器上的锁定图标。 如果在Windows上,则应该可以保存证书。 如果您使用的是Linux,则可以使用openssl,如下所示:

 openssl s_client -connect account.hanatrial.ondemand.com:443 -showcerts 

列出了链中的每个证书。 索引为0(零)的是通配符证书,应将其添加到ACL中。 索引1和2是中间证书和根证书(应该在数据库中导入的证书)

最好的问候,
伊万

一周热门 更多>