SAP PP BOM主数据维护接口分享
一、接口逻辑





二、接口代码




FUNCTION z_fmdm_bom_create.
 *"----------------------------------------------------------------------
 *"*"本地接口:
 *"  IMPORTING
 *"     VALUE(I_DATA_GD) TYPE  ZSBC_IF_GD
 *"     VALUE(I_INPUT) TYPE  STRING
 *"  EXPORTING
 *"     VALUE(E_OUTPUT) TYPE  STRING
 *"----------------------------------------------------------------------
   DATA:l_mseh6  TYPE mseh6,
        lv_posnr TYPE numc4.
   CALL FUNCTION 'ZFM_BREAK_POINT'  .
 
   CLEAR:gv_input_022,
         gv_output_022,
         gv_status_022.
 
   "清空输出变量
   CLEAR:e_output.
 
   IF i_input IS NOT INITIAL.
 
     CALL FUNCTION 'Z_FMBC_JSONTOABAP'
       EXPORTING
         i_json = i_input
       IMPORTING
         e_data = gv_input_022.
 
   ENDIF.
 
   IF gv_input_022 IS INITIAL.
     PERFORM frm_set_msg TABLES gv_output_022 USING 'E' '00' '001' '请检查JSON结构与SAP ABAP结构 是否一致!'.
     PERFORM frm_write_log_new  USING  'PP0022'
                                 gv_output_022
                                  i_data_gd
                                  i_input
                                  e_output
                                  'E'.
     EXIT.
   ENDIF.
 
 
   gv_input_022-header-matnr = |{ gv_input_022-header-matnr ALPHA = IN WIDTH = 18 }|.
   IF gv_input_022-header-stlal IS INITIAL.
     gv_input_022-header-stlal = '1'.
   ENDIF.
   gv_input_022-header-stlal = |{ gv_input_022-header-stlal ALPHA = IN }|.
 
   IF gv_input_022-header-aennr IS NOT INITIAL.
     gv_input_022-header-aennr = |{ gv_input_022-header-aennr ALPHA = IN }|.
   ENDIF.
 
   IF gv_input_022-header-bmein IS NOT INITIAL.
     CALL FUNCTION 'CONVERSION_EXIT_CUNIT_INPUT'
       EXPORTING
         input          = gv_input_022-header-bmein
         language       = sy-langu
       IMPORTING
         output         = l_mseh6
       EXCEPTIONS
         unit_not_found = 1
         OTHERS         = 2.
     IF sy-subrc EQ 0.
       gv_input_022-header-bmein = l_mseh6 .
     ENDIF.
 *  ELSE.
 *    SELECT SINGLE MEINS FROM MARA INTO gv_input_022-header-bmein
 *       WHERE matnr = gv_input_022-header-matnr.
 
   ENDIF.
 
 
   CLEAR:lv_posnr.
   LOOP AT gv_input_022-item ASSIGNING FIELD-SYMBOL(<fs_item>) .
 
     IF gv_input_022-header-op_flag_header EQ 'N'.
       lv_posnr = lv_posnr + 10.
       <fs_item>-posnr = lv_posnr.
     ENDIF.
 
     <fs_item>-idnrk = |{ <fs_item>-idnrk ALPHA = IN WIDTH = 18 }|.
 
     IF <fs_item>-postp IS INITIAL.
       <fs_item>-postp    = 'L'.
     ENDIF.
 
 *    IF <fs_item>-alpst IS INITIAL.
 *      .    <fs_item>-alpst    = '1'.
 *    ENDIF.
 
     CLEAR:l_mseh6.
     CALL FUNCTION 'CONVERSION_EXIT_CUNIT_INPUT'
       EXPORTING
         input          = <fs_item>-meins
         language       = sy-langu
       IMPORTING
         output         = l_mseh6
       EXCEPTIONS
         unit_not_found = 1
         OTHERS         = 2.
     IF sy-subrc EQ 0.
       <fs_item>-meins = l_mseh6 .
     ENDIF.
 
   ENDLOOP.
 
   CASE gv_input_022-header-op_flag_header .
     WHEN 'N'.
       PERFORM frm_create_bom .
     WHEN 'C'.
       PERFORM frm_change_bom .
     WHEN OTHERS.
       PERFORM frm_set_msg TABLES gv_output_022 USING 'E' '00' '001' '抬头操作标识无效!'.
       gv_status_022 ='E'.
   ENDCASE.
 
   PERFORM frm_write_log_new  USING  'PP0022'
                            gv_output_022
                            i_data_gd
                            i_input
                            e_output
                            gv_status_022.
 
 ENDFUNCTION.
DATA:gv_input_022  TYPE zsdm_bom_creat_input,
      gv_output_022 TYPE zttbc_msg,
      gv_status_022 TYPE c.
 


FUNCTION Z_FMBC_JSONTOABAP.
 *"----------------------------------------------------------------------
 *"*"本地接口:
 *"  IMPORTING
 *"     REFERENCE(I_JSON) TYPE  STRING
 *"  EXPORTING
 *"     REFERENCE(E_DATA) TYPE  DATA
 *"----------------------------------------------------------------------
 
   DATA: CL_DESERIALIZER               TYPE REF TO ZCL_TREX_JSON_DESERIALIZER.
   DATA: LV_CX_SY_CONVERSION_NO_NUMBER TYPE REF TO CX_SY_CONVERSION_NO_NUMBER,
         LV_CX_TREX_SERIALIZATION      TYPE&
