Skip to Content
0
Former Member
Apr 22, 2007 at 05:14 PM

plz help me modifying this code to make is run faster

34 Views

REPORT ZMS_ACBAL NO STANDARD PAGE HEADING LINE-SIZE 200.

TABLES : LFA1, "Vendor Master (General Section)

BSIK, "Accounting: Secondary Index for Vendors

BKPF, "Accounting Document Header

BSIS, "Accounting: Secondary Index for G/L Accounts

SKAT, "G/L A/c (Chart of Accounts: Description)

EKBE, "History per Purchasing Document

BSEG. "Accounting Document Segment

TYPE-POOLS SLIS.

DATA: BEGIN OF JTAB OCCURS 0,

BUDAT LIKE BKPF-BUDAT, "Posting Date

BLART LIKE BKPF-BLART, "Doc. Type

MDOCU LIKE EKBE-BELNR, "Material Doc. No.

BELNR LIKE BSEG-BELNR, "Doc. No.

HKONT LIKE BSEG-HKONT, "GL A/c

LIFNR LIKE BSIK-LIFNR, "Vendor Code

PSWBT LIKE BSEG-PSWBT, "GL Amt

SHKZG LIKE BSEG-SHKZG, "Db/Cr Indicator

SGTXT LIKE BSEG-SGTXT, "Text

GJAHR LIKE BSEG-GJAHR, "Fiscal Year

EBELN LIKE BSEG-EBELN, "Purchasing Doc. No.

NAME1 LIKE LFA1-NAME1, "Vendor Name

TXT50 LIKE SKAT-TXT50, "Long Text

BAMT TYPE P DECIMALS 2, "Base Amount

TDS1 TYPE I, "TDS Amt Rounded Off

TDS2(5) TYPE P DECIMALS 2, "Calculated TDS %

END OF JTAB.

DATA : PTAB LIKE JTAB OCCURS 0 WITH HEADER LINE .

DATA : BTAB LIKE JTAB OCCURS 0 WITH HEADER LINE.

DATA : MDT(8) TYPE C.

DATA : MYR(4) TYPE C.

DATA : MTH(2) TYPE C.

DATA : MBELNR LIKE BSEG-BELNR.

DATA : MTDS1 LIKE JTAB-TDS1.

DATA : THKONT(10) TYPE C.

DATA : TDESC(50) TYPE C.

DATA : TLIST(60) TYPE C.

DATA : LT_LAYOUT TYPE SLIS_LAYOUT_ALV,

LT_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV,

LT_LISTHEADER TYPE SLIS_T_LISTHEADER,

LT_EVENT TYPE SLIS_T_EVENT,

LT_SORT TYPE SLIS_T_SORTINFO_ALV,

LT_SORT1 TYPE SLIS_SORTINFO_ALV.

SELECTION-SCREEN : BEGIN OF BLOCK B1S WITH FRAME TITLE T1.

SELECT-OPTIONS : S_HKONT FOR BSIS-HKONT NO INTERVALS OBLIGATORY.

SELECT-OPTIONS : S_BUDAT FOR BSIS-BUDAT.

SELECTION-SCREEN : END OF BLOCK B1S.

INITIALIZATION.

T1 = 'T.D.S. Register'.

START-OF-SELECTION.

MDT = S_BUDAT-LOW.

SHIFT MDT BY 4 PLACES.

MTH = MDT.

MYR = S_BUDAT-LOW.

IF MTH GE '01' AND MTH LE '03'.

MYR = MYR - 1.

ENDIF.

PERFORM GBSEG.

END-OF-SELECTION.

THKONT = JTAB-HKONT.

TDESC = JTAB-TXT50.

LT_LAYOUT-ZEBRA = 'X'.

LT_LAYOUT-COLWIDTH_OPTIMIZE = 'X'.

LT_LAYOUT-INFO_FIELDNAME = 'CLR'.

PERFORM FIEDCAT USING LT_FIELDCAT.

