Application Development and Automation Discussions
Join the discussions or start your own on all things application development, including tools and APIs, programming models, and keeping your skills sharp.
cancel
Showing results for 
Search instead for 
Did you mean: 
Read only

Problem in BAPI_MATERIAL_SAVEDATA

Former Member
0 Likes
2,342

Hi Experts,

Im trying to create a material using the bapi BAPI_MATERIAL_SAVEDATA by using external material creation.

Im passing the material number in the excel sheet also.

and converting the material number for 18 digit using bapi CONVERSION_EXIT_ALPHA_INPUT.

but i get the following error

"Field MATNR has been transferred inconsistently or is blank"

Please help me on this

Regards,

Vijayan

1 ACCEPTED SOLUTION
Read only

Former Member
0 Likes
1,853

Are you passing the 'HEADDATA' into the BAPI? and also check whether you have defined the 'RETURN' structure and attach with the BAPI. If this does not resolve your issue, please state the piece of code which you are executing.

6 REPLIES 6
Read only

Former Member
0 Likes
1,854

Are you passing the 'HEADDATA' into the BAPI? and also check whether you have defined the 'RETURN' structure and attach with the BAPI. If this does not resolve your issue, please state the piece of code which you are executing.

Read only

0 Likes
1,853

Hi Ghosh,

Just iam pasting the code here now im facing a new error  " Unit of measure ****** is not defined; check your entry "

Kindly help to solve this

Regards,

Vijayan

REPORT  Z_MM_MAT_MAST_UPLD.

TYPE-POOLS: slis, truxs.

DATA: wa_tab_raw_data TYPE  truxs_t_text_data,

       sno TYPE i.

TYPES: BEGIN OF ty_msg,

        sno TYPE i,

        msgtyp TYPE c,

        mstring(255) TYPE c,

        END OF ty_msg.

DATA tmsstab TYPE TABLE OF ty_msg.

DATA wmsstab TYPE ty_msg.

DATA : lv_sno TYPE i.

TABLES : BAPIMATHEAD, " Header segment with control information

          BAPI_MARA,   " Client-specific material data

          BAPI_MARAX,  " Information on update for CLIENTDATA

          BAPI_MARC,   " Plant-specific material data

          BAPI_MARCX,  " Information on update for PLANTDATA

          BAPI_MARD,   " Storage-location-specific material data

          BAPI_MARDX,  " Information on update for STORAGELOCATIONDATA

          BAPI_MBEW,   " Valuation data

          BAPI_MBEWX,  " Information on update for VALUATIONDATA

          BAPI_MAKT,   " Material descriptions

          BAPI_MARM,   " Units of measure

          BAPI_MARMX,  " Information on update for UNITSOFMEASURE

          BAPI_MLTX,   " Long texts

          BAPIRET2.    " Return parameters

DATA : BEGIN OF ty_master,

        matnr(18),   " Material Number

        mbrsh(1),    " Industry Sector

        mtart(4),    " Material Type

        werks(4),    " Plant

        lgort(4),    " Storage Location

        maktx(40),    " Material Description

        meins(3),    " Base Unit of measure

        matkl(9),    " Material Group

*       bismt(18),   " Old Material Number

        ekgrp(3),    " Purchasing Group

        bstme(3),    " Order unit

        webaz(3),    " GR Procesing Time

*       TDLINE(132), " Purchase Order Text

        DISGR(4),    " MRP Group

        maabc(1),    " ABC Indicator

        dismm(2),    " MRP Type

        dispo(3),    " MRP Controller

        beskz(1),    " Procurement Type

        lgfsb(4),    " Storage Loc for EP

        plifz(3),    " Planned Delivery Time

        perkz(1),    " Period Indicator

        MTVFP(2),    " Availability Check

        LGPBE(10),   " Storage Bin

*       IPRKZ(1),    " Period Ind of SLED

        BWKEY(4),    " Valuation Area

        BKLAS(4),    " Valuation Class

        VPRSV(1),    " Price Control

        VERPR(11),   " Moving Price

        PEINH(5),    " Price Unit

        MEINH(3),    " alternate_unit

        UMREN(5),    " denominator

        UMREZ(5),    " numerator

        END OF ty_master.

