Skip to Content
0
Former Member
Sep 11, 2007 at 10:35 AM

Problem creating material with BAPI_MATERIAL_MAINTAINDATA_RT

1111 Views

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