Application Development 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: 

ALV real time reports

Former Member
0 Kudos

Hi gurus........

Could u plz help me some real time codings for ALV......

Preferably interactive with using more no. of tables.

For ur information I am not a beginer.........

Points will be rewarded without fail.

- Diana

1 ACCEPTED SOLUTION

Former Member
0 Kudos

Hi,

Please refere the below coding belons to sales report. Reward if useful.

&----


*& Report ZSP_SALES_SOU_ALV *

*& *

&----


*& *

*& *

&----


*REPORT ZSP_SALES_SOU_ALV.

REPORT ZSP_SD_PRD_CUM_SALES_1 NO STANDARD PAGE HEADING

LINE-SIZE 348

LINE-COUNT 65(3).

TABLES : VBRK,

VBRP,

J_1IEXCHDR,

MARA,

MARC,

TCURX,

KONP,

KNA1,

KNMT,

ZSD_MOD,

AUSP,

KNVV,

ZCUG,

ZTHACLAMAT,

ZTHACLA,

ZSD_EMPMST .

TYPE-POOLS: SLIS.

DATA: HEADINGTEXT1(50).

DATA : BEGIN OF ITAB OCCURS 0,

VBELN LIKE VBRK-VBELN,

FKDAT LIKE VBRK-FKDAT,

VTWEG LIKE VBRK-VTWEG,

SPART LIKE VBRK-SPART, "ADDED FOR CCM CODE ADDITION.

WAERK LIKE VBRK-WAERK,

KURRF LIKE VBRK-KURRF,

KUNAG LIKE VBRK-KUNAG,

KNUMV LIKE VBRK-KNUMV,

POSNR LIKE VBRP-POSNR,

FKIMG LIKE VBRP-FKIMG,

NETWR LIKE VBRP-NETWR,

MATNR LIKE VBRP-MATNR,

BEGRU LIKE KNVV-BEGRU,

LABOR LIKE MARA-LABOR,

END OF ITAB.

DATA : ITABYF2 LIKE ITAB OCCURS 0 WITH HEADER LINE.

DATA : ITABG2 LIKE ITAB OCCURS 0 WITH HEADER LINE.

DATA : BEGIN OF IKONV OCCURS 0,

KNUMV LIKE KONV-KNUMV,

KPOSN LIKE KONV-KPOSN,

KSCHL LIKE KONV-KSCHL,

KWERT LIKE KONV-KWERT,

WAERS LIKE KONV-WAERS,

END OF IKONV.

DATA : BEGIN OF ITAB1 OCCURS 0,

KUNAG LIKE VBRK-KUNAG,

VBELN LIKE VBRK-VBELN,

FKDAT LIKE VBRK-FKDAT,

MATNR LIKE VBRP-MATNR,

BISMT LIKE MARA-BISMT,

EXTWG LIKE MARA-EXTWG,

FKIMG LIKE VBRP-FKIMG,

NETWR LIKE VBRP-NETWR,

DISPO LIKE MARC-DISPO,

ATWRTC LIKE AUSP-ATWRT,

VTWEG LIKE VBRK-VTWEG,

SPART LIKE VBRK-SPART,

BEGRU LIKE KNVV-BEGRU, "FOR CCM CODE ADDITION.

WERKS LIKE MARC-WERKS,

CRVAL LIKE VBRP-NETWR,

LABOR LIKE MARA-LABOR,

END OF ITAB1.

DATA : BEGIN OF IFINAL OCCURS 0,

BEGRU LIKE KNVV-BEGRU,

KUNAG LIKE VBRK-KUNAG,

F2VAL LIKE VBRK-NETWR,

YF2VAL LIKE VBRK-NETWR,

G2VAL LIKE VBRK-NETWR,

END OF IFINAL.

DATA : BEGIN OF IKNA1 OCCURS 0,

KUNNR LIKE KNA1-KUNNR,

NAME1 LIKE KNA1-NAME1,

ALTKN LIKE KNB1-ALTKN,

BEGRU LIKE KNVV-BEGRU,

ORT02 LIKE KNA1-ORT02,

END OF IKNA1.

DATA : BEGIN OF IMARA OCCURS 0,

MATNR LIKE MARA-MATNR,

BISMT LIKE MARA-BISMT,

EXTWG LIKE MARA-EXTWG,

LABOR LIKE MARA-LABOR,

MAKTX LIKE MAKT-MAKTX,

END OF IMARA.

DATA : BEGIN OF IZSD_MOD OCCURS 0,

MATNR LIKE ZSD_MOD-MATNR,

MONYR LIKE ZSD_MOD-MONYR,

DISPO LIKE ZSD_MOD-DISPO,

END OF IZSD_MOD.

DATA : BEGIN OF ITABTMP1 OCCURS 0,

VBELN LIKE VBRK-VBELN,

FKDAT LIKE VBRK-FKDAT,

VTWEG LIKE VBRK-VTWEG,

WAERK LIKE VBRK-WAERK,

KURRF LIKE VBRK-KURRF,

KUNAG LIKE VBRK-KUNAG,

POSNR LIKE VBRP-POSNR,

FKIMG LIKE VBRP-FKIMG,

NETWR LIKE VBRP-NETWR,

MATNR(50) TYPE C,

BEGRU LIKE KNVV-BEGRU,

END OF ITABTMP1.

DATA : BEGIN OF ICAT OCCURS 0,

OBJEK LIKE AUSP-OBJEK,

ATINN LIKE AUSP-ATINN,

ATWRT LIKE AUSP-ATWRT,

END OF ICAT.

DATA : BEGIN OF ICAT1 OCCURS 0,

ATWRT LIKE CAWN-ATWRT,

ATWTB LIKE CAWNT-ATWTB,

END OF ICAT1.

DATA: BEGIN OF CITAB OCCURS 0,

MATNR LIKE ZTHACLAMAT-MATNR,

CLINT_999 LIKE ZTHACLAMAT-CLINT_999,

USEDIN LIKE ZTHACLAMAT-USEDIN,

KSCHL LIKE ZTHACLA-KSCHL,

END OF CITAB.

DATA : ITABTMP LIKE ITAB OCCURS 0 WITH HEADER LINE.

DATA : ITABL LIKE ITAB OCCURS 0 WITH HEADER LINE.

DATA : ITAB1L LIKE ITAB1 OCCURS 0 WITH HEADER LINE.

DATA : ICATTMP LIKE ICAT OCCURS 0 WITH HEADER LINE.

DATA: BEGIN OF IBEGRU OCCURS 0,

KUNNR LIKE KNVV-KUNNR,

BEGRU LIKE KNVV-BEGRU,

END OF IBEGRU.

DATA: BEGIN OF IEMP OCCURS 0,

ECODE LIKE ZSD_EMPMST-ECODE,

ENAME LIKE ZSD_EMPMST-ENAME,

KUNNR LIKE KNVV-KUNNR,

END OF IEMP.

DATA: ITAB1TMP LIKE ITAB1 OCCURS 0 WITH HEADER LINE.

DATA : TOTAL_QTY TYPE P DECIMALS 3,

GTOTAL_QTY TYPE P DECIMALS 3,

TOTAL_VALUE TYPE P DECIMALS 2,

GTOTAL_VALUE TYPE P DECIMALS 2,

GTOTAL_CRVAL TYPE P DECIMALS 2,

QTYL_TOTAL TYPE P DECIMALS 3,

VALUEL_TOTAL TYPE P DECIMALS 2.

DATA : FROM_DATE TYPE D,

TO_DATE TYPE D.

DATA : PRD_PER TYPE P DECIMALS 3,

GPRD_PER TYPE P DECIMALS 3,

SNO TYPE I.

DATA : WA_MATNR LIKE AUSP-OBJEK.

DATA : DATLM LIKE SY-DATUM,

DATLH LIKE SY-DATUM,

DATLMM LIKE SY-DATUM,

DATLHH LIKE SY-DATUM.

DATA : DATDIFF LIKE KOMP-ANZ_MONATE.

DATA: MON TYPE P.

DATA: AVGQTY TYPE P,

AVGVAL TYPE P DECIMALS 2.

DATA: TOTAL_AVGQTY TYPE P,

TOTALVAL TYPE P DECIMALS 3,

FINALVAL TYPE P DECIMALS 3.

DATA: BEGIN OF ITEMP OCCURS 0,

SDISP LIKE ZSD_MOD-DISPO,

END OF ITEMP.

DATA: COL, LEN TYPE I.

DATA: W_IX LIKE SY-TABIX.

DATA: BEGIN OF ALV OCCURS 0,

SNO TYPE I,

LABOR LIKE MARA-LABOR,

USEDIN LIKE ZTHACLAMAT-USEDIN,

CLINT_999 LIKE ZTHACLAMAT-CLINT_999,

KSCHL LIKE ZTHACLA-KSCHL,

NAME1 LIKE ZCUG-NAME1,

WERKS LIKE MARC-WERKS,

SPART LIKE VBRK-SPART,

VTWEG LIKE VBRK-VTWEG,

BEGRU LIKE KNVV-BEGRU,

KUNNR LIKE KNA1-KUNNR,

KUNAG LIKE VBRK-KUNAG,

NAME2 LIKE KNA1-NAME1,

MATNR LIKE MARA-MATNR,

MAKTX LIKE MAKT-MAKTX,

BISMT LIKE MARA-BISMT,

DISPO LIKE MARC-DISPO,

VBELN LIKE VBRK-VBELN,

FKDAT LIKE VBRK-FKDAT,

EXTWG LIKE MARA-EXTWG,

ATWRTC LIKE AUSP-ATWRT,

  • VTWEG LIKE VBRK-VTWEG,

AVGQTY TYPE I,

AVGVAL TYPE I,

CRVAL TYPE I,

F2VAL TYPE P DECIMALS 2,

YF2VAL TYPE P DECIMALS 2,

G2VAL TYPE P DECIMALS 2,

TOTALVAL TYPE P DECIMALS 2,

FINALVAL TYPE P DECIMALS 2,

ORT02 LIKE KNA1-ORT02,

END OF ALV.

DATA: ALV1 LIKE ALV OCCURS 0 WITH HEADER LINE.

DATA : FIELDCAT TYPE SLIS_T_FIELDCAT_ALV,

WA_FIELDCAT TYPE SLIS_FIELDCAT_ALV,

LAYOUT TYPE SLIS_LAYOUT_ALV.

DATA : EVENTSTAB TYPE SLIS_T_EVENT WITH HEADER LINE.

DATA : HEADING TYPE SLIS_T_LISTHEADER WITH HEADER LINE,

HEADING1 TYPE SLIS_T_LISTHEADER WITH HEADER LINE,

HEADING2 TYPE SLIS_T_LISTHEADER WITH HEADER LINE,

HEADING3 TYPE SLIS_T_LISTHEADER WITH HEADER LINE.

SELECTION-SCREEN : BEGIN OF BLOCK KARTHI WITH FRAME.

SELECT-OPTIONS : S_FKDAT FOR VBRK-FKDAT OBLIGATORY,

S_WERKS FOR VBRP-WERKS, "OBLIGATORY,

S_VTWEG FOR VBRK-VTWEG,

S_SPART FOR VBRK-SPART,

S_KUNAG FOR VBRK-KUNAG,

S_MATNR FOR VBRP-MATNR,

S_ATWRTC FOR AUSP-ATWRT NO-EXTENSION NO INTERVALS,

S_DISPO FOR MARC-DISPO,

S_LABOR FOR MARA-LABOR,

S_BEGRU FOR KNVV-BEGRU,

S_MATKL FOR MARA-MATKL,

S_ORT02 FOR KNA1-ORT02.

PARAMETERS : S_USEDIN LIKE ZTHACLAMAT-USEDIN.

SELECTION-SCREEN : END OF BLOCK KARTHI.

INITIALIZATION.

START-OF-SELECTION.

*----


ALTERATION

DATLM = S_FKDAT-LOW.

DATLH = S_FKDAT-HIGH.

DATLMM = DATLM+0(6).

DATLHH = DATLH+0(6).

CALL FUNCTION 'MONTHS_BETWEEN_TWO_DATES_NEW'

EXPORTING

I_DATUM_BIS = DATLHH

I_DATUM_VON = DATLMM

I_KZ_INCL_BIS = ' '

I_KZ_VOLLE_MONATE = 'X'

IMPORTING

E_MONATE = DATDIFF.

MON = DATDIFF + 1.

*WRITE:/ MON .

*----


END OF ALTERATION

*FPS INVOICE

SELECT A~VBELN A~FKDAT A~VTWEG A~SPART A~WAERK A~KURRF A~KUNAG A~KNUMV

B~POSNR B~FKIMG B~NETWR B~MATNR

D~BEGRU E~LABOR E~MATKL

INTO CORRESPONDING FIELDS OF TABLE ITAB

FROM VBRK AS A INNER JOIN VBRP AS B

ON A~VBELN EQ B~VBELN

INNER JOIN J_1IEXCHDR AS C

ON A~VBELN EQ C~RDOC

INNER JOIN KNVV AS D

ON D~KUNNR EQ A~KUNAG AND

D~VKORG EQ A~VKORG AND

D~SPART EQ A~SPART AND

D~BEGRU NE SPACE

INNER JOIN MARA AS E

ON E~MATNR EQ B~MATNR

WHERE A~FKDAT IN S_FKDAT AND

A~FKART EQ 'F2' AND

A~VTWEG IN S_VTWEG AND

A~SPART IN S_SPART AND

A~KUNAG IN S_KUNAG AND

A~FKSTO NE 'X' AND

B~WERKS IN S_WERKS AND

C~TRNTYP = 'DLFC' AND

E~LABOR IN S_LABOR AND

  • C~SRGRP IN ('01','02','03','31','32','33','41','42','43',

  • '81','82','83','95','55','45', '48') AND

B~MATNR IN S_MATNR AND

D~BEGRU IN S_BEGRU AND

E~MATKL IN S_MATKL.

SORT ITAB BY VBELN POSNR BEGRU DESCENDING.

DELETE ADJACENT DUPLICATES FROM ITAB COMPARING VBELN POSNR.

IF ITAB[] IS INITIAL.

MESSAGE E000(8I) WITH 'No Data Found'.

EXIT.

ENDIF.

    • CREDIT NOTE DETAILS

  • SELECT AVBELN AFKDAT AVTWEG ASPART AWAERK AKUNAG AKUNAG AKNUMV

  • BPOSNR BFKIMG BNETWR BMATNR D~BEGRU

  • INTO TABLE ITABG2

  • FROM VBRK AS A INNER JOIN VBRP AS B

  • ON AVBELN EQ BVBELN

  • INNER JOIN J_1IEXCHDR AS C

  • ON CRDOC EQ AVBELN

  • INNER JOIN KNVV AS D

  • ON DKUNNR EQ AKUNAG

  • WHERE A~FKDAT IN S_FKDAT AND

  • A~FKART EQ 'G2' AND

  • A~VTWEG IN S_VTWEG AND

  • A~SPART IN S_SPART AND

  • A~KUNAG IN S_KUNAG AND

  • A~FKSTO NE 'X' AND

  • B~WERKS IN S_WERKS.

*

  • SORT ITABG2 BY VBELN POSNR.

  • DELETE ADJACENT DUPLICATES FROM ITABG2 COMPARING VBELN POSNR.

  • IF NOT ITABG2[] IS INITIAL.

  • SELECT KNUMV KPOSN KSCHL KWERT WAERS

  • INTO TABLE IKONV FROM KONV

  • FOR ALL ENTRIES IN ITABG2

  • WHERE KNUMV EQ ITABG2-KNUMV

  • AND KPOSN EQ ITABG2-POSNR

  • AND KSCHL EQ 'PR00'.

*

  • SORT IKONV BY KNUMV KPOSN KWERT DESCENDING.