DATA: BEGIN OF  it_matmaster OCCURS 0.

         INCLUDE STRUCTURE ty_master.

DATA: END OF it_matmaster.

DATA: BEGIN OF it_return OCCURS 0.

         INCLUDE STRUCTURE bapiret2.

DATA: END OF it_return.

DATA: BEGIN OF it_marm OCCURS 0.

         INCLUDE STRUCTURE bapi_marm.

DATA: END OF it_marm.

DATA: BEGIN OF it_marmx OCCURS 0.

         INCLUDE STRUCTURE bapi_marmx.

DATA: END OF it_marmx.

DATA: BEGIN OF it_mltx OCCURS 0.

         INCLUDE STRUCTURE bapi_mltx.

DATA: END OF it_mltx.

DATA: BEGIN OF it_materialdesc OCCURS 0.

         INCLUDE STRUCTURE bapi_makt .

DATA: END OF it_materialdesc.

******Selection Screen

SELECTION-SCREEN BEGIN OF BLOCK rad1 WITH FRAME TITLE text-002.

PARAMETERS: pa_fname LIKE rlgrap-filename.

SELECTION-SCREEN END OF BLOCK rad1.

******At Selection screen

AT SELECTION-SCREEN ON VALUE-REQUEST FOR pa_fname.

****** To get the File name

CALL FUNCTION 'F4_FILENAME'

  EXPORTING

    FIELD_NAME          = 'PA_FNAME'

  IMPORTING

    FILE_NAME           = PA_FNAME.

******Start of Selection

START-OF-SELECTION.

****** Convert the excel file to sap format

CALL FUNCTION 'TEXT_CONVERT_XLS_TO_SAP'

   EXPORTING

     I_LINE_HEADER              = 'X'

     i_tab_raw_data             = wa_tab_raw_data

     i_filename                 = pa_fname

   tables

     i_tab_converted_data       = it_matmaster[]

  EXCEPTIONS

    CONVERSION_FAILED          = 1

    OTHERS                     = 2.

IF sy-subrc <> 0.

MESSAGE i016(pg) WITH 'Invalid file. Please check again'.

     STOP.

ENDIF.

IF it_matmaster[] is  NOT INITIAL.

LOOP AT it_matmaster.

     CLEAR bapimathead.

     CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'

     EXPORTING

       input  = it_matmaster-matnr

     IMPORTING

       output = it_matmaster-matnr.

*    CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'

*    EXPORTING

*      input  = it_matmaster-dispo

*    IMPORTING

*      output = it_matmaster-dispo.

******Header Details

     bapimathead-material   = it_matmaster-matnr.

     bapimathead-ind_sector = it_matmaster-mbrsh.

     bapimathead-matl_type  = it_matmaster-mtart.

     bapimathead-basic_view = 'X'.

     bapimathead-mrp_view   = 'X'.

     bapimathead-storage_view  = 'X'.

     bapimathead-account_view  = 'X'.

     bapimathead-purchase_view = 'X'.

****Mara Table Details

     bapi_mara-matl_group   =  it_matmaster-matkl.

     bapi_mara-BASE_UOM_ISO     =  it_matmaster-meins.

*    bapi_mara-old_mat_no   =  it_matmaster-bismt.

*    bapi_mara-PERIOD_IND_EXPIRATION_DATE = it_matmaster-IPRKZ.

     bapi_mara-PO_UNIT = it_matmaster-BSTME.

     bapi_marax-matl_group  =  'X'.

     bapi_marax-BASE_UOM_ISO    =  'X'.

*    bapi_marax-old_mat_no  =  'X'.

*    bapi_marax-PERIOD_IND_EXPIRATION_DATE = 'X'.

     bapi_marax-PO_UNIT = 'X'.

