zoukankan      html  css  js  c++  java
  • 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_000C294FE4B61EE2A5D5749FEABB6954/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.
    DATAl_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.





    http://blog.sina.com.cn/sapliumeng
  • 相关阅读:
    python之九九乘法表
    python之生成随机密码
    selenium以及浏览器驱动下载安装
    Monkey命令
    Android SDK Manager仅有一个版本的问题
    截图工具无法使用解决方法
    jmeter服务器监控插件指标简单说明
    mysql字符集小结
    mysql创建新的用户及flush privileges解析
    MySql添加远程超级管理员用户
  • 原文地址:https://www.cnblogs.com/senlinmu110/p/3802271.html
Copyright © 2011-2022 走看看