05-30-2008 6:08 PM
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
05-30-2008 6:48 PM
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
05-30-2008 6:48 PM
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