*

  • ENDIF.

SORT ITAB BY MATNR.

CLEAR ITABTMP.

REFRESH ITABTMP.

ITABTMP[] = ITAB[].

SORT ITABTMP BY MATNR.

DELETE ADJACENT DUPLICATES FROM ITABTMP COMPARING MATNR.

SELECT AMATNR ABISMT AEXTWG ALABOR B~MAKTX INTO TABLE IMARA

FROM MARA AS A INNER JOIN MAKT AS B

ON AMATNR EQ BMATNR

FOR ALL ENTRIES IN ITABTMP

WHERE AMATNR EQ ITABTMP-MATNR AND ALABOR IN S_LABOR.

LOOP AT ITABTMP.

MOVE-CORRESPONDING ITABTMP TO ITABTMP1.

APPEND ITABTMP1.

ENDLOOP.

  • Product category fetching

*==========================

  • SELECT OBJEK ATINN ATWRT INTO TABLE ICAT

  • FROM AUSP

  • FOR ALL ENTRIES IN ITABTMP1

  • WHERE OBJEK EQ ITABTMP1-MATNR AND

  • ATINN EQ '41' AND

  • ATWRT IN S_ATWRTC.

*

  • ICATTMP[] = ICAT[].

  • SORT ICATTMP BY ATWRT.

  • DELETE ADJACENT DUPLICATES FROM ICATTMP COMPARING ATWRT.

*

  • SELECT AATWRT BATWTB INTO TABLE ICAT1

  • FROM CAWN AS A INNER JOIN CAWNT AS B

  • ON AATINN EQ BATINN AND

  • AATZHL EQ BATZHL

  • FOR ALL ENTRIES IN ICATTMP

  • WHERE A~ATINN EQ '41' AND

  • A~ATWRT EQ ICATTMP-ATWRT.

SORT ITAB BY VBELN POSNR.

IF S_DISPO EQ SPACE.

LOOP AT ITAB.

WA_MATNR = ITAB-MATNR.

READ TABLE ICAT WITH KEY OBJEK = WA_MATNR.

IF SY-SUBRC NE 0 AND S_ATWRTC-LOW NE SPACE.

DELETE ITAB.

CONTINUE.

ELSEIF SY-SUBRC NE 0.

ICAT-ATWRT = SPACE.

ENDIF.

READ TABLE ITAB1 WITH KEY MATNR = ITAB-MATNR.

IF SY-SUBRC EQ 0.

PERFORM INR_CONVERSION.

PERFORM MODULE_GET.

ITAB1-FKIMG = ITAB1-FKIMG + ITAB-FKIMG.

ITAB1-NETWR = ITAB1-NETWR + ITAB-NETWR.

ITAB1-KUNAG = ITAB-KUNAG.

ITAB1-VBELN = ITAB-VBELN.

ITAB1-FKDAT = ITAB-FKDAT.

ITAB1-VTWEG = ITAB-VTWEG. "FOR CCM CODE ADDITION.

ITAB1-SPART = ITAB-SPART. "FOR CCM CODE ADDITION.

ITAB1-BEGRU = ITAB-BEGRU.

ITAB1-LABOR = ITAB-LABOR.

  • IF S_DISPO = SPACE.

MODIFY ITAB1 INDEX SY-TABIX.

ELSE.

PERFORM INR_CONVERSION.

PERFORM MODULE_GET1.

ITAB1-WERKS = MARC-WERKS.

ITAB1-MATNR = ITAB-MATNR.

ITAB1-FKIMG = ITAB-FKIMG.

ITAB1-NETWR = ITAB-NETWR.

ITAB1-KUNAG = ITAB-KUNAG.

ITAB1-VBELN = ITAB-VBELN.

ITAB1-FKDAT = ITAB-FKDAT.

ITAB1-ATWRTC = ICAT-ATWRT.

ITAB1-VTWEG = ITAB-VTWEG. "FOR CCM CODE ADDITION.

ITAB1-SPART = ITAB-SPART. "FOR CCM CODE ADDITION.

ITAB1-BEGRU = ITAB-BEGRU.

ITAB1-LABOR = ITAB-LABOR.

APPEND ITAB1.

ENDIF.

CLEAR : ITAB1, ITAB.

ENDLOOP.

ELSE.

LOOP AT ITAB.

WA_MATNR = ITAB-MATNR.

READ TABLE ICAT WITH KEY OBJEK = WA_MATNR.

IF SY-SUBRC NE 0 AND S_ATWRTC-LOW NE SPACE.

DELETE ITAB.

CONTINUE.

ELSEIF SY-SUBRC NE 0.

ICAT-ATWRT = SPACE.

ENDIF.

READ TABLE ITAB1 WITH KEY MATNR = ITAB-MATNR.

IF SY-SUBRC EQ 0.

PERFORM INR_CONVERSION.

PERFORM MODULE_GET.

ITAB1-FKIMG = ITAB1-FKIMG + ITAB-FKIMG.

ITAB1-NETWR = ITAB1-NETWR + ITAB-NETWR.

ITAB1-KUNAG = ITAB-KUNAG.

ITAB1-VBELN = ITAB-VBELN.

ITAB1-FKDAT = ITAB-FKDAT.

  • IF S_DISPO = SPACE.

ITAB1-VTWEG = ITAB-VTWEG. "FOR CCM CODE ADDITION.

ITAB1-SPART = ITAB-SPART. "FOR CCM CODE ADDITION.

ITAB1-LABOR = ITAB-LABOR.

ITAB1-BEGRU = ITAB-BEGRU. "FOR ADDITION OF BEGRU.

MODIFY ITAB1 INDEX SY-TABIX.

ELSE.

PERFORM INR_CONVERSION.

PERFORM MODULE_GET1.

ITAB1-MATNR = ITAB-MATNR.

ITAB1-FKIMG = ITAB-FKIMG.

ITAB1-NETWR = ITAB-NETWR.

ITAB1-KUNAG = ITAB-KUNAG.

ITAB1-VBELN = ITAB-VBELN.

ITAB1-FKDAT = ITAB-FKDAT.

ITAB1-ATWRTC = ICAT-ATWRT.

ITAB1-VTWEG = ITAB-VTWEG. "FOR CCM CODE ADDITION.

ITAB1-SPART = ITAB-SPART. "FOR CCM CODE ADDITION.

ITAB1-BEGRU = ITAB-BEGRU. "FOR ADDITION OF BEGRU.

ITAB1-LABOR = ITAB-LABOR.

APPEND ITAB1.

ENDIF.

CLEAR : ITAB1,ITAB.

ENDLOOP.

ENDIF.

  • LOOP AT ITABG2.

  • CLEAR ITAB1.

  • PERFORM INR_CONVERSION1 USING ITABG2-WAERK ITABG2-KURRF

  • CHANGING ITABG2-NETWR.

*

  • MOVE ITABG2-MATNR TO ITAB1-MATNR.

  • PERFORM MODULE_GET.

  • READ TABLE ITAB1 WITH KEY MATNR = ITABG2-MATNR.

  • IF SY-SUBRC EQ 0.

  • ITAB1-CRVAL = ITAB1-CRVAL + ITABG2-NETWR.

  • MODIFY ITAB1 INDEX SY-TABIX.

  • ELSE.

  • ITAB1-MATNR = ITABG2-MATNR.

    • ITAB1-FKIMG = ITABG2-FKIMG.

    • ITAB1-NETWR = ITABG2-NETWR.

  • ITAB1-KUNAG = ITABG2-KUNAG.

  • ITAB1-VBELN = ITABG2-VBELN.

  • ITAB1-FKDAT = ITABG2-FKDAT.

  • ITAB1-ATWRTC = ICATG2-ATWRT.

  • ITAB1-VTWEG = ITABG2-VTWEG.

  • ITAB1-SPART = ITABG2-SPART.

  • ITAB1-BEGRU = ITABG2-BEGRU.

  • APPEND ITAB1.

  • ENDIF.

  • ENDLOOP.

LOOP AT ITAB1.

IF NOT ITAB1-DISPO IN S_DISPO.

DELETE ITAB1.

ENDIF.

ENDLOOP.

LOOP AT ITAB1.

GTOTAL_QTY = GTOTAL_QTY + ITAB1-FKIMG.

GTOTAL_VALUE = GTOTAL_VALUE + ITAB1-NETWR.

GTOTAL_CRVAL = GTOTAL_CRVAL + ITAB1-CRVAL.

ENDLOOP.

*TO PICK CLASSIFICATIONS

*=======================

  • *============== TO PICK THE CCM CODE AND THE NAME

ITAB1TMP[] = ITAB1[].

SORT ITAB1TMP BY KUNAG.

LOOP AT IBEGRU.

SELECT ECODE ENAME FROM ZSD_EMPMST

INTO CORRESPONDING FIELDS OF IEMP

WHERE ECODE = IBEGRU-BEGRU.

IF SY-SUBRC = 0.

IEMP-KUNNR = IBEGRU-KUNNR.

ENDIF.

APPEND IEMP.

ENDSELECT.

ENDLOOP.

*===================END.

*Printing Starts

*===============

LOOP AT ITAB1.

SELECT SINGLE * FROM MARC WHERE MATNR = ITAB1-MATNR.

IF NOT ITAB1-DISPO IN S_DISPO.

CONTINUE.

ENDIF.

  • READ TABLE IMARA WITH KEY MATNR = ITAB1-MATNR.

*

  • SELECT SINGLE * FROM KNA1 WHERE KUNNR = ITAB1-KUNAG.

  • SELECT SINGLE * FROM ZCUG WHERE KUNNR = KNA1-KUNNR.

*

IF SY-SUBRC NE 0. KNA1-NAME1 = SPACE. ENDIF.

IF GPRD_PER LT 70.

FORMAT COLOR 5 ON.

ELSEIF GPRD_PER GE 70 AND GPRD_PER LT 90.

FORMAT COLOR 1 ON.

ELSE.

FORMAT COLOR 6 ON.

ENDIF.

  • IF S_VTWEG-LOW NE '20'.

SELECT SINGLE KDMAT INTO (KNMT-KDMAT) FROM KNMT

WHERE VKORG IN (1000,2000) AND

VTWEG IN (10,11,12,20,30,40,50,60) AND

KUNNR EQ ITAB1-KUNAG AND

MATNR EQ ITAB1-MATNR.

  • ENDIF.

  • IF S_VTWEG-LOW EQ '20'.

READ TABLE IMARA WITH KEY MATNR = ITAB1-MATNR.

IF SY-SUBRC NE 0.

CLEAR IMARA-LABOR.

ENDIF.

*ats 25.9.06

IF NOT IMARA-LABOR IN S_LABOR.

CONTINUE.

ENDIF.

IF IMARA-LABOR EQ '001' OR IMARA-LABOR EQ '002' OR IMARA-LABOR EQ '005'

OR IMARA-LABOR EQ '006' OR IMARA-LABOR EQ '007'

OR IMARA-LABOR EQ '008' .

IF ITAB1-SPART EQ 40.

CONTINUE.

ENDIF.

ENDIF.

  • END

  • SELECT SINGLE * FROM KNA1 WHERE KUNNR = ITAB1-KUNAG.

SELECT SINGLE * FROM ZCUG WHERE KUNNR = ITAB1-KUNAG.

IF SY-SUBRC EQ 0.

MOVE ZCUG-NAME1 TO ALV-NAME1.

ENDIF.

  • WRITE:/(04) SNO,

  • (13) ITAB1-MATNR,

  • (10) IMARA-EXTWG.

  • SET LEFT SCROLL-BOUNDARY.

  • WRITE: (35) IMARA-MAKTX,

  • (12) ITAB1-FKIMG NO-GROUPING DECIMALS 0,

  • (15) ITAB1-NETWR NO-GROUPING.

AVGQTY = ITAB1-FKIMG / MON.

AVGVAL = ITAB1-NETWR / MON.

  • WRITE:(12) AVGQTY NO-GROUPING.

  • WRITE:(15) AVGVAL NO-GROUPING.

MOVE IMARA-LABOR TO ALV-LABOR.

MOVE MARC-WERKS TO ALV-WERKS.

MOVE ITAB1-MATNR TO ALV-MATNR.

MOVE IMARA-MAKTX TO ALV-MAKTX.

  • MOVE AVGQTY TO ALV-AVGQTY.

  • MOVE AVGVAL TO ALV-AVGVAL.

MOVE ITAB1-FKIMG TO ALV-AVGQTY.

MOVE ITAB1-NETWR TO ALV-AVGVAL.

MOVE ITAB1-DISPO TO ALV-DISPO.

MOVE ITAB1-BEGRU TO ALV-BEGRU.

MOVE ITAB1-SPART TO ALV-SPART.

MOVE ITAB1-VTWEG TO ALV-VTWEG.

MOVE ITAB1-KUNAG TO ALV-KUNAG.

MOVE ITAB1-VBELN TO ALV-VBELN.

MOVE ITAB1-FKDAT TO ALV-FKDAT.

  • MOVE ITAB1-MATNR TO ALV-MATNR.

MOVE ITAB1-BISMT TO ALV-BISMT.

MOVE ITAB1-EXTWG TO ALV-EXTWG.

MOVE ITAB1-ATWRTC TO ALV-ATWRTC.

  • SELECT AMATNR ACLINT_999 AUSEDIN BKSCHL INTO TABLE CITAB

  • FROM ZTHACLAMAT AS A INNER JOIN ZTHACLA AS B

  • ON ACLINT_999 EQ BCLINT_999

  • FOR ALL ENTRIES IN ITAB1

  • WHERE A~MATNR EQ ITAB1-MATNR.

SELECT SINGLE * FROM ZTHACLAMAT WHERE MATNR EQ ITAB1-MATNR.

  • READ TABLE CITAB WITH KEY MATNR = ITAB1-MATNR.

IF SY-SUBRC = 0.

MOVE ZTHACLAMAT-CLINT_999+6(4) TO ALV-CLINT_999.

SELECT SINGLE * FROM ZTHACLA WHERE CLINT_999 EQ ZTHACLAMAT-CLINT_999.

MOVE ZTHACLA-KSCHL TO ALV-KSCHL.

MOVE ZTHACLAMAT-USEDIN TO ALV-USEDIN.

ENDIF.

  • ELSE.

SELECT SINGLE * FROM KNA1 WHERE KUNNR = ITAB1-KUNAG AND ORT02 IN S_ORT02.

IF SY-SUBRC EQ 0.

MOVE KNA1-NAME1 TO ALV-NAME2.

MOVE KNA1-KUNNR TO ALV-KUNNR.

MOVE KNA1-ORT02 TO ALV-ORT02.

ENDIF.

MOVE IMARA-BISMT TO ALV-BISMT.

  • IF ALV-LABOR NOT IN S_LABOR.

  • CONTINUE.

  • ELSE.

SNO = SNO + 1.

MOVE SNO TO ALV-SNO.

APPEND ALV.

CLEAR: ALV, IMARA.

  • ENDIF.

ENDLOOP.

IF S_USEDIN IS NOT INITIAL.

*LOOP AT ALV.

*ENDLOOP.

DELETE ALV WHERE USEDIN NE S_USEDIN.

ENDIF.

*Service Station Invoice

*=======================

SELECT AVBELN AFKDAT AKNUMV AWAERK AKURRF AKUNAG AVTWEG ASPART

BPOSNR BMATNR BNETWR BFKIMG

DBEGRU EMATKL E~LABOR

INTO CORRESPONDING FIELDS OF TABLE ITABYF2

FROM VBRK AS A INNER JOIN VBRP AS B

ON AVBELN EQ BVBELN

INNER JOIN J_1IEXCHDR AS C

ON AVBELN EQ CRDOC

INNER JOIN KNVV AS D