PERFORM DISPLAY.

&----


*& Form GBSEG

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


form GBSEG.

  • Get Posting Date from BSIS ************

SELECT BELNR BUDAT BLART FROM BKPF INTO CORRESPONDING FIELDS OF TABLE PTAB WHERE BUDAT IN S_BUDAT.

  • Get Records from BSEG only for GL Ac in Select-Options ************

SELECT BELNR GJAHR SHKZG PSWBT SGTXT HKONT LIFNR FROM BSEG INTO CORRESPONDING FIELDS OF TABLE JTAB

FOR ALL ENTRIES IN PTAB WHERE BELNR = PTAB-BELNR AND HKONT IN S_HKONT.

LOOP AT JTAB.

READ TABLE PTAB WITH KEY BELNR = JTAB-BELNR.

MOVE PTAB-BUDAT TO JTAB-BUDAT.

MOVE PTAB-BLART TO JTAB-BLART.

MODIFY JTAB.

ENDLOOP.

  • Delete records not in Select-Options Date Range from JTAB *******

DELETE JTAB WHERE BUDAT = '00000000'.

  • SELECT BELNR GJAHR SHKZG PSWBT SGTXT HKONT LIFNR FROM BSEG

  • INTO (JTAB-BELNR, JTAB-GJAHR, JTAB-SHKZG, JTAB-PSWBT, JTAB-SGTXT, JTAB-HKONT,

  • JTAB-LIFNR) WHERE GJAHR = MYR AND HKONT IN S_HKONT.

SORT JTAB BY BELNR.

LOOP AT JTAB.

JTAB-TDS1 = JTAB-PSWBT.

IF JTAB-BLART < '99'.

JTAB-TDS1 = 0.

MODIFY JTAB.

ELSE.

IF JTAB-TDS1 < JTAB-PSWBT.

JTAB-TDS1 = JTAB-TDS1 + 1.

ENDIF.

IF JTAB-SHKZG = 'S'.

JTAB-TDS1 = JTAB-TDS1 * -1.

ENDIF.

JTAB-PSWBT = 0.

ON CHANGE OF JTAB-BELNR.

MODIFY JTAB.

ELSE.

COLLECT JTAB.

DELETE JTAB.

ENDON.

ENDIF.

