05-12-2006 11:45 AM
Is there any standard SAP report which captures all types of sales performed for a business area i.e. Stock transfer, consignment, Sale via Proforma invoice, export sale.
Please help
Thanks
anu
05-12-2006 12:02 PM
Hello Anupma,
If you are updating SIS then u can look for options in Sales Information system. Otherwise u can look for reports in Sales and distribution->Environment->Information system.
05-12-2006 12:28 PM
Hi Anupma,
chk if this report helps..
Code listing for: ZSDR_SALES_TAX_REGISTER
Description: z_sd
-
&----
*& Report Z_SD
*&
&----
*&
*&
&----
REPORT ZSDR_SALES_TAX_REGISTER MESSAGE-ID Z_SD.
Declared for using ALV
TYPE-POOLS : SLIS.
TYPES: BEGIN OF TP_VBRP,
VBELN LIKE VBRP-VBELN,
POSNR LIKE VBRP-POSNR,
FKIMG LIKE VBRP-FKIMG,
MATNR LIKE VBRP-MATNR,
ARKTX LIKE VBRP-ARKTX,
AUGRU_AUFT LIKE VBRP-AUGRU_AUFT,
END OF TP_VBRP.
TYPES: BEGIN OF TP_VBRK1,
VBELN LIKE VBRK-VBELN,
FKART LIKE VBRK-FKART,
KNUMV LIKE VBRK-KNUMV,
FKDAT LIKE VBRK-FKDAT,
BUKRS LIKE VBRK-BUKRS,
KUNAG LIKE VBRK-KUNAG,
END OF TP_VBRK1.
TYPES: BEGIN OF TP_VBRK,
VBELN LIKE VBRK-VBELN,
KNUMV LIKE VBRK-KNUMV,
FKDAT LIKE VBRK-FKDAT,
KUNAG LIKE VBRK-KUNAG,
END OF TP_VBRK.
TYPES: BEGIN OF TP_KONV,
KNUMV LIKE KONV-KNUMV,
KPOSN LIKE KONV-KPOSN,
KSCHL LIKE KONV-KSCHL,
KBETR LIKE KONV-KBETR,
END OF TP_KONV.
TYPES: BEGIN OF TP_VALUES,
KNUMV LIKE KONV-KNUMV,
KPOSN LIKE KONV-KPOSN,
PR00 LIKE KONV-KBETR,
HA00 LIKE KONV-KBETR,
HB00 LIKE KONV-KBETR,
HD00 LIKE KONV-KBETR,
R100 LIKE KONV-KBETR,
JEXP LIKE KONV-KBETR,
JESP LIKE KONV-KBETR,
JEAP LIKE KONV-KBETR,
JCEP LIKE KONV-KBETR,
JEXN LIKE KONV-KBETR,
JNED LIKE KONV-KBETR,
JECS LIKE KONV-KBETR,
JASS LIKE KONV-KBETR,
JLSR LIKE KONV-KBETR,
JIVP LIKE KONV-KBETR,
JLEA LIKE KONV-KBETR,
JSER LIKE KONV-KBETR,
JSTE LIKE KONV-KBETR,
JINS LIKE KONV-KBETR,
ZLST LIKE KONV-KBETR,
ZCST LIKE KONV-KBETR,
ZTOT LIKE KONV-KBETR,
ZAST LIKE KONV-KBETR,
END OF TP_VALUES.
TYPES: BEGIN OF TP_FVALUES,
KNUMV LIKE KONV-KNUMV,
kschl like konv-kschl,
VBELN LIKE VBRP-VBELN,
MATNR LIKE VBRP-MATNR,
ARKTX LIKE VBRP-ARKTX,
FKIMG LIKE VBRP-FKIMG,
KPOSN LIKE KONV-KPOSN,
AUGRU LIKE VBRP-AUGRU_AUFT,
PR00 LIKE KONV-KBETR,
BTP LIKE KONV-KBETR,
HA00 LIKE KONV-KBETR,
HB00 LIKE KONV-KBETR,
HD00 LIKE KONV-KBETR,
R100 LIKE KONV-KBETR,
JEXP LIKE KONV-KBETR,
JESP LIKE KONV-KBETR,
JEAP LIKE KONV-KBETR,
JCEP LIKE KONV-KBETR,
JEXN LIKE KONV-KBETR,
JNED LIKE KONV-KBETR,
JECS LIKE KONV-KBETR,
JASS LIKE KONV-KBETR,
JLSR LIKE KONV-KBETR,
JIVP LIKE KONV-KBETR,
JLEA LIKE KONV-KBETR,
JSER LIKE KONV-KBETR,
JSTE LIKE KONV-KBETR,
JINS LIKE KONV-KBETR,
ZLST LIKE KONV-KBETR,
ZCST LIKE KONV-KBETR,
ZTOT LIKE KONV-KBETR,
ZAST LIKE KONV-KBETR,
END OF TP_FVALUES.
TYPES : BEGIN OF TP_BTP,
VBELN LIKE VBRK-VBELN,
SUM_BTP LIKE KONV-KBETR,
END OF TP_BTP.
TYPES: BEGIN OF TP_KNA1,
KUNNR LIKE KNA1-KUNNR,
NAME1 LIKE KNA1-NAME1,
END OF TP_KNA1.
TYPES : BEGIN OF TP_DISPLAY,
VBELN LIKE VBRP-VBELN,
FKDAT LIKE VBRK-FKDAT,
KUNAG LIKE VBRK-KUNAG,
NAME1 LIKE KNA1-NAME1,
MATNR LIKE VBRP-MATNR,
ARKTX LIKE VBRP-ARKTX,
FKIMG LIKE VBRP-FKIMG,
BUP LIKE KONV-KBETR,
BTP LIKE KONV-KBETR,
DISCOUNT LIKE KONV-KBETR,
ASSVL LIKE KONV-KBETR,
EDS LIKE KONV-KBETR,
TAXTO LIKE KONV-KBETR,
LSTR LIKE KONV-KBETR,
CSTR LIKE KONV-KBETR,
OTHERS LIKE KONV-KBETR,
ZTOT LIKE KONV-KBETR,
TOTAL LIKE KONV-KBETR,
END OF TP_DISPLAY.
Declaration pertaining to ALV
DATA: I_GT_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV,
I_GS_LAYOUT TYPE SLIS_LAYOUT_ALV,
I_GT_LIST_TOP_OF_PAGE TYPE SLIS_T_LISTHEADER,
I_GT_LIST_END_OF_PAGE TYPE SLIS_T_LISTHEADER,
I_G_REPID LIKE SY-REPID,
I_G_TOP_OF_PAGE TYPE SLIS_FORMNAME VALUE 'TOP_OF_PAGE',
I_G_END_OF_PAGE TYPE SLIS_FORMNAME VALUE 'END_OF_PAGE',
I_GT_EVENTS TYPE SLIS_T_EVENT,
I_GS_SORT TYPE SLIS_SORTINFO_ALV,
I_GT_SORT TYPE SLIS_T_SORTINFO_ALV,
I_GS_PRINT TYPE SLIS_PRINT_ALV.
* DECLARED TO INITIALIZE THE FIELD CATEGORY OF THE ALV GRID
DATA: W_POS TYPE I VALUE 1.
DATA: T_VBRP TYPE STANDARD TABLE OF TP_VBRP,
WA_VBRP TYPE TP_VBRP,
T_VBRK1 TYPE STANDARD TABLE OF TP_VBRK1,
WA_VBRK1 TYPE TP_VBRK1,
T_VBRK TYPE STANDARD TABLE OF TP_VBRK,
WA_VBRK TYPE TP_VBRK,
T_KONV TYPE STANDARD TABLE OF TP_KONV,
WA_KONV TYPE TP_KONV,
T_KNA1 TYPE STANDARD TABLE OF TP_KNA1,
WA_KNA1 TYPE TP_KNA1,
T_VALUES TYPE STANDARD TABLE OF TP_VALUES,
WA_VALUES TYPE TP_VALUES,
T_FVALUES TYPE STANDARD TABLE OF TP_FVALUES,
WA_FVALUES TYPE TP_FVALUES,
T_BTP TYPE STANDARD TABLE OF TP_BTP,
WA_BTP TYPE TP_BTP,
T_DISPLAY TYPE STANDARD TABLE OF TP_DISPLAY,
WA_DISPLAY TYPE TP_DISPLAY.
DATA : L_KNUMV LIKE KONV-KNUMV,
L_KSCHL LIKE KONV-KSCHL,
L_PR00 LIKE KONV-KBETR,
L_HA00 LIKE KONV-KBETR,
L_HB00 LIKE KONV-KBETR,
L_R100 LIKE KONV-KBETR,
L_JEXP LIKE KONV-KBETR,
L_JESP LIKE KONV-KBETR,
L_JEAP LIKE KONV-KBETR,
L_JCEP LIKE KONV-KBETR,
L_JEXN LIKE KONV-KBETR,
L_JNED LIKE KONV-KBETR,
L_JECS LIKE KONV-KBETR,
L_JASS LIKE KONV-KBETR,
L_ZLST LIKE KONV-KBETR,
L_JLSR LIKE KONV-KBETR,
L_JIVP LIKE KONV-KBETR,
L_ZCST LIKE KONV-KBETR,
L_JLEA LIKE KONV-KBETR,
L_ZTOT LIKE KONV-KBETR,
L_ZAST LIKE KONV-KBETR,
L_JSER LIKE KONV-KBETR,
L_JSTE LIKE KONV-KBETR,
L_JINS LIKE KONV-KBETR,
L_HD00 LIKE KONV-KBETR,
L_BSPR LIKE KONV-KBETR,
L_DISC LIKE KONV-KBETR,
L_ASVAL LIKE KONV-KBETR,
L_EDECS LIKE KONV-KBETR,
L_TAXTO LIKE KONV-KBETR,
L_LSTR LIKE KONV-KBETR,
L_CSTR LIKE KONV-KBETR,
L_OTHER LIKE KONV-KBETR,
L_SUMPR LIKE KONV-KBETR,
L_NETVAL LIKE KONV-KBETR,
L_FKIMG LIKE VBRP-FKIMG,
L_MATNR LIKE VBRP-MATNR,
L_EDSUM LIKE KONV-KBETR,
L_ARKTX LIKE VBRP-ARKTX,
L_PRICE LIKE KONV-KBETR,
L_FKDAT LIKE VBRK-FKDAT,
L_WERKS LIKE VBRP-WERKS,
L_BUKRS LIKE VBRK-BUKRS,
L_MWSK1 LIKE KONV-MWSK1,
L_KUNNR LIKE KNA1-KUNNR.
SELECTION-SCREEN BEGIN OF BLOCK BLK1 WITH FRAME TITLE TEXT-001.
SELECT-OPTIONS : S_FKDAT FOR L_FKDAT.
PARAMETERS: P_WERKS LIKE VBRP-WERKS OBLIGATORY,
P_BUKRS LIKE VBRK-BUKRS OBLIGATORY,
P_MWSK1 LIKE KONV-MWSK1 ,
P_KUNNR LIKE KNA1-KUNNR.
SELECTION-SCREEN END OF BLOCK BLK1.
*validation checks.
AT SELECTION-SCREEN.
SELECT SINGLE WERKS FROM VBRP INTO L_WERKS WHERE WERKS EQ P_WERKS.
IF SY-SUBRC NE 0.
MESSAGE E001.
ENDIF.
SELECT SINGLE BUKRS FROM VBRK INTO L_BUKRS WHERE BUKRS EQ P_BUKRS.
IF SY-SUBRC NE 0.
MESSAGE E002.
ENDIF.
SELECT SINGLE MWSK1 FROM KONV INTO L_MWSK1 WHERE MWSK1 EQ P_MWSK1.
IF SY-SUBRC NE 0.
MESSAGE E003.
ENDIF.
SELECT SINGLE KUNNR FROM KNA1 INTO L_KUNNR WHERE KUNNR EQ P_KUNNR.
IF SY-SUBRC NE 0.
MESSAGE E004.
ENDIF.
START-OF-SELECTION.
REFRESH T_VBRP.
SELECT VBELN POSNR FKIMG MATNR ARKTX AUGRU_AUFT FROM VBRP INTO TABLE T_VBRP
WHERE WERKS EQ P_WERKS .
IF SY-SUBRC EQ 0.
REFRESH T_VBRK.
SELECT VBELN FKART KNUMV FKDAT BUKRS KUNAG FROM VBRK INTO TABLE T_VBRK1 FOR ALL ENTRIES IN T_VBRP
WHERE VBELN EQ T_VBRP-VBELN .
ENDIF.
IF SY-SUBRC EQ 0.
REFRESH T_KONV.
SELECT KNUMV KPOSN KSCHL KBETR FROM KONV INTO TABLE T_KONV FOR ALL ENTRIES IN T_VBRK
WHERE KNUMV EQ T_VBRK-KNUMV AND
MWSK1 EQ P_MWSK1 .
ENDIF.
IF SY-SUBRC EQ 0.
REFRESH T_KNA1.
SELECT KUNNR NAME1 FROM KNA1 INTO TABLE T_KNA1 FOR ALL ENTRIES IN T_VBRK
WHERE KUNNR EQ T_VBRK-KUNAG.
ENDIF.
END-OF-SELECTION.
*loop to filter the selection criteria for vbrk table
LOOP AT T_VBRK1 INTO WA_VBRK1.
IF S_FKDAT IS NOT INITIAL.
IF P_KUNNR IS NOT INITIAL.
IF ( WA_VBRK1-FKDAT IN S_FKDAT AND WA_VBRK1-BUKRS EQ P_BUKRS AND WA_VBRK1-KUNAG EQ P_KUNNR ).
IF ( WA_VBRK1-FKART NE 'ZVEN' OR WA_VBRK1-FKART NE 'F5' OR WA_VBRK1-FKART NE 'F8' OR WA_VBRK1-FKART NE 'JEX' ).
WA_VBRK-VBELN = WA_VBRK1-VBELN.
WA_VBRK-KNUMV = WA_VBRK1-KNUMV.
WA_VBRK-KNUMV = WA_VBRK1-KNUMV.
WA_VBRK-FKDAT = WA_VBRK1-FKDAT.
WA_VBRK-KUNAG = WA_VBRK1-KUNAG.
APPEND WA_VBRK TO T_VBRK.
CLEAR WA_VBRK.
ENDIF.
ENDIF.
ENDIF.
ENDIF.
IF S_FKDAT IS INITIAL.
IF P_KUNNR IS NOT INITIAL.
IF ( WA_VBRK1-BUKRS EQ P_BUKRS AND WA_VBRK1-KUNAG EQ P_KUNNR ).
IF ( WA_VBRK1-FKART NE 'ZVEN' OR WA_VBRK1-FKART NE 'F5' OR WA_VBRK1-FKART NE 'F8' OR WA_VBRK1-FKART NE 'JEX' ).
WA_VBRK-VBELN = WA_VBRK1-VBELN.
WA_VBRK-KNUMV = WA_VBRK1-KNUMV.
WA_VBRK-KNUMV = WA_VBRK1-KNUMV.
WA_VBRK-FKDAT = WA_VBRK1-FKDAT.
WA_VBRK-KUNAG = WA_VBRK1-KUNAG.
APPEND WA_VBRK TO T_VBRK.
CLEAR WA_VBRK.
ENDIF.
ENDIF.
ENDIF.
ENDIF.
IF S_FKDAT IS NOT INITIAL.
IF P_KUNNR IS INITIAL.
IF ( WA_VBRK1-FKDAT IN S_FKDAT AND WA_VBRK1-BUKRS EQ P_BUKRS ).
IF ( WA_VBRK1-FKART NE 'ZVEN' OR WA_VBRK1-FKART NE 'F5' OR WA_VBRK1-FKART NE 'F8' OR WA_VBRK1-FKART NE 'JEX' ).
WA_VBRK-VBELN = WA_VBRK1-VBELN.
WA_VBRK-KNUMV = WA_VBRK1-KNUMV.
WA_VBRK-KNUMV = WA_VBRK1-KNUMV.
WA_VBRK-FKDAT = WA_VBRK1-FKDAT.
WA_VBRK-KUNAG = WA_VBRK1-KUNAG.
APPEND WA_VBRK TO T_VBRK.
CLEAR WA_VBRK.
ENDIF.
ENDIF.
ENDIF.
ENDIF.
IF S_FKDAT IS INITIAL.
IF P_KUNNR IS INITIAL.
IF ( WA_VBRK1-BUKRS EQ P_BUKRS ).
IF ( WA_VBRK1-FKART NE 'ZVEN' OR WA_VBRK1-FKART NE 'F5' OR WA_VBRK1-FKART NE 'F8' OR WA_VBRK1-FKART NE 'JEX' ).
WA_VBRK-VBELN = WA_VBRK1-VBELN.
WA_VBRK-KNUMV = WA_VBRK1-KNUMV.
WA_VBRK-KNUMV = WA_VBRK1-KNUMV.
WA_VBRK-FKDAT = WA_VBRK1-FKDAT.
WA_VBRK-KUNAG = WA_VBRK1-KUNAG.
APPEND WA_VBRK TO T_VBRK.
CLEAR WA_VBRK.
ENDIF.
ENDIF.
ENDIF.
ENDIF.
ENDLOOP.
CLEAR WA_KONV.
CLEAR WA_VALUES.
REFRESH T_VALUES.
LOOP AT T_KONV INTO WA_KONV.
ON CHANGE OF WA_KONV-KPOSN OR WA_KONV-KNUMV.
IF SY-TABIX NE 1.
APPEND WA_VALUES TO T_VALUES.
CLEAR WA_VALUES.
ENDIF.
ENDON.
CLEAR L_KNUMV.
CLEAR L_KSCHL.
CLEAR L_MATNR.
WA_VALUES-KNUMV = WA_KONV-KNUMV.
WA_VALUES-KPOSN = WA_KONV-KPOSN.
CASE WA_KONV-KSCHL.
WHEN 'PR00'.
IF WA_KONV-KBETR NE 0.
WA_VALUES-PR00 = WA_KONV-KBETR.
ENDIF.
WHEN 'HA00'.
IF WA_KONV-KBETR NE 0.
WA_VALUES-HA00 = WA_KONV-KBETR .
ENDIF.
WHEN 'HB00'.
IF WA_KONV-KBETR NE 0.
WA_VALUES-HB00 = WA_KONV-KBETR .
ENDIF.
WHEN 'HD00'.
IF WA_KONV-KBETR NE 0.
WA_VALUES-HD00 = WA_KONV-KBETR .
ENDIF.
WHEN 'R100'.
IF WA_KONV-KBETR NE 0.
WA_VALUES-R100 = L_PR00.
ENDIF.
WHEN 'JEXP'.
IF WA_KONV-KBETR NE 0.
WA_VALUES-JEXP = WA_KONV-KBETR .
ENDIF.
WHEN 'JESP'.
IF WA_KONV-KBETR NE 0.
WA_VALUES-JESP = WA_KONV-KBETR .
ENDIF.
WHEN 'JEAP'.
IF WA_KONV-KBETR NE 0.
WA_VALUES-JEAP = WA_KONV-KBETR .
ENDIF.
WHEN 'JCEP'.
IF WA_KONV-KBETR NE 0.
WA_VALUES-JCEP = WA_KONV-KBETR .
ENDIF.
WHEN 'JEXN'.
IF WA_KONV-KBETR NE 0.
WA_VALUES-JEXN = WA_KONV-KBETR.
ENDIF.
WHEN 'JNED'.
IF WA_KONV-KBETR NE 0.
WA_VALUES-JNED = WA_KONV-KBETR .
ENDIF.
WHEN 'JECS'.
IF WA_KONV-KBETR NE 0.
WA_VALUES-JECS = WA_KONV-KBETR.
ENDIF.
WHEN 'JASS'.
IF WA_KONV-KBETR NE 0.
WA_VALUES-JASS = WA_KONV-KBETR.
ENDIF.
WHEN 'ZLST'.
IF WA_KONV-KBETR NE 0.
WA_VALUES-ZLST = WA_KONV-KBETR.
ENDIF.
WHEN 'JLSR'.
IF WA_KONV-KBETR NE 0.
WA_VALUES-JLSR = WA_KONV-KBETR.
ENDIF.
WHEN 'JIVP'.
IF WA_KONV-KBETR NE 0.
WA_VALUES-JIVP = WA_KONV-KBETR.
ENDIF.
WHEN 'ZCST'.
IF WA_KONV-KBETR NE 0.
WA_VALUES-ZCST = WA_KONV-KBETR.
ENDIF.
WHEN 'JLEA'.
IF WA_KONV-KBETR NE 0.
WA_VALUES-JLEA = WA_KONV-KBETR.
ENDIF.
WHEN 'ZTOT'.
IF WA_KONV-KBETR NE 0.
WA_VALUES-ZTOT = WA_KONV-KBETR.
ENDIF.
WHEN 'ZAST'.
IF WA_KONV-KBETR NE 0.
WA_VALUES-ZAST = WA_KONV-KBETR.
ENDIF.
WHEN 'JSER'.
IF WA_KONV-KBETR NE 0.
WA_VALUES-JSER = WA_KONV-KBETR.
ENDIF.
WHEN 'JSTE'.
IF WA_KONV-KBETR NE 0.
WA_VALUES-JSTE = WA_KONV-KBETR.
ENDIF.
WHEN 'JINS'.
IF WA_KONV-KBETR NE 0.
WA_VALUES-JINS = WA_KONV-KBETR.
ENDIF.
ENDCASE.
ENDLOOP.
SORT T_VALUES BY KNUMV.
*loop to append matnr,fkimg and base toatal price values in to the final table fvalues.
LOOP AT T_VBRK INTO WA_VBRK.
LOOP AT T_VBRP INTO WA_VBRP WHERE VBELN EQ WA_VBRK-VBELN.
LOOP AT T_VALUES INTO WA_VALUES WHERE KNUMV EQ WA_VBRK-KNUMV.
IF WA_VALUES-KNUMV = WA_VBRK-KNUMV.
IF WA_VBRK-VBELN = WA_VBRP-VBELN.
*if wa_vbrp-posnr = wa_konv-kposn.
WA_FVALUES-KNUMV = WA_VALUES-KNUMV.
WA_FVALUES-VBELN = WA_VBRP-VBELN.
WA_FVALUES-MATNR = WA_VBRP-MATNR.
WA_FVALUES-ARKTX = WA_VBRP-ARKTX.
WA_FVALUES-FKIMG = WA_VBRP-FKIMG.
WA_FVALUES-KPOSN = WA_VBRP-POSNR.
WA_FVALUES-AUGRU = WA_VBRP-AUGRU_AUFT.
ON CHANGE OF WA_VBRP-POSNR OR WA_VBRP-MATNR.
IF SY-TABIX NE 0.
APPEND WA_FVALUES TO T_FVALUES.
CLEAR WA_FVALUES.
ENDIF.
ENDON.
ENDIF.
ENDIF.
ENDLOOP.
ENDLOOP.
ENDLOOP.
CLEAR WA_VALUES.
CLEAR WA_FVALUES.
LOOP AT T_VALUES INTO WA_VALUES.
LOOP AT T_FVALUES INTO WA_FVALUES.
IF WA_VALUES-KNUMV = WA_FVALUES-KNUMV.
IF WA_VALUES-KPOSN = WA_FVALUES-KPOSN.
WA_FVALUES-PR00 = WA_VALUES-PR00.
WA_FVALUES-BTP = WA_VALUES-PR00 * WA_FVALUES-FKIMG.
WA_FVALUES-HA00 = WA_VALUES-HA00.
WA_FVALUES-HB00 = WA_VALUES-HB00.
WA_FVALUES-HD00 = WA_VALUES-HD00.
WA_FVALUES-R100 = WA_VALUES-R100.
WA_FVALUES-JEXP = WA_VALUES-JEXP.
WA_FVALUES-JESP = WA_VALUES-JESP.
WA_FVALUES-JEAP = WA_VALUES-JEAP.
WA_FVALUES-JCEP = WA_VALUES-JCEP.
WA_FVALUES-JEXN = WA_VALUES-JEXN.
WA_FVALUES-JNED = WA_VALUES-JNED.
WA_FVALUES-JECS = WA_VALUES-JECS.
WA_FVALUES-JASS = WA_VALUES-JASS.
WA_FVALUES-JLSR = WA_VALUES-JLSR.
WA_FVALUES-JIVP = WA_VALUES-JIVP.
WA_FVALUES-JLEA = WA_VALUES-JLEA.
WA_FVALUES-JSER = WA_VALUES-JSER .
WA_FVALUES-JSTE = WA_VALUES-JSTE.
WA_FVALUES-JINS = WA_VALUES-JINS.
WA_FVALUES-ZLST = WA_VALUES-ZLST.
WA_FVALUES-ZCST = WA_VALUES-ZCST.
WA_FVALUES-ZTOT = WA_VALUES-ZTOT.
WA_FVALUES-ZAST = WA_VALUES-ZAST.
MODIFY T_FVALUES FROM WA_FVALUES.
CLEAR WA_FVALUES.
ENDIF.
ENDIF.
ENDLOOP.
ENDLOOP.
*loop to calculate the base total price for vbeln and store it in another internal table having vbeln and sum as the fields,
REFRESH T_BTP.
CLEAR WA_BTP.
CLEAR WA_FVALUES.
LOOP AT T_FVALUES INTO WA_FVALUES.
IF WA_FVALUES-AUGRU = 'ZFR'.
ON CHANGE OF WA_FVALUES-VBELN.
IF SY-TABIX NE 1.
APPEND WA_BTP TO T_BTP.
ENDIF.
CLEAR WA_BTP.
ENDON.
*to calculate the sum of base total price for a single vbeln.
WA_BTP-VBELN = WA_FVALUES-VBELN.
WA_BTP-SUM_BTP = WA_BTP-SUM_BTP + WA_FVALUES-JASS.
ELSE.
ON CHANGE OF WA_FVALUES-VBELN.
IF SY-TABIX NE 1.
APPEND WA_BTP TO T_BTP.
ENDIF.
CLEAR WA_BTP.
ENDON.
*to calculate the sum of base total price for a single vbeln.
WA_BTP-VBELN = WA_FVALUES-VBELN.
WA_BTP-SUM_BTP = WA_BTP-SUM_BTP + WA_FVALUES-PR00.
ENDIF.
ENDLOOP.
PERFORM DISPLAY.
PERFORM DISPLAY_RESULTS.
*******************************************************************************************************************
&----
*& Form DISPLAY
&----
FORM DISPLAY.
*loop start to get the final display table t_disp.
CLEAR WA_FVALUES.
REFRESH T_DISPLAY.
LOOP AT T_FVALUES INTO WA_FVALUES.
CLEAR WA_DISPLAY.
CLEAR L_HA00.
CLEAR L_HB00.
CLEAR L_JINS.
CLEAR L_HD00.
CLEAR L_JEXP.
CLEAR L_JESP.
CLEAR L_JEAP.
CLEAR L_JCEP.
CLEAR L_JEXN.
CLEAR L_JNED.
CLEAR L_EDSUM.
CLEAR L_JECS.
CLEAR L_ZLST.
CLEAR L_JLSR.
CLEAR L_JIVP.
CLEAR L_ZCST.
WA_DISPLAY-VBELN = WA_FVALUES-VBELN.
WA_DISPLAY-ARKTX = WA_FVALUES-ARKTX.
*to check weither augru = zfr.
IF WA_FVALUES-AUGRU = 'ZFR'.
WA_DISPLAY-BUP = ' '.
WA_DISPLAY-BTP = ' '.
CONCATENATE WA_DISPLAY-ARKTX '(FOC)' INTO L_ARKTX.
WA_DISPLAY-ARKTX = L_ARKTX.
L_PRICE = WA_FVALUES-JASS.
ELSE.
L_PRICE = WA_FVALUES-PR00.
WA_DISPLAY-ARKTX = WA_FVALUES-ARKTX.
ENDIF.
*to get the fkdat and KUNAG for vbeln.
LOOP AT T_VBRK INTO WA_VBRK.
IF WA_VBRK-VBELN = WA_FVALUES-VBELN.
WA_DISPLAY-FKDAT = WA_VBRK-FKDAT.
WA_DISPLAY-KUNAG = WA_VBRK-KUNAG.
ENDIF.
ENDLOOP.
*to get the customer name
LOOP AT T_KNA1 INTO WA_KNA1.
IF WA_DISPLAY-KUNAG = WA_KNA1-KUNNR.
WA_DISPLAY-NAME1 = WA_KNA1-NAME1.
ENDIF.
ENDLOOP.
*to get the matnr
WA_DISPLAY-MATNR = WA_FVALUES-MATNR.
*to calculate the base total price and the quantity.
WA_DISPLAY-FKIMG = WA_FVALUES-FKIMG.
WA_DISPLAY-BUP = L_PRICE.
WA_DISPLAY-BTP = WA_DISPLAY-BUP * WA_FVALUES-FKIMG..
*to calculate thevalues of HA00 and HB00.
LOOP AT T_BTP INTO WA_BTP.
IF WA_BTP-VBELN = WA_FVALUES-VBELN.
L_HA00 = WA_FVALUES-HA00 * WA_DISPLAY-BTP / 1000.
L_HB00 = WA_FVALUES-HB00 * WA_DISPLAY-BTP / WA_BTP-SUM_BTP.
L_JINS = WA_FVALUES-JINS * WA_DISPLAY-BTP / WA_BTP-SUM_BTP.
L_HD00 = WA_FVALUES-HD00 * WA_DISPLAY-BTP / WA_BTP-SUM_BTP.
ENDIF.
ENDLOOP.
*to calculate the discount.
IF WA_FVALUES-R100 NE 0.
WA_DISPLAY-DISCOUNT = WA_DISPLAY-BTP. "100% discount.
ELSE.
WA_DISPLAY-DISCOUNT = L_HA00 + L_HB00.
ENDIF.
*to calculate the assessable value.
IF WA_FVALUES-JASS NE 0.
WA_DISPLAY-ASSVL = WA_FVALUES-JASS.
CONCATENATE WA_FVALUES-ARKTX '(AS SUCH)' INTO L_ARKTX.
WA_DISPLAY-ARKTX = L_ARKTX.
ELSE.
WA_DISPLAY-ASSVL = WA_FVALUES-PR00 - L_HA00 - L_HB00.
ENDIF.
*to calculate ED+ECS.
L_JEXP = WA_FVALUES-JEXP * WA_DISPLAY-ASSVL / 1000.
L_JESP = WA_FVALUES-JESP * WA_DISPLAY-ASSVL / 1000.
L_JEAP = WA_FVALUES-JEAP * WA_DISPLAY-ASSVL / 1000.
L_JCEP = WA_FVALUES-JCEP * WA_DISPLAY-ASSVL / 1000.
L_JEXN = WA_FVALUES-JEXN * WA_DISPLAY-ASSVL / 1000.
L_JNED = WA_FVALUES-JNED.
L_EDSUM = L_JEXP + L_JESP + L_JEAP + L_JCEP + L_JEXN + L_JNED.
L_JECS = L_EDSUM * WA_FVALUES-JECS / 1000.
WA_DISPLAY-EDS = L_EDSUM + L_JECS.
to calculate total tax.
IF WA_FVALUES-JASS NE 0.
WA_DISPLAY-TAXTO = WA_FVALUES-PR00 - L_HA00 - L_HB00.
ELSE.
WA_DISPLAY-TAXTO = WA_FVALUES-PR00 - L_HA00 - L_HB00 + WA_DISPLAY-EDS.
ENDIF.
*to calculate LSTLSR and CSTCSR.
L_ZLST = WA_FVALUES-ZLST * WA_DISPLAY-TAXTO / 1000.
L_JLSR = WA_FVALUES-JLSR * L_ZLST / 1000.
L_JIVP = WA_FVALUES-JIVP * WA_DISPLAY-TAXTO / 1000.
L_ZCST = WA_FVALUES-ZCST * WA_DISPLAY-TAXTO / 1000.
IF L_ZCST EQ 0.
IF L_JIVP EQ 0.
WA_DISPLAY-LSTR = L_ZLST + L_JLSR.
ELSE.
WA_DISPLAY-LSTR = L_JIVP.
ENDIF.
ELSE.
WA_DISPLAY-CSTR = L_ZCST.
ENDIF.
*to calculate others.
WA_DISPLAY-OTHERS = L_JINS + L_HD00.
*to get ZTOT+ZAST
WA_DISPLAY-ZTOT = WA_FVALUES-ZTOT + WA_FVALUES-ZAST.
*to calculate the totals.
WA_DISPLAY-TOTAL = WA_DISPLAY-TAXTO + WA_DISPLAY-LSTR + WA_DISPLAY-CSTR + WA_DISPLAY-OTHERS + WA_DISPLAY-ZTOT.
APPEND WA_DISPLAY TO T_DISPLAY.
ENDLOOP.
SORT T_DISPLAY BY VBELN.
ENDFORM. "display
&----
*& Form DISPLAY_RESULTS
&----
FORM DISPLAY_RESULTS .
Assign the value of the report Id to the declared variable. Comes as a
part of the ALV standard. This is required to use the ALV features
I_G_REPID = SY-REPID.
Performed to initialize the Header, Layout, Events, field category and
Sort-Subtotal of the ALV Grid
PERFORM INITIALIZE_ALV_FOR_DISPLAY.
Display in the ALV grid
PERFORM DISPLAY_OUTPUT .
Clear all the variables
PERFORM CLEAR_ALL.
ENDFORM. " DISPLAY_RESULTS
&----
*& Form INITIALIZE_ALV_FOR_DISPLAY
&----
text
----
FORM INITIALIZE_ALV_FOR_DISPLAY .
*Declare the variable for date manipulation purposed
DATA: L_CORRDATE TYPE STRING.
************************************************************************
DISLAY THE HEADER OF THE ALV
************************************************************************
PERFORM DISPLAY_VALUES USING I_GT_LIST_TOP_OF_PAGE[]
'H' 'Sales Tax Register'.
Clear the variable L_CORRDATE
CLEAR L_CORRDATE.
Populate the header of the ALV
PERFORM DISPLAY_VALUES USING I_GT_LIST_TOP_OF_PAGE[]
'' ''.
***********************************************************************
DISLAY THE FIELD CATEGORY VARIABLES
***********************************************************************
PERFORM FIELDCAT_INIT USING I_GT_FIELDCAT[]
'VBELN' 'T_DISPLAY' 'Invoice No.' ''.
PERFORM FIELDCAT_INIT USING I_GT_FIELDCAT[]
'FKDAT' 'T_DISPLAY' 'Invoice Date' ''.
PERFORM FIELDCAT_INIT USING I_GT_FIELDCAT[]
'KUNAG' 'T_DISPLAY' 'Customer No.' ''.
PERFORM FIELDCAT_INIT USING I_GT_FIELDCAT[]
'NAME1' 'T_DISPLAY' 'Customer Name' ''.
PERFORM FIELDCAT_INIT USING I_GT_FIELDCAT[]
'MATNR' 'T_DISPLAY' 'Material' ''.
PERFORM FIELDCAT_INIT USING I_GT_FIELDCAT[]
'ARKTX' 'T_DISPLAY' 'Sales Order Item' ''.
PERFORM FIELDCAT_INIT USING I_GT_FIELDCAT[]
'FKIMG' 'T_DISPLAY' 'Quantity' ''.
PERFORM FIELDCAT_INIT USING I_GT_FIELDCAT[]
'BUP' 'T_DISPLAY' 'BaseUnit Pr' ''.
PERFORM FIELDCAT_INIT USING I_GT_FIELDCAT[]
'BTP' 'T_DISPLAY' 'Base Total Pr' ''.
PERFORM FIELDCAT_INIT USING I_GT_FIELDCAT[]
'DISCOUNT' 'T_DISPLAY' 'Discount' ''.
PERFORM FIELDCAT_INIT USING I_GT_FIELDCAT[]
'ASSVL' 'T_DISPLAY' 'Assessable Value' ''.
PERFORM FIELDCAT_INIT USING I_GT_FIELDCAT[]
'EDS' 'T_DISPLAY' 'ED+ECS' ''.
PERFORM FIELDCAT_INIT USING I_GT_FIELDCAT[]
'TAXTO' 'T_DISPLAY' 'TAXABLE TO' ''.
PERFORM FIELDCAT_INIT USING I_GT_FIELDCAT[]
'LSTR' 'T_DISPLAY' 'LST+LSR' ''.
PERFORM FIELDCAT_INIT USING I_GT_FIELDCAT[]
'CSTR' 'T_DISPLAY' 'CST+CSR' ''.
PERFORM FIELDCAT_INIT USING I_GT_FIELDCAT[]
'OTHERS' 'T_DISPLAY' 'Others' ''.
PERFORM FIELDCAT_INIT USING I_GT_FIELDCAT[]
'ZTOT' 'T_DISPLAY' 'TOT+AST' ''.
PERFORM FIELDCAT_INIT USING I_GT_FIELDCAT[]
'TOTAL' 'T_DISPLAY' 'Total' ''.
PERFORM EVENTTAB_BUILD USING I_GT_EVENTS[].
************************************************************************
INITIALIZE THE LAYOUT
************************************************************************
PERFORM INITIALIZE_LAYOUT.
ENDFORM. " INITIALIZE_ALV_FOR_DISPLAY
&----
*& Form DISPLAY_VALUES
&----
text
----
-->W_LT_TOP_OF_PAGE text
-->W_TYPE text
-->W_INFO text
----
FORM DISPLAY_VALUES USING W_LT_TOP_OF_PAGE TYPE SLIS_T_LISTHEADER
W_TYPE W_INFO.
Declared for further usage
DATA: L_LS_LINE TYPE SLIS_LISTHEADER.
Clear the table header
CLEAR L_LS_LINE.
Assign the input value to the required fields and append the entry to
the LS-LINE
L_LS_LINE-TYP = W_TYPE.
L_LS_LINE-INFO = W_INFO.
APPEND L_LS_LINE TO W_LT_TOP_OF_PAGE.
ENDFORM. "DISPLAY_VALUES
&----
*& Form FIELDCAT_INIT
&----
text
----
-->P_I_FIELDCAT[] text
----
FORM FIELDCAT_INIT USING W_RT_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV
W_FIELDNAME W_INTTABLE W_SELTEXT W_SUBTOT.
Declared for use in this module
DATA: LS_FIELDCAT TYPE SLIS_FIELDCAT_ALV.
Clear table header
CLEAR LS_FIELDCAT.
Assign the value to the table fields
LS_FIELDCAT-COL_POS = W_POS.
LS_FIELDCAT-FIELDNAME = W_FIELDNAME.
LS_FIELDCAT-TABNAME = W_INTTABLE.
LS_FIELDCAT-SELTEXT_M = W_SELTEXT.
Add the subtotal field to the field category if the sub-total is
specified
IF W_SUBTOT = 'X'.
LS_FIELDCAT-DO_SUM = 'X'.
ENDIF.
Append the value to the internal table
APPEND LS_FIELDCAT TO W_RT_FIELDCAT.
Increment the Counter by 1
W_POS = W_POS + 1.
ENDFORM. " FIELDCAT_INIT
&----
*& Form EVENTTAB_BUILD
&----
text
----
-->W_RT_EVENTStext
----
FORM EVENTTAB_BUILD USING W_RT_EVENTS TYPE SLIS_T_EVENT.
Declared for use in program
DATA: LS_EVENT TYPE SLIS_ALV_EVENT.
Call this function to trigger the ALV grid events
CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
EXPORTING
I_LIST_TYPE = 0
IMPORTING
ET_EVENTS = W_RT_EVENTS.
Read the table to get the name and put it into the events
READ TABLE W_RT_EVENTS WITH KEY NAME = SLIS_EV_TOP_OF_PAGE
INTO LS_EVENT.
Check if the above statement is successful
IF SY-SUBRC = 0.
MOVE I_G_TOP_OF_PAGE TO LS_EVENT-FORM.
APPEND LS_EVENT TO W_RT_EVENTS.
ENDIF.
ENDFORM. " EVENTTAB_BUILD
&----
*& Form TOP_OF_PAGE
&----
text
----
FORM TOP_OF_PAGE.
Call this funciton to dipslay the header of the ALV grid
CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
EXPORTING
IT_LIST_COMMENTARY = I_GT_LIST_TOP_OF_PAGE.
ENDFORM. "TOP_OF_PAGE
&----
*& Form INITIALIZE_LAYOUT
&----
text
----
FORM INITIALIZE_LAYOUT.
Initialiaze the Layout for the colour and Column width
I_GS_LAYOUT-INFO_FIELDNAME = 'LINE_COLOUR'.
I_GS_LAYOUT-COLWIDTH_OPTIMIZE = 'X'.
ENDFORM. " INITIALIZE_LAYOUT
&----
*& Form clear_all
&----
text
----
FORM CLEAR_ALL.
Free the internal tables
FREE: T_DISPLAY.
Free all the ALV variables
FREE: I_GT_FIELDCAT,
I_GS_LAYOUT,
I_GT_LIST_TOP_OF_PAGE,
I_G_REPID,
I_G_TOP_OF_PAGE,
I_GT_EVENTS,
I_GS_SORT,
I_GT_SORT,
I_GS_PRINT.
Free the declared variables
FREE: W_POS.
ENDFORM. "CLEAR_ALL
&----
*& Form DISPLAY_OUTPUT
&----
text
----
FORM DISPLAY_OUTPUT.
Declared for use in the program
DATA: L_TITLE TYPE LVC_TITLE.
Assign the value of the title to be displayed
L_TITLE = 'Sales Tax Register'.
Call this funciton to display the output
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
I_CALLBACK_PROGRAM = I_G_REPID
I_CALLBACK_USER_COMMAND = ''
I_CALLBACK_PF_STATUS_SET = ''
I_GRID_TITLE = L_TITLE
I_CALLBACK_TOP_OF_PAGE = 'Proper'
IS_LAYOUT = I_GS_LAYOUT
IT_EVENTS = I_GT_EVENTS[]
IT_FIELDCAT = I_GT_FIELDCAT[]
IT_SORT = I_GT_SORT[]
I_SAVE = 'A'
TABLES
T_OUTTAB = T_DISPLAY.
ENDFORM. " DISPLAY_OUTPUT
*Selection texts
*----
P_BUKRS Company Code
P_KUNNR Customer Number
P_MWSK1 Tax Code
P_WERKS Plant
S_FKDAT Date
*Messages
*----
*
Message class: Z_SD
*001 invalid plant
*002 invalid company code
*003 invalid tax code
-
Extracted by Direct Download Enterprise version 1.2 - E.G.Mellodew. 1998-2004 UK.
05-12-2006 12:46 PM
Dear bikash,
Report seems to be good. But its very slow even if you run for a single day. Are u using the same report. Any idea how to improve its performance.
bye
anu
05-12-2006 3:54 PM
Hi Anupma,
this report was used in one of my projects.. its slow because it fetches a lot of data from database and uses 'FOR ALL ENTRIES'.. to improve performance, u may go thru the code n comment out the unwanted part...also u can run the 'Code Inspector' whereien u ll be able to c all the performance related messages along with others.. u can go thru them n try to manipulate the code..
u may have to give a little time for the same though..
just give it a try.
Regadrs,
Bikash