se24接口

 

  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.

 

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值