‎2007 Mar 19 2:12 PM
Hi,
Can anyone help me on an user exit for return orders pricing.i have to do the pricing based on some logic .but im unable to find the table in which material/customer exists (except KNMT table) such that i can find entry for shipment and go head and find the avg price.
can suggestion also is welcome
‎2007 Mar 21 5:50 PM
Hi,
following is the code that can be helpful.
use the following code in the MV45AFZZ include program and trigger the following code in a include program USEREXIT_PRICING_PREPARE_TKOMP.
hope it helps.
CHECK vbak-auart EQ 'ZRE'.
*CHECK vbak-vkorg EQ '1300'.
----
T Y P E D E C L A R A T I O N S *
----
TYPES : BEGIN OF ty_s_retorders,
kunag TYPE vbrk-kunag, " Customer Number
vbeln TYPE vbrp-vbeln, " Billing Doucuement
matnr TYPE vbrp-matnr, " Material Number
vgpos TYPE vbrp-vgpos, " Item Number
fkimg TYPE vbrp-fkimg, " Item Quantity
netwr TYPE vbrp-netwr, " Net price of the Item
erdat TYPE vbrk-erdat, " Date of cretaion of the record
value TYPE vbrp-netwr, " Net value of the Item
END OF ty_s_retorders,
ty_t_retorders TYPE STANDARD TABLE OF ty_s_retorders.
----
V A R I A B L E S *
----
DATA : lv_quant TYPE vbrp-fkimg, " Total quantity
lv_value TYPE vbrp-netwr, " Total value of the materials
lv_avgpr TYPE vbrp-netwr, " Averge Price of the material
lv_dat TYPE i, " variable to hold the year value
lv_date TYPE vbrk-erdat. " Creation date of the docuement
----
I N T E R N A L T A B L E S *
----
DATA : gt_retorders TYPE ty_t_retorders.
----
G L O B A L D A T A D E C L A R A T I O N S *
----
DATA : gs_output TYPE ty_s_retorders.
CONSTANTS : lc_zpr0(4) TYPE c VALUE 'ZPR0' .
Get date value which is 12 months ago.
lv_dat = sy-datum+0(4) - 1.
lv_date = sy-datum.
lv_date(4) = lv_dat.
Select data
SELECT vbrk~kunag " Customer Number
vbrp~vbeln " Billing Doucuement
vbrp~matnr " Material Number
vbrp~vgpos " Item Number
vbrp~fkimg " Item Quantity
vbrp~netwr " Net price of the Item
vbrk~erdat " Date of cretaion of the record
INTO TABLE gt_retorders
FROM vbrp JOIN vbrk
ON vbrkvbeln = vbrpvbeln
WHERE vbrk~erdat BETWEEN lv_date AND sy-datum
AND kunag EQ vbak-kunnr
AND matnr EQ vbap-matnr.
CLEAR: lv_quant,
lv_value.
loop the internal table and get the total of quantity and value
LOOP AT gt_retorders INTO gs_output.
gs_output-value = gs_output-fkimg * gs_output-netwr.
lv_quant = lv_quant + gs_output-fkimg.
lv_value = lv_value + gs_output-value.
ENDLOOP.
calculate the average pricing value
CLEAR lv_avgpr .
lv_avgpr = lv_value / lv_quant.
CLEAR xkomv.
READ TABLE xkomv INTO xkomv WITH KEY kposn = vbap-posnr
kschl = lc_zpr0 .
IF sy-subrc EQ 0.
xkomv-kbetr = lv_avgpr .
MODIFY TABLE xkomv[] FROM xkomv TRANSPORTING kbetr .
ENDIF.
‎2007 Mar 21 5:50 PM
Hi,
following is the code that can be helpful.
use the following code in the MV45AFZZ include program and trigger the following code in a include program USEREXIT_PRICING_PREPARE_TKOMP.
hope it helps.
CHECK vbak-auart EQ 'ZRE'.
*CHECK vbak-vkorg EQ '1300'.
----
T Y P E D E C L A R A T I O N S *
----
TYPES : BEGIN OF ty_s_retorders,
kunag TYPE vbrk-kunag, " Customer Number
vbeln TYPE vbrp-vbeln, " Billing Doucuement
matnr TYPE vbrp-matnr, " Material Number
vgpos TYPE vbrp-vgpos, " Item Number
fkimg TYPE vbrp-fkimg, " Item Quantity
netwr TYPE vbrp-netwr, " Net price of the Item
erdat TYPE vbrk-erdat, " Date of cretaion of the record
value TYPE vbrp-netwr, " Net value of the Item
END OF ty_s_retorders,
ty_t_retorders TYPE STANDARD TABLE OF ty_s_retorders.
----
V A R I A B L E S *
----
DATA : lv_quant TYPE vbrp-fkimg, " Total quantity
lv_value TYPE vbrp-netwr, " Total value of the materials
lv_avgpr TYPE vbrp-netwr, " Averge Price of the material
lv_dat TYPE i, " variable to hold the year value
lv_date TYPE vbrk-erdat. " Creation date of the docuement
----
I N T E R N A L T A B L E S *
----
DATA : gt_retorders TYPE ty_t_retorders.
----
G L O B A L D A T A D E C L A R A T I O N S *
----
DATA : gs_output TYPE ty_s_retorders.
CONSTANTS : lc_zpr0(4) TYPE c VALUE 'ZPR0' .
Get date value which is 12 months ago.
lv_dat = sy-datum+0(4) - 1.
lv_date = sy-datum.
lv_date(4) = lv_dat.
Select data
SELECT vbrk~kunag " Customer Number
vbrp~vbeln " Billing Doucuement
vbrp~matnr " Material Number
vbrp~vgpos " Item Number
vbrp~fkimg " Item Quantity
vbrp~netwr " Net price of the Item
vbrk~erdat " Date of cretaion of the record
INTO TABLE gt_retorders
FROM vbrp JOIN vbrk
ON vbrkvbeln = vbrpvbeln
WHERE vbrk~erdat BETWEEN lv_date AND sy-datum
AND kunag EQ vbak-kunnr
AND matnr EQ vbap-matnr.
CLEAR: lv_quant,
lv_value.
loop the internal table and get the total of quantity and value
LOOP AT gt_retorders INTO gs_output.
gs_output-value = gs_output-fkimg * gs_output-netwr.
lv_quant = lv_quant + gs_output-fkimg.
lv_value = lv_value + gs_output-value.
ENDLOOP.
calculate the average pricing value
CLEAR lv_avgpr .
lv_avgpr = lv_value / lv_quant.
CLEAR xkomv.
READ TABLE xkomv INTO xkomv WITH KEY kposn = vbap-posnr
kschl = lc_zpr0 .
IF sy-subrc EQ 0.
xkomv-kbetr = lv_avgpr .
MODIFY TABLE xkomv[] FROM xkomv TRANSPORTING kbetr .
ENDIF.