ENDLOOP.

  • Delete records not in Select-Options Date Range from JTAB *******

  • DELETE JTAB WHERE BUDAT = '00000000'.

    • Delete records for TYPE - 11,12,14,16 from JTAB *******

  • CLEAR JTAB.

  • LOOP AT JTAB.

  • ENDLOOP.

    • Get Base Amt,LIFNR, NAME1, MDOCU ************

    CLEAR JTAB.

    LOOP AT JTAB.

    SELECT BELNR SHKZG PSWBT EBELN FROM BSEG

    INTO (BTAB-BELNR, BTAB-SHKZG, BTAB-PSWBT, BTAB-EBELN)

    WHERE BELNR = JTAB-BELNR AND SHKZG = 'S' AND GJAHR = MYR.

    JTAB-BAMT = BTAB-PSWBT + JTAB-BAMT.

    IF BTAB-EBELN <> ''.

    JTAB-EBELN = BTAB-EBELN.

    ENDIF.

    ENDSELECT.

    IF JTAB-BAMT > 0 AND JTAB-BAMT > JTAB-TDS1.

    JTAB-TDS2 = JTAB-TDS1 / JTAB-BAMT * 100.

    ELSE.

    JTAB-TDS2 = 0.

    ENDIF.

    SELECT BELNR SHKZG LIFNR FROM BSEG

    INTO (BTAB-BELNR, BTAB-SHKZG, BTAB-LIFNR)

    WHERE BELNR = JTAB-BELNR AND SHKZG = 'H' AND LIFNR <> '' AND GJAHR = MYR.

    JTAB-LIFNR = BTAB-LIFNR.

    ENDSELECT.

    IF JTAB-EBELN <> ''.

    SELECT * FROM EKBE WHERE EBELN = JTAB-EBELN AND BEWTP = 'Q'.

    IF SY-SUBRC = 0.

    JTAB-MDOCU = EKBE-BELNR.

    ENDIF.

    ENDSELECT.

    ELSE.

    CONCATENATE 'TYPE -' JTAB-BLART INTO JTAB-MDOCU.

    ENDIF.

    IF JTAB-LIFNR <> ''.

    SELECT * FROM LFA1 WHERE LIFNR = JTAB-LIFNR.

    IF SY-SUBRC = 0.

    JTAB-NAME1 = LFA1-NAME1.

    ENDIF.

    ENDSELECT.

    ELSE.

    CONCATENATE 'DOCUMENT TYPE -' JTAB-BLART INTO JTAB-NAME1.

    ENDIF.

    SELECT * FROM SKAT WHERE SAKNR = JTAB-HKONT.

    JTAB-TXT50 = SKAT-TXT50.

    ENDSELECT.

    MODIFY JTAB.

    JTAB-BAMT = 0.

    JTAB-TDS1 = 0.

    JTAB-TDS2 = 0.

    ENDLOOP.

    endform. " GBSEG

    &----


    *& Form FIEDCAT

    &----


    • text

    ----


    • -->P_LT_FIELDCAT text

    ----


    form FIEDCAT using p_lt_fieldcat TYPE SLIS_T_FIELDCAT_ALV.

    FIELD-SYMBOLS: <FC> TYPE SLIS_FIELDCAT_ALV.

    CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'

    EXPORTING

    I_PROGRAM_NAME = SY-REPID

    • I_INTERNAL_TABNAME =

    I_STRUCTURE_NAME = 'ZTDSREG'

    • I_CLIENT_NEVER_DISPLAY = 'X'

    I_INCLNAME = SY-REPID

    • I_BYPASSING_BUFFER =

    • I_BUFFER_ACTIVE =

    CHANGING

    ct_fieldcat = P_LT_FIELDCAT

    • EXCEPTIONS

    • INCONSISTENT_INTERFACE = 1

    • PROGRAM_ERROR = 2

    • OTHERS = 3

    .

    IF sy-subrc <> 0.

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

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

    ENDIF.

    LOOP AT P_LT_FIELDCAT ASSIGNING <FC>.

    CASE <FC>-FIELDNAME.

    WHEN 'BUDAT'.

    <FC>-SELTEXT_L = 'Invoice Date'.

    <FC>-ddictxt = 'L'. "Depending upon 'S,L,M' takes 'Short,Long,Medium' SELTEXT

    • <FC>-KEY = 'X'.

    • <FC>-HOTSPOT = 'X'.

    • <FC>-COL_POS = 1.

    WHEN 'MDOCU'.

    <FC>-SELTEXT_L = 'Invoice No.'.

    <FC>-ddictxt = 'L'.

    WHEN 'BELNR'.

    <FC>-SELTEXT_L = 'A/c Document No.'.

    <FC>-ddictxt = 'L'.

    WHEN 'NAME1'.

    <FC>-SELTEXT_L = 'Vendor Name'.

    <FC>-ddictxt = 'L'.

    WHEN 'BAMT'.

    <FC>-SELTEXT_L = 'Base Amount'.

    <FC>-ddictxt = 'L'.

    WHEN 'TDS1'.

    <FC>-SELTEXT_L = 'TDS Amount'.

    <FC>-ddictxt = 'L'.

    <FC>-DO_SUM = 'X'.

    WHEN 'TDS2'.

    <FC>-SELTEXT_L = 'TDS %'.

    <FC>-ddictxt = 'L'.

    WHEN 'SGTXT'.

    <FC>-SELTEXT_L = 'Text'.

    <FC>-ddictxt = 'L'.

    ENDCASE.

    ENDLOOP.

    endform. " FIEDCAT

    &----


    *& Form DISPLAY

    &----


    • text

    ----


    • --> p1 text

    • <-- p2 text

    ----


    form DISPLAY .

    CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'

    EXPORTING

    • I_INTERFACE_CHECK = ' '

    • I_BYPASSING_BUFFER = ' '

    • I_BUFFER_ACTIVE = ' '

    I_CALLBACK_PROGRAM = SY-REPID

    • I_CALLBACK_PF_STATUS_SET = ' '

    • I_CALLBACK_USER_COMMAND = 'USER_COMMAND'

    I_CALLBACK_TOP_OF_PAGE = 'TOP_OF_PAGE'

    • I_CALLBACK_HTML_TOP_OF_PAGE = ' '

    • I_CALLBACK_HTML_END_OF_LIST = ' '

    • I_STRUCTURE_NAME =

    • I_BACKGROUND_ID = ' '

    • I_GRID_TITLE =

    • I_GRID_SETTINGS =

    IS_LAYOUT = LT_LAYOUT

    IT_FIELDCAT = LT_FIELDCAT

    • IT_EXCLUDING =

    • IT_SPECIAL_GROUPS =

    IT_SORT = LT_SORT

    • IT_FILTER =

    • IS_SEL_HIDE =

    • I_DEFAULT = 'X'

    • I_SAVE = ' '

    • IS_VARIANT =

    • IT_EVENTS =

    • IT_EVENT_EXIT =

    • IS_PRINT =

    • IS_REPREP_ID =

    • I_SCREEN_START_COLUMN = 0

    • I_SCREEN_START_LINE = 0

    • I_SCREEN_END_COLUMN = 0

    • I_SCREEN_END_LINE = 0

    • IT_ALV_GRAPHICS =

    • IT_HYPERLINK =

    • IT_ADD_FIELDCAT =

    • IT_EXCEPT_QINFO =

    • I_HTML_HEIGHT_TOP =

    • I_HTML_HEIGHT_END =

    • IMPORTING

    • E_EXIT_CAUSED_BY_CALLER =

    • ES_EXIT_CAUSED_BY_USER =

    TABLES

    t_outtab = JTAB

    • 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. " DISPLAY

    FORM TOP_OF_PAGE.

    REFRESH : LT_LISTHEADER.

    DATA : LT_LIST TYPE SLIS_LISTHEADER,

    HIGH(50),PLANT5(50).

    CLEAR: LT_LIST.

    LT_LIST-TYP = 'H'.

    LT_LIST-INFO = 'JOST ENGINEERING COMPANY LTD.'.

    APPEND LT_LIST TO LT_LISTHEADER.

    CLEAR LT_LIST.

    LT_LIST-TYP = 'S'.

    LT_LIST-INFO = 'MONTHLY T.D.S. REGISTER.'.

    APPEND LT_LIST TO LT_LISTHEADER.

    CLEAR LT_LIST.

    CONCATENATE 'G/L Account: ' THKONT ' - ' TDESC INTO TLIST SEPARATED BY SPACE.

    LT_LIST-TYP = 'S'.

    LT_LIST-INFO = TLIST.

    APPEND LT_LIST TO LT_LISTHEADER.

    CLEAR LT_LIST.

    CLEAR TLIST.

    CONCATENATE 'From: ' S_BUDAT-LOW6(2) '/' S_BUDAT-LOW4(2) '/'

    S_BUDAT-LOW(4) 'To:' S_BUDAT-HIGH6(2) '/' S_BUDAT-HIGH4(2) '/'

    S_BUDAT-HIGH(4) INTO TLIST SEPARATED BY SPACE.

    LT_LIST-TYP = 'S'.

    LT_LIST-INFO = TLIST.

    APPEND LT_LIST TO LT_LISTHEADER.

    CLEAR LT_LIST.

    CLEAR TLIST.

    CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'

    EXPORTING

    it_list_commentary = LT_LISTHEADER

    .

    ENDFORM.