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: 

Error in BAPI

Former Member
0 Kudos

Hello ,

While using the BAPI 'BAPI_MATERIAL_SAVEDATA', to extend material from one plant to another my code is throwing an error 'Currency initial v,current amount 6,000.0000 in MOVING_PR was transferred without a currency'

Enter a material number'

I have incorporated mbew-peinh, even then its throwing the same error.

I snd copy of my code.

report zmm_r018 .

.

*& Prog to copy n create the existing material using bapi .

&----


*&

*&

&----


tables: t001l, "Storage Locations

mara, "General Material Data

makt, "Material Descriptions

mbew, "Material Valuation

marc, "Plant Data for Material

mltx. "Purchase Order Descriptions

**parameters : new_mat like mara-matnr,

    • desc like makt-maktx,

*data: ref_mat like mara-matnr.

*

*data: xmara type mara.

**data: wamatnr like mara-matnr.

data: potext type string."Purchase Order Desc

*

*

data : ihead_data type bapimathead,

iclient_data type bapi_mara, "Client Data

iclient_datax type bapi_marax,

  • imakt like bapi_makt, "Mat Description

iplant_data like bapi_marc, "Plant View

iplant_datax like bapi_marcx,

iltxt type table of bapi_mltx with header line, "Pur Order Text

istoragelocationdata type bapi_mard, "Storage Location

istoragelocationdatax type bapi_mardx,

iaccounting_data like bapi_mbew, "Accounting View

iaccounting_datax like bapi_mbewx,

bapiret like bapiret2,

returnm type table of bapi_matreturn2 with header line.

**Internal Table to hold the records in the text file

types:begin of it,

matnr(18), " Material number

mbrsh(1), " Industry sector

mtart(4), " Material type

werks(4), " Plant

lgort_d(4), "Storage Location

maktx(40), " Material description

meins(3), " Base unit of measure

matkl(9) , " Material group

bismt(18), " Old Material number

spart(2), " Division

gewei(3), " Weight Unit

text1(30), " Purchasr Order Text

text2(30),

text3(30),

text4(30),

text5(30),

text6(30),

dzeinr(22), " Document

ekgrp(3), " Purchasing group

ekwsl(4), " Purchase Value Key

webaz(3), " Goods receipt processing time in days

dismm(2), " MRP Type

minbe(13), "Reorder point

dispo(3), " MRP Controller

disls(2), "Lot size (materials planning)

mabst(13), "Maximum stock level

plifz(3), " Planned delivery time in days

webaz1(3), " Goods receipt processing time in days

fhori(3), "Scheduling Margin Key for Floats

eisbe(13), "Safety stock

mtvfp(2), "Checking Group for Availability Check

lgpbe(10), "Storage Bin

qmatauth(6),"Material Authorization Group for Activities in QM

qmpur(1), " QM in Procurement is Active

qsspur(8), "Control Key for Quality Management in Procurement

bklas(4), " Valuation Class

bwtty_d(1), "Valuation Category

vprsv(1), " Price control indicator

verpr_bapi(23), "Moving average price/periodic unit price

peinh(5), "Price Unit

end of it.

data: it_data type table of it,

wa_data like line of it_data.

*Decalraing flag

data: v_flag value ''.

*DECLARING WORK AREAs TO BE PASSED TO THE FUNCTION MODULE.

data: bapi_head like bapimathead,

bapi_clientdata like bapi_mara,

bapi_clientdatax like bapi_marax,

bapi_plantdata like bapi_marc,

bapi_plantdatax like bapi_marcx,

bapi_storagelocationdata like bapi_mard,

bapi_storagelocationdatax like bapi_mardx,

bapi_salesdata like bapi_mvke,

bapi_salesdatax like bapi_mvkex,

bapi_makt like bapi_makt,

bapi_return like bapiret2.

*INTERNAL TABLE TO HOLD THE MATERIAL DESCRIPTION

data: begin of it_makt occurs 0.

include structure bapi_makt.

data end of it_makt.

data:begin of it_ret occurs 0.

include structure bapiret2.

data end of it_ret.

*INTERNAL TABLE TO HOLD HEADER DATA

data: it_excel type alsmex_tabline occurs 0 with header line.

*SELECTION-SCREEN ELEMENTS

selection-screen begin of block b1 with frame title text-001.

parameter: fname type rlgrap-filename default 'c:\supplies.xls'.

parameters: p_begcol type i default '1' no-display,

p_begrow type i default '2' no-display,

p_endcol type i default '200' no-display,

p_endrow type i default '2500' no-display.

*perform f_get_data.

selection-screen end of block b1.

*DECLARATION OF EXCELAL TABLE

at selection-screen on value-request for fname.

perform f_get_file using fname.

start-of-selection.

perform f_xls_itab using fname

changing it_excel.

perform f_move_data.

perform f_get_data.

