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

performance

Former Member
0 Likes
455

hi all,

output is like this.

actuals budget

-


-


sales costofsales contribution margin--sales costofsales contribution margin

-


manufacturing

-


Gearboxes Sales RR.

Gearboxes Sales TM.

Gearboxes Sales GE.

Spare Gear Sales RR.

Spare Gear Sales GE.

Eng & Gear Box Assy TM.

Spare gear sales TM.

Others.

Others- TMF Development'

subtotal

mro

-


MRO Turbomeca.

MRO Military Local.

MRO Civil Local.

MRO Civil & Military International.

Sales of Spares.

Service Station.

SUB TOTAL.

GRAND TOTAL.

-


my requirement is like this.

selection acreen is

fiscal year----


period -


i need to take the information from glpca table where customer enters fiscal year and period.

SELECT ryear poper rprctr racct activ hsl refdocnr matnr kunnr

PS_PSP_PNR VKGRP INTO TABLE IT_TAB1 FROM GLPCA WHERE KOKRS EQ 'D006'

AND RYEAR EQ RYEAR AND POPER EQ POPER.

1) where activ = rmwl ,i need to take all the (refdocnr),based on ref doc nos go to VBFA table retrieve VBELV values,

based on VBELV go to VBAK table retrieve VKGRP values.

LOOP AT it_tab1 WHERE activ = 'RMWL'.

MOVE-CORRESPONDING it_tab1 TO it_RMWL.

APPEND IT_RMWL.

ENDLOOP.

SELECT VBELV VBELN FROM VBFA

INTO CORRESPONDING FIELDS OF TABLE IT_VBFA

FOR ALL ENTRIES IN IT_RMWL

WHERE VBELN = IT_RMWL-REFDOCNR.

SELECT VBELN VKGRP FROM VBAK

INTO CORRESPONDING FIELDS OF TABLE IT_VBAK

FOR ALL ENTRIES IN IT_VBFA

WHERE VBELN = IT_VBFA-VBELV.

LOOP AT IT_RMWL.

MOVE-CORRESPONDING IT_RMWL TO IT_TAB3.

READ TABLE IT_VBFA WITH KEY VBELN = IT_RMWL-REFDOCNR.

READ TABLE IT_VBAK WITH KEY VBELN = IT_VBFA-VBELV.

IF SY-SUBRC = 0.

IT_TAB3-VKGRP = IT_VBAK-VKGRP.

APPEND IT_TAB3.

ENDIF.

ENDLOOP.

based on first condition i need to caluculate the manufacturing actual mro cost of sales.

depend upon profit center and sales groups 15 cost of sales i need to caluculate 15 conditions are there.

IF it_tab3-RPRCTR = '0000006003' AND it_tab3-VKGRP = 'RR' OR

it_tab3-RPRCTR = '0000006003' AND it_tab3-VKGRP = 'RRG' .

LV_acsal01 = LV_acsal01 + it_tab3-HSL.

endif.

2) where activ = sd00, i must take all the recors from it_tab1.

based on second condition i need to caluculate the all actual sales.

LOOP AT it_tab1 WHERE activ = 'SD00'.

MOVE-CORRESPONDING it_tab1 TO it_TAB2.

APPEND it_tab2.

ENDLOOP.

SORT IT_TAB2 BY RPRCTR.

depend upon profit center and sales groups 15 actual sales i need to caluculate 15 conditions are there.

IF it_tab2-RPRCTR = '0000006003' AND it_tab2-VKGRP = 'RR' OR

it_tab2-RPRCTR = '0000006003' AND it_tab2-VKGRP = 'RRG' .

LV_aSALE01 = LV_aSALE01 + it_tab2-HSL.

endif.

3) where activ = sd00, i must take all the wbs elements from it_tab1.

LOOP AT it_tab1 WHERE activ = 'SD00'.

MOVE-CORRESPONDING it_tab1 TO it_TAB2.

APPEND it_tab2.

ENDLOOP.

SORT it_TAB2 BY ps_psp_pnr.

DELETE ADJACENT DUPLICATES FROM it_TAB2 COMPARING ps_psp_pnr.

DELETE it_tab1

WHERE ( RACCT <> '0000831201' AND

racct <> '0000831501' ).

LOOP AT it_TAB2.

MOVE-CORRESPONDING IT_TAB2 TO IT_CMRO.

LOOP AT it_tab1

WHERE ( PS_PSP_PNR = IT_CMRO-PS_PSP_PNR ) AND

( RACCT = '0000831201' OR

RACCT = '0000831501' ).

it_CMRO-csale = it_CMRO-csale + it_tab1-hsl.

ENDLOOP.

if NOT it_CMRO-csale is initial.

APPEND it_CMRO.

endif.

ENDLOOP.

each wbs element i must search it_tab1 where the account nos eq to 831501,831201.

but when activ = sd00 record and account nos 831501,831201 records are different in the table.

that means

fiscalyear period activ amount wbselement account no

2007 003 sd00 716.01 731567 567890

2007 003 koae 654.98 731567 831501

if its satisfy the second condition i must add all the amounts(cost of sales).

based on third condition i must calucualte the actual mro cost of sales.

LOOP AT IT_CMRO.

IF IT_CMRO-RPRCTR = '0000006001' AND IT_CMRO-VKGRP = 'ARR' OR

IT_CMRO-RPRCTR = '0000006001' AND IT_CMRO-VKGRP = 'ARE' OR

IT_CMRO-RPRCTR = '0000006001' AND IT_CMRO-VKGRP = 'TMR' OR

IT_CMRO-RPRCTR = '0000006001' AND IT_CMRO-VKGRP = 'ATR' OR

IT_CMRO-RPRCTR = '0000006001' AND IT_CMRO-VKGRP = 'TMK' OR

IT_CMRO-RPRCTR = '0000006001' AND IT_CMRO-VKGRP = 'TUR'.

LV_ACSAL11 = LV_ACSAL11 + IT_CMRO-CSALE.

endif.

4) budget sales,cost of sales is like this.

SELECT * FROM ZBUDGET INTO TABLE it_GETB.

LOOP AT it_getb.

IF it_getb-icode = 'B001' AND it_getb-ryear = ryear

AND it_getb-poper = poper.

LV_BSALE01 = LV_BSALE01 + IT_GETB-HSL.

ENDIF.

-


15 conditions

IF it_getb-icode = 'B001' AND it_getb-ryear = ryear

AND it_getb-poper = poper.

LV_BCSAL01 = LV_BCSAL01 + IT_GETB-CSALE.

ENDIF.

-


15 conditions

5) contribution = sales - cost of sales

margin = ( contribution / sales ) * 100.

for this reqirement i wrote the code like this.iam new abap area.

i am not sure i wrote the code according programing standards and performance point of view.

&----


*& Report ZFRSGDD1 *

*& *

&----


*& *

*& *

&----


REPORT ZFRSGDD1 NO STANDARD PAGE HEADING

LINE-SIZE 255

LINE-COUNT 65.

====[TABLES]=======================================================

TABLES: GLPCA,ZBUDGET,VBFA,VBAK.

===[INTERNAL TABLES]==================================================

DATA: BEGIN OF it_tab1 OCCURS 0,

RYEAR LIKE GLPCA-RYEAR,

POPER LIKE GLPCA-POPER,

RPRCTR LIKE GLPCA-RPRCTR,

RACCT LIKE GLPCA-RACCT,

ACTIV LIKE GLPCA-ACTIV,

HSL LIKE GLPCA-HSL,

REFDOCNR LIKE GLPCA-REFDOCNR,

MATNR LIKE GLPCA-MATNR,

KUNNR LIKE GLPCA-KUNNR,

PS_PSP_PNR LIKE GLPCA-PS_PSP_PNR,

VKGRP LIKE GLPCA-VKGRP,

END OF it_tab1.

DATA: BEGIN OF it_RMWL OCCURS 0,

RYEAR LIKE GLPCA-RYEAR,

POPER LIKE GLPCA-POPER,

RPRCTR LIKE GLPCA-RPRCTR,

RACCT LIKE GLPCA-RACCT,

ACTIV LIKE GLPCA-ACTIV,

HSL LIKE GLPCA-HSL,

REFDOCNR LIKE GLPCA-REFDOCNR,

MATNR LIKE GLPCA-MATNR,

KUNNR LIKE GLPCA-KUNNR,

PS_PSP_PNR LIKE GLPCA-PS_PSP_PNR,

END OF it_RMWL.

DATA: BEGIN OF it_tab2 OCCURS 0,

RYEAR LIKE GLPCA-RYEAR,

POPER LIKE GLPCA-POPER,

RPRCTR LIKE GLPCA-RPRCTR,

RACCT LIKE GLPCA-RACCT,

ACTIV LIKE GLPCA-ACTIV,

HSL LIKE GLPCA-HSL,

REFDOCNR LIKE GLPCA-REFDOCNR,

MATNR LIKE GLPCA-MATNR,

KUNNR LIKE GLPCA-KUNNR,

PS_PSP_PNR LIKE GLPCA-PS_PSP_PNR,

VKGRP LIKE GLPCA-VKGRP,

CSALE LIKE GLPCA-HSL,

END OF it_tab2.

DATA: BEGIN OF it_TAB3 OCCURS 0,

RYEAR LIKE GLPCA-RYEAR,

POPER LIKE GLPCA-POPER,

RPRCTR LIKE GLPCA-RPRCTR,

RACCT LIKE GLPCA-RACCT,

ACTIV LIKE GLPCA-ACTIV,

HSL LIKE GLPCA-HSL,

REFDOCNR LIKE GLPCA-REFDOCNR,

MATNR LIKE GLPCA-MATNR,

KUNNR LIKE GLPCA-KUNNR,

PS_PSP_PNR LIKE GLPCA-PS_PSP_PNR,

VKGRP LIKE GLPCA-VKGRP,

END OF it_TAB3.

DATA: BEGIN OF it_SALE01 OCCURS 0,

KEY(2),

RYEAR LIKE GLPCA-RYEAR,

POPER LIKE GLPCA-POPER,

RPRCTR LIKE GLPCA-RPRCTR,

RACCT LIKE GLPCA-RACCT,

ACTIV LIKE GLPCA-ACTIV,

HSL LIKE GLPCA-HSL,

REFDOCNR LIKE GLPCA-REFDOCNR,

MATNR LIKE GLPCA-MATNR,

KUNNR LIKE GLPCA-KUNNR,

PS_PSP_PNR LIKE GLPCA-PS_PSP_PNR,

VKGRP LIKE GLPCA-VKGRP,

END OF it_SALE01.

DATA: BEGIN OF it_DCSAL OCCURS 0,

KEY(2),

RYEAR LIKE GLPCA-RYEAR,

POPER LIKE GLPCA-POPER,

RPRCTR LIKE GLPCA-RPRCTR,

RACCT LIKE GLPCA-RACCT,

ACTIV LIKE GLPCA-ACTIV,

HSL LIKE GLPCA-HSL,

REFDOCNR LIKE GLPCA-REFDOCNR,

MATNR LIKE GLPCA-MATNR,

KUNNR LIKE GLPCA-KUNNR,

PS_PSP_PNR LIKE GLPCA-PS_PSP_PNR,

VKGRP LIKE GLPCA-VKGRP,

CSALE LIKE GLPCA-HSL,

END OF it_DCSAL.

DATA: it_CMRO LIKE it_tab2 OCCURS 0 WITH HEADER LINE.

DATA: it_getb LIKE zbudget OCCURS 0 WITH HEADER LINE.

DATA :IT_DGETB1 LIKE IT_GETB OCCURS 0 WITH HEADER LINE.

DATA: BEGIN OF IT_VBFA OCCURS 0,

VBELV LIKE VBFA-VBELV,

VBELN LIKE VBFA-VBELN,

END OF IT_VBFA.

DATA: BEGIN OF IT_VBAK OCCURS 0,

VBELN LIKE VBAK-VBELN,

VKGRP LIKE VBAK-VKGRP,

END OF IT_VBAK.

===[DATA]=============================================================

DATA: LV_ASALE01 TYPE P DECIMALS 0,

LV_ASALE02 TYPE P DECIMALS 0,

LV_ASALE03 TYPE P DECIMALS 0,

LV_ASALE04 TYPE P DECIMALS 0,

LV_ASALE05 TYPE P DECIMALS 0,

LV_ASALE06 TYPE P DECIMALS 0,

LV_ASALE07 TYPE P DECIMALS 0,

LV_ASALE08 TYPE P DECIMALS 0,

LV_ASALE09 TYPE P DECIMALS 0,

LV_ASALE10 TYPE P DECIMALS 0,

LV_ASALE11 TYPE P DECIMALS 0,

LV_ASALE12 TYPE P DECIMALS 0,

LV_ASALE13 TYPE P DECIMALS 0,

LV_ASALE14 TYPE P DECIMALS 0,

LV_ASALE15 TYPE P DECIMALS 0,

LV_ASALE16 TYPE P DECIMALS 0,

LV_ASALE17 TYPE P DECIMALS 0,

LV_ASALE18 TYPE P DECIMALS 0,

LV_ACSAL01 TYPE P DECIMALS 0,

LV_ACSAL02 TYPE P DECIMALS 0,

LV_ACSAL03 TYPE P DECIMALS 0,

LV_ACSAL04 TYPE P DECIMALS 0,

LV_ACSAL05 TYPE P DECIMALS 0,

LV_ACSAL06 TYPE P DECIMALS 0,

LV_ACSAL07 TYPE P DECIMALS 0,

