WebService——调用外部WEBSERVICE实例

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/weixin_41641081/article/details/99671700

外部系统提供.asmx文件:http://10.138.46.178:8092/MesGylx.asmx

一.解析WSDL
WSDL/URL(一般在.asmx后加?wsdl即为URL地址): http://10.138.46.178:8092/MesGylx.asmx?wsdl

SE80 在开发Package下创建企业服务(Enterprise Service)
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
继续-》完成-》激活

测试通讯:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
填完数据点击执行即可。

二.LPCONFIG 创建逻辑端口(新版本的系统已经弃用,使用SOAMANAGER做web服务配置)
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
查找soapAction
在这里插入图片描述
三.代码实例(涉及JSON 与 ABAP 转换)

" 调生管获取工艺路线
DATA: prxy TYPE REF TO ZPPMJ_CO_MES_GYLX_SOAP,
      ls_acc_input TYPE ZPPMJ_GET_MES_GYLX_SOAP_IN,
      ls_acc_output TYPE ZPPMJ_GET_MES_GYLX_SOAP_OUT,
      ls_acc_input1 TYPE ZPPMJ_HELLO_WORLD_SOAP_IN,
      ls_acc_output1 TYPE ZPPMJ_HELLO_WORLD_SOAP_OUT.

DATA: vs_ex TYPE REF TO cx_ai_system_fault.
DATA: fault TYPE REF TO cx_ai_application_fault,
      lv_err_msg TYPE string.

DATA: lo_json_des TYPE REF TO Zcl_trex_json_deserializer.
DATA: json_string TYPE string.

  " 测试端口是否连通
  TRY.
      CREATE OBJECT prxy
        EXPORTING
          logical_port_name = 'ZPPGETGYLX'.       "逻辑端口名称
    CATCH cx_ai_system_fault INTO vs_ex.
  ENDTRY.
  IF NOT vs_ex IS INITIAL.
    E_RETURN-FLAG = 'E'.
    E_RETURN-MESSAGE = '远程连接生管系统失败,请联系管理员!' .
    EXIT.
  ELSE.
    ls_acc_input-MOULD_ID  = IN_MOULD_ID."
    IF IN_FACTORY = '2000'.
      ls_acc_input-FACTORY  = '4'." 吸附2000对应4,家电3000对应3,钣金5000所对应5
    ELSEIF IN_FACTORY = '3000'.
      ls_acc_input-FACTORY  = '3'.
    ELSEIF IN_FACTORY = '5000'.
      ls_acc_input-FACTORY  = '5'.
    ENDIF.
    TRY.
        CREATE OBJECT prxy.
        CALL METHOD prxy->GET_MES_GYLX
          EXPORTING
            input  = ls_acc_input
          IMPORTING
            output = ls_acc_output.
        COMMIT WORK.
      CATCH cx_ai_system_fault INTO vs_ex.
        CALL METHOD vs_ex->get_text
          RECEIVING
            result = lv_err_msg.
        CREATE OBJECT fault.
      CATCH cx_ai_application_fault INTO fault.

    ENDTRY.
    IF lv_err_msg IS NOT INITIAL .
      E_RETURN-FLAG = 'E'.
      E_RETURN-MESSAGE = lv_err_msg.
      EXIT.
    ELSE.
      " 去掉  ls_acc_output-GET_MES_GYLX_RESULT KEY 引号
      REPLACE ALL OCCURRENCES OF '"ZAUFNR"' IN ls_acc_output-GET_MES_GYLX_RESULT WITH 'ZAUFNR'.
      REPLACE ALL OCCURRENCES OF '"ARBPL"'  IN ls_acc_output-GET_MES_GYLX_RESULT WITH 'ARBPL'.
      REPLACE ALL OCCURRENCES OF '"ZXPBZ"'  IN ls_acc_output-GET_MES_GYLX_RESULT WITH 'ZXPBZ'.
      REPLACE ALL OCCURRENCES OF '"VGW01"'  IN ls_acc_output-GET_MES_GYLX_RESULT WITH 'VGW01'.

      CREATE OBJECT lo_json_des.
      CALL METHOD lo_json_des->deserialize
        EXPORTING
          json = ls_acc_output-GET_MES_GYLX_RESULT
        IMPORTING
          abap = GT_GYLX[].
    ENDIF.

猜你喜欢

转载自blog.csdn.net/weixin_41641081/article/details/99671700
今日推荐