function - config

来源:互联网 发布:新经济政策知乎 编辑:程序博客网 时间:2024/05/22 11:55

  data:lcl_json_stw TYPE REF TO cl_stw_parse_json.
  data:lr_root type REF TO  cx_static_check.


  DATAfunc TYPE string,
        ptab TYPE abap_func_parmbind_tab,
        ptab_line TYPE abap_func_parmbind,
        etab TYPE abap_func_excpbind_tab,
        etab_line TYPE abap_func_excpbind.

  data:lo_result type REF TO data .
  data:lo_param type REF TO data .
  data:ls_fucfg type ztwm_fucfg .
  FIELD-SYMBOLS:<fs_param> type any .

  "the function has the importing parameter and table parameter .
  loop at lt_fucfg into ls_fucfg .
    ptab_line-name ls_fucfg-PARAM ."参数明年
    ptab_line-kind ls_fucfg-KIND  ."参数类型

    if  ls_fucfg-KIND abap_func_tables."30
      create data lo_result TYPE TABLE OF (ls_fucfg-TYPENAME).
      ptab_line-value lo_result  .
    else.

      if ls_fucfg-KIND abap_func_exporting ."10
        create data lo_param type (ls_fucfg-TYPENAME.
        ptab_line-value lo_param  .
      elseif ls_fucfg-KIND abap_func_importing .
        create data lo_result type (ls_fucfg-TYPENAME.
        ptab_line-VALUE lo_result .
      endif.

      if ls_fucfg-KIND abap_func_exporting ."10
        if lcl_json_stw is INITIAL .
          CREATE OBJECT lcl_json_stw.
        endif.
        TRY.
            "change the content into the interal table
            ASSIGN lo_param->to <fs_param> .
            CALL METHOD LCL_JSON_STW->JSON_TO_DATA
              EXPORTING
                IV_JSON input-MT_WMS_SERVICE_REQ-CONTENT
              CHANGING
                C_DATA  <fs_param>.

          CATCH CX_STW_TECHNICAL into lr_root .
*            output-MT_WMS_SERVICE_RESP-CONTENT = lr_root->get_text( ) .
             output-MT_WMS_SERVICE_RESP-CONTENT lr_root->GET_LONGTEXT).
            RETURN .
        ENDTRY.
        ptab_line-value lo_param .
      endif.


    endif.
    INSERT ptab_line INTO TABLE ptab.

  ENDLOOP .
  "the exception parameter
  etab_line-name 'OTHERS'.
  etab_line-value 1.
  INSERT etab_line INTO TABLE etab.

  func ls_iftyp-FUNCT .
  " call the funciton in run time
  CALL FUNCTION func
    PARAMETER-TABLE
    ptab
    EXCEPTION-TABLE
    etab.

  if sy-subrc ne .
    data:l_msg type char255 .
    MESSAGE id sy-msgid TYPE sy-msgty NUMBER sy-msgno
          with sy-msgv1 sy-msgv2 sy-MSGV3 sy-msgv4 into l_msg .
    output-MT_WMS_SERVICE_RESP-CONTENT l_msg .
  else.
    datacl_serializer type ref to cl_trex_json_serializer.
    datajson_data type string .
*data: lv_json type string .
    FIELD-SYMBOLS:<fs> type any .
    ASSIGN lo_result->to <fs> .
    if <fs> is ASSIGNED   .
      CREATE OBJECT cl_serializer
        EXPORTING
          data <fs>.

      cl_serializer->serialize)."//转化为json
      JSON_DATA cl_serializer->get_data.
*<<<处理特殊字符 &
      REPLACE all OCCURRENCES OF '\&' in json_data  with '&' .
      output-MT_WMS_SERVICE_RESP-CONTENT json_data .
    endif.
  endif.
0 0
原创粉丝点击