LV_ACSAL08 TYPE P DECIMALS 0,

LV_ACSAL09 TYPE P DECIMALS 0,

LV_ACSAL10 TYPE P DECIMALS 0,

LV_ACSAL11 TYPE P DECIMALS 0,

LV_ACSAL12 TYPE P DECIMALS 0,

LV_ACSAL13 TYPE P DECIMALS 0,

LV_ACSAL14 TYPE P DECIMALS 0,

LV_ACSAL15 TYPE P DECIMALS 0,

LV_ACSAL16 TYPE P DECIMALS 0,

LV_ACSAL17 TYPE P DECIMALS 0,

LV_ACSAL18 TYPE P DECIMALS 0,

LV_BSALE01 TYPE P DECIMALS 0,

LV_BSALE02 TYPE P DECIMALS 0,

LV_BSALE03 TYPE P DECIMALS 0,

LV_BSALE04 TYPE P DECIMALS 0,

LV_BSALE05 TYPE P DECIMALS 0,

LV_BSALE06 TYPE P DECIMALS 0,

LV_BSALE07 TYPE P DECIMALS 0,

LV_BSALE08 TYPE P DECIMALS 0,

LV_BSALE09 TYPE P DECIMALS 0,

LV_BSALE10 TYPE P DECIMALS 0,

LV_BSALE11 TYPE P DECIMALS 0,

LV_BSALE12 TYPE P DECIMALS 0,

LV_BSALE13 TYPE P DECIMALS 0,

LV_BSALE14 TYPE P DECIMALS 0,

LV_BSALE15 TYPE P DECIMALS 0,

LV_BSALE16 TYPE P DECIMALS 0,

LV_BSALE17 TYPE P DECIMALS 0,

LV_BSALE18 TYPE P DECIMALS 0,

LV_BCSAL01 TYPE P DECIMALS 0,

LV_BCSAL02 TYPE P DECIMALS 0,

LV_BCSAL03 TYPE P DECIMALS 0,

LV_BCSAL04 TYPE P DECIMALS 0,

LV_BCSAL05 TYPE P DECIMALS 0,

LV_BCSAL06 TYPE P DECIMALS 0,

LV_BCSAL07 TYPE P DECIMALS 0,

LV_BCSAL08 TYPE P DECIMALS 0,

LV_BCSAL09 TYPE P DECIMALS 0,

LV_BCSAL10 TYPE P DECIMALS 0,

LV_BCSAL11 TYPE P DECIMALS 0,

LV_BCSAL12 TYPE P DECIMALS 0,

LV_BCSAL13 TYPE P DECIMALS 0,

LV_BCSAL14 TYPE P DECIMALS 0,

LV_BCSAL15 TYPE P DECIMALS 0,

LV_BCSAL16 TYPE P DECIMALS 0,

LV_BCSAL17 TYPE P DECIMALS 0,

LV_BCSAL18 TYPE P DECIMALS 0,

LV_VSALE01 TYPE P DECIMALS 0,

LV_VSALE02 TYPE P DECIMALS 0,

LV_VSALE03 TYPE P DECIMALS 0,

LV_VSALE04 TYPE P DECIMALS 0,

LV_VSALE05 TYPE P DECIMALS 0,

LV_VSALE06 TYPE P DECIMALS 0,

LV_VSALE07 TYPE P DECIMALS 0,

LV_VSALE08 TYPE P DECIMALS 0,

LV_VSALE09 TYPE P DECIMALS 0,

LV_VSALE10 TYPE P DECIMALS 0,

LV_VSALE11 TYPE P DECIMALS 0,

LV_VSALE12 TYPE P DECIMALS 0,

LV_VSALE13 TYPE P DECIMALS 0,

LV_VSALE14 TYPE P DECIMALS 0,

LV_VSALE15 TYPE P DECIMALS 0,

LV_VSALE16 TYPE P DECIMALS 0,

LV_VSALE17 TYPE P DECIMALS 0,

LV_VSALE18 TYPE P DECIMALS 0,

LV_VCSAL01 TYPE P DECIMALS 0,

LV_VCSAL02 TYPE P DECIMALS 0,

LV_VCSAL03 TYPE P DECIMALS 0,

LV_VCSAL04 TYPE P DECIMALS 0,

LV_VCSAL05 TYPE P DECIMALS 0,

LV_VCSAL06 TYPE P DECIMALS 0,

LV_VCSAL07 TYPE P DECIMALS 0,

LV_VCSAL08 TYPE P DECIMALS 0,

LV_VCSAL09 TYPE P DECIMALS 0,

LV_VCSAL10 TYPE P DECIMALS 0,

LV_VCSAL11 TYPE P DECIMALS 0,

LV_VCSAL12 TYPE P DECIMALS 0,

LV_VCSAL13 TYPE P DECIMALS 0,

LV_VCSAL14 TYPE P DECIMALS 0,

LV_VCSAL15 TYPE P DECIMALS 0,

LV_VCSAL16 TYPE P DECIMALS 0,

LV_VCSAL17 TYPE P DECIMALS 0,

LV_VCSAL18 TYPE P DECIMALS 0,

LV_ACONT01 TYPE P DECIMALS 0,

LV_ACONT02 TYPE P DECIMALS 0,

LV_ACONT03 TYPE P DECIMALS 0,

LV_ACONT04 TYPE P DECIMALS 0,

LV_ACONT05 TYPE P DECIMALS 0,

LV_ACONT06 TYPE P DECIMALS 0,

LV_ACONT07 TYPE P DECIMALS 0,

LV_ACONT08 TYPE P DECIMALS 0,

LV_ACONT09 TYPE P DECIMALS 0,

LV_ACONT10 TYPE P DECIMALS 0,

LV_ACONT11 TYPE P DECIMALS 0,

LV_ACONT12 TYPE P DECIMALS 0,

LV_ACONT13 TYPE P DECIMALS 0,

LV_ACONT14 TYPE P DECIMALS 0,

LV_ACONT15 TYPE P DECIMALS 0,

LV_ACONT16 TYPE P DECIMALS 0,

LV_ACONT17 TYPE P DECIMALS 0,

LV_ACONT18 TYPE P DECIMALS 0,

LV_AMARG01 TYPE P DECIMALS 0,

LV_AMARG02 TYPE P DECIMALS 0,

LV_AMARG03 TYPE P DECIMALS 0,

LV_AMARG04 TYPE P DECIMALS 0,

LV_AMARG05 TYPE P DECIMALS 0,

LV_AMARG06 TYPE P DECIMALS 0,

LV_AMARG07 TYPE P DECIMALS 0,

LV_AMARG08 TYPE P DECIMALS 0,

LV_AMARG09 TYPE P DECIMALS 0,

LV_AMARG10 TYPE P DECIMALS 0,

LV_AMARG11 TYPE P DECIMALS 0,

LV_AMARG12 TYPE P DECIMALS 0,

LV_AMARG13 TYPE P DECIMALS 0,

LV_AMARG14 TYPE P DECIMALS 0,

LV_AMARG15 TYPE P DECIMALS 0,

LV_AMARG16 TYPE P DECIMALS 0,

LV_AMARG17 TYPE P DECIMALS 0,

LV_AMARG18 TYPE P DECIMALS 0,

LV_BCONT01 TYPE P DECIMALS 0,

LV_BCONT02 TYPE P DECIMALS 0,

LV_BCONT03 TYPE P DECIMALS 0,

LV_BCONT04 TYPE P DECIMALS 0,

LV_BCONT05 TYPE P DECIMALS 0,

LV_BCONT06 TYPE P DECIMALS 0,

LV_BCONT07 TYPE P DECIMALS 0,

LV_BCONT08 TYPE P DECIMALS 0,

LV_BCONT09 TYPE P DECIMALS 0,

LV_BCONT10 TYPE P DECIMALS 0,

LV_BCONT11 TYPE P DECIMALS 0,

LV_BCONT12 TYPE P DECIMALS 0,

LV_BCONT13 TYPE P DECIMALS 0,

LV_BCONT14 TYPE P DECIMALS 0,

LV_BCONT15 TYPE P DECIMALS 0,

LV_BCONT16 TYPE P DECIMALS 0,

LV_BCONT17 TYPE P DECIMALS 0,

LV_BCONT18 TYPE P DECIMALS 0,

LV_BMARG01 TYPE P DECIMALS 0,

LV_BMARG02 TYPE P DECIMALS 0,

LV_BMARG03 TYPE P DECIMALS 0,

LV_BMARG04 TYPE P DECIMALS 0,

LV_BMARG05 TYPE P DECIMALS 0,

LV_BMARG06 TYPE P DECIMALS 0,

LV_BMARG07 TYPE P DECIMALS 0,

LV_BMARG08 TYPE P DECIMALS 0,

LV_BMARG09 TYPE P DECIMALS 0,

LV_BMARG10 TYPE P DECIMALS 0,

LV_BMARG11 TYPE P DECIMALS 0,

LV_BMARG12 TYPE P DECIMALS 0,

LV_BMARG13 TYPE P DECIMALS 0,

LV_BMARG14 TYPE P DECIMALS 0,

LV_BMARG15 TYPE P DECIMALS 0,

LV_BMARG16 TYPE P DECIMALS 0,

LV_BMARG17 TYPE P DECIMALS 0,

LV_BMARG18 TYPE P DECIMALS 0,

LV_VPSAL01 TYPE P DECIMALS 0,

LV_VPSAL02 TYPE P DECIMALS 0,

LV_VPSAL03 TYPE P DECIMALS 0,

LV_VPSAL04 TYPE P DECIMALS 0,

LV_VPSAL05 TYPE P DECIMALS 0,

LV_VPSAL06 TYPE P DECIMALS 0,

LV_VPSAL07 TYPE P DECIMALS 0,

LV_VPSAL08 TYPE P DECIMALS 0,

LV_VPSAL09 TYPE P DECIMALS 0,

LV_VPSAL10 TYPE P DECIMALS 0,

LV_VPSAL11 TYPE P DECIMALS 0,

LV_VPSAL12 TYPE P DECIMALS 0,

LV_VPSAL13 TYPE P DECIMALS 0,

LV_VPSAL14 TYPE P DECIMALS 0,

LV_VPSAL15 TYPE P DECIMALS 0,

LV_VPSAL16 TYPE P DECIMALS 0,

LV_VPSAL17 TYPE P DECIMALS 0,

LV_VPSAL18 TYPE P DECIMALS 0,

LV_VPCOS01 TYPE P DECIMALS 0,

LV_VPCOS02 TYPE P DECIMALS 0,

LV_VPCOS03 TYPE P DECIMALS 0,

LV_VPCOS04 TYPE P DECIMALS 0,

LV_VPCOS05 TYPE P DECIMALS 0,

LV_VPCOS06 TYPE P DECIMALS 0,

LV_VPCOS07 TYPE P DECIMALS 0,

LV_VPCOS08 TYPE P DECIMALS 0,

LV_VPCOS09 TYPE P DECIMALS 0,

LV_VPCOS10 TYPE P DECIMALS 0,

LV_VPCOS11 TYPE P DECIMALS 0,

LV_VPCOS12 TYPE P DECIMALS 0,

LV_VPCOS13 TYPE P DECIMALS 0,

LV_VPCOS14 TYPE P DECIMALS 0,

LV_VPCOS15 TYPE P DECIMALS 0,

LV_VPCOS16 TYPE P DECIMALS 0,

LV_VPCOS17 TYPE P DECIMALS 0,

LV_VPCOS18 TYPE P DECIMALS 0,

LV_PNAME01(35),

LV_PNAME02(35),

LV_PNAME03(35),

LV_PNAME04(35),

LV_PNAME05(35),

LV_PNAME06(35),

LV_PNAME07(35),

LV_PNAME08(35),

LV_PNAME09(35),

LV_PNAME10(35),

LV_PNAME11(35),

LV_PNAME12(35),

LV_PNAME13(35),

LV_PNAME14(35),

LV_PNAME15(35),

LV_PNAME16(35),

LV_PNAME17(35),

LV_PNAME18(35).

DATA: LV_SUBRC LIKE SY-SUBRC.

DATA: LTOT(20).

===[SELECTION SCREEN]=================================================

SELECTION-SCREEN BEGIN OF BLOCK B1 WITH FRAME TITLE TEXT-035.

PARAMETERS: RYEAR LIKE GLPCA-RYEAR.

PARAMETERS: POPER LIKE GLPCA-POPER.

PARAMETERS: DETAIL RADIOBUTTON GROUP G2,

SUMMARY RADIOBUTTON GROUP G2.

SELECTION-SCREEN BEGIN OF LINE.

SELECTION-SCREEN COMMENT 30(12) TEXT-031.

SELECTION-SCREEN COMMENT 45(13) TEXT-032.

SELECTION-SCREEN END OF LINE.

SELECTION-SCREEN BEGIN OF LINE.

SELECTION-SCREEN COMMENT 1(20) TEXT-033.

SELECTION-SCREEN END OF LINE.

SELECTION-SCREEN SKIP 1.

SELECTION-SCREEN BEGIN OF LINE.

SELECTION-SCREEN COMMENT 1(35) TEXT-001 FOR FIELD SALE01.

PARAMETERS:SALE01 RADIOBUTTON GROUP G1.

SELECTION-SCREEN COMMENT 40(8) TEXT-002 FOR FIELD CSAL01.

PARAMETERS:CSAL01 RADIOBUTTON GROUP G1 DEFAULT 'X'.

SELECTION-SCREEN END OF LINE.

