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: 

Sales register

Former Member
0 Kudos

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

4 REPLIES 4

Former Member
0 Kudos

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.

Former Member
0 Kudos

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.

Former Member
0 Kudos

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

0 Kudos

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