BAPI_MATERIAL_SAVEDATA  MATERIALLONGTEXT

hi gurus i have a little problem i need to save a text in the sales text field from mm02 sales text
i use the bapi BAPI_MATERIAL_SAVEDATA   and i fill the table MATERIALLONGTEXT like this
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
    EXPORTING
      input         = matnr
   IMPORTING
     OUTPUT        =  matnr .
  gt_longtxt-APPLOBJECT = 'MATERIAL'.
  gt_longtxt-TEXT_NAME = matnr.
  gt_longtxt-TEXT_ID = 'GRUN'.
  gt_longtxt-LANGU = 'S'.
  gt_longtxt-FORMAT_COL = '/'.
  gt_longtxt-TEXT_LINE = TEXT_COMP.
  append gt_longtxt.
and all is fine when i run the bapi the register is saved with all the data but my problem is that my (gt_longtxt-TEXT_LINE = TEXT_COMP.) is saved in other field called basic data text and i need the text to be saved in sales text, any idea?

Did you read the documentation for the table MATERIALLONGTEXT. It is clearly stated:
The material number is transferred first. If it has fewer than 18 characters, the remaining characters must be filled with blanks.
E.g., for material 001000000031, sale org 0684, distr. channel 00 the input should be something like this:
APPLOBJECT  = MVKE
TEXT_NAME = 001000000031      068400
TEXT_ID = 0001
LANGU = EN
TEXT_LINE = Test for SDN
Similarly for 1234BXA, SO 0684 & Distr. Channel 00 the input should be:
APPLOBJECT  = MVKE
TEXT_NAME = 1234BXA           068400
TEXT_ID = 0001
LANGU = EN
TEXT_LINE = Test for SDN
Hope it helps.
BR,
Suhas

