版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
外部系统提供.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.