Sunteți pe pagina 1din 15

Include

MV45AIZZ

***INCLUDE MV45AIZZ .
************************************************************************
*
*
* This include is reserved for user modifications
*
*
*
* PAI Modules for sales document processing
*
*
*
* The name of modification modules should begin with 'ZZ'.
*
*
*
************************************************************************
*---------------------------------------------------------------------*
*
MODULE ZZEXAMPLE_CHECK
*
*---------------------------------------------------------------------*
*
text......................................
*
*---------------------------------------------------------------------*
*MODULE ZZEXAMPLE_CHECK.
*

...

*ENDMODULE.
*{
INSERT
EMDK902370
1
*&---------------------------------------------------------------------*
*&
Module ZZMODIFY_TABCON1 INPUT
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
module ZZMODIFY_TABCON1 input.
CLEAR : GS_AMC_VARI-VBELN,
GS_AMC_VARI-POSNR,
GS_AMC_VARI2.
GS_AMC_VARI-VBELN = VBAP-VBELN.
GS_AMC_VARI-POSNR = VBAP-POSNR.
**
*

READ TABLE GT_AMC_VARI INTO GS_AMC_VARI2 INDEX TABCON1-CURRENT_LINE.

READ TABLE GT_AMC_VARI INTO GS_AMC_VARI2 WITH KEY VARI_S = GS_AMC_VARIVARI_S.


IF sy-subrc = 0.
**
MODIFY GT_AMC_VARI FROM GS_AMC_VARI INDEX TABCON1CURRENT_LINE. "( if line items add)
MODIFY
GT_AMC_VARI FROM GS_AMC_VARI
TRANSPORTING VARI_P

WHERE
AND
AND

VARI_S = GS_AMC_VARI-VARI_S
VBELN = GS_AMC_VARI-VBELN
POSNR = GS_AMC_VARI-POSNR.

ELSE.
APPEND GS_AMC_VARI TO GT_AMC_VARI.
ENDIF.
endmodule.
*}

" ZZMODIFY_TABCON1

INPUT

INSERT

*{
INSERT
EMDK902370
2
*&---------------------------------------------------------------------*
*&
Module ZZMOD_DISPLAYFIELDS INPUT
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
module ZZMOD_DISPLAYFIELDS input.
DATA : LV_MATKL2

TYPE

MARA-MATKL.

SELECT SINGLE MATKL


FROM MARA
INTO LV_MATKL2
WHERE MATNR EQ VBAP-MATNR.
CASE LV_MATKL2.
WHEN 'M01'.
PERFORM mod_m01_input.
WHEN 'M02'.
PERFORM mod_m02_input.
WHEN 'M03'.
PERFORM mod_m03_input.
WHEN 'M04'.
PERFORM mod_m04_input.
WHEN 'M05'.
PERFORM mod_m05_input.
WHEN OTHERS.
ENDCASE.
endmodule.
*}

INSERT

