Quantcast
Channel: SCN: Message List
Viewing all articles
Browse latest Browse all 10473

Re: BAPI_MATERIAL_SAVEDATA  - I have an error for an obligatory field

$
0
0

Now I have this error.

fieldrequired_BAPIMATERIAL.jpg

 

This is my code

 

Please help me.

 

   *&---------------------------------------------------------------------*
*& Report  ZMM_PE_TL10_3
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*

REPORT ZMM_PE_TL10_3.
*----------------------------------------------------------------------*
* TABLES
*----------------------------------------------------------------------*
*----------------------------------------------------------------------*
* FLAGS *
*----------------------------------------------------------------------*
DATA: f_stop. " Flag used to stop processing
*----------------------------------------------------------------------*
* DATA DECLARATIONS *
*----------------------------------------------------------------------*
DATA: v_empty TYPE i, " No. of empty records
      v_total TYPE i. " Total no. of records.
*----------------------------------------------------------------------*
* STRUCTURES & INTERNAL TABLES
*----------------------------------------------------------------------*
*BAPI structures
*----------------------------------------------------------------------*
DATA: bapi_head LIKE bapimathead, " Header Segment with Control Information
      bapi_makt LIKE bapi_makt, " Material Description
      bapi_mard LIKE bapi_mard,   " StorageLocationData
      bapi_mardx LIKE bapi_mardx,   " StorageLocationData
      bapi_mlan like bapi_mlan, "Tax Classifications
      bapi_mara1 LIKE bapi_mara, " Client Data
      bapi_marax LIKE bapi_marax, " Checkbox Structure for BAPI_MARA
      bapi_marc1 LIKE bapi_marc, " Plant View
      bapi_marcx LIKE bapi_marcx, " Checkbox Structure for BAPI_MARC
      bapi_mbew1 LIKE bapi_mbew, " Accounting View
      bapi_mbewx LIKE bapi_mbewx, " Checkbox Structure for BAPI_MBEW
      bapi_return LIKE bapiret2, " Return Parameter

      rex LIKE bapiparex OCCURS 0 WITH HEADER LINE,
      rexx LIKE bapiparexx OCCURS 0 WITH HEADER LINE,
      lt_messages      TYPE bapiret2_t.


*--- Internal table to hold excel file data
DATA: it_intern TYPE alsmex_tabline OCCURS 0 WITH HEADER LINE.
*--- Internal table to hold Matetrial descriptions
DATA: BEGIN OF it_makt OCCURS 100.
        INCLUDE STRUCTURE bapi_makt.
DATA: END OF it_makt.
*--- Internal to hold the records in the text file
DATA : BEGIN OF it_data OCCURS 100,
            MATNR(018) TYPE C, "Material number
            MTART(004) TYPE C, "Material type
            WERKS(004) TYPE C, "Plant
            LGORT(004) type C,
            MAKTX(040) TYPE C, "Material description
            MEINS(003) TYPE C, "Base unit of measure
            MATKL(009) TYPE C, "Material group
            SPART(002) TYPE C, "Division
            GEWEI(003) TYPE C, "Weight unit
            MSBOOKPART(018) TYPE C,
            EKGRP(003) TYPE C, "Purchasing group
            TAXIM(001) TYPE C,
            MPROF(004) TYPE C,
            MFRPN(040) TYPE C, "Manufacturer part number
            MFRNR(010) TYPE C, "Manufacturer number
            BWTTY(001) TYPE C,
            VPRSV(001) TYPE C, "Price control indicator
            BKLAS(004) TYPE C, "Valuation class

*            werks(4), " Plant
*            mtart(4), " Material type
*            matnr(18), " Material number
*            matkl(9) , " Material group
*            mbrsh(1), " Industry sector
*            meins(3), " Base unit of measure
*            gewei(3), " Weight Unit
*            spart(2), " Division
*            ekgrp(3), " Purchasing group
*            vprsv(1), " Price control indicator
*            stprs(12), " Standard price
*            peinh(3), " Price unit
*            spras(2), " Language key
*            maktx(40), " Material description
            END OF it_data.
*----------------------------------------------------------------------*
* SELECTION SCREEN. *
*----------------------------------------------------------------------*
SELECTION-SCREEN BEGIN OF BLOCK scr1 WITH FRAME TITLE text-111.
PARAMETER : p_file TYPE rlgrap-filename OBLIGATORY DEFAULT " Input File
'D:\temp\MATERIAL_BAPICARGA.xlsx'.
PARAMETER : p_max(4) OBLIGATORY DEFAULT '100'. " no.of recs in a session
PARAMETERS: p_header TYPE i DEFAULT 0. " Header Lines
PARAMETERS: p_begcol TYPE i DEFAULT 1 NO-DISPLAY,
p_begrow TYPE i DEFAULT 1 NO-DISPLAY,
p_endcol TYPE i DEFAULT 100 NO-DISPLAY,
p_endrow TYPE i DEFAULT 32000 NO-DISPLAY.
SELECTION-SCREEN END OF BLOCK scr1.
*---------------------------------------------------------------------*
* AT SELECTION-SCREEN *
*---------------------------------------------------------------------*
AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_file.
*--- Validating file
  PERFORM validate_file USING p_file.
