METHOD if_http_extension~handle_request.
DATA: lt_fields TYPE tihttpnvp,
lv_header_query TYPE string,
lv_data TYPE string,
lv_html TYPE string,
lv_resdata TYPE string,
cpcodepage TYPE cpcodepage,
json_ser TYPE REF TO cl_trex_json_serializer,
json_des TYPE REF TO cl_trex_json_deserializer.
DATA oref TYPE REF TO cx_root.
DATA: eeror_flag TYPE char1,
return_code TYPE flag,
message TYPE zservmessage.
FIELD-SYMBOLS: <fs_field> LIKE LINE OF lt_fields.
" get HEADER fields
server->request->get_header_fields(
CHANGING
fields = lt_fields " Header fields
).
lv_data = server->request->if_http_entity~get_cdata( ).
* READ TABLE lt_fields
* WITH KEY name = '~query_string'
* ASSIGNING <fs_field>.
* IF sy-subrc NE 0.
* lv_html = '{"response":{}}'.
* else.
DATA: zweixin_req TYPE REF TO zweixin_request_cl.
* TRANSLATE lv_data TO LOWER CASE.
CONDENSE lv_data NO-GAPS.
/ui2/cl_json=>deserialize( EXPORTING json = lv_data pretty_name = /ui2/cl_json=>pretty_mode-camel_case CHANGING data = zweixin_req ).
* 根据URL指定查询内容
IF zweixin_req IS NOT INITIAL.
IF zweixin_req->interfaceid IS NOT INITIAL.
CASE zweixin_req->interfaceid.
WHEN 'GetParametersByOrderID'.
CALL FUNCTION 'ZGET_USER'
EXPORTING
indata = lv_data
IMPORTING
outdata = lv_html.
WHEN 'OrderAdd'.
CALL FUNCTION 'ZGET_ORDERADD'
EXPORTING
indata = lv_data
updateflag = 'C'
IMPORTING
outdata = lv_html.
WHEN 'OrderUpdate'.
CALL FUNCTION 'ZGET_ORDERADD'
EXPORTING
indata = lv_data
updateflag = 'U'
IMPORTING
outdata = lv_html.
WHEN 'OrderDel'.
CALL FUNCTION 'ZGET_ORDERADD'
EXPORTING
indata = lv_data
updateflag = 'D'
IMPORTING
outdata = lv_html.
WHEN 'GetAllByMaterialAndDate'.
CALL FUNCTION 'ZGET_REPORT'
EXPORTING
indata = lv_data
IMPORTING
outdata = lv_html.
"五金仓无纸化
WHEN 'GetUserInfoByUID'.
CALL FUNCTION 'ZGET_USERINFO'
EXPORTING
indata = lv_data
IMPORTING
outdata = lv_html.
WHEN 'GetMaterialInfo'.
CALL FUNCTION 'ZGET_GETMATERIALINFO'
EXPORTING
indata = lv_data
IMPORTING
outdata = lv_html.
WHEN 'UpdateMaterialOrder'.
CALL FUNCTION 'ZGET_UPDATEORDER'
EXPORTING
indata = lv_data
IMPORTING
outdata = lv_html.
WHEN 'GetTransferList'.
CALL FUNCTION 'ZSCAN_GETTRANSFERLIST'
EXPORTING
indata = lv_data
IMPORTING
outdata = lv_html.
WHEN 'PostTransfe'.
CALL FUNCTION 'ZSCAN_POSTTRANSFER'
EXPORTING
indata = lv_data
IMPORTING
outdata = lv_html.
WHEN 'GetProcureinList'.
CALL FUNCTION 'ZSCAN_GETPROCUREINLIST'
EXPORTING
indata = lv_data
IMPORTING
outdata = lv_html.
WHEN 'PostProcureIn'.
CALL FUNCTION 'ZSCAN_POSTPROCUREIN'
EXPORTING
indata = lv_data
IMPORTING
outdata = lv_html.
WHEN 'GetProductMaterial'.
CALL FUNCTION 'ZSCAN_GETPRODUCTMATERIAL'
EXPORTING
indata = lv_data
IMPORTING
outdata = lv_html.
WHEN 'PostMaterials'.
CALL FUNCTION 'ZSCAN_POSTPRODUCTMATERIAL'
EXPORTING
indata = lv_data
IMPORTING
outdata = lv_html.
WHEN 'GetPdfPath'.
CALL FUNCTION 'ZSCAN_GETPDFPATH'
EXPORTING
indata = lv_data
IMPORTING
outdata = lv_html.
WHEN 'PostScanCodeCheck'.
CALL FUNCTION 'ZSCAN_POSTSCANCODECHECK'
EXPORTING
indata = lv_data
IMPORTING
outdata = lv_html.
WHEN 'GetPackRecord'.
CALL FUNCTION 'ZSCAN_GETPACKRECORD'
EXPORTING
indata = lv_data
IMPORTING
outdata = lv_html.
WHEN 'zmj_getdiepath'.
CALL FUNCTION 'ZGET_MOUDLE_PATH01'
EXPORTING
indata = lv_data
IMPORTING
outdata = lv_html.
WHEN 'zmj_getMOUDLE_POLINE'.
CALL FUNCTION 'ZGET_MOUDLE_POLINE01'
EXPORTING
indata = lv_data
IMPORTING
outdata = lv_html.
WHEN 'zmj_getMOUDLE_INDEPOT'.
CALL FUNCTION 'ZGET_MOUDLE_INDEPOT01'
EXPORTING
indata = lv_data
IMPORTING
outdata = lv_html.
WHEN OTHERS.
lv_html = '{"Interfaceid": "' && zweixin_req->interfaceid && '","ResData":{"Message":"Failed","Data":[]}'.
ENDCASE.
ENDIF.
ENDIF.
"response the request
CALL METHOD server->response->if_http_entity~set_content_type
EXPORTING
content_type = 'application/json'.
* DATA: len TYPE i.
* DATA xstr TYPE xstring.
* CALL FUNCTION 'ECATT_CONV_STRING_TO_XSTRING'
* EXPORTING
* im_string = lv_html
* im_encoding = 'UTF-8'
* IMPORTING
* ex_xstring = xstr.
*
* len = xstrlen( xstr ).
* CALL METHOD server->response->append_data
* EXPORTING
* data = xstr
* offset = 0
* length = len.
server->response->set_cdata(
EXPORTING data = lv_html " Character data
).
ENDMETHOD.
----------------SE24调用
CLASS ZWEIXIN_GetBYOrderID DEFINITION FINAL.
PUBLIC SECTION.
DATA: OrderID TYPE AFPO-AUFNR.
DATA: SalesOrder TYPE afpo-KDAUF.
DATA: item TYPE afpo-kdpos.
DATA: MaterialName TYPE MARA-MATNR.
DATA: Metal TYPE MARA-extwg.
DATA: Linear TYPE MARA-normt.
DATA: length TYPE MARA-GROES.
DATA: Color TYPE MARA-FERTH.
DATA: imgurl TYPE STRING.
DATA: procount TYPE MARA-NTGEW.
DATA: WERKS TYPE AUFK-WERKS.
ENDCLASS.
CLASS TY_GetBYOrderID_DATA DEFINITION FINAL.
PUBLIC SECTION.
DATA: MESSAGE TYPE STRING.
DATA: Data TYPE STANDARD TABLE OF REF TO ZWEIXIN_GetBYOrderID.
ENDCLASS.
CLASS ZWEIXIN_GetBYOrderID_REQ DEFINITION FINAL.
PUBLIC SECTION.
DATA: OrderID TYPE STRING.
DATA: SalesOrder TYPE STRING.
DATA: item TYPE afpo-kdpos.
ENDCLASS.
class ZWEIXIN_REQGetBYOrderID_CL DEFINITION FINAL.
public section.
DATA: interfaceid TYPE STRING.
DATA: ReqData TYPE STANDARD TABLE OF REF TO ZWEIXIN_GetBYOrderID_REQ.
ENDCLASS.
class ZWEIXIN_RESGetBYOrderID_CL DEFINITION FINAL.
public section.
DATA: interfaceid TYPE STRING.
DATA: ResData TYPE ref to TY_GetBYOrderID_DATA.
ENDCLASS.
FUNCTION ZGET_USER.
*"----------------------------------------------------------------------
*"*"本地接口:
*" IMPORTING
*" REFERENCE(INDATA) TYPE STRING
*" EXPORTING
*" REFERENCE(OUTDATA) TYPE STRING
*"----------------------------------------------------------------------
DATA: ZWEIXIN_REQ TYPE REF TO ZWEIXIN_REQGetBYOrderID_CL,
ZWEIXIN_RES TYPE REF TO ZWEIXIN_RESGetBYOrderID_CL.
DATA: DATATAB TYPE REF TO ZWEIXIN_GetBYOrderID.
/UI2/CL_JSON=>DESERIALIZE( EXPORTING JSON = INDATA PRETTY_NAME = /UI2/CL_JSON=>PRETTY_MODE-CAMEL_CASE CHANGING DATA = ZWEIXIN_REQ ).
DATA: INTAB type ref to ZWEIXIN_GetBYOrderID_REQ.
DATA: OUTTAB TYPE ref to TY_GetBYOrderID_DATA.
DATA: ZWERKS TYPE WERKS.
create object ZWEIXIN_RES.
create object OUTTAB.
OUTTAB->message = 'Failed'.
IF ZWEIXIN_REQ IS NOT INITIAL.
IF ZWEIXIN_REQ->ReqData is not initial.
LOOP AT ZWEIXIN_REQ->ReqData ASSIGNING FIELD-SYMBOL(<fs>).
IF <fs>->OrderID is not initial or <fs>->SalesOrder is not initial.
DATA: AUFNR TYPE afpo-aufnr.
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
EXPORTING
input = <fs>->OrderID
IMPORTING
output = AUFNR.
select single * into @DATA(tmpafpo) from afpo where aufnr = @AUFNR.
IF sy-subrc <> 0 and <fs>->SalesOrder is not initial.
DATA: KDAUF TYPE afpo-KDAUF.
DATA: kdpos TYPE afpo-kdpos.
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
EXPORTING
input = <fs>->SalesOrder
IMPORTING
output = KDAUF.
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
EXPORTING
input = <fs>->item
IMPORTING
output = kdpos.
IF kdpos is not initial.
select * into table @DATA(it_tmpafpo) from afpo where KDAUF = @KDAUF and kdpos = @kdpos.
IF sy-subrc <> 0.
continue.
ENDIF.
else.
select * into table @it_tmpafpo from afpo where KDAUF = @KDAUF.
IF sy-subrc <> 0.
continue.
ENDIF.
endif.
ENDIF.
ELSE.
continue.
ENDIF.
IF sy-subrc = 0.
if tmpafpo is not initial.
append tmpafpo to it_tmpafpo.
CLEAR tmpafpo.
endif.
loop at it_tmpafpo into tmpafpo.
* SELECT SINGLE AFKO~dispo,afko~gamng,afko~igmng,afko~iasmg,afvc~arbid INTO @DATA(IT_AFKO) FROM AFKO
* inner join afvc on afko~aufpl = afvc~aufpl
* WHERE AUFNR = @TMPAFPO-AUFNR.
SELECT SINGLE AFKO~dispo,afko~gamng,afko~igmng,afko~iasmg,afvc~arbid ,aufk~aufnr,aufk~objnr,jest~stat INTO @DATA(IT_AFKO) FROM AFKO
inner join afvc on afko~aufpl = afvc~aufpl
inner join aufk on aufk~aufnr = afko~aufnr
inner join jest on aufk~objnr = jest~objnr
WHERE jest~stat = 'I0002' AND JEST~INACT <> 'X'
and afko~AUFNR = @TMPAFPO-AUFNR.
if sy-subrc = 4.
continue .
endif.
IF IT_AFKO-DISPO = 003 .
SELECT AFRU~AUFNR, AFRU~VORNR,SUM( AFRU~LMNGA ) AS LMNGA ,SUM( AFRU~XMNGA ) AS XMNGA INTO TABLE @DATA(IT_AFRU) FROM AFRU
WHERE STOKZ <> 'X' and STZHL = '00000000' and AUFNR = @TMPAFPO-AUFNR GROUP BY AFRU~AUFNR, AFRU~VORNR .
sort it_afru by VORNR.
data tm_VORNR like afru-VORNR.
tm_vornr = 9999.
data tm_lmnga like afru-lmnga.
data tm_xmnga like afru-xmnga.
loop at it_afru into data(wa_afru).
if wa_afru-vornr < tm_vornr.
tm_vornr = wa_afru-vornr .
tm_lmnga = wa_afru-lmnga.
endif.
tm_xmnga = tm_xmnga + wa_afru-xmnga.
endloop.
* READ TABLE IT_AFRU INTO DATA(WA_AFRU) INDEX 1 .
TMPAFPO-MILL_OC_RUMNG = tm_LMNGA - TMPAFPO-WEMNG - tm_XMNGA.
MODIFY IT_TMPAFPO FROM TMPAFPO.
ELSE.
select s026~matnr,s026~mcomp,s026~basme,s026~bdmng,s026~enmng,mara~groes,mara~normt
into table @data(it_s026) from s026
inner join mara on mara~matnr = s026~mcomp
where mara~mtart in ('FERT','HALB','ROHT') and bdmng > 0 and aufnr = @TMPAFPO-AUFNR.
data tm_ENMNG like s026-ENMNG.
tm_enmng = 999999999.
loop at it_s026 into data(wa_s026).
if wa_s026-enmng < tm_enmng .
tm_enmng = wa_s026-enmng.
endif.
endloop.
* select single s026~matnr,s026~mcomp,s026~basme,s026~bdmng,s026~enmng,mara~groes,mara~normt into @data(it_s026) from s026
* inner join mara on mara~matnr = s026~mcomp
* where mara~mtart in ('FERT','HALB','ROHT') and bdmng > 0 and aufnr = @TMPAFPO-AUFNR.
IF IT_AFKO-DISPO = 001.
wa_s026-BDMNG = wa_s026-BDMNG / IT_AFKO-GAMNG .
ELSE.
wa_s026-BDMNG = IT_AFKO-GAMNG / wa_s026-BDMNG .
ENDIF.
CALL FUNCTION 'ROUND'
EXPORTING
INPUT = wa_s026-BDMNG
SIGN = 'X'
IMPORTING
OUTPUT = wa_s026-BDMNG
EXCEPTIONS
INPUT_INVALID = 1
OVERFLOW = 2
TYPE_INVALID = 3
OTHERS = 4.
if wa_s026-basme = 'KG'.
wa_s026-enmng = wa_s026-enmng / wa_s026-GROES / wa_s026-NORMT * 1000.
CALL FUNCTION 'ROUND'
EXPORTING
INPUT = wa_s026-enmng
SIGN = 'X'
IMPORTING
OUTPUT = wa_s026-enmng
EXCEPTIONS
INPUT_INVALID = 1
OVERFLOW = 2
TYPE_INVALID = 3
OTHERS = 4.
ENDIF.
if IT_AFKO-arbid = '10000022'.
TMPAFPO-MILL_OC_RUMNG = tm_enmng - IT_AFKO-IGMNG - IT_AFKO-IASMG.
ELSEIF IT_AFKO-arbid = '10000008' OR IT_AFKO-arbid = '10000068'."zit104
else.
TMPAFPO-MILL_OC_RUMNG = wa_s026-enmng * wa_s026-BDMNG - IT_AFKO-IGMNG - IT_AFKO-IASMG.
endif.
MODIFY IT_TMPAFPO FROM TMPAFPO.
endif.
if tmpafpo-MILL_OC_RUMNG <> 0 OR IT_AFKO-arbid = '10000008' OR IT_AFKO-arbid = '10000068'.
*************************************************************************************************************
create object DATATAB.
DATATAB->SalesOrder = tmpafpo-KDAUF.
DATATAB->OrderID = tmpafpo-aufnr.
DATATAB->item = tmpafpo-kdpos.
DATATAB->procount = tmpafpo-MILL_OC_RUMNG.
DATA: spaceval type char1.spaceval = ''.
OUTTAB->message = 'Success'.
select single MATNR , NORMT ,
case ZEIAR WHEN @spaceval THEN EXTWG ELSE CONCAT( EXTWG,CONCAT( '-' , ZEIAR ) ) END,
FERTH , GROES
FROM MARA where MATNR = @tmpafpo-matnr
into ( @DATATAB->materialname , @DATATAB->linear , @DATATAB->metal , @DATATAB->Color , @DATATAB->length ).
"获取图片URL
DATA: IDITEM TYPE matnr, WERKS TYPE WERKS_EXT.
DATA: O_TPATH TYPE ZNODAD.
DATA: NOX TYPE matnr.
IDITEM = DATATAB->materialname+0(11).
WERKS = '1000'.
call function 'ZGET_MOUDLE_PATH'
exporting
I_ALUMS = IDITEM
i_werks = WERKS
importing
O_TPATH = O_TPATH.
IF O_TPATH is not initial ."and O_TPATH <> 'http://plm.pressmetal.com.cn:8080/'.
NOX = IDITEM.
REPLACE ALL OCCURRENCES OF 'X' IN NOX WITH ''.
* REPLACE ALL OCCURRENCES OF '172.16.0.250\TUZHI' IN O_SPATH WITH 'plm.pressmetal.com.cn\web'.
DATATAB->imgurl = O_TPATH && NOX && '.jpg'.
ENDIF.
IF DATATAB->Color is initial.
SELECT SINGLE VBAP~MATNR , VBAP~CUOBJ FROM VBAP INTO ( @DATA(I_MATNR) ,@DATA(I_CUOBJ) )
WHERE VBELV = @tmpafpo-KDAUF AND POSNV = @tmpafpo-kdpos .
IF SY-SUBRC = 0 AND I_CUOBJ IS NOT INITIAL.
DATA: CONFIGURATION TYPE standard table of CONF_OUT.
DATA: IDFINISHING TYPE CHAR30,
descrfinishing TYPE CHAR50,
IDTEMPER TYPE CHAR18.
perform GETTXZMS IN PROGRAM ZEMSALL IF FOUND
tables CONFIGURATION using I_CUOBJ WERKS I_MATNR
changing IDFINISHING DESCRFINISHING IDTEMPER.
endif.
split DESCRFINISHING at '=' into table DATA(lwtabcolor).
read table lwtabcolor into DATA(lw1) index 2 .
DATATAB->Color = lw1.
ENDIF.
SELECT SINGLE WERKS FROM aufk WHERE AUFNR = @TMPAFPO-AUFNR INTO @DATATAB->WERKS."zit104
append DATATAB to OUTTAB->data.
CLEAR tmpafpo.
endif.
ENDLOOP.
ENDIF.
refresh it_tmpafpo.
ENDLOOP.
ENDIF.
ENDIF.
ZWEIXIN_RES->interfaceid = ZWEIXIN_REQ->interfaceid.
ZWEIXIN_RES->resdata = OUTTAB.
* SERIALIZE json
OUTDATA = /UI2/CL_JSON=>SERIALIZE( DATA = ZWEIXIN_RES PRETTY_NAME = /UI2/CL_JSON=>PRETTY_MODE-CAMEL_CASE NUMC_AS_STRING = ABAP_TRUE ).
free OUTTAB->data.
free OUTTAB.
clear tmpafpo.
ENDFUNCTION.