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