SELECTION-SCREEN BEGIN OF LINE.

SELECTION-SCREEN COMMENT 1(35) TEXT-003 FOR FIELD SALE02.

PARAMETERS:SALE02 RADIOBUTTON GROUP G1.

SELECTION-SCREEN COMMENT 40(8) TEXT-004 FOR FIELD CSAL02.

PARAMETERS:CSAL02 RADIOBUTTON GROUP G1.

SELECTION-SCREEN END OF LINE.

SELECTION-SCREEN BEGIN OF LINE.

SELECTION-SCREEN COMMENT 1(35) TEXT-005 FOR FIELD SALE03.

PARAMETERS:SALE03 RADIOBUTTON GROUP G1.

SELECTION-SCREEN COMMENT 40(8) TEXT-006 FOR FIELD CSAL03.

PARAMETERS:CSAL03 RADIOBUTTON GROUP G1.

SELECTION-SCREEN END OF LINE.

SELECTION-SCREEN BEGIN OF LINE.

SELECTION-SCREEN COMMENT 1(35) TEXT-007 FOR FIELD SALE04.

PARAMETERS:SALE04 RADIOBUTTON GROUP G1.

SELECTION-SCREEN COMMENT 40(8) TEXT-008 FOR FIELD CSAL04.

PARAMETERS:CSAL04 RADIOBUTTON GROUP G1.

SELECTION-SCREEN END OF LINE.

SELECTION-SCREEN BEGIN OF LINE.

SELECTION-SCREEN COMMENT 1(35) TEXT-009 FOR FIELD SALE05.

PARAMETERS:SALE05 RADIOBUTTON GROUP G1.

SELECTION-SCREEN COMMENT 40(8) TEXT-010 FOR FIELD CSAL05.

PARAMETERS:CSAL05 RADIOBUTTON GROUP G1.

SELECTION-SCREEN END OF LINE.

SELECTION-SCREEN BEGIN OF LINE.

SELECTION-SCREEN COMMENT 1(35) TEXT-011 FOR FIELD SALE06.

PARAMETERS:SALE06 RADIOBUTTON GROUP G1.

SELECTION-SCREEN COMMENT 40(8) TEXT-012 FOR FIELD CSAL06.

PARAMETERS:CSAL06 RADIOBUTTON GROUP G1.

SELECTION-SCREEN END OF LINE.

SELECTION-SCREEN BEGIN OF LINE.

SELECTION-SCREEN COMMENT 1(35) TEXT-013 FOR FIELD SALE07.

PARAMETERS:SALE07 RADIOBUTTON GROUP G1.

SELECTION-SCREEN COMMENT 40(8) TEXT-014 FOR FIELD CSAL07.

PARAMETERS:CSAL07 RADIOBUTTON GROUP G1.

SELECTION-SCREEN END OF LINE.

SELECTION-SCREEN BEGIN OF LINE.

SELECTION-SCREEN COMMENT 1(35) TEXT-015 FOR FIELD SALE08.

PARAMETERS:SALE08 RADIOBUTTON GROUP G1.

SELECTION-SCREEN COMMENT 40(8) TEXT-016 FOR FIELD CSAL08.

PARAMETERS:CSAL08 RADIOBUTTON GROUP G1.

SELECTION-SCREEN END OF LINE.

SELECTION-SCREEN BEGIN OF LINE.

SELECTION-SCREEN COMMENT 1(35) TEXT-017 FOR FIELD SALE09.

PARAMETERS:SALE09 RADIOBUTTON GROUP G1.

SELECTION-SCREEN COMMENT 40(8) TEXT-018 FOR FIELD CSAL09.

PARAMETERS:CSAL09 RADIOBUTTON GROUP G1.

SELECTION-SCREEN END OF LINE.

SELECTION-SCREEN SKIP 1.

SELECTION-SCREEN BEGIN OF LINE.

SELECTION-SCREEN COMMENT 1(20) TEXT-034.

SELECTION-SCREEN END OF LINE.

SELECTION-SCREEN BEGIN OF LINE.

SELECTION-SCREEN COMMENT 1(35) TEXT-019 FOR FIELD SALE11.

PARAMETERS:SALE11 RADIOBUTTON GROUP G1.

SELECTION-SCREEN COMMENT 40(8) TEXT-020 FOR FIELD CSAL11.

PARAMETERS:CSAL11 RADIOBUTTON GROUP G1.

SELECTION-SCREEN END OF LINE.

SELECTION-SCREEN BEGIN OF LINE.

SELECTION-SCREEN COMMENT 1(35) TEXT-021 FOR FIELD SALE12.

PARAMETERS:SALE12 RADIOBUTTON GROUP G1.

SELECTION-SCREEN COMMENT 40(8) TEXT-022 FOR FIELD CSAL12.

PARAMETERS:CSAL12 RADIOBUTTON GROUP G1.

SELECTION-SCREEN END OF LINE.

SELECTION-SCREEN BEGIN OF LINE.

SELECTION-SCREEN COMMENT 1(35) TEXT-023 FOR FIELD SALE13.

PARAMETERS:SALE13 RADIOBUTTON GROUP G1.

SELECTION-SCREEN COMMENT 40(8) TEXT-024 FOR FIELD CSAL13.

PARAMETERS:CSAL13 RADIOBUTTON GROUP G1.

SELECTION-SCREEN END OF LINE.

SELECTION-SCREEN BEGIN OF LINE.

SELECTION-SCREEN COMMENT 1(35) TEXT-025 FOR FIELD SALE14.

PARAMETERS:SALE14 RADIOBUTTON GROUP G1.

SELECTION-SCREEN COMMENT 40(8) TEXT-026 FOR FIELD CSAL14.

PARAMETERS:CSAL14 RADIOBUTTON GROUP G1.

SELECTION-SCREEN END OF LINE.

SELECTION-SCREEN BEGIN OF LINE.

SELECTION-SCREEN COMMENT 1(35) TEXT-027 FOR FIELD SALE15.

PARAMETERS:SALE15 RADIOBUTTON GROUP G1.

SELECTION-SCREEN COMMENT 40(8) TEXT-028 FOR FIELD CSAL15.

PARAMETERS:CSAL15 RADIOBUTTON GROUP G1.

SELECTION-SCREEN END OF LINE.

SELECTION-SCREEN BEGIN OF LINE.

SELECTION-SCREEN COMMENT 1(35) TEXT-029 FOR FIELD SALE16.

PARAMETERS:SALE16 RADIOBUTTON GROUP G1.

SELECTION-SCREEN COMMENT 40(8) TEXT-030 FOR FIELD CSAL16.

PARAMETERS:CSAL16 RADIOBUTTON GROUP G1.

SELECTION-SCREEN END OF LINE.

SELECTION-SCREEN END OF BLOCK B1.

TOP-OF-PAGE.

WRITE: /'Program:', SY-REPID.

WRITE: 42 'date:', SY-DATUM.

WRITE: 80 'TIME:', SY-UZEIT.

===[START-OF-SELECTION]===============================================

START-OF-SELECTION.

*& get the data

PERFORM fm_get_data.

IF SUMMARY = 'X'.

*& Print the actual report

PERFORM FM_PRINT_ACTUAL.

ELSE.

*& Print the actual report

PERFORM FM_DETAIL_REPORT.

ENDIF.

*& Print the actual report

===[END-OF-SELECTION]=================================================

END-OF-SELECTION.

===[FORMS]============================================================

&----


*& Form fm_get_data

&----


  • text

----


FORM fm_get_data.

SELECT ryear poper rprctr racct activ hsl refdocnr matnr kunnr

PS_PSP_PNR VKGRP INTO TABLE IT_TAB1 FROM GLPCA WHERE KOKRS EQ 'D006'

AND RYEAR EQ RYEAR AND POPER EQ POPER.

LOOP AT it_tab1 WHERE activ = 'RMWL'.

MOVE-CORRESPONDING it_tab1 TO it_RMWL.

APPEND IT_RMWL.

ENDLOOP.

SELECT VBELV VBELN FROM VBFA

INTO CORRESPONDING FIELDS OF TABLE IT_VBFA

FOR ALL ENTRIES IN IT_RMWL

WHERE VBELN = IT_RMWL-REFDOCNR.

SELECT VBELN VKGRP FROM VBAK

INTO CORRESPONDING FIELDS OF TABLE IT_VBAK

FOR ALL ENTRIES IN IT_VBFA

WHERE VBELN = IT_VBFA-VBELV.

LOOP AT IT_RMWL.

MOVE-CORRESPONDING IT_RMWL TO IT_TAB3.

READ TABLE IT_VBFA WITH KEY VBELN = IT_RMWL-REFDOCNR.

READ TABLE IT_VBAK WITH KEY VBELN = IT_VBFA-VBELV.

IF SY-SUBRC = 0.

IT_TAB3-VKGRP = IT_VBAK-VKGRP.

APPEND IT_TAB3.

ENDIF.

ENDLOOP.

LOOP AT it_tab1 WHERE activ = 'SD00'.

MOVE-CORRESPONDING it_tab1 TO it_TAB2.

APPEND it_tab2.

ENDLOOP.

SORT IT_TAB2 BY RPRCTR.

LOOP AT it_tab2.

*IF it_tab2-ps_psp_pnr eq '00000000'.

*IF IT_TAB2-MATNR <> 'OVERHAUL' AND IT_TAB2-MATNR <> 'SERVICE' AND

  • IT_TAB2-MATNR <> 'SPARES' AND IT_TAB2-MATNR <> 'REPAIR' AND

  • IT_TAB2-MATNR <> 'WORK-PARTY' AND IT_TAB2-MATNR <> 'TEST' AND

  • IT_TAB2-MATNR <> 'INVESTIGATION'.

IF it_tab2-RPRCTR = '0000006003' AND it_tab2-VKGRP = 'RR' OR

it_tab2-RPRCTR = '0000006003' AND it_tab2-VKGRP = 'RRG' .

LV_aSALE01 = LV_aSALE01 + it_tab2-HSL.

MOVE-CORRESPONDING IT_TAB2 TO IT_SALE01.

IT_SALE01-KEY = '01'.

append it_sale01.

ENDIF.

IF it_tab2-RPRCTR = '0000006001' AND it_tab2-VKGRP = 'ARG' OR

it_tab2-RPRCTR = '0000006001' AND it_tab2-VKGRP = 'AGB'.

LV_aSALE02 = LV_aSALE02 + it_tab2-HSL.

MOVE-CORRESPONDING IT_TAB2 TO IT_SALE01.

IT_SALE01-KEY = '02'.

append it_sale01.

ENDIF.

IF it_tab2-RPRCTR = '0000006004' AND it_tab2-VKGRP = 'GE' OR

it_tab2-RPRCTR = '0000006004' AND it_tab2-VKGRP = 'GEB' OR

it_tab2-RPRCTR = '0000006004' AND it_tab2-VKGRP = 'GGA'.

LV_aSALE03 = LV_aSALE03 + it_tab2-HSL.

MOVE-CORRESPONDING IT_TAB2 TO IT_SALE01.

IT_SALE01-KEY = '03'.

append it_sale01.

ENDIF.

IF it_tab2-RPRCTR = '0000006003' AND it_tab2-VKGRP = 'R4B' OR

it_tab2-RPRCTR = '0000006003' AND it_tab2-VKGRP = 'RRT' OR

it_tab2-RPRCTR = '0000006003' AND it_tab2-VKGRP = 'RRC' OR

it_tab2-RPRCTR = '0000006003' AND it_tab2-VKGRP = 'TDR' OR

it_tab2-RPRCTR = '0000006003' AND it_tab2-VKGRP = 'RRY'.

LV_aSALE04 = LV_aSALE04 + it_tab2-HSL.

MOVE-CORRESPONDING IT_TAB2 TO IT_SALE01.

IT_SALE01-KEY = '04'.

append it_sale01.

ENDIF.

IF it_tab2-RPRCTR = '0000006004' AND it_tab2-VKGRP = 'GSA' OR

it_tab2-RPRCTR = '0000006004' AND it_tab2-VKGRP = 'GSP' OR

it_tab2-RPRCTR = '0000006004' AND it_tab2-VKGRP = 'GES'.

LV_aSALE05 = LV_aSALE05 + it_tab2-HSL.

MOVE-CORRESPONDING IT_TAB2 TO IT_SALE01.

IT_SALE01-KEY = '05'.

append it_sale01.

ENDIF.

IF it_tab2-RPRCTR = '0000006001' AND it_tab2-VKGRP = 'ARA' OR

it_tab2-RPRCTR = '0000006001' AND it_tab2-VKGRP = 'AAS' OR

IT_TAB2-RPRCTR = '0000006001' AND IT_TAB2-VKGRP = 'TMG'.

LV_aSALE06 = LV_aSALE06 + it_tab2-HSL.

MOVE-CORRESPONDING IT_TAB2 TO IT_SALE01.

IT_SALE01-KEY = '06'.

append it_sale01.

ENDIF.

IF it_tab2-RPRCTR = '0000006001' AND it_tab2-VKGRP = 'TMS' OR

it_tab2-RPRCTR = '0000006001' AND it_tab2-VKGRP = 'ARP' OR

IT_TAB2-RPRCTR = '0000006001' AND IT_TAB2-VKGRP = 'ARS'.

LV_aSALE07 = LV_aSALE07 + it_tab2-HSL.

MOVE-CORRESPONDING IT_TAB2 TO IT_SALE01.

IT_SALE01-KEY = '07'.

append it_sale01.

ENDIF.