perform f_call_bapi.

&----


*& Form F_GET_FILE

&----


  • text

----


  • -->P_FNAME text

  • <--P_SY_SUBRC text

----


form f_get_file using p_fname like fname.

call function 'KD_GET_FILENAME_ON_F4'

exporting

program_name = syst-repid

dynpro_number = syst-dynnr

  • FIELD_NAME = ' '

  • STATIC = ' '

  • MASK = ' '

changing

file_name = p_fname

  • EXCEPTIONS

  • MASK_TOO_LONG = 1

  • OTHERS = 2

.

if sy-subrc <> 0.

message e006(zhnc).

endif.

endform. " F_GET_FILE

&----


*& Form F_XLS_ITAB

&----


  • text

----


  • -->P_FNAME text

  • <--P_IT_EXCEL text

----


form f_xls_itab using p_fname

changing p_it_excel.

call function 'ALSM_EXCEL_TO_INTERNAL_TABLE'

exporting

filename = 'c:\supplies.xls'

i_begin_col = p_begcol

i_begin_row = p_begrow

i_end_col = p_endcol

i_end_row = p_endrow

tables

intern = it_excel

exceptions

inconsistent_parameters = 1

upload_ole = 2

others = 3.

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

&----


*& Form F_MOVE_DATA

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


form f_move_data .

data : lv_index type i.

field-symbols <fs>.

*--- Sorting the internal table

sort it_excel by row col.

clear it_excel.

loop at it_excel.

move it_excel-col to lv_index.

*--- Assigning the each record to an internal table row

assign component lv_index of structure wa_data to <fs>.

*--- Asigning the field value to a field symbol

move it_excel-value to <fs>.

at end of row.

append wa_data to it_data.

clear wa_data.

endat.

endloop.

*

endform. " F_MOVE_DATA

form f_get_data .

loop at it_data into wa_data.

move-corresponding wa_data to ihead_data.

*

  • Header

ihead_data-material = wa_data-matnr.

ihead_data-ind_sector = wa_data-mbrsh.

ihead_data-matl_type = wa_data-mtart.

ihead_data-basic_view = 'X'.

ihead_data-purchase_view = 'X'.

ihead_data-mrp_view = 'X'.

ihead_data-storage_view = 'X'.

ihead_data-quality_view = 'X'.

ihead_data-account_view = 'X'.

move-corresponding wa_data to iclient_data.

  • Material Description

refresh it_makt.

it_makt-langu = 'EN'.

it_makt-matl_desc = wa_data-maktx.

append it_makt.

  • Purchase Order Description

clear:iltxt,iltxt[].

concatenate wa_data-text1 wa_data-text2 wa_data-text3 wa_data-text4

wa_data-text5 wa_data-text6 into potext

separated by space.

iltxt-applobject = 'MATERIAL'.

iltxt-text_name = wa_data-matnr.

iltxt-text_id = 'BEST'.

iltxt-langu = sy-langu.

iltxt-langu_iso = 'EN'.

iltxt-format_col = space.

iltxt-text_line = potext.

append iltxt.

  • Client Data - Basic

iclient_data-matl_group = wa_data-matkl.

iclient_data-old_mat_no = wa_data-bismt.

iclient_data-base_uom = wa_data-meins.

iclient_data-document = wa_data-dzeinr.

iclient_data-unit_of_wt = wa_data-gewei.

iclient_data-division = wa_data-spart.

iclient_data-qm_procmnt = wa_data-qmpur.

iclient_data-pur_valkey = wa_data-ekwsl.

iclient_datax-matl_group = 'X'.

iclient_datax-old_mat_no = 'X'.

iclient_datax-base_uom = 'X'.

iclient_datax-po_unit = 'X'.

iclient_datax-document = 'X'.

iclient_datax-unit_of_wt = 'X'.

iclient_datax-division = 'X'.

iclient_datax-var_ord_un = 'X'.

iclient_data-pur_valkey = 'X'.

move-corresponding wa_data to iplant_data.

  • Plant - Purchasing

iplant_data-plant = wa_data-werks.

iplant_data-pur_group = wa_data-ekgrp.

iplant_data-gr_pr_time = wa_data-webaz.

iplant_datax-plant = wa_data-werks.

iplant_data-pur_group = 'X'.

iplant_datax-gr_pr_time = 'X'.

*MRP1 View

iplant_data-mrp_type = wa_data-dismm.

iplant_data-reorder_pt = wa_data-minbe.

iplant_data-mrp_ctrler = wa_data-dispo.

iplant_data-lotsizekey = wa_data-disls.

iplant_data-max_stock = wa_data-mabst .

iplant_datax-mrp_type = 'X'.

iplant_datax-reorder_pt = 'X'.

iplant_datax-mrp_ctrler = 'X'.

iplant_datax-lotsizekey = 'X'.