*****MARC Table Details

     bapi_marc-plant          = it_matmaster-werks.

     bapi_marc-pur_group      = it_matmaster-ekgrp.

     bapi_marc-mrp_type       = it_matmaster-dismm.

     bapi_marc-mrp_ctrler     = it_matmaster-dispo.

     bapi_marc-ABC_ID         = it_matmaster-maabc.

     bapi_marc-PLND_DELRY     = it_matmaster-plifz.

     bapi_marc-GR_PR_TIME     = it_matmaster-webaz.

     bapi_marc-PERIOD_IND     = it_matmaster-perkz.

     bapi_marc-PROC_TYPE      = it_matmaster-beskz.

     bapi_marc-MRP_GROUP      = it_matmaster-disgr.

     bapi_marc-SLOC_EXPRC     = it_matmaster-lgfsb.

     bapi_marc-AVAILCHECK     = it_matmaster-mtvfp.

     bapi_marcx-plant         = it_matmaster-werks.

     bapi_marcx-pur_group     = 'X'.

     bapi_marcx-mrp_type      = 'X'.

     bapi_marcx-mrp_ctrler    = 'X'.

     bapi_marcx-ABC_ID        = 'X'.

     bapi_marcx-PLND_DELRY    = 'X'.

     bapi_marcx-GR_PR_TIME    = 'X'.

     bapi_marcx-PERIOD_IND    = 'X'.

     bapi_marcx-PROC_TYPE     = 'X'.

     bapi_marcx-MRP_GROUP     = 'X'.

     bapi_marcx-sloc_exprc    = 'X'.

     bapi_marcx-AVAILCHECK    = 'X'.

*****MARD Table Details

     bapi_mard-plant          = it_matmaster-werks.

     bapi_mard-stge_loc       = it_matmaster-lgort.

     bapi_mard-stge_bin       = it_matmaster-lgpbe.

     bapi_mardx-plant         = it_matmaster-werks.

     bapi_mardx-stge_loc      = it_matmaster-lgort.

     bapi_mardx-stge_bin      = 'X'.

******MBEW Table Details

     bapi_mbew-VAL_AREA       = it_matmaster-bwkey.

     bapi_mbew-val_class      = it_matmaster-bklas.

     bapi_mbew-PRICE_CTRL     = it_matmaster-VPRSV.

     bapi_mbew-MOVING_PR      = it_matmaster-VERPR.

     bapi_mbew-PRICE_UNIT     = it_matmaster-PEINH.

     bapi_mbewx-VAL_AREA       = it_matmaster-bwkey.

     bapi_mbewx-val_class     = 'X'.

     bapi_mbewx-PRICE_CTRL    = 'X'.

     bapi_mbewx-MOVING_PR     = 'X'.

     bapi_mbewx-PRICE_UNIT    = 'X'.

*****Material Description Details

     it_materialdesc-langu            = 'EN'.

     it_materialdesc-matl_desc        = it_matmaster-maktx.

     APPEND it_materialdesc.

*****Material Unit of Measure

     it_marm-ALT_UNIT   = it_matmaster-MEINH.

     it_marm-NUMERATOR  = it_matmaster-UMREZ.

     it_marm-DENOMINATR = it_matmaster-UMREN.

     APPEND it_marm.

     it_marmx-ALT_UNIT   = it_matmaster-MEINH.

     it_marmx-NUMERATOR  = 'X'.

     it_marmx-DENOMINATR = 'X'.

     APPEND it_marmx.

***** Material Long Text

*    it_mltx-LANGU = 'EN'.

*    it_mltx-APPLOBJECT = 'MATERIAL'.

*    it_mltx-TEXT_ID = 'BEST'.

*    it_mltx-TEXT_LINE = it_matmaster-tdline.

*    APPEND it_mltx.

*    BREAK-POINT.

     CALL FUNCTION 'BAPI_MATERIAL_SAVEDATA'

       EXPORTING

        headdata                   = bapimathead

        CLIENTDATA                 = bapi_mara

        CLIENTDATAX                = bapi_marax

        PLANTDATA                  = bapi_marc

        PLANTDATAX                 = bapi_marcx

        STORAGELOCATIONDATA        = bapi_mard

        STORAGELOCATIONDATAX       = bapi_mardx

        VALUATIONDATA              = bapi_mbew

        VALUATIONDATAX             = bapi_mbewx

      IMPORTING

        RETURN                     = it_return

      TABLES

        MATERIALDESCRIPTION        = it_materialdesc

        UNITSOFMEASURE             = it_marm

        UNITSOFMEASUREX            = it_marmx.