ON DKUNNR EQ AKUNAG AND

DVKORG EQ AVKORG AND

DSPART EQ ASPART

  • D~BEGRU NE SPACE

INNER JOIN MARA AS E

ON EMATNR EQ BMATNR

WHERE A~FKART EQ 'YF2' AND

  • A~FKART EQ 'F2' AND

A~FKDAT IN S_FKDAT AND

A~VTWEG IN S_VTWEG AND

A~SPART IN S_SPART AND

A~KUNAG IN S_KUNAG AND

A~FKSTO NE 'X' AND

  • b~srgrp IN s_srgrp AND

B~WERKS IN S_WERKS AND

C~TRNTYP = 'DLFC' AND

C~SRGRP IN ('01','02','03','31','32','33','41','42','43',

'81','82','83','08','501') AND

  • D~BEGRU IN S_BEGRU AND

E~MATKL IN S_MATKL AND

E~LABOR IN S_LABOR.

SORT ITABYF2 BY VBELN POSNR BEGRU DESCENDING.

DELETE ADJACENT DUPLICATES FROM ITABYF2 COMPARING VBELN POSNR.

LOOP AT ITABYF2.

IF ITABYF2-WAERK NE 'INR'.

PERFORM F_CURR_CON USING ITABYF2-WAERK CHANGING ITABYF2-NETWR.

ENDIF.

READ TABLE IFINAL WITH KEY BEGRU = ITABYF2-BEGRU

KUNAG = ITABYF2-KUNAG.

IF SY-SUBRC NE 0.

CLEAR : IFINAL.

IFINAL-BEGRU = ITABYF2-BEGRU.

IFINAL-KUNAG = ITABYF2-KUNAG.

IFINAL-F2VAL = 0.

IFINAL-YF2VAL = ITABYF2-NETWR.

IFINAL-G2VAL = 0.

APPEND IFINAL.

ELSE.

IFINAL-YF2VAL = IFINAL-YF2VAL + ITABYF2-NETWR.

MODIFY IFINAL INDEX SY-TABIX.

ENDIF.

ENDLOOP.

  • MOVE IFINAL-YF2VAL TO ALV-YF2VAL.

*Credit Note

*===========

SELECT AVBELN AFKDAT AKNUMV AWAERK AKURRF AKUNAG AVTWEG ASPART

BPOSNR BMATNR BNETWR BFKIMG "C~RDOC

DBEGRU EMATKL E~LABOR

INTO CORRESPONDING FIELDS OF TABLE ITABG2

FROM VBRK AS A INNER JOIN VBRP AS B

ON AVBELN EQ BVBELN

  • INNER JOIN J_1IEXCHDR AS C

  • ON AVBELN EQ CRDOC

INNER JOIN KNVV AS D

ON DKUNNR EQ AKUNAG AND

DVKORG EQ AVKORG AND

DSPART EQ ASPART

  • D~BEGRU NE SPACE

INNER JOIN MARA AS E

ON EMATNR EQ BMATNR

WHERE A~FKART EQ 'G2' AND

  • A~FKART EQ 'F2' AND

A~FKDAT IN S_FKDAT AND

A~VTWEG IN S_VTWEG AND

A~SPART IN S_SPART AND

A~KUNAG IN S_KUNAG AND

A~FKSTO NE 'X' AND

B~WERKS IN S_WERKS AND

  • B~MATNR IN S_MATNR AND

  • C~TRNTYP = 'DLFC' AND

D~BEGRU IN S_BEGRU AND

E~MATKL IN S_MATKL AND

E~LABOR IN S_LABOR .

SORT ITABG2 BY VBELN POSNR DESCENDING.

DELETE ADJACENT DUPLICATES FROM ITABG2 COMPARING VBELN POSNR.

IF NOT ITABG2[] IS INITIAL.

SELECT KNUMV KPOSN KSCHL KWERT WAERS

INTO CORRESPONDING FIELDS OF TABLE IKONV

FROM KONV

FOR ALL ENTRIES IN ITABG2

WHERE KNUMV EQ ITABG2-KNUMV AND

KPOSN EQ ITABG2-POSNR AND

KSCHL EQ 'PR00'.

SORT IKONV BY KNUMV KPOSN KWERT DESCENDING.

ENDIF.

*Transfering Data from Credit Note Final itab.

*=============================================

LOOP AT ITABG2.

IF ITABG2-WAERK NE 'INR'.

PERFORM F_CURR_CON USING ITABG2-WAERK CHANGING ITABG2-NETWR.

ENDIF.

READ TABLE IKONV WITH KEY KNUMV = ITABG2-KNUMV

KPOSN = ITABG2-POSNR.

IF SY-SUBRC NE 0.

IKONV-KWERT = 0.

ENDIF.

READ TABLE IFINAL WITH KEY BEGRU = ITABG2-BEGRU

KUNAG = ITABG2-KUNAG.

IF SY-SUBRC NE 0.

CLEAR : IFINAL.

IFINAL-BEGRU = ITABG2-BEGRU.

IFINAL-KUNAG = ITABG2-KUNAG.

IFINAL-F2VAL = 0.

IFINAL-YF2VAL = 0.

IFINAL-G2VAL = IKONV-KWERT.

APPEND IFINAL.

ELSE.

IFINAL-G2VAL = IFINAL-G2VAL + IKONV-KWERT.

MODIFY IFINAL INDEX SY-TABIX.

ENDIF.

ENDLOOP.

SORT IFINAL BY BEGRU KUNAG.

LOOP AT IFINAL.

  • IF SY-SUBRC EQ 0.

MOVE IFINAL-G2VAL TO ALV-G2VAL.

MODIFY ALV INDEX SY-TABIX.

  • ENDIF.

  • MOVE IFINAL-G2VAL TO ALV-G2VAL.

ENDLOOP.

LOOP AT IFINAL.

  • IF SY-SUBRC EQ 0.

MOVE IFINAL-F2VAL TO ALV-F2VAL.

MOVE IFINAL-YF2VAL TO ALV-YF2VAL.

MOVE IFINAL-BEGRU TO ALV-BEGRU.

MOVE IFINAL-KUNAG TO ALV-KUNAG.

MODIFY ALV INDEX SY-TABIX.

ENDLOOP.

LOOP AT ALV.

CLEAR TOTALVAL.

TOTALVAL = ALV-AVGVAL + ALV-YF2VAL.

ALV-TOTALVAL = TOTALVAL.

MODIFY ALV INDEX SY-TABIX.

ENDLOOP.

LOOP AT ALV.

CLEAR FINALVAL.

FINALVAL = ALV-TOTALVAL - ALV-G2VAL.

ALV-FINALVAL = FINALVAL.

MODIFY ALV INDEX SY-TABIX.

ENDLOOP.

****LOOP AT ITAB.

****

        • CLEAR DIFF.

****

        • DIFF = ITAB-ERFMG - ITAB-MENGE.

****

        • ITAB-DMENG = DIFF.

****

        • MODIFY ITAB INDEX SY-TABIX.

****

        • ENDLOOP.

PERFORM FILL_EVENTSTAB TABLES EVENTSTAB.

PERFORM FILL_HEADINGTABLE TABLES HEADING USING 'HEADING'.

PERFORM FILL_HEADINGTABLE TABLES HEADING USING 'HEADING1'.

  • IF S_VTWEG-LOW EQ '20'.

PERFORM ALV.

  • ENDIF.

FORM MON_CAL.

IF ITAB-FKDAT+4(2) > 3.

ITAB-FKDAT4(2) = ITAB-FKDAT4(2) - 3.

ELSE.

ITAB-FKDAT4(2) = ITAB-FKDAT4(2) + 9.

ENDIF.

ENDFORM. " MON_CAL

&----


*& Form INR_CONVERSION

&----


  • text

----


FORM INR_CONVERSION.

DATA : CON_CUR TYPE I.

IF ITAB-WAERK NE 'INR'.

SELECT SINGLE * FROM TCURX WHERE CURRKEY EQ ITAB-WAERK.

IF SY-SUBRC EQ 0.

IF ITAB-WAERK = 'IDR'.

ITAB-NETWR = ITAB-NETWR * 100.

CON_CUR = SPACE.

ELSE.

CON_CUR = 10 ** ( TCURX-CURRDEC - 2 ).

ENDIF.

ELSE.

IF ITAB-WAERK = 'IDR'.

ITAB-NETWR = ITAB-NETWR * 100.

CON_CUR = SPACE.

ENDIF.

ENDIF.

IF NOT CON_CUR IS INITIAL.

ITAB-NETWR = ITAB-NETWR / CON_CUR.

ENDIF.

ENDIF.

ITAB-NETWR = ITAB-NETWR * ITAB-KURRF.

  • itab-netwr = ( itab-netwr / 100000 ).

ENDFORM. " INR_CONVERSION

&----


*& Form YEAR_CALC

&----


  • text

----


FORM YEAR_CALC.

FROM_DATE = S_FKDAT-LOW.

IF FROM_DATE+4(2) LE '03'.

FROM_DATE0(4) = FROM_DATE0(4) - 2.

FROM_DATE+4(4) = '0401'.

TO_DATE = S_FKDAT-LOW.

TO_DATE0(4) = TO_DATE0(4) - 1.

TO_DATE+4(4) = '0331'.

ELSE.

FROM_DATE0(4) = FROM_DATE0(4) - 1.

FROM_DATE+4(4) = '0401'.

TO_DATE = S_FKDAT-LOW.

TO_DATE0(4) = TO_DATE0(4).

TO_DATE+4(4) = '0331'.

ENDIF.

SELECT AVBELN AFKDAT AVTWEG AWAERK AKURRF AKUNAG

BPOSNR BFKIMG BNETWR BMATNR

INTO CORRESPONDING FIELDS OF TABLE ITABL

FROM VBRK AS A INNER JOIN VBRP AS B

ON AVBELN EQ BVBELN

INNER JOIN J_1IEXCHDR AS C

ON CRDOC EQ AVBELN

  • INNER JOIN ZSD_MOD AS D ON DMATNR = BMATNR

WHERE A~FKDAT GE FROM_DATE AND

A~FKDAT LE TO_DATE AND

A~FKART EQ 'F2' AND

A~VTWEG IN S_VTWEG AND

A~SPART IN S_SPART AND

A~KUNAG IN S_KUNAG AND

A~FKSTO NE 'X' AND

B~WERKS IN S_WERKS AND

  • D~DISPO IN S_DISPO AND

B~MATNR IN S_MATNR.

SORT ITABL BY VBELN POSNR.

DELETE ADJACENT DUPLICATES FROM ITABL COMPARING VBELN POSNR.

LOOP AT ITABL.

READ TABLE ITAB1L WITH KEY MATNR = ITABL-MATNR.

IF SY-SUBRC EQ 0.

PERFORM INR_CONVERSION1 USING ITABL-WAERK ITABL-KURRF

CHANGING ITABL-NETWR.

ITAB1L-FKIMG = ITAB1L-FKIMG + ITABL-FKIMG.

ITAB1L-NETWR = ITAB1L-NETWR + ITABL-NETWR.

ITAB1L-KUNAG = ITABL-KUNAG.

ITAB1L-VBELN = ITABL-VBELN.

ITAB1L-FKDAT = ITABL-FKDAT.

MODIFY ITAB1L INDEX SY-TABIX.

ELSE.

CLEAR ITAB1.

PERFORM INR_CONVERSION1 USING ITABL-WAERK ITABL-KURRF

CHANGING ITABL-NETWR.

ITAB1L-MATNR = ITABL-MATNR.

ITAB1L-FKIMG = ITABL-FKIMG.

ITAB1L-NETWR = ITABL-NETWR.

ITAB1L-KUNAG = ITABL-KUNAG.

ITAB1L-VBELN = ITABL-VBELN.

ITAB1L-FKDAT = ITABL-FKDAT.

APPEND ITAB1L.

ENDIF.

ENDLOOP.

ENDFORM. " YEAR_CALC

&----


*& Form INR_CONVERSION1

&----


  • text

----


  • -->P_ITABL_WAERK text *

  • -->P_ITABL_KURRF text *

  • <--P_ITABL_NETWR text *

----


FORM INR_CONVERSION1 USING P_WAERK

P_KURRF

CHANGING P_NETWR.

DATA : CON_CUR TYPE I.

IF P_WAERK NE 'INR'.

SELECT SINGLE * FROM TCURX WHERE CURRKEY EQ P_WAERK.

IF SY-SUBRC EQ 0.

IF P_WAERK = 'IDR'.

P_NETWR = P_NETWR * 100.

CON_CUR = SPACE.

ELSE.

CON_CUR = 10 ** ( TCURX-CURRDEC - 2 ).

ENDIF.

ELSE.

IF P_WAERK = 'IDR'.

P_NETWR = P_NETWR * 100.

CON_CUR = SPACE.

ENDIF.

ENDIF.

IF NOT CON_CUR IS INITIAL.

P_NETWR = P_NETWR / CON_CUR.

ENDIF.

ENDIF.

P_NETWR = P_NETWR * P_KURRF.

ENDFORM. " INR_CONVERSION1

&----


*& Form MODULE_GET

&----


  • text

----


FORM MODULE_GET.

SELECT MATNR MAX( MONYR ) INTO (ZSD_MOD-MATNR, ZSD_MOD-MONYR)

FROM ZSD_MOD WHERE MATNR EQ ITAB1-MATNR AND

MONYR LE SY-DATUM+0(6)

GROUP BY MATNR MONYR.

ENDSELECT.

SELECT SINGLE * FROM ZSD_MOD WHERE MATNR = ITAB1-MATNR AND

MONYR = ZSD_MOD-MONYR.

IF SY-SUBRC EQ 0.

ITAB1-DISPO = ZSD_MOD-DISPO.

ELSE.

ITAB1-DISPO = SPACE.

ENDIF.

*----


ALTERATION OCCURS

ENDFORM. " MODULE_GET

&----


*& Form MODULE_GET1

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM MODULE_GET1 .

SELECT MATNR MAX( MONYR ) INTO (ZSD_MOD-MATNR, ZSD_MOD-MONYR)

FROM ZSD_MOD WHERE MATNR EQ ITAB-MATNR AND

MONYR LE SY-DATUM+0(6)

GROUP BY MATNR MONYR.

ENDSELECT.

SELECT SINGLE * FROM ZSD_MOD WHERE MATNR = ITAB-MATNR AND

MONYR = ZSD_MOD-MONYR.

IF SY-SUBRC EQ 0.

ITAB1-DISPO = ZSD_MOD-DISPO.

ELSE.

ITAB1-DISPO = SPACE.

ENDIF.

ENDFORM. " MODULE_GET1

&----


*& Form ALV

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM ALV .

WA_FIELDCAT-COL_POS = 1.

WA_FIELDCAT-TABNAME = 'ALV'.

WA_FIELDCAT-FIELDNAME = 'SNO'.

WA_FIELDCAT-SELTEXT_L = 'S. NO'.

*WA_FIELDCAT-DO_SUM = 'X'.

WA_FIELDCAT-OUTPUTLEN = 3.

WA_FIELDCAT-JUST = 'R'.

APPEND WA_FIELDCAT TO FIELDCAT.

WA_FIELDCAT-COL_POS = 2.

WA_FIELDCAT-TABNAME = 'ALV'.

WA_FIELDCAT-FIELDNAME = 'LABOR'.

WA_FIELDCAT-SELTEXT_L = 'SOU'.

*WA_FIELDCAT-DO_SUM = 'X'.

WA_FIELDCAT-OUTPUTLEN = 8.

WA_FIELDCAT-JUST = 'R'.

APPEND WA_FIELDCAT TO FIELDCAT.

WA_FIELDCAT-COL_POS = 3.

WA_FIELDCAT-TABNAME = 'ALV'.

