Application Development and Automation 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: 
Read only

Pricing for return orders

Former Member
0 Likes
388

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

1 ACCEPTED SOLUTION
Read only

Former Member
0 Likes
352

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.

1 REPLY 1
Read only

Former Member
0 Likes
353

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.