Help BAPI_MATERIAL_SAVEDATA !?!?

Hi Friends,
I've created a program that allow to change the <b>unit of measure</b> of a material master (add new  unit <b>USE</b>). But  wrong when I used BAPI  BAPI_MATERIAL_SAVEDATA to do it. The message error as below:
"specify the conversion factors for the unit of measure <b>USE</b>"
Anyone can tell me why?
Thanks,
Gy

yes
please chek the below code ..if possible.. plse
DATA : wa_matdes    TYPE    bapi_makt_ga,
         wa_clnt      TYPE    bapi_mara_ga,
         wa_makt_des  TYPE    bapi_makt.
  DATA : tb_clnt      TYPE STANDARD TABLE OF bapi_mara_ga,
         tb_makt_des  TYPE STANDARD TABLE OF bapi_makt,
         tb_matdes    TYPE STANDARD TABLE OF bapi_makt_ga,
*Begin of changes phaniram YADK931460
         tb_marm      TYPE STANDARD TABLE OF bapi_marm,
         wa_marm      TYPE bapi_marm,
         tb_marmx     TYPE STANDARD TABLE OF bapi_marmx,
         wa_marmx     TYPE bapi_marmx,
         tb_marm_ga   TYPE STANDARD TABLE OF bapi_marm_ga,
         wa_marm_ga   TYPE bapi_marm_ga.
*End of changes phaniram YADK931460
* Header Data.
  IF wa_mara-vpsta CA cn_k.
    wa_headdata-basic_view    =  cn_x.
  ENDIF.
  IF wa_mara-vpsta CA cn_v.
    wa_headdata-sales_view    = cn_x.
  ENDIF.
  IF wa_mara-vpsta CA cn_e.
    wa_headdata-purchase_view = cn_x.
  ENDIF.
  IF wa_mara-vpsta CA cn_d.
    wa_headdata-mrp_view  = cn_x.
  ENDIF.
  IF wa_mara-vpsta CA cn_p.
    wa_headdata-forecast_view = cn_x.
  ENDIF.
  IF wa_mara-vpsta CA cn_a.
    wa_headdata-work_sched_view = cn_x.
  ENDIF.
  IF wa_mara-vpsta CA cn_f.
    wa_headdata-prt_view   =  cn_x.
  ENDIF.
  IF wa_mara-vpsta CA cn_l.
    wa_headdata-storage_view = cn_x.
  ENDIF.
  IF wa_mara-vpsta CA cn_s.
    wa_headdata-warehouse_view = cn_x.
  ENDIF.
  IF wa_mara-vpsta CA cn_q.
    wa_headdata-quality_view = cn_x.
  ENDIF.
  IF wa_mara-vpsta CA cn_b.
    wa_headdata-account_view = cn_x.
  ENDIF.
  IF wa_mara-vpsta CA cn_g.
    wa_headdata-cost_view =  cn_x.
  ENDIF.
  wa_headdata-material      =  wa_mara-matnr.
  wa_headdata-ind_sector    =  wa_mara-mbrsh.
  wa_headdata-matl_type     =  wa_mara-mtart.
* Material Description
  CALL FUNCTION 'BAPI_MATERIAL_GET_ALL'
    DESTINATION va_dest
    EXPORTING
      material            = wa_mara-matnr
    IMPORTING
      clientdata          = wa_clnt
    TABLES
      materialdescription = tb_matdes
      unitsofmeasure      = tb_marm_ga.
  IF  tb_matdes  IS NOT INITIAL.
    LOOP  AT tb_matdes INTO wa_matdes.
      wa_makt_des-langu       = wa_matdes-langu.
      wa_makt_des-langu_iso   = wa_matdes-langu_iso.
      wa_makt_des-matl_desc   = wa_matdes-matl_desc.
      APPEND wa_makt_des TO tb_makt_des.
      CLEAR :wa_makt_des.
    ENDLOOP.
  ENDIF.
*Begin of changes phaniram YADK931460
  IF  tb_matdes  IS NOT INITIAL.
    LOOP  AT tb_marm_ga INTO wa_marm_ga.
      MOVE-CORRESPONDING wa_marm_ga TO wa_marm.
