‎2010 Oct 05 9:12 AM
hi,
i have a proble with Purchase Order for price in the WAERS 'JPY'..
amounts that values in the BAPI in output are multiplied for 100.
Es
LOOP AT lt_itemservdet INTO lw_itemservdet.
lw_poservices-pckg_no = lw_itemservdet-pckg_no.
lw_poservices-line_no = lw_itemservdet-line_no.
lw_poservices-outl_ind = lw_itemservdet-outl_ind.
lw_poservices-subpckg_no = lw_itemservdet-subpckg_no.
lw_poservices-service = lw_itemservdet-service.
IF lw_itemservdet-quantity IS INITIAL.
ADD 1 TO lw_itemservdet-quantity.
ENDIF.
lw_poservices-quantity = lw_itemservdet-quantity.
lw_poservices-price_unit = lw_itemservdet-price_unit.
lw_poservices-gr_price = lw_itemservdet-gr_price. " 30,0000
lw_poservices-short_text = lw_itemservdet-short_text.
lw_poservices-matl_group = lw_itemservdet-matl_group.
lw_poservices-ovf_unlim = c_flag.
APPEND lw_poservices TO lt_poservices.
CLEAR:lw_itemservdet,lw_poservices.
ENDLOOP.
In outpu in the transaction me23n the price is 3000
‎2010 Oct 05 12:09 PM
for this
you have to add such a code to
PERFORM assign_price USING waers
CHANGING i_new_itms-netpr
i_services-gr_price.
FORM assign_price USING p_waers
CHANGING p_netpr
p_price.
DATA: l_curr(16) TYPE c,
l_decimals TYPE i.
SELECT SINGLE currdec
FROM tcurx
INTO l_decimals
WHERE currkey = p_waers.
IF sy-subrc EQ 0.
l_decimals = l_decimals - 2.
p_price = p_netpr / ( 10 ** l_decimals ).
ELSE.
p_price = p_netpr.
ENDIF.
ENDFORM.
We have solved the issue by adding such a code
‎2010 Oct 05 9:16 AM
‎2010 Oct 05 12:09 PM
for this
you have to add such a code to
PERFORM assign_price USING waers
CHANGING i_new_itms-netpr
i_services-gr_price.
FORM assign_price USING p_waers
CHANGING p_netpr
p_price.
DATA: l_curr(16) TYPE c,
l_decimals TYPE i.
SELECT SINGLE currdec
FROM tcurx
INTO l_decimals
WHERE currkey = p_waers.
IF sy-subrc EQ 0.
l_decimals = l_decimals - 2.
p_price = p_netpr / ( 10 ** l_decimals ).
ELSE.
p_price = p_netpr.
ENDIF.
ENDFORM.
We have solved the issue by adding such a code
‎2010 Oct 05 12:32 PM
‎2010 Oct 05 12:50 PM
question not clear....basically you have to add the coding for conversion,
then pass this value to the bapi like this
i_services-base_uom = i_new_itms-meins.
PERFORM assign_price USING waers
CHANGING i_new_itms-netpr
i_services-gr_price.
i_srvacvals-percentage = 100.
i_srvacvals-serial_no = v_srl_no.
APPEND i_services.
APPEND i_srvacvals.
i_services-pckg_no = i_srvacvals-pckg_no = i_services-subpckg_no.
i_services-line_no = i_srvacvals-line_no =
v_line_no = v_line_no + 1.
i_services-subpckg_no = space.
i_services-short_text = i_new_itms-svc_text.
i_services-quantity = i_new_itms-menge.
i_services-base_uom = i_new_itms-meins.
PERFORM assign_price USING waers
CHANGING i_new_itms-netpr
i_services-gr_price.
i_srvacvals-percentage = 100.
i_srvacvals-serial_no = v_srl_no.
APPEND i_services.
APPEND i_srvacvals.
CLEAR: i_item,i_itemx,
i_schedule,i_schedulx,
i_account,i_accountx,
i_services,i_srvacvals.
ENDLOOP.
v_testrun = chk_only.
EXPORT ztcode TO MEMORY ID ztcode.
CALL FUNCTION 'BAPI_PO_CREATE1'
EXPORTING
poheader = i_header
poheaderx = i_headerx
testrun = v_testrun
IMPORTING
exppurchaseorder = i_header-po_number
expheader = i_header
TABLES
return = i_return
poitem = i_item
poitemx = i_itemx
poschedule = i_schedule
poschedulex = i_schedulx
poaccount = i_account
poaccountx = i_accountx
poservices = i_services
posrvaccessvalues = i_srvacvals.
‎2010 Oct 05 1:37 PM
Your solution is clear, thanks. Only to understand.... it is a bug of bapi?
Thanks