Skip to Content
author's profile photo Former Member
Former Member

event handling

hiii,

can anyone can plz help me in

how to raise events and handle them in ABAP.

plz can u give me a small reflective example

Add a comment
10|10000 characters needed characters exceeded

Assigned Tags

Related questions

3 Answers

  • author's profile photo Former Member
    Former Member
    Posted on Apr 25, 2007 at 10:18 AM

    Hi,

    Are you asking about the different Events w.r.t ta ABAP program.

    see the sample code:

    report zesdr001

    line-size 215

    line-count 65

    no standard page heading

    message-id zv.

    ***********************************************************************

    • Tables Declaration

    ***********************************************************************

    tables:vbrk, " Sales Document: Billing Header Data

    mara, " Material Master Data

    mbew, " Material Valuation data

    mbewh, " Material Valuation: History Data

    t001, " Company Codes

    t001w, " Plants/Branches

    konv, " Pricing Conditions Data

    t179t, " Materials: Product hierarchies: Texts

    tcurx, " Currency Conversion Table

    vbuk, " Sales Document: Header Status data

    tvko, " Organizational Unit: Sales Organizations

    tvtw, " Organizational Unit: Dist.Channels

    tspa, " Organizational Unit: Divisions

    tvfk, " Billing Document Types

    kna1. " Customer Master Data

    ************************************************************************

    • Declaration of Data and Internal Tables

    ************************************************************************

    • Internal table to store the Billing Details data.(VBRK,VBRP)

    data: begin of itab_bill occurs 0,

    vbeln like vbrk-vbeln, " Billing Document Number

    fktyp like vbrk-fktyp, " Billing Category

    vbtyp like vbrk-vbtyp, " Sales Doc Category

    fkdat like vbrk-fkdat, " Billing doc date

    fkart like vbrk-fkart, " Billing Doc type

    bukrs like vbrk-bukrs, " Company Code

    kurrf like vbrk-kurrf, " Exchange type

    knumv like vbrk-knumv, " Condition Number

    waerk like vbrk-waerk, " Currency

    kunag like vbrk-kunag, " Sold to Party

    vrkme like vbrp-vrkme, " sales Unit

    posnr like vbrp-posnr, " Item Number

    charg like vbrp-charg, " Batch Number

    fkimg like vbrp-fkimg, " Billed quantity

    werks like vbrp-werks, " Plant

    matnr like vbrp-matnr, " Material Number

    netwr like vbrp-netwr, " Net Value of the doc

    wavwr like vbrp-wavwr, " Cost in Doc Currency

    kdmat like vbap-kdmat, " Customer Material

    end of itab_bill.

    • Internal table to write the report output when Customer Mode

    • Radiobutton is selected

    data: begin of itab_out occurs 0,

    kunag like vbrk-kunag, " Customer No

    vbeln like vbrk-vbeln, " Billing Document Number

    fkart like vbrk-fkart, " Billing Doc type

    fktyp like vbrk-fktyp, " Billing Category

    vbtyp like vbrk-vbtyp, " Sales Doc Category

    fkdat like vbrk-fkdat, " Billing doc date

    kunnr like kna1-kunnr, " Customer

    bukrs like vbrk-bukrs, " Company Code

    kurrf like vbrk-kurrf, " Exchange Rate

    waerk like vbrk-waerk, " Currency

    vrkme like vbrp-vrkme, " Sales Unit

    posnr like vbrp-posnr, " Item Number

    charg like vbrp-charg, " Batch Number

    fkimg like vbrp-fkimg, " Billed quantity

    werks like vbrp-werks, " Plant

    matnr like vbrp-matnr, " Material NUmber

    kdmat like vbap-kdmat, " Customer Material

    bil_amt(16) type p decimals 2, " Bill Amount

    mode(10), " Mode

    density(10), " Density

    sel_prc(16) type p decimals 2, " Selling Price

    mvg_prs like mbew-verpr, " Moving Price

    gp_mvp_amt like vbrp-netwr, " GrossProfit Amount(MVP)

    gp_mvp_pr(6) type p decimals 2, " ,, percentage

    end of itab_out.

    • Internal table to write the report output when Mode

    • Radiobutton is selected

    data: begin of itab_out2 occurs 0,

    mode(10),

    vbeln like vbrk-vbeln, " Billing Document Number

    fktyp like vbrk-fktyp, " Billing Category

    vbtyp like vbrk-vbtyp, " Sales Doc Category

    fkdat like vbrk-fkdat, " Billing doc date

    kunag like vbrk-kunag, " Sold to party

    kunnr like kna1-kunnr, " Customer

    bukrs like vbrk-bukrs, " Company Code

    kurrf like vbrk-kurrf, " Exchange Rate

    waerk like vbrk-waerk, " Currency

    vrkme like vbrp-vrkme, " Sales UNit

    posnr like vbrp-posnr, " Item No

    charg like vbrp-charg, " Batch Number

    fkimg like vbrp-fkimg, " Billed quantity

    werks like vbrp-werks, " Plant

    matnr like vbrp-matnr, " Material Number

    kdmat like vbap-kdmat, " Customer Material No

    bil_amt(16) type p decimals 2, " Billing Amount

    density(10), " density

    sel_prc(16) type p decimals 4, " Selling Price

    mvg_prs like mbew-verpr, " Moving Price

    gp_mvp_amt like vbrp-netwr, " GrossProfit Amount(MVP)

    gp_mvp_pr(6) type p decimals 2, " ,, percentage

    end of itab_out2.

    • Internal table to write the report output when Density

    • Radiobutton is selected

    data: begin of itab_out3 occurs 0,

    mode(10),

    density(10),

    vbeln like vbrk-vbeln, " Billing Document Number

    fktyp like vbrk-fktyp, " Billing Category

    vbtyp like vbrk-vbtyp, " Sales Doc Category

    fkdat like vbrk-fkdat, " Billing doc date

    kunag like vbrk-kunag, " Sold to Party

    kunnr like kna1-kunnr, " Customer

    bukrs like vbrk-bukrs, " Company Code

    kurrf like vbrk-kurrf, " Exchange Rate

    waerk like vbrk-waerk, " Currency

    vrkme like vbrp-vrkme, " Sales Unit

    posnr like vbrp-posnr, " Item Number

    charg like vbrp-charg, " Batch Number

    fkimg like vbrp-fkimg, " Billed quantity

    werks like vbrp-werks, " Plant

    matnr like vbrp-matnr, " Material Number

    kdmat like vbap-kdmat, " Customer Material

    bil_amt(16) type p decimals 2, " Bill Amount

    sel_prc(16) type p decimals 4, " Selling Price

    mvg_prs like mbew-verpr, " Moving Price

    gp_mvp_amt like vbrp-netwr, " GrossProfit Amount(MVP)

    gp_mvp_pr(6) type p decimals 2, " ,, percentage

    end of itab_out3.

    *-Internal Table to Hold data to be downloaded to file

    data: begin of itab_out1 occurs 0,

    kunag(10), " Customer

    vbeln(10), " Billing Doc No

    fkdat(10), " Bill Date

    posnr(6), " Item No

    mode(6), " Mode

    density(6), " Density

    matnr(18), " Material

    charg(10), " Batch Number

    fkimg like vbrp-fkimg, " Billed quantity

    vrkme(4), " Sales Unit

    sel_prc(14), " Selling Price

    bil_amt(15) type p decimals 2, " Billing Amount

    waerk(4), " Currency

    mvg_prs(15), " Moving Price

    gp_mvp_amt like vbrp-netwr, " Gross profit Amount(MVP)

    gp_mvp_pr(15), " ,, percentage

    kdmat(35), " Customer Material

    end of itab_out1.

    *Internal Table

    data: begin of fieldnames occurs 0,

    title(25) type c,

    table(5) type c,

    field(5) type c,

    type(1) type c,

    end of fieldnames.

    • Declaration Of Variables

    data: w_period like bapi0002_4-fiscal_period,

    w_year like bapi0002_4-fiscal_year,

    w_date like bsad-budat,

    w_lin type i. "No.of lines in Internal Table

    data: t_fkimg like vbrp-fkimg,

    t_bil_amt(8) type p decimals 2,

    t_gp_mvp_amt(8) type p decimals 2,

    t_gr_fkimg like vbrp-fkimg,

    t_gr_bil_amt(8) type p decimals 2,

    t_gr_gp_mvp_amt(8) type p decimals 2,

    t_efkimg like vbrp-fkimg,

    t_ebil_amt(8) type p decimals 2,

    t_egp_mvp_amt(8) type p decimals 2.

    data:f_flg .

    ************************************************************************

    • Select-Options

    ************************************************************************

    selection-screen: begin of block b with frame.

    selection-screen : begin of block b1 with frame title text-001.

    select-options:s_bukrs for t001-bukrs no intervals no-extension

    obligatory,

    s_vkorg for tvko-vkorg no intervals no-extension,

    s_vtweg for tvtw-vtweg no intervals no-extension,

    s_spart for tspa-spart no intervals no-extension,

    s_werks for t001w-werks no intervals no-extension,

    s_kunag for kna1-kunnr,

    s_vbeln for vbuk-vbeln,

    s_fkart for tvfk-fkart,

    s_fkdat for vbrk-fkdat obligatory.

    selection-screen begin of line.

    selection-screen comment 1(20) text-008.

    selection-screen end of line.

    selection-screen begin of line.

    parameters p_cust type c radiobutton group cust.

    selection-screen comment 3(20) text-004 for field p_cust.

    selection-screen end of line.

    selection-screen begin of line.

    parameters p_mode type c radiobutton group cust.

    selection-screen comment 3(20) text-006 for field p_mode.

    selection-screen end of line.

    selection-screen begin of line.

    parameters p_dens type c radiobutton group cust.

    selection-screen comment 3(20) text-007 for field p_dens.

    selection-screen end of line.

    selection-screen: end of block b1.

    selection-screen : begin of block b2 with frame title text-002.

    parameters: p_dwnlod as checkbox,

    p_file like rlgrap-filename. " default 'C:\zesdr001'.

    selection-screen: end of block b2.

    selection-screen: end of block b.

    *******At Selection Screen********************************************

    at selection-screen.

    • At Selection Screen on Value Request

    at selection-screen on value-request for p_file.

    perform f4_help.

    • Checking for the input values of selection screen.

    perform screen_check.

                • Top Of Page***************************************************

                top-of-page.

                perform rep_headers.

                *******Start of Selection*********************************************

                start-of-selection.

                • Selecting data from the database tables

                perform invoice_selection.

                describe table itab_bill lines w_lin.

                if w_lin = 0.

                message i008. " No Data Found for the Given Selection Criteria

                else.

                • Moving the data records into output internal table

                perform bill_details.

                • When Customer Radio button is selected

                if p_cust eq 'X'.

                perform invoice_output_cust.

                • When Mode Radio button is selected

                elseif p_mode eq 'X'.

                perform invoice_output_mode.

                • When density Radio button is selected

                elseif p_dens eq 'X'.

                perform invoice_output_dens.

                endif.

                endif.

                *******End of Selection***********************************************

                end-of-selection.

                perform init_fieldnames.

                if p_dwnlod = 'X'.

                perform read_data_for_dowlload.

                • perform down_load_to_file using p_file.

                perform download_excel using p_file.

                endif.

                &----


                *& Form screen_check

                &----


                • Ckecking for Selection Screen fields Validation

                ----


                form screen_check.

                • Validation of Sales Organization

                clear tvko.

                if not s_vkorg-low is initial.

                select vkorg from tvko up to 1 rows

                into tvko-vkorg

                where vkorg in s_vkorg.

                endselect.

                if sy-subrc ne 0.

                message e009. " Invalid Sales Organization

                endif.

                endif.

                • Validation of Distribution Channel

                clear tvtw.

                if not s_vtweg-low is initial.

                select vtweg from tvtw up to 1 rows

                into tvtw-vtweg

                where vtweg in s_vtweg.

                endselect.

                if sy-subrc ne 0.

                message e010. " Invalid Distribution Channel

                endif.

                endif.

                • Validation of Division

                clear tspa.

                if not s_spart-low is initial.

                select spart from tspa up to 1 rows

                into tspa-spart

                where spart in s_spart.

                endselect.

                if sy-subrc ne 0.

                message e011. " Invalid Division

                endif.

                endif.

                • Validation for company code

                clear t001.

                if not s_bukrs-low is initial.

                select single bukrs from t001

                into t001-bukrs

                where bukrs in s_bukrs.

                if sy-subrc <> 0.

                message e007. " Enter valid Company Code

                endif.

                endif.

                • Validation of billing Document Type

                clear tvfk.

                if not s_fkart is initial.

                select fkart from tvfk up to 1 rows

                into tvfk-fkart

                where fkart in s_fkart.

                endselect.

                if sy-subrc ne 0.

                message e012. " Invalid Billing Document Type

                endif.

                endif.

                • Validation of Billing Document Number

                clear vbuk.

                if not s_vbeln is initial.

                select vbeln from vbuk up to 1 rows

                into vbuk-vbeln

                where vbeln in s_vbeln and

                vbtyp = 'M'.

                endselect.

                if sy-subrc ne 0.

                message e013. " Invalid Billing Doc Number

                endif.

                endif.

                • Validation of Customer

                clear kna1.

                if not s_kunag is initial.

                select kunnr from kna1 up to 1 rows

                into kna1-kunnr

                where kunnr in s_kunag.

                endselect.

                if sy-subrc ne 0.

                message e014. " Invalid Customer Number

                endif.

                endif.

                • Validation of Plant

                clear t001w.

                if not s_werks is initial.

                select werks from t001w up to 1 rows

                into t001w-werks

                where werks in s_werks.

                endselect.

                if sy-subrc ne 0.

                message e004. " Invalid Plant Number

                endif.

                endif.

                • Validation for File path to download

                if p_dwnlod = 'X'.

                if p_file is initial.

                message e006. " Enter the Valid file path to Download

                endif.

                endif.

                endform. "screen_check

                ----


                • FORM invoice_selection *

                ----


                • Selecting data from the database tables

                ----


                form invoice_selection.

                select

                a~vbeln " Billing Doc Number

                a~fktyp " Billing Category

                a~vbtyp " Sales Doc category

                a~fkdat " Billing doc date

                a~fkart " Billing doc type

                a~bukrs " Company code

                a~kurrf " Exchange rate

                a~knumv " Condition record Number

                a~waerk " Currency

                a~kunag " Sold to Party

                b~vrkme " Sales Unit

                b~posnr " Item Number

                b~charg " Batch Number

                b~fkimg " Billed quantity

                b~werks " Plant

                b~matnr " Material Number

                b~netwr " Net Value of Bill Doc

                b~wavwr " Cost in Doc Currency

                c~kdmat " Customer Material

                into table itab_bill

                from vbrk as a join vbrp as b

                on bvbeln = avbeln

                join vbap as c

                on baubel = cvbeln and

                baupos = cposnr

                where a~vbeln in s_vbeln and

                a~fkdat in s_fkdat and

                a~bukrs in s_bukrs and

                a~vtweg in s_vtweg and

                a~vkorg in s_vkorg and

                a~spart in s_spart and

                a~fkart in s_fkart and

                b~werks in s_werks and

                a~kunag in s_kunag and

                a~sfakn eq ' ' and

                a~fksto eq ' ' .

                endform .

                ----


                • FORM bill_details *

                ----


                • appending data into itab_out internal table

                ----


                form bill_details.

                sort itab_bill by vbeln.

                select single waers from t001 into t001-waers

                where bukrs in s_bukrs.

                data:f_txt1(10),f_txt2(10),f_txt3(10).

                loop at itab_bill.

                itab_out-vbeln = itab_bill-vbeln.

                itab_out-fktyp = itab_bill-fktyp.

                itab_out-vbtyp = itab_bill-vbtyp.

                itab_out-fkdat = itab_bill-fkdat.

                itab_out-fkart = itab_bill-fkart.

                itab_out-bukrs = itab_bill-bukrs.

                itab_out-kurrf = itab_bill-kurrf.

                itab_out-waerk = itab_bill-waerk.

                itab_out-kunag = itab_bill-kunag.

                itab_out-vrkme = itab_bill-vrkme.

                itab_out-posnr = itab_bill-posnr.

                itab_out-charg = itab_bill-charg.

                itab_out-fkimg = itab_bill-fkimg.

                itab_out-werks = itab_bill-werks.

                itab_out-matnr = itab_bill-matnr.

                itab_out-kdmat = itab_bill-kdmat.

                select single currdec from tcurx into tcurx-currdec

                where currkey eq itab_out-waerk.

                if sy-subrc eq '0' .

                if tcurx-currdec eq '0'.

                itab_bill-netwr = itab_bill-netwr * 100.

                itab_bill-wavwr = itab_bill-wavwr * 100.

                endif.

                endif.

                itab_out-bil_amt = itab_bill-netwr.

                clear : konv.

                • Pricing data from KONV table

                select single kbetr kwert kpein from konv into

                (konv-kbetr,konv-kwert,konv-kpein)

                where knumv = itab_bill-knumv and

                kposn = itab_bill-posnr and

                kschl eq 'ZSP1' and

                krech eq 'C' and

                kinak eq ' '.

                • Currency conversion

                select single currdec from tcurx into tcurx-currdec

                where currkey eq itab_out-waerk.

                if sy-subrc eq '0' .

                if tcurx-currdec eq '0'.

                konv-kbetr = konv-kbetr * 100.

                endif.

                endif.

                • Unit Price

                itab_out-sel_prc = konv-kbetr.

                • Unit Price Calculation

                if not konv-kpein is initial.

                itab_out-sel_prc = itab_out-sel_prc / konv-kpein .

                endif.

                • Call Function to get the Period for the given Billing date

                • and Company Code

                perform get_period.

                • Selecting Material Valuation Data

                clear:mbew.

                if itab_out-fktyp eq 'L'.

                select single

                lfmon lfgja verpr stprs vmver vmstp

                from mbew

                into (mbew-lfmon,mbew-lfgja,mbew-verpr,

                mbew-stprs,mbew-vmver,mbew-vmstp)

                where matnr = itab_out-matnr

                and bwkey = itab_out-werks.

                if mbew-lfmon = w_period and mbew-lfgja = w_year.

                select single currdec from tcurx into tcurx-currdec

                where currkey eq t001-waers.

                if sy-subrc eq '0' .

                if tcurx-currdec eq '0'.

                mbew-stprs = mbew-stprs * 100.

                mbew-verpr = mbew-verpr * 100.

                endif.

                endif.

                if itab_out-waerk eq t001-waers.

                itab_out-mvg_prs = mbew-verpr ."/ itab_out-kurrf.

                else.

                itab_out-mvg_prs = mbew-verpr / itab_out-kurrf.

                endif.

                else.

                clear:mbewh.

                select single

                lfmon lfgja verpr stprs

                from mbewh

                into (mbewh-lfmon,mbewh-lfgja,mbewh-verpr,

                mbewh-stprs)

                where matnr = itab_out-matnr

                and bwkey = itab_out-werks

                and lfmon = w_period

                and lfgja = w_year.

                select single currdec from tcurx into tcurx-currdec

                where currkey eq t001-waers.

                if sy-subrc eq '0' .

                if tcurx-currdec eq '0'.

                mbewh-verpr = mbewh-verpr * 100.

                endif.

                endif.

                if itab_out-waerk eq t001-waers.

                itab_out-mvg_prs = mbewh-verpr ."/ itab_out-kurrf.

                else.

                itab_out-mvg_prs = mbewh-verpr / itab_out-kurrf.

                endif.

                if itab_out-mvg_prs is initial.

                select single

                lfmon lfgja verpr stprs vmver vmstp

                from mbew

                into (mbew-lfmon,mbew-lfgja,mbew-verpr,

                mbew-stprs,mbew-vmver,mbew-vmstp)

                where matnr = itab_out-matnr

                and bwkey = itab_out-werks.

                select single currdec from tcurx

                into tcurx-currdec

                where currkey eq t001-waers.

                if sy-subrc eq '0' .

                if tcurx-currdec eq '0'.

                mbew-verpr = mbew-verpr * 100.

                endif.

                endif.

                if itab_out-waerk eq t001-waers.

                itab_out-mvg_prs = mbew-verpr ."/ itab_out-kurrf.

                else.

                itab_out-mvg_prs = mbew-verpr / itab_out-kurrf.

                endif.

                endif.

                endif.

                endif.

                • To find Density and Mode from MARA and T179T tables

                clear :mara,t179t.

                select single prdha from mara

                into mara-prdha

                where matnr = itab_out-matnr.

                select single vtext from t179t

                into t179t-vtext

                where spras = 'EN' and

                prodh = mara-prdha(4).

                split t179t-vtext at ' ' into f_txt1 f_txt2 f_txt3.

                itab_out-mode = f_txt2.

                itab_out-density = f_txt3.

                if not itab_out-mvg_prs is initial.

                if itab_out-fktyp eq 'L'.

                itab_out-gp_mvp_amt = itab_out-bil_amt - itab_out-mvg_prs *

                itab_out-fkimg.

                else.

                itab_out-gp_mvp_amt = '0'.

                endif.

                endif.

                if not itab_out-mvg_prs is initial

                and not itab_out-sel_prc is initial.

                itab_out-gp_mvp_pr = ( itab_out-sel_prc - itab_out-mvg_prs )

                / itab_out-sel_prc * 100.

                endif.

                append itab_out.

                clear itab_out.

                endloop.

                loop at itab_out.

                if itab_out-vbtyp eq 'N' or itab_out-vbtyp eq 'O'.

                itab_out-fkimg = itab_out-fkimg * -1.

                itab_out-sel_prc = itab_out-sel_prc * -1.

                itab_out-bil_amt = itab_out-bil_amt * -1.

                itab_out-mvg_prs = itab_out-mvg_prs * -1.

                itab_out-gp_mvp_amt = itab_out-gp_mvp_amt * -1.

                itab_out-gp_mvp_pr = itab_out-gp_mvp_pr * -1.

                • If the bill amount is 0 then the quantity should also be 0.

                if itab_out-bil_amt = 0.

                itab_out-fkimg = 0.

                endif.

                • Check if the Bill amount is Credit memo amount, then the gross profit

                • should also be the same bill amount irrespecitve of +ve or -ve.

                if itab_out-gp_mvp_amt = 0.

                move: itab_out-bil_amt to itab_out-gp_mvp_amt.

                endif.

                modify itab_out.

                clear itab_out.

                endif.

                endloop.

                endform.

                &----


                *& Form get_period

                &----


                • Getting Document Period

                ----


                form get_period.

                clear :w_period,w_year,w_date.

                concatenate itab_out-fkdat(4)

                itab_out-fkdat+4(2)

                itab_out-fkdat+6(2)

                into w_date.

                call function 'BAPI_COMPANYCODE_GET_PERIOD'

                exporting

                companycodeid = itab_out-bukrs

                posting_date = w_date

                importing

                fiscal_year = w_year

                fiscal_period = w_period.

                endform. " get_period

                &----


                *& Form invoice_output_cust

                &----


                • Report Output when customer is selected

                ----


                form invoice_output_cust.

                write at /1(214) sy-uline.

                sort itab_out by kunag vbeln fkart posnr fkdat.

                loop at itab_out.

                if f_flg = 'X'.

                format color col_normal intensified off.

                f_flg = ' '.

                else.

                format color col_normal intensified on.

                f_flg = 'X'.

                endif.

                at new kunag.

                read table itab_out index sy-tabix.

                endat.

                write: /01 sy-vline, 2(10) itab_out-kunag,

                12 sy-vline, 13(10) itab_out-vbeln,

                23 sy-vline, 24(6) itab_out-posnr,

                30 sy-vline, 31(10) itab_out-fkdat,

                41 sy-vline, 42(6) itab_out-mode,

                48 sy-vline, 49(7) itab_out-density,

                56 sy-vline, 57(18) itab_out-matnr,

                75 sy-vline, 76(10) itab_out-charg,

                86 sy-vline,

                87(13) itab_out-fkimg unit itab_out-vrkme no-sign,

                102(3) itab_out-vrkme,

                105 sy-vline,

                106(14) itab_out-sel_prc currency konv-waers no-sign,

                120 sy-vline,

                121(15) itab_out-bil_amt currency vbrk-waerk no-sign,

                138(3) itab_out-waerk,

                141 sy-vline,

                142(15) itab_out-mvg_prs currency vbrk-waerk no-sign,

                157 sy-vline,

                158(15) itab_out-gp_mvp_amt currency vbrk-waerk no-sign,

                173 sy-vline,174(6) itab_out-gp_mvp_pr no-sign ,

                180 sy-vline,181(33) itab_out-kdmat,

                214 sy-vline.

                t_fkimg = t_fkimg + itab_out-fkimg.

                t_bil_amt = t_bil_amt + itab_out-bil_amt.

                t_gp_mvp_amt = t_gp_mvp_amt + itab_out-gp_mvp_amt.

                t_gr_fkimg = t_gr_fkimg + itab_out-fkimg.

                t_gr_bil_amt = t_gr_bil_amt + itab_out-bil_amt.

                t_gr_gp_mvp_amt = t_gr_gp_mvp_amt + itab_out-gp_mvp_amt.

                at end of kunag.

                format reset.

                format color col_total intensified off.

                write:/1(214) sy-uline.

                write:/01 sy-vline,

                02 'Sub Total of Customer:'(035), itab_out-kunag,

                87(13) t_fkimg unit itab_out-vrkme no-sign,

                121(15) t_bil_amt no-sign,

                158(15) t_gp_mvp_amt no-sign,

                214 ' ',

                /1(214) sy-uline.

                clear: t_fkimg, t_bil_amt, t_gp_mvp_amt.

                endat.

                at last.

                write:/01 sy-vline,

                02 'Grand Total :'(032),

                87(13) t_gr_fkimg unit itab_out-vrkme no-sign,

                121(15) t_gr_bil_amt no-sign,

                158(15) t_gr_gp_mvp_amt no-sign,

                214 ' '.

                endat.

                format color off.

                endloop.

                write at /1(214) sy-uline.

                endform. "invoice_output_cust

                &----


                *& Form invoice_output_mode

                &----


                • Report Output

                ----


                form invoice_output_mode.

                loop at itab_out.

                move-corresponding itab_out to itab_out2.

                append itab_out2.

                clear: itab_out2.

                endloop.

                write at /1(214) sy-uline.

                sort itab_out2 by mode vbeln posnr fkdat.

                loop at itab_out2.

                if f_flg = 'X'.

                format color col_normal intensified off.

                f_flg = ' '.

                else.

                format color col_normal intensified on.

                f_flg = 'X'.

                endif.

                at new mode.

                read table itab_out2 index sy-tabix.

                endat.

                write: /01 sy-vline, 2(10) itab_out2-kunag,

                12 sy-vline, 13(10) itab_out2-vbeln,

                23 sy-vline, 24(6) itab_out2-posnr,

                30 sy-vline, 31(10) itab_out2-fkdat,

                41 sy-vline, 42(6) itab_out2-mode,

                48 sy-vline, 49(7) itab_out2-density,

                56 sy-vline, 57(18) itab_out2-matnr,

                75 sy-vline, 76(10) itab_out2-charg,

                86 sy-vline,

                87(13) itab_out2-fkimg unit itab_out2-vrkme no-sign,

                102(3) itab_out2-vrkme,

                105 sy-vline,

                106(14) itab_out2-sel_prc currency vbrk-waerk no-sign,

                120 sy-vline,

                121(15) itab_out2-bil_amt currency vbrk-waerk no-sign,

                138(3) itab_out2-waerk,

                141 sy-vline,

                142(15) itab_out2-mvg_prs currency vbrk-waerk no-sign,

                157 sy-vline,

                158(15) itab_out2-gp_mvp_amt currency vbrk-waerk no-sign,

                173 sy-vline,174(6) itab_out2-gp_mvp_pr no-sign,

                180 sy-vline,181(33) itab_out2-kdmat,

                214 sy-vline.

                t_fkimg = t_fkimg + itab_out2-fkimg.

                t_bil_amt = t_bil_amt + itab_out2-bil_amt.

                t_gp_mvp_amt = t_gp_mvp_amt + itab_out2-gp_mvp_amt.

                t_gr_fkimg = t_gr_fkimg + itab_out2-fkimg.

                t_gr_bil_amt = t_gr_bil_amt + itab_out2-bil_amt.

                t_gr_gp_mvp_amt = t_gr_gp_mvp_amt + itab_out2-gp_mvp_amt.

                at end of mode.

                format reset.

                format color col_total intensified off.

                write:/1(214) sy-uline.

                write:/01 sy-vline,

                02 'Sub Total of Mode :'(033), itab_out2-mode,

                87(13) t_fkimg unit itab_out-vrkme no-sign,

                121(15) t_bil_amt no-sign,

                158(15) t_gp_mvp_amt no-sign,

                214 ' ',

                /1(214) sy-uline.

                clear: t_fkimg, t_bil_amt, t_gp_mvp_amt.

                endat.

                at last.

                write:/01 sy-vline,

                02 'Grand Total :'(032),

                87(13) t_gr_fkimg unit itab_out-vrkme no-sign,

                121(15) t_gr_bil_amt no-sign,

                158(15) t_gr_gp_mvp_amt no-sign,

                214 ' '.

                endat.

                format color off.

                endloop.

                write at /1(214) sy-uline.

                endform. "invoice_output_mode

                &----


                *& Form invoice_output_dens

                &----


                • Report Output

                ----


                form invoice_output_dens.

                loop at itab_out.

                move-corresponding itab_out to itab_out3.

                append itab_out3.

                clear: itab_out3.

                endloop.

                write at /1(214) sy-uline.

                sort itab_out3 by mode density vbeln posnr fkdat.

                loop at itab_out3.

                if f_flg = 'X'.

                format color col_normal intensified off.

                f_flg = ' '.

                else.

                format color col_normal intensified on.

                f_flg = 'X'.

                endif.

                at new mode.

                endat.

                at new density.

                read table itab_out3 index sy-tabix.

                endat.

                write: /01 sy-vline, 2(10) itab_out3-kunag,

                12 sy-vline, 13(10) itab_out3-vbeln,

                23 sy-vline, 24(6) itab_out3-posnr,

                30 sy-vline, 31(10) itab_out3-fkdat,

                41 sy-vline, 42(6) itab_out3-mode,

                48 sy-vline, 49(7) itab_out3-density,

                56 sy-vline, 57(18) itab_out3-matnr,

                75 sy-vline, 76(10) itab_out3-charg,

                86 sy-vline,

                87(13) itab_out3-fkimg unit itab_out3-vrkme no-sign,

                102(3) itab_out3-vrkme,

                105 sy-vline,106(14) itab_out3-sel_prc no-sign,

                120 sy-vline,

                121(15) itab_out3-bil_amt currency vbrk-waerk no-sign,

                138(3) itab_out3-waerk,

                141 sy-vline,142(15) itab_out3-mvg_prs no-sign

                currency vbrk-waerk,

                157 sy-vline,158(15) itab_out3-gp_mvp_amt no-sign

                currency vbrk-waerk,

                173 sy-vline,174(6) itab_out3-gp_mvp_pr no-sign,

                180 sy-vline,181(33) itab_out3-kdmat,

                214 sy-vline.

                t_efkimg = t_efkimg + itab_out3-fkimg.

                t_ebil_amt = t_ebil_amt + itab_out3-bil_amt.

                t_egp_mvp_amt = t_egp_mvp_amt + itab_out3-gp_mvp_amt.

                t_fkimg = t_fkimg + itab_out3-fkimg.

                t_bil_amt = t_bil_amt + itab_out3-bil_amt.

                t_gp_mvp_amt = t_gp_mvp_amt + itab_out3-gp_mvp_amt.

                t_gr_fkimg = t_gr_fkimg + itab_out3-fkimg.

                t_gr_bil_amt = t_gr_bil_amt + itab_out3-bil_amt.

                t_gr_gp_mvp_amt = t_gr_gp_mvp_amt + itab_out3-gp_mvp_amt.

                at end of density.

                format reset.

                format color col_total intensified off.

                write:/1(214) sy-uline.

                write:/01 sy-vline,

                02 'Sub Total of Density :'(034), itab_out3-density,

                87(13) t_efkimg unit itab_out-vrkme no-sign,

                121(15) t_ebil_amt currency vbrk-waerk no-sign,

                158(15) t_egp_mvp_amt currency vbrk-waerk no-sign,

                214 ' ',

                /1(214) sy-uline.

                clear: t_efkimg, t_ebil_amt,t_egp_mvp_amt.

                endat.

                at end of mode.

                format reset.

                format color col_total intensified off.

                write:/01 sy-vline,

                02 'Sub Total of Mode :'(033), itab_out3-mode,

                87(13) t_fkimg unit itab_out-vrkme no-sign,

                121(15) t_bil_amt no-sign,

                158(15) t_gp_mvp_amt no-sign,

                214 ' ',

                /1(214) sy-uline.

                clear: t_fkimg, t_bil_amt, t_gp_mvp_amt.

                endat.

                at last.

                write:/01 sy-vline,

                02 'Grand Total :'(032),

                87(13) t_gr_fkimg unit itab_out-vrkme no-sign,

                121(15) t_gr_bil_amt no-sign,

                158(15) t_gr_gp_mvp_amt no-sign,

                214 ' '.

                endat.

                format color off.

                endloop.

                write at /1(214) sy-uline.

                endform. "invoice_output_dens

                &----


                *& Form f4_help

                &----


                • To Get F4 Help to Select File Name

                ----


                form f4_help.

                call function 'F4_FILENAME'

                exporting

                program_name = sy-cprog

                dynpro_number = syst-dynnr

                field_name = 'P_FILE'

                importing

                file_name = p_file.

                endform. " f4_help

                &----


                *& Form rep_headers

                &----


                • Report Header

                ----


                form rep_headers.

                format color col_heading on.

                format color col_heading on.

                select single butxt from t001 into t001-butxt

                where bukrs = s_bukrs-low.

                skip 2.

                write: /2 t001-butxt, 92 'BILLING ANALYSIS'(003),

                190 'Date :'(010),sy-datum.

                write :/2 'Company Code :'(011), s_bukrs-low ,

                85 'Billing Date :'(012) , s_fkdat-low , '-' ,s_fkdat-high ,

                190 'Page :'(013), sy-pagno,

                214 ' '.

                write at /1(214) sy-uline.

                write: /1 sy-vline, 2(10) 'Customer'(004) centered,

                12 sy-vline, 13(10) 'Billing'(009) centered,

                23 sy-vline, 24(6) 'Billing'(009) centered,

                30 sy-vline, 31(10) 'Billing'(009) centered,

                41 sy-vline, 42(6) 'Mode'(006) centered,

                48 sy-vline, 49(7) 'Density'(014) centered,

                56 sy-vline, 57(18) 'Material'(015) centered,

                75 sy-vline, 76(10) 'Batch'(016) centered,

                86 sy-vline, 87(13) 'Quantity'(017) centered,102(3) 'UOM'(027),

                105 sy-vline, 106(14) 'Selling'(018) centered ,

                120 sy-vline, 121(15) 'Billing'(009) centered,

                138(3) 'Cur'(028),

                141 sy-vline, 142(15) 'Mvg.Avg.Price'(020) centered,

                157 sy-vline, 158(22) 'Gross Profit(MVP)'(022) centered,

                180 sy-vline, 181(33) 'Customer Material'(023) centered,

                214 sy-vline.

                write: /1 sy-vline, 2(10) 'Code'(024) centered,

                12 sy-vline, 13(10) 'Document'(025) centered,

                23 sy-vline, 24(6) 'Item'(026) centered,

                30 sy-vline, 31(10) 'Date'(036) centered,

                41 sy-vline,

                48 sy-vline,

                56 sy-vline,

                75 sy-vline,

                86 sy-vline,

                105 sy-vline, 106(14) 'Price'(030) centered ,

                120 sy-vline, 121(15) 'Amount'(031) centered,

                141 sy-vline, 142(15) '(per Unit)'(019) centered,

                157 sy-vline, 158(15) 'Amount'(031) centered,

                173 sy-vline, 174(6) ' % '(029) centered,

                180 sy-vline,

                214 sy-vline.

                format color off.

                endform. " rep_headers

                &----


                *& Form init_fieldnames

                &----


                • Initialise all the fields to download in Excel Data File

                ----


                form init_fieldnames.

                perform append_fieldname using text-004 'itab_out1'

                'KUNAG' 'X'.

                perform append_fieldname using text-037 'itab_out1'

                'VBELN' 'X'.

                perform append_fieldname using text-036 'itab_out1'

                'FKDAT' 'X'.

                perform append_fieldname using text-038 'itab_out1'

                'POSNR' 'X'.

                perform append_fieldname using text-006 'itab_out1'

                'MODE' 'X'.

                perform append_fieldname using text-014 'itab_out1'

                'DENSITY' 'X'.

                perform append_fieldname using text-015 'itab_out1'

                'MATNR' 'X'.

                perform append_fieldname using text-016 'itab_out1'

                'CHARG' 'X'.

                perform append_fieldname using text-017 'itab_out1'

                'FKIMG' 'X'.

                perform append_fieldname using text-039 'itab_out1'

                'VRKME' 'X'.

                perform append_fieldname using text-040 'itab_out1'

                'SEL_PRC' 'X'.

                perform append_fieldname using text-041 'itab_out1'

                'BIL_AMT' 'X'.

                perform append_fieldname using text-028 'itab_out1'

                'WAERK' 'X'.

                perform append_fieldname using text-020 'itab_out1'

                'MVG_PRS' 'X'.

                perform append_fieldname using text-044 'itab_out1'

                'GP_MVP_AMT' 'X'.

                perform append_fieldname using text-045 'itab_out1'

                'GP_MVP_PR' 'X'.

                perform append_fieldname using text-023 'itab_out1'

                'KDMAT' 'X'.

                endform.

                &----


                *& Form append_fieldname

                &----


                • Appending field Names

                ----


                form append_fieldname using p_title p_table p_field p_type.

                clear: fieldnames.

                fieldnames-title = p_title.

                fieldnames-table = p_table.

                fieldnames-field = p_field.

                fieldnames-type = p_type.

                append fieldnames.

                endform.

                &----


                *& Form download_excel

                &----


                • Getting Data to Download to File

                ----


                form download_excel using f_file.

                call function 'EXCEL_OLE_STANDARD_DAT'

                exporting

                file_name = f_file

                tables

                data_tab = itab_out1

                fieldnames = fieldnames

                exceptions

                file_not_exist = 1

                filename_expected = 2

                communication_error = 3

                ole_object_method_error = 4

                ole_object_property_error = 5

                invalid_filename = 6

                invalid_pivot_fields = 7

                download_problem = 8

                others = 9.

                if sy-subrc = 0.

                message s005(zv) with p_file. "Download to & Successfully Completed

                endif.

                endform.

                &----


                *& Form read_data_for_download

                &----


                • Getting Data to Download to File

                ----


                form read_data_for_dowlload.

                sort itab_out by vbeln posnr fkdat.

                loop at itab_out.

                move-corresponding itab_out to itab_out1.

                append itab_out1.

                clear itab_out1.

                endloop.

                endform. " read_data_for_dowlload

                reward if useful

                regards,

                Anji

                Add a comment
                10|10000 characters needed characters exceeded

              • author's profile photo Former Member
                Former Member
                Posted on Apr 25, 2007 at 03:59 PM

                Hi Archit,

                Refer to the program 'BCALV_TEST_GRID_EVENTS' for handling different events.

                Add a comment
                10|10000 characters needed characters exceeded

              • author's profile photo Former Member
                Former Member
                Posted on Apr 25, 2007 at 04:50 PM

                Hi,

                Check the following thread:

                classical reports

                REgards,

                Bhaskar

                Add a comment
                10|10000 characters needed characters exceeded

              Before answering

              You should only submit an answer when you are proposing a solution to the poster's problem. If you want the poster to clarify the question or provide more information, please leave a comment instead, requesting additional details. When answering, please include specifics, such as step-by-step instructions, context for the solution, and links to useful resources. Also, please make sure that you answer complies with our Rules of Engagement.
              You must be Logged in to submit an answer.

              Up to 10 attachments (including images) can be used with a maximum of 1.0 MB each and 10.5 MB total.