WA_FIELDCAT-FIELDNAME = 'USEDIN'.

WA_FIELDCAT-SELTEXT_L = 'APPLICATION'.

*WA_FIELDCAT-DO_SUM = 'X'.

WA_FIELDCAT-OUTPUTLEN = 15.

WA_FIELDCAT-JUST = 'R'.

APPEND WA_FIELDCAT TO FIELDCAT.

WA_FIELDCAT-COL_POS = 4.

WA_FIELDCAT-TABNAME = 'ALV'.

WA_FIELDCAT-FIELDNAME = 'CLINT_999'.

WA_FIELDCAT-SELTEXT_L = 'CATEGORY'.

*WA_FIELDCAT-DO_SUM = 'X'.

WA_FIELDCAT-OUTPUTLEN = 10.

WA_FIELDCAT-JUST = 'R'.

APPEND WA_FIELDCAT TO FIELDCAT.

WA_FIELDCAT-COL_POS = 5.

WA_FIELDCAT-TABNAME = 'ALV'.

WA_FIELDCAT-FIELDNAME = 'KSCHL'.

WA_FIELDCAT-SELTEXT_L = 'CATEGORY NAME'.

*WA_FIELDCAT-DO_SUM = 'X'.

WA_FIELDCAT-OUTPUTLEN = 12.

WA_FIELDCAT-JUST = 'L'.

APPEND WA_FIELDCAT TO FIELDCAT.

WA_FIELDCAT-COL_POS = 6.

WA_FIELDCAT-TABNAME = 'ALV'.

WA_FIELDCAT-FIELDNAME = 'NAME1'.

WA_FIELDCAT-SELTEXT_L = 'CUSTOMER GROUP'.

*WA_FIELDCAT-DO_SUM = 'X'.

WA_FIELDCAT-OUTPUTLEN = 25.

WA_FIELDCAT-JUST = 'R'.

APPEND WA_FIELDCAT TO FIELDCAT.

WA_FIELDCAT-COL_POS = 7.

WA_FIELDCAT-TABNAME = 'ALV'.

WA_FIELDCAT-FIELDNAME = 'WERKS'.

WA_FIELDCAT-SELTEXT_L = 'PLANT'.

*WA_FIELDCAT-DO_SUM = 'X'.

WA_FIELDCAT-OUTPUTLEN = 6.

WA_FIELDCAT-JUST = 'R'.

APPEND WA_FIELDCAT TO FIELDCAT.

WA_FIELDCAT-COL_POS = 8.

WA_FIELDCAT-TABNAME = 'ALV'.

WA_FIELDCAT-FIELDNAME = 'SPART'.

WA_FIELDCAT-SELTEXT_L = 'DIVISION'.

*WA_FIELDCAT-DO_SUM = 'X'.

WA_FIELDCAT-OUTPUTLEN = 15.

WA_FIELDCAT-JUST = 'R'.

APPEND WA_FIELDCAT TO FIELDCAT.

WA_FIELDCAT-COL_POS = 9..

WA_FIELDCAT-TABNAME = 'ALV'.

WA_FIELDCAT-FIELDNAME = 'VTWEG'.

WA_FIELDCAT-SELTEXT_L = 'DISTRIBUTION CHANNEL'.

*WA_FIELDCAT-DO_SUM = 'X'.

WA_FIELDCAT-OUTPUTLEN = 15.

WA_FIELDCAT-JUST = 'R'.

APPEND WA_FIELDCAT TO FIELDCAT.

WA_FIELDCAT-COL_POS = 10.

WA_FIELDCAT-TABNAME = 'ALV'.

WA_FIELDCAT-FIELDNAME = 'BEGRU'.

WA_FIELDCAT-SELTEXT_L = 'CCM'.

*WA_FIELDCAT-DO_SUM = 'X'.

WA_FIELDCAT-OUTPUTLEN = 15.

WA_FIELDCAT-JUST = 'R'.

APPEND WA_FIELDCAT TO FIELDCAT.

WA_FIELDCAT-COL_POS = 11.

WA_FIELDCAT-TABNAME = 'ALV'.

WA_FIELDCAT-FIELDNAME = 'KUNNR'.

WA_FIELDCAT-SELTEXT_L = 'CUSTOMER NO'.

*WA_FIELDCAT-DO_SUM = 'X'.

WA_FIELDCAT-OUTPUTLEN = 15.

WA_FIELDCAT-JUST = 'R'.

APPEND WA_FIELDCAT TO FIELDCAT.

WA_FIELDCAT-COL_POS = 12.

WA_FIELDCAT-TABNAME = 'ALV'.

WA_FIELDCAT-FIELDNAME = 'KUNAG'.

WA_FIELDCAT-SELTEXT_L = 'SOLD TO PARTY'.

*WA_FIELDCAT-DO_SUM = 'X'.

WA_FIELDCAT-OUTPUTLEN = 15.

WA_FIELDCAT-JUST = 'R'.

APPEND WA_FIELDCAT TO FIELDCAT.

WA_FIELDCAT-COL_POS = 13.

WA_FIELDCAT-TABNAME = 'ALV'.

WA_FIELDCAT-FIELDNAME = 'NAME2'.

WA_FIELDCAT-SELTEXT_L = 'CUSTOMER NAME'.

*WA_FIELDCAT-DO_SUM = 'X'.

WA_FIELDCAT-OUTPUTLEN = 15.

WA_FIELDCAT-JUST = 'L'.

APPEND WA_FIELDCAT TO FIELDCAT.

WA_FIELDCAT-COL_POS = 14.

WA_FIELDCAT-TABNAME = 'ALV'.

WA_FIELDCAT-FIELDNAME = 'MATNR'.

WA_FIELDCAT-SELTEXT_L = 'MATERIAL'.

*WA_FIELDCAT-DO_SUM = 'X'.

WA_FIELDCAT-OUTPUTLEN = 15.

WA_FIELDCAT-JUST = 'R'.

APPEND WA_FIELDCAT TO FIELDCAT.

WA_FIELDCAT-COL_POS = 15.

WA_FIELDCAT-TABNAME = 'ALV'.

WA_FIELDCAT-FIELDNAME = 'MAKTX'.

WA_FIELDCAT-SELTEXT_L = 'MATERIAL DESC'.

*WA_FIELDCAT-DO_SUM = 'X'.

WA_FIELDCAT-OUTPUTLEN = 15.

WA_FIELDCAT-JUST = 'L'.

APPEND WA_FIELDCAT TO FIELDCAT.

WA_FIELDCAT-COL_POS = 16.

WA_FIELDCAT-TABNAME = 'ALV'.

WA_FIELDCAT-FIELDNAME = 'BISMT'.

WA_FIELDCAT-SELTEXT_L = 'OLD MAT NUMBER'.

*WA_FIELDCAT-DO_SUM = 'X'.

WA_FIELDCAT-OUTPUTLEN = 15.

WA_FIELDCAT-JUST = 'R'.

APPEND WA_FIELDCAT TO FIELDCAT.

WA_FIELDCAT-COL_POS = 17.

WA_FIELDCAT-TABNAME = 'ALV'.

WA_FIELDCAT-FIELDNAME = 'DISPO'.

WA_FIELDCAT-SELTEXT_L = 'MOD'.

*WA_FIELDCAT-DO_SUM = 'X'.

WA_FIELDCAT-OUTPUTLEN = 15.

WA_FIELDCAT-JUST = 'R'.

APPEND WA_FIELDCAT TO FIELDCAT.

WA_FIELDCAT-COL_POS = 18.

WA_FIELDCAT-TABNAME = 'ALV'.

WA_FIELDCAT-FIELDNAME = 'AVGQTY'.

WA_FIELDCAT-SELTEXT_L = 'QUANTITY'.

*WA_FIELDCAT-DO_SUM = 'X'.

WA_FIELDCAT-OUTPUTLEN = 15.

WA_FIELDCAT-JUST = 'R'.

APPEND WA_FIELDCAT TO FIELDCAT.

WA_FIELDCAT-COL_POS = 19.

WA_FIELDCAT-TABNAME = 'ALV'.

WA_FIELDCAT-FIELDNAME = 'AVGVAL'.

WA_FIELDCAT-SELTEXT_L = 'FPS VALUE'.

*WA_FIELDCAT-DO_SUM = 'X'.

WA_FIELDCAT-OUTPUTLEN = 15.

WA_FIELDCAT-JUST = 'R'.

APPEND WA_FIELDCAT TO FIELDCAT.

WA_FIELDCAT-COL_POS = 20.

WA_FIELDCAT-TABNAME = 'ALV'.

WA_FIELDCAT-FIELDNAME = 'YF2VAL'.

WA_FIELDCAT-SELTEXT_L = 'SER.STN VALUE'.

*WA_FIELDCAT-DO_SUM = 'X'.

WA_FIELDCAT-OUTPUTLEN = 15.

WA_FIELDCAT-JUST = 'R'.

APPEND WA_FIELDCAT TO FIELDCAT.

WA_FIELDCAT-COL_POS = 21.

WA_FIELDCAT-TABNAME = 'ALV'.

WA_FIELDCAT-FIELDNAME = 'TOTALVAL'.

WA_FIELDCAT-SELTEXT_L = 'TOTAL VALUE'.

*WA_FIELDCAT-DO_SUM = 'X'.

WA_FIELDCAT-OUTPUTLEN = 15.

WA_FIELDCAT-JUST = 'R'.

APPEND WA_FIELDCAT TO FIELDCAT.

WA_FIELDCAT-COL_POS = 22.

WA_FIELDCAT-TABNAME = 'ALV'.

WA_FIELDCAT-FIELDNAME = 'G2VAL'.

WA_FIELDCAT-SELTEXT_L = 'CREDIT NOTE VALUE'.

*WA_FIELDCAT-DO_SUM = 'X'.

WA_FIELDCAT-OUTPUTLEN = 15.

WA_FIELDCAT-JUST = 'R'.

APPEND WA_FIELDCAT TO FIELDCAT.

WA_FIELDCAT-COL_POS = 23.

WA_FIELDCAT-TABNAME = 'ALV'.

WA_FIELDCAT-FIELDNAME = 'FINALVAL'.

WA_FIELDCAT-SELTEXT_L = 'FINAL VALUE'.

*WA_FIELDCAT-DO_SUM = 'X'.

WA_FIELDCAT-OUTPUTLEN = 15.

WA_FIELDCAT-JUST = 'R'.

APPEND WA_FIELDCAT TO FIELDCAT.

WA_FIELDCAT-COL_POS = 24.

WA_FIELDCAT-TABNAME = 'ALV'.

WA_FIELDCAT-FIELDNAME = 'ORT02'.

WA_FIELDCAT-SELTEXT_L = 'DISTRICT'.

*WA_FIELDCAT-DO_SUM = 'X'.

WA_FIELDCAT-OUTPUTLEN = 15.

WA_FIELDCAT-JUST = 'R'.

APPEND WA_FIELDCAT TO FIELDCAT.

LAYOUT-ZEBRA = 'X'.

*LAYOUT-BOX_FIELDNAME = W_BOXNAM.

LAYOUT-COLWIDTH_OPTIMIZE = 'X'.

CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'

EXPORTING

I_CALLBACK_PROGRAM = SY-REPID

IS_LAYOUT = LAYOUT

IT_FIELDCAT = FIELDCAT

I_DEFAULT = 'X'

I_SAVE = 'A'

IT_EVENTS = EVENTSTAB[]

TABLES

T_OUTTAB = ALV

EXCEPTIONS

PROGRAM_ERROR = 1

OTHERS = 2.

IF SY-SUBRC <> 0.

  • MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO

  • WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.

ENDIF.

ENDFORM. " ALV

&----


*& Form FILL_EVENTSTAB

&----


  • text

----


  • -->P_EVENTSTAB text

----


FORM FILL_EVENTSTAB TABLES P_EVENTSTAB STRUCTURE EVENTSTAB.

CALL FUNCTION 'REUSE_ALV_EVENTS_GET'

EXPORTING

I_LIST_TYPE = 0

IMPORTING

ET_EVENTS = P_EVENTSTAB[]

EXCEPTIONS

LIST_TYPE_WRONG = 1

OTHERS = 2.

READ TABLE P_EVENTSTAB WITH KEY NAME = SLIS_EV_TOP_OF_PAGE.

IF SY-SUBRC = 0 .

MOVE 'TOP_OF_PAGE' TO P_EVENTSTAB-FORM.

APPEND P_EVENTSTAB.

ENDIF.

ENDFORM. " FILL_EVENTSTAB

&----


*& Form TOP_OF_PAGE

&----


  • text

----


FORM TOP_OF_PAGE.

CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'

EXPORTING

IT_LIST_COMMENTARY = HEADING[]

EXCEPTIONS

OTHERS = 1.

ENDFORM. "top_of_page

&----


*& Form FILL_HEADINGTABLE

&----


  • text

----


  • -->P_HEADING text

  • -->P_1746 text

----


FORM FILL_HEADINGTABLE TABLES P_HEADING STRUCTURE HEADING

USING TABLENAME.

  • DATA: BEGIN OF ITAB_H2 OCCURS 100,

  • KURZTEXT(40),

  • END OF ITAB_H2.

DATA: H2(250).

DATA: S1DAT(2), S2DAT(2), S3DAT(4),

S4DAT(2), S5DAT(2), S6DAT(4).

DATA: FDAT(12),

TDAT(12).

CASE TABLENAME.

WHEN 'HEADING'.

P_HEADING-TYP = 'H'.

S3DAT = S_FKDAT-LOW+0(4).

  • move s3dat to fdat+4(4).

S2DAT = S_FKDAT-LOW+4(2).

  • move s2dat to fdat+2(2).

S1DAT = S_FKDAT-LOW+6(2).

  • move s1dat to fdat+0(2).

CONCATENATE S1DAT S2DAT S3DAT INTO FDAT SEPARATED BY '.'.

S6DAT = S_FKDAT-HIGH+0(4).

  • move s6dat to tdat+4(4).

S5DAT = S_FKDAT-HIGH+4(2).

  • move s5dat to tdat+2(2).

S4DAT = S_FKDAT-HIGH+6(2).

  • move s4dat to tdat+0(2).

CONCATENATE S4DAT S5DAT S6DAT INTO TDAT SEPARATED BY '.'.

CONCATENATE 'SOUWISE SALES FROM ' FDAT 'TO' TDAT INTO HEADINGTEXT1 SEPARATED BY SPACE.

P_HEADING-INFO = HEADINGTEXT1.

  • P_HEADING-pos = 'C'.

APPEND P_HEADING.

  • WHEN 'HEADING1'.

  • P_HEADING-TYP = 'S'.

  • CONCATENATE 'Division:' S_SPART-LOW INTO P_HEADING-INFO SEPARATED BY ' '.

    • P_HEADING-INFO = headingtext1.

  • APPEND P_HEADING.

ENDCASE.

ENDFORM. "FILL_HEADINGTABLE

FORM F_CURR_CON USING P_CURR

CHANGING P_VALUE.

DATA CON_CUR TYPE I.

SELECT SINGLE * FROM TCURX WHERE CURRKEY EQ P_CURR.

IF SY-SUBRC EQ 0.

IF P_CURR = 'IDR'.

P_VALUE = P_VALUE * 100.

CON_CUR = SPACE.

ELSE.

CON_CUR = 10 ** ( TCURX-CURRDEC - 2 ).

ENDIF.

ELSE.

IF P_CURR = 'IDR'.

P_VALUE = P_VALUE * 100.

CON_CUR = SPACE.

ENDIF.

ENDIF.

IF NOT CON_CUR IS INITIAL.

P_VALUE = P_VALUE / CON_CUR.

  • P_VALUE = P_VALUE * ITAB-KURRF.

ENDIF.