*----------------------------------------------------------------------*
* START-OF-SELECTION
*----------------------------------------------------------------------*
START-OF-SELECTION.
*--- Perform to convert the Excel data into an internal table
  PERFORM convert_xls_itab.
  IF NOT it_data[] IS INITIAL.
*--- Perform to delete Header lines
    PERFORM delete_header_empty_recs.
  ENDIF.
*----------------------------------------------------------------------*
* END OF SELECTION. *
*----------------------------------------------------------------------*
END-OF-SELECTION.
*--- Perform to upload Material Master data
  PERFORM upload_matmas.
*----------------------------------------------------------------------*
* Form : validate_input_file
*----------------------------------------------------------------------*
* Description : To provide F4 help for file if read from PC
*----------------------------------------------------------------------*
FORM validate_file USING f_file TYPE rlgrap-filename.
  CALL FUNCTION 'KD_GET_FILENAME_ON_F4'
    CHANGING
      file_name     = f_file
    EXCEPTIONS
      mask_too_long = 1
      OTHERS        = 2.
  IF sy-subrc <> 0.
    MESSAGE s010(zlkpl_msgclass). " 'Error in getting filename'.
  ENDIF.
ENDFORM. " validate_input_file
*&---------------------------------------------------------------------*
*& Form CONVER_XLS_ITAB
*&---------------------------------------------------------------------*
FORM convert_xls_itab.
  CALL FUNCTION 'ALSM_EXCEL_TO_INTERNAL_TABLE'
    EXPORTING
      filename    = p_file
      i_begin_col = p_begcol
      i_begin_row = p_begrow
      i_end_col   = p_endcol
      i_end_row   = p_endrow
    TABLES
      intern      = it_intern.
  IF sy-subrc <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
  ENDIF.
*--- Perform to move the data into an internal data
  PERFORM move_data.
ENDFORM. " CONVERT_XLS_ITAB
*&---------------------------------------------------------------------*
*& Form MOVE_DATA
*&---------------------------------------------------------------------*
FORM move_data.
  DATA : lv_index TYPE i.
  FIELD-SYMBOLS <fs>.
*--- Sorting the internal table
  SORT it_intern BY row col.
  CLEAR it_intern.
  LOOP AT it_intern.
    MOVE it_intern-col TO lv_index.
*--- Assigning the each record to an internal table row
    ASSIGN COMPONENT lv_index OF STRUCTURE it_data TO <fs>.
*--- Asigning the field value to a field symbol
    MOVE it_intern-value TO <fs>.
    AT END OF row.
      APPEND it_data.
      CLEAR it_data.
    ENDAT.
  ENDLOOP.
ENDFORM. " MOVE_DATA
*&---------------------------------------------------------------------*
*& Form DELETE_HEADER_EMPTY_RECS
*&---------------------------------------------------------------------*
* To delete the Header and empty records
*----------------------------------------------------------------------*
FORM delete_header_empty_recs.
  DATA: lv_tabix LIKE sy-tabix.
  IF NOT p_header IS INITIAL.
    LOOP AT it_data.
      IF p_header > 0 AND NOT it_data IS INITIAL.
        DELETE it_data FROM 1 TO p_header.
* P_HEADER = 0.
        EXIT.
      ENDIF.
    ENDLOOP.
  ENDIF.
  CLEAR it_data.
*--- To delete the empty lines from internal table
  LOOP AT it_data.
    lv_tabix = sy-tabix.
    IF it_data IS INITIAL.
      v_empty = v_empty + 1.
      DELETE it_data INDEX lv_tabix..
    ENDIF.
  ENDLOOP.
  CLEAR it_data.
*--- Total no of recs in file
  DESCRIBE TABLE it_data LINES v_total.
  IF v_total = 0.
    MESSAGE i013(zlkpl_msgclass). " No records in the file
    f_stop = 'X'.
    STOP.
  ENDIF.