*{

INSERT

" ZZMOD_DISPLAYFIELDS

EMDK902370

INPUT

*&---------------------------------------------------------------------*
*&
Module ZZMOD_GRANDTOT INPUT
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
*module ZZMOD_GRANDTOT input.
*
* CLEAR : GV_TOTSPEC,
*
GV_GRANDTOT.
** LOOP AT GT_AMC_VARI INTO GS_AMC_VARI.
**
GV_TOTSPEC = GV_TOTSPEC + GS_AMC_VARI-VARI_P.
** ENDLOOP.
**
* GV_GRANDTOT = GV_TOTSPEC + VBAP-ZZNSTP_P.
*
* VBAP-ZZTOTAL
= GV_TOTSPEC.
* VBAP-ZZGRANDTOT = GV_GRANDTOT.
*
*endmodule.
" ZZMOD_GRANDTOT INPUT
*}
INSERT
*{
INSERT
EMDK902370
5
*&---------------------------------------------------------------------*
*&
Form MOD_M01_INPUT
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
* --> p1
text
* <-- p2
text
*----------------------------------------------------------------------*
form MOD_M01_INPUT.
*
**
-- >> Display 'Fixed Cost' based on stops and
**
non stops value in screen
**
& based on price as on date.
*
*
DATA : LV_NONSTPCOST TYPE ZAMC_BASECOST,
*
LV_STPCOST
TYPE ZAMC_PRICE,
*
LV_FIXDCOST
TYPE ZAMC_PRICE,
*
LV_AMCCOST
TYPE ZAMC_PRICE,
*
LV_STOPS
TYPE ZAMC_STOPS,
*
LV_NONSTPS
TYPE ZAMC_NSTOPS,
*
L_SFACTOR
TYPE ZCET_AMC_SPEED-SFACTOR,
*
L_CFACTOR
TYPE ZCET_AMC_CPTY-CFACTOR.
*
*
DATA : LV_BEGDA
TYPE SY-DATUM.
*
*
CLEAR : LV_SEGMENT, LV_FACTOR, LV_NONSTPCOST,
*
LV_STPCOST,LV_FIXDCOST, LV_STOPS,

*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
**
*
*
*
*
*
*
*
*
*
**
.
*
*

LV_NONSTPS,LV_BEGDA,
L_SFACTOR,L_CFACTOR.
SELECT MAX( BEGDA )
INTO (LV_BEGDA)
FROM
ZCET_AMC_PRI
WHERE EQUI_STOPS = VBAP-ZZEQUI_STOPS
AND
BEGDA
<= VBAP-ZZAMC_DAT
AND
MATNR
EQ VBAP-MATNR.
LV_STOPS

= VBAP-ZZEQUI_STOPS.

IF LV_STOPS IS NOT INITIAL.


SELECT SINGLE
PRICE
FROM ZCET_AMC_PRI
INTO LV_STPCOST
WHERE EQUI_STOPS EQ
AND
BEGDA
EQ
AND
MATNR
EQ
ENDIF.

" For stops costs


LV_STOPS
LV_BEGDA
VBAP-MATNR.

LV_NONSTPS = VBAP-ZZSTOPS.
IF LV_NONSTPS IS NOT INITIAL.
SELECT SINGLE
PRICE
FROM
ZCET_AMC_NSTP "For non stop costs
INTO
LV_NONSTPCOST
WHERE STOPS
EQ LV_NONSTPS
AND
BEGDA
EQ LV_BEGDA
AND
MATNR
EQ VBAP-MATNR.
ENDIF.
IF VBAP-ZZSFACTOR IS INITIAL.
L_SFACTOR = 1.
L_SFACTOR = L_SFACTOR * 100.
IF sy-ucomm = 'SICH'.
MESSAGE 'Speed Factor is empty for respective speed' TYPE 'I'.
ENDIF.
ELSE.
L_SFACTOR = VBAP-ZZSFACTOR.
ENDIF.
IF VBAP-ZZCFACTOR IS INITIAL.
L_CFACTOR = 1.
L_CFACTOR = L_CFACTOR * 100.
IF sy-ucomm = 'SICH'.
MESSAGE 'Capacity Factor is empty for respective capacity' TYPE 'I'
ENDIF.
ELSE.

*
L_CFACTOR = VBAP-ZZCFACTOR.
*
ENDIF.
*
*
LV_FIXDCOST
= ( LV_STPCOST + LV_NONSTPCOST ) * VBAPZZSGMT_F * L_SFACTOR * L_CFACTOR. "VBKD-KDGRP.
*
*
LV_AMCCOST
= LV_STPCOST + LV_NONSTPCOST.
*
*
LV_FIXDCOST = ( LV_FIXDCOST / 1000000 ).
*
*
VBAP-ZZNSTP_P = LV_AMCCOST. " LV_FIXDCOST.
*
*
VBAP-ZZGRANDTOT = LV_FIXDCOST.
endform.

" MOD_M01_INPUT

*}
INSERT
*{
INSERT
EMDK902370
6
*&---------------------------------------------------------------------*
*&
Form MOD_M02_INPUT
*&---------------------------------------------------------------------*
*----------------------------------------------------------------------*
form MOD_M02_INPUT.
*
*DATA : LV_RISECOST
TYPE ZAMC_ES_PRI-PRICE,
*
LV_SOURFACT
TYPE ZAMC_ES_SOURCE-FACTOR,
*
LV_TYPEFACT
TYPE ZAMC_ES_TYPE-FACTOR,
*
LV_ENVIFACT
TYPE ZAMC_ES_ENVI-FACTOR,
*
LV_ESRISE
TYPE ZAMC_ES_PRI-EQUI_STOPS,
*
LV_ESCCOST
TYPE ZAMC_ES_PRI-PRICE.
*
*DATA : LV_ESBEGDA
TYPE SY-DATUM.
*
*CLEAR :LV_RISECOST,LV_SOURFACT,LV_TYPEFACT,
*
LV_ESRISE,LV_ENVIFACT, LV_ESBEGDA.
*
***** Escalator Rise Price from ZAMC_ES_PRI **********
*
SELECT MAX( BEGDA )
*
INTO (LV_ESBEGDA)
*
FROM ZAMC_ES_PRI
*
WHERE BEGDA
<= VBAP-ZZAMC_DAT
*
AND
MATNR
= VBAP-MATNR.
*
*
SELECT MAX( EQUI_STOPS )
*
INTO (LV_ESRISE)
*
FROM ZAMC_ES_PRI
*
WHERE EQUI_STOPS <= VBAP-ZZES_RAISE
*
AND
BEGDA
= LV_ESBEGDA
*
AND
MATNR
= VBAP-MATNR.

*
*
IF LV_ESRISE IS NOT INITIAL.
*
SELECT SINGLE PRICE
*
FROM
ZAMC_ES_PRI
*
INTO
LV_RISECOST
*
WHERE EQUI_STOPS = LV_ESRISE
*
AND
BEGDA
= LV_ESBEGDA
*
AND
MATNR
= VBAP-MATNR.
*
*
VBAP-ZZES_RISE_CUR = LV_RISECOST.
*
ENDIF.
*
*CLEAR : LV_ESBEGDA.
*
*
SELECT MAX( BEGDA )
*
INTO (LV_ESBEGDA)
*
FROM ZAMC_ES_SOURCE
*
WHERE EQUI_SOURCE
= VBAP-ZZES_SOURCE
*
AND
BEGDA
<= VBAP-ZZAMC_DAT
*
AND
MATNR
= VBAP-MATNR.
*
*
IF VBAP-ZZES_SOURCE IS NOT INITIAL.
*
SELECT SINGLE FACTOR
*
FROM ZAMC_ES_SOURCE
*
INTO LV_SOURFACT
*
WHERE EQUI_SOURCE = VBAP-ZZES_SOURCE
*
AND
BEGDA
= LV_ESBEGDA
*
AND
MATNR
= VBAP-MATNR.
*
*
VBAP-ZZES_SOUR_FAC
= LV_SOURFACT.
*
ENDIF.
*
*CLEAR : LV_ESBEGDA.
*
*
SELECT MAX( BEGDA )
*
INTO (LV_ESBEGDA)
*
FROM ZAMC_ES_TYPE
*
WHERE EQUI_TYPE
= VBAP-ZZES_TYPE
*
AND
BEGDA
<= VBAP-ZZAMC_DAT
*
AND
MATNR
= VBAP-MATNR.
*
*
IF VBAP-ZZES_TYPE IS NOT INITIAL.
*
SELECT SINGLE FACTOR
*
FROM
ZAMC_ES_TYPE
*
INTO
LV_TYPEFACT
*
WHERE EQUI_TYPE
= VBAP-ZZES_TYPE
*
AND
BEGDA
= LV_ESBEGDA
*
AND
MATNR
= VBAP-MATNR.
*

*
VBAP-ZZES_TYPE_FAC
= LV_TYPEFACT.
*
ENDIF.
*
*CLEAR : LV_ESBEGDA.
*
*
SELECT MAX( BEGDA )
*
INTO (LV_ESBEGDA)
*
FROM ZAMC_ES_ENVI
*
WHERE ENVIRONMENT
= VBAP-ZZES_EQUICODE
*
AND
BEGDA
<= VBAP-ZZAMC_DAT
*
AND
MATNR
= VBAP-MATNR.
*
*
IF VBAP-ZZES_EQUICODE IS NOT INITIAL.
*
SELECT SINGLE FACTOR
*
FROM
ZAMC_ES_ENVI
*
INTO
LV_ENVIFACT
*
WHERE ENVIRONMENT = VBAP-ZZES_EQUICODE
*
AND
BEGDA
<= VBAP-ZZAMC_DAT
*
AND
MATNR
= VBAP-MATNR.
*
*
VBAP-ZZES_ENVI_FAC
= LV_ENVIFACT.
*
ENDIF.
*
***** Calculate Total Cost of Escalator Based on rise *****
*
*
LV_ESCCOST = VBAP-ZZES_RISE_CUR * VBAP-ZZES_SOUR_FAC * VBAPZZES_TYPE_FAC * VBAP-ZZES_ENVI_FAC.
*
*
VBAP-ZZES_COST = ( LV_ESCCOST / 100000000 ).
endform.

" MOD_M02_INPUT

*}
INSERT
*{
INSERT
EMDK902370
7
*&---------------------------------------------------------------------*
*&
Form MOD_M03_INPUT
*&---------------------------------------------------------------------*
*----------------------------------------------------------------------*
form MOD_M03_INPUT.
endform.

" MOD_M03_INPUT

*}
INSERT
*{
INSERT
EMDK902370
8
*&---------------------------------------------------------------------*
*&
Form MOD_M04_INPUT
*&---------------------------------------------------------------------*
*----------------------------------------------------------------------*
form MOD_M04_INPUT.

endform.

" MOD_M04_INPUT

*}
INSERT
*{
INSERT
EMDK902370
9
*&---------------------------------------------------------------------*
*&
Form MOD_M05_INPUT
*&---------------------------------------------------------------------*
*----------------------------------------------------------------------*
form MOD_M05_INPUT. " Home Elevator
**
-- >> Display 'Fixed Cost' based on stops and
**
non stops value in screen
**
& based on price as on date.
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
**

DATA : LV_HE_STPCOST
LV_HE_FIXDCOST
LV_HE_AMCCOST
LV_HE_STOPS
L_HE_CFACTOR

TYPE
TYPE
TYPE
TYPE
TYPE

ZAMC_PRICE,
ZAMC_PRICE,
ZAMC_PRICE,
ZAMC_STOPS,
ZCET_AMC_CPTY-CFACTOR.

DATA : LV_HE_BEGDA

TYPE

SY-DATUM.

CLEAR : LV_HE_STPCOST,LV_HE_FIXDCOST, LV_HE_STOPS,


LV_HE_BEGDA,L_HE_CFACTOR.

SELECT MAX( BEGDA )


INTO (LV_HE_BEGDA)
FROM
ZAMC_HE_PRI
WHERE EQUI_STOPS = VBAP-ZZEQUI_STOPS
AND
BEGDA
<= VBAP-ZZAMC_DAT
AND
MATNR
EQ VBAP-MATNR.
LV_HE_STOPS
IF

= VBAP-ZZEQUI_STOPS.

LV_HE_STOPS
SELECT SINGLE

IS NOT
PRICE
FROM
INTO
WHERE
AND
AND

INITIAL.
ZAMC_HE_PRI " For stops costs
LV_HE_STPCOST
EQUI_STOPS EQ LV_HE_STOPS
BEGDA
EQ LV_HE_BEGDA
MATNR
EQ VBAP-MATNR.

ENDIF.
IF VBAP-ZZCFACTOR IS INITIAL.
L_HE_CFACTOR = 1.
L_HE_CFACTOR = L_HE_CFACTOR * 100.
IF sy-ucomm = 'SICH'.
MESSAGE 'Capacity Factor is empty for respective capacity' TYPE

'I'.
*
*
*
*
*
*
*
*
*

ENDIF.
ELSE.
L_HE_CFACTOR = VBAP-ZZCFACTOR.
ENDIF.
LV_HE_FIXDCOST = ( L_HE_CFACTOR * LV_HE_STPCOST ).
VBAP-ZZNSTP_P
= LV_HE_STPCOST.
VBAP-ZZGRANDTOT = LV_HE_FIXDCOST.

endform.
*}