P_VALUE = P_VALUE * ITAB-KURRF.

ENDFORM. " F_CURR_CON

**********

Regards

R.Rajendran

1 REPLY 1

Former Member
0 Kudos

Hi,

Please refere the below coding belons to sales report. Reward if useful.

&----


*& Report ZSP_SALES_SOU_ALV *

*& *

&----


*& *

*& *

&----


*REPORT ZSP_SALES_SOU_ALV.

REPORT ZSP_SD_PRD_CUM_SALES_1 NO STANDARD PAGE HEADING

LINE-SIZE 348

LINE-COUNT 65(3).

TABLES : VBRK,

VBRP,

J_1IEXCHDR,

MARA,

MARC,

TCURX,

KONP,

KNA1,

KNMT,

ZSD_MOD,

AUSP,

KNVV,

ZCUG,

ZTHACLAMAT,

ZTHACLA,

ZSD_EMPMST .

TYPE-POOLS: SLIS.

DATA: HEADINGTEXT1(50).

DATA : BEGIN OF ITAB OCCURS 0,

VBELN LIKE VBRK-VBELN,

FKDAT LIKE VBRK-FKDAT,

VTWEG LIKE VBRK-VTWEG,

SPART LIKE VBRK-SPART, "ADDED FOR CCM CODE ADDITION.

WAERK LIKE VBRK-WAERK,

KURRF LIKE VBRK-KURRF,

KUNAG LIKE VBRK-KUNAG,

KNUMV LIKE VBRK-KNUMV,

POSNR LIKE VBRP-POSNR,

FKIMG LIKE VBRP-FKIMG,

NETWR LIKE VBRP-NETWR,

MATNR LIKE VBRP-MATNR,

BEGRU LIKE KNVV-BEGRU,

LABOR LIKE MARA-LABOR,

END OF ITAB.

DATA : ITABYF2 LIKE ITAB OCCURS 0 WITH HEADER LINE.

DATA : ITABG2 LIKE ITAB OCCURS 0 WITH HEADER LINE.

DATA : BEGIN OF IKONV OCCURS 0,

KNUMV LIKE KONV-KNUMV,

KPOSN LIKE KONV-KPOSN,

KSCHL LIKE KONV-KSCHL,

KWERT LIKE KONV-KWERT,

WAERS LIKE KONV-WAERS,

END OF IKONV.

DATA : BEGIN OF ITAB1 OCCURS 0,

KUNAG LIKE VBRK-KUNAG,

VBELN LIKE VBRK-VBELN,

FKDAT LIKE VBRK-FKDAT,

MATNR LIKE VBRP-MATNR,

BISMT LIKE MARA-BISMT,

EXTWG LIKE MARA-EXTWG,

FKIMG LIKE VBRP-FKIMG,

NETWR LIKE VBRP-NETWR,

DISPO LIKE MARC-DISPO,

ATWRTC LIKE AUSP-ATWRT,

VTWEG LIKE VBRK-VTWEG,

SPART LIKE VBRK-SPART,

BEGRU LIKE KNVV-BEGRU, "FOR CCM CODE ADDITION.

WERKS LIKE MARC-WERKS,

CRVAL LIKE VBRP-NETWR,

LABOR LIKE MARA-LABOR,

END OF ITAB1.

DATA : BEGIN OF IFINAL OCCURS 0,

BEGRU LIKE KNVV-BEGRU,

KUNAG LIKE VBRK-KUNAG,

F2VAL LIKE VBRK-NETWR,

YF2VAL LIKE VBRK-NETWR,

G2VAL LIKE VBRK-NETWR,

END OF IFINAL.

DATA : BEGIN OF IKNA1 OCCURS 0,

KUNNR LIKE KNA1-KUNNR,

NAME1 LIKE KNA1-NAME1,

ALTKN LIKE KNB1-ALTKN,

BEGRU LIKE KNVV-BEGRU,

ORT02 LIKE KNA1-ORT02,

END OF IKNA1.

DATA : BEGIN OF IMARA OCCURS 0,

MATNR LIKE MARA-MATNR,

BISMT LIKE MARA-BISMT,

EXTWG LIKE MARA-EXTWG,

LABOR LIKE MARA-LABOR,

MAKTX LIKE MAKT-MAKTX,

END OF IMARA.

DATA : BEGIN OF IZSD_MOD OCCURS 0,

MATNR LIKE ZSD_MOD-MATNR,

MONYR LIKE ZSD_MOD-MONYR,

DISPO LIKE ZSD_MOD-DISPO,

END OF IZSD_MOD.

DATA : BEGIN OF ITABTMP1 OCCURS 0,

VBELN LIKE VBRK-VBELN,

FKDAT LIKE VBRK-FKDAT,

VTWEG LIKE VBRK-VTWEG,

WAERK LIKE VBRK-WAERK,

KURRF LIKE VBRK-KURRF,

KUNAG LIKE VBRK-KUNAG,

POSNR LIKE VBRP-POSNR,

FKIMG LIKE VBRP-FKIMG,

NETWR LIKE VBRP-NETWR,

MATNR(50) TYPE C,

BEGRU LIKE KNVV-BEGRU,

END OF ITABTMP1.

DATA : BEGIN OF ICAT OCCURS 0,

OBJEK LIKE AUSP-OBJEK,

ATINN LIKE AUSP-ATINN,

ATWRT LIKE AUSP-ATWRT,

END OF ICAT.

DATA : BEGIN OF ICAT1 OCCURS 0,

ATWRT LIKE CAWN-ATWRT,

ATWTB LIKE CAWNT-ATWTB,

END OF ICAT1.

DATA: BEGIN OF CITAB OCCURS 0,

MATNR LIKE ZTHACLAMAT-MATNR,

CLINT_999 LIKE ZTHACLAMAT-CLINT_999,

USEDIN LIKE ZTHACLAMAT-USEDIN,

KSCHL LIKE ZTHACLA-KSCHL,

END OF CITAB.

DATA : ITABTMP LIKE ITAB OCCURS 0 WITH HEADER LINE.

DATA : ITABL LIKE ITAB OCCURS 0 WITH HEADER LINE.

DATA : ITAB1L LIKE ITAB1 OCCURS 0 WITH HEADER LINE.

DATA : ICATTMP LIKE ICAT OCCURS 0 WITH HEADER LINE.

DATA: BEGIN OF IBEGRU OCCURS 0,

KUNNR LIKE KNVV-KUNNR,

BEGRU LIKE KNVV-BEGRU,

END OF IBEGRU.

DATA: BEGIN OF IEMP OCCURS 0,

ECODE LIKE ZSD_EMPMST-ECODE,

ENAME LIKE ZSD_EMPMST-ENAME,

KUNNR LIKE KNVV-KUNNR,

END OF IEMP.

DATA: ITAB1TMP LIKE ITAB1 OCCURS 0 WITH HEADER LINE.

DATA : TOTAL_QTY TYPE P DECIMALS 3,

GTOTAL_QTY TYPE P DECIMALS 3,

TOTAL_VALUE TYPE P DECIMALS 2,

GTOTAL_VALUE TYPE P DECIMALS 2,

GTOTAL_CRVAL TYPE P DECIMALS 2,

QTYL_TOTAL TYPE P DECIMALS 3,

VALUEL_TOTAL TYPE P DECIMALS 2.

DATA : FROM_DATE TYPE D,

TO_DATE TYPE D.

DATA : PRD_PER TYPE P DECIMALS 3,

GPRD_PER TYPE P DECIMALS 3,

SNO TYPE I.

DATA : WA_MATNR LIKE AUSP-OBJEK.

DATA : DATLM LIKE SY-DATUM,

DATLH LIKE SY-DATUM,

DATLMM LIKE SY-DATUM,

DATLHH LIKE SY-DATUM.

DATA : DATDIFF LIKE KOMP-ANZ_MONATE.

DATA: MON TYPE P.

DATA: AVGQTY TYPE P,

AVGVAL TYPE P DECIMALS 2.

DATA: TOTAL_AVGQTY TYPE P,

TOTALVAL TYPE P DECIMALS 3,

FINALVAL TYPE P DECIMALS 3.

DATA: BEGIN OF ITEMP OCCURS 0,

SDISP LIKE ZSD_MOD-DISPO,

END OF ITEMP.

DATA: COL, LEN TYPE I.

DATA: W_IX LIKE SY-TABIX.

DATA: BEGIN OF ALV OCCURS 0,

SNO TYPE I,

LABOR LIKE MARA-LABOR,

USEDIN LIKE ZTHACLAMAT-USEDIN,

CLINT_999 LIKE ZTHACLAMAT-CLINT_999,

KSCHL LIKE ZTHACLA-KSCHL,

NAME1 LIKE ZCUG-NAME1,

WERKS LIKE MARC-WERKS,

SPART LIKE VBRK-SPART,

VTWEG LIKE VBRK-VTWEG,

BEGRU LIKE KNVV-BEGRU,

KUNNR LIKE KNA1-KUNNR,

KUNAG LIKE VBRK-KUNAG,

NAME2 LIKE KNA1-NAME1,

MATNR LIKE MARA-MATNR,

MAKTX LIKE MAKT-MAKTX,

BISMT LIKE MARA-BISMT,

DISPO LIKE MARC-DISPO,

VBELN LIKE VBRK-VBELN,

FKDAT LIKE VBRK-FKDAT,

EXTWG LIKE MARA-EXTWG,

ATWRTC LIKE AUSP-ATWRT,

  • VTWEG LIKE VBRK-VTWEG,

AVGQTY TYPE I,

AVGVAL TYPE I,

CRVAL TYPE I,

F2VAL TYPE P DECIMALS 2,

YF2VAL TYPE P DECIMALS 2,

G2VAL TYPE P DECIMALS 2,

TOTALVAL TYPE P DECIMALS 2,

FINALVAL TYPE P DECIMALS 2,

ORT02 LIKE KNA1-ORT02,

END OF ALV.

DATA: ALV1 LIKE ALV OCCURS 0 WITH HEADER LINE.

DATA : FIELDCAT TYPE SLIS_T_FIELDCAT_ALV,

WA_FIELDCAT TYPE SLIS_FIELDCAT_ALV,

LAYOUT TYPE SLIS_LAYOUT_ALV.

DATA : EVENTSTAB TYPE SLIS_T_EVENT WITH HEADER LINE.

DATA : HEADING TYPE SLIS_T_LISTHEADER WITH HEADER LINE,

HEADING1 TYPE SLIS_T_LISTHEADER WITH HEADER LINE,

HEADING2 TYPE SLIS_T_LISTHEADER WITH HEADER LINE,

HEADING3 TYPE SLIS_T_LISTHEADER WITH HEADER LINE.

SELECTION-SCREEN : BEGIN OF BLOCK KARTHI WITH FRAME.

SELECT-OPTIONS : S_FKDAT FOR VBRK-FKDAT OBLIGATORY,

S_WERKS FOR VBRP-WERKS, "OBLIGATORY,

S_VTWEG FOR VBRK-VTWEG,

S_SPART FOR VBRK-SPART,

S_KUNAG FOR VBRK-KUNAG,

S_MATNR FOR VBRP-MATNR,

S_ATWRTC FOR AUSP-ATWRT NO-EXTENSION NO INTERVALS,

S_DISPO FOR MARC-DISPO,

S_LABOR FOR MARA-LABOR,

S_BEGRU FOR KNVV-BEGRU,

S_MATKL FOR MARA-MATKL,

S_ORT02 FOR KNA1-ORT02.

PARAMETERS : S_USEDIN LIKE ZTHACLAMAT-USEDIN.

SELECTION-SCREEN : END OF BLOCK KARTHI.

INITIALIZATION.

START-OF-SELECTION.

*----


ALTERATION

DATLM = S_FKDAT-LOW.

DATLH = S_FKDAT-HIGH.

DATLMM = DATLM+0(6).

DATLHH = DATLH+0(6).

CALL FUNCTION 'MONTHS_BETWEEN_TWO_DATES_NEW'

EXPORTING

I_DATUM_BIS = DATLHH

I_DATUM_VON = DATLMM

I_KZ_INCL_BIS = ' '

I_KZ_VOLLE_MONATE = 'X'

IMPORTING

E_MONATE = DATDIFF.

MON = DATDIFF + 1.

*WRITE:/ MON .

*----


END OF ALTERATION

*FPS INVOICE

SELECT A~VBELN A~FKDAT A~VTWEG A~SPART A~WAERK A~KURRF A~KUNAG A~KNUMV

B~POSNR B~FKIMG B~NETWR B~MATNR

D~BEGRU E~LABOR E~MATKL

INTO CORRESPONDING FIELDS OF TABLE ITAB

FROM VBRK AS A INNER JOIN VBRP AS B

ON A~VBELN EQ B~VBELN

INNER JOIN J_1IEXCHDR AS C

ON A~VBELN EQ C~RDOC

INNER JOIN KNVV AS D

ON D~KUNNR EQ A~KUNAG AND

D~VKORG EQ A~VKORG AND

D~SPART EQ A~SPART AND

D~BEGRU NE SPACE

INNER JOIN MARA AS E

ON E~MATNR EQ B~MATNR

WHERE A~FKDAT IN S_FKDAT AND

A~FKART EQ 'F2' AND

A~VTWEG IN S_VTWEG AND

A~SPART IN S_SPART AND

A~KUNAG IN S_KUNAG AND

A~FKSTO NE 'X' AND

B~WERKS IN S_WERKS AND

C~TRNTYP = 'DLFC' AND

E~LABOR IN S_LABOR AND

  • C~SRGRP IN ('01','02','03','31','32','33','41','42','43',

  • '81','82','83','95','55','45', '48') AND

B~MATNR IN S_MATNR AND

D~BEGRU IN S_BEGRU AND

E~MATKL IN S_MATKL.

SORT ITAB BY VBELN POSNR BEGRU DESCENDING.

DELETE ADJACENT DUPLICATES FROM ITAB COMPARING VBELN POSNR.

IF ITAB[] IS INITIAL.

MESSAGE E000(8I) WITH 'No Data Found'.

EXIT.

ENDIF.

    • CREDIT NOTE DETAILS

  • SELECT AVBELN AFKDAT AVTWEG ASPART AWAERK AKUNAG AKUNAG AKNUMV

  • BPOSNR BFKIMG BNETWR BMATNR D~BEGRU

  • INTO TABLE ITABG2

  • FROM VBRK AS A INNER JOIN VBRP AS B

  • ON AVBELN EQ BVBELN

  • INNER JOIN J_1IEXCHDR AS C

  • ON CRDOC EQ AVBELN

  • INNER JOIN KNVV AS D

  • ON DKUNNR EQ AKUNAG

  • WHERE A~FKDAT IN S_FKDAT AND

  • A~FKART EQ 'G2' AND

  • A~VTWEG IN S_VTWEG AND

  • A~SPART IN S_SPART AND

  • A~KUNAG IN S_KUNAG AND

  • A~FKSTO NE 'X' AND

  • B~WERKS IN S_WERKS.

*

  • SORT ITABG2 BY VBELN POSNR.

  • DELETE ADJACENT DUPLICATES FROM ITABG2 COMPARING VBELN POSNR.

  • IF NOT ITABG2[] IS INITIAL.

  • SELECT KNUMV KPOSN KSCHL KWERT WAERS

  • INTO TABLE IKONV FROM KONV

  • FOR ALL ENTRIES IN ITABG2

  • WHERE KNUMV EQ ITABG2-KNUMV

  • AND KPOSN EQ ITABG2-POSNR

  • AND KSCHL EQ 'PR00'.

*

  • SORT IKONV BY KNUMV KPOSN KWERT DESCENDING.

*

  • ENDIF.

SORT ITAB BY MATNR.

CLEAR ITABTMP.

