WebService 创建  发布 调用整个流…

虽然有不少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 .





  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值