Tuesday, February 2, 2010

Pricing Routines using VOFM transaction to change the Net Price in Billing to Basic Price

FORM FRM_KONDI_WERT_901.
*{ INSERT SMDK900281 1
**--- Routine for ZGPR
*---------------------------------------------------------------------*
* CONSTANTS DECLARATION
*---------------------------------------------------------------------*

CONSTANTS: C_ZGRP(4) VALUE 'ZGRP',
C_PR00(4) VALUE 'PR00',
C_JEXP(4) VALUE 'JEXP',
C_JEAP(4) VALUE 'JEAP',
C_JECE(4) VALUE 'JECE',
C_JESC(4) VALUE 'JESC',
C_ZS01(4) VALUE 'ZS01'.
*---------------------------------------------------------------------*
* DATA DECLARATION
*---------------------------------------------------------------------*
DATA: lv_ZGRP_KWERT like konv-kwert, "Condition Value of NET RATE
lv_JEXP_KWERT like konv-kwert, "Condition Value of A/R BED%
lv_JEAP_KWERT like konv-kwert, "Condition Value of A/R AED%
lv_JECE_KWERT like konv-kwert, "Condition Value of ECSS
lv_JESC_KWERT like konv-kwert, "Condition Value of SECSS
lv_PR00_KWERT like KONV-kwert, "Condition Value of Gross Price
lv_PR00_KBETR like komv-kbetr, "Amount for the condition PR00
lv_ZS01_KWERT like konv-kwert, "Condition Value of Cash Discount
LV_SUM_KWERT(16) type p decimals 2,
LV_XKWERT(16) TYPE P DECIMALS 2,
LV_RED_KWERT like konv-kwert,
LV_KPEIN(13) type C,
LV_CVAL_KWERT like komv-kwert,
lv_afd_KWERT like komv-kwert.

DATA: LTXKOMV LIKE XKOMV OCCURS 0 WITH HEADER LINE.

IF NOT XKOMV[] IS INITIAL.
LTXKOMV[] = XKOMV[].
clear : XKWERT , YKBETR, LV_CVAL_KWERT,lv_PR00_KBETR.
loop at ltxkomv.
CASE LTXKOMV-KSCHL.

WHEN C_ZGRP.
read table LTXKOMV with key kschl = C_ZGRP.
if sy-subrc = 0.
lv_ZGRP_KWERT = LTXKOMV-kwert.
endif.

WHEN C_ZS01.
read table LTXKOMV with key kschl = C_ZS01.
if sy-subrc = 0.
lv_ZS01_KWERT = LTXKOMV-kwert.
endif.

WHEN C_JEXP.
read table LTXKOMV with key kschl = C_JEXP.
if sy-subrc = 0.
lv_JEXP_KWERT = LTXKOMV-kwert.
endif.

WHEN C_JEAP.
read table LTXKOMV with key kschl = C_JEAP.
if sy-subrc = 0.
lv_JEAP_KWERT = LTXKOMV-kwert.
endif.

WHEN C_JECE.
read table LTXKOMV with key kschl = C_JECE.
if sy-subrc = 0.
lv_JECE_KWERT = LTXKOMV-kwert.
endif.

WHEN C_JESC.
read table LTXKOMV with key kschl = C_JESC.
if sy-subrc = 0.
lv_JESC_KWERT = LTXKOMV-kwert.
endif.

ENDCASE.

*--remove the discount amt from zgpr value
lv_afd_KWERT = lv_ZGRP_KWERT.
*--- Summ all the Excise Amounts
LV_SUM_KWERT = lv_JEXP_KWERT + lv_JEAP_KWERT + lv_JECE_KWERT + lv_JESC_KWERT.
*--- Subtract from the netamount without Discount
LV_RED_KWERT = lv_afd_KWERT - LV_SUM_KWERT.
LV_CVAL_KWERT = LV_RED_KWERT.

*--- For getting the Quantity
LV_KPEIN = xmenge.
*--- Call function Module to reamove the Decimal Zeros
CALL FUNCTION 'FTR_CORR_SWIFT_DELETE_ENDZERO'
CHANGING
C_VALUE = LV_KPEIN.
*--- Check for the availability of Quantity
if lv_kpein <> 0.
lv_PR00_KBETR = LV_CVAL_KWERT / LV_KPEIN.
endif.

endloop.
endif.

if not lv_SUM_KWERT is initial.

XKWERT = LV_CVAL_KWERT.

*---- Read table Conditions for the Condition Type Gross Price
read table ltxkomv with key kschl = C_PR00.
if sy-subrc = 0.
YKBETR = lv_PR00_KBETR.
ltxkomv-kbetr = YKBETR.
else.
YKBETR = lv_PR00_KBETR.
ltxkomv-kbetr = YKBETR.
endif.
*--- Populate the YKBETR value to get the Amount for the Condition PR00
xkomv-kbetr = YKBETR.
else.
XKWERT = LV_CVAL_KWERT.
endif.

*} INSERT
ENDFORM.

No comments:

Post a Comment