‎2012 Nov 27 9:09 AM
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
‎2012 Nov 27 10:40 AM
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.
‎2012 Nov 27 10:40 AM
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.
‎2012 Nov 27 1:52 PM
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
‎2012 Nov 28 3:13 AM
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.
‎2012 Nov 27 11:03 AM
‎2012 Nov 27 11:05 AM
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
‎2012 Nov 27 2:09 PM
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