*       MATERIALLONGTEXT           = it_mltx.

BREAK-POINT.

     IF it_return-type EQ 'S'.

        CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'.

     ENDIF.

     lv_sno = lv_sno + 1.

     wmsstab-sno = lv_sno.

     wmsstab-msgtyp = it_return-type.

     wmsstab-mstring = it_return-message.

     APPEND wmsstab TO tmsstab.

     CLEAR : wmsstab,

             bapimathead,

             bapi_mara,

             bapi_marax,

             bapi_marc,

             bapi_marcx,

             bapi_mard,

             bapi_mardx,

             bapi_mbew,

             bapi_mbewx,

             it_materialdesc[],

             it_marm[],

             it_marmx[],

             it_mltx.

ENDLOOP.

PERFORM print_msg.

ELSE.

   MESSAGE 'No data found' TYPE 'S' DISPLAY LIKE 'E'.

ENDIF.

*&---------------------------------------------------------------------*

*&      Form  PRINT_MSG

*&---------------------------------------------------------------------*

form PRINT_MSG .

   DATA it_fieldcat TYPE TABLE OF slis_fieldcat_alv.

   DATA wa_fieldcat TYPE slis_fieldcat_alv.

   DATA layout TYPE slis_layout_alv.

   CLEAR wa_fieldcat.

   wa_fieldcat-fieldname = 'SNO'.

   wa_fieldcat-seltext_l = 'SNo'.

   APPEND wa_fieldcat TO it_fieldcat.

   CLEAR wa_fieldcat.

   wa_fieldcat-fieldname = 'MSGTYP'.

   wa_fieldcat-seltext_l = 'Message Type'.

   APPEND wa_fieldcat TO it_fieldcat.

   CLEAR wa_fieldcat.

   wa_fieldcat-fieldname = 'MSTRING'.

   wa_fieldcat-seltext_l = 'Text'.

   APPEND wa_fieldcat TO it_fieldcat.

   layout-colwidth_optimize = 'X'.

   CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'

   EXPORTING

     i_callback_program = sy-repid

     is_layout          = layout

     it_fieldcat        = it_fieldcat

   TABLES

     t_outtab           = tmsstab

   EXCEPTIONS

     program_error      = 1

     OTHERS             = 2.

   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.                    " PRINT_MSG

Read only

0 Likes
1,853

Hi,

     

      Use below code for Alternative Unit of Measure

      CALL FUNCTION 'CONVERSION_EXIT_CUNIT_INPUT'
      EXPORTING
        INPUT          = IT_MATMASTER-MEINH   " Alternative Unit of Measure
      IMPORTING
        OUTPUT         = IT_MARM-ALT_UNIT    " Alternative Unit of Measure
      EXCEPTIONS
        UNIT_NOT_FOUND = 1
        OTHERS         = 2.

Read only

gouravkumar64
Active Contributor
0 Likes
1,853

hi,

see this thread for help purpose.

http://scn.sap.com/message/5808994

Thanks

Gourav.

Read only

Former Member
0 Likes
1,853

Hi ,

         is external material number alphanumaric ? (Yes : den no need to use CONVERSION_EXIT_ALPHA_INPUT) alphanumaric mean : start with alphabets (A-Z).

also  chek tabular MATNR Values

MATERIALLONGTEXT-TEXT_NAME  == ur MATNR Variable

if external material number then not used leading with zero else pass MATNR leading with zero in case of internal material numbner .

Regards

Smruti Ranjan

Read only

RaymondGiuseppi
Active Contributor
0 Likes
1,853

Just read the BAPI documentation of HEADDATA parameter, or use scn search tool (Field MATNR has been transferred inconsistently or is blank)

(Hint: call first BAPI_MATERIAL_GETINTNUMBER)

Regards,

Raymond