IF ( it_tab2-RPRCTR NE '0000006003' OR it_tab2-VKGRP NE 'RR' ) AND

( it_tab2-RPRCTR NE '0000006003' OR it_tab2-VKGRP NE 'RRG' ) AND

( it_tab2-RPRCTR NE '0000006001' OR it_tab2-VKGRP NE 'ARG' ) AND

( it_tab2-RPRCTR NE '0000006001' OR it_tab2-VKGRP NE 'AGB' ) AND

( it_tab2-RPRCTR NE '0000006004' OR it_tab2-VKGRP NE 'GE' ) AND

( it_tab2-RPRCTR NE '0000006004' OR it_tab2-VKGRP NE 'GEB' ) AND

( it_tab2-RPRCTR NE '0000006004' OR it_tab2-VKGRP NE 'GGA' ) AND

( it_tab2-RPRCTR NE '0000006003' OR it_tab2-VKGRP NE 'R4B' ) AND

( it_tab2-RPRCTR NE '0000006003' OR it_tab2-VKGRP NE 'RRT' ) AND

( it_tab2-RPRCTR NE '0000006003' OR it_tab2-VKGRP NE 'RRC' ) AND

( it_tab2-RPRCTR NE '0000006003' OR it_tab2-VKGRP NE 'TDR' ) AND

( it_tab2-RPRCTR NE '0000006003' OR it_tab2-VKGRP NE 'RRY' ) AND

( it_tab2-RPRCTR NE '0000006004' OR it_tab2-VKGRP NE 'GSA' ) AND

( it_tab2-RPRCTR NE '0000006004' OR it_tab2-VKGRP NE 'GSP' ) AND

( it_tab2-RPRCTR NE '0000006004' OR it_tab2-VKGRP NE 'GES' ) AND

( it_tab2-RPRCTR NE '0000006001' OR it_tab2-VKGRP NE 'ARA' ) AND

( it_tab2-RPRCTR NE '0000006001' OR it_tab2-VKGRP NE 'AAS' ) AND

( IT_TAB2-RPRCTR NE '0000006001' OR IT_TAB2-VKGRP NE 'TMG' ) AND

( it_tab2-RPRCTR NE '0000006001' OR it_tab2-VKGRP NE 'TMS' ) AND

( it_tab2-RPRCTR NE '0000006001' OR it_tab2-VKGRP NE 'ARP' ) AND

( IT_TAB2-RPRCTR NE '0000006001' OR IT_TAB2-VKGRP NE 'ARS' ) AND

( it_tab2-RPRCTR NE '0000006001' OR it_tab2-VKGRP NE 'ARR' ) AND

( it_tab2-RPRCTR NE '0000006001' OR it_tab2-VKGRP NE 'ARE' ) AND

( it_tab2-RPRCTR NE '0000006001' OR it_tab2-VKGRP NE 'TMR' ) AND

( it_tab2-RPRCTR NE '0000006001' OR it_tab2-VKGRP NE 'TUR' ) AND

( it_tab2-RPRCTR NE '0000006001' OR it_tab2-VKGRP NE 'ATR' ) AND

( it_tab2-RPRCTR NE '0000006001' OR it_tab2-VKGRP NE 'TMK' ) AND

( it_tab2-RPRCTR NE '0000006002' ) AND

( IT_TAB2-RPRCTR NE '0000006101' ) AND

( IT_TAB2-RPRCTR NE '0000006102' ) AND

( IT_TAB2-RPRCTR NE '0000006103' ) AND

( it_tab2-RPRCTR NE '0000006002' ) AND

( IT_TAB2-RPRCTR NE '0000006101' ).

LV_aSALE08 = LV_aSALE08 + it_tab2-HSL.

MOVE-CORRESPONDING IT_TAB2 TO IT_SALE01.

IT_SALE01-KEY = '08'.

append it_sale01.

ENDIF.

IF it_tab2-RPRCTR = '0000006001' AND it_tab2-VKGRP = 'DEV'.

LV_aSALE09 = LV_aSALE09 + it_tab2-HSL.

MOVE-CORRESPONDING IT_TAB2 TO IT_SALE01.

IT_SALE01-KEY = '09'.

append it_sale01.

ENDIF.

*ENDIF.

*ENDIF.

IF IT_TAB2-MATNR EQ 'OVERHAUL' OR

IT_TAB2-MATNR EQ 'SERVICES' OR

IT_TAB2-MATNR EQ 'SPARES' OR

IT_TAB2-MATNR EQ 'REPAIR' OR

IT_TAB2-MATNR EQ 'WORK-PARTY' OR

IT_TAB2-MATNR EQ 'TEST' OR

IT_TAB2-MATNR EQ 'INVESTIGATION'.

IF it_tab2-RPRCTR = '0000006001' AND it_tab2-VKGRP = 'ARR' OR

it_tab2-RPRCTR = '0000006001' AND it_tab2-VKGRP = 'ARE' OR

it_tab2-RPRCTR = '0000006001' AND it_tab2-VKGRP = 'TMR' OR

it_tab2-RPRCTR = '0000006001' AND it_tab2-VKGRP = 'TUR' OR

it_tab2-RPRCTR = '0000006001' AND it_tab2-VKGRP = 'ATR' OR

it_tab2-RPRCTR = '0000006001' AND it_tab2-VKGRP = 'TMK'.

LV_aSALE11 = LV_aSALE11 + it_tab2-HSL.

MOVE-CORRESPONDING IT_TAB2 TO IT_SALE01.

IT_SALE01-KEY = '11'.

append it_sale01.

ENDIF.

ENDIF.

IF it_tab2-RPRCTR = '0000006002'.

LV_aSALE12 = LV_aSALE12 + it_tab2-HSL.

MOVE-CORRESPONDING IT_TAB2 TO IT_SALE01.

IT_SALE01-KEY = '12'.

append it_sale01.

ENDIF.

IF IT_TAB2-RPRCTR = '0000006101'.

LV_aSALE13 = LV_aSALE13 + it_tab2-HSL.

MOVE-CORRESPONDING IT_TAB2 TO IT_SALE01.

IT_SALE01-KEY = '13'.

append it_sale01.

ENDIF.

IF IT_TAB2-RPRCTR = '0000006102' OR

IT_TAB2-RPRCTR = '0000006103'.

LV_aSALE14 = LV_aSALE14 + it_tab2-HSL.

MOVE-CORRESPONDING IT_TAB2 TO IT_SALE01.

IT_SALE01-KEY = '14'.

append it_sale01.

ENDIF.

IF it_tab2-rprctr = '0000006005'.

LV_aSALE15 = LV_aSALE15 + it_tab2-HSL.

MOVE-CORRESPONDING IT_TAB2 TO IT_SALE01.

IT_SALE01-KEY = '15'.

append it_sale01.

ENDIF.

IF it_tab2-rprctr = '0000006006'.

LV_aSALE16 = LV_aSALE16 + it_tab2-HSL.

MOVE-CORRESPONDING IT_TAB2 TO IT_SALE01.

IT_SALE01-KEY = '16'.

append it_sale01.

ENDIF.

ENDLOOP.

LOOP AT it_tab3.

IF it_tab3-RPRCTR = '0000006003' AND it_tab3-VKGRP = 'RR' OR

it_tab3-RPRCTR = '0000006003' AND it_tab3-VKGRP = 'RRG' .

LV_acsal01 = LV_acsal01 + it_tab3-HSL.

MOVE-CORRESPONDING IT_CMRO TO IT_DCSAL.

IT_DCSAL-KEY = '01'.

append it_DCSAL.

ENDIF.

IF it_tab3-RPRCTR = '0000006001' AND it_tab3-VKGRP = 'ARG' OR

it_tab3-RPRCTR = '0000006001' AND it_tab3-VKGRP = 'AGB'.

LV_acsal02 = LV_acsal02 + it_tab3-HSL.

MOVE-CORRESPONDING IT_CMRO TO IT_DCSAL.

IT_DCSAL-KEY = '02'.

append it_DCSAL.

ENDIF.

IF it_tab3-RPRCTR = '0000006004' AND it_tab3-VKGRP = 'GE' OR

it_tab3-RPRCTR = '0000006004' AND it_tab3-VKGRP = 'GEB' OR

it_tab3-RPRCTR = '0000006004' AND it_tab3-VKGRP = 'GGA'.

LV_acsal03 = LV_acsal03 + it_tab3-HSL.

MOVE-CORRESPONDING IT_CMRO TO IT_DCSAL.

IT_DCSAL-KEY = '03'.

append it_DCSAL.

ENDIF.

IF it_tab3-RPRCTR = '0000006003' AND it_tab3-VKGRP = 'R4B' OR

it_tab3-RPRCTR = '0000006003' AND it_tab3-VKGRP = 'RRT' OR

IT_TAB3-RPRCTR = '0000006003' AND IT_TAB3-VKGRP = 'RRY' OR

IT_TAB3-RPRCTR = '0000006003' AND IT_TAB3-VKGRP = 'RRC' OR

IT_TAB3-RPRCTR = '0000006003' AND IT_TAB3-VKGRP = 'TDR'.

LV_acsal04 = LV_acsal04 + it_tab3-HSL.

MOVE-CORRESPONDING IT_CMRO TO IT_DCSAL.

IT_DCSAL-KEY = '04'.

append it_DCSAL.

ENDIF.

IF it_tab3-RPRCTR = '0000006004' AND it_tab3-VKGRP = 'GSA' OR

it_tab3-RPRCTR = '0000006004' AND it_tab3-VKGRP = 'GSP' OR

it_tab3-RPRCTR = '0000006004' AND it_tab3-VKGRP = 'GES'.

LV_acsal05 = LV_acsal05 + it_tab3-HSL.

MOVE-CORRESPONDING IT_CMRO TO IT_DCSAL.

IT_DCSAL-KEY = '05'.

append it_DCSAL.

ENDIF.

IF it_tab3-RPRCTR = '0000006001' AND it_tab3-VKGRP = 'ARA' OR

it_tab3-RPRCTR = '0000006001' AND it_tab3-VKGRP = 'AAS' OR

IT_TAB3-RPRCTR = '0000006001' AND IT_TAB3-VKGRP = 'TMG'.

LV_acsal06 = LV_acsal06 + it_tab3-HSL.

MOVE-CORRESPONDING IT_CMRO TO IT_DCSAL.

IT_DCSAL-KEY = '06'.

append it_DCSAL.

ENDIF.

IF it_tab3-RPRCTR = '0000006001' AND it_tab3-VKGRP = 'TMS' OR

it_tab3-RPRCTR = '0000006001' AND it_tab3-VKGRP = 'ARP' OR

IT_TAB3-RPRCTR = '0000006001' AND IT_TAB3-VKGRP = 'ARS'.

LV_acsal07 = LV_acsal07 + it_tab3-HSL.

MOVE-CORRESPONDING IT_CMRO TO IT_DCSAL.

IT_DCSAL-KEY = '07'.

append it_DCSAL.

ENDIF.

IF ( it_tab2-RPRCTR NE '0000006003' OR it_tab2-VKGRP NE 'RR' ) AND

( it_tab2-RPRCTR NE '0000006003' OR it_tab2-VKGRP NE 'RRG' ) AND

( it_tab2-RPRCTR NE '0000006001' OR it_tab2-VKGRP NE 'ARG' ) AND

( it_tab2-RPRCTR NE '0000006001' OR it_tab2-VKGRP NE 'AGB' ) AND

( it_tab2-RPRCTR NE '0000006004' OR it_tab2-VKGRP NE 'GE' ) AND

( it_tab2-RPRCTR NE '0000006004' OR it_tab2-VKGRP NE 'GEB' ) AND

( it_tab2-RPRCTR NE '0000006004' OR it_tab2-VKGRP NE 'GGA' ) AND

( it_tab2-RPRCTR NE '0000006003' OR it_tab2-VKGRP NE 'R4B' ) AND

( it_tab2-RPRCTR NE '0000006003' OR it_tab2-VKGRP NE 'RRT' ) AND

( it_tab2-RPRCTR NE '0000006003' OR it_tab2-VKGRP NE 'RRC' ) AND

( it_tab2-RPRCTR NE '0000006003' OR it_tab2-VKGRP NE 'TDR' ) AND

( it_tab2-RPRCTR NE '0000006003' OR it_tab2-VKGRP NE 'RRY' ) AND

( it_tab2-RPRCTR NE '0000006004' OR it_tab2-VKGRP NE 'GSA' ) AND

( it_tab2-RPRCTR NE '0000006004' OR it_tab2-VKGRP NE 'GSP' ) AND

( it_tab2-RPRCTR NE '0000006004' OR it_tab2-VKGRP NE 'GES' ) AND

( it_tab2-RPRCTR NE '0000006001' OR it_tab2-VKGRP NE 'ARA' ) AND

( it_tab2-RPRCTR NE '0000006001' OR it_tab2-VKGRP NE 'AAS' ) AND

( IT_TAB2-RPRCTR NE '0000006001' OR IT_TAB2-VKGRP NE 'TMG' ) AND

( it_tab2-RPRCTR NE '0000006001' OR it_tab2-VKGRP NE 'TMS' ) AND

( it_tab2-RPRCTR NE '0000006001' OR it_tab2-VKGRP NE 'ARP' ) AND

( IT_TAB2-RPRCTR NE '0000006001' OR IT_TAB2-VKGRP NE 'ARS' ) AND

( it_tab2-RPRCTR NE '0000006001' OR it_tab2-VKGRP NE 'ARR' ) AND