iplant_datax-max_stock = 'X'.

*MRP2 View

iplant_data-plnd_delry = wa_data-plifz.

iplant_data-sm_key = wa_data-fhori.

iplant_data-ctrl_key = wa_data-qsspur.

iplant_data-availcheck = wa_data-mtvfp.

iplant_datax-plnd_delry = 'X'.

iplant_datax-sm_key = 'X'.

iplant_data-ctrl_key = 'X'.

iplant_datax-availcheck = 'X'.

*MRP3 View

iplant_data-safety_stk = wa_data-eisbe.

iplant_data-qm_authgrp = wa_data-qmatauth.

iplant_datax-safety_stk = 'X'.

iplant_data-qm_authgrp = 'X'.

move-corresponding wa_data to istoragelocationdata.

  • Storage View

istoragelocationdata-plant = wa_data-werks.

istoragelocationdata-stge_loc = wa_data-lgort_d.

istoragelocationdata-stge_bin = wa_data-lgpbe.

istoragelocationdatax-plant = wa_data-werks.

istoragelocationdatax-stge_loc = wa_data-lgort_d.

istoragelocationdatax-stge_bin = 'X'.

  • Accounting

iaccounting_data-val_area = wa_data-werks.

iaccounting_data-price_ctrl = wa_data-vprsv.

iaccounting_data-moving_pr = wa_data-verpr_bapi.

iaccounting_data-price_unit = wa_data-peinh.

iaccounting_data-val_class = wa_data-bklas.

iaccounting_data-val_cat = wa_data-bwtty_d.

iaccounting_datax-val_area = wa_data-werks.

iaccounting_datax-price_ctrl = 'X'.

iaccounting_datax-moving_pr = 'X'.

iaccounting_datax-price_unit = 'X'.

iaccounting_datax-val_class = 'X'.

iaccounting_datax-val_cat = 'X'.

clear it_ret.

refresh it_ret.

perform f_call_bapi.

read table it_ret with key type = 'S'.

if sy-subrc eq 0.

perform f_bapi_commit.

write:/ 'MATERIAL CREATED OR UPDATED SUCESSFULLY WITH MATERIAL NO',

wa_data-matnr.

else.

*message e000(zhnc) with 'ERROR IN CREATING THE MATERIAL'.

*

*WRITE: / 'ERROR IN CREATIN MATERIAL',IT_RET-MESSAGE.

*PERFORM F_DOWNLOAD.

endif.

*ENDIF.

endloop.

endform. " F_GET_DATA

&----


*& Form F_CALL_BAPI

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


form f_call_bapi .

call function 'BAPI_MATERIAL_SAVEDATA'

exporting

headdata = ihead_data

clientdata = iclient_data

clientdatax = iclient_datax

plantdata = iplant_data

plantdatax = iplant_datax

  • FORECASTPARAMETERS =

  • FORECASTPARAMETERSX =

  • PLANNINGDATA =

  • PLANNINGDATAX =

storagelocationdata = istoragelocationdata

storagelocationdatax = istoragelocationdatax

valuationdata = iaccounting_data

valuationdatax = iaccounting_datax

  • WAREHOUSENUMBERDATA =

  • WAREHOUSENUMBERDATAX =

  • SALESDATA =

  • SALESDATAX =

  • STORAGETYPEDATA = istoragelocationdata

  • STORAGETYPEDATAX = istoragelocationdatax

  • FLAG_ONLINE = ' '

  • FLAG_CAD_CALL = ' '

  • NO_DEQUEUE = ' '

  • NO_ROLLBACK_WORK = ' '

importing

return = it_ret

tables

materialdescription = it_makt

  • UNITSOFMEASURE = it_uom

  • UNITSOFMEASUREX = it_uomx

  • INTERNATIONALARTNOS =

materiallongtext = iltxt

  • TAXCLASSIFICATIONS =

returnmessages = returnm.

  • PRTDATA =

  • PRTDATAX =

  • EXTENSIONIN =

  • EXTENSIONINX =

append it_ret.

write: it_ret-message .

endform. " F_CALL_BAPI

&----


*& Form F_BAPI_COMMIT

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


form f_bapi_commit .

call function 'BAPI_TRANSACTION_COMMIT'

  • EXPORTING

  • WAIT =

  • IMPORTING

  • RETURN =

.

endform. " F_BAPI_COMMIT

Plz suggest some solution.

Best Regards,

Ravi

1 ACCEPTED SOLUTION

Former Member
0 Kudos

Hi,

Insert Material number in the MAKT(Material Description table).

Also, check if the material number is missing somewhere else...

Regards,

Kunjal

2 REPLIES 2

Former Member
0 Kudos

Hi,

Insert Material number in the MAKT(Material Description table).

Also, check if the material number is missing somewhere else...

Regards,

Kunjal

0 Kudos

Hello all,

Plz help.

Ravi