Application Development 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: 

Problem creating material with BAPI_MATERIAL_MAINTAINDATA_RT

Former Member
0 Kudos

Hi,

I'm trying to use this BAPI to create a new material but I get an error. When I don't set the MATERIAL field I get this error:

No entry in key field of table MARA

This shouldn't happen since I am using internal numbering. Anyway, when I try to set this field manually I get this error:

No entry in key field MATNR of header segment

So now I don't really understand what is wrong. Please help me.

Thank you, dahniabadh, obrigado, gracias, spaciba, paldies!

Here's the code snippet:

FORM process_record tables t_return structure bapiret2

USING s_mat LIKE zcs_materials.

DATA: s_bapiret LIKE bapireturn1,

s_headerdata LIKE bapie1mathead,

t_clientdata LIKE bapie1marart OCCURS 0 WITH HEADER LINE,

t_matdesc LIKE bapie1maktrt OCCURS 0 WITH HEADER LINE,

t_clientext LIKE bapie1maraextrt OCCURS 0 WITH HEADER LINE,

t_addnl LIKE bapie1maw1rt OCCURS 0 WITH HEADER LINE,

t_plantdata LIKE bapie1marcrt OCCURS 0 WITH HEADER LINE,

t_storloc LIKE bapie1mardrt OCCURS 0 WITH HEADER LINE,

t_uom LIKE bapie1marmrt OCCURS 0 WITH HEADER LINE,

t_uomtext LIKE bapie1mamtrt OCCURS 0 WITH HEADER LINE,

t_mean LIKE bapie1meanrt OCCURS 0 WITH HEADER LINE,

BEGIN OF t_plants OCCURS 0,

werks TYPE werks_d,

vlfkz TYPE vlfkz,

END OF t_plants.

CONSTANTS: k_matl_type LIKE bapie1mathead-matl_type VALUE 'ZHAW',

k_trans_grp LIKE bapie1marart-trans_grp VALUE 'NORM',

k_item_cat LIKE bapie1marart-item_cat VALUE 'NORM',

k_repl_list LIKE bapie1maw1rt-repl_list VALUE '2',

k_loadinggrp LIKE bapie1maw1rt-loadinggrp VALUE 'NORM',

k_li_proc_st LIKE bapie1maw1rt-li_proc_st VALUE 'B1',

k_li_proc_dc LIKE bapie1maw1rt-li_proc_dc VALUE 'B1',

k_listing_to TYPE datum VALUE '99991231',

k_val_class LIKE bapie1maw1rt-val_class VALUE '3100',

k_pur_group LIKE bapie1marcrt-pur_group VALUE '703',

k_mrp_type LIKE bapie1marcrt-mrp_type VALUE 'ND',

k_dc_lv TYPE werks_d VALUE 'LVD1',

k_loadinggrp_dc_lv LIKE bapie1marcrt-loadinggrp VALUE '1080',

k_loadinggrp_others LIKE bapie1marcrt-loadinggrp VALUE 'NORM',

k_sup_source_dc_lv LIKE bapie1marcrt-sup_source VALUE '1',

k_sup_source_others LIKE bapie1marcrt-sup_source VALUE '2',

k_auto_p_ord LIKE bapie1marcrt-auto_p_ord VALUE 'X',

k_iss_st_loc_dc_lv LIKE bapie1marcrt-iss_st_loc VALUE 'LV03',

k_iss_st_loc_others LIKE bapie1marcrt-iss_st_loc VALUE '0001',

k_neg_stocks LIKE bapie1marcrt-neg_stocks VALUE 'X',

k_round_prof LIKE bapie1marcrt-round_prof VALUE 'C',

k_pur_status LIKE bapie1marcrt-pur_status VALUE 'Y2',

k_availcheck_store LIKE bapie1marcrt-availcheck VALUE '01',

k_availcheck_dc LIKE bapie1marcrt-availcheck VALUE 'KP',

k_alt_unit_dpa LIKE bapie1marmrt-alt_unit VALUE 'DPA',

