• webservice in abap

    2007-11-05

    一、生成webservice
    1、向导创建:SE37, Utilities -> More Utilities -> Create Web Service -> From the Funtion Module
    2、或者: SE80, 在Package的右键菜单中选择:Create -> Enterprise Service / Web Service -> Web Service
    3、详细配置:SE80
    4、运行环境配置:WSCONFIG
    5、Web Servie Administration for SOAP Runtime: WSADMIN, 在这里可以做webservice的测试,查看WSDL

    二、调用webservice
    1、创建RFC连接: SM50, 类型为HTTP Connection to External Serv,可以设置登录用户和口令
    2、创建Logical Port: LPCONFIG, 其中HTTP Destination 选择上一步创建的RFC连接,Path Prefix选择WSDL路径中的后半部分,保存后Active
    3、修改调用程序使用的Package, 增加两个Use Access, SAI_TOOLS和SAPPINT, Error Severity都选择No Response
    4、生成代理对象: SE80,在Enterprise Services节点的右键菜单中选择: Create -> Proxy Object, WSDL Soruce选择URL / HTTP Destination, 输入WSDL的地址就可以了
    5、写调用代码,生成一个代理对象的实例,再调用它的方法就可以了,下面是一个简单的例子:

    REPORT  z_ws_call_test.

    DATA: proxy TYPE REF TO zco_z_get_org,
          org_in TYPE zzget_org,
          org_out TYPE zzget_org_response,
          error type REF TO cx_ai_system_fault.

    org_in-orgname = 'SORG.1000'.

    TRY.
        CREATE OBJECT proxy
    *  EXPORTING
    *    LOGICAL_PORT_NAME  =
            .
    *TRY.
        CALL METHOD proxy->zget_org
          EXPORTING
            input  = org_in
          IMPORTING
            output = org_out.
    * CATCH CX_AI_SYSTEM_FAULT .
    * CATCH CX_AI_APPLICATION_FAULT .
    *ENDTRY.

    CATCH cx_ai_system_fault INTO error.
        WRITE /1 error->ERRORTEXT.
    ENDTRY.

    WRITE: AT /1 org_in-orgname,
              /1 org_out-orgcode.