( it_tab2-RPRCTR NE '0000006001' OR it_tab2-VKGRP NE 'ARE' ) AND

( it_tab2-RPRCTR NE '0000006001' OR it_tab2-VKGRP NE 'TMR' ) AND

( it_tab2-RPRCTR NE '0000006001' OR it_tab2-VKGRP NE 'TUR' ) AND

( it_tab2-RPRCTR NE '0000006001' OR it_tab2-VKGRP NE 'ATR' ) AND

( it_tab2-RPRCTR NE '0000006001' OR it_tab2-VKGRP NE 'TMK' ) AND

( it_tab2-RPRCTR NE '0000006002' ) AND

( IT_TAB2-RPRCTR NE '0000006101' ) AND

( IT_TAB2-RPRCTR NE '0000006102' ) AND

( IT_TAB2-RPRCTR NE '0000006103' ) AND

( it_tab2-RPRCTR NE '0000006002' ) AND

( IT_TAB2-RPRCTR NE '0000006101' ).

LV_acsal08 = LV_acsal08 + it_tab3-HSL.

MOVE-CORRESPONDING IT_CMRO TO IT_DCSAL.

IT_DCSAL-KEY = '08'.

append it_DCSAL.

ENDIF.

IF it_tab3-RPRCTR = '0000006001' AND it_tab3-VKGRP = 'DEV'.

LV_acsal09 = LV_acsal09 + it_tab3-HSL.

MOVE-CORRESPONDING IT_CMRO TO IT_DCSAL.

IT_DCSAL-KEY = '09'.

append it_DCSAL.

ENDIF.

ENDLOOP.

SORT it_TAB2 BY ps_psp_pnr.

DELETE ADJACENT DUPLICATES FROM it_TAB2 COMPARING ps_psp_pnr.

DELETE it_tab1

WHERE ( RACCT <> '0000831201' AND

racct <> '0000831501' ).

LOOP AT it_TAB2.

MOVE-CORRESPONDING IT_TAB2 TO IT_CMRO.

LOOP AT it_tab1

WHERE ( PS_PSP_PNR = IT_CMRO-PS_PSP_PNR ) AND

( RACCT = '0000831201' OR

RACCT = '0000831501' ).

it_CMRO-csale = it_CMRO-csale + it_tab1-hsl.

ENDLOOP.

if NOT it_CMRO-csale is initial.

APPEND it_CMRO.

endif.

ENDLOOP.

LOOP AT IT_CMRO.

IF IT_CMRO-RPRCTR = '0000006001' AND IT_CMRO-VKGRP = 'ARR' OR

IT_CMRO-RPRCTR = '0000006001' AND IT_CMRO-VKGRP = 'ARE' OR

IT_CMRO-RPRCTR = '0000006001' AND IT_CMRO-VKGRP = 'TMR' OR

IT_CMRO-RPRCTR = '0000006001' AND IT_CMRO-VKGRP = 'ATR' OR

IT_CMRO-RPRCTR = '0000006001' AND IT_CMRO-VKGRP = 'TMK' OR

IT_CMRO-RPRCTR = '0000006001' AND IT_CMRO-VKGRP = 'TUR'.

LV_ACSAL11 = LV_ACSAL11 + IT_CMRO-CSALE.

MOVE-CORRESPONDING IT_CMRO TO IT_DCSAL.

IT_DCSAL-KEY = '11'.

append it_DCSAL.

ENDIF.

IF IT_CMRO-RPRCTR = '0000006002'.

  • AND IT_CMRO-VKGRP = 'AGT' OR

  • IT_CMRO-RPRCTR = '0000006002' AND IT_CMRO-VKGRP = 'ALO' OR

  • IT_CMRO-RPRCTR = '0000006002' AND IT_CMRO-VKGRP = 'ART' OR

  • IT_CMRO-RPRCTR = '0000006002' AND IT_CMRO-VKGRP = 'ATR' OR

  • IT_CMRO-RPRCTR = '0000006002' AND IT_CMRO-VKGRP = 'F30' OR

  • IT_CMRO-RPRCTR = '0000006002' AND IT_CMRO-VKGRP = 'IAH' OR

  • IT_CMRO-RPRCTR = '0000006002' AND IT_CMRO-VKGRP = 'M13' OR

  • IT_CMRO-RPRCTR = '0000006002' AND IT_CMRO-VKGRP = 'PSO' OR

  • IT_CMRO-RPRCTR = '0000006002' AND IT_CMRO-VKGRP = 'PUM' OR

  • IT_CMRO-RPRCTR = '0000006002' AND IT_CMRO-VKGRP = 'RVK' OR

  • IT_CMRO-RPRCTR = '0000006002' AND IT_CMRO-VKGRP = 'TMR'.

*

LV_ACSAL12 = LV_ACSAL12 + IT_CMRO-CSALE.

MOVE-CORRESPONDING IT_CMRO TO IT_DCSAL.

IT_DCSAL-KEY = '12'.

append it_DCSAL.

ENDIF.

IF IT_CMRO-RPRCTR = '0000006101'.

LV_ACSAL13 = LV_ACSAL13 + IT_CMRO-CSALE.

MOVE-CORRESPONDING IT_CMRO TO IT_DCSAL.

IT_DCSAL-KEY = '13'.

append it_DCSAL.

ENDIF.

IF IT_CMRO-RPRCTR = '0000006102' OR

IT_CMRO-RPRCTR = '0000006103'.

LV_ACSAL14 = LV_ACSAL14 + IT_CMRO-CSALE.

MOVE-CORRESPONDING IT_CMRO TO IT_DCSAL.

IT_DCSAL-KEY = '14'.

append it_DCSAL.

ENDIF.

IF IT_CMRO-rprctr = '0000006005'.

LV_ACSAL15 = LV_ACSAL15 + IT_CMRO-CSALE.

MOVE-CORRESPONDING IT_CMRO TO IT_DCSAL.

IT_DCSAL-KEY = '15'.

append it_DCSAL.

ENDIF.

IF IT_CMRO-rprctr = '0000006006'.

LV_ACSAL16 = LV_ACSAL16 + IT_CMRO-CSALE.

MOVE-CORRESPONDING IT_CMRO TO IT_DCSAL.

IT_DCSAL-KEY = '16'.

append it_DCSAL.

ENDIF.

ENDLOOP.

SELECT * FROM ZBUDGET INTO TABLE it_GETB.

LOOP AT it_getb.

IF it_getb-icode = 'B001' AND it_getb-ryear = ryear

AND it_getb-poper = poper.

LV_BSALE01 = LV_BSALE01 + IT_GETB-HSL.

ENDIF.

IF it_getb-icode = 'B002' AND it_getb-ryear = ryear

AND it_getb-poper = poper.

LV_BSALE02 = LV_BSALE02 + IT_GETB-HSL.

ENDIF.

IF it_getb-icode = 'B003' AND it_getb-ryear = ryear

AND it_getb-poper = poper.

LV_BSALE03 = LV_BSALE03 + IT_GETB-HSL.

ENDIF.

IF it_getb-icode = 'B004' AND it_getb-ryear = ryear

AND it_getb-poper = poper.

LV_BSALE04 = LV_BSALE04 + IT_GETB-HSL.

ENDIF.

IF it_getb-icode = 'B005' AND it_getb-ryear = ryear

AND it_getb-poper = poper.

LV_BSALE05 = LV_BSALE05 + IT_GETB-HSL.

ENDIF.

IF it_getb-icode = 'B006' AND it_getb-ryear = ryear

AND it_getb-poper = poper.

LV_BSALE06 = LV_BSALE06 + IT_GETB-HSL.

ENDIF.

IF it_getb-icode = 'B007' AND it_getb-ryear = ryear

AND it_getb-poper = poper.

LV_BSALE07 = LV_BSALE07 + IT_GETB-HSL.

ENDIF.

IF it_getb-icode = 'B008' AND it_getb-ryear = ryear

AND it_getb-poper = poper.

LV_BSALE08 = LV_BSALE08 + IT_GETB-HSL.

ENDIF.

IF it_getb-icode = 'B009' AND it_getb-ryear = ryear

AND it_getb-poper = poper.

LV_BSALE09 = LV_BSALE09 + IT_GETB-HSL.

ENDIF.

IF it_getb-icode = 'B010' AND it_getb-ryear = ryear

AND it_getb-poper = poper.

LV_BSALE11 = LV_BSALE11 + IT_GETB-HSL.

ENDIF.

IF it_getb-icode = 'B011' AND it_getb-ryear = ryear

AND it_getb-poper = poper.

lv_bsale12 = lv_bsale12 + it_getb-hsl.

ENDIF.

IF it_getb-icode = 'B012' AND it_getb-ryear = ryear

AND it_getb-poper = poper.

lv_bsale13 = lv_bsale13 + it_getb-hsl.

ENDIF.

IF it_getb-icode = 'B013' AND it_getb-ryear = ryear

AND it_getb-poper = poper.

lv_bsale14 = lv_bsale14 + it_getb-hsl.

ENDIF.

IF it_getb-icode = 'B014' AND it_getb-ryear = ryear

AND it_getb-poper = poper.

lv_bsale15 = lv_bsale15 + it_getb-hsl.

ENDIF.

IF it_getb-icode = 'B015' AND it_getb-ryear = ryear

AND it_getb-poper = poper.

lv_bsale16 = lv_bsale16 + it_getb-hsl.

ENDIF.

IF it_getb-icode = 'B001' AND it_getb-ryear = ryear

AND it_getb-poper = poper.

LV_BCSAL01 = LV_BCSAL01 + IT_GETB-CSALE.

ENDIF.

IF it_getb-icode = 'B002' AND it_getb-ryear = ryear

AND it_getb-poper = poper.

LV_BCSAL02 = LV_BCSAL02 + IT_GETB-CSALE.

ENDIF.

IF it_getb-icode = 'B003' AND it_getb-ryear = ryear

AND it_getb-poper = poper.

LV_BCSAL03 = LV_BSALE03 + IT_GETB-CSALE.

ENDIF.

IF it_getb-icode = 'B004' AND it_getb-ryear = ryear

AND it_getb-poper = poper.

LV_BCSAL04 = LV_BCSAL04 + IT_GETB-CSALE.

ENDIF.

IF it_getb-icode = 'B005' AND it_getb-ryear = ryear

AND it_getb-poper = poper.

LV_BCSAL05 = LV_BCSAL05 + IT_GETB-CSALE.

ENDIF.

IF it_getb-icode = 'B006' AND it_getb-ryear = ryear

AND it_getb-poper = poper.

LV_BCSAL06 = LV_BCSAL06 + IT_GETB-CSALE.

ENDIF.

IF it_getb-icode = 'B007' AND it_getb-ryear = ryear

AND it_getb-poper = poper.

LV_BCSAL07 = LV_BCSAL07 + IT_GETB-CSALE.

ENDIF.

IF it_getb-icode = 'B008' AND it_getb-ryear = ryear

AND it_getb-poper = poper.

LV_BCSAL08 = LV_BCSAL08 + IT_GETB-CSALE.

ENDIF.

IF it_getb-icode = 'B009' AND it_getb-ryear = ryear

AND it_getb-poper = poper.

LV_BCSAL09 = LV_BCSAL09 + IT_GETB-CSALE.

ENDIF.

IF it_getb-icode = 'B010' AND it_getb-ryear = ryear

AND it_getb-poper = poper.

LV_BCSAL11 = LV_BCSAL11 + IT_GETB-CSALE.

ENDIF.

IF it_getb-icode = 'B011' AND it_getb-ryear = ryear

AND it_getb-poper = poper.

LV_BCSAL12 = LV_BCSAL12 + IT_GETB-CSALE.

ENDIF.

IF it_getb-icode = 'B012' AND it_getb-ryear = ryear

AND it_getb-poper = poper.

LV_BCSAL13 = LV_BCSAL13 + IT_GETB-CSALE.

ENDIF.

IF it_getb-icode = 'B013' AND it_getb-ryear = ryear

AND it_getb-poper = poper.

LV_BCSAL14 = LV_BCSAL14 + IT_GETB-CSALE.

ENDIF.

IF it_getb-icode = 'B014' AND it_getb-ryear = ryear

AND it_getb-poper = poper.

LV_BCSAL15 = LV_BCSAL15 + IT_GETB-CSALE.

ENDIF.

IF it_getb-icode = 'B015' AND it_getb-ryear = ryear

AND it_getb-poper = poper.

LV_BCSAL16 = LV_BCSAL16 + IT_GETB-CSALE.

ENDIF.

ENDLOOP.

lv_asale01 = abs( lv_asale01 ).

lv_asale02 = abs( lv_asale02 ).

lv_asale03 = abs( lv_asale03 ).

lv_asale04 = abs( lv_asale04 ).

lv_asale05 = abs( lv_asale05 ).

lv_asale06 = abs( lv_asale06 ).

lv_asale07 = abs( lv_asale07 ).

lv_asale08 = abs( lv_asale08 ).

lv_asale09 = abs( lv_asale09 ).

lv_asale11 = abs( lv_asale11 ).

lv_asale12 = abs( lv_asale12 ).

lv_asale13 = abs( lv_asale13 ).

lv_asale14 = abs( lv_asale14 ).

lv_asale15 = abs( lv_asale15 ).

lv_asale16 = abs( lv_asale16 ).

lv_acsal01 = abs( lv_acsal01 ).

lv_acsal02 = abs( lv_acsal02 ).

lv_acsal03 = abs( lv_acsal03 ).

