跳到内容
技术文章
作者简介照片:An万博新体育手机客户端slem Arnolda

从云中的ABAP使用本地HTTP服务(场景:SOAP服务)

由于ABAP环境在SAP业务技术平台(BT新万博苹果版P)上的使用尚未在全球范围内得到广泛应用,目前可供参考的ABAP资源非常少。因此,寻找资源来实现云中的ABAP上的新万博苹果版某些功能和特性对许多开发人员来说是一个挑战。

本博客将带您了解如何通过云中的ABAP设置消费托管在本地SAP系统上的外部HTTP服务的过程,其中将消费托管在S/4 HANA本地系统上的标准SOAP服务。

在我们开始之前,有许多SAP客户仍在使用很久以前实现的内部部署SAP安装。要将现有的业务逻辑导入到基于云的SAP解决方案中,您需要在云环境中按照以下两种方法之一建立连接:RFC目的地或HTTP目的地。必须正确指定这些目的地,以便在基于云的SAP系统和内部部署的SAP系统之间进行通信。

作为先决条件,您必须使用SAP Connectivity服务的云连接器建立到本地系统的连接。云连接器提供安全通信,只需要从内部部署环境到SAP BTP的出站连接。

因此,对于这个练习,我们需要,

  1. 在BTP云平台上搭建ABAP环境。
  2. 为您的SAP BTP子帐户和S/4 HANA本地系统配置SAP云连接器。
  3. 使用HTTP服务在云中使用来自ABAP的本地SOAP服务。

1.在BTP云平台上搭建ABAP环境

为此,请访问我以前的博客云环境中ABAP的初始配置

2.为您的SAP BTP子帐户和S/4 HANA本地系统配置SAP云连接器

  • 首先转到您的BTP试用帐户并复制子帐户下的ID。

  • 打开云连接器,转到-> Clout to On-Premise -> Add Mapping Virtual to Internal System。

  • 选择“后端类型-> ABAP系统”

  • 协议-> HTTP

  • 输入主机信息

  • 将Principal类型设置为none

  • 请求标头为“用户虚拟主机”

  • 继续,直到你到达以下位置,点击“检查按钮”并继续。

  • 连接成功后,将出现如下消息

3.使用HTTP服务从云中的ABAP消费本地SOAP服务

先决条件:在本地S/4 HANA系统上通过事务SOAMANAGER配置和公开的web服务。

对于本文,我在S/4 on - premise系统上使用了标准的QUERYBUSINESSUSERIN服务配置。

  • 进入SOAMANGER -> Web服务配置->搜索服务QUERYBUSINESSUSERIN。
  • 选择Open Binding WSDL Generation。

  • 复制WSDL URL并将其粘贴到浏览器上。
  • 从浏览器中复制WSDL内容并保存到.txt文件中。
  • 进入ADT ->包->其他->服务消费模型。

  • 将服务消费模式设置为“Web服务”。
  • 选择下载的.txt文件并给出一个前缀。

  • 创建完成后,您将看到属性和元数据以及可以在开发项目中重用的代码示例。

  • 您还将看到生成了两个助手类,它们是可用于使用服务的代理类。
  • 创建一个类来使用SOAP服务并实现上面给出的示例代码。
类zcl_consume_onprem_soap定义公共最终创建公共。公共部分。if_oo_adt_classrun接口。受保护的部分。私人部分。ENDCLASS。CLASS zcl_consume_onprem_soap实现。if_oo_adt_classrun ~主要方法。试一试。DATA(destination) = cl_soap_destination_provider=>create_by_cloud_destination(i_name = 'S4_HTTP_DESTINATION' i_service_instance_name = '00')。 DATA(proxy) = NEW zsoap_co_query_business_user_i( destination = destination ). DATA(request) = VALUE zsoap_business_user_simple_by( ). proxy->query_business_user_in( EXPORTING input = request IMPORTING output = DATA(response) ). "handle response CATCH cx_soap_destination_error INTO DATA(lo_sde). out->write( lo_sde->get_text( ) ). CATCH cx_ai_system_fault INTO DATA(lo_sf). out->write( lo_sf->get_text( ) ). CATCH zsoap_cx_standard_message_faul INTO DATA(lo_smf). out->write( lo_smf->get_text( ) ). ENDTRY. ENDMETHOD. ENDCLASS.

您的本地SOAP服务现在可以使用了。您可以使用在服务消费模型中生成的样例代码来简单地测试此服务。

结论

正如您在上面看到的,在配置数量非常有限的情况下,我们可以通过SAP BTP上的ABAP环境轻松地使用托管在本地系统上的HTTP服务,无论是SOAP、ODATA还是任何其他适当的服务。类似地,我们也可以通过云连接器创建RFC目的地,并使用在S/4 HANA On-Premise系统中创建的RFC。

需要记住的一件事是,我们不能在试用BTP帐户上进行测试,因为这些服务仅限于合作伙伴/消费者许可帐户。

指定的标签

      3评论
      你一定是登录评论:评论或回复帖子
      作者简介照片Bar万博新体育手机客户端in DESAI
      Barin德赛

      简单明了。使用cloud connect onprem和构建应用程序或服务,你喜欢。

      同时运行云和内部部署的传统客户的BTP利用率。

      好了。

      作者简介照片:An万博新体育手机客户端slem Arnolda
      Anslem Arnolda
      博客作者

      谢谢你!Barin德赛

      作者简介照片Ors万博新体育手机客户端olya Mihaly
      Orsolya Mihaly

      Anslem Arnolda,

      谢谢你的详细帖子。

      你能指定i_name和i_service_instance_name是什么吗?

      谢谢你!