Similar Messages

  • Need help in using FM BAPI_MATERIAL_SAVEDATA

    Gurus,
    I need help in using the FM BAPI_MATERIAL_SAVEDATA. The FM is returning a message that says "The field MARA-MEINS/BAPI_MARA-BASE_UOM(_ISO) is defined as a required field; it does not contain an entry".
    I have supplied the necessary details and yet the FM won't push through.
    If possible, please post sample codes.
    Below is my sample code:
    ===============================================
    REPORT  zmm_materialupload.
    eject
    $$******************************************************************************
    $$    TYPES
    $$******************************************************************************
    eject
    $$******************************************************************************
    $$    INTERNAL TABLES (custom structure
    $$******************************************************************************
    eject
    $$******************************************************************************
    $$    RANGES
    $$******************************************************************************
    eject
    $$******************************************************************************
    $$    FIELD-SYMBOLS
    $$******************************************************************************
    eject
    $$******************************************************************************
    $$    PARAMETERS & SELECT-OPTIONS
    $$******************************************************************************
    SELECTION-SCREEN BEGIN OF BLOCK 1 WITH FRAME TITLE text-001.
    *SELECT-OPTIONS: s_matnr FOR mara-matnr.
    SELECT-OPTIONS: s_mtart FOR mara-mtart.
    SELECT-OPTIONS: s_mbrsh FOR mara-mbrsh DEFAULT 'P'.
    SELECT-OPTIONS: s_werks FOR marc-werks DEFAULT '1000' OBLIGATORY.
    SELECT-OPTIONS: s_lgort FOR marc-lgpro DEFAULT 'OPSL' OBLIGATORY.
    PARAMETERS: p_path  LIKE rlgrap-filename DEFAULT 'C:\Documents and Settings\training_11\Desktop\Book4 (2ITEMS).txt' OBLIGATORY.
    SELECTION-SCREEN END OF BLOCK 1.
    AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_path.
      CALL FUNCTION 'F4_FILENAME'
        EXPORTING
          field_name = 'P_FNAME'
        IMPORTING
          file_name  = p_path.
    eject
    $$******************************************************************************
    $$    START-OF-SELECTION
    $$******************************************************************************
    START-OF-SELECTION.
      PERFORM check_input.
      PERFORM get_file.
      PERFORM filter_input.
    PERFORM populate_tabs.
      PERFORM bapi_mat.
    eject
    $$******************************************************************************
    $$    FORMS
    $$******************************************************************************
    FORM bapi_mat.
      LOOP AT it_tab INTO wa_tab.
        CALL FUNCTION 'BAPI_MATERIAL_GETINTNUMBER'
          EXPORTING
            material_type    = wa_tab-mtart
            industry_sector  = wa_tab-mbrsh
            required_numbers = 1
          TABLES
            material_number  = it_matnr.
      ENDLOOP.
      LOOP AT it_matnr INTO wa_matnr.
        READ TABLE it_tab INTO wa_tab INDEX sy-tabix.
        wa_tab-matnr = wa_matnr-material.
        MODIFY it_tab FROM wa_tab INDEX sy-tabix.
      ENDLOOP.
      PERFORM populate_tabs.
      CALL FUNCTION 'BAPI_MATERIAL_SAVEDATA'
        EXPORTING
         headdata                   = it_headdata
        clientdata                 = it_clientdata
        clientdatax                = it_clientdatax
        plantdata                  = it_plantdata
        plantdatax                 = it_plantdatax
        FORECASTPARAMETERS         =
        FORECASTPARAMETERSX        =
        PLANNINGDATA               =
        PLANNINGDATAX              =
        STORAGELOCATIONDATA        =
        STORAGELOCATIONDATAX       =
        valuationdata              = it_valuationdata
        valuationdatax             = it_valuationdatax
         WAREHOUSENUMBERDATA        =
        WAREHOUSENUMBERDATAX       =
        SALESDATA                  =
        SALESDATAX                 =
        STORAGETYPEDATA            =
        STORAGETYPEDATAX           =
        flag_online                = ' '
        flag_cad_call              = ' '
        NO_DEQUEUE                 = ' '
        NO_ROLLBACK_WORK           = ' '
       IMPORTING
         return                     = it_return
       TABLES
         materialdescription        = it_materialdescription
         unitsofmeasure             = it_unitsofmeasure
         unitsofmeasurex            = it_unitsofmeasurex
         internationalartnos        = it_internationalartnos
         materiallongtext           = it_materiallongtext
         taxclassifications         = it_taxclassifications
         returnmessages             = it_returnmessages
        PRTDATA                    =
        PRTDATAX                   =
        EXTENSIONIN                =
        EXTENSIONINX               =
      IF sy-subrc = 0.
      ENDIF.
      CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
        EXPORTING
          wait   = 'X'
        IMPORTING
          return = it_return.
    ENDFORM.                    "bapi_mat
    *&      Form  GET_FILE
          text
    FORM get_file.
      CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR'
        EXPORTING
          text = 'Getting data from file...'.
      MOVE: p_path TO gv_file.
      CALL FUNCTION 'GUI_UPLOAD'
        EXPORTING
          filename                = gv_file
          filetype                = 'ASC'
          has_field_separator     = 'X'
          read_by_line            = 'X'
        TABLES
          data_tab                = it_tab
        EXCEPTIONS
          file_open_error         = 1
          file_read_error         = 2
          no_batch                = 3
          gui_refuse_filetransfer = 4
          invalid_type            = 5
          no_authority            = 6
          unknown_error           = 7
          bad_data_format         = 8
          header_not_allowed      = 9
          separator_not_allowed   = 10
          header_too_long         = 11
          unknown_dp_error        = 12
          access_denied           = 13
          dp_out_of_memory        = 14
          disk_full               = 15
          dp_timeout              = 16
          OTHERS                  = 17.
      IF sy-subrc <> 0.
        MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
                WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
      ENDIF.
    ENDFORM.                    "GET_FILE
    *&      Form  check_input
          text
    FORM check_input.
    Material Type
      IF s_mtart-low IS INITIAL AND s_mtart-high IS INITIAL.
       s_mtart = 'IEQ'.
       s_mtart-low = 'ABF'.        "Waste
       s_mtart-high = 'ZTRD'.      "Stock Items
       APPEND s_mtart.
      ENDIF.
      IF s_mtart-low IS NOT INITIAL AND s_mtart-high IS INITIAL.
        MOVE: s_mtart-low TO s_mtart-high.
      ENDIF.
    Industry Sector
      IF s_mbrsh-low IS INITIAL AND s_mbrsh-high IS INITIAL.
       s_mbrsh = 'IEQ'.
       SELECT mbrsh
       FROM mara
       INTO TABLE it_mbrsh.
       s_mbrsh-low = wa_mbrsh-mbrsh.
       LOOP AT it_mbrsh INTO wa_mbrsh.
         s_mbrsh-high = wa_mbrsh-mbrsh.
       ENDLOOP.
       APPEND s_mbrsh.
      ENDIF.
      IF s_mbrsh-low IS NOT INITIAL AND s_mbrsh-high IS INITIAL.
        MOVE: s_mbrsh-low TO s_mbrsh-high.
      ENDIF.
    Plant
      IF s_werks-low IS INITIAL AND s_werks-high IS INITIAL.
        s_werks = 'IEQ'.
        s_werks-low = '1000'.
        s_werks-high = '2000'.
      ENDIF.
      IF s_werks-low IS NOT INITIAL AND s_werks-high IS INITIAL.
        MOVE: s_werks-low TO s_werks-high.
      ENDIF.
    Storage Location
      IF s_lgort-low IS NOT INITIAL AND s_lgort-high IS INITIAL.
        MOVE: s_lgort-low TO s_lgort-high.
      ENDIF.
    ENDFORM.                    "check_input
    *&      Form  Filter_input
          text
    FORM filter_input.
      SORT it_tab BY matnr mtart mbrsh werks lgort.
      LOOP AT it_tab INTO wa_tab.
       IF wa_tab-mtart NOT IN s_mtart.
         DELETE it_tab WHERE mtart NOT IN s_mtart.
       ENDIF.
       IF wa_tab-mbrsh NOT IN s_mbrsh.
         DELETE it_tab WHERE mbrsh NOT IN s_mbrsh.
       ENDIF.
        IF wa_tab-werks NOT IN s_werks.
          DELETE it_tab WHERE werks NOT IN s_werks.
        ENDIF.
        IF wa_tab-lgort NOT IN s_lgort.
          DELETE it_tab WHERE lgort NOT IN s_lgort.
        ENDIF.
      ENDLOOP.
    ENDFORM.                    "Filter_input
    *&      Form  populate_tabs
          text
    FORM    populate_tabs.
      LOOP AT it_tab INTO wa_tab.
        MOVE: wa_tab-matnr TO wa_headdata-material,
              wa_tab-mbrsh TO wa_headdata-ind_sector,
              wa_tab-mtart TO wa_headdata-matl_type,
                       'X' TO wa_headdata-basic_view,
                       'X' TO wa_headdata-sales_view,
                       'X' TO wa_headdata-purchase_view,
                       'X' TO wa_headdata-mrp_view,
                       'X' TO wa_headdata-account_view.
             wa_tab-matkl TO wa_clientdata-matl_group,
             wa_tab-meins TO wa_clientdata-base_uom,
             wa_tab-groes TO wa_clientdata-size_dim,
             wa_tab-gewei TO wa_clientdata-unit_of_wt,
             wa_tab-ntgew TO wa_clientdata-net_weight,
                      'X' TO wa_clientdatax-matl_group,
                      'X' TO wa_clientdatax-base_uom,
                      'X' TO wa_clientdata-size_dim,
                      'X' TO wa_clientdatax-unit_of_wt,
                      'X' TO wa_clientdatax-net_weight,
             wa_tab-werks TO wa_plantdata-plant,
             wa_tab-ekgrp TO wa_plantdata-pur_group,
             wa_tab-prctr TO wa_plantdata-profit_ctr,
             wa_tab-werks TO wa_plantdatax-plant,
                      'X' TO wa_plantdatax-pur_group,
                      'X' TO wa_plantdatax-profit_ctr,
             wa_tab-werks TO wa_valuationdata-val_area,
             wa_tab-bklas TO wa_valuationdata-val_class,
             wa_tab-peinh TO wa_valuationdata-price_unit,
             wa_tab-verpr TO wa_valuationdata-moving_pr,
             wa_tab-stprs TO wa_valuationdata-std_price,
             wa_tab-xlifo TO wa_valuationdata-lifo_fifo,
             wa_tab-werks TO wa_valuationdatax-val_area,
                      'X' TO wa_valuationdatax-val_class,
                      'X' TO wa_valuationdatax-price_unit,
                      'X' TO wa_valuationdatax-moving_pr,
                      'X' TO wa_valuationdatax-std_price,
                      'X' TO wa_valuationdatax-lifo_fifo.
        APPEND wa_headdata TO it_headdata.
       APPEND wa_clientdata TO it_clientdata.
       APPEND wa_plantdata TO it_plantdata.
       APPEND wa_valuationdata TO it_valuationdata.
       MODIFY it_tab FROM wa_tab TRANSPORTING matnr.
      ENDLOOP.
    ENDFORM.                    "populate_tabs
    $$******************************************************************************

    Hai.
    check the below example.
    REPORT z34332_bdc_create_material .
    data: la_headdata type BAPIMATHEAD,
    la_clientdata type BAPI_MARA,
    la_CLIENTDATAX type BAPI_MARAX,
    la_return type BAPIRET2.
    data: i_materialdescription type table of BAPI_MAKT,
    wa_materialdescription like line of i_materialdescription.
    la_headdata-MATERIAL = '000000000000000004'.
    la_headdata-IND_SECTOR = 'M'.
    la_headdata-MATL_TYPE = 'FERT'.
    la_clientdata-BASE_UOM = 'FT3'.
    la_CLIENTDATAX-BASE_UOM = 'X'.
    la_clientdata-MATL_GROUP = '01'.
    la_CLIENTDATAX-MATL_GROUP = 'X'.
    wa_materialdescription = 'TEST'.
    append wa_materialdescription to i_materialdescription.
    clear: wa_materialdescription.
    CALL FUNCTION 'BAPI_MATERIAL_SAVEDATA'
    EXPORTING
    headdata = la_headdata
    CLIENTDATA = la_clientdata
    CLIENTDATAX = la_CLIENTDATAX
    PLANTDATA =
    PLANTDATAX =
    FORECASTPARAMETERS =
    FORECASTPARAMETERSX =
    PLANNINGDATA =
    PLANNINGDATAX =
    STORAGELOCATIONDATA =
    STORAGELOCATIONDATAX =
    VALUATIONDATA =
    VALUATIONDATAX =
    WAREHOUSENUMBERDATA =
    WAREHOUSENUMBERDATAX =
    SALESDATA =
    SALESDATAX =
    STORAGETYPEDATA =
    STORAGETYPEDATAX =
    FLAG_ONLINE = ' '
    FLAG_CAD_CALL = ' '
    IMPORTING
    RETURN = la_return
    TABLES
    MATERIALDESCRIPTION = i_materialdescription
    UNITSOFMEASURE =
    UNITSOFMEASUREX =
    INTERNATIONALARTNOS =
    MATERIALLONGTEXT =
    TAXCLASSIFICATIONS =
    RETURNMESSAGES =
    PRTDATA =
    PRTDATAX =
    EXTENSIONIN =
    EXTENSIONINX =
    write: la_return-TYPE, ',', la_return-MESSAGE.
    clear: la_headdata, la_return, la_clientdata, la_clientdatax.
    regards.
    sowjanya.b.

  • Report problem with BAPI_MATERIAL_SAVEDATA (help required)

    hi all,
    i am using this source code to create material using
    BAPI_MATERIAL_SAVEDATA.
    when i am executing the program,
    i am getting message the material no 512 transferred without leading 0.
    but when i am checking the mara table i am not getting the material 512 created.
    my program is as follows plz check where i am wrong ? why i am not able to create the material using this program.what changes i have to make in this program so that i will be successful in creating material.?
    *& Report  ZCREATE_MATERIAL
    *& Developer
    *& Date:   &DATE
                   STRUCTURE  DECLARATIONS                             *
    Report:zcreate_material.
    TABLES: BAPIMATHEAD,  "Headerdata
            BAPI_MARA,    "Clientdata
            BAPI_MARAX,   "Clientdatax
            BAPI_MARC,    "Plantdata
            BAPI_MARCX,   "Plantdatax
            BAPI_MAKT,    "Material description
            BAPIRET2.     "Return messages
    DATA:V_FILE TYPE STRING.
    DATA:
      BEGIN OF LSMW_MATERIAL_MASTER,
        MATNR(018) TYPE C,  "Material number
        MTART(004) TYPE C,  "Material type
        MBRSH(001) TYPE C,  "Industry sector
        WERKS(004) TYPE C,  "Plant
        MAKTX(040) TYPE C,  "Material description
       DISMM(002) TYPE C,  "Extra Field Added In the Program as
    *itsrequired
        MEINS(003) TYPE C,  "Base unit of measure
       MATKL(009) TYPE C,  "Material group
       SPART(002) TYPE C,  "Division
       LABOR(003) TYPE C,  "Lab/office
       PRDHA(018) TYPE C,  "Product hierarchy
       MSTAE(002) TYPE C,  "X-plant matl status
       MTPOS_MARA(004) TYPE C,  "Gen item cat group
       BRGEW(017) TYPE C,  "Gross weight
       GEWEI(003) TYPE C,  "Weight unit
       NTGEW(017) TYPE C,  "Net weight
       GROES(032) TYPE C,  "Size/Dimensions
       MAGRV(004) TYPE C,  "Matl grp pack matls
       BISMT(018) TYPE C,  "Old material number
       WRKST(048) TYPE C,  "Basic material
       PROFL(003) TYPE C,  "DG indicator profile
       KZUMW(001) TYPE C,  "Environmentally rlvt
       BSTME(003) TYPE C,  "Order unit
       VABME(001) TYPE C,
       EKGRP(003) TYPE C,  "Purchasing group
       XCHPF(001) TYPE C,  "Batch management
       EKWSL(004) TYPE C,  "Purchasing key value
       WEBAZ(003) TYPE C,  "GR processing time
       MFRPN(040) TYPE C,  "Manufacturer part number
       MFRNR(010) TYPE C,  "Manufacturer number
       VPRSV(001) TYPE C,  "Price control indicator
       STPRS(015) TYPE C,  "Standard price
       BWPRH(014) TYPE C,  "Commercial price1
       BKLAS(004) TYPE C,  "Valuation class
      END OF LSMW_MATERIAL_MASTER.
                   INTERNAL TABLE DECLARATIONS                         *
    *to store the input data
    DATA:
      BEGIN OF it_matmaster OCCURS 0.
            INCLUDE STRUCTURE LSMW_MATERIAL_MASTER.
    DATA:END OF it_matmaster.
    *for material description
    DATA:BEGIN OF IT_MATERIALDESC OCCURS 0.
         INCLUDE STRUCTURE BAPI_MAKT .
    DATA:END OF IT_MATERIALDESC.
    *to return messages
    DATA:BEGIN OF IT_RETURN OCCURS 0.
         INCLUDE STRUCTURE BAPIRET2.
    DATA:END OF IT_RETURN.
    SELECTION SCREEN
    SELECTION-SCREEN BEGIN OF BLOCK B1 WITH FRAME TITLE TEXT-002.
    PARAMETERS:P_FILE LIKE RLGRAP-FILENAME OBLIGATORY.
    SELECTION-SCREEN END OF BLOCK B1 .
    AT SELECTION SCREEN
    AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_FILE.
      CALL FUNCTION 'F4_FILENAME'
        EXPORTING
          PROGRAM_NAME  = SYST-CPROG
          DYNPRO_NUMBER = SYST-DYNNR
          FIELD_NAME    = 'P_FILE'
        IMPORTING
          FILE_NAME     = P_FILE.
                   TO UPLOAD THE DATA                                  *
    START-OF-SELECTION.
    V_FILE = P_FILE.
    CALL FUNCTION 'GUI_UPLOAD'
      EXPORTING
        filename                      = V_FILE
       FILETYPE                      = 'ASC'
       HAS_FIELD_SEPARATOR           = 'X'
      HEADER_LENGTH                 = 0
      READ_BY_LINE                  = 'X'
      DAT_MODE                      = ' '
    IMPORTING
      FILELENGTH                    =
      HEADER                        =
      tables
        data_tab                      =  IT_MATMASTER
    EXCEPTIONS
       FILE_OPEN_ERROR               = 1
       FILE_READ_ERROR               = 2
       NO_BATCH                      = 3
       GUI_REFUSE_FILETRANSFER       = 4
       INVALID_TYPE                  = 5
       NO_AUTHORITY                  = 6
       UNKNOWN_ERROR                 = 7
       BAD_DATA_FORMAT               = 8
       HEADER_NOT_ALLOWED            = 9
       SEPARATOR_NOT_ALLOWED         = 10
       HEADER_TOO_LONG               = 11
       UNKNOWN_DP_ERROR              = 12
       ACCESS_DENIED                 = 13
       DP_OUT_OF_MEMORY              = 14
       DISK_FULL                     = 15
       DP_TIMEOUT                    = 16
       OTHERS                        = 17
    IF sy-subrc <> 0.
    MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
             WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
    ENDIF.
                   DATA POPULATIONS                                    *
    LOOP AT  IT_MATMASTER.
      BAPIMATHEAD-MATERIAL = IT_MATMASTER-MATNR.
      BAPIMATHEAD-IND_SECTOR = IT_MATMASTER-Mbrsh.
      BAPIMATHEAD-MATL_TYPE = IT_MATMASTER-Mtart.
      BAPIMATHEAD-BASIC_VIEW = 'X'.
    BAPIMATHEAD-PURCHASE_VIEW = 'X'.
    BAPIMATHEAD-ACCOUNT_VIEW = 'X'.
    BAPI_MARA-MATL_GROUP = IT_MATMASTER-MATKL.
    BAPI_MARA-OLD_MAT_NO = IT_MATMASTER-BISMT.
      BAPI_MARA-BASE_UOM = IT_MATMASTER-MEINS.
    BAPI_MARA-BASIC_MATL = IT_MATMASTER-WRKST.
    BAPI_MARA-MFR_NO = IT_MATMASTER-MFRNR.
    BAPI_MARAX-MATL_GROUP = 'X'.
    BAPI_MARAX-OLD_MAT_NO = 'X'.
      BAPI_MARAX-BASE_UOM = 'X'.
    BAPI_MARAX-BASIC_MATL = 'X'.
    BAPI_MARAX-MFR_NO = 'X'.
    BAPI_MARC-PLANT = IT_MATMASTER-WERKS.
    BAPI_MARC-PUR_GROUP = IT_MATMASTER-EKGRP.
    BAPI_MARCX-PLANT = IT_MATMASTER-WERKS.
    BAPI_MARCX-PUR_GROUP = 'X'.
      IT_MATERIALDESC-LANGU = 'EN'.
      IT_MATERIALDESC-MATL_DESC = IT_MATMASTER-MAKTX.
      append IT_materialdesc.
      CALL FUNCTION 'BAPI_MATERIAL_SAVEDATA'
        EXPORTING
          headdata                   = BAPIMATHEAD
          CLIENTDATA                 = BAPI_MARA
          CLIENTDATAX                = BAPI_MARAx
        PLANTDATA                  = BAPI_MARc
        PLANTDATAX                 = BAPI_MARcx
        FORECASTPARAMETERS         =
        FORECASTPARAMETERSX        =
        PLANNINGDATA               =
        PLANNINGDATAX              =
        STORAGELOCATIONDATA        =
        STORAGELOCATIONDATAX       =
        VALUATIONDATA              =
        VALUATIONDATAX             =
        WAREHOUSENUMBERDATA        =
        WAREHOUSENUMBERDATAX       =
        SALESDATA                  =
        SALESDATAX                 =
        STORAGETYPEDATA            =
        STORAGETYPEDATAX           =
        FLAG_ONLINE                = ' '
        FLAG_CAD_CALL              = ' '
       IMPORTING
         RETURN                     = IT_RETURN
       TABLES
         MATERIALDESCRIPTION        = IT_MATERIALDESC
        UNITSOFMEASURE             =
        UNITSOFMEASUREX            =
        INTERNATIONALARTNOS        =
        MATERIALLONGTEXT           =
        TAXCLASSIFICATIONS         =
        RETURNMESSAGES             =
        PRTDATA                    =
        PRTDATAX                   =
        EXTENSIONIN                =
        EXTENSIONINX               =
      Bapi to commit the changes
        IF sy-subrc <> 0.
          CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
            EXPORTING
              wait = 'X'.
        ENDIF.
    WRITE:/    IT_RETURN-TYPE,
            2   IT_RETURN-ID,
            22  IT_RETURN-NUMBER,
            25  IT_RETURN-MESSAGE.
               IT_RETURN-LOG_NO,
               IT_RETURN-LOG_MSG_NO,
               IT_RETURN-MESSAGE_V1,
               IT_RETURN-MESSAGE_V2,
               IT_RETURN-MESSAGE_V3,
               IT_RETURN-MESSAGE_V4,
               IT_RETURN-PARAMETER,
               IT_RETURN-ROW,
               IT_RETURN-FIELD,
               IT_RETURN-SYSTEM.
    ENDLOOP.
    thanks
    sanjeev

    Actually your COMMIT call not at all executed.
    IF sy-subrc <> 0.
    CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
    EXPORTING
    wait = 'X'.
    ENDIF.
    The sy-subrc = 0 after the BAPI executed, the right way is after BAPI call check the bapi RETURN table has any error, if not commit the BAPI otherwise rollback.

  • BAPI_MATERIAL_SAVEDATA not updating the materials

    Hi Folks,
    I am trying using the BAPI_MATERIAL_SAVEDATA to change the MRP Type of the existing articles. Basically to mass update the articles.I am passing the Material only to the BAPIMATHEAD parameter and also populating the BAPI_MARC where the MRP type has to be changed and I also populate the corresponding BAPI_MARCX with 'X' that has to be changed to the Function Module. I could find when debugging the error message E 091 MH 'You must use retail functions to process the article' that is generated from another function module MATERIAL_MAINTAIN_DARK 'within BAPI_MATERIAL_SAVEDATA. I am using the FM as given below.
    CALL FUNCTION 'BAPI_MATERIAL_SAVEDATA'
      EXPORTING
        headdata                   = i_bapimathead
      CLIENTDATA                 = i_bapimara
      CLIENTDATAX                = i_bapimarax
        PLANTDATA                  = i_bapimarc
        PLANTDATAX                 = i_bapimarcx
    IMPORTING
       RETURN                     = i_bapireturn.
    TABLES
      MATERIALDESCRIPTION        =
      UNITSOFMEASURE             =
      UNITSOFMEASUREX            =
      INTERNATIONALARTNOS        =
      MATERIALLONGTEXT           =
      TAXCLASSIFICATIONS         =
      RETURNMESSAGES             =
      PRTDATA                    =  i_BAPIHM
      PRTDATAX                   =  i_BAPIHMX.
      EXTENSIONIN                =
      EXTENSIONINX               =
    Please help me understand if I have missed anything as why I am getting this error message. Many thanks.
    Regards,
    Tim

    REPORT Z_NEW_PROGRAM .
    *                STRUCTURE  DECLARATIONS                             *
    TABLES: BAPIMATHEAD,  "Headerdata
            BAPI_MARA,    "Clientdata
            BAPI_MARAX,   "Clientdatax
            BAPI_MARC,    "Plantdata
            BAPI_MARCX,   "Plantdatax
            BAPI_MAKT,    "Material description
            BAPIRET2.     "Return messages
    DATA:V_FILE TYPE STRING.
    DATA:
      BEGIN OF LSMW_MATERIAL_MASTER,
        MATNR(018) TYPE C,  "Material number
        MTART(004) TYPE C,  "Material type
        MBRSH(001) TYPE C,  "Industry sector
        WERKS(004) TYPE C,  "Plant
        MAKTX(040) TYPE C,  "Material description
        DISMM(002) TYPE C,  "Extra Field Added In the Program as itsrequired
        MEINS(003) TYPE C,  "Base unit of measure
        MATKL(009) TYPE C,  "Material group
        SPART(002) TYPE C,  "Division
        LABOR(003) TYPE C,  "Lab/office
        PRDHA(018) TYPE C,  "Product hierarchy
        MSTAE(002) TYPE C,  "X-plant matl status
        MTPOS_MARA(004) TYPE C,  "Gen item cat group
        BRGEW(017) TYPE C,  "Gross weight
        GEWEI(003) TYPE C,  "Weight unit
        NTGEW(017) TYPE C,  "Net weight
        GROES(032) TYPE C,  "Size/Dimensions
        MAGRV(004) TYPE C,  "Matl grp pack matls
        BISMT(018) TYPE C,  "Old material number
        WRKST(048) TYPE C,  "Basic material
        PROFL(003) TYPE C,  "DG indicator profile
        KZUMW(001) TYPE C,  "Environmentally rlvt
        BSTME(003) TYPE C,  "Order unit
        VABME(001) TYPE C,
        EKGRP(003) TYPE C,  "Purchasing group
        XCHPF(001) TYPE C,  "Batch management
        EKWSL(004) TYPE C,  "Purchasing key value
        WEBAZ(003) TYPE C,  "GR processing time
        MFRPN(040) TYPE C,  "Manufacturer part number
        MFRNR(010) TYPE C,  "Manufacturer number
        VPRSV(001) TYPE C,  "Price control indicator
        STPRS(015) TYPE C,  "Standard price
        BWPRH(014) TYPE C,  "Commercial price1
        BKLAS(004) TYPE C,  "Valuation class
      END OF LSMW_MATERIAL_MASTER.
    *                INTERNAL TABLE DECLARATIONS                         *
    *to store the input data
    DATA:
      BEGIN OF it_matmaster OCCURS 0.
            INCLUDE STRUCTURE LSMW_MATERIAL_MASTER.
    DATA:
      END OF it_matmaster.
    *for material description
    DATA:BEGIN OF IT_MATERIALDESC OCCURS 0.
         INCLUDE STRUCTURE BAPI_MAKT .
    DATA:END OF IT_MATERIALDESC.
    *to return messages
    DATA:BEGIN OF IT_RETURN OCCURS 0.
         INCLUDE STRUCTURE BAPIRET2.
    DATA:END OF IT_RETURN.
    *  SELECTION SCREEN
    SELECTION-SCREEN BEGIN OF BLOCK B1 WITH FRAME TITLE TEXT-002.
    PARAMETERS:P_FILE LIKE RLGRAP-FILENAME OBLIGATORY.
    SELECTION-SCREEN END OF BLOCK B1 .
    * AT SELECTION SCREEN
    AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_FILE.
      CALL FUNCTION 'F4_FILENAME'
        EXPORTING
          PROGRAM_NAME  = SYST-CPROG
          DYNPRO_NUMBER = SYST-DYNNR
          FIELD_NAME    = 'P_FILE'
        IMPORTING
          FILE_NAME     = P_FILE.
    *                TO UPLOAD THE DATA                                  *
    START-OF-SELECTION.
    V_FILE = P_FILE.
    CALL FUNCTION 'GUI_UPLOAD'
      EXPORTING
        filename                      = V_FILE
       FILETYPE                      = 'ASC'
       HAS_FIELD_SEPARATOR           = 'X'
    *   HEADER_LENGTH                 = 0
    *   READ_BY_LINE                  = 'X'
    *   DAT_MODE                      = ' '
    * IMPORTING
    *   FILELENGTH                    =
    *   HEADER                        =
      tables
        data_tab                      =  IT_MATMASTER
    EXCEPTIONS
       FILE_OPEN_ERROR               = 1
       FILE_READ_ERROR               = 2
       NO_BATCH                      = 3
       GUI_REFUSE_FILETRANSFER       = 4
       INVALID_TYPE                  = 5
       NO_AUTHORITY                  = 6
       UNKNOWN_ERROR                 = 7
       BAD_DATA_FORMAT               = 8
       HEADER_NOT_ALLOWED            = 9
       SEPARATOR_NOT_ALLOWED         = 10
       HEADER_TOO_LONG               = 11
       UNKNOWN_DP_ERROR              = 12
       ACCESS_DENIED                 = 13
       DP_OUT_OF_MEMORY              = 14
       DISK_FULL                     = 15
       DP_TIMEOUT                    = 16
       OTHERS                        = 17
    IF sy-subrc <> 0.
    MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
             WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
    ENDIF.
    *                DATA POPULATIONS                                    *
    LOOP AT  IT_MATMASTER.
      BAPIMATHEAD-MATERIAL = IT_MATMASTER-MATNR.
      BAPIMATHEAD-IND_SECTOR = IT_MATMASTER-Mbrsh.
      BAPIMATHEAD-MATL_TYPE = IT_MATMASTER-Mtart.
      BAPIMATHEAD-BASIC_VIEW = 'X'.
      BAPIMATHEAD-PURCHASE_VIEW = 'X'.
      BAPIMATHEAD-ACCOUNT_VIEW = 'X'.
      BAPI_MARA-MATL_GROUP = IT_MATMASTER-MATKL.
      BAPI_MARA-OLD_MAT_NO = IT_MATMASTER-BISMT.
      BAPI_MARA-BASE_UOM = IT_MATMASTER-MEINS.
      BAPI_MARA-BASIC_MATL = IT_MATMASTER-WRKST.
      BAPI_MARA-MFR_NO = IT_MATMASTER-MFRNR.
      BAPI_MARAX-MATL_GROUP = 'X'.
      BAPI_MARAX-OLD_MAT_NO = 'X'.
      BAPI_MARAX-BASE_UOM = 'X'.
      BAPI_MARAX-BASIC_MATL = 'X'.
      BAPI_MARAX-MFR_NO = 'X'.
      BAPI_MARC-PLANT = IT_MATMASTER-WERKS.
      BAPI_MARC-PUR_GROUP = IT_MATMASTER-EKGRP.
      BAPI_MARCX-PLANT = IT_MATMASTER-WERKS.
      BAPI_MARCX-PUR_GROUP = 'X'.
      IT_MATERIALDESC-LANGU = 'EN'.
      IT_MATERIALDESC-MATL_DESC = IT_MATMASTER-MAKTX.
      append IT_materialdesc.
      CALL FUNCTION 'BAPI_MATERIAL_SAVEDATA'
        EXPORTING
          headdata                   = BAPIMATHEAD
          CLIENTDATA                 = BAPI_MARA
          CLIENTDATAX                = BAPI_MARAx
         PLANTDATA                  = BAPI_MARc
         PLANTDATAX                 = BAPI_MARcx
    *     FORECASTPARAMETERS         =
    *     FORECASTPARAMETERSX        =
    *     PLANNINGDATA               =
    *     PLANNINGDATAX              =
    *     STORAGELOCATIONDATA        =
    *     STORAGELOCATIONDATAX       =
    *     VALUATIONDATA              =
    *     VALUATIONDATAX             =
    *     WAREHOUSENUMBERDATA        =
    *     WAREHOUSENUMBERDATAX       =
    *     SALESDATA                  =
    *     SALESDATAX                 =
    *     STORAGETYPEDATA            =
    *     STORAGETYPEDATAX           =
    *     FLAG_ONLINE                = ' '
    *     FLAG_CAD_CALL              = ' '
       IMPORTING
         RETURN                     = IT_RETURN
       TABLES
         MATERIALDESCRIPTION        = IT_MATERIALDESC
    *     UNITSOFMEASURE             =
    *     UNITSOFMEASUREX            =
    *     INTERNATIONALARTNOS        =
    *     MATERIALLONGTEXT           =
    *     TAXCLASSIFICATIONS         =
    *     RETURNMESSAGES             =
    *     PRTDATA                    =
    *     PRTDATAX                   =
    *     EXTENSIONIN                =
    *     EXTENSIONINX               =
    WRITE:/    IT_RETURN-TYPE,
            2   IT_RETURN-ID,
            22  IT_RETURN-NUMBER,
            25  IT_RETURN-MESSAGE.
    *            IT_RETURN-LOG_NO,
    *            IT_RETURN-LOG_MSG_NO,
    *            IT_RETURN-MESSAGE_V1,
    *            IT_RETURN-MESSAGE_V2,
    *            IT_RETURN-MESSAGE_V3,
    *            IT_RETURN-MESSAGE_V4,
    *            IT_RETURN-PARAMETER,
    *            IT_RETURN-ROW,
    *            IT_RETURN-FIELD,
    *            IT_RETURN-SYSTEM.
    ENDLOOP.
    are you using this bapi BAPI_TRANSACTION_COMMIT,
    after calling the BAPI_MATERIAL_SAVEDATA .
    if not use that and check it.
    thanks
    vijay

  • Problem in using BAPI_MATERIAL_SAVEDATA

    I want to extend a Material from Plant A to Plant B. I am getting the following error.
    E   MM         360 Key fields for user data PLANTDATA and checkbox structure PLANTDATAX are different
    Please correct in the following code
    data: la_headdata type BAPIMATHEAD,
    la_clientdata type BAPI_MARA,
    la_CLIENTDATAX type BAPI_MARAX,
    la_PLANTDATA type BAPI_marc,    "Plant View
    la_PLANTDATAX type bapi_marcx,  "Plant View
    la_mbew  type  bapi_mbew,    "Accounting View
    la_mbewx  type bapi_mbewx.
    *la_return type BAPIRET2.
    *to return messages
    DATA:BEGIN OF la_RETURN OCCURS 0.
            INCLUDE STRUCTURE BAPIRET2.
    DATA:END OF la_RETURN.
    data: i_materialdescription type table of BAPI_MAKT,
          wa_mat_desc like line of i_materialdescription.
    Header
    la_headdata-MATERIAL = '000001000000004000'.
    la_headdata-IND_SECTOR = 'M'.
    la_headdata-MATL_TYPE = 'ZALB'.
        la_headdata-basic_view      = 'X'.
        la_headdata-purchase_view   = 'X'.
        la_headdata-account_view    = 'X'.
        la_headdata-MRP_VIEW        = 'X'.
        la_headdata-STORAGE_VIEW    = 'X'.
        la_headdata-COST_VIEW       = 'X'.
    Client Data - Basic
    la_clientdata-BASE_UOM = 'EA'.
    la_CLIENTDATAX-BASE_UOM = 'X'.
    la_clientdata-MATL_GROUP = '21001000'.
    la_CLIENTDATAX-MATL_GROUP = 'X'.
    la_clientdata-unit_of_wt     = 'KG'.
    la_clientdatax-unit_of_wt    = 'X'.
    la_clientdata-division       = '10'.
    la_clientdatax-division      = 'X'.
    Material Description
    wa_mat_desc-langu           = 'E'.
    wa_mat_desc-MATL_DESC = '+TLA,FILTER KIT,BUNDLE B'.
    append wa_mat_desc to i_materialdescription.
    clear: wa_mat_desc.
    Plant - Purchasing
    la_PLANTDATA-plant     = '5530'.
    la_PLANTDATAX-plant     = 'X'.
    la_PLANTDATA-pur_group     = '006'.
    la_PLANTDATAX-pur_group    = 'X'.
    Accounting
    la_mbew-val_area = '5530'.
    la_mbewx-val_area = 'X'.
    la_mbew-price_ctrl = 'S'.
    la_mbewx-price_ctrl = 'X'.
    la_mbew-std_price = '0.01'.
    la_mbewx-std_price = 'X'.
    *la_mbew-price_unit = '1.000'.
    *la_mbewx-price_unit = 'X'.
    CALL FUNCTION 'BAPI_MATERIAL_SAVEDATA'
    EXPORTING
    headdata = la_headdata
    CLIENTDATA = la_clientdata
    CLIENTDATAX = la_CLIENTDATAX
    PLANTDATA = la_PLANTDATA
    PLANTDATAX = la_PLANTDATAX
    FORECASTPARAMETERS =
    FORECASTPARAMETERSX =
    PLANNINGDATA =
    PLANNINGDATAX =
    STORAGELOCATIONDATA =
    STORAGELOCATIONDATAX =
    VALUATIONDATA = la_mbew
    VALUATIONDATAX = la_mbewx
    WAREHOUSENUMBERDATA =
    WAREHOUSENUMBERDATAX =
    SALESDATA =
    SALESDATAX =
    STORAGETYPEDATA =
    STORAGETYPEDATAX =
    FLAG_ONLINE = ' '
    FLAG_CAD_CALL = ' '
    IMPORTING
    RETURN = la_return
    TABLES
    MATERIALDESCRIPTION = i_materialdescription
    UNITSOFMEASURE =
    UNITSOFMEASUREX =
    INTERNATIONALARTNOS =
    MATERIALLONGTEXT =
    TAXCLASSIFICATIONS =
    RETURNMESSAGES =
    PRTDATA =
    PRTDATAX =
    EXTENSIONIN =
    EXTENSIONINX =
    read table la_return with key TYPE = 'S'.
      if sy-subrc = 0.
          CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'.
      endif.
      WRITE:/ la_RETURN-TYPE,
        2 la_RETURN-ID,
        22 la_RETURN-NUMBER,
        25 la_RETURN-MESSAGE.

    Hi,
    hope this code gives you an idea
    *& Report ZKAR_MATMAS_BAPI
    *& This program demonstrates how easy it is to create Material master
    *& data using BAPI_MATERIAL_SAVEDATA
    *& The program also generates a report post-execution displaying errors
    *& as well as successful uploads
    REPORT ZKAR_MATMAS_BAPI.
    * 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_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
    *--- 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,
                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
    'C:\Material_master.XLS'.
    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
    * text
    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
    * text
    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 .
      LOOP AT IT_DATA.
    * Header
        UNPACK IT_DATA-MATNR TO IT_DATA-MATNR.
        BAPI_HEAD-MATERIAL = IT_DATA-MATNR.
        BAPI_HEAD-IND_SECTOR = IT_DATA-MBRSH.
        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 = IT_DATA-SPRAS.
        IT_MAKT-MATL_DESC = IT_DATA-MAKTX.
        APPEND IT_MAKT.
    * 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_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-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'.
    *--- 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
    * FORECASTPARAMETERS =
    * FORECASTPARAMETERSX =
    * PLANNINGDATA =
    * PLANNINGDATAX =
    * STORAGELOCATIONDATA =
    * STORAGELOCATIONDATAX =
    * VALUATIONDATA = BAPI_MBEW1
    * VALUATIONDATAX = BAPI_MBEWX
    * WAREHOUSENUMBERDATA =
    * WAREHOUSENUMBERDATAX =
    * SALESDATA = BAPI_MVKE1
    * SALESDATAX = BAPI_MVKEX
    * STORAGETYPEDATA =
    * STORAGETYPEDATAX =
        IMPORTING
        RETURN = BAPI_RETURN
        TABLES
        MATERIALDESCRIPTION = IT_MAKT
    * UNITSOFMEASURE =
    * UNITSOFMEASUREX =
    * INTERNATIONALARTNOS =
    * MATERIALLONGTEXT =
    * TAXCLASSIFICATIONS =
    * RETURNMESSAGES =
    * PRTDATA =
    * PRTDATAX =
    * EXTENSIONIN =
    * EXTENSIONINX =
        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. " UPLOAD_MATMAS
    Regards,
    V.Balaji
    Reward if Usefull...

  • BASIC PLANT DATA VIEW in BAPI_MATERIAL_SAVEDATA

    HI,
        I need to save some fields in the BASIC PLANT DATA View using BAPI_MATERIAL_SAVEDATA. Would anyone know the HEADER VIEW DATA I need to select and how I am going to go about this?
    I am able to successfully save a material but I am having problems in creating the material's BASIC PLANT DATA VIEW.
    Thanks!

    Check out this code:
    *& Report  ZBAPI_MATERIAL_SAVEDATA
    *& AUTHOR
    *& PURPOSE : THIS REPORT USES BAPI MATERIAL SAVE DATA TO UPDATE AND CREATE
    *&           THE MATERIAL
    REPORT  ZBAPI_MATERIAL_SAVEDATA NO STANDARD PAGE HEADING MESSAGE-ID (ZHNC).
    TYPES:BEGIN OF TY_MAT,
           MATERIAL(4),
           IND_SECTOR(1),
           MATL_TYPE(4),
    **       BASIC_VIEW(1),
    **       SALES_VIEW(1),
    **       PURCHASE_VIEW(1),
    *       STORAGE_VIEW(1),
           MATL_GROUP(9),
           BASE_UOM(3),
           BASE_UOM_ISO(3),
    *       MATL_GROUP1(1),
    *       BASE_UOM1(1),
    *       BASE_UOM_ISO1(1),
           PLANT(4),
           DEL_FLAG(1),
           PUR_GROUP(3),
           BASE_QTY(13),
    *       PLANT2(4),
    *       DEL_FLAG5(1),
    *       PUR_GROUP1(1),
    *       BASE_QTY1(1),
    *       PLANT3(4),
           STGE_LOC(4),
           MRP_IND(1),
    *       PLANT4(4),
    *       STGE_LOC1(4),
    *       MRP_IND1(1),
           SALES_ORG(4),
           DISTR_CHAN(2),
           DEL_FLAG1(1),
           MIN_ORDER(13),
    *       SALES_ORG1(4),
    *       DISTR_CHAN1(2),
    *       DEL_FLAG2(1),
    *       MIN_ORDER1(1),
           LANGU(2),
          MATL_DESC(40),
       END OF TY_MAT.
    DATA: IT_DATA TYPE TABLE OF TY_MAT,
          WA_DATA LIKE LINE  OF IT_DATA.
    *decalraing flag
    data: v_flag value ''.
    *DECLARING WORK AREAs  TO BE PASSED TO THE FUNCTION MODULE.
    DATA: BAPI_HEAD LIKE BAPIMATHEAD,
          BAPI_CLIENTDATA LIKE BAPI_MARA,
          BAPI_CLIENTDATAX LIKE BAPI_MARAX,
          BAPI_PLANTDATA LIKE BAPI_MARC,
          BAPI_PLANTDATAX LIKE  BAPI_MARCX,
          BAPI_STORAGELOCATIONDATA LIKE BAPI_MARD,
          BAPI_STORAGELOCATIONDATAX LIKE BAPI_MARDX,
          BAPI_SALESDATA LIKE BAPI_MVKE,
          BAPI_SALESDATAX LIKE BAPI_MVKEX,
          BAPI_MAKT LIKE BAPI_MAKT,
          BAPI_RETURN LIKE BAPIRET2.
    *INTERNAL TABLE TO HOLD THE MATERIAL DESCRIPTION
    DATA: BEGIN OF IT_MAKT OCCURS 0.
    INCLUDE STRUCTURE BAPI_MAKT.
    DATA END OF IT_MAKT.
    DATA:BEGIN OF IT_RET OCCURS 0.
    INCLUDE STRUCTURE BAPIRET2.
    DATA END OF IT_RET.
    *INTERNAL TABLE TO HOLD HEADER DATA
    DATA: IT_EXCEL TYPE ALSMEX_TABLINE OCCURS 0 WITH HEADER LINE.
    *SELECTION-SCREEN ELEMENTS
    SELECTION-SCREEN BEGIN OF BLOCK B1 WITH FRAME TITLE TEXT-001.
    PARAMETER: FNAME TYPE RLGRAP-FILENAME OBLIGATORY DEFAULT 'C:\Documents and Settings\Administrator\Desktop\MATMAS.XLS' .
    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 B1.
    *DECLARATION OF EXCELAL TABLE
    AT SELECTION-SCREEN ON VALUE-REQUEST FOR FNAME.
    PERFORM F_GET_FILE USING FNAME.
    START-OF-SELECTION.
    PERFORM F_XLS_ITAB USING FNAME
                       CHANGING IT_EXCEL.
    PERFORM F_MOVE_DATA.
    perform F_GET_DATA.
    *&      Form  F_GET_FILE
    *       text
    *      -->P_FNAME  text
    *      <--P_SY_SUBRC  text
    FORM F_GET_FILE  USING    P_FNAME LIKE FNAME.
    CALL FUNCTION 'KD_GET_FILENAME_ON_F4'
    EXPORTING
       PROGRAM_NAME        = SYST-REPID
       DYNPRO_NUMBER       = SYST-DYNNR
    *   FIELD_NAME          = ' '
    *   STATIC              = ' '
    *   MASK                = ' '
      CHANGING
        FILE_NAME           = P_FNAME
    * EXCEPTIONS
    *   MASK_TOO_LONG       = 1
    *   OTHERS              = 2
    IF SY-SUBRC  0.
    MESSAGE E006(ZHNC).
    ENDIF.
    ENDFORM.                    " F_GET_FILE
    *&      Form  F_XLS_ITAB
    *       text
    *      -->P_FNAME  text
    *      <--P_IT_EXCEL  text
    FORM F_XLS_ITAB  USING    P_FNAME
                     CHANGING P_IT_EXCEL.
    CALL FUNCTION 'ALSM_EXCEL_TO_INTERNAL_TABLE'
      EXPORTING
        FILENAME                      = FNAME
        I_BEGIN_COL                   = P_BEGCOL
        I_BEGIN_ROW                   = P_BEGROW
        I_END_COL                     = P_ENDCOL
        I_END_ROW                     = P_ENDROW
      TABLES
        INTERN                        = IT_EXCEL
    EXCEPTIONS
       INCONSISTENT_PARAMETERS       = 1
       UPLOAD_OLE                    = 2
       OTHERS                        = 3
    IF SY-SUBRC  0.
    * MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
    *         WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
    ENDIF.
    ENDFORM.                    " F_XLS_ITAB
    *&      Form  F_MOVE_DATA
    *       text
    *  -->  p1        text
    *  <--  p2        text
    FORM F_MOVE_DATA .
    DATA : LV_INDEX TYPE I.
    FIELD-SYMBOLS <FS>.
    *--- Sorting the internal table
    SORT IT_EXCEL BY ROW COL.
    CLEAR IT_EXCEL.
    LOOP AT IT_EXCEL.
    MOVE IT_EXCEL-COL TO LV_INDEX.
    *--- Assigning the each record to an internal table row
    ASSIGN COMPONENT LV_INDEX OF STRUCTURE WA_DATA TO <FS>.
    *--- Asigning the field value to a field symbol
    MOVE IT_EXCEL-VALUE TO <FS>.
    AT END OF ROW.
    APPEND WA_DATA TO IT_DATA.
    CLEAR WA_DATA.
    ENDAT.
    ENDLOOP.
    ENDFORM.                    " F_MOVE_DATA
    *&      Form  F_GET_DATA
    *       text
    *  -->  p1        text
    *  <--  p2        text
    FORM F_GET_DATA .
    LOOP AT IT_DATA INTO WA_DATA.
    MOVE-CORRESPONDING WA_DATA  TO  BAPI_HEAD.
    BAPI_HEAD-BASIC_VIEW ='X'.
    BAPI_HEAD-SALES_VIEW ='X'.
    BAPI_HEAD-PURCHASE_VIEW ='X'.
    BAPI_HEAD-STORAGE_VIEW ='X'.
    MOVE-CORRESPONDING WA_DATA TO BAPI_CLIENTDATA.
    BAPI_CLIENTDATAX-MATL_GROUP = 'X'.
    BAPI_CLIENTDATAX-BASE_UOM = 'X'.
    BAPI_CLIENTDATAX-BASE_UOM_ISO = 'X'.
    MOVE-CORRESPONDING WA_DATA TO BAPI_PLANTDATA.
    BAPI_PLANTDATAX-PLANT = BAPI_PLANTDATA-PLANT.
    BAPI_PLANTDATAX-DEL_FLAG = 'X'.
    BAPI_PLANTDATAX-PUR_GROUP = 'X'.
    BAPI_PLANTDATAX-BASE_QTY = 'X'.
    MOVE-CORRESPONDING WA_DATA TO BAPI_STORAGELOCATIONDATA.
    BAPI_STORAGELOCATIONDATA-PLANT = BAPI_PLANTDATA-PLANT.
    BAPI_STORAGELOCATIONDATAX-PLANT = BAPI_STORAGELOCATIONDATA-PLANT.
    BAPI_STORAGELOCATIONDATAX-STGE_LOC = BAPI_STORAGELOCATIONDATA-STGE_LOC.
    BAPI_STORAGELOCATIONDATAX-MRP_IND = 'X'.
    MOVE-CORRESPONDING WA_DATA TO BAPI_SALESDATA.
    BAPI_SALESDATAX-SALES_ORG = BAPI_SALESDATA-SALES_ORG.
    BAPI_SALESDATAX-DISTR_CHAN = BAPI_SALESDATA-DISTR_CHAN.
    BAPI_SALESDATAX-DEL_FLAG = BAPI_SALESDATA-DEL_FLAG.
    BAPI_SALESDATAX-MIN_ORDER = 'X'.
    REFRESH IT_MAKT.
    IT_MAKT-LANGU = WA_DATA-LANGU.
    IT_MAKT-MATL_DESC = WA_DATA-MATL_DESC.
    APPEND IT_MAKT.
    CLEAR IT_RET.
    REFRESH IT_RET.
    PERFORM F_CALL_BAPI.
    READ TABLE IT_RET WITH KEY TYPE = 'S'.
    IF SY-SUBRC EQ 0.
    PERFORM F_BAPI_COMMIT.
    WRITE:/ 'MATERIAL CREATED OR UPDATED SUCESSFULLY WITH MATERIAL NO',WA_DATA-MATERIAL.
    ELSE.
    MESSAGE E000(ZHNC) WITH 'ERROR IN CREATING THE MATERIAL'.
    *WRITE: / 'ERROR IN CREATIN MATERIAL',IT_RET-MESSAGE.
    *PERFORM F_DOWNLOAD.
    ENDIF.
    *ENDIF.
    ENDLOOP.
    ENDFORM.                    " F_GET_DATA
    *&      Form  F_CALL_BAPI
    *       text
    *  -->  p1        text
    *  <--  p2        text
    FORM F_CALL_BAPI .
    CALL FUNCTION 'BAPI_MATERIAL_SAVEDATA'
      EXPORTING
        HEADDATA                   = BAPI_HEAD
       CLIENTDATA                 =  BAPI_CLIENTDATA
       CLIENTDATAX                =  BAPI_CLIENTDATAX
       PLANTDATA                  =  BAPI_PLANTDATA
       PLANTDATAX                 =  BAPI_PLANTDATAX
       STORAGELOCATIONDATA        =  BAPI_STORAGELOCATIONDATA
       STORAGELOCATIONDATAX       =  BAPI_STORAGELOCATIONDATAX
       SALESDATA                  =  BAPI_SALESDATA
       SALESDATAX                 =  BAPI_SALESDATAX
    IMPORTING
       RETURN                     =  IT_RET
    TABLES
       MATERIALDESCRIPTION        = IT_MAKT
    *   UNITSOFMEASURE             =
    *   UNITSOFMEASUREX            =
    *   INTERNATIONALARTNOS        =
    *   MATERIALLONGTEXT           =
    *   TAXCLASSIFICATIONS         =
    *   RETURNMESSAGES             =
    *   PRTDATA                    =
    *   PRTDATAX                   =
    *   EXTENSIONIN                =
    *   EXTENSIONINX               =
    APPEND IT_RET.
    ENDFORM.                    " F_CALL_BAPI
    *&      Form  F_BAPI_COMMIT
    *       text
    *  -->  p1        text
    *  <--  p2        text
    FORM F_BAPI_COMMIT .
    CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
    * EXPORTING
    *   WAIT         =
    * IMPORTING
    *   RETURN        =
    ENDFORM.                    " F_BAPI_COMMIT

  • Error in BAPI_MATERIAL_SAVEDATA - ACCOUNTING_KEYS_READ_FOR_BWKEY

    Hello,
    An error was occured when I use a program that transfers data form one system to another with bapi BAPI_MATERIAL_SAVEDATA.
    Error is :
    "Required parameters missing when calling up module ACCOUNTING_KEYS_READ_FOR_BWKEY"
    I have no idea what this message means and what the solution is..
    Can you help me?
    Thanks..

    I have found a work around.  We have a custom function that called this BAPI_MATERIAL_SAVEDATA, and in the SAP R/3 4.6 we did not pass the valuationdata and valuationdatax.  I found that you have to pass these.  The only field you need to pass is valu_area.  Check the table T001K to see what value it should be.  This corresponds to "plant" as far as I can tell.  Here is some of the code=  ( I only show what I had to add to populate the val_area, which is bwkey.
      DATA: st_valuationdata LIKE BAPI_MBEW,
               st_valuationdatax LIKE BAPI_MBEWX.
      move sales_org to st_valuationdata-val_area.
      move sales_org to st_valuationdatax-val_area.
    I also populate other structures...but this one I only move the value
    of sales_org, which happens to be the same as bwkey on our system.
    commented out alot of the structures before.  Because of ECC 6 upgrade,
    I had to uncomment the VALUATIONDATA and VALUATIONDATAX.
      CALL FUNCTION 'BAPI_MATERIAL_SAVEDATA'
        EXPORTING
         headdata                   = st_mat_hdr
         clientdata                 = st_clientdata
         clientdatax                = st_clientdatax
    maybe need to use plantdata to enter plant number...
         plantdata                  = st_plantdata
         plantdatax                 = st_plantdatax
      FORECASTPARAMETERS         =
      FORECASTPARAMETERSX        =
      PLANNINGDATA               =
      PLANNINGDATAX              =
      STORAGELOCATIONDATA        =
    *{   INSERT         SNDK900107                                        2
        VALUATIONDATA              = st_valuationdata
        VALUATIONDATAX             = st_valuationdatax
    *}   INSERT
      STORAGELOCATIONDATAX       =
      VALUATIONDATA              =
      VALUATIONDATAX             =
      WAREHOUSENUMBERDATA        =
      WAREHOUSENUMBERDATAX       =
       salesdata                  =  st_salesdata
       salesdatax                 =  st_salesdatax
      STORAGETYPEDATA            =
      STORAGETYPEDATAX           =
      FLAG_ONLINE                = ' '
      IMPORTING
         return                     =  st_bapi_return
       TABLES
         materialdescription        =  tbl_mat_desc
        unitsofmeasure             =   tbl_unitsofmeasure
        unitsofmeasurex            =   tbl_unitsofmeasurex
      INTERNATIONALARTNOS        =
      MATERIALLONGTEXT           =
        taxclassifications         =   tbl_taxclassifications.
      RETURNMESSAGES             =
      PRTDATA                    =
      PRTDATAX                   =
      EXTENSIONIN                =
      EXTENSIONINX               =
    Now it works....So something has changed with the upgrade to make it
    necessary to at least pass the plant in the valuationdata, and the valuationdatax
    structures.
    Chris Mason

  • BAPI_MATERIAL_SAVEDATA-Tax fields not getting updated.

    Hi Everyone,
        I'm trying to create material through this BAPI -"BAPI_MATERIAL_SAVEDATA"
    I'm also passing the tax information related to it in the TAXCLASSIFICATIONS table.I'm populating the fields in the format as I have shown below in the code.Everything is working fine ,material is getting created except the tax information in the material not being affected against what I'm passing.I'm not sure though what does the tax_ind field does in the TAXCLASSIFICATIONS  table.
    Specifically,The country CA has different type codes mentioned as CATX1,CATX2,CATX3.But the values are getting updated only for the CATX1 category code.So after the creation, All the countries have their taxes classified except and CATX2 and CATX3 remain blank-no entry at all.
    Kindly let me know if you have a clue regarding this.
    FUNCTION Z_CREATE_MATERIAL.
    *"*"Local Interface:
    *"  IMPORTING
    *"     VALUE(MATERIAL) TYPE  MARA-MATNR OPTIONAL
    *"     VALUE(MATDESC) TYPE  MAKT-MAKTX OPTIONAL
    *"     VALUE(KBETR) TYPE  BDCDATA-FVAL OPTIONAL
    *"     VALUE(MATCOST) TYPE  STPRS_BAPI OPTIONAL
    *"  EXPORTING
    *"     VALUE(MESSAGE) TYPE  STRING
      DATA: BAPI_HEAD   LIKE BAPIMATHEAD,
            BAPI_MAKT   LIKE BAPI_MAKT,    "Material Description
            BAPI_MARA1  LIKE BAPI_MARA,    "Client Data
            BAPI_MARAX  LIKE BAPI_MARAX,
            BAPI_MARC1  LIKE BAPI_MARC,    "Plant View
            BAPI_MARCX  LIKE BAPI_MARCX,
            BAPI_MBEW1  LIKE BAPI_MBEW,    "Accounting View
            BAPI_MBEWX  LIKE BAPI_MBEWX,
            BAPI_RETURN LIKE BAPIRET2,
            bapi_sales like BAPI_MVKE,
            bapi_salesx like BAPI_MVKEX,
            bapi_mard like BAPI_mard,
            bapi_mardx like BAPI_mardx.
      DATA: BEGIN OF INT_MAKT OCCURS 100.
              INCLUDE STRUCTURE BAPI_MAKT.
      DATA: END OF INT_MAKT.
      DATA: BEGIN OF L_T_MARM OCCURS 100.
              INCLUDE STRUCTURE   BAPI_MARM.
      DATA: END OF L_T_MARM.
      DATA: BEGIN OF L_T_MARMx OCCURS 100.
              INCLUDE STRUCTURE   BAPI_MARMx.
      DATA: END OF L_T_MARMx.
      DATA: BEGIN OF L_T_tax OCCURS 100.
              INCLUDE STRUCTURE   BAPI_MLAN.
      DATA: END OF L_T_tax.
    *for plant 3800
    * Header
      BAPI_HEAD-MATERIAL        = MATERIAL.
      BAPI_HEAD-IND_SECTOR      = '1'.
      BAPI_HEAD-MATL_TYPE       = 'HAWA'.
      BAPI_HEAD-BASIC_VIEW      = 'X'.
      bapi_head-SALES_VIEW = 'X'.
      bapi_head-PURCHASE_VIEW = 'X'.
      BAPI_HEAD-ACCOUNT_VIEW    = 'X'.
      bapi_head-cost_view = 'X'.
      bapi_head-mrp_view = 'X'.
    * Client Data - Basic
      BAPI_MARA1-BASE_UOM       = 'EA'.
      BAPI_MARA1-UNIT_OF_WT     = 'LB'.
      BAPI_MARA1-ALLWD_VOL = '10'.
      BAPI_MARA1-PACK_VO_UN = 'CCM'.
      bapi_marax-ALLWD_VOL = 'X'.
      bapi_marax-PACK_VO_UN = 'X'.
      BAPI_MARA1-DIVISION       = '00'.
      BAPI_MARA1-NET_WEIGHT     = '1'.
      BAPI_MARA1-MATL_GROUP = '002'.
      BAPI_MARa1-TRANS_GRP = '0001'.
      bapi_mara1-prod_hier = '001700010000000110'.
      BAPI_MARAX-trans_grp    = 'X'.
      bapi_marax-prod_hier = 'X'.
      BAPI_MARAX-BASE_UOM   = 'X'.
      BAPI_MARAX-UNIT_OF_WT   = 'X'.
      BAPI_MARAX-DIVISION    = 'X'.
      BAPI_MARAX-MATL_GROUP    = 'X'.
      BAPI_MARAX-NET_WEIGHT    = 'X'.
      bapi_mara1-ITEM_CAT = 'NORM'.
      BAPI_MARAX-item_cat    = 'X'.
    *Units of measure - Gross weight populate
      L_T_MARM-ALT_UNIT = 'EA'.
      L_T_MARM-ALT_UNIT_ISO = 'EA'.
      L_T_MARM-GROSS_WT = '1'.
      L_T_MARM-UNIT_OF_WT = 'LB'.
      L_T_MARM-VOLUME = '100'.
      L_T_MARM-VOLUMEUNIT = 'CCM'.
      L_T_MARMX-VOLUME = 'X'.
      L_T_MARMX-VOLUMEUNIT = 'X'.
      APPEND L_T_MARM.
      L_T_MARMX-UNIT_OF_WT = 'X'.
      L_T_MARMX-GROSS_WT = 'X'.
      L_T_MARMX-ALT_UNIT = 'EA'.
      L_T_MARMX-ALT_UNIT_ISO = 'EA'.
      APPEND L_T_MARMX.
    *Tax Classification
      L_T_tax-DEPCOUNTRY = 'US'.
      L_T_tax-DEPCOUNTRY_ISO = 'US'.
      L_T_tax-TAX_TYPE_1 = 'UTXJ'.
      L_T_tax-TAXCLASS_1 = '1'.
       append l_t_tax.
      L_T_tax-DEPCOUNTRY = 'DE'.
      L_T_tax-DEPCOUNTRY_ISO = 'DE'.
      L_T_tax-TAX_TYPE_1 = 'MWST'.
      L_T_tax-TAXCLASS_1 = '1'.
      append l_t_tax.
      L_T_tax-DEPCOUNTRY = 'CA'.
      L_T_tax-DEPCOUNTRY_ISO = 'CA'.
      L_T_tax-TAX_TYPE_1 = 'CTX1'.
      L_T_tax-TAXCLASS_1 = '0'.
      append l_t_tax.
      L_T_tax-DEPCOUNTRY = 'CA'.
      L_T_tax-DEPCOUNTRY_ISO = 'CA'.
      L_T_tax-TAX_TYPE_1 = 'CTX2'.
      L_T_tax-TAXCLASS_1 = '0'.
       append l_t_tax.
      L_T_tax-DEPCOUNTRY = 'CA'.
      L_T_tax-DEPCOUNTRY_ISO = 'CA'.
      L_T_tax-TAX_TYPE_1 = 'CTX3'.
      L_T_tax-TAXCLASS_1 = '0'.
        append l_t_tax.
      L_T_tax-DEPCOUNTRY = 'AU'.
      L_T_tax-DEPCOUNTRY_ISO = 'AU'.
      L_T_tax-TAX_TYPE_1 = 'ATX1'.
      L_T_tax-TAXCLASS_1 = '0'.
       append l_t_tax.
      L_T_tax-DEPCOUNTRY = 'NZ'.
      L_T_tax-DEPCOUNTRY_ISO = 'NZ'.
      L_T_tax-TAX_TYPE_1 = 'NZTX'.
      L_T_tax-TAXCLASS_1 = '0'.
       append l_t_tax.
    * Material Description
      REFRESH INT_MAKT.
      INT_MAKT-LANGU           = 'EN'.
      INT_MAKT-MATL_DESC       = MATDESC.
      APPEND INT_MAKT.
    * Plant - Purchasing
      BAPI_MARC1-PLANT      = '3800'.
      BAPI_MARC1-PUR_GROUP  = '100'.
      BAPI_MARCX-PLANT      = '3800'.
      BAPI_MARC1-ISS_ST_LOC = '0001'.
      BAPI_MARC1-SLOC_EXPRC = '0001'.
      BAPI_MARCx-PUR_GROUP      = 'X'.
      BAPI_MARCX-ISS_ST_LOC = 'X'.
      BAPI_MARCX-SLOC_EXPRC = 'X'.
      BAPI_MARC1-LOADINGGRP = '0002'.
      BAPI_MARCx-LOADINGGRP = 'X'.
      BAPI_MARC1-PLND_DELRY = '1'.
      BAPI_MARC1-MRP_TYPE = 'PD'.
      BAPI_MARC1-MRP_CTRLER = '001'.
      BAPI_MARC1-SM_KEY = '001'.
      BAPI_MARC1-LOTSIZEKEY = 'TB'.
      BAPI_MARC1-PROC_TYPE = 'F'.
      BAPI_MARCx-PLND_DELRY      = 'X'.
      BAPI_MARCx-MRP_TYPE      = 'X'.
      BAPI_MARCx-MRP_CTRLER      = 'X'.
      BAPI_MARCx-SM_KEY      = 'X'.
      BAPI_MARCx-LOTSIZEKEY      = 'X'.
      BAPI_MARCx-proc_type = 'X'.
      BAPI_MARC1-MRP_GROUP = '0030'.
      BAPI_MARCx-MRP_GROUP = 'X'.
    *Sales View
      bapi_sales-SALES_ORG = '3020'.
      bapi_sales-DISTR_CHAN = '14'.
      bapi_sales-DELYG_PLNT =  '3800'.
      BAPI_SALES-ITEM_CAT = 'NORM'.
      bapi_salesx-ITEM_CAT = 'X'.
      bapi_salesx-Delyg_plnt = 'X'.
      bapi_salesx-sales_org = '3020'.
      bapi_salesx-DISTR_CHAN = '14'.
      bapi_sales-MATL_STATS = '1'.
    bapi_salesx-MATL_STATS = 'X'.
    * Accounting
      BAPI_MBEW1-VAL_AREA   = '3800'.
      BAPI_MBEW1-VAL_CLASS   = '3100'.
      BAPI_MBEW1-STD_PRICE  = matcost.
      BAPI_MBEW1-PRICE_CTRL = 'V'.
      bapi_mbew1-PRICE_UNIT = '1'.
      BAPI_MBEWX-VAL_AREA   = '3800'.
      BAPI_MBEWX-PRICE_CTRL = 'X'.
      BAPI_MBEWx-STD_PRICE  = 'X'.
      BAPI_MBEWX-VAL_CLASS   = 'X'.
      bapi_mbewx-price_unit = 'X'.
      bapi_mard-plant = '3800'.
      bapi_mard-stge_loc = '0001'.
      bapi_mardx-plant = '3800'.
      bapi_mardx-stge_loc = '0001'.
      CALL FUNCTION 'BAPI_MATERIAL_SAVEDATA'
        EXPORTING
          HEADDATA                   = BAPI_HEAD
         CLIENTDATA                 = BAPI_MARA1
         CLIENTDATAX                = BAPI_MARAX
         PLANTDATA                  = BAPI_MARC1
         PLANTDATAX                 = BAPI_MARCX
    *   FORECASTPARAMETERS         =
    *   FORECASTPARAMETERSX        =
    *   PLANNINGDATA               =
    *   PLANNINGDATAX              =
       STORAGELOCATIONDATA        = bapi_mard
       STORAGELOCATIONDATAX       = bapi_mardx
         VALUATIONDATA              = BAPI_MBEW1
         VALUATIONDATAX             = BAPI_MBEWX
    *   WAREHOUSENUMBERDATA        =
    *   WAREHOUSENUMBERDATAX       =
         SALESDATA                  = bapi_sales
         SALESDATAX                 = bapi_salesx
    *   STORAGETYPEDATA            =
    *   STORAGETYPEDATAX           =
    *   FLAG_ONLINE                = ' '
    *   FLAG_CAD_CALL              = ' '
    *   NO_DEQUEUE                 = ' '
    *   NO_ROLLBACK_WORK           = ' '
       IMPORTING
         RETURN                     = BAPI_RETURN
       TABLES
         MATERIALDESCRIPTION        = INT_MAKT
       UNITSOFMEASURE             = L_T_MARM
       UNITSOFMEASUREX            = L_T_MARMX
    *   INTERNATIONALARTNOS        =
    *   MATERIALLONGTEXT           =
       TAXCLASSIFICATIONS         = l_t_tax
    *   RETURNMESSAGES             =
    *   PRTDATA                    =
    *   PRTDATAX                   =
    *   EXTENSIONIN                =
    *   EXTENSIONINX               =
      CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'.
    Any suggestions on this one would really mean a lott of help to me.
    Thanks a lot,
    Archies!!

    Hi James ,
    I' m not sure but could you please try like this
    L_T_tax-DEPCOUNTRY = 'CA'.
      L_T_tax-DEPCOUNTRY_ISO = 'CA'.
      L_T_tax-TAX_TYPE_1 = 'CTX1'.
      L_T_tax-TAXCLASS_1 = '0'.
       L_T_tax-TAX_TYPE_2 = 'CTX2'.
      L_T_tax-TAXCLASS_2 = '0'.
      append l_t_tax.
    Hope this helps
    Caglar

  • Material master upload through flat file using the BAPI_MATERIAL_SAVEDATA

    Hi Guys,
    I need to upload the material master using the BAPI, I need to update the all the views in the material master, Could any one can help please?
    I using EXCEL file is input file and suggest me the, excel file format, if could you suggest it would be very help to me.
    Thanks,
    Gourisankar.

    please go through this code
    *& Report  ZBAPI_MATERIAL_SAVEDATA
    *& AUTHOR
    *& PURPOSE : THIS REPORT USES BAPI MATERIAL SAVE DATA TO UPDATE AND CREATE
    *&           THE MATERIAL
    REPORT  ZBAPI_MATERIAL_SAVEDATA NO STANDARD PAGE HEADING MESSAGE-ID (ZHNC).
    TYPES:BEGIN OF TY_MAT,
           MATERIAL(4),
           IND_SECTOR(1),
           MATL_TYPE(4),
          BASIC_VIEW(1),
          SALES_VIEW(1),
          PURCHASE_VIEW(1),
          STORAGE_VIEW(1),
           MATL_GROUP(9),
           BASE_UOM(3),
           BASE_UOM_ISO(3),
          MATL_GROUP1(1),
          BASE_UOM1(1),
          BASE_UOM_ISO1(1),
           PLANT(4),
           DEL_FLAG(1),
           PUR_GROUP(3),
           BASE_QTY(13),
          PLANT2(4),
          DEL_FLAG5(1),
          PUR_GROUP1(1),
          BASE_QTY1(1),
          PLANT3(4),
           STGE_LOC(4),
           MRP_IND(1),
          PLANT4(4),
          STGE_LOC1(4),
          MRP_IND1(1),
           SALES_ORG(4),
           DISTR_CHAN(2),
           DEL_FLAG1(1),
           MIN_ORDER(13),
          SALES_ORG1(4),
          DISTR_CHAN1(2),
          DEL_FLAG2(1),
          MIN_ORDER1(1),
           LANGU(2),
          MATL_DESC(40),
       END OF TY_MAT.
    DATA: IT_DATA TYPE TABLE OF TY_MAT,
          WA_DATA LIKE LINE  OF IT_DATA.
    *decalraing flag
    data: v_flag value ''.
    *DECLARING WORK AREAs  TO BE PASSED TO THE FUNCTION MODULE.
    DATA: BAPI_HEAD LIKE BAPIMATHEAD,
          BAPI_CLIENTDATA LIKE BAPI_MARA,
          BAPI_CLIENTDATAX LIKE BAPI_MARAX,
          BAPI_PLANTDATA LIKE BAPI_MARC,
          BAPI_PLANTDATAX LIKE  BAPI_MARCX,
          BAPI_STORAGELOCATIONDATA LIKE BAPI_MARD,
          BAPI_STORAGELOCATIONDATAX LIKE BAPI_MARDX,
          BAPI_SALESDATA LIKE BAPI_MVKE,
          BAPI_SALESDATAX LIKE BAPI_MVKEX,
          BAPI_MAKT LIKE BAPI_MAKT,
          BAPI_RETURN LIKE BAPIRET2.
    *INTERNAL TABLE TO HOLD THE MATERIAL DESCRIPTION
    DATA: BEGIN OF IT_MAKT OCCURS 0.
    INCLUDE STRUCTURE BAPI_MAKT.
    DATA END OF IT_MAKT.
    DATA:BEGIN OF IT_RET OCCURS 0.
    INCLUDE STRUCTURE BAPIRET2.
    DATA END OF IT_RET.
    *INTERNAL TABLE TO HOLD HEADER DATA
    DATA: IT_EXCEL TYPE ALSMEX_TABLINE OCCURS 0 WITH HEADER LINE.
    *SELECTION-SCREEN ELEMENTS
    SELECTION-SCREEN BEGIN OF BLOCK B1 WITH FRAME TITLE TEXT-001.
    PARAMETER: FNAME TYPE RLGRAP-FILENAME OBLIGATORY DEFAULT 'C:\Documents and Settings\Administrator\Desktop\MATMAS.XLS' .
    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 B1.
    *DECLARATION OF EXCELAL TABLE
    AT SELECTION-SCREEN ON VALUE-REQUEST FOR FNAME.
    PERFORM F_GET_FILE USING FNAME.
    START-OF-SELECTION.
    PERFORM F_XLS_ITAB USING FNAME
                       CHANGING IT_EXCEL.
    PERFORM F_MOVE_DATA.
    perform F_GET_DATA.
    *&      Form  F_GET_FILE
          text
         -->P_FNAME  text
         <--P_SY_SUBRC  text
    FORM F_GET_FILE  USING    P_FNAME LIKE FNAME.
    CALL FUNCTION 'KD_GET_FILENAME_ON_F4'
    EXPORTING
       PROGRAM_NAME        = SYST-REPID
       DYNPRO_NUMBER       = SYST-DYNNR
      FIELD_NAME          = ' '
      STATIC              = ' '
      MASK                = ' '
      CHANGING
        FILE_NAME           = P_FNAME
    EXCEPTIONS
      MASK_TOO_LONG       = 1
      OTHERS              = 2
    IF SY-SUBRC <> 0.
    MESSAGE E006(ZHNC).
    ENDIF.
    ENDFORM.                    " F_GET_FILE
    *&      Form  F_XLS_ITAB
          text
         -->P_FNAME  text
         <--P_IT_EXCEL  text
    FORM F_XLS_ITAB  USING    P_FNAME
                     CHANGING P_IT_EXCEL.
    CALL FUNCTION 'ALSM_EXCEL_TO_INTERNAL_TABLE'
      EXPORTING
        FILENAME                      = FNAME
        I_BEGIN_COL                   = P_BEGCOL
        I_BEGIN_ROW                   = P_BEGROW
        I_END_COL                     = P_ENDCOL
        I_END_ROW                     = P_ENDROW
      TABLES
        INTERN                        = IT_EXCEL
    EXCEPTIONS
       INCONSISTENT_PARAMETERS       = 1
       UPLOAD_OLE                    = 2
       OTHERS                        = 3
    IF SY-SUBRC <> 0.
    MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
            WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
    ENDIF.
    ENDFORM.                    " F_XLS_ITAB
    *&      Form  F_MOVE_DATA
          text
    -->  p1        text
    <--  p2        text
    FORM F_MOVE_DATA .
    DATA : LV_INDEX TYPE I.
    FIELD-SYMBOLS <FS>.
    *--- Sorting the internal table
    SORT IT_EXCEL BY ROW COL.
    CLEAR IT_EXCEL.
    LOOP AT IT_EXCEL.
    MOVE IT_EXCEL-COL TO LV_INDEX.
    *--- Assigning the each record to an internal table row
    ASSIGN COMPONENT LV_INDEX OF STRUCTURE WA_DATA TO <FS>.
    *--- Asigning the field value to a field symbol
    MOVE IT_EXCEL-VALUE TO <FS>.
    AT END OF ROW.
    APPEND WA_DATA TO IT_DATA.
    CLEAR WA_DATA.
    ENDAT.
    ENDLOOP.
    ENDFORM.                    " F_MOVE_DATA
    *&      Form  F_GET_DATA
          text
    -->  p1        text
    <--  p2        text
    FORM F_GET_DATA .
    LOOP AT IT_DATA INTO WA_DATA.
    MOVE-CORRESPONDING WA_DATA  TO  BAPI_HEAD.
    BAPI_HEAD-BASIC_VIEW ='X'.
    BAPI_HEAD-SALES_VIEW ='X'.
    BAPI_HEAD-PURCHASE_VIEW ='X'.
    BAPI_HEAD-STORAGE_VIEW ='X'.
    MOVE-CORRESPONDING WA_DATA TO BAPI_CLIENTDATA.
    BAPI_CLIENTDATAX-MATL_GROUP = 'X'.
    BAPI_CLIENTDATAX-BASE_UOM = 'X'.
    BAPI_CLIENTDATAX-BASE_UOM_ISO = 'X'.
    MOVE-CORRESPONDING WA_DATA TO BAPI_PLANTDATA.
    BAPI_PLANTDATAX-PLANT = BAPI_PLANTDATA-PLANT.
    BAPI_PLANTDATAX-DEL_FLAG = 'X'.
    BAPI_PLANTDATAX-PUR_GROUP = 'X'.
    BAPI_PLANTDATAX-BASE_QTY = 'X'.
    MOVE-CORRESPONDING WA_DATA TO BAPI_STORAGELOCATIONDATA.
    BAPI_STORAGELOCATIONDATA-PLANT = BAPI_PLANTDATA-PLANT.
    BAPI_STORAGELOCATIONDATAX-PLANT = BAPI_STORAGELOCATIONDATA-PLANT.
    BAPI_STORAGELOCATIONDATAX-STGE_LOC = BAPI_STORAGELOCATIONDATA-STGE_LOC.
    BAPI_STORAGELOCATIONDATAX-MRP_IND = 'X'.
    MOVE-CORRESPONDING WA_DATA TO BAPI_SALESDATA.
    BAPI_SALESDATAX-SALES_ORG = BAPI_SALESDATA-SALES_ORG.
    BAPI_SALESDATAX-DISTR_CHAN = BAPI_SALESDATA-DISTR_CHAN.
    BAPI_SALESDATAX-DEL_FLAG = BAPI_SALESDATA-DEL_FLAG.
    BAPI_SALESDATAX-MIN_ORDER = 'X'.
    REFRESH IT_MAKT.
    IT_MAKT-LANGU = WA_DATA-LANGU.
    IT_MAKT-MATL_DESC = WA_DATA-MATL_DESC.
    APPEND IT_MAKT.
    CLEAR IT_RET.
    REFRESH IT_RET.
    PERFORM F_CALL_BAPI.
    READ TABLE IT_RET WITH KEY TYPE = 'S'.
    IF SY-SUBRC EQ 0.
    PERFORM F_BAPI_COMMIT.
    WRITE:/ 'MATERIAL CREATED OR UPDATED SUCESSFULLY WITH MATERIAL NO',WA_DATA-MATERIAL.
    ELSE.
    MESSAGE E000(ZHNC) WITH 'ERROR IN CREATING THE MATERIAL'.
    *WRITE: / 'ERROR IN CREATIN MATERIAL',IT_RET-MESSAGE.
    *PERFORM F_DOWNLOAD.
    ENDIF.
    *ENDIF.
    ENDLOOP.
    ENDFORM.                    " F_GET_DATA
    *&      Form  F_CALL_BAPI
          text
    -->  p1        text
    <--  p2        text
    FORM F_CALL_BAPI .
    CALL FUNCTION 'BAPI_MATERIAL_SAVEDATA'
      EXPORTING
        HEADDATA                   = BAPI_HEAD
       CLIENTDATA                 =  BAPI_CLIENTDATA
       CLIENTDATAX                =  BAPI_CLIENTDATAX
       PLANTDATA                  =  BAPI_PLANTDATA
       PLANTDATAX                 =  BAPI_PLANTDATAX
       STORAGELOCATIONDATA        =  BAPI_STORAGELOCATIONDATA
       STORAGELOCATIONDATAX       =  BAPI_STORAGELOCATIONDATAX
       SALESDATA                  =  BAPI_SALESDATA
       SALESDATAX                 =  BAPI_SALESDATAX
    IMPORTING
       RETURN                     =  IT_RET
    TABLES
       MATERIALDESCRIPTION        = IT_MAKT
      UNITSOFMEASURE             =
      UNITSOFMEASUREX            =
      INTERNATIONALARTNOS        =
      MATERIALLONGTEXT           =
      TAXCLASSIFICATIONS         =
      RETURNMESSAGES             =
      PRTDATA                    =
      PRTDATAX                   =
      EXTENSIONIN                =
      EXTENSIONINX               =
    APPEND IT_RET.
    ENDFORM.                    " F_CALL_BAPI
    *&      Form  F_BAPI_COMMIT
          text
    -->  p1        text
    <--  p2        text
    FORM F_BAPI_COMMIT .
    CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
    EXPORTING
      WAIT         =
    IMPORTING
      RETURN        =
    ENDFORM.                    " F_BAPI_COMMIT

  • Create Material Master using BAPI_MATERIAL_SAVEDATA - just the basic view

    Hi,
    I want to create new material master ( just the basic view ) using BAPI_MATERIAL_SAVEDATA.
    No error found in the return parameter, but the material was not created.
    Here is my code :
    DATA : ld_headdata LIKE bapimathead,
           lt_return LIKE bapiret2 OCCURS 0 WITH HEADER LINE,
           lt_return_comit LIKE bapiret2 OCCURS 0 WITH HEADER LINE,
           lt_return_cl LIKE bapiret2 OCCURS 0 WITH HEADER LINE,
           ld_datum(10),
           ld_uzeit(10).
    DATA: ld_matdesc LIKE bapi_makt OCCURS 0 WITH HEADER LINE,
          ld_clientdata  LIKE bapi_mara.
    Regards,
    Hary
    ld_headdata-material = 'MATERIAL-01'.
    ld_headdata-ind_sector  = 'M'.
    ld_headdata-matl_type = 'ERSA'.
    ld_headdata-basic_view = 'X'.
    ld_matdesc-matl_desc = 'TEST MATERIAL'.
    ld_matdesc-langu = sy-langu.
    APPEND ld_matdesc.
    ld_clientdata-base_uom = 'PC'.
    CALL FUNCTION 'BAPI_MATERIAL_SAVEDATA'
      EXPORTING
        headdata                    = ld_headdata
        clientdata                  = ld_clientdata
       clientdatax                 =
      PLANTDATA                   =
      PLANTDATAX                  =
      FORECASTPARAMETERS          =
      FORECASTPARAMETERSX         =
      PLANNINGDATA                =
      PLANNINGDATAX               =
      STORAGELOCATIONDATA         =
      STORAGELOCATIONDATAX        =
      VALUATIONDATA               =
      VALUATIONDATAX              =
      WAREHOUSENUMBERDATA         =
      WAREHOUSENUMBERDATAX        =
      SALESDATA                   =
      SALESDATAX                  =
      STORAGETYPEDATA             =
      STORAGETYPEDATAX            =
      FLAG_ONLINE                 = ' '
      FLAG_CAD_CALL               = ' '
      NO_DEQUEUE                  = ' '
      NO_ROLLBACK_WORK            = ' '
    IMPORTING
       return                      = lt_return
    TABLES
       materialdescription         = ld_matdesc
      UNITSOFMEASURE              =
      UNITSOFMEASUREX             =
      INTERNATIONALARTNOS         =
      MATERIALLONGTEXT            =
      TAXCLASSIFICATIONS          =
      RETURNMESSAGES              =
      PRTDATA                     =
      PRTDATAX                    =
      EXTENSIONIN                 =
      EXTENSIONINX                =
      NFMCHARGEWEIGHTS            =
      NFMCHARGEWEIGHTSX           =
      NFMSTRUCTURALWEIGHTS        =
      NFMSTRUCTURALWEIGHTSX       =
    CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
    EXPORTING
      WAIT          =
    IMPORTING
       return        = lt_return_comit

    hi
    Hope it will help you.
    <REMOVED BY MODERATOR>
    REPORT z34332_bdc_create_material .
    data: la_headdata type BAPIMATHEAD,
    la_clientdata type BAPI_MARA,
    la_CLIENTDATAX type BAPI_MARAX,
    la_return type BAPIRET2.
    data: i_materialdescription type table of BAPI_MAKT,
    wa_materialdescription like line of i_materialdescription.
    la_headdata-MATERIAL = '000000000000000004'.
    la_headdata-IND_SECTOR = 'M'.
    la_headdata-MATL_TYPE = 'FERT'.
    la_clientdata-BASE_UOM = 'FT3'.
    la_CLIENTDATAX-BASE_UOM = 'X'.
    la_clientdata-MATL_GROUP = '01'.
    la_CLIENTDATAX-MATL_GROUP = 'X'.
    wa_materialdescription = 'TEST'.
    append wa_materialdescription to i_materialdescription.
    clear: wa_materialdescription.
    CALL FUNCTION 'BAPI_MATERIAL_SAVEDATA'
    EXPORTING
    headdata = la_headdata
    CLIENTDATA = la_clientdata
    CLIENTDATAX = la_CLIENTDATAX
    * PLANTDATA =
    * PLANTDATAX =
    * FORECASTPARAMETERS =
    * FORECASTPARAMETERSX =
    * PLANNINGDATA =
    * PLANNINGDATAX =
    * STORAGELOCATIONDATA =
    * STORAGELOCATIONDATAX =
    * VALUATIONDATA =
    * VALUATIONDATAX =
    * WAREHOUSENUMBERDATA =
    * WAREHOUSENUMBERDATAX =
    * SALESDATA =
    * SALESDATAX =
    * STORAGETYPEDATA =
    * STORAGETYPEDATAX =
    * FLAG_ONLINE = ' '
    * FLAG_CAD_CALL = ' '
    IMPORTING
    RETURN = la_return
    TABLES
    MATERIALDESCRIPTION = i_materialdescription
    * UNITSOFMEASURE =
    * UNITSOFMEASUREX =
    * INTERNATIONALARTNOS =
    * MATERIALLONGTEXT =
    * TAXCLASSIFICATIONS =
    * RETURNMESSAGES =
    * PRTDATA =
    * PRTDATAX =
    * EXTENSIONIN =
    * EXTENSIONINX =
    write: la_return-TYPE, ',', la_return-MESSAGE.
    clear: la_headdata, la_return, la_clientdata, la_clientdatax.
    Edited by: Alvaro Tejada Galindo on Feb 19, 2008 3:23 PM

  • Maintain sales text View through BAPI_MATERIAL_SAVEDATA

    Hi,
    in BAPI_MATERIAL_SAVEDATA, can we maintain the Sales Text view in mm02 through this BAPI.
    Regards,
    Masoom Ali

    Hi,
    Fill the data in BAPI structure "MATERIALLONGTEXT".
    Pass following parameters in the structure
    APPLOBJECT : MVKE
    TEXT_NAME : {Material+SalesOrg+Dist Channel}
    TEXT_ID : 0001
    LANGU : sy-langu
    FORMAT_COL : *
    TEXT_LINE : "Sales text which is to be updated"
    Regards
    Vinod
    Edited by: Vinod Kumar on Jul 23, 2010 4:49 PM

  • NCo throws an Exception calling BAPI_MATERIAL_SAVEDATA?

    I've been successful in calling BAPIs from NCo (BAPI_CHARACT_CREATE, BAPI_CLASS_CREATE, BAPI_VENDOR_FIND, BAPI_VENDOR_GETDETAIL)....
    However when calling BAPI_MATERIAL_SAVEDATA, I always get the following Exception being thrown:
    Index was outside the bounds of the array.
       at SAP.Connector.Rfc.RfcStructureUtil.ToRfcStructure(Object obj, Byte[] dest, Type t, Encoding encoding, Boolean isUnicode, PropertyInfo[] propinfos, RfcStructInfo structInfo)
       at SAP.Connector.Rfc.RfcStructureUtil.GetITabFromList(SAPConnection conn, Object list, Type t, RfcStructInfo structInfo, Int32 itab)
       at SAP.Connector.Rfc.RfcClient.PrepareClientParameters(Type classType, MethodInfo m, Boolean isTQRfc, Object[] MethodParamsIn, RFC_PARAMETER[]& paramsIn, RFC_PARAMETER[]& paramsOut, RFC_TABLE[]& tables, ParameterMap[]& paramMaps)
       at SAP.Connector.Rfc.RfcClient.RfcInvoke(SAPClient proxy, String method, Object[] methodParamsIn)
       at SAP.Connector.SAPClient.SAPInvoke(String method, Object[] methodParamsIn)
       at SAP_MM_Test.SAPProxy1.Bapi_Material_Savedata(BAPI_MARA Clientdata, BAPI_MARAX Clientdatax, String Flag_Cad_Call, String Flag_Online, BAPI_MPOP Forecastparameters, BAPI_MPOPX Forecastparametersx, BAPIMATHEAD Headdata, String No_Dequeue, String No_Rollback_Work, BAPI_MPGD Planningdata, BAPI_MPGDX Planningdatax, BAPI_MARC Plantdata, BAPI_MARCX Plantdatax, BAPI_MVKE Salesdata, BAPI_MVKEX Salesdatax, BAPI_MARD Storagelocationdata, BAPI_MARDX Storagelocationdatax, BAPI_MLGT Storagetypedata, BAPI_MLGTX Storagetypedatax, BAPI_MBEW Valuationdata, BAPI_MBEWX Valuationdatax, BAPI_MLGN Warehousenumberdata, BAPI_MLGNX Warehousenumberdatax, BAPIRET2& Return0, BAPIPAREXTable& Extensionin, BAPIPAREXXTable& Extensioninx, BAPI_MEANTable& Internationalartnos, BAPI_MAKTTable& Materialdescription, BAPI_MLTXTable& Materiallongtext, BAPI_MFHMTable& Prtdata, BAPI_MFHMXTable& Prtdatax, BAPI_MATRETURN2Table& Returnmessages, BAPI_MLANTable& Taxclassifications, BAPI_MARMTable& Unitsofmeasure, BAPI_MARMXTable& Unitsofmeasurex) in C:\Dev\SAP_MM_Test\SAPProxy1.vb:line 220
       at SAP_MM_Test.Form1.Button1_Click(Object sender, EventArgs e) in C:\Dev\SAP_MM_Test\Form1.vb:line 114"     String
    I even tried calling the Method with all parameters set to Nothing and also get the same error.  I tested some of the other BAPI I listed will all Nothing parameters and it does not throw any exceptions.  Almost seems as if the Proxy generated classes did not get created properly or something?
    Has anyone else successfully called BAPI_MATERIAL_SAVEDATA from NCo 2.0?
    PS...I was successful in calling the BAPI from SE37 with the exact same data, therefore I know I have all the mandatory parameters specified (HeadData, ClientData, ClientDatax...etc)
    Anything obvious in the following code?:
    =======================================
         ' Connection String
         Dim cs As String = "ASHOST=10.83.180.239 SYSNR=10 CLIENT=110 USER=CMCHUG2 PASSWD=********"
         ' construct the proxy with connection string
         Dim proxy As New SAPProxy1(cs)
         ' Header Data
         Dim HeadData As New BAPIMATHEAD
         HeadData.Material = "000000000000000754"            ' Material NUmber (PAD to 18)
         HeadData.Ind_Sector = "U"                           ' Industry Sector
         HeadData.Matl_Type = "ERSA"                         ' Material Type (ERSA=Space Parts / HERS=Manufacturer Part)
         HeadData.Basic_View = "X"                           ' Need at least 1 view
         ' Client Data
         Dim ClientData As New BAPI_MARA
         ClientData.Matl_Group = "01"                        ' Material Group
         ClientData.Base_Uom = "EA"                          ' Base Unit of Measure
         ' Set the ClientData Indicator Table
         Dim ClientDataX As New BAPI_MARAX
         ClientDataX.Matl_Group = "X"
         ClientDataX.Base_Uom = "X"
         ' Short Description (TABLE)
         Dim ShortDesc As New BAPI_MAKTTable
         Dim sDescr As New BAPI_MAKT
         sDescr.Langu = "E"                                  ' Language
         sDescr.Matl_Desc = "Short Desc Test"               ' Short Description (Max 40)
         ShortDesc.Add(sDescr)
         Dim tblRet As New BAPIRET2
         Dim tblRetMsg As New BAPI_MATRETURN2Table
         proxy.Bapi_Material_Savedata(ClientData, ClientDataX, Nothing, Nothing, Nothing, Nothing, HeadData, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, tblRet, Nothing, Nothing, Nothing, ShortDesc, Nothing, Nothing, Nothing, tblRetMsg, Nothing, Nothing, Nothing)
    Exception Thrown Here!!!

    Reiner,
    Tried what you suggested, still get the same results.  This the 3rd development system I try this from. In all cases I generated proxies via drop and drop of the SaveData Method under StandardMaterial (BOR).  Since it was just generated the MetaData should be up to date?, good suggestion thought, I could see where that might be a problem going against different backends.
    My lastest attempt (I am quickly running out of ideas), was to generate a Standalone Proxy containing the SaveData method.  Same Results :{ 
    I was able to create Standalone Proxies for the other Business Objects I'm using (Characteristics, Class..etc) without a hitch. (Except for "Class", complaining about the Class name generated (Public Class Class...so I renamed to sapClass).  Using the Standalone Proxy Class I might try from Visual Studio 2005 to see if I get the same results.
    Also encountered another problem when trying to Add the whole BOR object StandardMaterial to the Proxy (so I would have access to a few of the Methods....this failed with some Java out of memory error....I would have to attempt this again to capture the exact error....when I get time I'll put that in another post).

  • Using: BAPI_MATERIAL_SAVEDATA

    Hi,
    i try to use the above FM like this:
    REPORT ZGRO_TEST.
    DATA: HEADDATA LIKE BAPIMATHEAD.
    DATA: RETURN   LIKE BAPIRET2.
    DATA: BEGIN OF RETURNM OCCURS 0.
            INCLUDE STRUCTURE BAPIRET2.
    DATA: END   OF RETURNM.
    DATA: BEGIN OF LTEXT OCCURS 0.
            INCLUDE STRUCTURE BAPI_MLTX.
    DATA: END   OF LTEXT.
    DATA: MATNR    LIKE MARA-MATNR VALUE '000000000000000592'.
    START-OF-SELECTION.
      HEADDATA-MATERIAL   = MATNR.
      LTEXT-APPLOBJECT  = 'MATERIAL'.
      LTEXT-TEXT_NAME   = MATNR.
      LTEXT-TEXT_ID     = 'PRUE'.
      LTEXT-LANGU       = SY-LANGU.
      LTEXT-FORMAT_COL  = '*'.
      LTEXT-TEXT_LINE   = 'first  Inspection Text'.
      APPEND LTEXT.
      LTEXT-TEXT_LINE   = 'second Inspection Text'.
      APPEND LTEXT.
      LTEXT-TEXT_LINE   = 'third  Inspection Text'.
      APPEND LTEXT.
      CALL FUNCTION 'BAPI_MATERIAL_SAVEDATA'
           EXPORTING
                HEADDATA         = HEADDATA
           IMPORTING
                RETURN           = RETURN
           TABLES
                MATERIALLONGTEXT = LTEXT
                RETURNMESSAGES   = RETURNM.
      BREAK-POINT.
    END-OF-SELECTION.
    It works (i hope) OK.
    But i get some return like this:
    <b>RETURN</b>
    The material 592 has been created or extended
    <b>RETURNM with 4 entries</b>
    Trying to create: 592 ____ ____ ____ __________ ____ __ ___ ___
    The material cannot be maintained since no maintainable data transferred
    Trying to change: 592 ____ ____ ____ __________ ____ __ ___ ___
    Material 592 changed
    Question:
    Can i give the FM any Information for using it
    in UPDATE-Mode or is my using in this case correct??
    thanks for help
    Regards, Dieter

    Hello Dieter
    The documentation of the parameter MATERIALLONGTEXT says:
    Note                                                                               
    Different long texts (basic data texts, purchase order texts, internal 
        comments, sales texts, material memos) can be created for a material.  
        This requires the fields APPLOBJECT, TEXT_NAME, TEXT_ID, and LANGU or  
        LANGU_ISO in table parameter MATERIALLONGTEXT to contain entries.      
        Depending on the content of field TEXT_ID, the field TEXT_NAME must have
        the following structure:                                                                               
    The material number is transferred first. If it has fewer than 18      
        characters, the remaining characters must be filled with blanks. If it 
        is a material memo (LTXT), the plant key must also be transferred from 
        character 19 onwards; in the case of a sales text (0001), this must be 
        the sales organization and distribution channel. The combinations      
        allowed for the four different fields are indicated in the following table:
    Thus, I guess the problem might be the leading '0'. You should try to write the material number just as '592'.
    Regards
       Uwe

  • Create material using bapi ' bapi_material_savedata'

    Hi Experts,
    i was tring to create material using bapi ' bapi_material_savedata' but the material is not updating in the table.
    please find the code and suggest me if any modification
    data: la_headdata type BAPIMATHEAD,
    la_clientdata type BAPI_MARA,
    la_CLIENTDATAX type BAPI_MARAX,
    la_return type BAPIRET2.
    data: i_materialdescription type table of BAPI_MAKT,
    wa_materialdescription like line of i_materialdescription.
    *la_headdata-MATERIAL = int_matnum-MATERIAL.
    *LOOP AT int_matnum.
    la_headdata-MATERIAL = int_matnum-MATERIAL.
    write : int_matnum-material.
    *ENDLOOP.
    la_headdata-MATERIAL = '100000518'."int_matnum-MATERIAL.
    la_headdata-IND_SECTOR = p_indsr.
    la_headdata-MATL_TYPE = p_matype.
    la_clientdata-BASE_UOM = 'FT3'.
    la_clientdata-pur_valkey = ' '.
    la_CLIENTDATAX-BASE_UOM = 'X'.
    la_clientdata-MATL_GROUP = '01'.
    la_CLIENTDATAX-MATL_GROUP = 'X'.
    wa_materialdescription = 'TEST'.
    append wa_materialdescription to i_materialdescription.
    clear: wa_materialdescription.
    CALL FUNCTION 'BAPI_MATERIAL_SAVEDATA'
    EXPORTING
    headdata = la_headdata
    CLIENTDATA = la_clientdata
    CLIENTDATAX = la_CLIENTDATAX
    PLANTDATA =
    PLANTDATAX =
    FORECASTPARAMETERS =
    FORECASTPARAMETERSX =
    PLANNINGDATA =
    PLANNINGDATAX =
    STORAGELOCATIONDATA =
    STORAGELOCATIONDATAX =
    VALUATIONDATA =
    VALUATIONDATAX =
    WAREHOUSENUMBERDATA =
    WAREHOUSENUMBERDATAX =
    SALESDATA =
    SALESDATAX =
    STORAGETYPEDATA =
    STORAGETYPEDATAX =
    FLAG_ONLINE = ' '
    FLAG_CAD_CALL = ' '
    IMPORTING
    RETURN = la_return
    TABLES
    MATERIALDESCRIPTION = i_materialdescription
    UNITSOFMEASURE =
    UNITSOFMEASUREX =
    INTERNATIONALARTNOS =
    MATERIALLONGTEXT =
    TAXCLASSIFICATIONS =
    RETURNMESSAGES =
    PRTDATA =
    PRTDATAX =
    EXTENSIONIN =
    EXTENSIONINX =
    Please Help me
    Regards,
    Naresh

    Hi all,
    Now it is asking me for the other fields,
    E ,
    The field MARA-XCHPF/BAPI_MARA-BATCH_MGMT is defined as a required field; it does not contain an entry
    i have passed this val as
    la_clientdata-batch_mgmt = 'X'.
    even though i am getting the same error.
    can you help me to solve the issue.
    Tthanks
    Naresh
    Edited by: naresh.k.dasari on Jan 4, 2011 10:36 AM

  • Create material using bapi_material_savedata

    Hi.
    I'm having prob with creation of material using bapi_material_savedata. When creating new material we use internal numbering so I use first bapi_material_getintnumber'. the number from that bapi is what i used in bapi_material_savedata. However, I getting an error that says 'matnr <from bapi>does not exists', why is this so? do i need to put the commit after the bapi_material_getintnumber and before calling the bapi_material_savedata?
    Please help.
    thnx.

    hi
    good
    go through this example and use accordingly
    REPORT ZBAPIMM01 LINE-SIZE 255 NO STANDARD PAGE HEADING
                     LINE-COUNT 065(001).
    TABLES: T001L, "Storage Locations
            MARA,  "General Material Data
            MAKT,  "Material Descriptions
            MBEW,  "Material Valuation
            MARC.  "Plant Data for Material
    DATA: BAPI_HEAD   LIKE BAPIMATHEAD,
          BAPI_MAKT   LIKE BAPI_MAKT,    "Material Description
          BAPI_MARA1  LIKE BAPI_MARA,    "Client Data
          BAPI_MARAX  LIKE BAPI_MARAX,
          BAPI_MARC1  LIKE BAPI_MARC,    "Plant View
          BAPI_MARCX  LIKE BAPI_MARCX,
          BAPI_MBEW1  LIKE BAPI_MBEW,    "Accounting View
          BAPI_MBEWX  LIKE BAPI_MBEWX,
          BAPI_RETURN LIKE BAPIRET2.
    DATA: BEGIN OF INT_MAKT OCCURS 100.
            INCLUDE STRUCTURE BAPI_MAKT.
    DATA: END OF INT_MAKT.
    DATA: BEGIN OF INT_MAT OCCURS 100,
             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 INT_MAT.
    SELECT-OPTIONS:
                PLANT    FOR  MARC-WERKS OBLIGATORY MEMORY ID PLT,
                MATERIAL FOR  MARA-MATNR MEMORY ID MAT,
                MATLTYPE FOR  MARA-MTART MEMORY ID MTY,
                DIVISION FOR  MARA-SPART MEMORY ID DIV.
    PARAMETERS:  F_FILE LIKE RLGRAP-FILENAME
                 DEFAULT 'C:\DATA\ZMATERIAL.XLS' MEMORY ID F_FILE,
                 GETDATA AS CHECKBOX, "Tick to download materials data to local harddisk
                 UPDDATA AS CHECKBOX. "Tick to update date to Materials Master
    IF GETDATA = 'X'.
       PERFORM DOWNLOAD_DATA.
       PERFORM DOWNLOAD_FILE.
    ENDIF.
    IF UPDDATA = 'X'.
       PERFORM UPLOAD_FILE.
       PERFORM UPDATE_MM.
    ENDIF.
    FORM DOWNLOAD_DATA.
    SELECT * FROM MARC  WHERE LVORM EQ ' '
                          AND WERKS IN PLANT
                          AND MATNR IN MATERIAL.
        CLEAR MARA.
        SELECT SINGLE * FROM MARA WHERE MATNR =  MARC-MATNR.
        CHECK MATLTYPE.
        CHECK DIVISION.
        CLEAR MBEW.
        SELECT SINGLE * FROM MBEW WHERE MATNR =  MARC-MATNR
                                    AND BWKEY =  MARC-WERKS.
        CLEAR MAKT.
        SELECT SINGLE * FROM MAKT WHERE SPRAS =  'EN'
                                    AND MATNR =  MARC-MATNR.
        WRITE:/ MARC-WERKS,    "Plant
                MARA-MTART,    "Material type
                MARA-MATNR,    "Material number
                MARA-MATKL,    "Material group
                MARA-MBRSH,    "Industry sector
                MARA-MEINS,    "Base unit of measure
                MARA-GEWEI,    "Weight Unit
                MARA-SPART,    "Division
                MARC-EKGRP,    "Purchasing group
                MBEW-VPRSV,    "Price control indicator
                MBEW-STPRS,    "Standard price
                MBEW-PEINH,    "Price unit
                MAKT-SPRAS,    "Language key
                MAKT-MAKTX.    "Material description
                INT_MAT-WERKS = MARC-WERKS.    "Plant
                INT_MAT-MTART = MARA-MTART.    "Material type
                INT_MAT-MATNR = MARA-MATNR.    "Material number
                INT_MAT-MATKL = MARA-MATKL.    "Material group
                INT_MAT-MBRSH = MARA-MBRSH.    "Industry sector
                INT_MAT-MEINS = MARA-MEINS.    "Base unit of measure
                INT_MAT-GEWEI = MARA-GEWEI.    "Weight Unit
                INT_MAT-SPART = MARA-SPART.    "Division
                INT_MAT-EKGRP = MARC-EKGRP.    "Purchasing group
                INT_MAT-VPRSV = MBEW-VPRSV.    "Price control indicator
                INT_MAT-STPRS = MBEW-STPRS.    "Standard price
                INT_MAT-PEINH = MBEW-PEINH.    "Price unit
                INT_MAT-SPRAS = MAKT-SPRAS.    "Language key
                INT_MAT-MAKTX = MAKT-MAKTX.    "Material description
                APPEND INT_MAT.
                CLEAR  INT_MAT.
    ENDSELECT.
    ENDFORM.
    FORM DOWNLOAD_FILE.
    call function 'WS_DOWNLOAD'
      EXPORTING
        FILENAME                      = F_FILE
        FILETYPE                      = 'DAT'
      FILETYPE                      = 'WK1'
      tables
        data_tab                      = INT_MAT
      EXCEPTIONS
        FILE_OPEN_ERROR               = 1
        FILE_WRITE_ERROR              = 2
        INVALID_FILESIZE              = 3
        INVALID_TYPE                  = 4
        NO_BATCH                      = 5
        UNKNOWN_ERROR                 = 6
        INVALID_TABLE_WIDTH           = 7
        GUI_REFUSE_FILETRANSFER       = 8
        CUSTOMER_ERROR                = 9
        OTHERS                        = 10.
    IF SY-SUBRC = 0.
       FORMAT COLOR COL_GROUP.
       WRITE:/ 'Data Download Successfully to your local harddisk'.
       SKIP.
    ENDIF.
    ENDFORM.
    FORM UPLOAD_FILE.
    call function 'WS_UPLOAD'
      EXPORTING
        FILENAME                      = F_FILE
        FILETYPE                      = 'DAT'
      FILETYPE                      = 'WK1'
      tables
        data_tab                      = INT_MAT
      EXCEPTIONS
        FILE_OPEN_ERROR               = 1
        FILE_WRITE_ERROR              = 2
        INVALID_FILESIZE              = 3
        INVALID_TYPE                  = 4
        NO_BATCH                      = 5
        UNKNOWN_ERROR                 = 6
        INVALID_TABLE_WIDTH           = 7
        GUI_REFUSE_FILETRANSFER       = 8
        CUSTOMER_ERROR                = 9
        OTHERS                        = 10.
    IF SY-SUBRC = 0.
       FORMAT COLOR COL_GROUP.
       WRITE:/ 'Data Upload Successfully from your local harddisk'.
       SKIP.
    ENDIF.
    ENDFORM.
    FORM UPDATE_MM.
    LOOP AT INT_MAT.
    Header
        BAPI_HEAD-MATERIAL        = INT_MAT-MATNR.
        BAPI_HEAD-IND_SECTOR      = INT_MAT-MBRSH.
        BAPI_HEAD-MATL_TYPE       = INT_MAT-MTART.
        BAPI_HEAD-BASIC_VIEW      = 'X'.
        BAPI_HEAD-PURCHASE_VIEW   = 'X'.
        BAPI_HEAD-ACCOUNT_VIEW    = 'X'.
    Material Description
        REFRESH INT_MAKT.
        INT_MAKT-LANGU           = INT_MAT-SPRAS.
        INT_MAKT-MATL_DESC       = INT_MAT-MAKTX.
        APPEND INT_MAKT.
    Client Data - Basic
        BAPI_MARA1-MATL_GROUP     = INT_MAT-MATKL.
        BAPI_MARA1-BASE_UOM       = INT_MAT-MEINS.
        BAPI_MARA1-UNIT_OF_WT     = INT_MAT-GEWEI.
        BAPI_MARA1-DIVISION       = INT_MAT-SPART.
        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      = INT_MAT-WERKS.
        BAPI_MARC1-PUR_GROUP  = INT_MAT-EKGRP.
        BAPI_MARCX-PLANT      = INT_MAT-WERKS.
        BAPI_MARCX-PUR_GROUP  = 'X'.
    Accounting
        BAPI_MBEW1-VAL_AREA   = INT_MAT-WERKS.
        BAPI_MBEW1-PRICE_CTRL = INT_MAT-VPRSV.
        BAPI_MBEW1-STD_PRICE  = INT_MAT-STPRS.
        BAPI_MBEW1-PRICE_UNIT = INT_MAT-PEINH.
        BAPI_MBEWX-VAL_AREA   = INT_MAT-WERKS.
        BAPI_MBEWX-PRICE_CTRL = 'X'.
        BAPI_MBEWX-STD_PRICE  = 'X'.
        BAPI_MBEWX-PRICE_UNIT = 'X'.
        WRITE:/ BAPI_HEAD, BAPI_MARC1.
        call function 'BAPI_MATERIAL_SAVEDATA'
          exporting
            HEADDATA                   = BAPI_HEAD
            CLIENTDATA                 = BAPI_MARA1
            CLIENTDATAX                = BAPI_MARAX
            PLANTDATA                  = BAPI_MARC1
            PLANTDATAX                 = BAPI_MARCX
          FORECASTPARAMETERS         =
          FORECASTPARAMETERSX        =
          PLANNINGDATA               =
          PLANNINGDATAX              =
          STORAGELOCATIONDATA        =
          STORAGELOCATIONDATAX       =
            VALUATIONDATA              = BAPI_MBEW1
            VALUATIONDATAX             = BAPI_MBEWX
          WAREHOUSENUMBERDATA        =
          WAREHOUSENUMBERDATAX       =
          SALESDATA                  = BAPI_MVKE1
          SALESDATAX                 = BAPI_MVKEX
          STORAGETYPEDATA            =
          STORAGETYPEDATAX           =
          IMPORTING
            RETURN                     = BAPI_RETURN
          TABLES
            MATERIALDESCRIPTION        = INT_MAKT
          UNITSOFMEASURE             =
          UNITSOFMEASUREX            =
          INTERNATIONALARTNOS        =
          MATERIALLONGTEXT           =
          TAXCLASSIFICATIONS         =
          RETURNMESSAGES             =
          PRTDATA                    =
          PRTDATAX                   =
          EXTENSIONIN                =
          EXTENSIONINX               =
    IF BAPI_RETURN-TYPE = 'E'.
       WRITE:/ 'Error Message ', BAPI_RETURN.
    ENDIF.
    ENDLOOP.
    ENDFORM.
    *---End of Program
    thanks
    mrutyun^

Maybe you are looking for