lv_acsal04 = abs( lv_acsal04 ).

lv_acsal05 = abs( lv_acsal05 ).

lv_acsal06 = abs( lv_acsal06 ).

lv_acsal07 = abs( lv_acsal07 ).

lv_acsal08 = abs( lv_acsal08 ).

lv_acsal09 = abs( lv_acsal09 ).

lv_acsal11 = abs( lv_acsal11 ).

lv_acsal12 = abs( lv_acsal12 ).

lv_acsal13 = abs( lv_acsal13 ).

lv_acsal14 = abs( lv_acsal14 ).

lv_acsal15 = abs( lv_acsal15 ).

lv_acsal16 = abs( lv_acsal16 ).

lv_acont01 = abs( lv_asale01 - lv_acsal01 ).

lv_acont02 = abs( lv_asale02 - lv_acsal02 ).

lv_acont03 = abs( lv_asale03 - lv_acsal03 ).

lv_acont04 = abs( lv_asale04 - lv_acsal04 ).

lv_acont05 = abs( lv_asale05 - lv_acsal05 ).

lv_acont06 = abs( lv_asale06 - lv_acsal06 ).

lv_acont07 = abs( lv_asale07 - lv_acsal07 ).

lv_acont08 = abs( lv_asale08 - lv_acsal08 ).

lv_acont09 = abs( lv_asale09 - lv_acsal09 ).

lv_acont11 = abs( lv_asale11 - lv_acsal11 ).

lv_acont12 = abs( lv_asale12 - lv_acsal12 ).

lv_acont13 = abs( lv_asale13 - lv_acsal13 ).

lv_acont14 = abs( lv_asale14 - lv_acsal14 ).

lv_acont15 = abs( lv_asale15 - lv_acsal15 ).

lv_acont16 = abs( lv_asale16 - lv_acsal16 ).

IF LV_ASALE01 NE 0.

LV_aMARG01 = LV_aCONT01 / LV_aSALE01.

ENDIF.

IF LV_ASALE02 NE 0.

LV_aMARG02 = LV_aCONT02 / LV_aSALE02.

ENDIF.

IF LV_ASALE03 NE 0.

LV_aMARG03 = LV_aCONT03 / LV_aSALE03.

ENDIF.

IF LV_ASALE04 NE 0.

LV_aMARG04 = LV_aCONT04 / LV_aSALE04.

ENDIF.

IF LV_ASALE05 NE 0.

LV_aMARG05 = LV_aCONT05 / LV_aSALE05.

ENDIF.

IF LV_ASALE06 NE 0.

LV_aMARG06 = LV_aCONT06 / LV_aSALE06.

ENDIF.

IF LV_ASALE07 NE 0.

LV_aMARG07 = LV_aCONT07 / LV_aSALE07.

ENDIF.

IF LV_ASALE08 NE 0.

LV_aMARG08 = LV_aCONT08 / LV_aSALE08.

ENDIF.

IF LV_ASALE09 NE 0.

LV_AMARG09 = LV_ACONT09 / LV_ASALE09.

ENDIF.

IF LV_ASALE11 NE 0.

LV_aMARG11 = LV_aCONT11 / LV_aSALE11.

ENDIF.

IF LV_ASALE12 NE 0.

LV_aMARG12 = LV_aCONT12 / LV_aSALE12.

ENDIF.

IF LV_ASALE13 NE 0.

LV_aMARG13 = LV_aCONT13 / LV_aSALE13.

ENDIF.

IF LV_ASALE14 NE 0.

LV_aMARG14 = LV_aCONT14 / LV_aSALE14.

ENDIF.

IF LV_ASALE15 NE 0.

LV_aMARG15 = LV_aCONT15 / LV_aSALE15.

ENDIF.

IF LV_ASALE16 NE 0.

LV_aMARG16 = LV_aCONT16 / LV_aSALE16.

ENDIF.

lv_bsale01 = abs( lv_bsale01 ).

lv_bsale02 = abs( lv_bsale02 ).

lv_bsale03 = abs( lv_bsale03 ).

lv_bsale04 = abs( lv_bsale04 ).

lv_bsale05 = abs( lv_bsale05 ).

lv_bsale06 = abs( lv_bsale06 ).

lv_bsale07 = abs( lv_bsale07 ).

lv_bsale08 = abs( lv_bsale08 ).

lv_bsale09 = abs( lv_bsale09 ).

lv_bsale11 = abs( lv_bsale11 ).

lv_bsale12 = abs( lv_bsale12 ).

lv_bsale13 = abs( lv_bsale13 ).

lv_bsale14 = abs( lv_bsale14 ).

lv_bsale15 = abs( lv_bsale15 ).

lv_bsale16 = abs( lv_bsale16 ).

lv_bcsal01 = abs( lv_bcsal01 ).

lv_bcsal02 = abs( lv_bcsal02 ).

lv_bcsal03 = abs( lv_bcsal03 ).

lv_bcsal04 = abs( lv_bcsal04 ).

lv_bcsal05 = abs( lv_bcsal05 ).

lv_bcsal06 = abs( lv_bcsal06 ).

lv_bcsal07 = abs( lv_bcsal07 ).

lv_bcsal08 = abs( lv_bcsal08 ).

lv_bcsal09 = abs( lv_bcsal09 ).

lv_bcsal11 = abs( lv_bcsal11 ).

lv_bcsal12 = abs( lv_bcsal12 ).

lv_bcsal13 = abs( lv_bcsal13 ).

lv_bcsal14 = abs( lv_bcsal14 ).

lv_bcsal15 = abs( lv_bcsal15 ).

lv_bcsal16 = abs( lv_bcsal16 ).

lv_bcont01 = abs( lv_bsale01 - lv_bcsal01 ).

lv_bcont02 = abs( lv_bsale02 - lv_bcsal02 ).

lv_bcont03 = abs( lv_bsale03 - lv_bcsal03 ).

lv_bcont04 = abs( lv_bsale04 - lv_bcsal04 ).

lv_bcont05 = abs( lv_bsale05 - lv_bcsal05 ).

lv_bcont06 = abs( lv_bsale06 - lv_bcsal06 ).

lv_bcont07 = abs( lv_bsale07 - lv_bcsal07 ).

lv_bcont08 = abs( lv_bsale08 - lv_bcsal08 ).

lv_bcont09 = abs( lv_bsale09 - lv_bcsal09 ).

lv_bcont11 = abs( lv_bsale11 - lv_bcsal11 ).

lv_bcont12 = abs( lv_bsale12 - lv_bcsal12 ).

lv_bcont13 = abs( lv_bsale13 - lv_bcsal13 ).

lv_bcont14 = abs( lv_bsale14 - lv_bcsal14 ).

lv_bcont15 = abs( lv_bsale15 - lv_bcsal15 ).

lv_bcont16 = abs( lv_bsale16 - lv_bcsal16 ).

IF LV_bSALE01 NE 0.

LV_bMARG01 = LV_bCONT01 / LV_bSALE01.

ENDIF.

IF LV_bSALE02 NE 0.

LV_bMARG02 = LV_bCONT02 / LV_bSALE02.

ENDIF.

IF LV_bSALE03 NE 0.

LV_bMARG03 = LV_bCONT03 / LV_bSALE03.

ENDIF.

IF LV_bSALE04 NE 0.

LV_bMARG04 = LV_bCONT04 / LV_bSALE04.

ENDIF.

IF LV_bSALE05 NE 0.

LV_bMARG05 = LV_bCONT05 / LV_bSALE05.

ENDIF.

IF LV_bSALE06 NE 0.

LV_bMARG06 = LV_bCONT06 / LV_bSALE06.

ENDIF.

IF LV_bSALE07 NE 0.

LV_bMARG07 = LV_bCONT07 / LV_bSALE07.

ENDIF.

IF LV_bSALE08 NE 0.

LV_bMARG08 = LV_bCONT08 / LV_bSALE08.

ENDIF.

IF LV_bSALE09 NE 0.

LV_bMARG09 = LV_bCONT09 / LV_bSALE09.

ENDIF.

IF LV_bSALE11 NE 0.

LV_bMARG11 = LV_bCONT11 / LV_bSALE11.

ENDIF.

IF LV_bSALE12 NE 0.

LV_bMARG12 = LV_bCONT12 / LV_bSALE12.

ENDIF.

IF LV_bSALE13 NE 0.

LV_bMARG13 = LV_bCONT13 / LV_bSALE13.

ENDIF.

IF LV_bSALE14 NE 0.

LV_bMARG14 = LV_bCONT14 / LV_bSALE14.

ENDIF.

IF LV_bSALE15 NE 0.

LV_bMARG15 = LV_bCONT15 / LV_bSALE15.

ENDIF.

IF LV_bSALE16 NE 0.

LV_bMARG16 = LV_bCONT16 / LV_bSALE16.

ENDIF.

lv_vsale01 = abs( lv_asale01 - lv_bsale01 ).

lv_vsale02 = abs( lv_asale02 - lv_bsale02 ).

lv_vsale03 = abs( lv_asale03 - lv_bsale03 ).

lv_vsale04 = abs( lv_asale04 - lv_bsale04 ).

lv_vsale05 = abs( lv_asale05 - lv_bsale05 ).

lv_vsale06 = abs( lv_asale06 - lv_bsale06 ).

lv_vsale07 = abs( lv_asale07 - lv_bsale07 ).

lv_vsale08 = abs( lv_asale08 - lv_bsale08 ).

lv_vsale09 = abs( lv_asale09 - lv_bsale09 ).

lv_vsale11 = abs( lv_asale11 - lv_bsale11 ).

lv_vsale12 = abs( lv_asale12 - lv_bsale12 ).

lv_vsale13 = abs( lv_asale13 - lv_bsale13 ).

lv_vsale14 = abs( lv_asale14 - lv_bsale14 ).

lv_vsale15 = abs( lv_asale15 - lv_bsale15 ).

lv_vsale16 = abs( lv_asale16 - lv_bsale16 ).

lv_vcsal01 = abs( lv_acsal01 - lv_bcsal01 ).

lv_vcsal02 = abs( lv_acsal02 - lv_bcsal02 ).

lv_vcsal03 = abs( lv_acsal03 - lv_bcsal03 ).

lv_vcsal04 = abs( lv_acsal04 - lv_bcsal04 ).

lv_vcsal05 = abs( lv_acsal05 - lv_bcsal05 ).

lv_vcsal06 = abs( lv_acsal06 - lv_bcsal06 ).

lv_vcsal07 = abs( lv_acsal07 - lv_bcsal07 ).

lv_vcsal08 = abs( lv_acsal08 - lv_bcsal08 ).

lv_vcsal09 = abs( lv_acsal09 - lv_bcsal09 ).

lv_vcsal11 = abs( lv_acsal11 - lv_bcsal11 ).

lv_vcsal12 = abs( lv_acsal12 - lv_bcsal12 ).

lv_vcsal13 = abs( lv_acsal13 - lv_bcsal13 ).

lv_vcsal14 = abs( lv_acsal14 - lv_bcsal14 ).

lv_vcsal15 = abs( lv_acsal15 - lv_bcsal15 ).

lv_vcsal16 = abs( lv_acsal16 - lv_bcsal16 ).

IF LV_ASALE01 NE 0.

LV_VPSAL01 = ( ( LV_ASALE01 - LV_BSALE01 ) / ( LV_ASALE01 ) ) * 100.

ENDIF.

IF LV_ASALE02 NE 0.

LV_VPSAL02 = ( ( LV_ASALE02 - LV_BSALE02 ) / ( LV_ASALE02 ) ) * 100.

ENDIF.

IF LV_ASALE03 NE 0.

LV_VPSAL03 = ( ( LV_ASALE03 - LV_BSALE03 ) / ( LV_ASALE03 ) ) * 100.

ENDIF.

IF LV_ASALE04 NE 0.

LV_VPSAL04 = ( ( LV_ASALE04 - LV_BSALE04 ) / ( LV_ASALE04 ) ) * 100.

ENDIF.

IF LV_ASALE05 NE 0.

LV_VPSAL05 = ( ( LV_ASALE05 - LV_BSALE05 ) / ( LV_ASALE05 ) ) * 100.

ENDIF.

IF LV_ASALE06 NE 0.

LV_VPSAL06 = ( ( LV_ASALE06 - LV_BSALE06 ) / ( LV_ASALE06 ) ) * 100.

ENDIF.

IF LV_ASALE07 NE 0.

LV_VPSAL07 = ( ( LV_ASALE07 - LV_BSALE07 ) / ( LV_ASALE07 ) ) * 100.

ENDIF.

IF LV_ASALE08 NE 0.

LV_VPSAL08 = ( ( LV_ASALE08 - LV_BSALE08 ) / ( LV_ASALE08 ) ) * 100.

ENDIF.

IF LV_ASALE09 NE 0.

LV_VPSAL09 = ( ( LV_ASALE09 - LV_BSALE09 ) / ( LV_ASALE09 ) ) * 100.

ENDIF.

IF LV_ASALE11 NE 0.

LV_VPSAL11 = ( ( LV_ASALE11 - LV_BSALE11 ) / ( LV_ASALE11 ) ) * 100.

ENDIF.

IF LV_ASALE12 NE 0.

LV_VPSAL12 = ( ( LV_ASALE12 - LV_BSALE12 ) / ( LV_ASALE12 ) ) * 100.

ENDIF.

IF LV_ASALE13 NE 0.

LV_VPSAL13 = ( ( LV_ASALE13 - LV_BSALE13 ) / ( LV_ASALE13 ) ) * 100.

