抱歉,您的浏览器无法访问本站
本页面需要浏览器支持(启用)JavaScript
了解详情 >

之前记录了如何发布外部系统调用的Web Services,本篇再记录一下如何调用别人提供的WSDL URL接口。

Web Service 调用外部接口

一、创建Web Service

1.创建Web Service

1.创建Web Service

2.选择Services 类型

2.选择Servce 类型

上面选择项的翻译如下:

  • Data Type:数据类型
  • Message Type:Message 类型
  • Datatype Enhancement:数据类型增强
  • Fault Message:故障信息
  • Service Consumer:服务使用者
  • RFC Consumer:RFC使用者
  • Service Provider:服务提供者
  • Event Provider:事件提供者
  • Service Variant:服务变式
  • Consumer Mapping:使用者映射
  • Operation Mapping:业务映射
  • Processing Type Domain:处理类型域
  • **Integration Scenario Def.**:集成场景描述
  • Semantic Contract
  • Contract:合同
  • Contract Implementation:合同执行
  • Consumer Factory:使用者工厂
  • Service Group:服务组

3.服务提供类型

3.选择服务提供类型

选项意思如下:

  • Backend:后端
  • Enterprise Service Repository:企业服务存储库
  • **Existing ABAP Object(Inside Out)**:现有ABAP对象(由内而外)
  • External WSDL/Schema:外部WSDL/架构

4.WSDL/架构源

4.WSDL Or 架构源

各选项意思:

  • Local File:本地文件
  • URL:URL链接
  • HTTP Destination:HTTP 目的地
  • Service Registry:服务注册中心

5.填写URL

5.填写URL

此处填写的URL有个注意事项,如果填写的是内部的Web Service。则不可以直接将如下页签的链接放入。需要放入的是在SOAP中生成/发布的WSDL URL。

6.URL来源

SOAP中生成的WSDL URL。

27.补充内容

若填写的是外部的WSDL URL则需要在URL末尾添加 ?WSDL。如下图所示:

7.外部图片来源WSDL URL

上图图片信息来源:SAP调用外部webservice配置

6.填写用户名与密码

8.填写用户名与密码

将SAP GUI的账号填入即可。

7.选择Package与设置前缀

9.设置包与前缀

8.完成创建与激活

10.完成Web Service的创建

创建完成,接下来激活Web Service。

11.激活Web Service

生成的接口类如下:

12.生成的接口类信息

二、SOAMANAGER配置

1.查询Web Service

使用TCODE:SOAMANAGER进入下面的界面后点击Web 服务配置。

13.Web 服务配置

在对象名称栏搜索接口生成的Class名称(ABAP Name)ZFMI_CO_YFM_SERVICE_TEST。查找到Web Service。

14.查询Web Service接口

2.创建WSDL配置

15.创建WSDL配置

3.设置接口名称与描述

16.设置接口名称与描述

此处最好设置成与接口名称一致,方便后面进行查询和使用。

4.配置WSDL 信息

17.配置WSDL URL信息

5.选择绑定

18.选择绑定

6.接口安全配置

19.接口安全配置

7.HTTP配置

20.HTTP配置

此处需要变更XML。

8.SOAP 协议设置

21.SOAP协议设置

9.可识别业务信息

22.可识别业务信息

10.完成配置

23.完成配置 24.配置完成界面

三、程序代码测试

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
*&---------------------------------------------------------------------*
*& Report YCALL_WEBSERVICE_CYH
*&---------------------------------------------------------------------*
*& Module / Submodule: ABAP / New Train
*&---------------------------------------------------------------------*
*T_CODE : N/A *
*CREATER : KF543 *
*CREATE ON : 2023.06.25 *
*TYPE : Report *
*Description : Edit Alv *
************************************************************************
* Change History *
* -------- ---------- ------------- -----------------------------------*
* Version Date Change By Description *
* -------- ---------- ------------- -----------------------------------*
* N 2023.06.25 KF543 Creater *
************************************************************************
REPORT YCALL_WEBSERVICE_CYH.

*----------------------------------------------------------------------*
* START-OF-SELECTION
*----------------------------------------------------------------------*
START-OF-SELECTION.
DATA:
"创建好的接口的ABAP NAME
GO_CLIENTPROXY TYPE REF TO ZFMI_CO_YFM_SERVICE_TEST,
GO_SYSEXCEPTION TYPE REF TO CX_AI_SYSTEM_FAULT,
GO_APPEXCEPTION TYPE REF TO CX_AI_APPLICATION_FAULT,
GV_INDEX TYPE C,
"ZFMI_CO_YFM_SERVICE_TEST的输入参数
GS_INPUT TYPE ZFMI_YFM_SERVICE_TEST,
"ZFMI_CO_YFM_SERVICE_TEST的输出参数
GS_OUTPUT TYPE ZFMI_YFM_SERVICE_TESTRESPONSE.

*----------------------------------------------------------------------*
* END-OF-SELECTION
*----------------------------------------------------------------------*
END-OF-SELECTION.
TRY .
"Create Proxy Object
CREATE OBJECT GO_CLIENTPROXY
EXPORTING "TCODE:SOAMANAGER中创建的逻辑端口名
LOGICAL_PORT_NAME = 'ZFMI_CO_YFM_SERVICE_TEST'.

"Set Interface Value
CLEAr:GS_INPUT.
GS_INPUT-I_INPUTDATE = '20230625'.
GS_INPUT-I_MESGTXT = 'Text'.

CALL METHOD GO_CLIENTPROXY->YFM_SERVICE_TEST
EXPORTING
INPUT = GS_INPUT
IMPORTING
OUTPUT = GS_OUTPUT.

IF SY-SUBRC EQ 0.
WRITE: / GS_OUTPUT-E_OUTPUTDATE,
/ GS_OUTPUT-E_MESGTXT.
ENDIF.

CATCH CX_AI_SYSTEM_FAULT.
MESSAGE '出现异常!!!' TYPE 'E'.
GV_INDEX = '1'.
ENDTRY.

在编写完成之后,运行程序其实是遇到了一个问题导致Error了。现将问题记录在下面,以供后续参考。

在运行程序时报错:SSSLERR_PEER_CERT_EXPIRED (-101)

25.报错内容

解决方案如下,后续有时间和条件的话单独出一篇讲讲这个Error。

abap 调http请求报SSSLERR_PEER_CERT_UNTRUSTED (-102)

SSL handshake failed SSSLERR_PEER_CERT_EXPIRED - Connect from ECC to CPI trial account

四、外围系统接口调整

如果外围系统的接口发生了变化,例如对参数的结构进行了新增和删除,则此使需要我们重新对接口进行生成。

1.重新生成和激活

26.外围系统重新生成

2.重新设置接口属性

重新生成的接口会跳转到下图所示的步骤,重新按照上面的步骤进行创建即可。

4.WSDL Or 架构源

五、参考资料

SAP之WebService调用外部URLWSDL地址

SAP 调用外部系统webservice接口(SOAP-XML) SOAMANAGER

评论