WebService 创建 发布 调用整个流…
2014-01-22 09:18
429 查看
虽然有不少webservice的资料,但是按照上面的做还是有不少问题,
而且NetWeaver版本不一样,操作也不一样。
最近刚做了个webservice,顺便写个例子,以便以后参考吧。
1、首先创建了个可远程调用的FM
创建 发布 调用整个流程" TITLE="WebService 创建 发布 调用整个流程" />
就是个加法
FUNCTION zlm_ws_add.
*"----------------------------------------------------------------------
*"*"Local Interface:
*" IMPORTING
*" VALUE(I_A) TYPE INT4 OPTIONAL
*" VALUE(I_B) TYPE INT4 OPTIONAL
*" EXPORTING
*" VALUE(E_RESULT) TYPE INT4
*"----------------------------------------------------------------------
e_result = i_a + i_b.
ENDFUNCTION.
2、激活后,创建后发布
创建 发布 调用整个流程" TITLE="WebService 创建 发布 调用整个流程" />
然后根据向导一步步进行
创建 发布 调用整个流程" TITLE="WebService 创建 发布 调用整个流程" />
创建 发布 调用整个流程" TITLE="WebService 创建 发布 调用整个流程" />
创建 发布 调用整个流程" TITLE="WebService 创建 发布 调用整个流程" />
创建 发布 调用整个流程" TITLE="WebService 创建 发布 调用整个流程" />
创建 发布 调用整个流程" TITLE="WebService 创建 发布 调用整个流程" />
然后可以看到一个激活的服务
创建 发布 调用整个流程" TITLE="WebService 创建 发布 调用整个流程" />
3、进入SAO配置服务,按图点击或者使用tcode:soamanager
创建 发布 调用整个流程" TITLE="WebService 创建 发布 调用整个流程" />
进入如下:
创建 发布 调用整个流程" TITLE="WebService 创建 发布 调用整个流程" />
创建 发布 调用整个流程" TITLE="WebService 创建 发布 调用整个流程" />
点编辑
创建 发布 调用整个流程" TITLE="WebService 创建 发布 调用整个流程" />
创建 发布 调用整个流程" TITLE="WebService 创建 发布 调用整个流程" />
可以填写用户名,密码,语言,不让每次调用得输入用户名密码
之后点击保存,显示已经激活
创建 发布 调用整个流程" TITLE="WebService 创建 发布 调用整个流程" />
查看WSDL文件:
创建 发布 调用整个流程" TITLE="WebService 创建 发布 调用整个流程" />
创建 发布 调用整个流程" TITLE="WebService 创建 发布 调用整个流程" />
这个xml文档就是WSDL文件,这个网址,经过稍微修改就是需要的URL地址
如果仅仅是自己系统测试,不需要修改,如果是提交给外部需要如下操作:
1、把URL地址中公司域名改成真正的ip地址;
2、把URL中,ws_policy 改为 standard,standard才是真正被外部系统调用的
3、地址最后加上 ?WSDL
因为是本地测试, 我只加了最后的WSDL,结果如下 http://公司域名:8000/sap/bc/srt/wsdl
/srvc_000C294FE4B61EE2A5D5749FEABB6954/wsdl11/allinone/ws_policy/document?sap-client=800?wsdl
这样,一个服务就建好了。
然后继续创建代理类
1、se80创建
创建 发布 调用整个流程" TITLE="WebService 创建 发布 调用整个流程" />
然后按着向导一步步操作
创建 发布 调用整个流程" TITLE="WebService 创建 发布 调用整个流程" />
创建 发布 调用整个流程" TITLE="WebService 创建 发布 调用整个流程" />
创建 发布 调用整个流程" TITLE="WebService 创建 发布 调用整个流程" />
创建 发布 调用整个流程" TITLE="WebService 创建 发布 调用整个流程" />
因为我当时没保存账户密码,需要输入
创建 发布 调用整个流程" TITLE="WebService 创建 发布 调用整个流程" />
然后看到一个新的代理类
创建 发布 调用整个流程" TITLE="WebService 创建 发布 调用整个流程" />
然后点击激活
创建 发布 调用整个流程" TITLE="WebService 创建 发布 调用整个流程" />
2、进入soa继续配置代理类(tcode:soamanager)
创建 发布 调用整个流程" TITLE="WebService 创建 发布 调用整个流程" />
选中代理后,点apply
创建 发布 调用整个流程" TITLE="WebService 创建 发布 调用整个流程" />
创建端口,写上用户名和密码
创建 发布 调用整个流程" TITLE="WebService 创建 发布 调用整个流程" />
创建 发布 调用整个流程" TITLE="WebService 创建 发布 调用整个流程" />
创建 发布 调用整个流程" TITLE="WebService 创建 发布 调用整个流程" />
点击保存
创建 发布 调用整个流程" TITLE="WebService 创建 发布 调用整个流程" />
保存,激活后,代理类完成
此时应该注意可能此端口还没有创建,需要创建端口: tcode:LPCONFIG
创建 发布 调用整个流程" TITLE="WebService 创建 发布 调用整个流程" />
然后点击保存并激活
此时,查看生成的服务和代理
se80:
创建 发布 调用整个流程" TITLE="WebService 创建 发布 调用整个流程" />
创建 发布 调用整个流程" TITLE="WebService 创建 发布 调用整个流程" />
创建 发布 调用整个流程" TITLE="WebService 创建 发布 调用整个流程" />
创建 发布 调用整个流程" TITLE="WebService 创建 发布 调用整个流程" />
最后,调用!
太累了,不想再写这个程序了
摘一段别的程序的调用,仅作参考
:
REPORT zlm_ws_001.
"定义代理类
DATA:
lc_proxy TYPE REF TO zlm_prefix_test1co_zlm_ws_test.
"定义输入输出
DATA:
input TYPE zlm_prefix_test1zrfc_test01,
output TYPE zlm_prefix_test1zrfc_test01res.
"定义异常类
DATA:
lc_sys_exception TYPE REF TO cx_ai_system_fault,
lc_application_exception TYPE REF TO cx_ai_application_fault.
"定义错误捕获消息
DATA:
l_msg TYPE REF TO cx_ai_system_fault.
DATA: l_string TYPE string.
DATA:
l_it_data TYPE ZLM_PREFIX_TEST1ZLM_BD1_TAB,
l_wa_data LIKE LINE OF l_it_data.
START-OF-SELECTION.
*"参数赋值
l_wa_data-id = 3.
l_wa_data-name = 'LM'.
l_wa_data-age = 22.
l_wa_data-ADDTION1 = 'TEST'.
APPEND l_wa_data to l_it_data.
input-IT_DATA-ITEM = l_it_data.
"创建对象
TRY .
CREATE OBJECT lc_proxy.
CATCH cx_ai_system_fault INTO lc_sys_exception.
MESSAGE '创建实例出错!' TYPE 'I'.
EXIT.
ENDTRY.
"调用代理类
TRY .
CALL METHOD lc_proxy->zrfc_test01
EXPORTING
input = input
IMPORTING
output = output.
CATCH cx_ai_system_fault INTO l_msg.
l_string = l_msg->if_message~get_text( ).
WRITE l_string.
EXIT.
CATCH cx_ai_application_fault .
MESSAGE '应用调用错误!' TYPE 'I'.
EXIT.
ENDTRY.
而且NetWeaver版本不一样,操作也不一样。
最近刚做了个webservice,顺便写个例子,以便以后参考吧。
1、首先创建了个可远程调用的FM
创建 发布 调用整个流程" TITLE="WebService 创建 发布 调用整个流程" />
就是个加法
FUNCTION zlm_ws_add.
*"----------------------------------------------------------------------
*"*"Local Interface:
*" IMPORTING
*" VALUE(I_A) TYPE INT4 OPTIONAL
*" VALUE(I_B) TYPE INT4 OPTIONAL
*" EXPORTING
*" VALUE(E_RESULT) TYPE INT4
*"----------------------------------------------------------------------
e_result = i_a + i_b.
ENDFUNCTION.
2、激活后,创建后发布
创建 发布 调用整个流程" TITLE="WebService 创建 发布 调用整个流程" />
然后根据向导一步步进行
创建 发布 调用整个流程" TITLE="WebService 创建 发布 调用整个流程" />
创建 发布 调用整个流程" TITLE="WebService 创建 发布 调用整个流程" />
创建 发布 调用整个流程" TITLE="WebService 创建 发布 调用整个流程" />
创建 发布 调用整个流程" TITLE="WebService 创建 发布 调用整个流程" />
创建 发布 调用整个流程" TITLE="WebService 创建 发布 调用整个流程" />
然后可以看到一个激活的服务
创建 发布 调用整个流程" TITLE="WebService 创建 发布 调用整个流程" />
3、进入SAO配置服务,按图点击或者使用tcode:soamanager
创建 发布 调用整个流程" TITLE="WebService 创建 发布 调用整个流程" />
进入如下:
创建 发布 调用整个流程" TITLE="WebService 创建 发布 调用整个流程" />
创建 发布 调用整个流程" TITLE="WebService 创建 发布 调用整个流程" />
点编辑
创建 发布 调用整个流程" TITLE="WebService 创建 发布 调用整个流程" />
创建 发布 调用整个流程" TITLE="WebService 创建 发布 调用整个流程" />
可以填写用户名,密码,语言,不让每次调用得输入用户名密码
之后点击保存,显示已经激活
创建 发布 调用整个流程" TITLE="WebService 创建 发布 调用整个流程" />
查看WSDL文件:
创建 发布 调用整个流程" TITLE="WebService 创建 发布 调用整个流程" />
创建 发布 调用整个流程" TITLE="WebService 创建 发布 调用整个流程" />
这个xml文档就是WSDL文件,这个网址,经过稍微修改就是需要的URL地址
如果仅仅是自己系统测试,不需要修改,如果是提交给外部需要如下操作:
1、把URL地址中公司域名改成真正的ip地址;
2、把URL中,ws_policy 改为 standard,standard才是真正被外部系统调用的
3、地址最后加上 ?WSDL
因为是本地测试, 我只加了最后的WSDL,结果如下 http://公司域名:8000/sap/bc/srt/wsdl
/srvc_000C294FE4B61EE2A5D5749FEABB6954/wsdl11/allinone/ws_policy/document?sap-client=800?wsdl
这样,一个服务就建好了。
然后继续创建代理类
1、se80创建
创建 发布 调用整个流程" TITLE="WebService 创建 发布 调用整个流程" />
然后按着向导一步步操作
创建 发布 调用整个流程" TITLE="WebService 创建 发布 调用整个流程" />
创建 发布 调用整个流程" TITLE="WebService 创建 发布 调用整个流程" />
创建 发布 调用整个流程" TITLE="WebService 创建 发布 调用整个流程" />
创建 发布 调用整个流程" TITLE="WebService 创建 发布 调用整个流程" />
因为我当时没保存账户密码,需要输入
创建 发布 调用整个流程" TITLE="WebService 创建 发布 调用整个流程" />
然后看到一个新的代理类
创建 发布 调用整个流程" TITLE="WebService 创建 发布 调用整个流程" />
然后点击激活
创建 发布 调用整个流程" TITLE="WebService 创建 发布 调用整个流程" />
2、进入soa继续配置代理类(tcode:soamanager)
创建 发布 调用整个流程" TITLE="WebService 创建 发布 调用整个流程" />
选中代理后,点apply
创建 发布 调用整个流程" TITLE="WebService 创建 发布 调用整个流程" />
创建端口,写上用户名和密码
创建 发布 调用整个流程" TITLE="WebService 创建 发布 调用整个流程" />
创建 发布 调用整个流程" TITLE="WebService 创建 发布 调用整个流程" />
创建 发布 调用整个流程" TITLE="WebService 创建 发布 调用整个流程" />
点击保存
创建 发布 调用整个流程" TITLE="WebService 创建 发布 调用整个流程" />
保存,激活后,代理类完成
此时应该注意可能此端口还没有创建,需要创建端口: tcode:LPCONFIG
创建 发布 调用整个流程" TITLE="WebService 创建 发布 调用整个流程" />
然后点击保存并激活
此时,查看生成的服务和代理
se80:
创建 发布 调用整个流程" TITLE="WebService 创建 发布 调用整个流程" />
创建 发布 调用整个流程" TITLE="WebService 创建 发布 调用整个流程" />
创建 发布 调用整个流程" TITLE="WebService 创建 发布 调用整个流程" />
创建 发布 调用整个流程" TITLE="WebService 创建 发布 调用整个流程" />
最后,调用!
太累了,不想再写这个程序了
摘一段别的程序的调用,仅作参考
:
REPORT zlm_ws_001.
"定义代理类
DATA:
lc_proxy TYPE REF TO zlm_prefix_test1co_zlm_ws_test.
"定义输入输出
DATA:
input TYPE zlm_prefix_test1zrfc_test01,
output TYPE zlm_prefix_test1zrfc_test01res.
"定义异常类
DATA:
lc_sys_exception TYPE REF TO cx_ai_system_fault,
lc_application_exception TYPE REF TO cx_ai_application_fault.
"定义错误捕获消息
DATA:
l_msg TYPE REF TO cx_ai_system_fault.
DATA: l_string TYPE string.
DATA:
l_it_data TYPE ZLM_PREFIX_TEST1ZLM_BD1_TAB,
l_wa_data LIKE LINE OF l_it_data.
START-OF-SELECTION.
*"参数赋值
l_wa_data-id = 3.
l_wa_data-name = 'LM'.
l_wa_data-age = 22.
l_wa_data-ADDTION1 = 'TEST'.
APPEND l_wa_data to l_it_data.
input-IT_DATA-ITEM = l_it_data.
"创建对象
TRY .
CREATE OBJECT lc_proxy.
CATCH cx_ai_system_fault INTO lc_sys_exception.
MESSAGE '创建实例出错!' TYPE 'I'.
EXIT.
ENDTRY.
"调用代理类
TRY .
CALL METHOD lc_proxy->zrfc_test01
EXPORTING
input = input
IMPORTING
output = output.
CATCH cx_ai_system_fault INTO l_msg.
l_string = l_msg->if_message~get_text( ).
WRITE l_string.
EXIT.
CATCH cx_ai_application_fault .
MESSAGE '应用调用错误!' TYPE 'I'.
EXIT.
ENDTRY.
相关文章推荐
- WebService 创建 发布 调用整个流…
- 如何用C++调用远程Web Service
- C# WebService创建、发布、调用的实例讲解
- C# WebService创建、发布、调用的简单例子
- Delphi调用Magento's Webservice
- C# webservice 编写、发布、调用
- C# webservice 编写、发布、调用
- C# webservice 编写、发布、调用
- ServiceStack Web Service 创建与调用简单示列
- Web服务的创建,发布以及客户端的调用
- 如何创建和发布.asmx Web Service
- C# WebService发布 未能创建类型 问题
- xfire webservice 传输数据流
- SAP&Java WebService(三) ----JAVA调用SAP生成的WebService
- 软轻量级 Web 开发平台 WebMatrix 发布
- Android webView中调用JavaS…
- C# WebService 概念,创建及引用调用
- WebService基础教程之一(概念,如何发布和调用一个简单的WebService)
- gSoap开发webservice client
- Delphi WebService 的编写、调试、发布(IIS)、调用