SAP新版SOAMANAGER下WebService配置

  • 格式:pdf
  • 大小:1.98 MB
  • 文档页数:17

随着SAP组件版本升级,原来的WEBSERVICE配置方式也有了很大变化。配置WS的事务码
SOAMANAGER也进行了升级,页面风格变化很大,配置方式和之前也有区别。原来的老事务码LPCONFIG
已经无效了。
本文档所用组件版本如下图。本文档只提供了SAP与SAP之间的WS通信配置和调试。SAP和其他平
台比如JAVA通信,恕本人力有不逮,但原理是一样的。

版本:
1、建立被叫方,Called party
1.1 SE80部分。
调用已存在的函数实现。
函数代码后附。
FUNCTION ZFM_TEST02.
*"--------------------------------------------------------------------
*"*"本地接口:
*" IMPORTING
*" VALUE(I_TEST) TYPE CHAR1
*" EXPORTING
*" VALUE(E_MSG) TYPE TEXT100
*"--------------------------------------------------------------------
DATA:l_date LIKE sy-datum,
l_time LIKE sy-uzeit.
DATA:ls_test LIKE zttest01.
l_date = sy-datum.
l_time = sy-uzeit.
CONCATENATE l_date l_time INTO ls_test-zdatetime.
ls_test-test1 = i_test.
MODIFY zttest01 FROM ls_test.
COMMIT WORK AND WAIT.
IF sy-subrc = 0.
e_msg = '测试成功'.
ENDIF.
ENDFUNCTION.
用到的表ZTTEST01的字典。
继续刚才。
包和请求号,看自己情况。测试就Local好了。不要随意生成请求,给自己给别人都有可能造成困扰。
完成即可。这时会生成一个WSDL。类似这样:
http://bbbb.xxxx.com:8000/sap/bc/srt/wsdl/flv_10002P111AD1/sdef_url/ZWSTEST02_CD?sap-client=100
注意,此WSDL并非最终要提供给主叫方的WSDL。但也不是完全无用,复制URL到浏览器内,如果可以
顺利访问,则正常;如果报类似CAN NOT REACH OUT一类的错,可能是SICF里有东西没激活。运行事务
码SICF,按照该WSDL的路径,一层层查看,看到没激活的就激活。
此处简单解释一下:
一个WSDL由6部分组成,Types, Messages, PortType, Policy(optional), Binding, Service. 此处生成的WSDL
只有Types, Messages, PortType三部分。如果提供给主叫方,会无法解析而报错。

回到SE80,激活该SERCVICE。左导航里会看到多了东西。
1.2 SOAMANAGER部分
运行事务码SOAMANAGER。

搜索刚才在SE80里建立的SERVICE,ZWSTEST02_CD。

点击进来。
是空的。需要创建服务。名字随意,自己认识就行。在项目上请遵守命名规则。
验证方法选择无验证就好。否则调一次服务弹一次窗出来让你填这填那。红色区域填上登录SAP的用户和
密码。再继续下一步。

继续NEXT到最后。完成。会生成一个新的WSDL。点垃圾桶右边的图标可以看到它。如果还是报不能REACH
OUT一类的错误,再去SICF里按WSDL的路径激活。
比如这样一个WSDL:
http://bbbb.xxxx.com:8000/sap/bc/srt/wsdl/flv_10002A111AD1/bndg_url/sap/bc/srt/rfc/sap/zwstest02_cd/1
00/zwstest02_cd/zwstest02_cd?sap-client=100
此WSDL是最终提供给呼叫方的。要把URL记录下来。

2、建立呼叫方,Calling party
呼叫方,主叫方,发起方,调用方……whatever.
2.1 SE80部分。
找一台机器做呼叫方。实在找不到,自己呼自己也行。本文档用的是另外一套SAP系统做的呼叫方。
把刚才记录下来的WSDL的URL放进来。
刚才输的用户名和密码再输一次。就是建立被叫方时用的那个。

包这里选的本地。前缀随意填,自己能认识就行。CLG = Calling,以示区分。
完成即可。激活。左导航里可以看到。
2.2 SOAMANAGER部分
运行老事务码LPCONFIG:


英雄迟暮,果断抛弃。

运行SOAMANAGER,按如图条件搜索。这里我们可以看到SAP的优良传统:不用词典翻译就会死。Consumer
一定要翻译成消费者,不管什么语境。

点击ZCLG_CO_ZWSTEST02_CD。
也是空的。点创建。
选第一个。
端口名字随意,自己认识就行。在项目上请遵守命名规则。

WSDL的URL,用之前记录的那一个。用户名密码该填的填。

一路下一步。遇到必填的填一下。不必填的不管,除非你知道自己在填什么。下一步。
完成即可。完成后会返回如下页面。

默认是激活的。最右侧的电容图标可以用来测试,Ping一下被叫方看通不通。
Behold,通了。
3、建程序测试
3.1 示例代码。
注意在呼叫方建程序。各变量解释见下。

REPORT ztest_ws01.
DATA: lo_clientproxy TYPE REF TO zclg_co_zwstest02_cd, ""解释1
lo_sys_exception TYPE REF TO cx_ai_system_fault,
ls_input TYPE zclg_zfm_test02, ""解释2
ls_output TYPE zclg_zfm_test02response. ""解释3

PARAMETERS:p_input TYPE char1.
ls_input-itest = p_input.
CREATE OBJECT lo_clientproxy.
TRY.
CREATE OBJECT lo_clientproxy
EXPORTING
logical_port_name = 'ZPORT01'. ""解释4

CALL METHOD lo_clientproxy->zfm_test02 ""解释5
EXPORTING
input = ls_input
IMPORTING
output = ls_output.
WRITE: /1 ls_output-emsg. "输出结果
CATCH cx_ai_system_fault INTO lo_sys_exception.
WRITE: / lo_sys_exception->errortext.
ENDTRY.
3.2 变量解释
以下所有截图默认来自于主叫方系统。
解释1:

解释2:
解释1红色处双击

上图红色处再双击。ZFM_TEST02就是我们在被叫方建的函数的名称。
数据类型照抄即可。
解释3:
参考解释2。
解释4:
呼叫方的SOAMANAGER操作时建立的PORT。

解释5:
参考解释2。

3.3 运行测试

被叫方数据表:ZTTEST01,成功写入。