技术文章
从云中的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的出站连接。
因此,对于这个练习,我们需要,
- 在BTP云平台上搭建ABAP环境。
- 为您的SAP BTP子帐户和S/4 HANA本地系统配置SAP云连接器。
- 使用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帐户上进行测试,因为这些服务仅限于合作伙伴/消费者许可帐户。
简单明了。使用cloud connect onprem和构建应用程序或服务,你喜欢。
同时运行云和内部部署的传统客户的BTP利用率。
好了。
谢谢你!Barin德赛!
嗨Anslem Arnolda,
谢谢你的详细帖子。
你能指定i_name和i_service_instance_name是什么吗?
谢谢你!