*Begin of change Phaniram YADK934080 04.09.2013
      IF wa_marm-alt_unit = 'NR'.
         wa_marm-del_flag = 'X'.
      ENDIF.
*End of change Phaniram YADK934080 04.09.2013
      APPEND wa_marm TO tb_marm.
      CLEAR :wa_marm_ga,wa_marm.
    ENDLOOP.
  ENDIF.
  wa_marmx-alt_unit        = 'X'."wa_marm_ga-alt_unit.
  wa_marmx-alt_unit_iso    = 'X'."wa_marm_ga-alt_unit_iso.
  wa_marmx-numerator       = 'X'. "wa_marm_ga-numerator.
  wa_marmx-denominatr      = 'X'." wa_marm_ga-denominatr.
  APPEND wa_marmx TO tb_marmx.
*Begin of changes phaniram YADK931460
*Clinet data
  IF wa_clnt    IS NOT INITIAL.
    MOVE-CORRESPONDING wa_clnt TO wa_clientdata.
    CLEAR wa_clnt.
  ENDIF.
* Client datax
* For clientdatx value assign purpose.
  ASSIGN wa_clientdatax TO <wa>.
  SELECT * FROM dd03l INTO TABLE tb_dd03l WHERE tabname = 'BAPI_MARAX'.
  IF sy-subrc IS INITIAL.
    LOOP AT tb_dd03l INTO wa_dd03l.
      ASSIGN COMPONENT wa_dd03l-fieldname OF STRUCTURE <wa> TO <comp>.
      <comp> = cn_x.
    ENDLOOP.
    MOVE-CORRESPONDING <wa> TO wa_clientdatax.
  ENDIF.
