采购订单同步SRM接口

采购订单同步SRM接口 FUNCTION zrfc_mm_039. *---------------------------------------------------------------------- **本地接口 * TABLES * IT_INPUT STRUCTURE ZMMS0006 * ET_RETURN STRUCTURE ZMMS0006_OUTPUT *---------------------------------------------------------------------- TYPES: BEGIN OF ty_data, oano TYPE string, oaid TYPE string, banfn TYPE string, bsart TYPE string, bnfpo TYPE string, pstyp TYPE string, ekgrp TYPE string, ernam TYPE string, matnr TYPE string, txz01 TYPE string, werks TYPE string, lgort TYPE string, badat TYPE string, menge TYPE string, meins TYPE string, lfdat TYPE string, message TYPE string, *20260409新增 zjhdh TYPE string, zsylx TYPE string, END OF ty_data. DATA: ls_data TYPE ty_data, lt_data TYPE TABLE OF ty_data. 编辑接收数据 TYPES: BEGIN OF ty_receivedata, status TYPE string, code TYPE string, message TYPE string, data LIKE lt_data, rows TYPE string, END OF ty_receivedata. DATA: ls_recdata TYPE ty_receivedata. DATA: es_return TYPE zmms0006_output. DATA: lv_len TYPE i, 发送报文长度 lv_url TYPE string, 接口地址 lo_http_client TYPE REF TO if_http_client, http客户端 lv_send_json TYPE string, 发送的JSON lv_rec_json TYPE string, 接收的JSON lv_authorization TYPE string, lv_code TYPE i, HTTP 返回状态 lv_reason TYPE string. HTTP 状态描述 创建http客户端 lv_url .这里填入外部接口的地址 cl_http_clientcreate_by_url( EXPORTING url lv_url * proxy_host proxy_host * proxy_service proxy_service * ssl_id ssl_id * sap_username sap_username * sap_client sap_client IMPORTING client lo_http_client EXCEPTIONS argument_not_found 1 plugin_not_active 2 internal_error 3 ). IF sy-subrc 0. * Implement suitable error handling here ENDIF. lo_http_client-propertytype_logon_popup lo_http_client-co_disabled. 设定传输请求内容格式以及编码格式 lo_http_client-request-set_content_type( content_type application/json; charsetutf-8 ). 设置账号密码 CALL METHOD lo_http_client-authenticate EXPORTING username 输入外部接口用户名 password .输入外部接口密码 设置http method 为POST lo_http_client-request-set_method( if_http_requestco_request_method_post ). LOOP AT it_input ASSIGNING FIELD-SYMBOL(fs_input). 采购申请去除前导零 CALL FUNCTION CONVERSION_EXIT_ALPHA_OUTPUT EXPORTING input fs_input-banfn IMPORTING output fs_input-banfn. 物料去除前导零 CALL FUNCTION CONVERSION_EXIT_MATN1_OUTPUT EXPORTING input fs_input-matnr IMPORTING output fs_input-matnr. ENDLOOP. SAP不区分大小写JAVA/C会区分 一定让对方修改代码不然只能SBB的拼接 CLEAR:lv_send_json. lv_send_json /ui2/cl_jsonserialize( it_input[] ). 设置待传输内容长度 CLEAR:lv_len. lv_len strlen( lv_send_json ). CALL METHOD lo_http_client-request-set_cdata EXPORTING data lv_send_json offset 0 length lv_len. 发送 CALL METHOD lo_http_client-send EXCEPTIONS http_communication_failure 1 http_invalid_state 2 http_processing_failed 3 http_invalid_timeout 4 OTHERS 5. 接收 CALL METHOD lo_http_client-receive EXCEPTIONS http_communication_failure 1 http_invalid_state 2 http_processing_failed 3. CLEAR:lv_rec_json.,LS_JSON. lv_rec_json lo_http_client-response-get_cdata( ). 解析JSON串 CLEAR:ls_recdata. /ui2/cl_jsondeserialize( EXPORTING json lv_rec_json pretty_name /ui2/cl_jsonpretty_mode-camel_case CHANGING data ls_recdata ). 关闭接口 CALL METHOD lo_http_client-close. DATA: ls_zmmt012 TYPE zmmt012, lt_zmmt012 LIKE TABLE OF zmmt012. IF ls_recdata-status X. es_return-type S. es_return-message ls_recdata-message. APPEND es_return TO et_return. LOOP AT it_input ASSIGNING FIELD-SYMBOL(fs_item). CLEAR: ls_zmmt012. ls_zmmt012-oano fs_item-oano. 添加前导零 CALL FUNCTION CONVERSION_EXIT_ALPHA_INPUT EXPORTING input fs_item-banfn IMPORTING output ls_zmmt012-banfn. ls_zmmt012-zjsrq sy-datum. ls_zmmt012-message ls_recdata-message. ls_zmmt012-type S. ls_zmmt012-zmodat sy-datum. ls_zmmt012-zmodti sy-uzeit. ls_zmmt012-zmonam sy-uname. APPEND ls_zmmt012 TO lt_zmmt012. ENDLOOP. ELSEIF ls_recdata-status . lt_data ls_recdata-data. LOOP AT lt_data INTO ls_data. es_return-type E. 添加前导零 CALL FUNCTION CONVERSION_EXIT_ALPHA_INPUT EXPORTING input ls_data-banfn IMPORTING output es_return-banfn. * es_return-banfn ls_data-banfn. es_return-bnfpo ls_data-bnfpo. es_return-message ls_data-message. APPEND es_return TO et_return. CLEAR: es_return,ls_data. CLEAR: ls_zmmt012. ls_zmmt012-oano ls_data-oano. ls_zmmt012-banfn ls_data-banfn. ls_zmmt012-zjsrq sy-datum. ls_zmmt012-message ls_data-message. ls_zmmt012-type E. ls_zmmt012-zmodat sy-datum. ls_zmmt012-zmodti sy-uzeit. ls_zmmt012-zmonam sy-uname. APPEND ls_zmmt012 TO lt_zmmt012. ENDLOOP. ENDIF. IF ls_recdata IS INITIAL. es_return-type E. es_return-message 采购申请推送SRM失败。. APPEND es_return TO et_return. ENDIF. IF lt_zmmt012 IS NOT INITIAL. MODIFY zmmt012 FROM TABLE lt_zmmt012. ENDIF. ENDFUNCTION.