k_numerator LIKE bapie1marmrt-numerator VALUE 1,

k_volumeunit LIKE bapie1marmrt-volumeunit VALUE 'M3',

k_unit_of_wt LIKE bapie1marmrt-unit_of_wt VALUE 'KG',

k_text_id LIKE bapie1mamtrt-text_id VALUE '02'.

  • HEADERDATA

CLEAR s_headerdata.

s_headerdata-function = '009'.

s_headerdata-material = '000000000000705402'. <------- manually setting MATNR

s_headerdata-matl_group = s_mat-matkl.

s_headerdata-matl_type = k_matl_type.

  • CLIENTDATA

REFRESH t_clientdata.

CLEAR t_clientdata.

t_clientdata-function = '009'.

t_clientdata-base_uom = s_mat-meins.

t_clientdata-trans_grp = k_trans_grp.

t_clientdata-season = s_mat-saiso.

t_clientdata-saeson_yr = s_mat-saisj.

t_clientdata-prod_hier = s_mat-prdha.

t_clientdata-tax_class = s_mat-sales_vat. "This will have to be converted

t_clientdata-item_cat = k_item_cat.

APPEND t_clientdata.

  • CLIENTEXT

REFRESH t_clientext.

CLEAR t_clientext.

t_clientext-function = '009'.

t_clientext-field1 = s_mat-maktx_lv.

APPEND t_clientext.

  • ADDNLCLIENTDATA

REFRESH t_addnl.

CLEAR t_addnl.

t_addnl-function = '009'.

t_addnl-repl_list = k_repl_list.

t_addnl-countryori = s_mat-wherl.

t_addnl-loadinggrp = k_loadinggrp.

t_addnl-assort_lev = '123456789'. "Must be calculated

t_addnl-li_proc_st = k_li_proc_st.

t_addnl-li_proc_dc = k_li_proc_dc.

t_addnl-list_st_fr = sy-datum.

t_addnl-list_st_to = k_listing_to.

t_addnl-list_dc_fr = sy-datum.

t_addnl-list_dc_to = k_listing_to.

t_addnl-sell_st_fr = sy-datum.

t_addnl-sell_st_to = k_listing_to.

t_addnl-sell_dc_fr = sy-datum.

t_addnl-sell_dc_to = k_listing_to.

t_addnl-val_class = k_val_class.

APPEND t_addnl.

  • MATERIALDECRIPTION

REFRESH t_matdesc.

CLEAR t_matdesc.

t_matdesc-function = '009'.

t_matdesc-langu = 'EN'.

t_matdesc-matl_desc = s_mat-maktx_en.

APPEND t_matdesc.

t_matdesc-langu = 'ET'.

t_matdesc-matl_desc = s_mat-maktx_ee.

APPEND t_matdesc.

t_matdesc-langu = 'LV'.

t_matdesc-matl_desc = s_mat-maktx_lv.

APPEND t_matdesc.

t_matdesc-langu = 'LT'.

t_matdesc-matl_desc = s_mat-maktx_lt.

APPEND t_matdesc.

  • PLANTDATA & STORAGELOCATIONDATA

REFRESH t_plantdata.

REFRESH t_storloc.

LOOP AT t_plants.

  • PLANTDATA

CLEAR t_plantdata.

t_plantdata-function = '009'.

t_plantdata-plant = t_plants-werks.

t_plantdata-pur_group = k_pur_group.

t_plantdata-mrp_type = k_mrp_type.

IF t_plants-werks = 'LVD1'.

t_plantdata-loadinggrp = k_loadinggrp_dc_lv.

t_plantdata-sup_source = k_sup_source_dc_lv.

t_plantdata-iss_st_loc = k_iss_st_loc_dc_lv.

ELSE.

t_plantdata-loadinggrp = k_loadinggrp_others.

t_plantdata-sup_source = k_sup_source_others.

t_plantdata-iss_st_loc = k_iss_st_loc_others.

ENDIF.

IF t_plants-vlfkz = 'A'.

t_plantdata-availcheck = k_availcheck_store.

ELSE.

