cancel
Showing results for 
Search instead for 
Did you mean: 

Internal Tables ! Why?

Former Member
0 Kudos

Hi!

Why there is need of internal table? whats the main purpose?

Offcouse we can display data from database directly to o/p screen then why internal tables?

Thanks for your suggestions

Rahul.

Accepted Solutions (1)

Accepted Solutions (1)

ferry_lianto
Active Contributor
0 Kudos

Hi,

With internal table, you can manipulate the data and also calculate value(s) from multi fields for different scenarios/purposes.

Regards,

Ferry Lianto

Former Member
0 Kudos

Hi Ferry!

Can u give example to calculate value(s) from multi fields for different scenarios/purposes.

Thanks

Answers (4)

Answers (4)

Former Member
0 Kudos

Hi

See the sample report and see how the internal tables are used in the report to handle data and to display data

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 points for useful Answers

Regards

Anji

Former Member
0 Kudos

Thanks Anji!

Rahul.

Former Member
0 Kudos

hi,

<b>By using internal tables we can avoid the possibilty for loss of data.(in business apllications data has more importance).</b>

<b>By using internal tables we improves the perfomance of the programms.</b>

insted of reading the same data repeatedly from database,we read once and place in internal table for later operations.

regards,

Ashokreddy.

Former Member
0 Kudos

Hi Rahul,

You should use internal tables whenever you want to process a dataset with a fixed structure within a program. A particularly important use for internal tables is for storing and formatting data from a database table within a program. They are also a good way of including very complicated data structures in an ABAP program.

Regards

Aneesh.

~SAP help

Former Member
0 Kudos

if you select data from table to table ( It is performance issue ),so we use internal table.