ENDIF.

IF LV_ASALE14 NE 0.

LV_VPSAL14 = ( ( LV_ASALE14 - LV_BSALE14 ) / ( LV_ASALE14 ) ) * 100.

ENDIF.

IF LV_ASALE15 NE 0.

LV_VPSAL15 = ( ( LV_ASALE15 - LV_BSALE15 ) / ( LV_ASALE15 ) ) * 100.

ENDIF.

IF LV_ASALE16 NE 0.

LV_VPSAL16 = ( ( LV_ASALE16 - LV_BSALE16 ) / ( LV_ASALE16 ) ) * 100.

ENDIF.

IF LV_ACSAL01 NE 0.

LV_VPCOS01 = ( ( LV_ACSAL01 - LV_BCSAL01 ) / ( LV_ACSAL01 ) ) * 100.

ENDIF.

IF LV_ACSAL02 NE 0.

LV_VPCOS02 = ( ( LV_ACSAL02 - LV_BCSAL02 ) / ( LV_ACSAL02 ) ) * 100.

ENDIF.

IF LV_ACSAL03 NE 0.

LV_VPCOS03 = ( ( LV_ACSAL03 - LV_BCSAL03 ) / ( LV_ACSAL03 ) ) * 100.

ENDIF.

IF LV_ACSAL04 NE 0.

LV_VPCOS04 = ( ( LV_ACSAL04 - LV_BCSAL04 ) / ( LV_ACSAL04 ) ) * 100.

ENDIF.

IF LV_ACSAL05 NE 0.

LV_VPCOS05 = ( ( LV_ACSAL05 - LV_BCSAL05 ) / ( LV_ACSAL05 ) ) * 100.

ENDIF.

IF LV_ACSAL06 NE 0.

LV_VPCOS06 = ( ( LV_ACSAL06 - LV_BCSAL06 ) / ( LV_ACSAL06 ) ) * 100.

ENDIF.

IF LV_ACSAL07 NE 0.

LV_VPCOS07 = ( ( LV_ACSAL07 - LV_BCSAL07 ) / ( LV_ACSAL07 ) ) * 100.

ENDIF.

IF LV_ACSAL08 NE 0.

LV_VPCOS08 = ( ( LV_ACSAL08 - LV_BCSAL08 ) / ( LV_ACSAL08 ) ) * 100.

ENDIF.

IF LV_ACSAL09 NE 0.

LV_VPCOS09 = ( ( LV_ACSAL09 - LV_BCSAL09 ) / ( LV_ACSAL09 ) ) * 100.

ENDIF.

IF LV_ACSAL11 NE 0.

LV_VPCOS11 = ( ( LV_ACSAL11 - LV_BCSAL11 ) / ( LV_ACSAL11 ) ) * 100.

ENDIF.

IF LV_ACSAL12 NE 0.

LV_VPCOS12 = ( ( LV_ACSAL12 - LV_BCSAL12 ) / ( LV_ACSAL12 ) ) * 100.

ENDIF.

IF LV_ACSAL13 NE 0.

LV_VPCOS13 = ( ( LV_ACSAL13 - LV_BCSAL13 ) / ( LV_ACSAL13 ) ) * 100.

ENDIF.

IF LV_ACSAL14 NE 0.

LV_VPCOS14 = ( ( LV_ACSAL14 - LV_BCSAL14 ) / ( LV_ACSAL14 ) ) * 100.

ENDIF.

IF LV_ACSAL15 NE 0.

LV_VPCOS15 = ( ( LV_ACSAL15 - LV_BCSAL15 ) / ( LV_ACSAL15 ) ) * 100.

ENDIF.

IF LV_ACSAL16 NE 0.

LV_VPCOS16 = ( ( LV_ACSAL16 - LV_BCSAL16 ) / ( LV_ACSAL16 ) ) * 100.

ENDIF.

lv_asale10 = lv_asale01 + lv_asale02 + lv_asale03 +

lv_asale04 + lv_asale05 + lv_asale06 +

lv_asale07 + lv_asale08 + lv_asale09.

lv_asale17 = lv_asale11 + lv_asale12 + lv_asale13 +

lv_asale14 + lv_asale15 + lv_asale16.

lv_acsal10 = lv_acsal01 + lv_acsal02 + lv_acsal03 +

lv_acsal04 + lv_acsal05 + lv_acsal06 +

lv_acsal07 + lv_acsal08 + lv_acsal09.

lv_acsal17 = lv_acsal11 + lv_acsal12 + lv_acsal13 +

lv_acsal14 + lv_acsal15 + lv_acsal16.

lv_acont10 = lv_acont01 + lv_acont02 + lv_acont03 +

lv_acont04 + lv_acont05 + lv_acont06 +

lv_acont07 + lv_acont08 + lv_acont09.

lv_acont17 = lv_acont11 + lv_acont12 + lv_acont13 +

lv_acont14 + lv_acont15 + lv_acont16.

lv_amarg10 = lv_amarg01 + lv_amarg02 + lv_amarg03 +

lv_amarg04 + lv_amarg05 + lv_amarg06 +

lv_amarg07 + lv_amarg08 + lv_amarg09.

lv_amarg17 = lv_amarg11 + lv_amarg12 + lv_amarg13 +

lv_amarg14 + lv_amarg15 + lv_amarg16.

lv_bsale10 = lv_bsale01 + lv_bsale02 + lv_bsale03 +

lv_bsale04 + lv_bsale05 + lv_bsale06 +

lv_bsale07 + lv_bsale08 + lv_bsale09.

lv_bsale17 = lv_bsale11 + lv_bsale12 + lv_bsale13 +

lv_bsale14 + lv_bsale15 + lv_bsale16.

lv_bcsal10 = lv_bcsal01 + lv_bcsal02 + lv_bcsal03 +

lv_bcsal04 + lv_bcsal05 + lv_bcsal06 +

lv_bcsal07 + lv_bcsal08 + lv_bcsal09.

lv_bcsal17 = lv_bcsal11 + lv_bcsal12 + lv_bcsal13 +

lv_bcsal14 + lv_bcsal15 + lv_bcsal16.

lv_bcont10 = lv_bcont01 + lv_bcont02 + lv_bcont03 +

lv_bcont04 + lv_bcont05 + lv_bcont06 +

lv_bcont07 + lv_bcont08 + lv_bcont09.

lv_bcont17 = lv_bcont11 + lv_bcont12 + lv_bcont13 +

lv_bcont14 + lv_bcont15 + lv_bcont16.

lv_bmarg10 = lv_bmarg01 + lv_bmarg02 + lv_bmarg03 +

lv_bmarg04 + lv_bmarg05 + lv_bmarg06 +

lv_bmarg07 + lv_bmarg08 + lv_bmarg09.

lv_bmarg17 = lv_bmarg11 + lv_bmarg12 + lv_bmarg13 +

lv_bmarg14 + lv_bmarg15 + lv_bmarg16.

lv_vsale10 = lv_vsale01 + lv_vsale02 + lv_vsale03 +

lv_vsale04 + lv_vsale05 + lv_vsale06 +

lv_vsale07 + lv_vsale08 + lv_vsale09.

lv_vsale17 = lv_vsale11 + lv_vsale12 + lv_vsale13 +

lv_vsale14 + lv_vsale15 + lv_vsale16.

lv_vcsal10 = lv_vcsal01 + lv_vcsal02 + lv_vcsal03 +

lv_vcsal04 + lv_vcsal05 + lv_vcsal06 +

lv_vcsal07 + lv_vcsal08 + lv_vcsal09.

lv_vcsal17 = lv_vcsal11 + lv_vcsal12 + lv_vcsal13 +

lv_vcsal14 + lv_vcsal15 + lv_vcsal16.

lv_vpsal10 = lv_vpsal01 + lv_vpsal02 + lv_vpsal03 +

lv_vpsal04 + lv_vpsal05 + lv_vpsal06 +

lv_vpsal07 + lv_vpsal08 + lv_vpsal09.

lv_vpsal17 = lv_vpsal11 + lv_vpsal12 + lv_vpsal13 +

lv_vpsal14 + lv_vpsal15 + lv_vpsal16.

lv_vpcos10 = lv_vpcos01 + lv_vpcos02 + lv_vpcos03 +

lv_vpcos04 + lv_vpcos05 + lv_vpcos06 +

lv_vpcos07 + lv_vpcos08 + lv_vpcos09.

lv_vpcos17 = lv_vpcos11 + lv_vpcos12 + lv_vpcos13 +

lv_vpcos14 + lv_vpcos15 + lv_vpcos16.

lv_asale18 = lv_asale10 + lv_asale17.

lv_acsal18 = lv_acsal10 + lv_acsal17.

lv_acont18 = lv_acont10 + lv_acont17.

lv_amarg18 = lv_amarg10 + lv_amarg17.

lv_bsale18 = lv_bsale10 + lv_bsale17.

lv_bcsal18 = lv_bcsal10 + lv_bcsal17.

lv_bcont18 = lv_bcont10 + lv_bcont17.

lv_bmarg18 = lv_bmarg10 + lv_bmarg17.

lv_vsale18 = lv_vsale10 + lv_vsale17.

lv_vcsal18 = lv_vcsal10 + lv_vcsal17.

lv_vpsal18 = lv_vpsal10 + lv_vpsal17.

lv_vpcos18 = lv_vpcos10 + lv_vpcos17.

lv_asale10 = abs( lv_asale10 ).

lv_asale17 = abs( lv_asale17 ).

lv_asale18 = abs( lv_asale18 ).

lv_acsal10 = abs( lv_acsal10 ).

lv_acsal17 = abs( lv_acsal17 ).

lv_acsal18 = abs( lv_acsal18 ).

lv_acont10 = abs( lv_acont10 ).

lv_acont17 = abs( lv_acont17 ).

lv_acont18 = abs( lv_acont18 ).

lv_bsale10 = abs( lv_bsale10 ).

lv_bsale17 = abs( lv_bsale17 ).

lv_bsale18 = abs( lv_bsale18 ).

lv_bcsal10 = abs( lv_bcsal10 ).

lv_bcsal17 = abs( lv_bcsal17 ).

lv_bcsal18 = abs( lv_bcsal18 ).

lv_bcont10 = abs( lv_bcont10 ).

lv_bcont17 = abs( lv_bcont17 ).

lv_bcont18 = abs( lv_bcont18 ).

lv_vsale10 = abs( lv_vsale10 ).

lv_vsale17 = abs( lv_vsale17 ).

lv_vsale18 = abs( lv_vsale18 ).

lv_vcsal10 = abs( lv_vcsal10 ).

lv_vcsal17 = abs( lv_vcsal17 ).

lv_vcsal18 = abs( lv_vcsal18 ).

lv_pname01 = 'Gearboxes Sales RR'.

lv_pname02 = 'Gearboxes Sales TM'.

lv_pname03 = 'Gearboxes Sales GE'.

lv_pname04 = 'Spare Gear Sales RR'.

lv_pname05 = 'Spare Gear Sales GE'.

lv_pname06 = 'Eng & Gear Box Assy TM'.

lv_pname07 = 'Spare gear sales TM'.

lv_pname08 = 'Others'.

lv_pname09 = 'Others- TMF Development'.

LV_PNAME10 = 'SUB TOTAL'.

lv_pname11 = 'MRO Turbomeca'.

lv_pname12 = 'MRO Military Local'.

lv_pname13 = 'MRO Civil Local'.

lv_pname14 = 'MRO Civil & Military International'.

lv_pname15 = 'Sales of Spares'.

lv_pname16 = 'Service Station'.

lv_pname17 = 'SUB TOTAL'.

lv_pname18 = 'GRAND TOTAL'.

ENDFORM. "fm_get_data

&----


*& Form fm_actual_print

&----


  • text

----


FORM fm_print_actual.

data : lindx(2) type n.

data: w_field(20).

FIELD-SYMBOLS <fs> TYPE ANY.

DATA: PERIOD(8).

DATA: POP(3).

IF POPER EQ '001'.

POP = 'JAN'.

ELSEIF POPER EQ '002'.

POP = 'FEB'.

ELSEIF POPER EQ '003'.

POP = 'MAR'.

ELSEIF POPER EQ '004'.

POP = 'APR'.

ELSEIF POPER EQ '005'.

POP = 'MAY'.

ELSEIF POPER EQ '006'.

POP = 'JUN'.

ELSEIF POPER EQ '007'.

POP = 'JUL'.

ELSEIF POPER EQ '008'.

POP = 'AUG'.

ELSEIF POPER EQ '009'.

POP = 'SEP'.

ELSEIF POPER EQ '010'.

POP = 'OCT'.

ELSEIF POPER EQ '011'.

POP = 'NOV'.

ELSEIF POPER EQ '012'.

POP = 'DEC'.

ENDIF.

CONCATENATE: POP '-' RYEAR INTO PERIOD.

FORMAT COLOR COL_BACKGROUND.

FORMAT COLOR COL_GROUP.

WRITE: /01 SY-ULINE(227),

/01 SY-VLINE,35 SY-VLINE,59 'actual',

99 SY-VLINE,123 'budget',

163 SY-VLINE,187 'VARIANCE',

227 SY-VLINE,

/01 SY-VLINE,35 SY-VLINE,59 PERIOD,

99 SY-VLINE,123 PERIOD,

163 SY-VLINE,187 PERIOD,

227 SY-VLINE.

WRITE: /01 SY-ULINE(227),

/01 sy-vline,35 sy-vline,36 'sales',