REFRESH ITABTMP.

ITABTMP[] = ITAB[].

SORT ITABTMP BY MATNR.

DELETE ADJACENT DUPLICATES FROM ITABTMP COMPARING MATNR.

SELECT AMATNR ABISMT AEXTWG ALABOR B~MAKTX INTO TABLE IMARA

FROM MARA AS A INNER JOIN MAKT AS B

ON AMATNR EQ BMATNR

FOR ALL ENTRIES IN ITABTMP

WHERE AMATNR EQ ITABTMP-MATNR AND ALABOR IN S_LABOR.

LOOP AT ITABTMP.

MOVE-CORRESPONDING ITABTMP TO ITABTMP1.

APPEND ITABTMP1.

ENDLOOP.

  • Product category fetching

*==========================

  • SELECT OBJEK ATINN ATWRT INTO TABLE ICAT

  • FROM AUSP

  • FOR ALL ENTRIES IN ITABTMP1

  • WHERE OBJEK EQ ITABTMP1-MATNR AND

  • ATINN EQ '41' AND

  • ATWRT IN S_ATWRTC.

*

  • ICATTMP[] = ICAT[].

  • SORT ICATTMP BY ATWRT.

  • DELETE ADJACENT DUPLICATES FROM ICATTMP COMPARING ATWRT.

*

  • SELECT AATWRT BATWTB INTO TABLE ICAT1

  • FROM CAWN AS A INNER JOIN CAWNT AS B

  • ON AATINN EQ BATINN AND

  • AATZHL EQ BATZHL

  • FOR ALL ENTRIES IN ICATTMP

  • WHERE A~ATINN EQ '41' AND

  • A~ATWRT EQ ICATTMP-ATWRT.

SORT ITAB BY VBELN POSNR.

IF S_DISPO EQ SPACE.

LOOP AT ITAB.

WA_MATNR = ITAB-MATNR.

READ TABLE ICAT WITH KEY OBJEK = WA_MATNR.

IF SY-SUBRC NE 0 AND S_ATWRTC-LOW NE SPACE.

DELETE ITAB.

CONTINUE.

ELSEIF SY-SUBRC NE 0.

ICAT-ATWRT = SPACE.

ENDIF.

READ TABLE ITAB1 WITH KEY MATNR = ITAB-MATNR.

IF SY-SUBRC EQ 0.

PERFORM INR_CONVERSION.

PERFORM MODULE_GET.

ITAB1-FKIMG = ITAB1-FKIMG + ITAB-FKIMG.

ITAB1-NETWR = ITAB1-NETWR + ITAB-NETWR.

ITAB1-KUNAG = ITAB-KUNAG.

ITAB1-VBELN = ITAB-VBELN.

ITAB1-FKDAT = ITAB-FKDAT.

ITAB1-VTWEG = ITAB-VTWEG. "FOR CCM CODE ADDITION.

ITAB1-SPART = ITAB-SPART. "FOR CCM CODE ADDITION.

ITAB1-BEGRU = ITAB-BEGRU.

ITAB1-LABOR = ITAB-LABOR.

  • IF S_DISPO = SPACE.

MODIFY ITAB1 INDEX SY-TABIX.

ELSE.

PERFORM INR_CONVERSION.

PERFORM MODULE_GET1.

ITAB1-WERKS = MARC-WERKS.

ITAB1-MATNR = ITAB-MATNR.

ITAB1-FKIMG = ITAB-FKIMG.

ITAB1-NETWR = ITAB-NETWR.

ITAB1-KUNAG = ITAB-KUNAG.

ITAB1-VBELN = ITAB-VBELN.

ITAB1-FKDAT = ITAB-FKDAT.

ITAB1-ATWRTC = ICAT-ATWRT.

ITAB1-VTWEG = ITAB-VTWEG. "FOR CCM CODE ADDITION.

ITAB1-SPART = ITAB-SPART. "FOR CCM CODE ADDITION.

ITAB1-BEGRU = ITAB-BEGRU.

ITAB1-LABOR = ITAB-LABOR.

APPEND ITAB1.

ENDIF.

CLEAR : ITAB1, ITAB.

ENDLOOP.

ELSE.

LOOP AT ITAB.

WA_MATNR = ITAB-MATNR.

READ TABLE ICAT WITH KEY OBJEK = WA_MATNR.

IF SY-SUBRC NE 0 AND S_ATWRTC-LOW NE SPACE.

DELETE ITAB.

CONTINUE.

ELSEIF SY-SUBRC NE 0.

ICAT-ATWRT = SPACE.

ENDIF.

READ TABLE ITAB1 WITH KEY MATNR = ITAB-MATNR.

IF SY-SUBRC EQ 0.

PERFORM INR_CONVERSION.

PERFORM MODULE_GET.

ITAB1-FKIMG = ITAB1-FKIMG + ITAB-FKIMG.

ITAB1-NETWR = ITAB1-NETWR + ITAB-NETWR.

ITAB1-KUNAG = ITAB-KUNAG.

ITAB1-VBELN = ITAB-VBELN.

ITAB1-FKDAT = ITAB-FKDAT.

  • IF S_DISPO = SPACE.

ITAB1-VTWEG = ITAB-VTWEG. "FOR CCM CODE ADDITION.

ITAB1-SPART = ITAB-SPART. "FOR CCM CODE ADDITION.

ITAB1-LABOR = ITAB-LABOR.

ITAB1-BEGRU = ITAB-BEGRU. "FOR ADDITION OF BEGRU.

MODIFY ITAB1 INDEX SY-TABIX.

ELSE.

PERFORM INR_CONVERSION.

PERFORM MODULE_GET1.

ITAB1-MATNR = ITAB-MATNR.

ITAB1-FKIMG = ITAB-FKIMG.

ITAB1-NETWR = ITAB-NETWR.

ITAB1-KUNAG = ITAB-KUNAG.

ITAB1-VBELN = ITAB-VBELN.

ITAB1-FKDAT = ITAB-FKDAT.

ITAB1-ATWRTC = ICAT-ATWRT.

ITAB1-VTWEG = ITAB-VTWEG. "FOR CCM CODE ADDITION.

ITAB1-SPART = ITAB-SPART. "FOR CCM CODE ADDITION.

ITAB1-BEGRU = ITAB-BEGRU. "FOR ADDITION OF BEGRU.

ITAB1-LABOR = ITAB-LABOR.

APPEND ITAB1.

ENDIF.

CLEAR : ITAB1,ITAB.

ENDLOOP.

ENDIF.

  • LOOP AT ITABG2.

  • CLEAR ITAB1.

  • PERFORM INR_CONVERSION1 USING ITABG2-WAERK ITABG2-KURRF

  • CHANGING ITABG2-NETWR.

*

  • MOVE ITABG2-MATNR TO ITAB1-MATNR.

  • PERFORM MODULE_GET.

  • READ TABLE ITAB1 WITH KEY MATNR = ITABG2-MATNR.

  • IF SY-SUBRC EQ 0.

  • ITAB1-CRVAL = ITAB1-CRVAL + ITABG2-NETWR.

  • MODIFY ITAB1 INDEX SY-TABIX.

  • ELSE.

  • ITAB1-MATNR = ITABG2-MATNR.

    • ITAB1-FKIMG = ITABG2-FKIMG.

    • ITAB1-NETWR = ITABG2-NETWR.

  • ITAB1-KUNAG = ITABG2-KUNAG.

  • ITAB1-VBELN = ITABG2-VBELN.

  • ITAB1-FKDAT = ITABG2-FKDAT.

  • ITAB1-ATWRTC = ICATG2-ATWRT.

  • ITAB1-VTWEG = ITABG2-VTWEG.

  • ITAB1-SPART = ITABG2-SPART.

  • ITAB1-BEGRU = ITABG2-BEGRU.

  • APPEND ITAB1.

  • ENDIF.

  • ENDLOOP.

LOOP AT ITAB1.

IF NOT ITAB1-DISPO IN S_DISPO.

DELETE ITAB1.

ENDIF.

ENDLOOP.

LOOP AT ITAB1.

GTOTAL_QTY = GTOTAL_QTY + ITAB1-FKIMG.

GTOTAL_VALUE = GTOTAL_VALUE + ITAB1-NETWR.

GTOTAL_CRVAL = GTOTAL_CRVAL + ITAB1-CRVAL.

ENDLOOP.

*TO PICK CLASSIFICATIONS

*=======================

  • *============== TO PICK THE CCM CODE AND THE NAME

ITAB1TMP[] = ITAB1[].

SORT ITAB1TMP BY KUNAG.

LOOP AT IBEGRU.

SELECT ECODE ENAME FROM ZSD_EMPMST

INTO CORRESPONDING FIELDS OF IEMP

WHERE ECODE = IBEGRU-BEGRU.

IF SY-SUBRC = 0.

IEMP-KUNNR = IBEGRU-KUNNR.

ENDIF.

APPEND IEMP.

ENDSELECT.

ENDLOOP.

*===================END.

*Printing Starts

*===============

LOOP AT ITAB1.

SELECT SINGLE * FROM MARC WHERE MATNR = ITAB1-MATNR.

IF NOT ITAB1-DISPO IN S_DISPO.

CONTINUE.

ENDIF.

  • READ TABLE IMARA WITH KEY MATNR = ITAB1-MATNR.

*

  • SELECT SINGLE * FROM KNA1 WHERE KUNNR = ITAB1-KUNAG.

  • SELECT SINGLE * FROM ZCUG WHERE KUNNR = KNA1-KUNNR.

*

IF SY-SUBRC NE 0. KNA1-NAME1 = SPACE. ENDIF.

IF GPRD_PER LT 70.

FORMAT COLOR 5 ON.

ELSEIF GPRD_PER GE 70 AND GPRD_PER LT 90.

FORMAT COLOR 1 ON.

ELSE.

FORMAT COLOR 6 ON.

ENDIF.

  • IF S_VTWEG-LOW NE '20'.

SELECT SINGLE KDMAT INTO (KNMT-KDMAT) FROM KNMT

WHERE VKORG IN (1000,2000) AND

VTWEG IN (10,11,12,20,30,40,50,60) AND

KUNNR EQ ITAB1-KUNAG AND

MATNR EQ ITAB1-MATNR.

  • ENDIF.

  • IF S_VTWEG-LOW EQ '20'.

READ TABLE IMARA WITH KEY MATNR = ITAB1-MATNR.

IF SY-SUBRC NE 0.

CLEAR IMARA-LABOR.

ENDIF.

*ats 25.9.06

IF NOT IMARA-LABOR IN S_LABOR.

CONTINUE.

ENDIF.

IF IMARA-LABOR EQ '001' OR IMARA-LABOR EQ '002' OR IMARA-LABOR EQ '005'

OR IMARA-LABOR EQ '006' OR IMARA-LABOR EQ '007'

OR IMARA-LABOR EQ '008' .

IF ITAB1-SPART EQ 40.

CONTINUE.

ENDIF.

ENDIF.

  • END

  • SELECT SINGLE * FROM KNA1 WHERE KUNNR = ITAB1-KUNAG.

SELECT SINGLE * FROM ZCUG WHERE KUNNR = ITAB1-KUNAG.

IF SY-SUBRC EQ 0.

MOVE ZCUG-NAME1 TO ALV-NAME1.

ENDIF.

  • WRITE:/(04) SNO,

  • (13) ITAB1-MATNR,

  • (10) IMARA-EXTWG.

  • SET LEFT SCROLL-BOUNDARY.

  • WRITE: (35) IMARA-MAKTX,

  • (12) ITAB1-FKIMG NO-GROUPING DECIMALS 0,

  • (15) ITAB1-NETWR NO-GROUPING.

AVGQTY = ITAB1-FKIMG / MON.

AVGVAL = ITAB1-NETWR / MON.

  • WRITE:(12) AVGQTY NO-GROUPING.

  • WRITE:(15) AVGVAL NO-GROUPING.

MOVE IMARA-LABOR TO ALV-LABOR.

MOVE MARC-WERKS TO ALV-WERKS.

MOVE ITAB1-MATNR TO ALV-MATNR.

MOVE IMARA-MAKTX TO ALV-MAKTX.

  • MOVE AVGQTY TO ALV-AVGQTY.

  • MOVE AVGVAL TO ALV-AVGVAL.

MOVE ITAB1-FKIMG TO ALV-AVGQTY.

MOVE ITAB1-NETWR TO ALV-AVGVAL.

MOVE ITAB1-DISPO TO ALV-DISPO.

MOVE ITAB1-BEGRU TO ALV-BEGRU.

MOVE ITAB1-SPART TO ALV-SPART.

MOVE ITAB1-VTWEG TO ALV-VTWEG.

MOVE ITAB1-KUNAG TO ALV-KUNAG.

MOVE ITAB1-VBELN TO ALV-VBELN.

MOVE ITAB1-FKDAT TO ALV-FKDAT.

  • MOVE ITAB1-MATNR TO ALV-MATNR.

MOVE ITAB1-BISMT TO ALV-BISMT.

MOVE ITAB1-EXTWG TO ALV-EXTWG.

MOVE ITAB1-ATWRTC TO ALV-ATWRTC.

  • SELECT AMATNR ACLINT_999 AUSEDIN BKSCHL INTO TABLE CITAB

  • FROM ZTHACLAMAT AS A INNER JOIN ZTHACLA AS B

  • ON ACLINT_999 EQ BCLINT_999

  • FOR ALL ENTRIES IN ITAB1

  • WHERE A~MATNR EQ ITAB1-MATNR.

SELECT SINGLE * FROM ZTHACLAMAT WHERE MATNR EQ ITAB1-MATNR.

  • READ TABLE CITAB WITH KEY MATNR = ITAB1-MATNR.

IF SY-SUBRC = 0.

MOVE ZTHACLAMAT-CLINT_999+6(4) TO ALV-CLINT_999.

SELECT SINGLE * FROM ZTHACLA WHERE CLINT_999 EQ ZTHACLAMAT-CLINT_999.

MOVE ZTHACLA-KSCHL TO ALV-KSCHL.

MOVE ZTHACLAMAT-USEDIN TO ALV-USEDIN.

ENDIF.

  • ELSE.

SELECT SINGLE * FROM KNA1 WHERE KUNNR = ITAB1-KUNAG AND ORT02 IN S_ORT02.

IF SY-SUBRC EQ 0.

MOVE KNA1-NAME1 TO ALV-NAME2.

MOVE KNA1-KUNNR TO ALV-KUNNR.

MOVE KNA1-ORT02 TO ALV-ORT02.

ENDIF.

MOVE IMARA-BISMT TO ALV-BISMT.

  • IF ALV-LABOR NOT IN S_LABOR.

  • CONTINUE.

  • ELSE.

SNO = SNO + 1.

MOVE SNO TO ALV-SNO.

APPEND ALV.

CLEAR: ALV, IMARA.

  • ENDIF.

ENDLOOP.

IF S_USEDIN IS NOT INITIAL.

*LOOP AT ALV.

*ENDLOOP.

DELETE ALV WHERE USEDIN NE S_USEDIN.

ENDIF.

*Service Station Invoice

*=======================

SELECT AVBELN AFKDAT AKNUMV AWAERK AKURRF AKUNAG AVTWEG ASPART

BPOSNR BMATNR BNETWR BFKIMG

DBEGRU EMATKL E~LABOR

INTO CORRESPONDING FIELDS OF TABLE ITABYF2

FROM VBRK AS A INNER JOIN VBRP AS B

ON AVBELN EQ BVBELN

INNER JOIN J_1IEXCHDR AS C

ON AVBELN EQ CRDOC

INNER JOIN KNVV AS D

ON DKUNNR EQ AKUNAG AND

DVKORG EQ AVKORG AND

DSPART EQ ASPART

  • D~BEGRU NE SPACE