t_plantdata-availcheck = k_availcheck_dc.

ENDIF.

t_plantdata-auto_p_ord = k_auto_p_ord.

t_plantdata-comm_code = s_mat-stawn.

t_plantdata-neg_stocks = k_neg_stocks.

t_plantdata-round_prof = k_round_prof.

t_plantdata-pur_status = k_pur_status.

t_plantdata-pvalidfrom = sy-datum.

APPEND t_plantdata.

  • STORAGELOCATIONDATA

CLEAR t_storloc.

t_storloc-function = '009'.

t_storloc-plant = t_plants-werks.

IF t_plants-werks = 'LVD1'.

t_storloc-stge_loc = k_iss_st_loc_dc_lv.

ELSE.

t_storloc-stge_loc = k_iss_st_loc_others.

ENDIF.

APPEND t_storloc.

ENDLOOP.

  • UNITSOFMEASURE

REFRESH t_uom.

CLEAR t_uom.

t_uom-function = '009'.

t_uom-alt_unit = k_alt_unit_dpa.

t_uom-numerator = k_numerator.

t_uom-denominatr = s_mat-umren.

t_uom-volume = s_mat-volum.

t_uom-volumeunit = k_volumeunit.

t_uom-gross_wt = s_mat-begew.

t_uom-unit_of_wt = k_unit_of_wt.

APPEND t_uom.

  • UNITOFMEASURETEXTS

REFRESH t_uomtext.

CLEAR t_uomtext.

t_uomtext-function = '009'.

t_uomtext-text_id = k_text_id.

t_uomtext-alt_unit = s_mat-meins.

t_uomtext-langu = 'ET'.

t_uomtext-matl_descr = s_mat-maktm_et.

t_uomtext-langu = 'LV'.

t_uomtext-matl_descr = s_mat-maktm_lv.

t_uomtext-langu = 'LT'.

t_uomtext-matl_descr = s_mat-maktm_lt.

APPEND t_uomtext.

  • INTERNATIONALARTNOS

IF s_mat-ean11_2 IS NOT INITIAL.

REFRESH t_mean.

CLEAR t_mean.

t_mean-function = '009'.

t_mean-unit = s_mat-meins.

t_mean-ean_upc = s_mat-ean11_2.

APPEND t_mean.

ENDIF.

  • BAPI

CALL FUNCTION 'BAPI_MATERIAL_MAINTAINDATA_RT'

EXPORTING

headdata = s_headerdata

IMPORTING

return = s_bapiret

TABLES

  • VARIANTSKEYS =

  • CHARACTERISTICVALUE =

  • CHARACTERISTICVALUEX =

clientdata = t_clientdata

  • clientdatax =

clientext = t_clientext

  • CLIENTEXTX =

addnlclientdata = t_addnl

  • ADDNLCLIENTDATAX =

materialdescription = t_matdesc

plantdata = t_plantdata

  • PLANTDATAX =

  • PLANTEXT =

  • PLANTEXTX =

  • FORECASTPARAMETERS =

  • FORECASTPARAMETERSX =

  • FORECASTVALUES =

  • TOTALCONSUMPTION =

  • UNPLNDCONSUMPTION =

  • PLANNINGDATA =

  • PLANNINGDATAX =

storagelocationdata = t_storloc

  • STORAGELOCATIONDATAX =

  • STORAGELOCATIONEXT =

  • STORAGELOCATIONEXTX =

unitsofmeasure = t_uom

  • UNITSOFMEASUREX =