51 SY-VLINE,52 'cost sales',

67 SY-VLINE,68 'contribution',

83 SY-VLINE,84 'margin%',

99 SY-VLINE,100 'sales',

115 SY-VLINE,116 'csale',

131 SY-VLINE,132 'contb',

147 SY-VLINE,148 'margn%',

163 SY-VLINE,164 'SALES',

179 SY-VLINE,180 'SALES%',

195 SY-VLINE,196 'CONB',

211 SY-VLINE,212 'CONB%',

227 SY-VLINE,/01 SY-ULINE(227).

WRITE: /01 SY-VLINE,02 'MANUFACTURING',

35 SY-VLINE,51 SY-VLINE,67 SY-VLINE,

83 SY-VLINE,99 SY-VLINE,115 SY-VLINE,

115 SY-VLINE,131 SY-VLINE,147 SY-VLINE,

163 SY-VLINE,179 SY-VLINE,195 SY-VLINE,

211 SY-VLINE,227 SY-VLINE.

FORMAT RESET.

DO 18 TIMES.

lindx = sy-index.

concatenate 'lv_pname' lindx into W_FIELD.

assign (w_field) to <FS>.

IF <FS> EQ 'MRO Turbomeca'.

WRITE: /01 SY-ULINE(227).

ENDIF.

IF <fs> EQ 'MRO Turbomeca'.

FORMAT COLOR COL_GROUP.

WRITE: /01 SY-VLINE,02 'M.R.O',

35 SY-VLINE,51 SY-VLINE,67 SY-VLINE,

83 SY-VLINE,99 SY-VLINE,115 SY-VLINE,

115 SY-VLINE,131 SY-VLINE,147 SY-VLINE,

163 SY-VLINE,179 SY-VLINE,195 SY-VLINE,

211 SY-VLINE,227 SY-VLINE.

FORMAT RESET.

ENDIF.

IF <FS> EQ 'SUB TOTAL' OR <FS> EQ 'GRAND TOTAL'.

WRITE: /01 sy-uline(227).

FORMAT COLOR COL_TOTAL.

WRITE : /01 SY-VLINE, 02 <FS>.

FORMAT RESET.

ELSE.

WRITE : /01 SY-VLINE, 02 <FS>.

ENDIF.

concatenate 'lv_asale' lindx into W_FIELD.

assign (w_field) to <FS>.

<fs> = abs( <fs> ).

WRITE : 35 SY-VLINE, 36 <FS>.

concatenate 'lv_acsal' lindx into W_FIELD.

assign (w_field) to <FS>.

write : 51 sy-vline, 52 <FS>.

concatenate 'lv_acont' lindx into W_FIELD.

assign (w_field) to <FS>.

<fs> = abs( <fs> ).

write : 67 sy-vline, 68 <FS>.

concatenate 'lv_amarg' lindx into W_FIELD.

assign (w_field) to <FS>.

<fs> = abs( <fs> ).

write : 83 sy-vline, 84 <FS>.

concatenate 'lv_bsale' lindx into W_FIELD.

assign (w_field) to <FS>.

<fs> = abs( <fs> ).

write : 99 sy-vline,100 <FS>.

concatenate 'lv_bcsal' lindx into W_FIELD.

assign (w_field) to <FS>.

<fs> = abs( <fs> ).

write : 115 sy-vline, 116 <FS>.

concatenate 'lv_bcont' lindx into W_FIELD.

assign (w_field) to <FS>.

<fs> = abs( <fs> ).

write : 131 sy-vline, 132 <FS>.

concatenate 'lv_bmarg' lindx into W_FIELD.

assign (w_field) to <FS>.

<fs> = abs( <fs> ).

write : 147 sy-vline, 148 <FS>.

concatenate 'lv_vsale' lindx into W_FIELD.

assign (w_field) to <FS>.

<fs> = abs( <fs> ).

write : 163 sy-vline,164 <FS>.

concatenate 'lv_vpsal' lindx into W_FIELD.

assign (w_field) to <FS>.

<fs> = abs( <fs> ).

write : 179 sy-vline, 180 <FS>.

concatenate 'lv_vcsal' lindx into W_FIELD.

assign (w_field) to <FS>.

<fs> = abs( <fs> ).

write : 195 sy-vline, 196 <FS>.

concatenate 'lv_vpcos' lindx into W_FIELD.

assign (w_field) to <FS>.

<fs> = abs( <fs> ).

write : 211 sy-vline, 212 <FS>,

227 SY-VLINE.

enddo.

WRITE: /01 SY-ULINE(227).

ENDFORM. "fm_print_actual

&----


*& Form FM_DETAIL_REPORT

&----


  • text

----


FORM FM_DETAIL_REPORT.

data : lindx(2) type n.

data: w_field(20).

DATA: KEY(2).

DATA: KEY1(2).

FIELD-SYMBOLS <fs> TYPE ANY.

DATA: C_FLAG ,

TAB1_COUNT TYPE I,

TAB1_TOTAL TYPE I.

IF SALE01 EQ 'X' .

KEY = '01'.

ELSEIF SALE02 EQ 'X' .

KEY = '02'.

ELSEIF SALE03 EQ 'X'.

KEY = '03'.

ELSEIF SALE04 EQ 'X'.

KEY = '04'.

ELSEIF SALE05 EQ 'X'.

KEY = '05'.

ELSEIF SALE06 EQ 'X'.

KEY = '06'.

ELSEIF SALE07 EQ 'X'.

KEY = '07'.

ELSEIF SALE08 EQ 'X'.

KEY = '08'.

ELSEIF SALE09 EQ 'X'.

KEY = '09'.

ELSEIF SALE11 EQ 'X'.

KEY = '11'.

ELSEIF SALE12 EQ 'X'.

KEY = '12'.

ELSEIF SALE13 EQ 'X'.

KEY = '13'.

ELSEIF SALE14 EQ 'X'.

KEY = '14'.

ELSEIF SALE15 EQ 'X'.

KEY = '15'.

ELSEIF SALE16 EQ 'X'.

KEY = '16'.

ENDIF.

IF CSAL01 EQ 'X' .

KEY1 = '01'.

ELSEIF CSAL02 EQ 'X' .

KEY1 = '02'.

ELSEIF CSAL03 EQ 'X'.

KEY1 = '03'.

ELSEIF CSAL04 EQ 'X'.

KEY1 = '04'.

ELSEIF CSAL05 EQ 'X'.

KEY1 = '05'.

ELSEIF CSAL06 EQ 'X'.

KEY1 = '06'.

ELSEIF CSAL07 EQ 'X'.

KEY1 = '07'.

ELSEIF CSAL08 EQ 'X'.

KEY1 = '08'.

ELSEIF CSAL09 EQ 'X'.

KEY1 = '09'.

ELSEIF CSAL11 EQ 'X'.

KEY1 = '11'.

ELSEIF CSAL12 EQ 'X'.

KEY1 = '12'.

ELSEIF CSAL13 EQ 'X'.

KEY1 = '13'.

ELSEIF CSAL14 EQ 'X'.

KEY1 = '14'.

ELSEIF CSAL15 EQ 'X'.

KEY1 = '15'.

ELSEIF CSAL16 EQ 'X'.

KEY1 = '16'.

ENDIF.

SORT IT_SALE01 BY KEY.

LOOP AT IT_SALE01 WHERE KEY EQ KEY.

lindx = IT_SALE01-KEY.

concatenate 'lv_PNAME' lindx into W_FIELD.

assign (w_field) to <FS>.

AT NEW KEY.

FORMAT COLOR 2 INTENSIFIED ON.

WRITE: / <FS>,'ACTUAL SALES'.

FORMAT RESET.

ENDAT.

FORMAT COLOR 2 INTENSIFIED OFF.

WRITE: / IT_SALE01-RYEAR,

IT_SALE01-POPER,

IT_SALE01-RPRCTR,

IT_SALE01-RACCT,

IT_SALE01-ACTIV,

IT_SALE01-HSL,

IT_SALE01-REFDOCNR,

IT_SALE01-MATNR,

IT_SALE01-KUNNR,

IT_SALE01-PS_PSP_PNR,

IT_SALE01-VKGRP.

TAB1_COUNT = TAB1_COUNT + 1.

AT END OF KEY.

SUM.

FORMAT COLOR 3 INTENSIFIED ON.

WRITE:

/'*TOTAL ACTUAL SALES',31 IT_SALE01-HSL, 67 TAB1_COUNT,

122 LV_ASALE01.

CLEAR TAB1_COUNT.

FORMAT RESET..

ENDAT.

ENDLOOP.

SORT IT_DCSAL BY KEY.

LOOP AT IT_DCSAL WHERE KEY EQ KEY1.

lindx = IT_DCSAL-KEY.

concatenate 'lv_PNAME' lindx into W_FIELD.

assign (w_field) to <FS>.

AT NEW KEY.

FORMAT COLOR 2 INTENSIFIED ON.

WRITE: / <FS>,'COST OF SALES'.

FORMAT RESET.

ENDAT.

FORMAT COLOR 2 INTENSIFIED OFF.

WRITE: / IT_DCSAL-RYEAR,

IT_DCSAL-POPER,

IT_DCSAL-RPRCTR,

IT_DCSAL-RACCT,

IT_DCSAL-ACTIV,

IT_DCSAL-HSL,

IT_DCSAL-REFDOCNR,

IT_DCSAL-MATNR,

IT_DCSAL-KUNNR,

IT_DCSAL-PS_PSP_PNR,

IT_DCSAL-VKGRP,

IT_DCSAL-CSALE.

TAB1_COUNT = TAB1_COUNT + 1.

AT END OF KEY.

SUM.

FORMAT COLOR 3 INTENSIFIED ON.

WRITE:

/'*TOTAL COST OF SALES', IT_DCSAL-CSALE, 67 TAB1_COUNT.

CLEAR TAB1_COUNT.

FORMAT RESET.

ENDAT.

ENDLOOP.

ENDFORM. "FM_DETAIL_REPORT

if anybody knows any effective way to do this program please suggest me.

answer will be rewarded.

regards

srinivas.

1 ACCEPTED SOLUTION
Read only

Former Member
0 Likes
419

Hi,

For performance use below points

1 ) use binary search in read by sorting table

2) Instead of IF use case wherever req

3) remove move-corresponding from select

4) use constants whereever req instead of hardcong

In se30 transaction you can look for

Tip&TRicks button on application toolbar

apart from below conventions

Follow below steps

5) Remove * from select

6) Select field in sequence as defined in database

7) Avoid unnecessary selects

i.e check for internal table not initial

😎 Use all entries and sort table by key fields

9) Remove selects ferom loop and use binary search

10) Try to use secondary index when you don't have

full key.

11) Modify internal table use transporting option

12) Avoid nested loop . Use read table and loop at itab

from sy-tabix statement.

13) free intrenal table memory wnen table is not

required for further processing.

14)

Follow below logic.

FORM SUB_SELECTION_AUFKTAB.

if not it_plant[] is initial.

it_plant1[] = it_plant[].

sort it_plant1 by werks.

delete adjacent duplicates from it_plant1 comparing werks

SELECT AUFNR KTEXT USER4 OBJNR INTO CORRESPONDING FIELDS OF TABLE I_AUFKTAB

FROM AUFK

FOR ALL ENTRIES IN it_plant1

WHERE AUFNR IN S_AUFNR AND

KTEXT IN S_KTEXT AND

  • WERKS IN S_WERKS AND

AUART IN S_AUART AND

USER4 IN S_USER4 AND

werks eq it_plant1-werks.

free it_plant1.

Endif.

ENDFORM. "SUB_SELECTION_AUFKTAB

Regards

Amole

2 REPLIES 2
Read only

Former Member
0 Likes
420

Hi,

For performance use below points

1 ) use binary search in read by sorting table

2) Instead of IF use case wherever req

3) remove move-corresponding from select

4) use constants whereever req instead of hardcong

In se30 transaction you can look for

Tip&TRicks button on application toolbar

apart from below conventions

Follow below steps

5) Remove * from select

6) Select field in sequence as defined in database

7) Avoid unnecessary selects

i.e check for internal table not initial

😎 Use all entries and sort table by key fields

9) Remove selects ferom loop and use binary search

10) Try to use secondary index when you don't have

full key.

11) Modify internal table use transporting option

12) Avoid nested loop . Use read table and loop at itab

from sy-tabix statement.

13) free intrenal table memory wnen table is not

required for further processing.

14)

Follow below logic.

FORM SUB_SELECTION_AUFKTAB.

if not it_plant[] is initial.

it_plant1[] = it_plant[].

sort it_plant1 by werks.

delete adjacent duplicates from it_plant1 comparing werks

SELECT AUFNR KTEXT USER4 OBJNR INTO CORRESPONDING FIELDS OF TABLE I_AUFKTAB

FROM AUFK

FOR ALL ENTRIES IN it_plant1

WHERE AUFNR IN S_AUFNR AND

KTEXT IN S_KTEXT AND

  • WERKS IN S_WERKS AND

AUART IN S_AUART AND

USER4 IN S_USER4 AND

werks eq it_plant1-werks.

free it_plant1.

Endif.

ENDFORM. "SUB_SELECTION_AUFKTAB

Regards

Amole

Read only

Former Member
0 Likes
419

hi,

adding one point to the points of Amole:

15. when you use FOR ALL ENTRIES IN check before if the the table you use FOR ALL ENTRIES IN is not initial. Because, if the table is initial, you'll get ALL the entries in the selected table!

yours

Michael