INNER JOIN MARA AS E

ON EMATNR EQ BMATNR

WHERE A~FKART EQ 'YF2' AND

  • A~FKART EQ 'F2' AND

A~FKDAT IN S_FKDAT AND

A~VTWEG IN S_VTWEG AND

A~SPART IN S_SPART AND

A~KUNAG IN S_KUNAG AND

A~FKSTO NE 'X' AND

  • b~srgrp IN s_srgrp AND

B~WERKS IN S_WERKS AND

C~TRNTYP = 'DLFC' AND

C~SRGRP IN ('01','02','03','31','32','33','41','42','43',

'81','82','83','08','501') AND

  • D~BEGRU IN S_BEGRU AND

E~MATKL IN S_MATKL AND

E~LABOR IN S_LABOR.

SORT ITABYF2 BY VBELN POSNR BEGRU DESCENDING.

DELETE ADJACENT DUPLICATES FROM ITABYF2 COMPARING VBELN POSNR.

LOOP AT ITABYF2.

IF ITABYF2-WAERK NE 'INR'.

PERFORM F_CURR_CON USING ITABYF2-WAERK CHANGING ITABYF2-NETWR.

ENDIF.

READ TABLE IFINAL WITH KEY BEGRU = ITABYF2-BEGRU

KUNAG = ITABYF2-KUNAG.

IF SY-SUBRC NE 0.

CLEAR : IFINAL.

IFINAL-BEGRU = ITABYF2-BEGRU.

IFINAL-KUNAG = ITABYF2-KUNAG.

IFINAL-F2VAL = 0.

IFINAL-YF2VAL = ITABYF2-NETWR.

IFINAL-G2VAL = 0.

APPEND IFINAL.

ELSE.

IFINAL-YF2VAL = IFINAL-YF2VAL + ITABYF2-NETWR.

MODIFY IFINAL INDEX SY-TABIX.

ENDIF.

ENDLOOP.

  • MOVE IFINAL-YF2VAL TO ALV-YF2VAL.

*Credit Note

*===========

SELECT AVBELN AFKDAT AKNUMV AWAERK AKURRF AKUNAG AVTWEG ASPART

BPOSNR BMATNR BNETWR BFKIMG "C~RDOC

DBEGRU EMATKL E~LABOR

INTO CORRESPONDING FIELDS OF TABLE ITABG2

FROM VBRK AS A INNER JOIN VBRP AS B

ON AVBELN EQ BVBELN

  • INNER JOIN J_1IEXCHDR AS C

  • ON AVBELN EQ CRDOC

INNER JOIN KNVV AS D

ON DKUNNR EQ AKUNAG AND

DVKORG EQ AVKORG AND

DSPART EQ ASPART

  • D~BEGRU NE SPACE

INNER JOIN MARA AS E

ON EMATNR EQ BMATNR

WHERE A~FKART EQ 'G2' AND

  • A~FKART EQ 'F2' AND

A~FKDAT IN S_FKDAT AND

A~VTWEG IN S_VTWEG AND

A~SPART IN S_SPART AND

A~KUNAG IN S_KUNAG AND

A~FKSTO NE 'X' AND

B~WERKS IN S_WERKS AND

  • B~MATNR IN S_MATNR AND

  • C~TRNTYP = 'DLFC' AND

D~BEGRU IN S_BEGRU AND

E~MATKL IN S_MATKL AND

E~LABOR IN S_LABOR .

SORT ITABG2 BY VBELN POSNR DESCENDING.

DELETE ADJACENT DUPLICATES FROM ITABG2 COMPARING VBELN POSNR.

IF NOT ITABG2[] IS INITIAL.

SELECT KNUMV KPOSN KSCHL KWERT WAERS

INTO CORRESPONDING FIELDS OF TABLE IKONV

FROM KONV

FOR ALL ENTRIES IN ITABG2

WHERE KNUMV EQ ITABG2-KNUMV AND

KPOSN EQ ITABG2-POSNR AND

KSCHL EQ 'PR00'.

SORT IKONV BY KNUMV KPOSN KWERT DESCENDING.

ENDIF.

*Transfering Data from Credit Note Final itab.

*=============================================

LOOP AT ITABG2.

IF ITABG2-WAERK NE 'INR'.

PERFORM F_CURR_CON USING ITABG2-WAERK CHANGING ITABG2-NETWR.

ENDIF.

READ TABLE IKONV WITH KEY KNUMV = ITABG2-KNUMV

KPOSN = ITABG2-POSNR.

IF SY-SUBRC NE 0.

IKONV-KWERT = 0.

ENDIF.

READ TABLE IFINAL WITH KEY BEGRU = ITABG2-BEGRU

KUNAG = ITABG2-KUNAG.

IF SY-SUBRC NE 0.

CLEAR : IFINAL.

IFINAL-BEGRU = ITABG2-BEGRU.

IFINAL-KUNAG = ITABG2-KUNAG.

IFINAL-F2VAL = 0.

IFINAL-YF2VAL = 0.

IFINAL-G2VAL = IKONV-KWERT.

APPEND IFINAL.

ELSE.

IFINAL-G2VAL = IFINAL-G2VAL + IKONV-KWERT.

MODIFY IFINAL INDEX SY-TABIX.

ENDIF.

ENDLOOP.

SORT IFINAL BY BEGRU KUNAG.

LOOP AT IFINAL.

  • IF SY-SUBRC EQ 0.

MOVE IFINAL-G2VAL TO ALV-G2VAL.

MODIFY ALV INDEX SY-TABIX.

  • ENDIF.

  • MOVE IFINAL-G2VAL TO ALV-G2VAL.

ENDLOOP.

LOOP AT IFINAL.

  • IF SY-SUBRC EQ 0.

MOVE IFINAL-F2VAL TO ALV-F2VAL.

MOVE IFINAL-YF2VAL TO ALV-YF2VAL.

MOVE IFINAL-BEGRU TO ALV-BEGRU.

MOVE IFINAL-KUNAG TO ALV-KUNAG.

MODIFY ALV INDEX SY-TABIX.

ENDLOOP.

LOOP AT ALV.

CLEAR TOTALVAL.

TOTALVAL = ALV-AVGVAL + ALV-YF2VAL.

ALV-TOTALVAL = TOTALVAL.

MODIFY ALV INDEX SY-TABIX.

ENDLOOP.

LOOP AT ALV.

CLEAR FINALVAL.

FINALVAL = ALV-TOTALVAL - ALV-G2VAL.

ALV-FINALVAL = FINALVAL.

MODIFY ALV INDEX SY-TABIX.

ENDLOOP.

****LOOP AT ITAB.

****

        • CLEAR DIFF.

****

        • DIFF = ITAB-ERFMG - ITAB-MENGE.

****

        • ITAB-DMENG = DIFF.

****

        • MODIFY ITAB INDEX SY-TABIX.

****

        • ENDLOOP.

PERFORM FILL_EVENTSTAB TABLES EVENTSTAB.

PERFORM FILL_HEADINGTABLE TABLES HEADING USING 'HEADING'.

PERFORM FILL_HEADINGTABLE TABLES HEADING USING 'HEADING1'.

  • IF S_VTWEG-LOW EQ '20'.

PERFORM ALV.

  • ENDIF.

FORM MON_CAL.

IF ITAB-FKDAT+4(2) > 3.

ITAB-FKDAT4(2) = ITAB-FKDAT4(2) - 3.

ELSE.

ITAB-FKDAT4(2) = ITAB-FKDAT4(2) + 9.

ENDIF.

ENDFORM. " MON_CAL

&----


*& Form INR_CONVERSION

&----


  • text

----


FORM INR_CONVERSION.

DATA : CON_CUR TYPE I.

IF ITAB-WAERK NE 'INR'.

SELECT SINGLE * FROM TCURX WHERE CURRKEY EQ ITAB-WAERK.

IF SY-SUBRC EQ 0.

IF ITAB-WAERK = 'IDR'.

ITAB-NETWR = ITAB-NETWR * 100.

CON_CUR = SPACE.

ELSE.

CON_CUR = 10 ** ( TCURX-CURRDEC - 2 ).

ENDIF.

ELSE.

IF ITAB-WAERK = 'IDR'.

ITAB-NETWR = ITAB-NETWR * 100.

CON_CUR = SPACE.

ENDIF.

ENDIF.

IF NOT CON_CUR IS INITIAL.

ITAB-NETWR = ITAB-NETWR / CON_CUR.

ENDIF.

ENDIF.

ITAB-NETWR = ITAB-NETWR * ITAB-KURRF.

  • itab-netwr = ( itab-netwr / 100000 ).

ENDFORM. " INR_CONVERSION

&----


*& Form YEAR_CALC

&----


  • text

----


FORM YEAR_CALC.

FROM_DATE = S_FKDAT-LOW.

IF FROM_DATE+4(2) LE '03'.

FROM_DATE0(4) = FROM_DATE0(4) - 2.

FROM_DATE+4(4) = '0401'.

TO_DATE = S_FKDAT-LOW.

TO_DATE0(4) = TO_DATE0(4) - 1.

TO_DATE+4(4) = '0331'.

ELSE.

FROM_DATE0(4) = FROM_DATE0(4) - 1.

FROM_DATE+4(4) = '0401'.

TO_DATE = S_FKDAT-LOW.

TO_DATE0(4) = TO_DATE0(4).

TO_DATE+4(4) = '0331'.

ENDIF.

SELECT AVBELN AFKDAT AVTWEG AWAERK AKURRF AKUNAG

BPOSNR BFKIMG BNETWR BMATNR

INTO CORRESPONDING FIELDS OF TABLE ITABL

FROM VBRK AS A INNER JOIN VBRP AS B

ON AVBELN EQ BVBELN

INNER JOIN J_1IEXCHDR AS C

ON CRDOC EQ AVBELN

  • INNER JOIN ZSD_MOD AS D ON DMATNR = BMATNR

WHERE A~FKDAT GE FROM_DATE AND

A~FKDAT LE TO_DATE AND

A~FKART EQ 'F2' AND

A~VTWEG IN S_VTWEG AND

A~SPART IN S_SPART AND

A~KUNAG IN S_KUNAG AND

A~FKSTO NE 'X' AND

B~WERKS IN S_WERKS AND

  • D~DISPO IN S_DISPO AND

B~MATNR IN S_MATNR.

SORT ITABL BY VBELN POSNR.

DELETE ADJACENT DUPLICATES FROM ITABL COMPARING VBELN POSNR.

LOOP AT ITABL.

READ TABLE ITAB1L WITH KEY MATNR = ITABL-MATNR.

IF SY-SUBRC EQ 0.

PERFORM INR_CONVERSION1 USING ITABL-WAERK ITABL-KURRF

CHANGING ITABL-NETWR.

ITAB1L-FKIMG = ITAB1L-FKIMG + ITABL-FKIMG.

ITAB1L-NETWR = ITAB1L-NETWR + ITABL-NETWR.

ITAB1L-KUNAG = ITABL-KUNAG.

ITAB1L-VBELN = ITABL-VBELN.

ITAB1L-FKDAT = ITABL-FKDAT.

MODIFY ITAB1L INDEX SY-TABIX.

ELSE.

CLEAR ITAB1.

PERFORM INR_CONVERSION1 USING ITABL-WAERK ITABL-KURRF

CHANGING ITABL-NETWR.

ITAB1L-MATNR = ITABL-MATNR.

ITAB1L-FKIMG = ITABL-FKIMG.

ITAB1L-NETWR = ITABL-NETWR.

ITAB1L-KUNAG = ITABL-KUNAG.

ITAB1L-VBELN = ITABL-VBELN.

ITAB1L-FKDAT = ITABL-FKDAT.

APPEND ITAB1L.

ENDIF.

ENDLOOP.

ENDFORM. " YEAR_CALC

&----


*& Form INR_CONVERSION1

&----


  • text

----


  • -->P_ITABL_WAERK text *

  • -->P_ITABL_KURRF text *

  • <--P_ITABL_NETWR text *

----


FORM INR_CONVERSION1 USING P_WAERK

P_KURRF

CHANGING P_NETWR.

DATA : CON_CUR TYPE I.

IF P_WAERK NE 'INR'.

SELECT SINGLE * FROM TCURX WHERE CURRKEY EQ P_WAERK.

IF SY-SUBRC EQ 0.

IF P_WAERK = 'IDR'.

P_NETWR = P_NETWR * 100.

CON_CUR = SPACE.

ELSE.

CON_CUR = 10 ** ( TCURX-CURRDEC - 2 ).

ENDIF.

ELSE.

IF P_WAERK = 'IDR'.

P_NETWR = P_NETWR * 100.

CON_CUR = SPACE.

ENDIF.

ENDIF.

IF NOT CON_CUR IS INITIAL.

P_NETWR = P_NETWR / CON_CUR.

ENDIF.

ENDIF.

P_NETWR = P_NETWR * P_KURRF.

ENDFORM. " INR_CONVERSION1

&----


*& Form MODULE_GET

&----


  • text

----


FORM MODULE_GET.

SELECT MATNR MAX( MONYR ) INTO (ZSD_MOD-MATNR, ZSD_MOD-MONYR)

FROM ZSD_MOD WHERE MATNR EQ ITAB1-MATNR AND

MONYR LE SY-DATUM+0(6)

GROUP BY MATNR MONYR.

ENDSELECT.

SELECT SINGLE * FROM ZSD_MOD WHERE MATNR = ITAB1-MATNR AND

MONYR = ZSD_MOD-MONYR.

IF SY-SUBRC EQ 0.

ITAB1-DISPO = ZSD_MOD-DISPO.

ELSE.

ITAB1-DISPO = SPACE.

ENDIF.

*----


ALTERATION OCCURS

ENDFORM. " MODULE_GET

&----


*& Form MODULE_GET1

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM MODULE_GET1 .

SELECT MATNR MAX( MONYR ) INTO (ZSD_MOD-MATNR, ZSD_MOD-MONYR)

FROM ZSD_MOD WHERE MATNR EQ ITAB-MATNR AND

MONYR LE SY-DATUM+0(6)

GROUP BY MATNR MONYR.

ENDSELECT.

SELECT SINGLE * FROM ZSD_MOD WHERE MATNR = ITAB-MATNR AND

MONYR = ZSD_MOD-MONYR.

IF SY-SUBRC EQ 0.

ITAB1-DISPO = ZSD_MOD-DISPO.

ELSE.

ITAB1-DISPO = SPACE.

ENDIF.

ENDFORM. " MODULE_GET1

&----


*& Form ALV

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM ALV .

WA_FIELDCAT-COL_POS = 1.

WA_FIELDCAT-TABNAME = 'ALV'.

WA_FIELDCAT-FIELDNAME = 'SNO'.

WA_FIELDCAT-SELTEXT_L = 'S. NO'.

*WA_FIELDCAT-DO_SUM = 'X'.

WA_FIELDCAT-OUTPUTLEN = 3.

WA_FIELDCAT-JUST = 'R'.

APPEND WA_FIELDCAT TO FIELDCAT.

WA_FIELDCAT-COL_POS = 2.

WA_FIELDCAT-TABNAME = 'ALV'.

WA_FIELDCAT-FIELDNAME = 'LABOR'.

WA_FIELDCAT-SELTEXT_L = 'SOU'.

*WA_FIELDCAT-DO_SUM = 'X'.

WA_FIELDCAT-OUTPUTLEN = 8.

WA_FIELDCAT-JUST = 'R'.

APPEND WA_FIELDCAT TO FIELDCAT.

WA_FIELDCAT-COL_POS = 3.

WA_FIELDCAT-TABNAME = 'ALV'.

WA_FIELDCAT-FIELDNAME = 'USEDIN'.

WA_FIELDCAT-SELTEXT_L = 'APPLICATION'.