" MOD_M05_INPUT

INSERT

*{
INSERT
EMDK902370
10
*&---------------------------------------------------------------------*
*&
Module ZZMOD_DISCOUNT_CHK INPUT
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
module ZZMOD_DISCOUNT_CHK input.
***
*** DATA: L_FCODE
TYPE SY-UCOMM,
***
LV_PERCENT TYPE ZPERCENT.
* L_FCODE = FCODE.
* CASE L_FCODE.
*
WHEN 'APR1'.
*
AUTHORITY-CHECK OBJECT 'ZAPPR1'
*
ID 'ZZAPPRO1'
*
FIELD VBAP-ZZAPPRO1.
*
IF sy-subrc = 0.
*
*
ELSE.
*
CLEAR VBAP-ZZAPPRO1.
*
MESSAGE 'You Are Not Authorised' TYPE 'W'.
*
ENDIF.
*
*
WHEN 'APR2'.
*
*
AUTHORITY-CHECK OBJECT 'ZAPPR2'
*
ID 'ZZAPPRO2'
*
FIELD VBAP-ZZAPPRO2.
*
IF sy-subrc = 0.
*
ELSE.
*
CLEAR VBAP-ZZAPPRO2.
*
MESSAGE 'You Are Not Authorised' TYPE 'W'.
*
ENDIF.
*

*
*
*
*
*
*
*
*
*
*
*
*
*

WHEN 'APR3'.
AUTHORITY-CHECK OBJECT 'ZAPPR3'
ID 'ZZAPPRO3'
FIELD VBAP-ZZAPPRO3.
IF sy-subrc = 0.
ELSE.
CLEAR VBAP-ZZAPPRO3.
MESSAGE 'You Are Not Authorised' TYPE 'W'.
ENDIF.
WHEN OTHERS.
ENDCASE.

* IF VBAP-ZZDIS_LUMPSUM IS NOT INITIAL.


*
IF VBAP-ZZDIS_PERCENT IS NOT INITIAL.
*
IF VBAP-ZZAPPRO1 = 'X'.
*
SELECT SINGLE ZPERCENT
*
INTO LV_PERCENT
*
FROM ZAMC_APPROVE
*
WHERE ZAPPROVER EQ '1'.
*
*
IF VBAP-ZZDIS_PERCENT LE LV_PERCENT.
*
VBAP-ZZDIS_LUMPSUM = ( VBAP-ZZGRANDTOT * VBAPZZDIS_PERCENT ) / 100 .
*
VBAP-ZZFINAL_COST = VBAP-ZZGRANDTOT - VBAP-ZZDIS_LUMPSUM.
*
ELSE.
*
CLEAR : VBAP-ZZAPPRO1.
*
MESSAGE 'Please Enter Correct Percentage' TYPE 'W' DISPLAY LIKE
'I'.
*
ENDIF.
*
ENDIF.
*
*
CLEAR : LV_PERCENT.
*
IF VBAP-ZZAPPRO1 = 'X' AND VBAP-ZZAPPRO2 = 'X'.
*
SELECT SINGLE ZPERCENT
*
INTO LV_PERCENT
*
FROM ZAMC_APPROVE
*
WHERE ZAPPROVER EQ '2'.
*
IF VBAP-ZZDIS_PERCENT LE LV_PERCENT.
*
VBAP-ZZDIS_LUMPSUM = VBAP-ZZGRANDTOT * ( VBAPZZDIS_PERCENT / 100 ).
*
VBAP-ZZFINAL_COST = VBAP-ZZGRANDTOT - VBAP-ZZDIS_LUMPSUM.
*
ELSE.
*
CLEAR : VBAP-ZZAPPRO2.
*
MESSAGE 'Please Enter Correct Percentage' TYPE 'W' DISPLAY LIKE
'I'.
*
ENDIF.
*
ENDIF.

*
*
CLEAR : LV_PERCENT.
*
IF VBAP-ZZAPPRO1 = 'X' AND VBAP-ZZAPPRO2 = 'X' AND VBAPZZAPPRO3 = 'X'.
*
SELECT SINGLE ZPERCENT
*
INTO LV_PERCENT
*
FROM ZAMC_APPROVE
*
WHERE ZAPPROVER EQ '2'.
*
IF VBAP-ZZDIS_PERCENT LE LV_PERCENT.
*
VBAP-ZZDIS_LUMPSUM = VBAP-ZZGRANDTOT * ( VBAPZZDIS_PERCENT / 100 ).
*
VBAP-ZZFINAL_COST = VBAP-ZZGRANDTOT - VBAP-ZZDIS_LUMPSUM.
*
ELSE.
*
CLEAR : VBAP-ZZAPPRO3.
*
MESSAGE 'Please Enter Correct Percentage' TYPE 'W' DISPLAY LIKE
'I'.
*
ENDIF.
*
ENDIF.
*
*
ELSE.
*
IF VBAP-ZZAPPRO1 = 'X' AND VBAP-ZZAPPRO2 NE 'X' AND VBAPZZAPPRO3 NE 'X'.
*
CLEAR : VBAP-ZZAPPRO1.
*
ELSEIF VBAP-ZZAPPRO1 = 'X' AND VBAP-ZZAPPRO2 = 'X' AND VBAPZZAPPRO3 NE 'X'.
*
CLEAR : VBAP-ZZAPPRO2.
*
ELSEIF VBAP-ZZAPPRO1 = 'X' AND VBAP-ZZAPPRO2 = 'X' AND VBAPZZAPPRO3 = 'X'.
*
CLEAR : VBAP-ZZAPPRO3.
*
ENDIF.
*
*
VBAP-ZZFINAL_COST = VBAP-ZZGRANDTOT.
*
MESSAGE 'Please Enter the Discount Percentage' TYPE 'W' DISPLAY LIKE '
I'.
*
ENDIF.
*
** ELSE.
**
VBAP-ZZFINAL_COST = VBAP-ZZGRANDTOT.
** ENDIF.
**---------------- Discount calculation ------------------------*** CLEAR : L_FCODE,LV_PERCENT.
***
***
VBAP-ZZDIS_PERCENT = VBAK-ZZDIS_PERCENT.
***
***
IF VBAP-ZZDIS_PERCENT IS NOT INITIAL.
***
VBAP-ZZDIS_LUMPSUM = ( VBAP-ZZGRANDTOT * VBAP-ZZDIS_PERCENT ) / 100 .
***
VBAP-ZZFINAL_COST = VBAP-ZZGRANDTOT - VBAP-ZZDIS_LUMPSUM.
***
ELSE.
***
VBAP-ZZFINAL_COST = VBAP-ZZGRANDTOT.

***

ENDIF.

endmodule.
*}