ENDFORM. " DELETE_HEADER_EMPTY_RECS
*&---------------------------------------------------------------------*
*& Form UPLOAD_MATMAS
*&---------------------------------------------------------------------*
* to upload Material Master data
*----------------------------------------------------------------------*
FORM upload_matmas .
  data: MATERIALNUMBER LIKE BAPIMATINR OCCURS 0.
  data: RETURN LIKE BAPIRETURN1.
  data: str_material LIKE BAPIMATINR.
  data: returnmessages TYPE bapi_matreturn2 OCCURS 0.

  LOOP AT it_data.

    CALL FUNCTION 'BAPI_MATERIAL_GETINTNUMBER'
      EXPORTING
        material_type    = it_data-MTART
        industry_sector  = 'A'
        required_numbers = 1
      IMPORTING
        return           = return
      TABLES
        material_number  = MATERIALNUMBER.


    IF return-type EQ 'S'.
      READ TABLE MATERIALNUMBER INTO str_material INDEX 1.
      IF sy-subrc EQ 0.
        bapi_head-MATERIAL = str_material-material.
      ENDIF.
    ENDIF.


* Header
    "bapi_head-material = it_data-matnr.
    bapi_head-ind_sector = 'A'.
    bapi_head-matl_type = it_data-mtart.
    bapi_head-basic_view = 'X'.
    bapi_head-purchase_view = 'X'.
    bapi_head-account_view = 'X'.
* Material Description
    REFRESH it_makt.
    it_makt-langu = 'S'"Idioma
    it_makt-matl_desc = it_data-maktx.
    APPEND it_makt.
*Storage
    BAPI_MARD-PLANT it_data-werks.
    BAPI_MARDX-PLANT it_data-werks.

    BAPI_MARD-STGE_LOC = it_data-LGORT.
    BAPI_MARDX-STGE_LOC = it_data-LGORT.

*Tax
    BAPI_MLAN-TAX_IND = it_data-TAXIM.

* Client Data - Basic
    bapi_mara1-matl_group = it_data-matkl.
    bapi_mara1-base_uom = it_data-meins.
    bapi_mara1-unit_of_wt = it_data-gewei.
    bapi_mara1-division = it_data-spart.
    bapi_mara1-DOCUMENT = it_data-MSBOOKPART.
    bapi_mara1-EXTMATLGRP = '.'.
    bapi_mara1-MANUF_PROF = it_data-MPROF.
    bapi_mara1-MANU_MAT = it_data-MFRPN.
    bapi_mara1-MFR_NO = it_data-MFRNR.


    bapi_marax-matl_group = 'X'.
    bapi_marax-base_uom = 'X'.
    bapi_marax-unit_of_wt = 'X'.
    bapi_marax-division = 'X'.
* Plant - Purchasing
    bapi_marc1-plant = it_data-werks.
    bapi_marc1-pur_group = it_data-ekgrp.
    bapi_marcx-plant = it_data-werks.
    bapi_marcx-pur_group = 'X'.
* Accounting
    "bapi_mbew1-val_area = it_data-werks.
    bapi_mbew1-price_ctrl = it_data-vprsv.
    bapi_mbew1-VAL_CAT = it_data-BWTTY.
    bapi_mbew1-VAL_CLASS = it_data-BKLAS.

    "bapi_mbew1-std_price = it_data-stprs.
    "bapi_mbew1-price_unit = it_data-peinh.
    bapi_mbewx-val_area = it_data-werks.
    bapi_mbewx-price_ctrl = 'X'.
    bapi_mbewx-std_price = 'X'.
    bapi_mbewx-price_unit = 'X'.


    rex-structure = 'BAPI_TE_MARA'.
    CONCATENATE bapi_head-material it_data-MSBOOKPART INTO rex-valuepart1 RESPECTING BLANKS.
    APPEND rex.

    rexx-structure = 'BAPI_TE_MARAX'.
    CONCATENATE bapi_head-material 'XXX' INTO rexx-valuepart1 RESPECTING BLANKS.APPEND rexx.
    APPEND rexx.


*--- BAPI to create material
    CALL FUNCTION 'BAPI_MATERIAL_SAVEDATA'
      EXPORTING
        headdata            = bapi_head
        clientdata          = bapi_mara1
        clientdatax         = bapi_marax
        plantdata           = bapi_marc1
        plantdatax          = bapi_marcx
        StorageLocationData = bapi_mard
        StorageLocationDatax = bapi_mardx
        "TaxClassifications  = bapi_mlan
      IMPORTING
        return              = bapi_return
      TABLES
        RETURNMESSAGES = returnmessages
        materialdescription = it_makt
        extensionin  = rex
        extensioninx = rexx.

    IF bapi_return-type = 'E'.
      WRITE:/ 'Error:' ,bapi_return-message ,'for material:' ,it_data-matnr.
    ELSEIF bapi_return-type = 'S'.
      WRITE: 'Successfully created material' ,it_data-matnr.
    ENDIF.
  ENDLOOP.
ENDFORM.


Viewing all articles
Browse latest Browse all 10473

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>