加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

WebService创建发布调用整个流…

发布时间:2020-12-16 23:51:42 所属栏目:安全 来源:网络整理
导读:虽然有不少webservice的资料,但是按照上面的做还是有不少问题, 而且NetWeaver版本不一样,操作也不一样。 最近刚做了个webservice,顺便写个例子,以便以后参考吧。 1、首先创建了个可远程调用的FM 就是个加法 FUNCTION? zlm_ws_add . *"-----------------
虽然有不少webservice的资料,但是按照上面的做还是有不少问题,
而且NetWeaver版本不一样,操作也不一样。

最近刚做了个webservice,顺便写个例子,以便以后参考吧。

1、首先创建了个可远程调用的FM

WebService?<wbr>创建?<wbr>?<wbr>发布?<wbr>调用整个流程


就是个加法
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、激活后,创建后发布

WebService?<wbr>创建?<wbr>?<wbr>发布?<wbr>调用整个流程



然后根据向导一步步进行

WebService?<wbr>创建?<wbr>?<wbr>发布?<wbr>调用整个流程



WebService?<wbr>创建?<wbr>?<wbr>发布?<wbr>调用整个流程



WebService?<wbr>创建?<wbr>?<wbr>发布?<wbr>调用整个流程



WebService?<wbr>创建?<wbr>?<wbr>发布?<wbr>调用整个流程



WebService?<wbr>创建?<wbr>?<wbr>发布?<wbr>调用整个流程


然后可以看到一个激活的服务

WebService?<wbr>创建?<wbr>?<wbr>发布?<wbr>调用整个流程



3、进入SAO配置服务,按图点击或者使用tcode:soamanager

WebService?<wbr>创建?<wbr>?<wbr>发布?<wbr>调用整个流程



进入如下:


WebService?<wbr>创建?<wbr>?<wbr>发布?<wbr>调用整个流程


WebService?<wbr>创建?<wbr>?<wbr>发布?<wbr>调用整个流程



点编辑

WebService?<wbr>创建?<wbr>?<wbr>发布?<wbr>调用整个流程



WebService?<wbr>创建?<wbr>?<wbr>发布?<wbr>调用整个流程


可以填写用户名,密码,语言,不让每次调用得输入用户名密码
之后点击保存,显示已经激活

WebService?<wbr>创建?<wbr>?<wbr>发布?<wbr>调用整个流程



查看WSDL文件:

WebService?<wbr>创建?<wbr>?<wbr>发布?<wbr>调用整个流程



WebService?<wbr>创建?<wbr>?<wbr>发布?<wbr>调用整个流程



这个xml文档就是WSDL文件,这个网址,经过稍微修改就是需要的URL地址
如果仅仅是自己系统测试,不需要修改,如果是提交给外部需要如下操作:
1、把URL地址中公司域名改成真正的ip地址;
2、把URL中,ws_policy 改为 standard,standard才是真正被外部系统调用的
3、地址最后加上 ?WSDL ?

因为是本地测试, 我只加了最后的WSDL,结果如下
http://公司域名 :8000/sap/bc/srt/wsdl
/srvc_000C294FE4B61EE2A5D5749F EABB6954/wsdl11/allinone/ws_policy/document?sap-client=800?wsdl

这样,一个服务就建好了。

然后继续创建代理类
1、se80创建

WebService?<wbr>创建?<wbr>?<wbr>发布?<wbr>调用整个流程



然后按着向导一步步操作


WebService?<wbr>创建?<wbr>?<wbr>发布?<wbr>调用整个流程



WebService?<wbr>创建?<wbr>?<wbr>发布?<wbr>调用整个流程

WebService?<wbr>创建?<wbr>?<wbr>发布?<wbr>调用整个流程



WebService?<wbr>创建?<wbr>?<wbr>发布?<wbr>调用整个流程



因为我当时没保存账户密码,需要输入

WebService?<wbr>创建?<wbr>?<wbr>发布?<wbr>调用整个流程



然后看到一个新 的代理类

WebService?<wbr>创建?<wbr>?<wbr>发布?<wbr>调用整个流程

然后点击激活

WebService?<wbr>创建?<wbr>?<wbr>发布?<wbr>调用整个流程



2、进入soa继续配置代理类(tcode:soamanager)

WebService?<wbr>创建?<wbr>?<wbr>发布?<wbr>调用整个流程


选中代理后,点apply

WebService?<wbr>创建?<wbr>?<wbr>发布?<wbr>调用整个流程



创建端口,写上用户名和密码

WebService?<wbr>创建?<wbr>?<wbr>发布?<wbr>调用整个流程



WebService?<wbr>创建?<wbr>?<wbr>发布?<wbr>调用整个流程



WebService?<wbr>创建?<wbr>?<wbr>发布?<wbr>调用整个流程


点击保存

WebService?<wbr>创建?<wbr>?<wbr>发布?<wbr>调用整个流程


保存,激活后,代理类完成

此时应该注意可能此端口还没有创建,需要创建端口: tcode:LPCONFIG

WebService?<wbr>创建?<wbr>?<wbr>发布?<wbr>调用整个流程


然后点击保存并激活

此时,查看生成的服务和代理
se80:

WebService?<wbr>创建?<wbr>?<wbr>发布?<wbr>调用整个流程


?

WebService?<wbr>创建?<wbr>?<wbr>发布?<wbr>调用整个流程


WebService?<wbr>创建?<wbr>?<wbr>发布?<wbr>调用整个流程



WebService?<wbr>创建?<wbr>?<wbr>发布?<wbr>调用整个流程




最后,调用!
太累了,不想再写这个程序了
摘一段别的程序的调用,仅作参考
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 .

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读