" ZZMOD_DISCOUNT_CHK

INPUT

INSERT

*{
INSERT
EMDK902370
11
*&---------------------------------------------------------------------*
*&
Module ZZMOD_PRICING INPUT
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
module ZZMOD_PRICING input.
****
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*

To Calculate the total Contract Cost ********************


DATA : LT_KOMV TYPE STANDARD TABLE OF KOMV,
LS_KOMV TYPE
KOMV.
REFRESH : LT_KOMV.
LT_KOMV[]

: LS_KOMV.

= XKOMV[].

READ TABLE LT_KOMV INTO LS_KOMV WITH KEY

KSCHL = 'ZCCS'
KPOSN = VBAP-POSNR.

IF SY-SUBRC = 0.
LS_KOMV-KBETR = VBAP-ZZFINAL_COST. "VBAP-ZZGRANDTOT.
MODIFY

XKOMV

FROM LS_KOMV
TRANSPORTING KBETR
WHERE KSCHL = 'ZCCS'
AND
KPOSN = VBAP-POSNR.

CLEAR : LS_KOMV.
ENDIF.

endmodule.
*}

CLEAR

" ZZMOD_PRICING

INPUT

INSERT

*{
INSERT
EMDK902370
12
*&---------------------------------------------------------------------*
*&
Module ZZMOD_DISCOUNT_CHK_HEADER INPUT
*&---------------------------------------------------------------------*
*----------------------------------------------------------------------*
module ZZMOD_DISCOUNT_CHK_HEADER input.
IF SY-TCODE EQ 'VA21' OR
SY-TCODE EQ 'VA22' OR

SY-TCODE EQ 'VA23'.
DATA: L_FCODE1
TYPE SY-UCOMM,
LV_PERCENT1 TYPE ZPERCENT.
L_FCODE1 = FCODE.
CASE L_FCODE1.
WHEN 'APR1'.
AUTHORITY-CHECK OBJECT 'ZAPPR1'
ID
'ZZAPPRO1'
FIELD VBAK-ZZAPPRO1.
IF sy-subrc = 0.
ELSE.
CLEAR VBAK-ZZAPPRO1.
MESSAGE 'You Are Not Authorised' TYPE 'W'.
ENDIF.
WHEN 'APR2'.
AUTHORITY-CHECK OBJECT 'ZAPPR2'
ID 'ZZAPPRO2'
FIELD VBAK-ZZAPPRO2.
IF sy-subrc = 0.
ELSE.
CLEAR VBAK-ZZAPPRO2.
MESSAGE 'You Are Not Authorised' TYPE 'W'.
ENDIF.
WHEN 'APR3'.
AUTHORITY-CHECK OBJECT 'ZAPPR3'
ID 'ZZAPPRO3'
FIELD VBAK-ZZAPPRO3.
IF sy-subrc = 0.
ELSE.
CLEAR VBAK-ZZAPPRO3.
MESSAGE 'You Are Not Authorised' TYPE 'W'.
ENDIF.
WHEN OTHERS.
ENDCASE.
CLEAR : L_FCODE1,LV_PERCENT1.
*

IF VBAP-ZZDIS_LUMPSUM IS NOT INITIAL.


IF VBAK-ZZDIS_PERCENT IS NOT INITIAL.
IF VBAK-ZZAPPRO1 = 'X'.
SELECT SINGLE ZPERCENT
INTO LV_PERCENT
FROM ZAMC_APPROVE

WHERE ZAPPROVER EQ '1'.


IF VBAK-ZZDIS_PERCENT LE LV_PERCENT.
**
LOOP AT SCREEN.
**
IF SCREEN-NAME = 'VBAK-ZZDIS_PERCENT'.
**
SCREEN-INPUT = 0.
**
ENDIF.
**
MODIFY SCREEN.
**
ENDLOOP.
*
VBAP-ZZDIS_LUMPSUM = ( VBAP-ZZGRANDTOT * VBAPZZDIS_PERCENT ) / 100 .
*
VBAP-ZZFINAL_COST = VBAP-ZZGRANDTOT - VBAP-ZZDIS_LUMPSUM.
ELSEIF
VBAK-ZZAPPRO2 NE 'X' AND VBAK-ZZAPPRO3 NE 'X'.
CLEAR : VBAK-ZZAPPRO1.
MESSAGE 'Please Enter Correct Percentage' TYPE 'W' DISPLAY LIKE '
I'.
ENDIF.
ENDIF.
CLEAR : LV_PERCENT.
IF VBAK-ZZAPPRO1 = 'X' AND VBAK-ZZAPPRO2 = 'X'.
SELECT SINGLE ZPERCENT
INTO LV_PERCENT
FROM ZAMC_APPROVE
WHERE ZAPPROVER EQ '2'.
IF VBAK-ZZDIS_PERCENT LE LV_PERCENT.
*
VBAK-ZZDIS_LUMPSUM = VBAP-ZZGRANDTOT * ( VBAPZZDIS_PERCENT / 100 ).
*
VBAP-ZZFINAL_COST = VBAP-ZZGRANDTOT - VBAP-ZZDIS_LUMPSUM.
ELSEIF VBAK-ZZAPPRO1 EQ 'X' AND VBAK-ZZAPPRO3 NE 'X'.
CLEAR : VBAK-ZZAPPRO2.
MESSAGE 'Please Enter Correct Percentage' TYPE 'W' DISPLAY LIKE '
I'.
ENDIF.
ENDIF.
CLEAR : LV_PERCENT.
IF VBAK-ZZAPPRO1 = 'X' AND VBAK-ZZAPPRO2 = 'X' AND VBAK-ZZAPPRO3 = 'X'.
SELECT SINGLE ZPERCENT
INTO LV_PERCENT
FROM ZAMC_APPROVE
WHERE ZAPPROVER EQ '3'.
IF VBAK-ZZDIS_PERCENT LE LV_PERCENT.
*
VBAP-ZZDIS_LUMPSUM = VBAP-ZZGRANDTOT * ( VBAPZZDIS_PERCENT / 100 ).
*
VBAP-ZZFINAL_COST = VBAP-ZZGRANDTOT - VBAP-ZZDIS_LUMPSUM.
ELSEIF VBAK-ZZAPPRO1 EQ 'X' AND VBAK-ZZAPPRO2 EQ 'X'.
CLEAR : VBAK-ZZAPPRO3.
MESSAGE 'Please Enter Correct Percentage' TYPE 'W' DISPLAY LIKE '

I'.
ENDIF.
ENDIF.
ELSE.
IF VBAK-ZZAPPRO1 = 'X' AND VBAK-ZZAPPRO2 NE 'X' AND VBAKZZAPPRO3 NE 'X'.
CLEAR : VBAK-ZZAPPRO1.
MESSAGE 'Please Enter the Discount Percentage' TYPE 'W' DISPLAY LIKE
'I'.
ELSEIF VBAK-ZZAPPRO1 = 'X' AND VBAK-ZZAPPRO2 = 'X' AND VBAKZZAPPRO3 NE 'X'.
CLEAR : VBAK-ZZAPPRO2.
MESSAGE 'Please Enter the Discount Percentage' TYPE 'W' DISPLAY LIKE '
I'.
ELSEIF VBAK-ZZAPPRO1 = 'X' AND VBAK-ZZAPPRO2 = 'X' AND VBAKZZAPPRO3 = 'X'.
CLEAR : VBAK-ZZAPPRO3.
MESSAGE 'Please Enter the Discount Percentage' TYPE 'W' DISPLAY LIKE '
I'.
ENDIF.
*

VBAP-ZZFINAL_COST = VBAP-ZZGRANDTOT.
ENDIF.

ENDIF.
endmodule.
*}

INSERT

" ZZMOD_DISCOUNT_CHK_HEADER

INPUT

S-ar putea să vă placă și