unitofmeasuretexts = t_uomtext

  • INTERNATIONALARTNOS =

  • VENDOREAN =

  • LAYOUTMODULEASSGMT =

  • LAYOUTMODULEASSGMTX =

  • TAXCLASSIFICATIONS =

  • VALUATIONDATA =

  • VALUATIONDATAX =

  • VALUATIONEXT =

  • VALUATIONEXTX =

  • WAREHOUSENUMBERDATA =

  • WAREHOUSENUMBERDATAX =

  • WAREHOUSENUMBEREXT =

  • WAREHOUSENUMBEREXTX =

  • STORAGETYPEDATA =

  • STORAGETYPEDATAX =

  • STORAGETYPEEXT =

  • STORAGETYPEEXTX =

  • SALESDATA =

  • SALESDATAX =

  • SALESEXT =

  • SALESEXTX =

  • POSDATA =

  • POSDATAX =

  • POSEXT =

  • POSEXTX =

  • MATERIALLONGTEXT =

  • PLANTKEYS =

  • STORAGELOCATIONKEYS =

  • DISTRCHAINKEYS =

  • WAREHOUSENOKEYS =

  • STORAGETYPEKEYS =

  • VALUATIONTYPEKEYS =

.

MOVE-CORRESPONDING s_bapiret to t_return.

append t_return.

ENDFORM. "process_record

1 ACCEPTED SOLUTION

Former Member
0 Kudos

Hi,

Here is the simple program

DATA: bapi_head LIKE bapie1mathead,

bapi_mbew1 LIKE bapie1mbewrt OCCURS 0 WITH HEADER LINE,

bapi_mbewx LIKE bapie1mbewrtx OCCURS 0 WITH HEADER LINE,

bapi_return LIKE bapireturn1 OCCURS 0 WITH HEADER LINE.

START-OF-SELECTION.

  • Header

bapi_head-material = '000000000000000001'.

bapi_head-logst_view = 'X'.

bapi_mbew1-material = '000000000000000001'.

bapi_mbew1-val_area = '1'.

bapi_mbew1-std_price = '123.45'.

APPEND bapi_mbew1.

bapi_mbewx-material = '000000000000000001'.

bapi_mbewX-val_area = '1'.

bapi_mbewx-val_area = '1'.

bapi_mbewx-std_price = 'X'.

APPEND bapi_mbewx.

CALL FUNCTION 'BAPI_MATERIAL_MAINTAINDATA_RT'

EXPORTING

headdata = bapi_head

IMPORTING

return = bapi_return

TABLES

valuationdata = bapi_mbew1

valuationdatax = bapi_mbewx.

Regards

Sudheer

3 REPLIES 3

Former Member
0 Kudos

Hi,

Here is the simple program

DATA: bapi_head LIKE bapie1mathead,

bapi_mbew1 LIKE bapie1mbewrt OCCURS 0 WITH HEADER LINE,

bapi_mbewx LIKE bapie1mbewrtx OCCURS 0 WITH HEADER LINE,

bapi_return LIKE bapireturn1 OCCURS 0 WITH HEADER LINE.

START-OF-SELECTION.

  • Header

bapi_head-material = '000000000000000001'.

bapi_head-logst_view = 'X'.

bapi_mbew1-material = '000000000000000001'.

bapi_mbew1-val_area = '1'.

bapi_mbew1-std_price = '123.45'.

APPEND bapi_mbew1.

bapi_mbewx-material = '000000000000000001'.

bapi_mbewX-val_area = '1'.

bapi_mbewx-val_area = '1'.

bapi_mbewx-std_price = 'X'.

APPEND bapi_mbewx.

CALL FUNCTION 'BAPI_MATERIAL_MAINTAINDATA_RT'

EXPORTING

headdata = bapi_head

IMPORTING

return = bapi_return

TABLES

valuationdata = bapi_mbew1

valuationdatax = bapi_mbewx.

Regards

Sudheer

0 Kudos

Thank you so much.

Thanks to your code I can now create a material when explicitly entering the material number. I was being silly, ignoring the change structures.

Actually, I also figured out the other problem. How to create a material without explicitly deciding it's material number. I found this function MATERIAL_NUMBER_GET_NEXT.

And that's it! Problem solved!

Thank you,

Nuno

0 Kudos

Hi FC,

How where you able to achieve this? I'm experiencing the same problem. I want to be able to generate an Article with an internally generated number to no avail. I'm leaving the MATERIAL field blank since logically, if I place a number in that field, the BAPI will interpret it as an externally assigned number creation.

How were you able to do create an internally generated article?

Thank you,

Aivanny