*WA_FIELDCAT-DO_SUM = 'X'.

WA_FIELDCAT-OUTPUTLEN = 15.

WA_FIELDCAT-JUST = 'R'.

APPEND WA_FIELDCAT TO FIELDCAT.

WA_FIELDCAT-COL_POS = 4.

WA_FIELDCAT-TABNAME = 'ALV'.

WA_FIELDCAT-FIELDNAME = 'CLINT_999'.

WA_FIELDCAT-SELTEXT_L = 'CATEGORY'.

*WA_FIELDCAT-DO_SUM = 'X'.

WA_FIELDCAT-OUTPUTLEN = 10.

WA_FIELDCAT-JUST = 'R'.

APPEND WA_FIELDCAT TO FIELDCAT.

WA_FIELDCAT-COL_POS = 5.

WA_FIELDCAT-TABNAME = 'ALV'.

WA_FIELDCAT-FIELDNAME = 'KSCHL'.

WA_FIELDCAT-SELTEXT_L = 'CATEGORY NAME'.

*WA_FIELDCAT-DO_SUM = 'X'.

WA_FIELDCAT-OUTPUTLEN = 12.

WA_FIELDCAT-JUST = 'L'.

APPEND WA_FIELDCAT TO FIELDCAT.

WA_FIELDCAT-COL_POS = 6.

WA_FIELDCAT-TABNAME = 'ALV'.

WA_FIELDCAT-FIELDNAME = 'NAME1'.

WA_FIELDCAT-SELTEXT_L = 'CUSTOMER GROUP'.

*WA_FIELDCAT-DO_SUM = 'X'.

WA_FIELDCAT-OUTPUTLEN = 25.

WA_FIELDCAT-JUST = 'R'.

APPEND WA_FIELDCAT TO FIELDCAT.

WA_FIELDCAT-COL_POS = 7.

WA_FIELDCAT-TABNAME = 'ALV'.

WA_FIELDCAT-FIELDNAME = 'WERKS'.

WA_FIELDCAT-SELTEXT_L = 'PLANT'.

*WA_FIELDCAT-DO_SUM = 'X'.

WA_FIELDCAT-OUTPUTLEN = 6.

WA_FIELDCAT-JUST = 'R'.

APPEND WA_FIELDCAT TO FIELDCAT.

WA_FIELDCAT-COL_POS = 8.

WA_FIELDCAT-TABNAME = 'ALV'.

WA_FIELDCAT-FIELDNAME = 'SPART'.

WA_FIELDCAT-SELTEXT_L = 'DIVISION'.

*WA_FIELDCAT-DO_SUM = 'X'.

WA_FIELDCAT-OUTPUTLEN = 15.

WA_FIELDCAT-JUST = 'R'.

APPEND WA_FIELDCAT TO FIELDCAT.

WA_FIELDCAT-COL_POS = 9..

WA_FIELDCAT-TABNAME = 'ALV'.

WA_FIELDCAT-FIELDNAME = 'VTWEG'.

WA_FIELDCAT-SELTEXT_L = 'DISTRIBUTION CHANNEL'.

*WA_FIELDCAT-DO_SUM = 'X'.

WA_FIELDCAT-OUTPUTLEN = 15.

WA_FIELDCAT-JUST = 'R'.

APPEND WA_FIELDCAT TO FIELDCAT.

WA_FIELDCAT-COL_POS = 10.

WA_FIELDCAT-TABNAME = 'ALV'.

WA_FIELDCAT-FIELDNAME = 'BEGRU'.

WA_FIELDCAT-SELTEXT_L = 'CCM'.

*WA_FIELDCAT-DO_SUM = 'X'.

WA_FIELDCAT-OUTPUTLEN = 15.

WA_FIELDCAT-JUST = 'R'.

APPEND WA_FIELDCAT TO FIELDCAT.

WA_FIELDCAT-COL_POS = 11.

WA_FIELDCAT-TABNAME = 'ALV'.

WA_FIELDCAT-FIELDNAME = 'KUNNR'.

WA_FIELDCAT-SELTEXT_L = 'CUSTOMER NO'.

*WA_FIELDCAT-DO_SUM = 'X'.

WA_FIELDCAT-OUTPUTLEN = 15.

WA_FIELDCAT-JUST = 'R'.

APPEND WA_FIELDCAT TO FIELDCAT.

WA_FIELDCAT-COL_POS = 12.

WA_FIELDCAT-TABNAME = 'ALV'.

WA_FIELDCAT-FIELDNAME = 'KUNAG'.

WA_FIELDCAT-SELTEXT_L = 'SOLD TO PARTY'.

*WA_FIELDCAT-DO_SUM = 'X'.

WA_FIELDCAT-OUTPUTLEN = 15.

WA_FIELDCAT-JUST = 'R'.

APPEND WA_FIELDCAT TO FIELDCAT.

WA_FIELDCAT-COL_POS = 13.

WA_FIELDCAT-TABNAME = 'ALV'.

WA_FIELDCAT-FIELDNAME = 'NAME2'.

WA_FIELDCAT-SELTEXT_L = 'CUSTOMER NAME'.

*WA_FIELDCAT-DO_SUM = 'X'.

WA_FIELDCAT-OUTPUTLEN = 15.

WA_FIELDCAT-JUST = 'L'.

APPEND WA_FIELDCAT TO FIELDCAT.

WA_FIELDCAT-COL_POS = 14.

WA_FIELDCAT-TABNAME = 'ALV'.

WA_FIELDCAT-FIELDNAME = 'MATNR'.

WA_FIELDCAT-SELTEXT_L = 'MATERIAL'.

*WA_FIELDCAT-DO_SUM = 'X'.

WA_FIELDCAT-OUTPUTLEN = 15.

WA_FIELDCAT-JUST = 'R'.

APPEND WA_FIELDCAT TO FIELDCAT.

WA_FIELDCAT-COL_POS = 15.

WA_FIELDCAT-TABNAME = 'ALV'.

WA_FIELDCAT-FIELDNAME = 'MAKTX'.

WA_FIELDCAT-SELTEXT_L = 'MATERIAL DESC'.

*WA_FIELDCAT-DO_SUM = 'X'.

WA_FIELDCAT-OUTPUTLEN = 15.

WA_FIELDCAT-JUST = 'L'.

APPEND WA_FIELDCAT TO FIELDCAT.

WA_FIELDCAT-COL_POS = 16.

WA_FIELDCAT-TABNAME = 'ALV'.

WA_FIELDCAT-FIELDNAME = 'BISMT'.

WA_FIELDCAT-SELTEXT_L = 'OLD MAT NUMBER'.

*WA_FIELDCAT-DO_SUM = 'X'.

WA_FIELDCAT-OUTPUTLEN = 15.

WA_FIELDCAT-JUST = 'R'.

APPEND WA_FIELDCAT TO FIELDCAT.

WA_FIELDCAT-COL_POS = 17.

WA_FIELDCAT-TABNAME = 'ALV'.

WA_FIELDCAT-FIELDNAME = 'DISPO'.

WA_FIELDCAT-SELTEXT_L = 'MOD'.

*WA_FIELDCAT-DO_SUM = 'X'.

WA_FIELDCAT-OUTPUTLEN = 15.

WA_FIELDCAT-JUST = 'R'.

APPEND WA_FIELDCAT TO FIELDCAT.

WA_FIELDCAT-COL_POS = 18.

WA_FIELDCAT-TABNAME = 'ALV'.

WA_FIELDCAT-FIELDNAME = 'AVGQTY'.

WA_FIELDCAT-SELTEXT_L = 'QUANTITY'.

*WA_FIELDCAT-DO_SUM = 'X'.

WA_FIELDCAT-OUTPUTLEN = 15.

WA_FIELDCAT-JUST = 'R'.

APPEND WA_FIELDCAT TO FIELDCAT.

WA_FIELDCAT-COL_POS = 19.

WA_FIELDCAT-TABNAME = 'ALV'.

WA_FIELDCAT-FIELDNAME = 'AVGVAL'.

WA_FIELDCAT-SELTEXT_L = 'FPS VALUE'.

*WA_FIELDCAT-DO_SUM = 'X'.

WA_FIELDCAT-OUTPUTLEN = 15.

WA_FIELDCAT-JUST = 'R'.

APPEND WA_FIELDCAT TO FIELDCAT.

WA_FIELDCAT-COL_POS = 20.

WA_FIELDCAT-TABNAME = 'ALV'.

WA_FIELDCAT-FIELDNAME = 'YF2VAL'.

WA_FIELDCAT-SELTEXT_L = 'SER.STN VALUE'.

*WA_FIELDCAT-DO_SUM = 'X'.

WA_FIELDCAT-OUTPUTLEN = 15.

WA_FIELDCAT-JUST = 'R'.

APPEND WA_FIELDCAT TO FIELDCAT.

WA_FIELDCAT-COL_POS = 21.

WA_FIELDCAT-TABNAME = 'ALV'.

WA_FIELDCAT-FIELDNAME = 'TOTALVAL'.

WA_FIELDCAT-SELTEXT_L = 'TOTAL VALUE'.

*WA_FIELDCAT-DO_SUM = 'X'.

WA_FIELDCAT-OUTPUTLEN = 15.

WA_FIELDCAT-JUST = 'R'.

APPEND WA_FIELDCAT TO FIELDCAT.

WA_FIELDCAT-COL_POS = 22.

WA_FIELDCAT-TABNAME = 'ALV'.

WA_FIELDCAT-FIELDNAME = 'G2VAL'.

WA_FIELDCAT-SELTEXT_L = 'CREDIT NOTE VALUE'.

*WA_FIELDCAT-DO_SUM = 'X'.

WA_FIELDCAT-OUTPUTLEN = 15.

WA_FIELDCAT-JUST = 'R'.

APPEND WA_FIELDCAT TO FIELDCAT.

WA_FIELDCAT-COL_POS = 23.

WA_FIELDCAT-TABNAME = 'ALV'.

WA_FIELDCAT-FIELDNAME = 'FINALVAL'.

WA_FIELDCAT-SELTEXT_L = 'FINAL VALUE'.

*WA_FIELDCAT-DO_SUM = 'X'.

WA_FIELDCAT-OUTPUTLEN = 15.

WA_FIELDCAT-JUST = 'R'.

APPEND WA_FIELDCAT TO FIELDCAT.

WA_FIELDCAT-COL_POS = 24.

WA_FIELDCAT-TABNAME = 'ALV'.

WA_FIELDCAT-FIELDNAME = 'ORT02'.

WA_FIELDCAT-SELTEXT_L = 'DISTRICT'.

*WA_FIELDCAT-DO_SUM = 'X'.

WA_FIELDCAT-OUTPUTLEN = 15.

WA_FIELDCAT-JUST = 'R'.

APPEND WA_FIELDCAT TO FIELDCAT.

LAYOUT-ZEBRA = 'X'.

*LAYOUT-BOX_FIELDNAME = W_BOXNAM.

LAYOUT-COLWIDTH_OPTIMIZE = 'X'.

CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'

EXPORTING

I_CALLBACK_PROGRAM = SY-REPID

IS_LAYOUT = LAYOUT

IT_FIELDCAT = FIELDCAT

I_DEFAULT = 'X'

I_SAVE = 'A'

IT_EVENTS = EVENTSTAB[]

TABLES

T_OUTTAB = ALV

EXCEPTIONS

PROGRAM_ERROR = 1

OTHERS = 2.

IF SY-SUBRC <> 0.

  • MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO

  • WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.

ENDIF.

ENDFORM. " ALV

&----


*& Form FILL_EVENTSTAB

&----


  • text

----


  • -->P_EVENTSTAB text

----


FORM FILL_EVENTSTAB TABLES P_EVENTSTAB STRUCTURE EVENTSTAB.

CALL FUNCTION 'REUSE_ALV_EVENTS_GET'

EXPORTING

I_LIST_TYPE = 0

IMPORTING

ET_EVENTS = P_EVENTSTAB[]

EXCEPTIONS

LIST_TYPE_WRONG = 1

OTHERS = 2.

READ TABLE P_EVENTSTAB WITH KEY NAME = SLIS_EV_TOP_OF_PAGE.

IF SY-SUBRC = 0 .

MOVE 'TOP_OF_PAGE' TO P_EVENTSTAB-FORM.

APPEND P_EVENTSTAB.

ENDIF.

ENDFORM. " FILL_EVENTSTAB

&----


*& Form TOP_OF_PAGE

&----


  • text

----


FORM TOP_OF_PAGE.

CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'

EXPORTING

IT_LIST_COMMENTARY = HEADING[]

EXCEPTIONS

OTHERS = 1.

ENDFORM. "top_of_page

&----


*& Form FILL_HEADINGTABLE

&----


  • text

----


  • -->P_HEADING text

  • -->P_1746 text

----


FORM FILL_HEADINGTABLE TABLES P_HEADING STRUCTURE HEADING

USING TABLENAME.

  • DATA: BEGIN OF ITAB_H2 OCCURS 100,

  • KURZTEXT(40),

  • END OF ITAB_H2.

DATA: H2(250).

DATA: S1DAT(2), S2DAT(2), S3DAT(4),

S4DAT(2), S5DAT(2), S6DAT(4).

DATA: FDAT(12),

TDAT(12).

CASE TABLENAME.

WHEN 'HEADING'.

P_HEADING-TYP = 'H'.

S3DAT = S_FKDAT-LOW+0(4).

  • move s3dat to fdat+4(4).

S2DAT = S_FKDAT-LOW+4(2).

  • move s2dat to fdat+2(2).

S1DAT = S_FKDAT-LOW+6(2).

  • move s1dat to fdat+0(2).

CONCATENATE S1DAT S2DAT S3DAT INTO FDAT SEPARATED BY '.'.

S6DAT = S_FKDAT-HIGH+0(4).

  • move s6dat to tdat+4(4).

S5DAT = S_FKDAT-HIGH+4(2).

  • move s5dat to tdat+2(2).

S4DAT = S_FKDAT-HIGH+6(2).

  • move s4dat to tdat+0(2).

CONCATENATE S4DAT S5DAT S6DAT INTO TDAT SEPARATED BY '.'.

CONCATENATE 'SOUWISE SALES FROM ' FDAT 'TO' TDAT INTO HEADINGTEXT1 SEPARATED BY SPACE.

P_HEADING-INFO = HEADINGTEXT1.

  • P_HEADING-pos = 'C'.

APPEND P_HEADING.

  • WHEN 'HEADING1'.

  • P_HEADING-TYP = 'S'.

  • CONCATENATE 'Division:' S_SPART-LOW INTO P_HEADING-INFO SEPARATED BY ' '.

    • P_HEADING-INFO = headingtext1.

  • APPEND P_HEADING.

ENDCASE.

ENDFORM. "FILL_HEADINGTABLE

FORM F_CURR_CON USING P_CURR

CHANGING P_VALUE.

DATA CON_CUR TYPE I.

SELECT SINGLE * FROM TCURX WHERE CURRKEY EQ P_CURR.

IF SY-SUBRC EQ 0.

IF P_CURR = 'IDR'.

P_VALUE = P_VALUE * 100.

CON_CUR = SPACE.

ELSE.

CON_CUR = 10 ** ( TCURX-CURRDEC - 2 ).

ENDIF.

ELSE.

IF P_CURR = 'IDR'.

P_VALUE = P_VALUE * 100.

CON_CUR = SPACE.

ENDIF.

ENDIF.

IF NOT CON_CUR IS INITIAL.

P_VALUE = P_VALUE / CON_CUR.

  • P_VALUE = P_VALUE * ITAB-KURRF.

ENDIF.

P_VALUE = P_VALUE * ITAB-KURRF.

ENDFORM. " F_CURR_CON

**********

Regards

R.Rajendran