* Material Creation
  IF wa_headdata  IS NOT INITIAL AND
   wa_clientdata  IS NOT INITIAL.  .
    CALL FUNCTION 'BAPI_MATERIAL_SAVEDATA'
      EXPORTING
        headdata            = wa_headdata
        clientdata          = wa_clientdata
        clientdatax         = wa_clientdatax
      IMPORTING
        return              = wa_sav_ret
      TABLES
        materialdescription = tb_makt_des
        unitsofmeasure      = tb_marm
        unitsofmeasurex     = tb_marmx.
  ENDIF.
  CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
    EXPORTING
      wait = cn_x.

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 invoking through webservice, can anyone help me?

    I received error messages bellow:
    MG Field MATNR has been transferred inconsistently or is blank
    MG MATNR for LTX1 is ""; previously "000000000030000917"
    MK Trying to change: 30000917 ____ ____ ____ __________ ____ __ ___ ___
    The following parameters are passed:
    MATHEAD.MATERIAL = "000000000030000917";
    MATHEAD.IND_SECTOR = "C";
    MATHEAD.MATL_TYPE = "ZFRT";
    MATHEAD.BASIC_VIEW = "X";
    MAKT[0].LANGU_ISO = "ZH";
    MAKT[0].MATL_DESC = "MATE NAME";
    MARA.MATL_GROUP = "0001";
    MARA.BASE_UOM_ISO = "KGM";
    MARAX.MATL_GROUP = "X";
    MARAX.BASE_UOM_ISO = "X";
    These parameters are passed testing in an ABAP Report Program which calls the BAPI.
    I don't know what's the problem, can anyone help me?

    This is true (tested it and it works). In addition to that, you have to add some code in step 5 of the LSMW to match the 18-char MATNR field to the 70-char TEXT_NAME. Changing the MATNR source field to 70-char also won't help as it then can't find the material number in MARA. Here's an example of code for TEXT_NAME field in step 5 of LSMW when using BAPI (BUS1001006 - MATMAS_BAPI03):
    TABLES: MARA.
    DATA: lv_matnr(18) type c.
    if not POTEXTSOURCE-MATNR is initial.
        CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
        EXPORTING
          INPUT = POTEXTSOURCE-MATNR
        IMPORTING
          OUTPUT = lv_matnr.
      E1BP_MLTX-TEXT_NAME = lv_matnr.
    endif.
    Hope that helps
    Message was edited by: Arnold

  • How to select a custom view in BAPI_MATERIAL_SAVEDATA

    In our company we have defined some CUSTOM views for different materials. I want to select a custom view in the header data but don't see an option. The only options I see are as follows:
    MATERIAL
    IND_SECTOR
    MATL_TYPE
    BASIC_VIEW
    SALES_VIEW
    PURCHASE_VIEW
    MRP_VIEW
    FORECAST_VIEW
    WORK_SCHED_VIEW
    PRT_VIEW
    STORAGE_VIEW
    WAREHOUSE_VIEW
    QUALITY_VIEW
    ACCOUNT_VIEW
    COST_VIEW
    INP_FLD_CHECK
    MATERIAL_EXTERNAL
    MATERIAL_GUID
    MATERIAL_VERSION
    How can I select a view (in BAPI_MATERIAL_SAVEDATA) that's not a standard SAP view?
    Please help!
    Thanks.

    Hi,
    which views do you select in the structure HEADDATA? Do you select STORAGE_VIEW?
    Cheers

  • Problem  while Creating /Maintaing Data in R/3 (BAPI_MATERIAL_SAVEDATA)

    Hi,
          I am Developing a WebDynPro(Java) appln to connect R/3.For this i used BAPI_MATERIAL_SAVEDATA which module is for Creating/Updating  Material Data.I have Used the materialName,Description,Uniof Measure,Material Type as Input to R/3. while running The Appln it is fine to Connect R/3 and Its Bringing return Msges as "1)Trying To Create Material 2)The Material Cannot Be Maintained since no Maintainable data Transferred".That is I can not Create/SAVE material Data..Whether Anything might be wrong while Transferring Data ?What Type Of Pblm is This ? Did u ever come across The Pblm like this ? How to solve This ?
    Please Help Me Out

    Hi,
    In the Import parameters HEADDATA shows it is a Mandatory and for the remaining Structures you just instantiate it and Set it to the BAPI Element.
    Ex:- ComplexType_ZBAPI_FICA currentRelation = new ComplexType_ZBAPI_FICA();
    chgRelation.setCURR_BP_RELATIONSHIP(currentRelation);
    //chgRelation - BAPI Element
    //ComplexType_ZBAPI_FICA - Import type
    Regards,
    Sridhar
    Message was edited by: Sridhar kanchanapalli

  • 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...

  • In BAPI_MATERIAL_SAVEDATA , pass values to Chapter Id in foreign trade

    hai friends,
          I am trying to create material master using the bapi "BAPI_MATERIAL_SAVEDATA" , I couldnt get the fields in this bapi structure for passing the values to chapter Id field in the foreign trade export view can anyone help out for this.
       thanks in advance,
    Regards
    Janani .S

    Hi,
              i doubt whether we have a field for Chapter ID in BAPI_MATERIAL_SAVEDATA,
    you can maintain the same in the transaction J1ID.
    Regards,
    Anil

  • Updating account view in BAPI_MATERIAL_SAVEDATA

    Hello!!
    I am using the BAPI_MATERIAL_SAVEDATA to create the views of many materials, but I found a trouble in the BAPI. Three fields aren't updated after the BAPI process.
    They are the Usage of the material (MARA-MTUSE), Origin of the material (MARA-MTORG) and the Produced in-house (MARA-OWNPR) from table MBEW.
    Debugging the BAPI I found that the fields that I filled in the BAPI call aren't filled into the BAPI processing.
    Would someone help me in this question? Anybody was in this situation before?
    Thanks!
    Best regards,
    Diogo.

    Hello Diogo,
    have a look at OSS note 308303 "ALE - Fields in Brazilian solution not maintainable". Perhaps this could help you. Even, if it's a note regarding ALE, this could solve your problem too.
    Anyway - I would search for an OSS note, or open a call in the OSS, as this is a problem with SAP standard functionality.
    Best regards
    Stephan

  • Foriegn trade view in BAPI_MATERIAL_SAVEDATA

    HI,
    I am using BAPI_MATERIAL_SAVEDATA in that I cant  able to find the Foreign trade view can any one suggest me where it is.
    regards
    paul

    Hi,
    Foreign Trade view comes under Sales/Purchase view depending upon whether it is import or export.
    Hence, there is no specefic selection for it.
    This view contains some client level data and some plant level data.
    If you fill CLIENTDATA, CLIENTDATAX, PLANTDATA and PLANDATAX parameters, the FT view will be created.
    Hope this helps..
    Regards,
    Shashank

  • How do you assign a main EAN in BAPI_MATERIAL_SAVEDATA

    I am trying to assign a main EAN to an existing material (which does not currently have an EAN) using BAPI_MATERIAL_SAVEDATA.  I have implemented the following steps in an ABAP program:
    (a) Load the BAPI_MARM (unitsofmeasure) table with one row containing data for the main EAN, including its unit of measure.
    (b) I have a matching row in BAPI_MARMX  with the relevant fields set.
    (c) Load the BAPI_MEAN (internationalartnos) table with one row containing relevant data for the EAN.
    (d) After calling BAPI_MATERIAL_SAVEDATA I am calling BAPI_TRANSACTION_COMMIT.
    When I run the program it does not add the EAN or assign a main EAN.
    In debug the FM is returning the message MG 160 – ‘First specify the main EAN for the unit EA’
    I have read that there are problems with this BAPI and EAN's, but we seem to have applied the various notes (eg 406160 and others) that address this issue.
    Any help would be appreciated - thanks.

    why not use a BDC to update the same.

  • Invoking BAPI_MATERIAL_SAVEDATA as a web service from CAF

    I am new to BAPI world. Currently, we are building a composite application - a part of the application interacts with SAP R3 for creating materials and then getting a list of all created materials. We are using the following BAPIs: BAPI_MATERIAL_SAVEDATA, BAPI_MATERIAL_GETLIST, BAPI_MATERIAL_GETDETAIL.  All these BAPIs are exposed as web services. I have created an external service using wsdl file that corresponds to BAPI_MATERIAL_SAVEDATA.  I would like to create a new material by passing minimum possible parameters. I am setting the values in HEADDATA and MATERIALDESCRIPTION only. I am giving Y to basic_view and N to all other views in HEADDATA. The call succeeds apparently but when I try to retrieve it using BAPI_MATERIAL_GETLIST/GETDETAIL it fails to retrieve. My questions:
    1. What is the best way to create a new material (basic view) by passing minimum parameters?
    2. How to verify if the material is successfully created?
    3. How does CLIENTDATA and CLIENTDATAX differ? There are similar 'X' appends in other places as well. Can anyone please provide any pointer/link about some more basic information on the following BAPIs: BAPI_MATERIAL_SAVEDATA, BAPI_MATERIAL_GETDETAIL, BAPI_MATERIAL_GETLIST.
    Thanks.

    Hi,
       3. To get more information about a BAPI, you can look at the function module documentation. Login to the R/3 system, start transaction SE37 and type in the name of the BAPI and select "Display". Once you see the source code, you'll see a button called "Function module document". Clicking on that will open up the help document for that BAPI.
       For eg., quoting from the docs for BAPI_MATERIAL_SAVEDATA, CLIENTDATA structure is used to transfer the general basic data on a material. CLIENTDATA X structure determines which fields in the assigned user data structure (CLIENTDATA) contain change-relevant information.
       2. When the BAPI_MATERIAL_SAVEDATA is executed, it should ideally contain the material number in the structure HEADDATA. Check if you are getting that. If you have it, then it should've been created. You can double check by starting transaction SE11 and display table MARA. Type in the material number that you received.
      1. All the parameters except HEADDATA is optional for the  BAPI_MATERIAL_SAVEDATA. So you can just choose to pass some of the fields of this structure and that should do it.
    Regards,
    Satyajit.

  • Currency problem in BAPI_MATERIAL_SAVEDATA while uploading valuation class

    Hello Experts,
    I am uploading valuation class using BAPI_MATERIAL_SAVEDATA.
    While uploading it is showing runtime error "Unable to interpret KG as a number".
    I have used the FM CONVERSION_EXIT_CUNIT_INPUT to convert the UOM from the file to Field symbol.
    still the same. please guide me.
    I have pasted my code below.
    Kindly go through and help would be highly appreciated.
    *& Report  ZPRI_MAT_PRICE_UPLOAD
    REPORT  ZPRI_MAT_PRICE_UPLOAD no standard page heading line-size 150.
    tables : mbew,      " Material valuation
             makt,      " Material description
             mara.      " General material master
    data : begin of t_matvclass occurs 0,
           material type matnr,     " Material
           ind_sec type mbrsh,      " Industry sector
           mat_typ type mtart,      " Material type
           val_class type BKLAS,    " Valuation class
           MOV_PR TYPE VERPR,       " MOVING PRISE
           STD_PR TYPE STPRS,       " STANDARD PRISE
           base_uom like mara-meins,     " Material unit
           mat_desc type maktx,     " Material description - MAKTX
           plant type werks,        " Plant
           langu(2),
           end of t_matvclass.
    data : wa like line of t_matvclass.
    data: begin of it_makt occurs 0.
          include structure bapi_makt.
          data end of it_makt.
    data :bapi_head like bapimathead,     " Header Segment with Control Info
          bapi_clientdata like bapi_mara,    " Material Data at Client Level
          bapi_clientdatax like bapi_marax,  "Checkbox Structure
          bapi_valclass like BAPI_MBEW,      " Valuation class
          bapi_valclassx like BAPI_MBEWX,    " Checkbox Structure
    *      BAPI_MOVING_PR LIKE BAPI_MBEW,     "MOVING PRISE
    *      BAPI_MOVING_PRX LIKE BAPI_MBEWX,   "MOVING PRISE
    *      BAPI_STD_PRISE LIKE BAPI_MBEW,     "STANDARD PRISE
    *      BAPI_STD_PRISEX LIKE BAPI_MBEWX,   "STANDARD PRISE
          bapi_return like bapiret2,         " Bapi return structrue
          returnm type table of bapi_matreturn2 with header line.
    data : it_excel type alsmex_tabline occurs 0 with header line.
    data: begin of it_ret occurs 0.
           include structure bapiret2.
          data end of it_ret.
    * Data objects for exception handling.
    data : lv_converr type ref to CX_SY_CONVERSION_ERROR,
           lv_dynerr type ref to CX_SY_DYN_CALL_ERROR.
    data : txt_converr type string,
           txt_converr_l type string,
           txt_dynerr type string,
           txt_dynerr_l type string.
    data : char_uom(4) type c.    " Global UOM after conversion
    * Declaring selection screen for selecting a data file
    * for uploading valuation class
    selection-screen begin of block b1 with frame title text-001.
    parameter : file_nam type rlgrap-filename obligatory default
                  'C:\master data UPDATED_test.xls'.
    parameter : p_begcol type i default 1,        " no-display,
                p_begrow type i default 2,        "   no-display,
                p_endcol type i default 9,        " no-display,
                p_endrow type i default 267.      " no-display.
    *parameters: p_valare type mbew-bwkey obligatory.    " Valuation area
    selection-screen end of block b1.
    at selection-screen on value-request for file_nam.
    perform F_get_file using file_nam.
    start-of-selection.
    perform F_xls_itab using file_nam changing it_excel.
    perform F_move_data.
    *perform F_get_data.
    perform F_Display_data.
    *&      Form  F_xls_itab
    *       text
    *      -->P_FILE_NAM  text
    *      <--P_IT_EXCEL  text
    form F_xls_itab  using    p_file_nam changing p_it_excel.
    CALL FUNCTION 'ALSM_EXCEL_TO_INTERNAL_TABLE'
      EXPORTING
        filename                      = file_nam
        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.
    endform.                    " F_xls_itab
    *&      Form  F_get_file
    *     Subroutine to get the file on F4
    *      -->P_FILE_NAM  text
    form F_get_file  using    p_file_nam.
    CALL FUNCTION 'KD_GET_FILENAME_ON_F4'
    EXPORTING
       PROGRAM_NAME        = SYST-REPID
       DYNPRO_NUMBER       = SYST-DYNNR
    *   FIELD_NAME          = ' '
    *   STATIC              = ' '
    *   MASK                = ' '
      CHANGING
        file_name           = file_nam
    EXCEPTIONS
       MASK_TOO_LONG       = 1
       OTHERS              = 2.
    endform.                    " F_get_file
    *&      Form  F_Display_data
    *       text
    *  -->  p1        text
    *  <--  p2        text
    form F_Display_data .
    skip 2.
    *write:/2 'Valuation area :', p_valare.
    *write:/2 'Standard price :', p_stdprc.
    skip 2.
      write:/29 sy-uline(120).
      write:/29 sy-vline,
             30 'Material' color 1,               " Material - MATNR
             50 sy-vline, 'Ind_sector' color 1,   " Industry sector  - MBRSH
             62 sy-vline, 'Mat_typ' color 1,   " Material type - MTART
             75 sy-vline, 'Valuation class' color 1,  " Valuation class
             85 sy-vline, 'Base UOM' color 1,          " Base UOM
             95 sy-vline, 'Material Decp' color 1,     " Material descp
             120 sy-vline, 'Mov Price',                 " Moving price
             130 sy-vline, 'Std Price',                 " Standard price
             140 sy-vline, 'Plant',                     " Plant
             150 sy-vline.
      write:/29 sy-uline(120).
    loop at t_matvclass into wa.
      write:/29 sy-vline,
             30 wa-material color 2,               " Material - MATNR
             50 sy-vline,
             55 wa-ind_sec color 2 right-justified, " Industry sector
             62 sy-vline,
             66 wa-mat_typ color 2,                " Material type - MTART
             75 sy-vline,
             78 wa-val_class color 2 right-justified, " Valuation class
             85 sy-vline,
             88 wa-base_uom color 2 right-justified,  " Base UOM
             95 sy-vline,
             98 wa-mat_desc color 2 left-justified,  " Material Desc
             120 sy-vline, wa-MOV_PR,                 " Standard price
             130 sy-vline, wa-STD_PR,                 " Moving price
             140 sy-vline, wa-plant,                     " Plant
             150 sy-vline.
    endloop.
    write:/29 sy-uline(64).
    endform.                    " F_Display_data
    *&      Form  F_move_data
    *      Subroutine to move data from excel to internal table
    *  -->  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 each record to the internal table row.
      assign component lv_index of structure wa to <fs>.
    * Assigning the field value to a field symbol
    if lv_index eq 5.
    CALL FUNCTION 'CONVERSION_EXIT_CUNIT_INPUT'
      EXPORTING
        INPUT                = it_excel-value
       LANGUAGE             = SY-LANGU
    IMPORTING
       OUTPUT               = char_uom.
    ** Moving the converted UOM to  field symbol
    move char_uom to <fs>.
    else.
       move it_excel-value to <fs>.
    endif.
      at end of row.
      append wa to t_matvclass.
      clear wa.
      endat.
    endloop.
    endform.                    " F_move_data
    *&      Form  F_get_data
    *       text
    *  -->  p1        text
    *  <--  p2        text
    form F_get_data .
    loop at t_matvclass into wa.
    try.
    * BAPIHEAD --- > Header Segment with Control Information
    bapi_head-material = wa-material.
    bapi_head-ind_sector = wa-ind_sec.
    bapi_head-matl_type = wa-mat_typ.
    bapi_head-account_view = 'X'.
    * For Clien Data
    bapi_clientdata-BASE_UOM = wa-base_uom.
    bapi_clientdatax-base_uom = 'X'.
    bapi_clientdatax-base_uom_iso = 'X'.
    * For Valuation Class.
    bapi_valclass-val_area = wa-plant.
    bapi_valclass-val_class = wa-val_class.
    bapi_valclass-std_price = wa-STD_PR.
    bapi_valclass-MOVING_PR = wa-MOV_PR.
    * For Valuation Class control checkbox.
    bapi_valclassx-val_area = wa-plant.
    bapi_valclassx-val_class = 'X'.
    bapi_valclassx-std_price = 'X'.
    bapi_valclass-MOVING_PR = 'X'.
    refresh it_makt.
    wa-langu = SY-LANGU.
    it_makt-langu = wa-langu.
    it_makt-matl_desc = wa-mat_desc.
    append it_makt.
    clear it_ret.
    refresh it_ret.
    if t_matvclass[] is initial.
      write:/ 'Cannot be updated'.
    else.
    perform F_call_bapi.
    endif.
    catch CX_SY_CONVERSION_ERROR into lv_converr.
       txt_converr = lv_converr->get_text( ).
       txt_converr_l = lv_converr->get_longtext( ).
       write:/ 'Error:', txt_converr color 5.
       write:/ 'Error:', txt_converr_l color 3.
    endtry.
    endloop.
    endform.                    " F_get_data
    *&      Form  F_bapi_commit
    *       text
    *  -->  p1        text
    *  <--  p2        text
    form F_bapi_commit.
    CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
    * EXPORTING
    *   WAIT          =
    * IMPORTING
    *   RETURN        =
    if sy-subrc eq 0.
      write:/2 ' Transaction commited' color 4.
    else.
      write:/2 'Unable to commit the transaction' color 4.
    endif.
    endform.                    " F_bapi_commit
    *&      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
        VALUATIONDATA              = bapi_valclass
        VALUATIONDATAX             = bapi_valclassx
    IMPORTING
       RETURN                     = it_ret
    TABLES
       MATERIALDESCRIPTION        =  it_makt
       RETURNMESSAGES        =  returnm.
       IF it_ret-type eq 'E' or it_ret-TYPE eq 'S'.
         Write:/1 it_ret-type,
                8 it_ret-id,
                30 it_ret-number,
                38 it_ret-message,
                190 it_ret-parameter,
                210 it_ret-row,
                220 it_ret-field.
       endif.
    endform.                    " F_call_bapi
    Regards,
    Ranjith N

    resloved.
    issue with the internal table structrue.

  • Error in BAPI_MATERIAL_SAVEDATA -  Unit of measure ****** is not defined;

    Hi,
    I am using the BAPI_MATERIAL_SAVEDATA to create material in the material master, I am passing
        ls_bapi_head-basic_view    = 'X'.
        ls_bapi_head-purchase_view = 'X'.
        ls_bapi_head-mrp_view      = 'X'.
        ls_bapi_head-storage_view  = 'X'.
        ls_bapi_head-quality_view  = 'X'.
        ls_bapi_head-account_view  = 'X'.
    these views, I am passing the necessary details to the BAPI . But it is giving me an error ' **Unit of measure ****** is not defined; check your entry**'. plz help me how to solv the problem.
    Thanks,
    shekar

    Hi Vinod,
    It was very usefull for me thanks,
    I have another problem i have  to pass Valuation Class - bklas and in quality view nspection Type - 'art', Inspection Type - Material Combination is Active - 'aktiv'.
    please let me know how to pass these values to FM
    thanks,
    shekar

Maybe you are looking for

  • Change Document category of preceding SD document in VBFA

    Hi all, is there a fm to change the Document category of preceding SD document in the table VBFA? And also in table VBAP? regards

  • Bring back traditional scroll bars and arrows

    Why would Apple change a fundemental part of the UI? Removing scroll bars and arrows from the UI is unacceptable in my view. I understand you can restore scroll bar functionality from system preferences but having the arrows on certain apps is very h

  • Search the calendar in treo 650?

    is it possible to search the calendar in the treo 650?  i used to be able to do it on calendars in the clie.  Post relates to: Treo 650 (Verizon)

  • IDVD '08 won't launch on my macbook! T_T

    Help! I have used Time Machine to go back and retrieve my iDVD after trashing it and it still doesn't work. I looked at the CDs that came with my MacBook and I can't seem to find the file to reinstall iDVD. All the other discussions say that I should

  • Blackberry Blend on Ipad iOS 8 bad referrer

    I downloaded and intalled blackberry blend, on my ipad 3,  a few times and everytime when i connect to my black berry it just shows a screen that dosnt show my data just some titles or it shows a screen that says "bad referrer" Can someone please hel