Datum automtisch im Report
Hallo,
ich würde gerne Im Report in einer Kopfzeile das Datum einfügen, möchte das aber nicht manuel machen. Gibt es eine Möglichkeit in ein Textfeld eine Art Formel einzufügen und das Datum aus einer Kanal zu Laden?
Ausserdem wird mir auf der X-Achse bei der beschriftung zwar die Uhrzeit angezeit, und auch der Tag , aber leider nicht Monat und Jahr, kann man da etwas in den einstellungen ändern?
Danek schon mal
Gruß Flens
Hallo!
Sie können den Speicherdatum des Datensatzes im Datenportal im Report automatisch auslesen, falls Sie schreiben:
@RootPropGet("datestring")@
Sie können das aktuelles Datum auslesen mit @currdate@
Sonst, wenn Sie einem Datumskanal im Datenportal haben und das erste Wert des Kanals im Report auslesen wollen:
@str(chd(1,1), "#dd.mm.yyyy")@
Das "#dd.mm.yyyy" sagt, dass Sie einem Formatierung von Tag, Monat und Jahr haben wollen.
Das gleiches können Sie für das X-Achse machen. Machen Sie einem
Doppelclick auf dem X-Achse und geben als Format #dd.mm.yyyy hh:nn:ss
Schönes Wochenende
Ken Tobler
Similar Messages
-
Hi Falks,
If any one knows about interactive report transaction code than plz give reply as well as send me one step by step example how to create interactive reports.
mail me on "[email protected]".
Thanx and regards,
Rahul TaleleHi,
There is separate Tcode for interactive reports ..
you can create a basic list report for one table data, and use the commands of intercative reports, like At line-selection, At user-command and write the code to display the another table records .
see the sample code:
report zf_rept_debtor_ageing
no standard page heading
message-id fb
line-count 65
line-size 230.
Purpose : This ABAP program will fetch the Account Receivables for
a Customer for the given period and display the due days.
tables: t001, " Company Codes
t005, " Countries
skb1, " GL Master
kna1. " Customer Master
Internal Tables
Internal table for BSID (Open Items) data
data: begin of it_bsid occurs 0,
kunnr like bsid-kunnr, " Customer Number
gjahr like bsid-gjahr, " Fiscal Year
belnr like bsid-belnr, " Acc.Document
buzei like bsid-buzei, " Item
budat like bsid-budat, " Posting Date
shkzg like bsid-shkzg, " Dr/Cr Indicator
dmbtr like bsid-dmbtr, " Amount(Local Curr)
wrbtr like bsid-wrbtr, " Amount(Doc Curr)
dmbe2 like bsid-dmbe2, " Amount(USD)
waers like bsid-waers, " Currency
zterm like bsid-zterm, " Payment Terms
vbeln like bsid-vbeln, " Billing Doc
zfbdt like bsid-zfbdt, " Baseline Date
zbd1t like bsid-zbd1t, " No of days
hkont like bsid-hkont, " GL Account
name1 like kna1-name1, " Customer Name
land1 like kna1-land1, " Country
end of it_bsid.
Internal table for BSAD (Closed Items) data
data: begin of it_bsad occurs 0,
kunnr like bsad-kunnr, " Customer Number
gjahr like bsad-gjahr, " Fiscal Year
belnr like bsad-belnr, " Acc.Document
buzei like bsad-buzei, " Item
budat like bsad-budat, " Posting Date
shkzg like bsad-shkzg, " Dr/Cr Indicator
dmbtr like bsad-dmbtr, " Amount(Local Curr)
wrbtr like bsid-wrbtr, " Amount(Doc Curr)
dmbe2 like bsad-dmbe2, " Amount(USD)
waers like bsad-waers, " Currency
zterm like bsid-zterm, " Payment Terms
vbeln like bsid-vbeln, " Billing Doc
zfbdt like bsid-zfbdt, " Baseline Date
zbd1t like bsid-zbd1t, " No of days
hkont like bsid-hkont, " GL Account
name1 like kna1-name1, " Customer Name
land1 like kna1-land1, " Country
end of it_bsad.
Internal table for Report Output
data: begin of it_report occurs 0,
kunnr like bsid-kunnr, " Customer Number
belnr like bsid-belnr, " Acc.Document
name1 like kna1-name1, " Customer Name
land1 like kna1-land1, " Country
shkzg like bsid-shkzg, " Dr/Cr Indicator
budat like bsid-budat, " Posting Date
dmbtr like bsid-dmbtr, " Amount(Local Curr)
wrbtr like bsid-wrbtr, " Amount(Doc Curr)
dmbe2 like bsid-dmbe2, " Amount(USD)
waers like bsid-waers, " Currency
due_amnt like bsid-dmbtr, " Amount(Over Due)
d_amnt1 like bsid-dmbtr, " Amount(0-30 Future Due)
d_amnt2 like bsid-dmbtr, " Amount(31-60 Future Due)
d_amnt3 like bsid-dmbtr, " Amount(61-90 Future Due)
d_amnt4 like bsid-dmbtr, " Amount(91-120 Future Due)
d_amnt5 like bsid-dmbtr, " Amount(more than 120)
due_date like bsid-budat, " Due date
zterm like bsid-zterm, " Payment Terms
vbeln like bsid-vbeln, " Billing Doc
end of it_report.
Declaration of Data and Variables
data: v_days type i, " Difference days
v_waers like t001-waers, " Co.Code Currency
v_sum1 like bsid-dmbtr, " Totals 1
v_sum2 like bsid-dmbtr, " Totals 2
v_sum3 like bsid-dmbtr, " Totals 3
v_sum4 like bsid-dmbtr, " Totals 4
v_sum5 like bsid-dmbtr, " Totals 5
v_sum6 like bsid-dmbtr, " Totals 6
v_sum7 like bsid-dmbtr, " Totals 7
v_sum8 like bsid-dmbe2. " Totals 8
Constants
constants: c_doc_waers(3) value 'USD',
c_mitkz type c value 'D'.
Selection Screen
selection-screen : begin of block b1 with frame title text-001.
parameters: p_bukrs like t001-bukrs obligatory. " Company Code
select-options:s_kunnr for kna1-kunnr, " Customer Number
s_land1 for t005-land1, " Country
s_hkont for skb1-saknr. " G/L Account
parameters: p_date like sy-datum obligatory. " Report Date
selection-screen: end of block b1.
selection-screen : begin of block b2 with frame title text-002.
selection-screen begin of line.
selection-screen comment 2(30) text-003 for field p_rb1.
parameters: p_rb1 radiobutton group rb.
selection-screen end of line.
selection-screen begin of line.
selection-screen comment 2(30) text-004 for field p_rb2.
parameters: p_rb2 radiobutton group rb.
selection-screen end of line.
selection-screen: end of block b2.
selection-screen : begin of block b4 with frame.
selection-screen begin of line.
selection-screen comment 2(29) text-038 for field p_chk1.
parameters: p_chk1 as checkbox.
selection-screen end of line.
selection-screen: end of block b4.
selection-screen : begin of block b3 with frame title text-030.
selection-screen begin of line.
selection-screen comment 2(30) text-031 for field p_rb3.
parameters: p_rb3 radiobutton group rb1.
selection-screen end of line.
selection-screen begin of line.
selection-screen comment 2(30) text-032 for field p_rb4.
parameters: p_rb4 radiobutton group rb1.
selection-screen end of line.
selection-screen: end of block b3.
*********Initialization**********************************************
initialization.
At Selection Screen
at selection-screen.
Checking for the input values of selection screen.
perform screen_check.
Top-Of-Page
top-of-page.
if p_rb3 = 'X'.
if p_chk1 = 'X'.
Write the Column Headings for detailed report(in Doc Currency)
perform col_heading2.
else.
Write the Column Headings for detailed report
perform col_heading.
endif.
else.
Write the Column Headings for summary report
perform col_heading1.
endif.
Start-Of-Selection
start-of-selection.
Get the Customer Open Items from BSID
perform get_open_data.
Get the Customer Closed Items from BSAD
perform get_close_data.
Get the data from BSID,BSAD and KNA1 into one int.table
perform process_data.
End-Of-Selection
end-of-selection.
if it_report[] is initial.
write : 'No Documents found'(005).
else.
if p_rb3 = 'X'.
Write the Detailed Report
perform write_report.
else.
Write the Summary Report
perform write_report1.
endif.
endif.
At Line-Selection
at line-selection.
When double clicked on BELNR leave to transaction FB03
perform line_sel.
*& Form SCREEN_CHECK
Checking for the input values of selection screen
form screen_check.
Validation of Company Code
clear t001.
if not p_bukrs is initial.
select bukrs from t001 up to 1 rows
into t001-bukrs
where bukrs = p_bukrs.
endselect.
if sy-subrc ne 0.
message e000 with 'Invalid Company Code'(006).
endif.
endif.
Validation of Customer Number
clear kna1.
if not s_kunnr is initial.
select kunnr from kna1 up to 1 rows
into kna1-kunnr
where kunnr in s_kunnr.
endselect.
if sy-subrc ne 0.
message e000 with 'Invalid Customer Number'(007).
endif.
endif.
Validation of Country
clear t005.
if not s_land1 is initial.
select land1 from t005 up to 1 rows
into t005-land1
where land1 in s_land1.
endselect.
if sy-subrc ne 0.
message e000 with 'Invalid Country'(036).
endif.
endif.
Validation of GL Account
clear skb1.
if not s_hkont is initial.
select saknr from skb1 up to 1 rows
into skb1-saknr
where saknr in s_hkont and
mitkz = c_mitkz.
endselect.
if sy-subrc ne 0.
message e000 with 'Invalid GL Reconciliation Account'(037).
endif.
endif.
endform. " SCREEN_CHECK
*& Form COL_HEADING
Write the Column Headings for detailed report
form col_heading.
skip .
write: /88 'DEBTOR AGEING REPORT AS AT:'(019) centered,
116 p_date centered, 198 sy-pagno.
skip .
write: /2 'CoCode:'(016),13(4) p_bukrs color 3.
if not s_kunnr is initial.
if not s_kunnr-high is initial.
write: 20 'Customer:'(041),33 s_kunnr-low color 3,
'-', s_kunnr-high color 3.
else.
write: 20 'Customer:'(041),33 s_kunnr-low color 3.
endif.
endif.
if not s_land1 is initial.
if not s_land1-high is initial.
write: /2 'Country:'(042),13(4) s_land1-low color 3,
'-', s_land1-high color 3.
else.
write: /2 'Country:'(042),13(4) s_land1-low color 3.
endif.
if not s_hkont is initial.
if not s_hkont-high is initial.
write: 20 'GL Account:'(043),33 s_hkont-low color 3,
'-', s_hkont-high color 3.
else.
write: 20 'GL Account:'(043),33 s_hkont-low color 3.
endif.
endif.
else.
if not s_hkont is initial.
if not s_hkont-high is initial.
write: /2 'GL Account:'(043),14 s_hkont-low color 3,
'-', s_hkont-high color 3.
else.
write: /2 'GL Account:'(043),14 s_hkont-low color 3.
endif.
endif.
endif.
write: 183 'Run Date:'(029), sy-datum.
format color col_heading.
write at /1(203) sy-uline .
write: / sy-vline, 2(10) 'Customer'(008) centered,
12 sy-vline, 13(30) 'Customer Name'(009),
43 sy-vline, 44(3) 'Cty'(014) centered,
47 sy-vline, 48(15) 'Amount'(013) right-justified,
63 sy-vline, 64(4) 'Curr'(011) centered,
68 sy-vline, 69(15) 'Overdue'(012) centered,
84 sy-vline, 85(15) '0 - 30 Days'(010) centered,
100 sy-vline,101(15) '31 - 60 Days'(028) centered,
116 sy-vline,117(15) '61 - 90 Days'(021) centered,
132 sy-vline,133(15) '91 - 120 Days'(022) centered,
148 sy-vline,149(15) 'Above 120 Days'(023) centered,
164 sy-vline,165(10) 'Due Date'(024) centered,
175 sy-vline,176(5) 'PayT'(025) centered,
181 sy-vline,182(10) 'Bill.Doc.'(026) centered,
192 sy-vline,193(10) 'Doc.No.'(027) centered,
203 sy-vline.
write at /1(203) sy-uline.
format color off.
endform. " COL_HEADING
*& Form COL_HEADING1
Write the Column Headings for summary report
form col_heading1.
skip .
write: /54 'DEBTOR AGEING REPORT (SUMMARY) AS AT:'(033) centered,
92 p_date centered, 158 sy-pagno.
skip .
write: /2 'CoCode:'(016), 13(4) p_bukrs color 3.
if not s_kunnr is initial.
if not s_kunnr-high is initial.
write: 20 'Customer:'(041),33 s_kunnr-low color 3,
'-', s_kunnr-high color 3.
else.
write: 20 'Customer:'(041),33 s_kunnr-low color 3.
endif.
endif.
if not s_land1 is initial.
if not s_land1-high is initial.
write: /2 'Country:'(042),13(4) s_land1-low color 3,
'-', s_land1-high color 3.
else.
write: /2 'Country:'(042),13(4) s_land1-low color 3.
endif.
if not s_hkont is initial.
if not s_hkont-high is initial.
write: 20 'GL Account:'(043),33 s_hkont-low color 3,
'-', s_hkont-high color 3.
else.
write: 20 'GL Account:'(043),33 s_hkont-low color 3.
endif.
endif.
else.
if not s_hkont is initial.
if not s_hkont-high is initial.
write: /2 'GL Account:'(043),14 s_hkont-low color 3,
'-', s_hkont-high color 3.
else.
write: /2 'GL Account:'(043),14 s_hkont-low color 3.
endif.
endif.
endif.
write: 144 'Run Date:'(029), sy-datum.
format color col_heading.
write at /1(164) sy-uline .
write: / sy-vline, 2(10) 'Customer'(008) centered,
12 sy-vline, 13(30) 'Customer Name'(009),
43 sy-vline, 44(3) 'Cty'(014) centered,
47 sy-vline, 48(15) 'Amount'(013) right-justified,
63 sy-vline, 64(4) 'Curr'(011) centered,
68 sy-vline, 69(15) 'Overdue'(012) centered,
84 sy-vline, 85(15) '0 - 30 Days'(010) centered,
100 sy-vline,101(15) '31 - 60 Days'(028) centered,
116 sy-vline,117(15) '61 - 90 Days'(021) centered,
132 sy-vline,133(15) '91 - 120 Days'(022) centered,
148 sy-vline,149(15) 'Above 120 Days'(023) centered,
164 sy-vline.
write at /1(164) sy-uline.
format color off.
endform. " COL_HEADING1
*& Form COL_HEADING2
Write the Column Headings for summary report(in Doc Curr)
form col_heading2.
skip .
write: /99 'DEBTOR AGEING REPORT AS AT:'(019) centered,
127 p_date centered, 220 sy-pagno.
skip .
write: /2 'CoCode:'(016),13(4) p_bukrs color 3.
if not s_kunnr is initial.
if not s_kunnr-high is initial.
write: 20 'Customer:'(041),33 s_kunnr-low color 3,
'-', s_kunnr-high color 3.
else.
write: 20 'Customer:'(041),33 s_kunnr-low color 3.
endif.
endif.
if not s_land1 is initial.
if not s_land1-high is initial.
write: /2 'Country:'(042),13(4) s_land1-low color 3,
'-', s_land1-high color 3.
else.
write: /2 'Country:'(042),13(4) s_land1-low color 3.
endif.
if not s_hkont is initial.
if not s_hkont-high is initial.
write: 20 'GL Account:'(043),33 s_hkont-low color 3,
'-', s_hkont-high color 3.
else.
write: 20 'GL Account:'(043),33 s_hkont-low color 3.
endif.
endif.
else.
if not s_hkont is initial.
if not s_hkont-high is initial.
write: /2 'GL Account:'(043),14 s_hkont-low color 3,
'-', s_hkont-high color 3.
else.
write: /2 'GL Account:'(043),14 s_hkont-low color 3.
endif.
endif.
endif.
write: 204 'Run Date:'(029), sy-datum.
format color col_heading.
write at /1(225) sy-uline .
write: / sy-vline, 2(10) 'Customer'(008) centered,
12 sy-vline, 13(30) 'Customer Name'(009),
43 sy-vline, 44(3) 'Cty'(014) centered,
47 sy-vline, 48(15) 'Amount'(013) right-justified,
63 sy-vline, 64(4) 'Curr'(011) centered,
68 sy-vline, 69(15) 'Overdue'(012) centered,
84 sy-vline, 85(15) '0 - 30 Days'(010) centered,
100 sy-vline,101(15) '31 - 60 Days'(028) centered,
116 sy-vline,117(15) '61 - 90 Days'(021) centered,
132 sy-vline,133(15) '91 - 120 Days'(022) centered,
148 sy-vline,149(15) 'Above 120 Days'(023) centered,
164 sy-vline,165(10) 'Due Date'(024) centered,
175 sy-vline,176(5) 'PayT'(025) centered,
181 sy-vline,182(10) 'Bill.Doc.'(026) centered,
192 sy-vline,193(10) 'Doc.No.'(027) centered,
203 sy-vline,204(16) 'Amount(Doc.Curr)'(039),
220 sy-vline,221(4) 'Curr'(040),
225 sy-vline.
write at /1(225) sy-uline.
format color off.
endform. " COL_HEADING2
*& Form GET_OPEN_DATA
Get the Customer Open Items from BSID
form get_open_data.
select a~kunnr " Customer Number
a~gjahr " Fiscal Year
a~belnr " Acc.Document
a~buzei " Item
a~budat " Posting Date
a~shkzg " Dr/Cr Indicator
a~dmbtr " Amount(Local Curr)
a~wrbtr " Amount(Doc Curr)
a~dmbe2 " Amount(USD)
a~waers " Currency
a~zterm " Payment Terms
a~vbeln " Billing Doc
a~zfbdt " Baseline Date
a~zbd1t " No of days
a~hkont " GL account
b~name1 " Customer Name
b~land1 " Country
into table it_bsid
from bsid as a join kna1 as b
on akunnr = bkunnr
where a~bukrs = p_bukrs and
a~kunnr in s_kunnr and
a~hkont in s_hkont and
b~land1 in s_land1 and
a~budat le p_date.
sort it_bsid by kunnr gjahr belnr buzei budat.
endform. " GET_OPEN_DATA
*& Form GET_CLOSE_DATA
Get the Customer closed Items from BSID
form get_close_data.
select a~kunnr " Customer Number
a~gjahr " Fiscal Year
a~belnr " Acc.Document
a~buzei " Item
a~budat " Posting Date
a~shkzg " Dr/Cr Indicator
a~dmbtr " Amount(Local Curr)
a~wrbtr " Amount(Doc Curr)
a~dmbe2 " Amount(USD)
a~waers " Currency
a~zterm " Payment Terms
a~vbeln " Billing Doc
a~zfbdt " Baseline Date
a~zbd1t " No of days
a~hkont " GL account
b~name1 " Customer Name
b~land1 " Country
into table it_bsad
from bsad as a join kna1 as b
on akunnr = bkunnr
where a~bukrs = p_bukrs and
a~kunnr in s_kunnr and
a~hkont in s_hkont and
b~land1 in s_land1 and
a~augdt > p_date and
a~budat le p_date.
sort it_bsad by kunnr gjahr belnr buzei budat.
endform. " GET_CLOSE_DATA
*& Form PROCESS_DATA
Get the data from BSID,BSAD and KNA1 into one int.table
form process_data.
*Move the data from BSID to final output int table
loop at it_bsid.
move-corresponding it_bsid to it_report.
it_report-due_date = it_bsid-zfbdt + it_bsid-zbd1t.
append it_report.
clear it_report.
endloop.
*Move the data from BSAD to final output int table
loop at it_bsad.
move-corresponding it_bsad to it_report.
it_report-due_date = it_bsad-zfbdt + it_bsad-zbd1t.
append it_report.
clear it_report.
endloop.
sort it_report by kunnr belnr.
loop at it_report.
if it_report-shkzg = 'H'. " Credit
it_report-dmbtr = it_report-dmbtr * -1.
it_report-dmbe2 = it_report-dmbe2 * -1.
endif.
v_days = it_report-due_date - p_date.
For Company Code Currency
if p_rb1 = 'X'.
if v_days le 0.
it_report-due_amnt = it_report-dmbtr.
elseif v_days between 1 and 30.
it_report-d_amnt1 = it_report-dmbtr.
elseif v_days between 31 and 60.
it_report-d_amnt2 = it_report-dmbtr.
elseif v_days between 61 and 90.
it_report-d_amnt3 = it_report-dmbtr.
elseif v_days between 91 and 120.
it_report-d_amnt4 = it_report-dmbtr.
elseif v_days > 120.
it_report-d_amnt5 = it_report-dmbtr.
endif.
For Group Currency
else.
if v_days le 0.
it_report-due_amnt = it_report-dmbe2.
elseif v_days between 1 and 30.
it_report-d_amnt1 = it_report-dmbe2.
elseif v_days between 31 and 60.
it_report-d_amnt2 = it_report-dmbe2.
elseif v_days between 61 and 90.
it_report-d_amnt3 = it_report-dmbe2.
elseif v_days between 91 and 120.
it_report-d_amnt4 = it_report-dmbe2.
elseif v_days > 120.
it_report-d_amnt5 = it_report-dmbe2.
endif.
endif.
modify it_report index sy-tabix.
endloop.
endform. " PROCESS_DATA
*& Form WRITE_REPORT
Write the Detailed Report Output
form write_report.
clear: v_sum1,v_sum2,v_sum3,v_sum4,v_waers,
v_sum5,v_sum6,v_sum7,v_sum8.
loop at it_report.
at new kunnr.
read table it_report index sy-tabix.
write: / sy-vline, 2(10) it_report-kunnr,
12 sy-vline, 13(30) it_report-name1,
43 sy-vline, 44(3) it_report-land1,
47 sy-vline.
endat.
if p_rb1 = 'X'.
select single waers from t001
into v_waers where bukrs = p_bukrs.
write: 1 sy-vline, 12 sy-vline,
43 sy-vline,
47 sy-vline,
48(15) it_report-dmbtr currency it_report-waers,
63 sy-vline, 64(4) v_waers,
68 sy-vline.
else.
write: 1 sy-vline, 12 sy-vline,
43 sy-vline,
47 sy-vline,
48(15) it_report-dmbe2 currency it_report-waers,
63 sy-vline,64(4) c_doc_waers,
68 sy-vline.
endif.
write: 69(15) it_report-due_amnt currency it_report-waers,
84 sy-vline,
85(15) it_report-d_amnt1 currency it_report-waers,
100 sy-vline,
101(15) it_report-d_amnt2 currency it_report-waers,
116 sy-vline,
117(15) it_report-d_amnt3 currency it_report-waers,
132 sy-vline,
133(15) it_report-d_amnt4 currency it_report-waers,
148 sy-vline,
149(15) it_report-d_amnt5 currency it_report-waers,
164 sy-vline,165(10) it_report-due_date,
175 sy-vline,176(5) it_report-zterm,
181 sy-vline,182(10) it_report-vbeln,
192 sy-vline,193(10) it_report-belnr,
203 sy-vline.
if p_chk1 = 'X'.
write: 204(16) it_report-wrbtr currency it_report-waers,
220 sy-vline, 221(4) it_report-waers,
225 sy-vline.
endif.
new-line.
Totals for end of each Customer
at end of kunnr.
if p_chk1 = 'X'.
write at /1(225) sy-uline.
else.
write at /1(203) sy-uline.
endif.
sum.
format color 4.
if p_rb1 = 'X'.
write: /1 sy-vline, 2 'Total:'(015),
12 sy-vline,
13(10) it_report-kunnr,
43 sy-vline,47 sy-vline,
48(15) it_report-dmbtr currency it_report-waers,
63 sy-vline, 64(3) v_waers,
68 sy-vline,
69(15) it_report-due_amnt currency it_report-waers,
84 sy-vline,
85(15) it_report-d_amnt1 currency it_report-waers,
100 sy-vline,
101(15) it_report-d_amnt2 currency it_report-waers,
116 sy-vline,
117(15) it_report-d_amnt3 currency it_report-waers,
132 sy-vline,
133(15) it_report-d_amnt4 currency it_report-waers,
148 sy-vline,
149(15) it_report-d_amnt5 currency it_report-waers,
164 sy-vline, 175 sy-vline,
181 sy-vline, 192 sy-vline,
203 sy-vline.
if p_chk1 = 'X'.
write: 220 sy-vline, 225 sy-vline.
endif.
else.
write: /1 sy-vline, 2 'Total:'(015),
12 sy-vline,
13(10) it_report-kunnr,
43 sy-vline,
47 sy-vline,
48(15) it_report-dmbe2 currency it_report-waers,
63 sy-vline, 64(3) c_doc_waers,
68 sy-vline,
69(15) it_report-due_amnt currency it_report-waers,
84 sy-vline,
85(15) it_report-d_amnt1 currency it_report-waers,
100 sy-vline,
101(15) it_report-d_amnt2 currency it_report-waers,
116 sy-vline,
117(15) it_report-d_amnt3 currency it_report-waers,
132 sy-vline,
133(15) it_report-d_amnt4 currency it_report-waers,
148 sy-vline,
149(15) it_report-d_amnt5 currency it_report-waers,
164 sy-vline, 175 sy-vline,
181 sy-vline, 192 sy-vline,
203 sy-vline.
if p_chk1 = 'X'.
write: 220 sy-vline, 225 sy-vline.
endif.
endif.
format color off.
if p_chk1 = 'X'.
write at /1(225) sy-uline.
else.
write at /1(203) sy-uline.
endif.
endat.
v_sum1 = v_sum1 + it_report-dmbtr.
v_sum2 = v_sum2 + it_report-due_amnt.
v_sum3 = v_sum3 + it_report-d_amnt1.
v_sum4 = v_sum4 + it_report-d_amnt2.
v_sum5 = v_sum5 + it_report-d_amnt3.
v_sum6 = v_sum6 + it_report-d_amnt4.
v_sum7 = v_sum7 + it_report-d_amnt5.
v_sum8 = v_sum8 + it_report-dmbe2.
Hiding the Acc doc no for interactic screen.
hide it_report-belnr.
hide it_report-budat.
clear:it_report-belnr, it_report-budat.
endloop.
Grand Totals for all customers
format color 3.
write: /1 sy-vline, 2 'Gr.Total'(034),
12 sy-vline,13 'As At:'(035),p_date,
43 sy-vline,
47 sy-vline.
For Company Code Currency
if p_rb1 = 'X'.
write: 48(15) v_sum1 currency it_report-waers,
63 sy-vline, 64(4) v_waers,
68 sy-vline.
For Group Currency (USD)
else.
write: 48(15) v_sum8 currency it_report-waers,
63 sy-vline, 64(3) c_doc_waers,
68 sy-vline.
endif.
write: 69(15) v_sum2 currency it_report-waers,
84 sy-vline,
85(15) v_sum3 currency it_report-waers,
100 sy-vline,
101(15) v_sum4 currency it_report-waers,
116 sy-vline,
117(15) v_sum5 currency it_report-waers,
132 sy-vline,
133(15) v_sum6 currency it_report-waers,
148 sy-vline,
149(15) v_sum7 currency it_report-waers,
164 sy-vline, 175 sy-vline,
181 sy-vline, 192 sy-vline,
203 sy-vline.
if p_chk1 = 'X'.
write: 220 sy-vline, 225 sy-vline.
endif.
format color off.
if p_chk1 = 'X'.
write at /1(225) sy-uline.
else.
write at /1(203) sy-uline.
endif.
endform. " WRITE_REPORT
*& Form WRITE_REPORT1
Write the Summary Report Output
form write_report1.
clear: v_sum1,v_sum2,v_sum3,v_sum4,v_waers,
v_sum5,v_sum6,v_sum7,v_sum8.
loop at it_report.
at new kunnr.
read table it_report index sy-tabix.
write: / sy-vline, 2(10) it_report-kunnr,
12 sy-vline, 13(30) it_report-name1,
43 sy-vline, 44(3) it_report-land1,
47 sy-vline.
endat.
at end of kunnr.
sum.
if p_rb1 = 'X'.
select single waers from t001
into v_waers where bukrs = p_bukrs.
write: 1 sy-vline, 12 sy-vline,
43 sy-vline, 47 sy-vline,
48(15) it_report-dmbtr currency it_report-waers,
63 sy-vline, 64(4) v_waers,
68 sy-vline,
69(15) it_report-due_amnt currency it_report-waers,
84 sy-vline,
85(15) it_report-d_amnt1 currency it_report-waers,
100 sy-vline,
101(15) it_report-d_amnt2 currency it_report-waers,
116 sy-vline,
117(15) it_report-d_amnt3 currency it_report-waers,
132 sy-vline,
133(15) it_report-d_amnt4 currency it_report-waers,
148 sy-vline,
149(15) it_report-d_amnt5 currency it_report-waers,
164 sy-vline.
else.
write: 1 sy-vline, 12 sy-vline,
43 sy-vline, 47 sy-vline,
48(15) it_report-dmbe2 currency it_report-waers,
63 sy-vline, 64(4) c_doc_waers,
68 sy-vline,
69(15) it_report-due_amnt currency it_report-waers,
84 sy-vline,
85(15) it_report-d_amnt1 currency it_report-waers,
100 sy-vline,
101(15) it_report-d_amnt2 currency it_report-waers,
116 sy-vline,
117(15) it_report-d_amnt3 currency it_report-waers,
132 sy-vline,
133(15) it_report-d_amnt4 currency it_report-waers,
148 sy-vline,
149(15) it_report-d_amnt5 currency it_report-waers,
164 sy-vline.
endif.
write at /1(164) sy-uline.
endat.
Totals
v_sum1 = v_sum1 + it_report-dmbtr.
v_sum2 = v_sum2 + it_report-due_amnt.
v_sum3 = v_sum3 + it_report-d_amnt1.
v_sum4 = v_sum4 + it_report-d_amnt2.
v_sum5 = v_sum5 + it_report-d_amnt3.
v_sum6 = v_sum6 + it_report-d_amnt4.
v_sum7 = v_sum7 + it_report-d_amnt5.
v_sum8 = v_sum8 + it_report-dmbe2.
Hiding the Acc doc no for interactic screen.
hide it_report-belnr.
hide it_report-budat.
clear: it_report-belnr,
it_report-budat.
endloop.
Calculation of Grand Totals
format color 3.
write: /1 sy-vline, 2 'Gr.Total'(034),
12 sy-vline,13 'As At:'(035),p_date,
43 sy-vline,
47 sy-vline.
For Company Code Currency
if p_rb1 = 'X'.
write: 48(15) v_sum1 currency it_report-waers,
63 sy-vline, 64(4) v_waers,
68 sy-vline.
For Group Currency (USD)
else.
write: 48(15) v_sum8 currency it_report-waers,
63 sy-vline, 64(3) c_doc_waers,
68 sy-vline.
endif.
write: 69(15) v_sum2 currency it_report-waers,
84 sy-vline,
85(15) v_sum3 currency it_report-waers,
100 sy-vline,
101(15) v_sum4 currency it_report-waers,
116 sy-vline,
117(15) v_sum5 currency it_report-waers,
132 sy-vline,
133(15) v_sum6 currency it_report-waers,
148 sy-vline,
149(15) v_sum7 currency it_report-waers,
164 sy-vline.
format color off.
write at /1(164) sy-uline.
endform. " WRITE_REPORT1
*& Form LINE_SEL
When double clicked on BELNR leave to transaction FB03
form line_sel.
data: lv_field(20),
lv_value(10),
lv_date(10),
lv_gjahr like bsad-gjahr.
get cursor field lv_field value lv_value.
if lv_field = 'IT_REPORT-BELNR'.
if not lv_value is initial.
read current line field value it_report-budat into lv_date.
lv_gjahr = lv_date+6(4).
set parameter id 'BUK' field p_bukrs.
set parameter id 'GJR' field lv_gjahr.
set parameter id 'BLN' field lv_value.
call transaction 'FB03' and skip first screen.
endif.
endif.
endform. " LINE_SEL
reward points if useful
regards,
Anji -
hi,
i have a reqiurement in which i need to take pernr and enddate(sy-datum) from
another report i m using import and export to get them tranfered export is
working fine(sy-subrc = 0) but import is not getting data it is getting all the pernr
value
submit also i used but it is also giving same result it is not pummping the pernr value to called report
can any one help me
thanks in advanceHI,
it works fine for me
REPORT Ztestprg.
DATA : LV_FIRST(10) TYPE C,
LV_LAST(20) TYPE C.
LV_FIRST = 'First'.
LV_LAST = 'Last'.
EXPORT LV_FIRST TO MEMORY ID 'FIRST'.
EXPORT LV_LAST TO MEMORY ID 'LAST'.
submit ZTESTPRG1 .
REPORT Z_XIT_XML_DOM_CREATE.
DATA : LV_FIRST(10) TYPE C,
LV_LAST(20) TYPE C.
CLEAR LV_FIRST.
CLEAR LV_LAST.
import LV_FIRST FROM MEMORY ID 'FIRST'.
import LV_LAST FROM MEMORY ID 'LAST'.
WRITE: LV_FIRST,LV_LAST.
Thanks
Mahesh -
Hi All,
I have to make a report in FI, which should show the below given Customer open Invoice details for a given customer in selection screen.
Invoice No | Invoice date | Invoice Amount | Payment | Balance | Currency |
1. I have selected all open item details (BELNR, BUDAT, WRBTR, WAERS ) from BSID for the given customer.
2. Selected the cleared items from BSAD for the above accounting documents..and updated the BSAD-WRBTR in payment column.
When there is no payment made against a Invoice its coming up, but when there is partial/ full payment made as this is no more open item this invoice number not coming up in the report.. Hope I have explianed my problem clearly..
Please suggest me how should I finish this report. Thanks in advances..its very urgent..
Regards
Jaker.Hi,
See the attached report for the Customer AR's (Open Items) and write accrodingly.
report zf_rept_debtor_ageing
no standard page heading
message-id fb
line-count 65
line-size 230.
Purpose : This ABAP program will fetch the Account Receivables for
a Customer for the given period and display the due days.
tables: t001, " Company Codes
t005, " Countries
skb1, " GL Master
kna1. " Customer Master
Internal Tables
Internal table for BSID (Open Items) data
data: begin of it_bsid occurs 0,
kunnr like bsid-kunnr, " Customer Number
gjahr like bsid-gjahr, " Fiscal Year
belnr like bsid-belnr, " Acc.Document
buzei like bsid-buzei, " Item
budat like bsid-budat, " Posting Date
shkzg like bsid-shkzg, " Dr/Cr Indicator
dmbtr like bsid-dmbtr, " Amount(Local Curr)
wrbtr like bsid-wrbtr, " Amount(Doc Curr)
dmbe2 like bsid-dmbe2, " Amount(USD)
waers like bsid-waers, " Currency
zterm like bsid-zterm, " Payment Terms
vbeln like bsid-vbeln, " Billing Doc
zfbdt like bsid-zfbdt, " Baseline Date
zbd1t like bsid-zbd1t, " No of days
hkont like bsid-hkont, " GL Account
name1 like kna1-name1, " Customer Name
land1 like kna1-land1, " Country
end of it_bsid.
Internal table for BSAD (Closed Items) data
data: begin of it_bsad occurs 0,
kunnr like bsad-kunnr, " Customer Number
gjahr like bsad-gjahr, " Fiscal Year
belnr like bsad-belnr, " Acc.Document
buzei like bsad-buzei, " Item
budat like bsad-budat, " Posting Date
shkzg like bsad-shkzg, " Dr/Cr Indicator
dmbtr like bsad-dmbtr, " Amount(Local Curr)
wrbtr like bsid-wrbtr, " Amount(Doc Curr)
dmbe2 like bsad-dmbe2, " Amount(USD)
waers like bsad-waers, " Currency
zterm like bsid-zterm, " Payment Terms
vbeln like bsid-vbeln, " Billing Doc
zfbdt like bsid-zfbdt, " Baseline Date
zbd1t like bsid-zbd1t, " No of days
hkont like bsid-hkont, " GL Account
name1 like kna1-name1, " Customer Name
land1 like kna1-land1, " Country
end of it_bsad.
Internal table for Report Output
data: begin of it_report occurs 0,
kunnr like bsid-kunnr, " Customer Number
belnr like bsid-belnr, " Acc.Document
name1 like kna1-name1, " Customer Name
land1 like kna1-land1, " Country
shkzg like bsid-shkzg, " Dr/Cr Indicator
budat like bsid-budat, " Posting Date
dmbtr like bsid-dmbtr, " Amount(Local Curr)
wrbtr like bsid-wrbtr, " Amount(Doc Curr)
dmbe2 like bsid-dmbe2, " Amount(USD)
waers like bsid-waers, " Currency
due_amnt like bsid-dmbtr, " Amount(Over Due)
d_amnt1 like bsid-dmbtr, " Amount(0-30 Future Due)
d_amnt2 like bsid-dmbtr, " Amount(31-60 Future Due)
d_amnt3 like bsid-dmbtr, " Amount(61-90 Future Due)
d_amnt4 like bsid-dmbtr, " Amount(91-120 Future Due)
d_amnt5 like bsid-dmbtr, " Amount(more than 120)
due_date like bsid-budat, " Due date
zterm like bsid-zterm, " Payment Terms
vbeln like bsid-vbeln, " Billing Doc
end of it_report.
Declaration of Data and Variables
data: v_days type i, " Difference days
v_waers like t001-waers, " Co.Code Currency
v_sum1 like bsid-dmbtr, " Totals 1
v_sum2 like bsid-dmbtr, " Totals 2
v_sum3 like bsid-dmbtr, " Totals 3
v_sum4 like bsid-dmbtr, " Totals 4
v_sum5 like bsid-dmbtr, " Totals 5
v_sum6 like bsid-dmbtr, " Totals 6
v_sum7 like bsid-dmbtr, " Totals 7
v_sum8 like bsid-dmbe2. " Totals 8
Constants
constants: c_doc_waers(3) value 'USD',
c_mitkz type c value 'D'.
Selection Screen
selection-screen : begin of block b1 with frame title text-001.
parameters: p_bukrs like t001-bukrs obligatory. " Company Code
select-options:s_kunnr for kna1-kunnr, " Customer Number
s_land1 for t005-land1, " Country
s_hkont for skb1-saknr. " G/L Account
parameters: p_date like sy-datum obligatory. " Report Date
selection-screen: end of block b1.
selection-screen : begin of block b2 with frame title text-002.
selection-screen begin of line.
selection-screen comment 2(30) text-003 for field p_rb1.
parameters: p_rb1 radiobutton group rb.
selection-screen end of line.
selection-screen begin of line.
selection-screen comment 2(30) text-004 for field p_rb2.
parameters: p_rb2 radiobutton group rb.
selection-screen end of line.
selection-screen: end of block b2.
selection-screen : begin of block b4 with frame.
selection-screen begin of line.
selection-screen comment 2(29) text-038 for field p_chk1.
parameters: p_chk1 as checkbox.
selection-screen end of line.
selection-screen: end of block b4.
selection-screen : begin of block b3 with frame title text-030.
selection-screen begin of line.
selection-screen comment 2(30) text-031 for field p_rb3.
parameters: p_rb3 radiobutton group rb1.
selection-screen end of line.
selection-screen begin of line.
selection-screen comment 2(30) text-032 for field p_rb4.
parameters: p_rb4 radiobutton group rb1.
selection-screen end of line.
selection-screen: end of block b3.
*********Initialization**********************************************
initialization.
At Selection Screen
at selection-screen.
Checking for the input values of selection screen.
perform screen_check.
Top-Of-Page
top-of-page.
if p_rb3 = 'X'.
if p_chk1 = 'X'.
Write the Column Headings for detailed report(in Doc Currency)
perform col_heading2.
else.
Write the Column Headings for detailed report
perform col_heading.
endif.
else.
Write the Column Headings for summary report
perform col_heading1.
endif.
Start-Of-Selection
start-of-selection.
Get the Customer Open Items from BSID
perform get_open_data.
Get the Customer Closed Items from BSAD
perform get_close_data.
Get the data from BSID,BSAD and KNA1 into one int.table
perform process_data.
End-Of-Selection
end-of-selection.
if it_report[] is initial.
write : 'No Documents found'(005).
else.
if p_rb3 = 'X'.
Write the Detailed Report
perform write_report.
else.
Write the Summary Report
perform write_report1.
endif.
endif.
At Line-Selection
at line-selection.
When double clicked on BELNR leave to transaction FB03
perform line_sel.
*& Form SCREEN_CHECK
Checking for the input values of selection screen
form screen_check.
Validation of Company Code
clear t001.
if not p_bukrs is initial.
select bukrs from t001 up to 1 rows
into t001-bukrs
where bukrs = p_bukrs.
endselect.
if sy-subrc ne 0.
message e000 with 'Invalid Company Code'(006).
endif.
endif.
Validation of Customer Number
clear kna1.
if not s_kunnr is initial.
select kunnr from kna1 up to 1 rows
into kna1-kunnr
where kunnr in s_kunnr.
endselect.
if sy-subrc ne 0.
message e000 with 'Invalid Customer Number'(007).
endif.
endif.
Validation of Country
clear t005.
if not s_land1 is initial.
select land1 from t005 up to 1 rows
into t005-land1
where land1 in s_land1.
endselect.
if sy-subrc ne 0.
message e000 with 'Invalid Country'(036).
endif.
endif.
Validation of GL Account
clear skb1.
if not s_hkont is initial.
select saknr from skb1 up to 1 rows
into skb1-saknr
where saknr in s_hkont and
mitkz = c_mitkz.
endselect.
if sy-subrc ne 0.
message e000 with 'Invalid GL Reconciliation Account'(037).
endif.
endif.
endform. " SCREEN_CHECK
*& Form COL_HEADING
Write the Column Headings for detailed report
form col_heading.
skip .
write: /88 'DEBTOR AGEING REPORT AS AT:'(019) centered,
116 p_date centered, 198 sy-pagno.
skip .
write: /2 'CoCode:'(016),13(4) p_bukrs color 3.
if not s_kunnr is initial.
if not s_kunnr-high is initial.
write: 20 'Customer:'(041),33 s_kunnr-low color 3,
'-', s_kunnr-high color 3.
else.
write: 20 'Customer:'(041),33 s_kunnr-low color 3.
endif.
endif.
if not s_land1 is initial.
if not s_land1-high is initial.
write: /2 'Country:'(042),13(4) s_land1-low color 3,
'-', s_land1-high color 3.
else.
write: /2 'Country:'(042),13(4) s_land1-low color 3.
endif.
if not s_hkont is initial.
if not s_hkont-high is initial.
write: 20 'GL Account:'(043),33 s_hkont-low color 3,
'-', s_hkont-high color 3.
else.
write: 20 'GL Account:'(043),33 s_hkont-low color 3.
endif.
endif.
else.
if not s_hkont is initial.
if not s_hkont-high is initial.
write: /2 'GL Account:'(043),14 s_hkont-low color 3,
'-', s_hkont-high color 3.
else.
write: /2 'GL Account:'(043),14 s_hkont-low color 3.
endif.
endif.
endif.
write: 183 'Run Date:'(029), sy-datum.
format color col_heading.
write at /1(203) sy-uline .
write: / sy-vline, 2(10) 'Customer'(008) centered,
12 sy-vline, 13(30) 'Customer Name'(009),
43 sy-vline, 44(3) 'Cty'(014) centered,
47 sy-vline, 48(15) 'Amount'(013) right-justified,
63 sy-vline, 64(4) 'Curr'(011) centered,
68 sy-vline, 69(15) 'Overdue'(012) centered,
84 sy-vline, 85(15) '0 - 30 Days'(010) centered,
100 sy-vline,101(15) '31 - 60 Days'(028) centered,
116 sy-vline,117(15) '61 - 90 Days'(021) centered,
132 sy-vline,133(15) '91 - 120 Days'(022) centered,
148 sy-vline,149(15) 'Above 120 Days'(023) centered,
164 sy-vline,165(10) 'Due Date'(024) centered,
175 sy-vline,176(5) 'PayT'(025) centered,
181 sy-vline,182(10) 'Bill.Doc.'(026) centered,
192 sy-vline,193(10) 'Doc.No.'(027) centered,
203 sy-vline.
write at /1(203) sy-uline.
format color off.
endform. " COL_HEADING
*& Form COL_HEADING1
Write the Column Headings for summary report
form col_heading1.
skip .
write: /54 'DEBTOR AGEING REPORT (SUMMARY) AS AT:'(033) centered,
92 p_date centered, 158 sy-pagno.
skip .
write: /2 'CoCode:'(016), 13(4) p_bukrs color 3.
if not s_kunnr is initial.
if not s_kunnr-high is initial.
write: 20 'Customer:'(041),33 s_kunnr-low color 3,
'-', s_kunnr-high color 3.
else.
write: 20 'Customer:'(041),33 s_kunnr-low color 3.
endif.
endif.
if not s_land1 is initial.
if not s_land1-high is initial.
write: /2 'Country:'(042),13(4) s_land1-low color 3,
'-', s_land1-high color 3.
else.
write: /2 'Country:'(042),13(4) s_land1-low color 3.
endif.
if not s_hkont is initial.
if not s_hkont-high is initial.
write: 20 'GL Account:'(043),33 s_hkont-low color 3,
'-', s_hkont-high color 3.
else.
write: 20 'GL Account:'(043),33 s_hkont-low color 3.
endif.
endif.
else.
if not s_hkont is initial.
if not s_hkont-high is initial.
write: /2 'GL Account:'(043),14 s_hkont-low color 3,
'-', s_hkont-high color 3.
else.
write: /2 'GL Account:'(043),14 s_hkont-low color 3.
endif.
endif.
endif.
write: 144 'Run Date:'(029), sy-datum.
format color col_heading.
write at /1(164) sy-uline .
write: / sy-vline, 2(10) 'Customer'(008) centered,
12 sy-vline, 13(30) 'Customer Name'(009),
43 sy-vline, 44(3) 'Cty'(014) centered,
47 sy-vline, 48(15) 'Amount'(013) right-justified,
63 sy-vline, 64(4) 'Curr'(011) centered,
68 sy-vline, 69(15) 'Overdue'(012) centered,
84 sy-vline, 85(15) '0 - 30 Days'(010) centered,
100 sy-vline,101(15) '31 - 60 Days'(028) centered,
116 sy-vline,117(15) '61 - 90 Days'(021) centered,
132 sy-vline,133(15) '91 - 120 Days'(022) centered,
148 sy-vline,149(15) 'Above 120 Days'(023) centered,
164 sy-vline.
write at /1(164) sy-uline.
format color off.
endform. " COL_HEADING1
*& Form COL_HEADING2
Write the Column Headings for summary report(in Doc Curr)
form col_heading2.
skip .
write: /99 'DEBTOR AGEING REPORT AS AT:'(019) centered,
127 p_date centered, 220 sy-pagno.
skip .
write: /2 'CoCode:'(016),13(4) p_bukrs color 3.
if not s_kunnr is initial.
if not s_kunnr-high is initial.
write: 20 'Customer:'(041),33 s_kunnr-low color 3,
'-', s_kunnr-high color 3.
else.
write: 20 'Customer:'(041),33 s_kunnr-low color 3.
endif.
endif.
if not s_land1 is initial.
if not s_land1-high is initial.
write: /2 'Country:'(042),13(4) s_land1-low color 3,
'-', s_land1-high color 3.
else.
write: /2 'Country:'(042),13(4) s_land1-low color 3.
endif.
if not s_hkont is initial.
if not s_hkont-high is initial.
write: 20 'GL Account:'(043),33 s_hkont-low color 3,
'-', s_hkont-high color 3.
else.
write: 20 'GL Account:'(043),33 s_hkont-low color 3.
endif.
endif.
else.
if not s_hkont is initial.
if not s_hkont-high is initial.
write: /2 'GL Account:'(043),14 s_hkont-low color 3,
'-', s_hkont-high color 3.
else.
write: /2 'GL Account:'(043),14 s_hkont-low color 3.
endif.
endif.
endif.
write: 204 'Run Date:'(029), sy-datum.
format color col_heading.
write at /1(225) sy-uline .
write: / sy-vline, 2(10) 'Customer'(008) centered,
12 sy-vline, 13(30) 'Customer Name'(009),
43 sy-vline, 44(3) 'Cty'(014) centered,
47 sy-vline, 48(15) 'Amount'(013) right-justified,
63 sy-vline, 64(4) 'Curr'(011) centered,
68 sy-vline, 69(15) 'Overdue'(012) centered,
84 sy-vline, 85(15) '0 - 30 Days'(010) centered,
100 sy-vline,101(15) '31 - 60 Days'(028) centered,
116 sy-vline,117(15) '61 - 90 Days'(021) centered,
132 sy-vline,133(15) '91 - 120 Days'(022) centered,
148 sy-vline,149(15) 'Above 120 Days'(023) centered,
164 sy-vline,165(10) 'Due Date'(024) centered,
175 sy-vline,176(5) 'PayT'(025) centered,
181 sy-vline,182(10) 'Bill.Doc.'(026) centered,
192 sy-vline,193(10) 'Doc.No.'(027) centered,
203 sy-vline,204(16) 'Amount(Doc.Curr)'(039),
220 sy-vline,221(4) 'Curr'(040),
225 sy-vline.
write at /1(225) sy-uline.
format color off.
endform. " COL_HEADING2
*& Form GET_OPEN_DATA
Get the Customer Open Items from BSID
form get_open_data.
select a~kunnr " Customer Number
a~gjahr " Fiscal Year
a~belnr " Acc.Document
a~buzei " Item
a~budat " Posting Date
a~shkzg " Dr/Cr Indicator
a~dmbtr " Amount(Local Curr)
a~wrbtr " Amount(Doc Curr)
a~dmbe2 " Amount(USD)
a~waers " Currency
a~zterm " Payment Terms
a~vbeln " Billing Doc
a~zfbdt " Baseline Date
a~zbd1t " No of days
a~hkont " GL account
b~name1 " Customer Name
b~land1 " Country
into table it_bsid
from bsid as a join kna1 as b
on akunnr = bkunnr
where a~bukrs = p_bukrs and
a~kunnr in s_kunnr and
a~hkont in s_hkont and
b~land1 in s_land1 and
a~budat le p_date.
sort it_bsid by kunnr gjahr belnr buzei budat.
endform. " GET_OPEN_DATA
*& Form GET_CLOSE_DATA
Get the Customer closed Items from BSID
form get_close_data.
select a~kunnr " Customer Number
a~gjahr " Fiscal Year
a~belnr " Acc.Document
a~buzei " Item
a~budat " Posting Date
a~shkzg " Dr/Cr Indicator
a~dmbtr " Amount(Local Curr)
a~wrbtr " Amount(Doc Curr)
a~dmbe2 " Amount(USD)
a~waers " Currency
a~zterm " Payment Terms
a~vbeln " Billing Doc
a~zfbdt " Baseline Date
a~zbd1t " No of days
a~hkont " GL account
b~name1 " Customer Name
b~land1 " Country
into table it_bsad
from bsad as a join kna1 as b
on akunnr = bkunnr
where a~bukrs = p_bukrs and
a~kunnr in s_kunnr and
a~hkont in s_hkont and
b~land1 in s_land1 and
a~augdt > p_date and
a~budat le p_date.
sort it_bsad by kunnr gjahr belnr buzei budat.
endform. " GET_CLOSE_DATA
*& Form PROCESS_DATA
Get the data from BSID,BSAD and KNA1 into one int.table
form process_data.
*Move the data from BSID to final output int table
loop at it_bsid.
move-corresponding it_bsid to it_report.
it_report-due_date = it_bsid-zfbdt + it_bsid-zbd1t.
append it_report.
clear it_report.
endloop.
*Move the data from BSAD to final output int table
loop at it_bsad.
move-corresponding it_bsad to it_report.
it_report-due_date = it_bsad-zfbdt + it_bsad-zbd1t.
append it_report.
clear it_report.
endloop.
sort it_report by kunnr belnr.
loop at it_report.
if it_report-shkzg = 'H'. " Credit
it_report-dmbtr = it_report-dmbtr * -1.
it_report-dmbe2 = it_report-dmbe2 * -1.
endif.
v_days = it_report-due_date - p_date.
For Company Code Currency
if p_rb1 = 'X'.
if v_days le 0.
it_report-due_amnt = it_report-dmbtr.
elseif v_days between 1 and 30.
it_report-d_amnt1 = it_report-dmbtr.
elseif v_days between 31 and 60.
it_report-d_amnt2 = it_report-dmbtr.
elseif v_days between 61 and 90.
it_report-d_amnt3 = it_report-dmbtr.
elseif v_days between 91 and 120.
it_report-d_amnt4 = it_report-dmbtr.
elseif v_days > 120.
it_report-d_amnt5 = it_report-dmbtr.
endif.
For Group Currency
else.
if v_days le 0.
it_report-due_amnt = it_report-dmbe2.
elseif v_days between 1 and 30.
it_report-d_amnt1 = it_report-dmbe2.
elseif v_days between 31 and 60.
it_report-d_amnt2 = it_report-dmbe2.
elseif v_days between 61 and 90.
it_report-d_amnt3 = it_report-dmbe2.
elseif v_days between 91 and 120.
it_report-d_amnt4 = it_report-dmbe2.
elseif v_days > 120.
it_report-d_amnt5 = it_report-dmbe2.
endif.
endif.
modify it_report index sy-tabix.
endloop.
endform. " PROCESS_DATA
*& Form WRITE_REPORT
Write the Detailed Report Output
form write_report.
clear: v_sum1,v_sum2,v_sum3,v_sum4,v_waers,
v_sum5,v_sum6,v_sum7,v_sum8.
loop at it_report.
at new kunnr.
read table it_report index sy-tabix.
write: / sy-vline, 2(10) it_report-kunnr,
12 sy-vline, 13(30) it_report-name1,
43 sy-vline, 44(3) it_report-land1,
47 sy-vline.
endat.
if p_rb1 = 'X'.
select single waers from t001
into v_waers where bukrs = p_bukrs.
write: 1 sy-vline, 12 sy-vline,
43 sy-vline,
47 sy-vline,
48(15) it_report-dmbtr currency it_report-waers,
63 sy-vline, 64(4) v_waers,
68 sy-vline.
else.
write: 1 sy-vline, 12 sy-vline,
43 sy-vline,
47 sy-vline,
48(15) it_report-dmbe2 currency it_report-waers,
63 sy-vline,64(4) c_doc_waers,
68 sy-vline.
endif.
write: 69(15) it_report-due_amnt currency it_report-waers,
84 sy-vline,
85(15) it_report-d_amnt1 currency it_report-waers,
100 sy-vline,
101(15) it_report-d_amnt2 currency it_report-waers,
116 sy-vline,
117(15) it_report-d_amnt3 currency it_report-waers,
132 sy-vline,
133(15) it_report-d_amnt4 currency it_report-waers,
148 sy-vline,
149(15) it_report-d_amnt5 currency it_report-waers,
164 sy-vline,165(10) it_report-due_date,
175 sy-vline,176(5) it_report-zterm,
181 sy-vline,182(10) it_report-vbeln,
192 sy-vline,193(10) it_report-belnr,
203 sy-vline.
if p_chk1 = 'X'.
write: 204(16) it_report-wrbtr currency it_report-waers,
220 sy-vline, 221(4) it_report-waers,
225 sy-vline.
endif.
new-line.
Totals for end of each Customer
at end of kunnr.
if p_chk1 = 'X'.
write at /1(225) sy-uline.
else.
write at /1(203) sy-uline.
endif.
sum.
format color 4.
if p_rb1 = 'X'.
write: /1 sy-vline, 2 'Total:'(015),
12 sy-vline,
13(10) it_report-kunnr,
43 sy-vline,47 sy-vline,
48(15) it_report-dmbtr currency it_report-waers,
63 sy-vline, 64(3) v_waers,
68 sy-vline,
69(15) it_report-due_amnt currency it_report-waers,
84 sy-vline,
85(15) it_report-d_amnt1 currency it_report-waers,
100 sy-vline,
101(15) it_report-d_amnt2 currency it_report-waers,
116 sy-vline,
117(15) it_report-d_amnt3 currency it_report-waers,
132 sy-vline,
133(15) it_report-d_amnt4 currency it_report-waers,
148 sy-vline,
149(15) it_report-d_amnt5 currency it_report-waers,
164 sy-vline, 175 sy-vline,
181 sy-vline, 192 sy-vline,
203 sy-vline.
if p_chk1 = 'X'.
write: 220 sy-vline, 225 sy-vline.
endif.
else.
write: /1 sy-vline, 2 'Total:'(015),
12 sy-vline,
13(10) it_report-kunnr,
43 sy-vline,
47 sy-vline,
48(15) it_report-dmbe2 currency it_report-waers,
63 sy-vline, 64(3) c_doc_waers,
68 sy-vline,
69(15) it_report-due_amnt currency it_report-waers,
84 sy-vline,
85(15) it_report-d_amnt1 currency it_report-waers,
100 sy-vline,
101(15) it_report-d_amnt2 currency it_report-waers,
116 sy-vline,
117(15) it_report-d_amnt3 currency it_report-waers,
132 sy-vline,
133(15) it_report-d_amnt4 currency it_report-waers,
148 sy-vline,
149(15) it_report-d_amnt5 currency it_report-waers,
164 sy-vline, 175 sy-vline,
181 sy-vline, 192 sy-vline,
203 sy-vline.
if p_chk1 = 'X'.
write: 220 sy-vline, 225 sy-vline.
endif.
endif.
format color off.
if p_chk1 = 'X'.
write at /1(225) sy-uline.
else.
write at /1(203) sy-uline.
endif.
endat.
v_sum1 = v_sum1 + it_report-dmbtr.
v_sum2 = v_sum2 + it_report-due_amnt.
v_sum3 = v_sum3 + it_report-d_amnt1.
v_sum4 = v_sum4 + it_report-d_amnt2.
v_sum5 = v_sum5 + it_report-d_amnt3.
v_sum6 = v_sum6 + it_report-d_amnt4.
v_sum7 = v_sum7 + it_report-d_amnt5.
v_sum8 = v_sum8 + it_report-dmbe2.
Hiding the Acc doc no for interactic screen.
hide it_report-belnr.
hide it_report-budat.
clear:it_report-belnr, it_report-budat.
endloop.
Grand Totals for all customers
format color 3.
write: /1 sy-vline, 2 'Gr.Total'(034),
12 sy-vline,13 'As At:'(035),p_date,
43 sy-vline,
47 sy-vline.
For Company Code Currency
if p_rb1 = 'X'.
write: 48(15) v_sum1 currency it_report-waers,
63 sy-vline, 64(4) v_waers,
68 sy-vline.
For Group Currency (USD)
else.
write: 48(15) v_sum8 currency it_report-waers,
63 sy-vline, 64(3) c_doc_waers,
68 sy-vline.
endif.
write: 69(15) v_sum2 currency it_report-waers,
84 sy-vline,
85(15) v_sum3 currency it_report-waers,
100 sy-vline,
101(15) v_sum4 currency it_report-waers,
116 sy-vline,
117(15) v_sum5 currency it_report-waers,
132 sy-vline,
133(15) v_sum6 currency it_report-waers,
148 sy-vline,
149(15) v_sum7 currency it_report-waers,
164 sy-vline, 175 sy-vline,
181 sy-vline, 192 sy-vline,
203 sy-vline.
if p_chk1 = 'X'.
write: 220 sy-vline, 225 sy-vline.
endif.
format color off.
if p_chk1 = 'X'.
write at /1(225) sy-uline.
else.
write at /1(203) sy-uline.
endif.
endform. " WRITE_REPORT
*& Form WRITE_REPORT1
Write the Summary Report Output
form write_report1.
clear: v_sum1,v_sum2,v_sum3,v_sum4,v_waers,
v_sum5,v_sum6,v_sum7,v_sum8.
loop at it_report.
at new kunnr.
read table it_report index sy-tabix.
write: / sy-vline, 2(10) it_report-kunnr,
12 sy-vline, 13(30) it_report-name1,
43 sy-vline, 44(3) it_report-land1,
47 sy-vline.
endat.
at end of kunnr.
sum.
if p_rb1 = 'X'.
select single waers from t001
into v_waers where bukrs = p_bukrs.
write: 1 sy-vline, 12 sy-vline,
43 sy-vline, 47 sy-vline,
48(15) it_report-dmbtr currency it_report-waers,
63 sy-vline, 64(4) v_waers,
68 sy-vline,
69(15) it_report-due_amnt currency it_report-waers,
84 sy-vline,
85(15) it_report-d_amnt1 currency it_report-waers,
100 sy-vline,
101(15) it_report-d_amnt2 currency it_report-waers,
116 sy-vline,
117(15) it_report-d_amnt3 currency it_report-waers,
132 sy-vline,
133(15) it_report-d_amnt4 currency it_report-waers,
148 sy-vline,
149(15) it_report-d_amnt5 currency it_report-waers,
164 sy-vline.
else.
write: 1 sy-vline, 12 sy-vline,
43 sy-vline, 47 sy-vline,
48(15) it_report-dmbe2 currency it_report-waers,
63 sy-vline, 64(4) c_doc_waers,
68 sy-vline,
69(15) it_report-due_amnt currency it_report-waers,
84 sy-vline,
85(15) it_report-d_amnt1 currency it_report-waers,
100 sy-vline,
101(15) it_report-d_amnt2 currency it_report-waers,
116 sy-vline,
117(15) it_report-d_amnt3 currency it_report-waers,
132 sy-vline,
133(15) it_report-d_amnt4 currency it_report-waers,
148 sy-vline,
149(15) it_report-d_amnt5 currency it_report-waers,
164 sy-vline.
endif.
write at /1(164) sy-uline.
endat.
Totals
v_sum1 = v_sum1 + it_report-dmbtr.
v_sum2 = v_sum2 + it_report-due_amnt.
v_sum3 = v_sum3 + it_report-d_amnt1.
v_sum4 = v_sum4 + it_report-d_amnt2.
v_sum5 = v_sum5 + it_report-d_amnt3.
v_sum6 = v_sum6 + it_report-d_amnt4.
v_sum7 = v_sum7 + it_report-d_amnt5.
v_sum8 = v_sum8 + it_report-dmbe2.
Hiding the Acc doc no for interactic screen.
hide it_report-belnr.
hide it_report-budat.
clear: it_report-belnr,
it_report-budat.
endloop.
Calculation of Grand Totals
format color 3.
write: /1 sy-vline, 2 'Gr.Total'(034),
12 sy-vline,13 'As At:'(035),p_date,
43 sy-vline,
47 sy-vline.
For Company Code Currency
if p_rb1 = 'X'.
write: 48(15) v_sum1 currency it_report-waers,
63 sy-vline, 64(4) v_waers,
68 sy-vline.
For Group Currency (USD)
else.
write: 48(15) v_sum8 currency it_report-waers,
63 sy-vline, 64(3) c_doc_waers,
68 sy-vline.
endif.
write: 69(15) v_sum2 currency it_report-waers,
84 sy-vline,
85(15) v_sum3 currency it_report-waers,
100 sy-vline,
101(15) v_sum4 currency it_report-waers,
116 sy-vline,
117(15) v_sum5 currency it_report-waers,
132 sy-vline,
133(15) v_sum6 currency it_report-waers,
148 sy-vline,
149(15) v_sum7 currency it_report-waers,
164 sy-vline.
format color off.
write at /1(164) sy-uline.
endform. " WRITE_REPORT1
*& Form LINE_SEL
When double clicked on BELNR leave to transaction FB03
form line_sel.
data: lv_field(20),
lv_value(10),
lv_date(10),
lv_gjahr like bsad-gjahr.
get cursor field lv_field value lv_value.
if lv_field = 'IT_REPORT-BELNR'.
if not lv_value is initial.
read current line field value it_report-budat into lv_date.
lv_gjahr = lv_date+6(4).
set parameter id 'BUK' field p_bukrs.
set parameter id 'GJR' field lv_gjahr.
set parameter id 'BLN' field lv_value.
call transaction 'FB03' and skip first screen.
endif.
endif.
endform. " LINE_SEL
Regards,
Anji -
ALV Totals , Subtotals for a particular field in ALV Grid report
Hi,
I have an issue in ALV totals and subtotals.
Scenario is like this.
i have a vendor data to be pulled out of SAP and to be shown in the form of report.
i am populating all the data and doing do_sum based on Vendor ( has expansin & collapse option ) and display the number of reports .
Vendor -
100
Vendor1 -
1
Vendor2----
2.
Vendor100----
100.
but my problem is in the same report i have a date field .
if i have a five vendors created on 03/03/2008. in the same report for the date field having ( expansion & collapse ) , when i expand based on that date can i be able to sum up all the vendors created on 03/03/2008 and display in the same report along with the vendor count.
Let me know . Thank you in advance
Regards,
RyHi Roby,
Have a look at this sample code
It will help u,
REPORT ZIN_FI_AGEING
message-id zbdc
no standard page heading.
Title : For Ageing Details
Author :
Date : 22/11/2004
Transport/Correction Id :
Clarify case ID :
Application : FI
Program Type :
Frequency :
Purpose :
Comments :
Request No :
TABLES DELCARATIONS
Tables: zzgeinz9a, "Actual line item table
t001. "Plants/Branches
ALV TTPE DELCARATIONS
type-pools: slis.
*Type Declarations for Field Catalog
data : i_fldcat_head type slis_t_fieldcat_alv,
wa_fldcat_head type slis_fieldcat_alv.
*Type Declarations for ALV Events
data : i_events type slis_t_event,
wa_event like line of i_events.
*Type Declarations for Layout Design
data : wa_layout type slis_layout_alv.
*Type Declarations for Sorting Fields
data: it_sort type slis_sortinfo_alv occurs 0 with header line.
*Type Declarations for Displaying Images on Grid
data : i_comment type slis_t_listheader,
wa_comment type slis_listheader.
*Type Declarations for Grouping fields
data : wa_group type slis_sp_group_alv,
i_group type slis_t_sp_group_alv.
DATA DELCARATIONS
data: v_flag, "Status Flag
v_repid like sy-repid, "Program Name
p_year(4) type c, "Year
v_due_days type i. "To hold the due days
CONSTANTS DELCARATIONS
constants: c_x type c value 'X',
c_bukrs(4) type c value '0373'.
INTERNAL TABLES DELCARATIONS
*--Internal table to hold the required data
data: begin of it_final_vendor occurs 0,
rzzlifnr like zzgeinz9a-rzzlifnr, "Vendor
name1 like lfa1-name1, "Vendor Name
docnr like zzgeinz9a-DOCNR, "Accounting Doc No
refdocnr like zzgeinz9a-REFDOCNR, "Reference document no
belnr like bkpf-belnr, "FI Doc No
doc_date like bkpf-awkey, "Document Date
zbd1t like bsik-zbd1t, "Cash discount days 1
bldat like bkpf-bldat, "Document Date
due_date like bkpf-bldat, "Due Date
due_days type i, "Due Days
rzz_ebeln like zzgeinz9a-rzz_ebeln, "P.O. Ref No
not_due like zzgeinz9a-hsl, "Not Yet Due
hsl like zzgeinz9a-hsl, "local currency
found type c, "Existance Flag
end of it_final_vendor.
data: begin of it_final_vendor_temp occurs 0,
rzzlifnr like zzgeinz9a-rzzlifnr, "Vendor
name1 like lfa1-name1, "Vendor Name
belnr like bkpf-belnr, "FI Doc No
bldat like bkpf-bldat, "Document Date
rzz_ebeln like zzgeinz9a-rzz_ebeln, "P.O. Ref No
hsl like zzgeinz9a-hsl, "local currency
due_date like bkpf-bldat, "Due Date
due_days type i, "Due Days
not_due like zzgeinz9a-hsl, "Not Yet Due
buck_0_30 like zzgeinz9a-hsl, "Invoiceamt in localcurr
buck_31_60 like zzgeinz9a-hsl, "Invoiceamt in localcurr
buck_61_90 like zzgeinz9a-hsl, "Invoiceamt in localcurr
buck_91_180 like zzgeinz9a-hsl, "Invoiceamt in localcurr
buck_180 like zzgeinz9a-hsl, "Invoiceamt in localcurr
docnr like zzgeinz9a-DOCNR, "Accounting Doc No
refdocnr like zzgeinz9a-REFDOCNR, "Reference document no
doc_date like bkpf-awkey, "Document Date
found type c, "Existance Flag
end of it_final_vendor_temp.
data: begin of it_final_customer occurs 0,
rzzkunnr like zzgeinz9a-rzzkunnr, "Customer
name1 like kna1-name1, "Customer Name
docnr like zzgeinz9a-DOCNR, "Accounting Doc No
refdocnr like zzgeinz9a-REFDOCNR, "Reference document no
belnr like bkpf-belnr, "FI Doc No
doc_date like bkpf-awkey, "Document Date
zbd1t like bsik-zbd1t, "Cash discount days 1
bldat like bkpf-bldat, "Document Date
due_date like bkpf-bldat, "Due Date
due_days type i, "Due Days
rzz_ebeln like zzgeinz9a-rzz_ebeln, "P.O. Ref No
not_due like zzgeinz9a-hsl, "Not Yet Due
hsl like zzgeinz9a-hsl, "local currency
found type c, "Existance Flag
end of it_final_customer.
data: begin of it_final_customer_temp occurs 0,
rzzkunnr like zzgeinz9a-rzzkunnr, "Customer
name1 like kna1-name1, "Customer Name
belnr like bkpf-belnr, "FI Doc No
bldat like bkpf-bldat, "Document Date
rzz_ebeln like zzgeinz9a-rzz_ebeln, "P.O. Ref No
hsl like zzgeinz9a-hsl, "local currency
due_date like bkpf-bldat, "Due Date
due_days type i, "Due Days
not_due like zzgeinz9a-hsl, "Not Yet Due
buck_0_30 like zzgeinz9a-hsl, "Invoiceamt in localcurr
buck_31_60 like zzgeinz9a-hsl, "Invoiceamt in localcurr
buck_61_90 like zzgeinz9a-hsl, "Invoiceamt in localcurr
buck_91_180 like zzgeinz9a-hsl, "Invoiceamt in localcurr
buck_180 like zzgeinz9a-hsl, "Invoiceamt in localcurr
docnr like zzgeinz9a-DOCNR, "Accounting Doc No
refdocnr like zzgeinz9a-REFDOCNR, "Reference document no
doc_date like bkpf-awkey, "Document Date
found type c, "Existance Flag
end of it_final_customer_temp.
*--Internal Table to hold the Cash discount days 1 for Vendors
data: begin of it_final_bsik occurs 0,
belnr like bsik-belnr,
zbd1t like bsik-zbd1t,
end of it_final_bsik.
*--Internal Table to hold the Cash discount days 1 for Customers
data: begin of it_final_bsid occurs 0,
belnr like bsid-belnr,
zbd1t like bsid-zbd1t,
end of it_final_bsid.
INITIALIZATION
v_repid = sy-repid.
SELECTION SCREEN
selection-screen: begin of block b1 with frame title text-h01.
selection-screen skip.
select-options: s_vendor for zzgeinz9a-rzzlifnr modif id ven.
parameters: p_comp1 like t001-bukrs modif id ven.
parameters: p_rundt1 like bkpf-bldat modif id ven.
select-options: s_cust for zzgeinz9a-rzzkunnr modif id cst.
parameters: p_comp2 like t001-bukrs modif id cst.
parameters: p_rundt2 like bkpf-bldat modif id cst.
selection-screen skip.
selection-screen: begin of block b2 with frame title text-h02.
parameters : p_vendor radiobutton group gr1 default 'X'
user-command test,
p_cust radiobutton group gr1.
selection-screen: end of block b2.
selection-screen: end of block b1.
**************************AT Selection Screen OutPut ******************
at selection-screen output.
loop at screen.
if p_cust = 'X'.
if screen-group1 = 'VEN'.
screen-active = '0'.
screen-input = '0'.
screen-output = '0'.
screen-invisible = '0'.
endif.
elseif p_vendor = 'X'.
if screen-group1 = 'CST'.
screen-active = '0'.
screen-input = '0'.
screen-output = '0'.
screen-invisible = '0'.
endif.
endif.
modify screen.
endloop.
SELECTION SCREEN ON
at selection-screen on s_vendor.
*--Validating Vendor
if not s_vendor[] is initial.
perform validate_s_vendor.
endif.
at selection-screen on s_cust.
*--Validating Customer
if not s_cust[] is initial.
perform validate_s_cust.
endif.
at selection-screen on p_comp1.
*--Validating Company Code.
if not p_comp1 is initial.
perform validate_p_comp1.
endif.
at selection-screen on p_comp2.
*--Validating Company Code.
if not p_comp2 is initial.
perform validate_p_comp2.
endif.
START OF SELECTION
start-of-selection.
if p_vendor = 'X'.
perform get_vendor_data.
elseif p_cust = 'X'.
perform get_customer_data.
endif.
END OF SELECTION
end-of-selection.
if p_vendor = 'X'.
*--Generating the output for vendor
perform generate_field_catalog_vendor.
perform get_events_vendor.
perform generate_layout_vendor.
perform generate_sort_vendor.
perform generate_group_vendor.
perform disp_alv_grid_vendor.
elseif p_cust = 'X'.
*--Generating the output for customer
perform generate_field_catalog_cust.
perform get_events_customer.
perform generate_layout_customer.
perform generate_sort_customer.
perform generate_group_customer.
perform disp_alv_grid_customer.
endif.
*& Form validate_s_vendor
Validating the Vendor
form validate_s_vendor.
select rzzlifnr up to 1 rows
into (zzgeinz9a-rzzlifnr)
from zzgeinz9a
where rzzlifnr in s_vendor.
endselect.
if sy-subrc ne 0.
message e004 with 'Invalid Range of Vendor'(002)
s_vendor-low 'To'(006) s_vendor-high.
endif.
endform. " validate_s_vendor
*& Form validate_s_cust
Validating the Customer
form validate_s_cust.
select rzzkunnr up to 1 rows
into (zzgeinz9a-rzzkunnr)
from zzgeinz9a
where rzzkunnr in s_cust.
endselect.
if sy-subrc ne 0.
message e004 with 'Invalid Range of Customer'(005)
s_cust-low 'To'(006) s_cust-high.
endif.
endform. " validate_s_cust
*& Form validate_p_comp1
Validating the Company Code
form validate_p_comp1.
select single bukrs
into (t001-bukrs)
from t001
where bukrs eq p_comp1.
if sy-subrc ne 0.
message e004 with 'Company Code'(004) p_comp1 'Does not Exists'(003)
endif.
endform. " validate_p_comp1
*& Form validate_p_comp2
Validating the Company Code
form validate_p_comp2.
select single bukrs
into (t001-bukrs)
from t001
where bukrs eq p_comp2.
if sy-subrc ne 0.
message e004 with 'Company Code'(004) p_comp2 'Does not Exists'(003)
endif.
endform. " validate_p_comp2
*& Form get_vendor_data
Getting the Vendor Related Docs
form get_vendor_data.
select a~rzzlifnr
b~name1
a~docnr
a~refdocnr
a~rzz_ebeln
a~hsl
into corresponding fields of table it_final_vendor
from zzgeinz9a as a
inner join lfa1 as b
on arzzlifnr = blifnr
where rzzlifnr in s_vendor
and rbukrs eq p_comp1.
if sy-subrc eq 0.
v_flag = 'X'.
p_year = sy-datum+0(4).
perform get_doc_date using p_comp1
p_year.
perform move_records.
sort it_final_vendor by rzzlifnr.
perform generate_data.
else.
v_flag = space.
endif.
endform. " get_vendor_data
*& Form get_customer_data
Getting the Customer Related Docs
form get_customer_data.
select a~rzzkunnr
b~name1
a~docnr
a~refdocnr
a~rzz_ebeln
a~hsl
into corresponding fields of table it_final_customer
from zzgeinz9a as a
inner join kna1 as b
on arzzkunnr = bkunnr
where rzzkunnr in s_cust
and rbukrs eq p_comp2.
if sy-subrc eq 0.
v_flag = 'X'.
p_year = sy-datum+0(4).
perform get_doc_date_cust using p_comp2
p_year.
perform move_records_cust.
sort it_final_customer by rzzkunnr.
perform generate_data_cust.
else.
v_flag = space.
endif.
endform. " get_customer_data
*& Form get_doc_date
Getting the Document Date and FI Doc No
-->P_P_COMP1 Company Code
-->P_P_YEAR Fiscal Year
form get_doc_date using p_p_comp1
p_p_year.
loop at it_final_vendor.
concatenate it_final_vendor-refdocnr '*' into
it_final_vendor-doc_date.
modify it_final_vendor index sy-tabix.
endloop.
clear it_final_vendor.
data: v_doc_date(11) type c,
v_belnr like bkpf-belnr,
v_bldat like bkpf-bldat.
loop at it_final_vendor.
concatenate it_final_vendor-refdocnr '%' into v_doc_date.
select single belnr
bldat
into corresponding fields of it_final_vendor
from bkpf
where bukrs eq p_p_comp1
and gjahr eq p_p_year
and awkey like v_doc_date.
modify it_final_vendor.
endloop.
clear:it_final_vendor.
endform. " get_doc_date
*& Form move_records
Moving records to final internal table
form move_records.
*--Checking the existance of belnr in bsik
clear it_final_vendor.
select belnr
zbd1t
into table it_final_bsik
from bsik
for all entries in it_final_vendor
where belnr eq it_final_vendor-belnr
and bukrs eq c_bukrs.
clear it_final_bsik.
loop at it_final_vendor.
read table it_final_bsik with key belnr = it_final_vendor-belnr.
if sy-subrc eq 0.
it_final_vendor-zbd1t = it_final_bsik-zbd1t.
it_final_vendor-due_date = it_final_vendor-bldat +
it_final_bsik-zbd1t.
it_final_vendor-found = 'X'.
modify it_final_vendor.
endif.
endloop.
endform. " move_records
*& Form generate_data
Segregating the records based on due_date
form generate_data.
delete it_final_vendor[] where found ne 'X'.
sort it_final_vendor by belnr.
loop at it_final_vendor.
if it_final_vendor-due_date > p_rundt1.
move-corresponding it_final_vendor to it_final_vendor_temp.
move it_final_vendor-hsl to it_final_vendor_temp-not_due.
elseif it_final_vendor-due_date < p_rundt1.
it_final_vendor-due_days = p_rundt1 - it_final_vendor-DUE_DATE.
endif.
*--filling 0-30 bucket.
if it_final_vendor-due_days ge 0 AND it_final_vendor-due_days le 30.
move-corresponding it_final_vendor to it_final_vendor_temp.
move it_final_vendor-hsl to it_final_vendor_temp-buck_0_30.
*--filling 31-60 bucket.
elseif it_final_vendor-due_days ge 31 AND it_final_vendor-due_days le 60
move-corresponding it_final_vendor to it_final_vendor_temp.
move it_final_vendor-hsl to it_final_vendor_temp-buck_31_60.
*--filling 61-90 bucket.
elseif it_final_vendor-due_days ge 61 AND it_final_vendor-due_days le 90
move-corresponding it_final_vendor to it_final_vendor_temp.
move it_final_vendor-hsl to it_final_vendor_temp-buck_61_90.
*--filling 91-180 bucket.
elseif it_final_vendor-due_days ge 91 AND it_final_vendor-due_days
le 180.
move-corresponding it_final_vendor to it_final_vendor_temp.
move it_final_vendor-hsl to it_final_vendor_temp-buck_91_180.
*--filling 180 bucket.
elseif it_final_vendor-due_days gt 180.
move-corresponding it_final_vendor to it_final_vendor_temp.
move it_final_vendor-hsl to it_final_vendor_temp-buck_180.
endif.
append it_final_vendor_temp.
clear it_final_vendor_temp.
endloop.
endform. " generate_data
*& Form DISP_ALV_GRID_VENDOR
Displaying the output in grid For Vendor
form DISP_ALV_GRID_VENDOR.
*--Generating the OUTPUT GRID FOR VENDOR
call function 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
I_INTERFACE_CHECK = ' '
I_BYPASSING_BUFFER =
I_BUFFER_ACTIVE = ' '
I_CALLBACK_PROGRAM = v_repid
I_CALLBACK_PF_STATUS_SET = ' '
I_CALLBACK_USER_COMMAND = ' '
I_CALLBACK_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 = wa_layout
IT_FIELDCAT = i_fldcat_head
IT_EXCLUDING =
IT_SPECIAL_GROUPS = i_group
IT_SORT = it_sort[]
IT_FILTER =
IS_SEL_HIDE =
I_DEFAULT = 'X'
I_SAVE = ' '
IS_VARIANT =
IT_EVENTS = i_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_ADD_FIELDCAT =
IT_HYPERLINK =
I_HTML_HEIGHT_TOP =
I_HTML_HEIGHT_END =
IT_EXCEPT_QINFO =
IMPORTING
E_EXIT_CAUSED_BY_CALLER =
ES_EXIT_CAUSED_BY_USER =
tables
t_outtab = it_final_vendor_temp
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. " DISP_ALV_GRID
*& Form get_doc_date_cust
text
-->P_P_COMP2 Company Code
-->P_P_YEAR Fiscal Year
form get_doc_date_cust using p_p_comp2
p_p_year.
loop at it_final_customer.
concatenate it_final_customer-refdocnr '*' into
it_final_customer-doc_date.
modify it_final_customer index sy-tabix.
endloop.
clear it_final_customer.
data: v_doc_date(11) type c,
v_belnr like bkpf-belnr,
v_bldat like bkpf-bldat.
loop at it_final_customer.
concatenate it_final_customer-refdocnr '%' into v_doc_date.
select single belnr
bldat
into corresponding fields of it_final_customer
from bkpf
where bukrs eq p_p_comp2
and gjahr eq p_p_year
and awkey like v_doc_date.
modify it_final_customer.
endloop.
clear:it_final_customer.
endform. " get_doc_date_cust
*& Form move_records_cust
Moving Customer Data to Final Internal Table
form move_records_cust.
*--Checking the existance of belnr in bsid
select belnr
zbd1t
into table it_final_bsid
from bsid
for all entries in it_final_customer
where belnr eq it_final_customer-belnr
and bukrs eq c_bukrs.
clear it_final_bsid.
loop at it_final_customer.
read table it_final_bsid with key belnr = it_final_customer-belnr.
if sy-subrc eq 0.
it_final_customer-zbd1t = it_final_bsid-zbd1t.
it_final_customer-due_date = it_final_customer-bldat +
it_final_bsid-zbd1t.
it_final_customer-found = 'X'.
modify it_final_customer.
endif.
endloop.
endform. " move_records_cust
*& Form generate_data_cust
Generating the Customer Output
form generate_data_cust.
delete it_final_customer[] where found ne 'X'.
sort it_final_customer by belnr.
loop at it_final_customer.
if it_final_customer-due_date > p_rundt2.
move-corresponding it_final_customer to it_final_customer_temp.
move it_final_customer-hsl to it_final_customer_temp-not_due.
elseif it_final_customer-due_date < p_rundt2.
it_final_customer-due_days = p_rundt2 - it_final_customer-DUE_DATE.
endif.
*--filling 0-30 bucket.
if it_final_customer-due_days ge 0 AND it_final_customer-due_days le 30
move-corresponding it_final_customer to it_final_customer_temp.
move it_final_customer-hsl to it_final_customer_temp-buck_0_30.
*--filling 31-60 bucket.
elseif it_final_customer-due_days ge 31 AND it_final_customer-due_days
le 60
move-corresponding it_final_customer to it_final_customer_temp.
move it_final_customer-hsl to it_final_customer_temp-buck_31_60.
*--filling 61-90 bucket.
elseif it_final_customer-due_days ge 61 AND it_final_customer-due_days
le 90
move-corresponding it_final_customer to it_final_customer_temp.
move it_final_customer-hsl to it_final_customer_temp-buck_61_90.
*--filling 91-180 bucket.
elseif it_final_customer-due_days ge 91 AND
it_final_customer-due_days
le 180.
move-corresponding it_final_customer to it_final_customer_temp.
move it_final_customer-hsl to it_final_customer_temp-buck_91_180.
*--filling 180 bucket.
elseif it_final_customer-due_days gt 180.
move-corresponding it_final_customer to it_final_customer_temp.
move it_final_customer-hsl to it_final_customer_temp-buck_180.
endif.
append it_final_customer_temp.
clear it_final_customer_temp.
endloop.
endform. " generate_data_cust
*& Form generate_field_catalog_vendor
Generating the Field Catalog for Vendor
form generate_field_catalog_vendor.
call function 'REUSE_ALV_FIELDCATALOG_MERGE'
EXPORTING
I_PROGRAM_NAME = v_repid
I_INTERNAL_TABNAME = 'IT_FINAL_VENDOR_TEMP'
I_STRUCTURE_NAME =
I_CLIENT_NEVER_DISPLAY = 'X'
I_INCLNAME = v_repid
I_BYPASSING_BUFFER =
I_BUFFER_ACTIVE =
changing
ct_fieldcat = i_fldcat_head
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.
if not i_fldcat_head[] is initial.
loop at i_fldcat_head into wa_fldcat_head.
case wa_fldcat_head-fieldname.
when 'RZZLIFNR'.
wa_fldcat_head-col_pos = '1'.
wa_fldcat_head-ref_tabname = ' '.
wa_fldcat_head-seltext_m = 'Vendor No'(001).
wa_fldcat_head-ddictxt = 'M'.
wa_fldcat_head-outputlen = '12'.
when 'NAME1'.
wa_fldcat_head-col_pos = '2'.
wa_fldcat_head-seltext_m = 'Vendor Name'(007).
wa_fldcat_head-ddictxt = 'M'.
wa_fldcat_head-outputlen = '35'.
when 'BELNR'.
wa_fldcat_head-col_pos = '3'.
wa_fldcat_head-seltext_m = 'Invoice No'(008).
wa_fldcat_head-ddictxt = 'M'.
wa_fldcat_head-outputlen = '12'.
wa_fldcat_head-KEY = ' '.
when 'BLDAT'.
wa_fldcat_head-col_pos = '4'.
wa_fldcat_head-seltext_m = 'Document Date'(009).
wa_fldcat_head-ddictxt = 'M'.
wa_fldcat_head-outputlen = '13'.
wa_fldcat_head-ref_tabname = ' '.
when 'RZZ_EBELN'.
wa_fldcat_head-col_pos = '5'.
wa_fldcat_head-seltext_m = 'PO.Ref.No'(010).
wa_fldcat_head-ddictxt = 'M'.
wa_fldcat_head-outputlen = '13'.
wa_fldcat_head-ref_tabname = ' '.
when 'HSL'.
wa_fldcat_head-col_pos = '6'.
wa_fldcat_head-seltext_m = 'Invoice Amount'(011).
wa_fldcat_head-ddictxt = 'M'.
wa_fldcat_head-outputlen = '16'.
wa_fldcat_head-do_sum = 'X'.
when 'DUE_DATE'.
wa_fldcat_head-col_pos = '7'.
wa_fldcat_head-seltext_m = 'Due Date'(012).
wa_fldcat_head-ddictxt = 'M'.
wa_fldcat_head-outputlen = '12'.
wa_fldcat_head-ref_tabname = ' '.
when 'DUE_DAYS'.
wa_fldcat_head-col_pos = '8'.
wa_fldcat_head-seltext_m = 'Due Days'(013).
wa_fldcat_head-ddictxt = 'M'.
wa_fldcat_head-outputlen = '9'.
when 'NOT_DUE'.
wa_fldcat_head-col_pos = '9'.
wa_fldcat_head-seltext_m = 'Not Due'(014).
wa_fldcat_head-ddictxt = 'M'.
wa_fldcat_head-outputlen = '16'.
wa_fldcat_head-do_sum = 'X'.
when 'BUCK_0_30'.
wa_fldcat_head-col_pos = '10'.
wa_fldcat_head-seltext_m = '0 To 30'(015).
wa_fldcat_head-ddictxt = 'M'.
wa_fldcat_head-outputlen = '16'.
wa_fldcat_head-do_sum = 'X'.
when 'BUCK_31_60'.
wa_fldcat_head-col_pos = '11'.
wa_fldcat_head-seltext_m = '31 To 60'(016).
wa_fldcat_head-ddictxt = 'M'.
wa_fldcat_head-outputlen = '16'.
wa_fldcat_head-do_sum = 'X'.
when 'BUCK_61_90'.
wa_fldcat_head-col_pos = '12'.
wa_fldcat_head-seltext_m = '61 To 90'(017).
wa_fldcat_head-ddictxt = 'M'.
wa_fldcat_head-outputlen = '16'.
wa_fldcat_head-do_sum = 'X'.
when 'BUCK_91_180'.
wa_fldcat_head-col_pos = '13'.
wa_fldcat_head-seltext_m = '91 To 180'(018).
wa_fldcat_head-ddictxt = 'M'.
wa_fldcat_head-outputlen = '16'.
wa_fldcat_head-do_sum = 'X'.
when 'BUCK_180'.
wa_fldcat_head-col_pos = '14'.
wa_fldcat_head-seltext_m = 'Beyond 180'(019).
wa_fldcat_head-ddictxt = 'M'.
wa_fldcat_head-outputlen = '16'.
wa_fldcat_head-do_sum = 'X'.
when 'DOCNR'.
wa_fldcat_head-no_out = 'X'.
when 'REFDOCNR'.
wa_fldcat_head-no_out = 'X'.
when 'DOC_DATE'.
wa_fldcat_head-no_out = 'X'.
when 'FOUND'.
wa_fldcat_head-no_out = 'X'.
endcase.
modify i_fldcat_head from wa_fldcat_head index sy-tabix.
endloop.
endif.
endform. " generate_field_catalog_vendor
*& Form get_events_vendor
Getting ALV Events
form get_events_vendor.
call function 'REUSE_ALV_EVENTS_GET'
EXPORTING
I_LIST_TYPE = 0
importing
et_events = i_events
exceptions
list_type_wrong = 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.
if not i_events[] is initial.
read table i_events into wa_event with key name = 'TOP_OF_PAGE'(024)
wa_event-form = 'GENERATE_USERCOMMAND'.
modify i_events from wa_event index sy-tabix.
read table i_events into wa_event with key name = 'END_OF_LIST'(025)
wa_event-form = 'GENERATE_USERCOMMAND_FOOTER'.
modify i_events from wa_event index sy-tabix.
endif.
endform. " get_events_vendor
*& Form GENERATE_USERCOMMAND
Displaying Header-Text and Logo on Grid
form generate_usercommand .
clear i_comment[].
wa_comment-typ = 'H'.
wa_comment-info = 'Vendor Ageing Report'(026).
append wa_comment to i_comment.
call function 'REUSE_ALV_COMMENTARY_WRITE'
exporting
it_list_commentary = i_comment
i_logo = 'ENJOYSAP_LOGO'
I_END_OF_LIST_GRID = 'X'
endform. " GENERATE_USERCOMMAND
*& Form GENERATE_USERCOMMAND_FOOTER
Displaying Footer-Text on Grid
form generate_usercommand_footer.
clear i_comment[].
clear wa_comment.
wa_comment-typ = 'S'.
wa_comment-key = 'GE-Betz'(027).
append wa_comment to i_comment.
call function 'REUSE_ALV_COMMENTARY_WRITE'
exporting
it_list_commentary = i_comment
I_LOGO = ''
i_end_of_list_grid = 'X'.
endform. " GENERATE_USERCOMMAND_FOOTER
*& Form generate_layout_vendor
Generating the ALV Layout
form generate_layout_vendor.
WA_LAYOUT-COLWIDTH_OPTIMIZE = 'X'. "OPTIMIZING FIELD WIDTH
wa_layout-zebra = 'X'. "PUTTING ZEBRA COLORS
wa_layout-confirmation_prompt = 'X'. "DISPLAYS CONFIRMATION DIALOG
wa_layout-totals_text = 'Totals'(028). "DISPLAYS TOTALS TEXT
wa_layout-subtotals_text = 'Sub Totals'(029)."DISPLAYS SUBTOTALS TEXT
endform. " generate_layout_vendor
*& Form generate_sort_vendor
Sorting the Internal Table by Vendor
form generate_sort_vendor.
it_sort-fieldname = 'RZZLIFNR'.
it_sort-tabname = 'IT_FINAL_VENDOR_TEMP'.
it_sort-up = 'X'.
it_sort-subtot = 'X'.
append it_sort.
endform. " generate_sort_vendor
*& Form generate_group_vendor
Grouping the Data
form generate_group_vendor.
clear i_group.
wa_group-sp_group = 'A'.
wa_group-text = 'RZZLIFNR'.
append wa_group to i_group.
endform. " generate_group_vendor
*& Form GENERATE_FIELD_CATALOG_CUST
Generating Field Catalog for Customer
form GENERATE_FIELD_CATALOG_CUST.
call function 'REUSE_ALV_FIELDCATALOG_MERGE'
EXPORTING
I_PROGRAM_NAME = v_repid
I_INTERNAL_TABNAME = 'IT_FINAL_CUSTOMER_TEMP'
I_STRUCTURE_NAME =
I_CLIENT_NEVER_DISPLAY = 'X'
I_INCLNAME = v_repid
I_BYPASSING_BUFFER =
I_BUFFER_ACTIVE =
changing
ct_fieldcat = i_fldcat_head
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.
if not i_fldcat_head[] is initial.
loop at i_fldcat_head into wa_fldcat_head.
case wa_fldcat_head-fieldname.
when 'RZZKUNNR'.
wa_fldcat_head-col_pos = '1'.
wa_fldcat_head-ref_tabname = ' '.
wa_fldcat_head-seltext_m = 'Customer No'(020).
wa_fldcat_head-ddictxt = 'M'.
wa_fldcat_head-outputlen = '12'.
when 'NAME1'.
wa_fldcat_head-col_pos = '2'.
wa_fldcat_head-seltext_m = 'Customer Name'(021).
wa_fldcat_head-ddictxt = 'M'.
wa_fldcat_head-outputlen = '35'.
when 'BELNR'.
wa_fldcat_head-col_pos = '3'.
wa_fldcat_head-seltext_m = 'Invoice No'(008).
wa_fldcat_head-ddictxt = 'M'.
wa_fldcat_head-outputlen = '12'.
wa_fldcat_head-KEY = ' '.
when 'BLDAT'.
wa_fldcat_head-col_pos = '4'.
wa_fldcat_head-seltext_m = 'Document Date'(009).
wa_fldcat_head-ddictxt = 'M'.
wa_fldcat_head-outputlen = '13'.
wa_fldcat_head-ref_tabname = ' '.
when 'RZZ_EBELN'.
wa_fldcat_head-col_pos = '5'.
wa_fldcat_head-seltext_m = 'PO.Ref.No'(010).
wa_fldcat_head-ddictxt = 'M'.
wa_fldcat_head-outputlen = '13'.
wa_fldcat_head-ref_tabname = ' '.
when 'HSL'.
wa_fldcat_head-col_pos = '6'.
wa_fldcat_head-seltext_m = 'Invoice Amount'(011).
wa_fldcat_head-ddictxt = 'M'.
wa_fldcat_head-outputlen = '16'.
wa_fldcat_head-do_sum = 'X'.
when 'DUE_DATE'.
wa_fldcat_head-col_pos = '7'.
wa_fldcat_head-seltext_m = 'Due Date'(012).
wa_fldcat_head-ddictxt = 'M'.
wa_fldcat_head-outputlen = '12'.
wa_fldcat_head-ref_tabname = ' '.
when 'DUE_DAYS'.
wa_fldcat_head-col_pos = '8'.
wa_fldcat_head-seltext_m = 'Due Days'(013).
wa_fldcat_head-ddictxt = 'M'.
wa_fldcat_head-outputlen = '9'.
when 'NOT_DUE'.
wa_fldcat_head-col_pos = '9'.
wa_fldcat_head-seltext_m = 'Not Due'(014).
wa_fldcat_head-ddictxt = 'M'.
wa_fldcat_head-outputlen = '16'.
wa_fldcat_head-do_sum = 'X'.
when 'BUCK_0_30'.
wa_fldcat_head-col_pos = '10'.
wa_fldcat_head-seltext_m = '0 To 30'(015).
wa_fldcat_head-ddictxt = 'M'.
wa_fldcat_head-outputlen = '16'.
wa_fldcat_head-do_sum = 'X'.
when 'BUCK_31_60'.
wa_fldcat_head-col_pos = '11'.
wa_fldcat_head-seltext_m = '31 To 60'(016).
wa_fldcat_head-ddictxt = 'M'.
wa_fldcat_head-outputlen = '16'.
wa_fldcat_head-do_sum = 'X'.
when 'BUCK_61_90'.
wa_fldcat_head-col_pos = '12'.
wa_fldcat_head-seltext_m = '61 To 90'(017).
wa_fldcat_head-ddictxt = 'M'.
wa_fldcat_head-outputlen = '16'.
wa_fldcat_head-do_sum = 'X'.
when 'BUCK_91_180'.
wa_fldcat_head-col_pos = '13'.
wa_fldcat_head-seltext_m = '91 To 180'(018).
wa_fldcat_head-ddictxt = 'M'.
wa_fldcat_head-outputlen = '16'.
wa_fldcat_head-do_sum = 'X'.
when 'BUCK_180'.
wa_fldcat_head-col_pos = '14'.
wa_fldcat_head-seltext_m = 'Beyond 180'(019).
wa_fldcat_head-ddictxt = 'M'.
wa_fldcat_head-outputlen = '16'.
wa_fldcat_head-do_sum = 'X'.
when 'DOCNR'.
wa_fldcat_head-no_out = 'X'.
when 'REFDOCNR'.
wa_fldcat_head-no_out = 'X'.
when 'DOC_DATE'.
wa_fldcat_head-no_out = 'X'.
when 'FOUND'.
wa_fldcat_head-no_out = 'X'.
endcase.
modify i_fldcat_head from wa_fldcat_head index sy-tabix.
endloop.
endif.
endform. " GENERATE_FIELD_CATALOG_CUST
*& Form get_events_customer
Getting ALV Events
form get_events_customer.
call function 'REUSE_ALV_EVENTS_GET'
EXPORTING
I_LIST_TYPE = 0
importing
et_events = i_events
exceptions
list_type_wrong = 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.
if not i_events[] is initial.
read table i_events into wa_event with key name = 'TOP_OF_PAGE'(024)
wa_event-form = 'GENERATE_USERCOMMAND_CUST'.
modify i_events from wa_event index sy-tabix.
read table i_events into wa_event with key na -
Hi,
How to increase the field width of a field in ALV report.
I mean, in a ALV report, the field description of a field is not showing correctly. IF i try to extend the field width by the mouse/coursor, it displays the correct description.
IS there any way where for displaying the field description correctly?
Thanks,
KumarHi,
Go through the sample code,
*& Report ZDEMO_ALVLIST *
*& Example of a simple ALV List Report *
*& The basic requirement for this demo is to display a number of *
*& fields from the EKKO table. *
REPORT zdemo_alvlist .
TABLES: ekko.
type-pools: slis. "ALV Declarations
*Data Declaration
TYPES: BEGIN OF t_ekko,
ebeln TYPE ekpo-ebeln,
ebelp TYPE ekpo-ebelp,
statu TYPE ekpo-statu,
aedat TYPE ekpo-aedat,
matnr TYPE ekpo-matnr,
menge TYPE ekpo-menge,
meins TYPE ekpo-meins,
netpr TYPE ekpo-netpr,
peinh TYPE ekpo-peinh,
END OF t_ekko.
DATA: it_ekko TYPE STANDARD TABLE OF t_ekko INITIAL SIZE 0,
wa_ekko TYPE t_ekko.
*ALV data declarations
data: fieldcatalog type slis_t_fieldcat_alv with header line,
gd_tab_group type slis_t_sp_group_alv,
gd_layout type slis_layout_alv,
gd_repid like sy-repid.
*Start-of-selection.
START-OF-SELECTION.
perform data_retrieval.
perform build_fieldcatalog.
perform build_layout.
perform display_alv_report.
*& Form BUILD_FIELDCATALOG
Build Fieldcatalog for ALV Report
form build_fieldcatalog.
There are a number of ways to create a fieldcat.
For the purpose of this example i will build the fieldcatalog manualy
by populating the internal table fields individually and then
appending the rows. This method can be the most time consuming but can
also allow you more control of the final product.
Beware though, you need to ensure that all fields required are
populated. When using some of functionality available via ALV, such as
total. You may need to provide more information than if you were
simply displaying the result
I.e. Field type may be required in-order for
the 'TOTAL' function to work.
fieldcatalog-fieldname = 'EBELN'.
fieldcatalog-seltext_m = 'Purchase Order'.
fieldcatalog-col_pos = 0.
fieldcatalog-outputlen = 10.
fieldcatalog-emphasize = 'X'.
fieldcatalog-key = 'X'.
fieldcatalog-do_sum = 'X'.
fieldcatalog-no_zero = 'X'.
append fieldcatalog to fieldcatalog.
clear fieldcatalog.
fieldcatalog-fieldname = 'EBELP'.
fieldcatalog-seltext_m = 'PO Item'.
fieldcatalog-col_pos = 1.
append fieldcatalog to fieldcatalog.
clear fieldcatalog.
fieldcatalog-fieldname = 'STATU'.
fieldcatalog-seltext_m = 'Status'.
fieldcatalog-col_pos = 2.
append fieldcatalog to fieldcatalog.
clear fieldcatalog.
fieldcatalog-fieldname = 'AEDAT'.
fieldcatalog-seltext_m = 'Item change date'.
fieldcatalog-col_pos = 3.
append fieldcatalog to fieldcatalog.
clear fieldcatalog.
fieldcatalog-fieldname = 'MATNR'.
fieldcatalog-seltext_m = 'Material Number'.
fieldcatalog-col_pos = 4.
append fieldcatalog to fieldcatalog.
clear fieldcatalog.
fieldcatalog-fieldname = 'MENGE'.
fieldcatalog-seltext_m = 'PO quantity'.
fieldcatalog-col_pos = 5.
append fieldcatalog to fieldcatalog.
clear fieldcatalog.
fieldcatalog-fieldname = 'MEINS'.
fieldcatalog-seltext_m = 'Order Unit'.
fieldcatalog-col_pos = 6.
append fieldcatalog to fieldcatalog.
clear fieldcatalog.
fieldcatalog-fieldname = 'NETPR'.
fieldcatalog-seltext_m = 'Net Price'.
fieldcatalog-col_pos = 7.
fieldcatalog-outputlen = 15.
fieldcatalog-datatype = 'CURR'.
append fieldcatalog to fieldcatalog.
clear fieldcatalog.
fieldcatalog-fieldname = 'PEINH'.
fieldcatalog-seltext_m = 'Price Unit'.
fieldcatalog-col_pos = 8.
append fieldcatalog to fieldcatalog.
clear fieldcatalog.
endform. " BUILD_FIELDCATALOG
*& Form BUILD_LAYOUT
Build layout for ALV grid report
form build_layout.
gd_layout-no_input = 'X'.
gd_layout-colwidth_optimize = 'X'.
gd_layout-totals_text = 'Totals'(201).
gd_layout-totals_only = 'X'.
gd_layout-f2code = 'DISP'. "Sets fcode for when double
"click(press f2)
gd_layout-zebra = 'X'.
gd_layout-group_change_edit = 'X'.
gd_layout-header_text = 'helllllo'.
endform. " BUILD_LAYOUT
*& Form DISPLAY_ALV_REPORT
Display report using ALV grid
form display_alv_report.
gd_repid = sy-repid.
call function 'REUSE_ALV_LIST_DISPLAY'
exporting
i_callback_program = gd_repid
i_callback_top_of_page = 'TOP-OF-PAGE' "see FORM
i_callback_user_command = 'USER_COMMAND'
i_grid_title = outtext
is_layout = gd_layout
it_fieldcat = fieldcatalog[]
it_special_groups = gd_tabgroup
IT_EVENTS = GT_XEVENTS
i_save = 'X'
is_variant = z_template
tables
t_outtab = it_ekko
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_ALV_REPORT
*& Form DATA_RETRIEVAL
Retrieve data form EKPO table and populate itab it_ekko
form data_retrieval.
select ebeln ebelp statu aedat matnr menge meins netpr peinh
up to 10 rows
from ekpo
into table it_ekko.
endform. " DATA_RETRIEVAL
Form TOP-OF-PAGE *
ALV Report Header *
Form top-of-page.
*ALV Header declarations
data: t_header type slis_t_listheader,
wa_header type slis_listheader,
t_line like wa_header-info,
ld_lines type i,
ld_linesc(10) type c.
Title
wa_header-typ = 'H'.
wa_header-info = 'EKKO Table Report'.
append wa_header to t_header.
clear wa_header.
Date
wa_header-typ = 'S'.
wa_header-key = 'Date: '.
CONCATENATE sy-datum+6(2) '.'
sy-datum+4(2) '.'
sy-datum(4) INTO wa_header-info. "todays date
append wa_header to t_header.
clear: wa_header.
Total No. of Records Selected
describe table it_ekko lines ld_lines.
ld_linesc = ld_lines.
concatenate 'Total No. of Records Selected: ' ld_linesc
into t_line separated by space.
wa_header-typ = 'A'.
wa_header-info = t_line.
append wa_header to t_header.
clear: wa_header, t_line.
call function 'REUSE_ALV_COMMENTARY_WRITE'
exporting
it_list_commentary = t_header.
i_logo = 'Z_LOGO'.
endform.
Regards,
Raj. -
Sorting not working correctly for date field in alv report
Hi All,
My report displays many rows also containing date type fields of bldat,budat .
When I sort the report selecting field of type bldat budat the sorting is not correct for the year.
Ex:
Invoice doc dat
01-25-2011
01-21-2011
02-02-2011
10-25-2010
11-20-2010
If I use ascending then it is sorted as :
Invoice doc dat
01-21-2011
01-25-2011
02-02-2011
10-20-2010
10-25-2010
Why the sorting is not working correct for year.(2010 records should have been first).
The field wa_tab-bldat is of type char10.
It is populated as wa_tab-bldat = bsak-bldat.
Kindly suggest what can be done.The field wa_tab-bldat is of type char10
Then what it does is correct.
Refer to type datum...it will work -
Regd: Calculation of TOTAL field in ALV report
Hi All,
We have a scenario that we are not getting the total value for numeric fields in ALV report.
Below i have given the code used for it.
G_KEY = 'X'.
G_NOKEY = SPACE.
G_SUM = 'X'.
G_NOSUM = SPACE.
PERFORM BUILD_FIELDCAT USING 'VBELN' G_KEY G_NOSUM.
PERFORM BUILD_FIELDCAT USING 'BLDAT' G_NOKEY G_NOSUM.
PERFORM BUILD_FIELDCAT USING 'VGBEL' G_KEY G_NOSUM.
PERFORM BUILD_FIELDCAT USING 'POSNR' G_KEY G_NOSUM.
PERFORM BUILD_FIELDCAT USING 'MATNR' G_KEY G_NOSUM..
PERFORM BUILD_FIELDCAT USING 'LFIMG' G_NOKEY G_NOSUM.
PERFORM BUILD_FIELDCAT USING 'VRKME' G_NOKEY G_NOSUM.
PERFORM BUILD_FIELDCAT USING 'NETPR' G_NOKEY G_NOSUM.
PERFORM BUILD_FIELDCAT USING 'BRTWR' G_NOKEY G_NOSUM.
PERFORM BUILD_FIELDCAT USING 'VALUE_INR' G_NOKEY G_SUM.
PERFORM BUILD_FIELDCAT USING 'B_DUTY' G_NOKEY G_SUM.
PERFORM BUILD_FIELDCAT USING 'S_TOTAL1' G_NOKEY G_SUM.
PERFORM BUILD_FIELDCAT USING 'CV_DUTY' G_NOKEY G_SUM.
PERFORM BUILD_FIELDCAT USING 'C_CVD' G_NOKEY G_SUM.
PERFORM BUILD_FIELDCAT USING 'S_TOTAL2' G_NOKEY G_SUM.
PERFORM BUILD_FIELDCAT USING 'C_DUTY' G_NOKEY G_SUM.
PERFORM BUILD_FIELDCAT USING 'S_TOTAL3' G_NOKEY G_SUM.
PERFORM BUILD_FIELDCAT USING 'A_DUTY' G_NOKEY G_SUM.
PERFORM BUILD_FIELDCAT USING 'T_DUTY' G_NOKEY G_SUM.
PERFORM BUILD_LAYOUT.
PERFORM BUILD_DISPLAY.
*& Form DISPLAY
text
FORM BUILD_DISPLAY.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
I_INTERFACE_CHECK = ' '
I_BYPASSING_BUFFER = ' '
I_BUFFER_ACTIVE = ' '
I_CALLBACK_PROGRAM = ' '
I_CALLBACK_PF_STATUS_SET = ' '
I_CALLBACK_USER_COMMAND = ' '
I_CALLBACK_TOP_OF_PAGE = ' '
I_CALLBACK_HTML_TOP_OF_PAGE = ' '
I_CALLBACK_HTML_END_OF_LIST = ' '
I_STRUCTURE_NAME =
I_BACKGROUND_ID = ' '
I_GRID_TITLE = TEXT-000
I_GRID_SETTINGS =
IS_LAYOUT = IG_LAYOUT
IT_FIELDCAT = IG_FIELDCAT
IT_EXCLUDING =
IT_SPECIAL_GROUPS =
IT_SORT =
IT_FILTER =
IS_SEL_HIDE =
I_DEFAULT = 'X'
I_SAVE = 'A'
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
I_HTML_HEIGHT_TOP = 0
I_HTML_HEIGHT_END = 0
IT_ALV_GRAPHICS =
IT_HYPERLINK =
IT_ADD_FIELDCAT =
IT_EXCEPT_QINFO =
IR_SALV_FULLSCREEN_ADAPTER =
IMPORTING
E_EXIT_CAUSED_BY_CALLER =
ES_EXIT_CAUSED_BY_USER =
TABLES
T_OUTTAB = IG_INBOUND
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 BUILD_FIELDCAT
text
-->G_FIELDNAME text
-->L_KEY text
-->L_SUM text
FORM BUILD_FIELDCAT USING L_FIELDNAME LIKE DD03L-FIELDNAME L_KEY TYPE C L_SUM TYPE C.
CLEAR WG_FIELDCAT_LN.
ADD 1 TO G_COL_POS.
WG_FIELDCAT_LN-REF_TABNAME = 'IG_INBOUND'.
WG_FIELDCAT_LN-FIELDNAME = L_FIELDNAME.
WG_FIELDCAT_LN-KEY = L_KEY.
WG_FIELDCAT_LN-DO_SUM = L_SUM.
WG_FIELDCAT_LN-COL_POS = G_COL_POS.
WG_FIELDCAT_LN-NO_OUT = SPACE.
WG_FIELDCAT_LN-QFIELDNAME = SPACE.
WG_FIELDCAT_LN-HOTSPOT = SPACE.
APPEND WG_FIELDCAT_LN TO IG_FIELDCAT.
ENDFORM. "BUILD_FIELDCAT
*& Form BUILD_LAYOUT
text
FORM BUILD_LAYOUT.
IG_LAYOUT-TOTALS_TEXT = 'Total Amount'.
*IG_LAYOUT-SUBTOTALS_TEXT = 'A'.
IG_LAYOUT-ZEBRA = 'X'.
ENDFORM.
Help and Sugesstions will be much appreciated.
Thanks & Regds.
Ramesh.This is sample program for the same
REPORT Z_50657_ALV_EX2
NO STANDARD PAGE HEADING
LINE-COUNT 65(3)
LINE-SIZE 220
MESSAGE-ID ZZ.
* Type Pools *
TYPE-POOLS: SLIS, ICON.
* Tables *
TABLES: VBAK. "Sales Document Data
* Internal Tables *
* TABLE TO HOLD DATA OF SALES DOCUMENT
DATA: BEGIN OF IT_VBAK OCCURS 0,
VBELN LIKE VBAK-VBELN, "Sales Document
VBTYP LIKE VBAK-VBTYP, "SD document category
AUDAT LIKE VBAK-AUDAT, "Document date (date received/sent)
AUGRU LIKE VBAK-AUGRU, "Order reason (reason for the business)
AUART LIKE VBAK-AUART, "Sales Document Type
NETWR LIKE VBAK-NETWR, "Net Sales Order in Doc. Currency
WAERK LIKE VBAK-WAERK, "SD document currency
ICON TYPE ICON-ID, "traffic lights
END OF IT_VBAK.
* Work Areas *
*WORK AREAS DEFINED FOR ALV'S
DATA: WA_FIELDCAT TYPE SLIS_FIELDCAT_ALV, "field catalog
IT_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV, "field catalog ITAB
WA_SORT TYPE SLIS_SORTINFO_ALV, "SORT work area
IT_SORT TYPE SLIS_T_SORTINFO_ALV, "SORT ITAB
LAYOUT TYPE SLIS_LAYOUT_ALV, "LAYOUT
WA_FCODE TYPE SLIS_EXTAB, "FUN CODE
I_FCODE_EXTAB TYPE SLIS_T_EXTAB,
WA_EVENTS TYPE SLIS_ALV_EVENT,
IT_EVENTS TYPE SLIS_T_EVENT.
* Selection-Screen *
SELECTION-SCREEN BEGIN OF BLOCK B1 WITH FRAME.
SELECT-OPTIONS: S_VBELN FOR VBAK-VBELN.
PARAMETERS: P_VBTYP LIKE VBAK-VBTYP DEFAULT 'C'.
SELECTION-SCREEN END OF BLOCK B1.
SELECTION-SCREEN BEGIN OF BLOCK B2 WITH FRAME.
PARAMETERS: LIST RADIOBUTTON GROUP G1,
GRID RADIOBUTTON GROUP G1.
SELECTION-SCREEN END OF BLOCK B2.
* At Selection-Screen *
*VALIDATION
* Start of Selection *
START-OF-SELECTION.
*POPULATION OF DATA INTO INTERNAL TABLE ITAB
PERFORM GET_DATA.
*DEFINE USER DEFINED FIELDCATALOG
PERFORM DEFINE_FIELDCATALOG.
*SUBTOTALS AND TOTALS DISPLAY USING SORT
PERFORM SORT_LIST.
*CHANGE FCODE OF STATUS
PERFORM CHANGE_FCODE.
*CHECK RADIOBUTTON OPTION AND ACCORDINGLY FINAL DISPLAY
PERFORM CHECK_OPTION.
*& Form GET_DATA
* text
FORM GET_DATA.
SELECT VBELN
VBTYP
AUDAT
AUGRU
AUART
NETWR
WAERK FROM VBAK INTO TABLE IT_VBAK
WHERE VBELN IN S_VBELN AND VBTYP = P_VBTYP
AND ERDAT > '01.01.2004' AND NETWR > 0.
LOOP AT IT_VBAK.
IF IT_VBAK-NETWR < 10000.
IT_VBAK-ICON = '@08@'.
ELSEIF IT_VBAK-NETWR > 100000.
IT_VBAK-ICON = '@0A@'.
ELSE.
IT_VBAK-ICON = '@09@'.
ENDIF.
MODIFY IT_VBAK INDEX SY-TABIX.
ENDLOOP.
ENDFORM. "GET_DATA
*& Form CHECK_OPTION
* text
FORM CHECK_OPTION.
WA_EVENTS-NAME = 'TOP_OF_PAGE'.
WA_EVENTS-FORM = 'TOP'.
APPEND WA_EVENTS TO IT_EVENTS.
CLEAR WA_EVENTS.
WA_EVENTS-NAME = 'END_OF_LIST'.
WA_EVENTS-FORM = 'END_LIST'.
APPEND WA_EVENTS TO IT_EVENTS.
CLEAR WA_EVENTS.
IF LIST = 'X'.
PERFORM LIST_DISP.
ENDIF.
IF GRID = 'X'.
PERFORM GRID_DISP.
ENDIF.
ENDFORM. "CHECK_OPTION
*& Form DEFINE_FIELDCATALOG
* text
FORM DEFINE_FIELDCATALOG.
WA_FIELDCAT-COL_POS = 1.
WA_FIELDCAT-FIELDNAME = 'ICON'.
WA_FIELDCAT-SELTEXT_L = 'ICON'.
WA_FIELDCAT-ICON = 'X'.
WA_FIELDCAT-OUTPUTLEN = 8.
WA_FIELDCAT-TABNAME = 'IT_VBAK'.
APPEND WA_FIELDCAT TO IT_FIELDCAT.
CLEAR WA_FIELDCAT.
WA_FIELDCAT-COL_POS = 2.
WA_FIELDCAT-FIELDNAME = 'VBELN'.
WA_FIELDCAT-SELTEXT_L = 'SALES DOC NO.'.
WA_FIELDCAT-OUTPUTLEN = 10.
WA_FIELDCAT-TABNAME = 'IT_VBAK'.
APPEND WA_FIELDCAT TO IT_FIELDCAT.
CLEAR WA_FIELDCAT.
WA_FIELDCAT-COL_POS = 3.
WA_FIELDCAT-FIELDNAME = 'AUDAT'.
WA_FIELDCAT-SELTEXT_L = 'CREATED ON'.
WA_FIELDCAT-OUTPUTLEN = 10.
WA_FIELDCAT-TABNAME = 'IT_VBAK'.
APPEND WA_FIELDCAT TO IT_FIELDCAT.
CLEAR WA_FIELDCAT.
WA_FIELDCAT-COL_POS = 4.
WA_FIELDCAT-FIELDNAME = 'VBTYP'.
WA_FIELDCAT-SELTEXT_L = 'CATEGORY'.
WA_FIELDCAT-OUTPUTLEN = 1.
WA_FIELDCAT-TABNAME = 'IT_VBAK'.
APPEND WA_FIELDCAT TO IT_FIELDCAT.
CLEAR WA_FIELDCAT.
WA_FIELDCAT-COL_POS = 6.
WA_FIELDCAT-FIELDNAME = 'AUGRU'.
WA_FIELDCAT-SELTEXT_L = 'REASON'.
WA_FIELDCAT-OUTPUTLEN = 3.
WA_FIELDCAT-TABNAME = 'IT_VBAK'.
APPEND WA_FIELDCAT TO IT_FIELDCAT.
CLEAR WA_FIELDCAT.
WA_FIELDCAT-COL_POS = 5.
WA_FIELDCAT-FIELDNAME = 'AUART'.
WA_FIELDCAT-SELTEXT_L = 'DOC TYPE'.
WA_FIELDCAT-OUTPUTLEN = 4.
WA_FIELDCAT-TABNAME = 'IT_VBAK'.
APPEND WA_FIELDCAT TO IT_FIELDCAT.
CLEAR WA_FIELDCAT.
WA_FIELDCAT-COL_POS = 7.
WA_FIELDCAT-FIELDNAME = 'NETWR'.
WA_FIELDCAT-SELTEXT_L = 'NET VALUE'.
WA_FIELDCAT-OUTPUTLEN = 17.
WA_FIELDCAT-DECIMALS_OUT = 2.
* WA_FIELDCAT-DO_SUM = 'X'.
WA_FIELDCAT-TABNAME = 'IT_VBAK'.
APPEND WA_FIELDCAT TO IT_FIELDCAT.
CLEAR WA_FIELDCAT.
WA_FIELDCAT-COL_POS = 8.
WA_FIELDCAT-FIELDNAME = 'WAERK'.
WA_FIELDCAT-SELTEXT_L = 'UNIT'.
WA_FIELDCAT-OUTPUTLEN = 50.
WA_FIELDCAT-TABNAME = 'IT_VBAK'.
APPEND WA_FIELDCAT TO IT_FIELDCAT.
CLEAR WA_FIELDCAT.
ENDFORM. "DEFINE_FIELDCATALOG
*& Form DEFINE_LAYOUT
* text
FORM DEFINE_LAYOUT.
LAYOUT-ZEBRA = 'X'.
LAYOUT-SUBTOTALS_TEXT = 'SUBTOTAL SUM'.
LAYOUT-WINDOW_TITLEBAR = 'EXERCISE 2'.
LAYOUT-TOTALS_TEXT = 'TOTAL'.
ENDFORM. "DEFINE_LAYOUT
*& Form SORT_LIST
* text
FORM SORT_LIST.
WA_SORT-FIELDNAME = 'VBELN'.
WA_SORT-TABNAME = 'IT_VBAK'.
WA_SORT-SPOS = 1.
WA_SORT-UP = 'X'.
WA_SORT-SUBTOT = 'X'.
APPEND WA_SORT TO IT_SORT.
CLEAR WA_SORT.
WA_SORT-FIELDNAME = 'NETWR'.
WA_SORT-TABNAME = 'IT_VBAK'.
WA_SORT-UP = 'X'.
WA_SORT-SPOS = 2.
WA_SORT-SUBTOT = 'X'.
APPEND WA_SORT TO IT_SORT.
CLEAR WA_SORT.
ENDFORM. "SORT_LIST
*& Form LIST_DISP
* text
FORM LIST_DISP.
PERFORM DEFINE_LAYOUT.
CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'
EXPORTING
I_CALLBACK_PROGRAM = SY-REPID
IT_FIELDCAT = IT_FIELDCAT
IS_LAYOUT = LAYOUT
IT_SORT = IT_SORT
I_CALLBACK_PF_STATUS_SET = 'STATUS'
IT_EXCLUDING = I_FCODE_EXTAB
I_CALLBACK_USER_COMMAND = 'USER_COMMAND'
IT_EVENTS = IT_EVENTS[]
* IMPORTING
* E_EXIT_CAUSED_BY_CALLER =
* ES_EXIT_CAUSED_BY_USER =
TABLES
T_OUTTAB = IT_VBAK
* 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. "LIST_DISP
*& Form GRID_DISP
* text
FORM GRID_DISP.
PERFORM DEFINE_LAYOUT.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
I_CALLBACK_PROGRAM = SY-REPID
IS_LAYOUT = LAYOUT
IT_FIELDCAT = IT_FIELDCAT
IT_SORT = IT_SORT
I_CALLBACK_PF_STATUS_SET = 'STATUS'
IT_EXCLUDING = I_FCODE_EXTAB
I_CALLBACK_USER_COMMAND = 'USER_COMMAND'
IT_EVENTS = IT_EVENTS[]
TABLES
T_OUTTAB = IT_VBAK.
* 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. "GRID_DISP
*& Form STATUS
* text
* -->P_EXTAB text
FORM STATUS USING P_EXTAB TYPE SLIS_T_EXTAB.
SET PF-STATUS 'STATUS' EXCLUDING P_EXTAB.
ENDFORM. "STATUS
*& Form USER_COMMAND
* text
* -->R_UCOMM text
* -->RS_SELFIELD text
FORM USER_COMMAND USING R_UCOMM LIKE SY-UCOMM
RS_SELFIELD TYPE SLIS_SELFIELD.
CASE R_UCOMM.
WHEN 'BACK' OR 'CANC' OR 'EXIT'.
LEAVE TO SCREEN 0.
WHEN '&IC1'.
SET PARAMETER ID 'AUN' FIELD RS_SELFIELD-VALUE.
CALL TRANSACTION 'VA03' AND SKIP FIRST SCREEN.
ENDCASE.
ENDFORM. "USER_COMMAND
*& Form CHANGE_FCODE
* text
FORM CHANGE_FCODE.
WA_FCODE = 'PRNT'.
APPEND WA_FCODE TO I_FCODE_EXTAB.
WA_FCODE = '&OAD'.
APPEND WA_FCODE TO I_FCODE_EXTAB.
WA_FCODE = '&AVE'.
APPEND WA_FCODE TO I_FCODE_EXTAB.
WA_FCODE = '&EB9'.
APPEND WA_FCODE TO I_FCODE_EXTAB.
WA_FCODE = '&SUM'.
APPEND WA_FCODE TO I_FCODE_EXTAB.
WA_FCODE = '&UMC'.
APPEND WA_FCODE TO I_FCODE_EXTAB.
WA_FCODE = '&XPA'.
APPEND WA_FCODE TO I_FCODE_EXTAB.
WA_FCODE = '&OMP'.
APPEND WA_FCODE TO I_FCODE_EXTAB.
ENDFORM. "CHANGE_FCODE
*& Form TOP
* text
FORM TOP.
IF LIST = 'X'.
WRITE:/ SY-ULINE.
WRITE:/ 'DATE:', SY-DATUM,55 'INTELLIGROUP ASIA PVT LTD'.
WRITE:/ 'TIME:', SY-UZEIT.
WRITE:/ 'USER NAME:', SY-UNAME,60 SY-TITLE.
WRITE:/ 'PAGE', SY-PAGNO.
WRITE:/ SY-ULINE.
ENDIF.
IF GRID = 'X'.
DATA: LS_LINE TYPE SLIS_LISTHEADER,
E04_LT_TOP_OF_PAGE TYPE SLIS_T_LISTHEADER.
* Listenüberschrift: Typ H
CLEAR LS_LINE.
LS_LINE-TYP = 'H'.
* LS_LINE-KEY: not used for this type
LS_LINE-INFO = 'Summary'.
APPEND LS_LINE TO E04_LT_TOP_OF_PAGE.
* Kopfinfo: Typ S
CLEAR LS_LINE.
LS_LINE-TYP = 'S'.
LS_LINE-KEY = 'Intelligroup'.
LS_LINE-INFO = ''.
APPEND LS_LINE TO E04_LT_TOP_OF_PAGE.
LS_LINE-KEY = 'ASIA'.
LS_LINE-INFO = 'PVT LTD'.
APPEND LS_LINE TO E04_LT_TOP_OF_PAGE.
* Aktionsinfo: Typ A
CLEAR LS_LINE.
LS_LINE-TYP = 'A'.
* LS_LINE-KEY: not used for this type
LS_LINE-INFO = 'truman'.
APPEND LS_LINE TO E04_LT_TOP_OF_PAGE.
CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
EXPORTING
IT_LIST_COMMENTARY = E04_LT_TOP_OF_PAGE
I_LOGO = 'ENJOY_SAP_LOGO'.
ENDIF.
ENDFORM. "TOP
*& Form END_LIST
* text
FORM END_LIST.
IF LIST = 'X'.
SKIP 2.
WRITE:/60 'END OF PAGE'.
ENDIF.
IF GRID = 'X'.
DATA: LS_LINE TYPE SLIS_LISTHEADER,
E04_LT_END_OF_LIST TYPE SLIS_T_LISTHEADER.
* Listenüberschrift: Typ H
CLEAR LS_LINE.
LS_LINE-TYP = 'H'.
* LS_LINE-KEY: not used for this type
LS_LINE-INFO = 'Summary'.
APPEND LS_LINE TO E04_LT_END_OF_LIST.
* Kopfinfo: Typ S
CLEAR LS_LINE.
LS_LINE-TYP = 'S'.
LS_LINE-KEY = 'Intelligroup'.
LS_LINE-INFO = ''.
APPEND LS_LINE TO E04_LT_END_OF_LIST.
LS_LINE-KEY = 'ASIA'.
LS_LINE-INFO = 'PVT LTD'.
APPEND LS_LINE TO E04_LT_END_OF_LIST.
* Aktionsinfo: Typ A
CLEAR LS_LINE.
LS_LINE-TYP = 'A'.
* LS_LINE-KEY: not used for this type
LS_LINE-INFO = TEXT-105.
APPEND LS_LINE TO E04_LT_END_OF_LIST.
CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
EXPORTING
IT_LIST_COMMENTARY = E04_LT_END_OF_LIST.
ENDIF.
ENDFORM. "END_LIST -
Double click on field in ALV Report
hi everyone
i have written a program which displays data in an alv grid report, now i need to extend my program a bit more.
when i double click on any field value the corresponding record should be displayed
can anyone suggest if i need to call any fn module for this, if so wht's the fn module
if anyone can give an example that would be fine
Cheers,
ramaHi,
*& Report Z_REPORTFROMKNA1ANDT005T
REPORT Z_REPORTFROMKNA1ANDT005T
LINE-SIZE 180
MESSAGE-ID ZZ.
TABLES:EKKO.
TYPE-POOLS : SLIS.
Internal table for ALV
DATA : IT_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV, "Field catalog
WA_FIELDCAT TYPE SLIS_FIELDCAT_ALV, "WA for Field catalog
IT_EVENT TYPE SLIS_T_EVENT, "events
WA_EVENT TYPE SLIS_ALV_EVENT, "WA for events
IT_COMMENT TYPE SLIS_T_LISTHEADER, "Header details
WA_COMMENT TYPE SLIS_LISTHEADER, "WA for header details
WA_LAYOUT TYPE SLIS_LAYOUT_ALV, "Layout
IT_SORT TYPE SLIS_T_SORTINFO_ALV, "Sort table
WA_SORT TYPE SLIS_SORTINFO_ALV, "WA for sort table
IT_KEYINFO TYPE SLIS_KEYINFO_ALV. "Pass key value
DATA : V_REPID LIKE SY-REPID.
V_REPID = SY-REPID.
DATA : V_DATE LIKE SY-DATUM.
color management.
DATA : IT_COLOR TYPE TABLE OF LVC_S_SCOL. "Color management.
Internal table declearation
DATA:BEGIN OF IT_EKKO OCCURS 0,
EBELN LIKE EKKO-EBELN,
BUKRS LIKE EKKO-BUKRS,
AEDAT LIKE EKKO-AEDAT,
END OF IT_EKKO.
DATA : BEGIN OF IT_EKPO OCCURS 0,
EBELN LIKE EKPO-EBELN,
EBELP LIKE EKPO-EBELP,
MATNR LIKE EKPO-MATNR,
MENGE LIKE EKPO-MENGE,
MEINS LIKE EKPO-MEINS,
NETPR LIKE EKPO-NETPR,
NETWR LIKE EKPO-MENGE,
chk(1) type c,
END OF IT_EKPO.
DATA : BEGIN OF IT_EKBE OCCURS 0,
EBELN LIKE EKBE-EBELN,
EBELP LIKE EKBE-EBELP,
BELNR LIKE EKBE-BELNR,
MENGE LIKE EKBE-MENGE,
MATNR LIKE EKBE-MATNR,
END OF IT_EKBE.
DATA : BEGIN OF IT_FINAL OCCURS 0,
EBELN LIKE EKPO-EBELN,
EBELP LIKE EKPO-EBELP,
MATNR LIKE EKPO-MATNR,
MENGE LIKE EKPO-MENGE,
MEINS LIKE EKPO-MEINS,
NETPR LIKE EKPO-NETPR,
NETWR LIKE EKPO-NETWR,
LINE_COLOR(4) TYPE C, "Used to store row color attributes
END OF IT_FINAL.
SELECTION-SCREEN BEGIN OF BLOCK BLK WITH FRAME TITLE TEXT-001.
SELECT-OPTIONS:S_EBELN FOR EKKO-EBELN.
PARAMETERS : RB1 RADIOBUTTON GROUP G1 MODIF ID Z1,
RB2 RADIOBUTTON GROUP G1 MODIF ID Z2,
RB3 RADIOBUTTON GROUP G1 MODIF ID Z3.
SELECTION-SCREEN END OF BLOCK BLK.
AT SELECTION-SCREEN OUTPUT.
PERFORM MODIFY_SCREEN.
START-OF-SELECTION.
PERFORM GET_DETAILS.
PERFORM GET_ALV.
*& Form modify_screen
text
--> p1 text
<-- p2 text
FORM MODIFY_SCREEN .
IF RB1 = 'X'.
LOOP AT SCREEN.
IF SCREEN-GROUP1 = 'Z1' .
SCREEN-INVISIBLE = 1.
SCREEN-ACTIVE = 0.
ELSE.
SCREEN-INVISIBLE = 0.
SCREEN-ACTIVE = 1.
ENDIF.
MODIFY SCREEN.
ENDLOOP.
ENDIF.
ENDFORM. " modify_screen
*& Form GET_DETAILS
Get the details
FORM GET_DETAILS .
DATA: LD_COLOR(1) TYPE C.
SELECT EBELN
BUKRS
AEDAT
FROM EKKO
INTO TABLE IT_EKKO
WHERE EBELN IN S_EBELN.
IF SY-SUBRC = 0.
SORT IT_EKKO BY EBELN.
ELSE.
MESSAGE E000 WITH 'DATA NOT FOUND'.
ENDIF.
IF NOT IT_EKKO[] IS INITIAL.
SELECT EBELN
EBELP
MATNR
MENGE
MEINS
NETPR
NETWR
chk
FROM EKPO
INTO TABLE IT_EKPO
FOR ALL ENTRIES IN IT_EKKO
WHERE EBELN = IT_EKKO-EBELN.
IF SY-SUBRC = 0.
SORT IT_EKPO BY EBELN.
ENDIF.
ENDIF.
LOOP AT IT_EKPO.
IT_FINAL-EBELN = IT_EKPO-EBELN.
IT_FINAL-EBELP = IT_EKPO-EBELP.
IT_FINAL-MATNR = IT_EKPO-MATNR.
IT_FINAL-MENGE = IT_EKPO-MENGE.
IT_FINAL-MEINS = IT_EKPO-MEINS.
IT_FINAL-NETPR = IT_EKPO-NETPR.
IT_FINAL-NETWR = IT_EKPO-NETWR.
ON CHANGE OF IT_FINAL-EBELN.
LD_COLOR = 7.
CONCATENATE 'C' LD_COLOR '10' INTO IT_FINAL-LINE_COLOR.
ENDON.
APPEND IT_FINAL.
CLEAR IT_FINAL.
ENDLOOP.
ENDFORM. " GET_DETAILS
*& Form GET_ALV
text
FORM GET_ALV .
PERFORM GENERATE_FIELDCAT.
PERFORM GENERATE_LAYOUT.
PERFORM GENERATE_EVENTS.
PERFORM GENERATE_SORT.
PERFORM ALV_GRID_DISPLAY.
ENDFORM. " GET_ALV
*& Form GENERATE_FIELDCAT
Field catalog
FORM GENERATE_FIELDCAT .
IF RB1 = 'X' OR RB2 = 'X'.
WA_FIELDCAT-FIELDNAME = 'EBELN'.
WA_FIELDCAT-COL_POS = '1'.
WA_FIELDCAT-JUST = 'R'.
WA_FIELDCAT-SELTEXT_L = 'PO Number'.
WA_FIELDCAT-LOWERCASE = 'X'.
WA_FIELDCAT-DO_SUM = 'X'.
APPEND WA_FIELDCAT TO IT_FIELDCAT.
WA_FIELDCAT-FIELDNAME = 'EBELP'.
WA_FIELDCAT-COL_POS = '2'.
WA_FIELDCAT-JUST = 'C'.
WA_FIELDCAT-SELTEXT_L = 'Item Number'.
WA_FIELDCAT-LOWERCASE = 'X'.
WA_FIELDCAT-edit = 'X'.
APPEND WA_FIELDCAT TO IT_FIELDCAT.
WA_FIELDCAT-FIELDNAME = 'MATNR'.
WA_FIELDCAT-COL_POS = '3'.
WA_FIELDCAT-JUST = 'C'.
WA_FIELDCAT-SELTEXT_L = 'Material Number'.
WA_FIELDCAT-LOWERCASE = 'X'.
APPEND WA_FIELDCAT TO IT_FIELDCAT.
WA_FIELDCAT-FIELDNAME = 'MENGE'.
WA_FIELDCAT-COL_POS = '4'.
WA_FIELDCAT-JUST = 'C'.
WA_FIELDCAT-SELTEXT_L = 'PO Quantity'.
WA_FIELDCAT-LOWERCASE = 'X'.
APPEND WA_FIELDCAT TO IT_FIELDCAT.
WA_FIELDCAT-FIELDNAME = 'MEINS'.
WA_FIELDCAT-COL_POS = '5'.
WA_FIELDCAT-JUST = 'C'.
WA_FIELDCAT-SELTEXT_L = 'Order unit'.
WA_FIELDCAT-LOWERCASE = 'X'.
APPEND WA_FIELDCAT TO IT_FIELDCAT.
WA_FIELDCAT-FIELDNAME = 'NETPR'.
WA_FIELDCAT-COL_POS = '6'.
WA_FIELDCAT-JUST = 'C'.
WA_FIELDCAT-SELTEXT_L = 'Net price'.
WA_FIELDCAT-LOWERCASE = 'X'.
APPEND WA_FIELDCAT TO IT_FIELDCAT.
WA_FIELDCAT-FIELDNAME = 'NETWR'.
WA_FIELDCAT-COL_POS = '7'.
WA_FIELDCAT-JUST = 'C'.
WA_FIELDCAT-SELTEXT_L = 'Net order value'.
WA_FIELDCAT-LOWERCASE = 'X'.
APPEND WA_FIELDCAT TO IT_FIELDCAT.
wa_fieldcat-fieldname = 'CHK'.
wa_fieldcat-col_pos = '8'.
wa_fieldcat-just = 'C'.
wa_fieldcat-seltext_l = 'Check Box'.
wa_fieldcat-lowercase = 'X'.
wa_fieldcat-checkbox = 'X'.
wa_fieldcat-edit = 'X'.
append wa_fieldcat to it_fieldcat.
ELSE.
CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
EXPORTING
I_PROGRAM_NAME = V_REPID
I_INTERNAL_TABNAME = 'IT_EKKO'
I_STRUCTURE_NAME = I_STRUCTURE_NAME
I_CLIENT_NEVER_DISPLAY = 'X'
I_INCLNAME = V_REPID
I_BYPASSING_BUFFER = I_BYPASSING_BUFFER
I_BUFFER_ACTIVE = I_BUFFER_ACTIVE
CHANGING
CT_FIELDCAT = IT_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.
CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
EXPORTING
I_PROGRAM_NAME = V_REPID
I_INTERNAL_TABNAME = 'IT_EKPO'
I_STRUCTURE_NAME = I_STRUCTURE_NAME
I_CLIENT_NEVER_DISPLAY = 'X'
I_INCLNAME = V_REPID
I_BYPASSING_BUFFER = I_BYPASSING_BUFFER
I_BUFFER_ACTIVE = I_BUFFER_ACTIVE
CHANGING
CT_FIELDCAT = IT_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.
ENDIF.
ENDFORM. " GENERATE_FIELDCAT
*& Form GENERATE_EVENTS
Generate Events
FORM GENERATE_EVENTS .
CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
IMPORTING
ET_EVENTS = IT_EVENT
EXCEPTIONS
LIST_TYPE_WRONG = 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.
IF NOT IT_EVENT[] IS INITIAL.
READ TABLE IT_EVENT INTO WA_EVENT WITH KEY NAME = 'TOP_OF_PAGE'.
IF SY-SUBRC = 0.
WA_EVENT-FORM = 'TOP_OF_PAGE'.
MODIFY IT_EVENT FROM WA_EVENT INDEX SY-TABIX.
ENDIF.
<b> READ TABLE IT_EVENT INTO WA_EVENT WITH KEY NAME = 'USER_COMMAND'.
IF SY-SUBRC = 0.
WA_EVENT-FORM = 'IT_USER_COMMAND'.
MODIFY IT_EVENT FROM WA_EVENT INDEX SY-TABIX.
ENDIF.</b>
ENDIF.
ENDFORM. " GENERATE_EVENTS
*& Form TOP_OF_PAGE
TOP_OF_PAGE
FORM TOP_OF_PAGE.
DATA : V_CONCATE(50) TYPE C.
DATA : V_SPACE(10) TYPE C.
CONCATENATE 'VIKRANTH' 'RAJESH' INTO V_CONCATE.
WA_COMMENT-TYP = 'S'.
WA_COMMENT-KEY = 'USER :'.
WA_COMMENT-INFO = V_CONCATE.
APPEND WA_COMMENT TO IT_COMMENT.
WA_COMMENT-TYP = 'S'.
WA_COMMENT-KEY = 'DATE:'.
WA_COMMENT-INFO = SY-DATUM.
APPEND WA_COMMENT TO IT_COMMENT.
WA_COMMENT-TYP = 'S'.
WA_COMMENT-KEY = 'TIME:'.
WA_COMMENT-INFO = SY-TIMLO.
APPEND WA_COMMENT TO IT_COMMENT.
CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
EXPORTING
IT_LIST_COMMENTARY = IT_COMMENT.
CLEAR IT_COMMENT.
ENDFORM. "TOP_OF_PAGE
*& Form ALV_GRID_DISPLAY
Grid display
FORM ALV_GRID_DISPLAY .
IF RB1 = 'X'.
PERFORM GRID_DISPLAY.
ELSEIF RB2 = 'X'.
PERFORM LIST_DISPLAY.
ELSE.
PERFORM HIERSEQ_DISPLAY.
ENDIF.
ENDFORM. " ALV_GRID_DISPLAY
*& Form GENERATE_LAYOUT
LAYOUT
FORM GENERATE_LAYOUT .
WA_LAYOUT-COLWIDTH_OPTIMIZE = 'X'. "OPTIMIZING FIELD WIDTH
WA_LAYOUT-ZEBRA = 'X'. "PUTTING ZEBRA COLORS
WA_LAYOUT-TOTALS_TEXT = 'Total'.
WA_LAYOUT-SUBTOTALS_TEXT = 'SUB TOTAL'.
WA_LAYOUT-INFO_FIELDNAME = 'LINE_COLOR'.
ENDFORM. " GENERATE_LAYOUT
*& Form GENERATE_SORT
SORT
FORM GENERATE_SORT .
WA_SORT-FIELDNAME = 'EBELN'.
WA_SORT-SPOS = '1'.
WA_SORT-UP = 'X'.
WA_SORT-SUBTOT = 'X'.
APPEND WA_SORT TO IT_SORT.
ENDFORM. " GENERATE_SORT
*& Form GRID_DISPLAY
GRID DISPLAY
FORM GRID_DISPLAY .
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
I_INTERFACE_CHECK = ' '
I_BYPASSING_BUFFER = ' '
I_BUFFER_ACTIVE = ' '
I_CALLBACK_PROGRAM = V_REPID
I_CALLBACK_PF_STATUS_SET = ' '
I_CALLBACK_USER_COMMAND = 'IT_USER_COMMAND'
I_CALLBACK_TOP_OF_PAGE = ' '
I_CALLBACK_HTML_TOP_OF_PAGE = ' '
I_CALLBACK_HTML_END_OF_LIST = ' '
I_STRUCTURE_NAME =
I_BACKGROUND_ID = ' '
I_GRID_TITLE = 'Purchase Order Details'
I_GRID_SETTINGS = I_GRID_SETTINGS
IS_LAYOUT = WA_LAYOUT
IT_FIELDCAT = IT_FIELDCAT
IT_EXCLUDING = IT_EXCLUDING
IT_SPECIAL_GROUPS = IT_SPECIAL_GROUPS
IT_SORT = IT_SORT
IT_FILTER = IT_FILTER
IS_SEL_HIDE = IS_SEL_HIDE
I_DEFAULT = 'X'
I_SAVE = ' '
IS_VARIANT = IS_VARIANT
IT_EVENTS = IT_EVENT
IT_EVENT_EXIT = IT_EVENT_EXIT
IS_PRINT = IS_PRINT
IS_REPREP_ID = IS_REPREP_ID
I_SCREEN_START_COLUMN = 0
I_SCREEN_START_LINE = 0
I_SCREEN_END_COLUMN = 0
I_SCREEN_END_LINE = 0
I_HTML_HEIGHT_TOP = 0
I_HTML_HEIGHT_END = 0
IT_ALV_GRAPHICS = IT_ALV_GRAPHICS
IT_HYPERLINK = IT_HYPERLINK
IT_ADD_FIELDCAT = IT_ADD_FIELDCAT
IT_EXCEPT_QINFO = IT_EXCEPT_QINFO
IR_SALV_FULLSCREEN_ADAPTER = IR_SALV_FULLSCREEN_ADAPTER
IMPORTING
E_EXIT_CAUSED_BY_CALLER = E_EXIT_CAUSED_BY_CALLER
ES_EXIT_CAUSED_BY_USER = ES_EXIT_CAUSED_BY_USER
TABLES
T_OUTTAB = IT_FINAL
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. " GRID_DISPLAY
*& Form LIST_DISPLAY
LIST DISPLAY
FORM LIST_DISPLAY .
CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'
EXPORTING
I_INTERFACE_CHECK = ' '
I_BYPASSING_BUFFER = I_BYPASSING_BUFFER
I_BUFFER_ACTIVE = ' '
I_CALLBACK_PROGRAM = V_REPID
I_CALLBACK_PF_STATUS_SET = ' '
<b> I_CALLBACK_USER_COMMAND = 'IT_USER_COMMAND'</b>
I_STRUCTURE_NAME = I_STRUCTURE_NAME
IS_LAYOUT = WA_LAYOUT
IT_FIELDCAT = IT_FIELDCAT
IT_EXCLUDING = IT_EXCLUDING
IT_SPECIAL_GROUPS = IT_SPECIAL_GROUPS
IT_SORT = IT_SORT
IT_FILTER = IT_FILTER
IS_SEL_HIDE = IS_SEL_HIDE
I_DEFAULT = 'X'
I_SAVE = ' '
IS_VARIANT = IS_VARIANT
IT_EVENTS = IT_EVENT
IT_EVENT_EXIT = IT_EVENT_EXIT
IS_PRINT = IS_PRINT
IS_REPREP_ID = IS_REPREP_ID
I_SCREEN_START_COLUMN = 0
I_SCREEN_START_LINE = 0
I_SCREEN_END_COLUMN = 0
I_SCREEN_END_LINE = 0
IR_SALV_LIST_ADAPTER = IR_SALV_LIST_ADAPTER
IT_EXCEPT_QINFO = IT_EXCEPT_QINFO
I_SUPPRESS_EMPTY_DATA = ABAP_FALSE
IMPORTING
E_EXIT_CAUSED_BY_CALLER = E_EXIT_CAUSED_BY_CALLER
ES_EXIT_CAUSED_BY_USER = ES_EXIT_CAUSED_BY_USER
TABLES
T_OUTTAB = IT_FINAL
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. " LIST_DISPLAY
*& Form HIERSEQ_DISPLAY
HIERSEQ DISPLAY
FORM HIERSEQ_DISPLAY .
IT_KEYINFO-HEADER01 = 'EBELN'.
IT_KEYINFO-ITEM01 = 'EBELN'.
CALL FUNCTION 'REUSE_ALV_HIERSEQ_LIST_DISPLAY'
EXPORTING
I_INTERFACE_CHECK = ' '
I_CALLBACK_PROGRAM = V_REPID
I_CALLBACK_PF_STATUS_SET = ' '
I_CALLBACK_USER_COMMAND = ' '
IS_LAYOUT = WA_LAYOUT
IT_FIELDCAT = IT_FIELDCAT
IT_EXCLUDING = IT_EXCLUDING
IT_SPECIAL_GROUPS = IT_SPECIAL_GROUPS
IT_SORT = IT_SORT
IT_FILTER = IT_FILTER
IS_SEL_HIDE = IS_SEL_HIDE
I_SCREEN_START_COLUMN = 0
I_SCREEN_START_LINE = 0
I_SCREEN_END_COLUMN = 0
I_SCREEN_END_LINE = 0
I_DEFAULT = 'X'
I_SAVE = ' '
IS_VARIANT = IS_VARIANT
IT_EVENTS = IT_EVENT
IT_EVENT_EXIT = IT_EVENT_EXIT
I_TABNAME_HEADER = 'IT_EKKO'
I_TABNAME_ITEM = 'IT_EKPO'
I_STRUCTURE_NAME_HEADER = I_STRUCTURE_NAME_HEADER
I_STRUCTURE_NAME_ITEM = I_STRUCTURE_NAME_ITEM
IS_KEYINFO = IT_KEYINFO
IS_PRINT = IS_PRINT
IS_REPREP_ID = IS_REPREP_ID
I_BYPASSING_BUFFER = I_BYPASSING_BUFFER
I_BUFFER_ACTIVE = I_BUFFER_ACTIVE
IR_SALV_HIERSEQ_ADAPTER = IR_SALV_HIERSEQ_ADAPTER
IT_EXCEPT_QINFO = IT_EXCEPT_QINFO
I_SUPPRESS_EMPTY_DATA = ABAP_FALSE
IMPORTING
E_EXIT_CAUSED_BY_CALLER = E_EXIT_CAUSED_BY_CALLER
ES_EXIT_CAUSED_BY_USER = ES_EXIT_CAUSED_BY_USER
TABLES
T_OUTTAB_HEADER = IT_EKKO
T_OUTTAB_ITEM = IT_EKPO
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. " HIERSEQ_DISPLAY
<b>
*& Form IT_USER_COMMAND
text
FORM IT_USER_COMMAND USING R_UCOMM LIKE SY-UCOMM
RS_SELFIELD TYPE SLIS_SELFIELD.
FREE IT_FIELDCAT.
CASE R_UCOMM.
WHEN '&IC1'.
READ TABLE IT_FINAL INDEX RS_SELFIELD-TABINDEX.
PERFORM GET_EKBE.
PERFORM GET_FIELD_CATALOG.
PERFORM GET_LIST.
ENDCASE.
ENDFORM. "IT_USER_COMMAND</b>
*& Form GET_EKBE
text
FORM GET_EKBE .
IF NOT IT_FINAL[] IS INITIAL.
SELECT EBELN
EBELP
BELNR
MENGE
MATNR
INTO TABLE IT_EKBE
FROM EKBE
FOR ALL ENTRIES IN IT_FINAL
WHERE EBELN = IT_FINAL-EBELN
AND EBELP = IT_FINAL-EBELP.
ENDIF.
ENDFORM. " GET_EKBE
*& Form GET_FIELD_CATALOG
text
FORM GET_FIELD_CATALOG .
WA_FIELDCAT-FIELDNAME = 'EBELN'.
WA_FIELDCAT-COL_POS = '1'.
WA_FIELDCAT-JUST = 'R'.
WA_FIELDCAT-SELTEXT_L = 'PO Number'.
WA_FIELDCAT-LOWERCASE = 'X'.
WA_FIELDCAT-DO_SUM = 'X'.
APPEND WA_FIELDCAT TO IT_FIELDCAT.
WA_FIELDCAT-FIELDNAME = 'EBELP'.
WA_FIELDCAT-COL_POS = '2'.
WA_FIELDCAT-JUST = 'R'.
WA_FIELDCAT-SELTEXT_L = 'Item Number'.
WA_FIELDCAT-LOWERCASE = 'X'.
WA_FIELDCAT-DO_SUM = 'X'.
APPEND WA_FIELDCAT TO IT_FIELDCAT.
WA_FIELDCAT-FIELDNAME = 'BELNR'.
WA_FIELDCAT-COL_POS = '3'.
WA_FIELDCAT-JUST = 'R'.
WA_FIELDCAT-SELTEXT_L = 'Material Document'.
WA_FIELDCAT-LOWERCASE = 'X'.
WA_FIELDCAT-DO_SUM = 'X'.
APPEND WA_FIELDCAT TO IT_FIELDCAT.
WA_FIELDCAT-FIELDNAME = 'MENGE'.
WA_FIELDCAT-COL_POS = '4'.
WA_FIELDCAT-JUST = 'R'.
WA_FIELDCAT-SELTEXT_L = 'Quantity'.
WA_FIELDCAT-LOWERCASE = 'X'.
WA_FIELDCAT-DO_SUM = 'X'.
APPEND WA_FIELDCAT TO IT_FIELDCAT.
WA_FIELDCAT-FIELDNAME = 'MATNR'.
WA_FIELDCAT-COL_POS = '5'.
WA_FIELDCAT-JUST = 'R'.
WA_FIELDCAT-SELTEXT_L = 'Material Number'.
WA_FIELDCAT-LOWERCASE = 'X'.
WA_FIELDCAT-DO_SUM = 'X'.
APPEND WA_FIELDCAT TO IT_FIELDCAT.
ENDFORM. " GET_FIELD_CATALOG
*& Form get_list
text
FORM GET_LIST .
IF RB1 = 'X'.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
I_INTERFACE_CHECK = ' '
I_BYPASSING_BUFFER = ' '
I_BUFFER_ACTIVE = ' '
I_CALLBACK_PROGRAM = V_REPID
I_CALLBACK_PF_STATUS_SET = ' '
I_CALLBACK_USER_COMMAND = ' '
I_CALLBACK_TOP_OF_PAGE = ' '
I_CALLBACK_HTML_TOP_OF_PAGE = ' '
I_CALLBACK_HTML_END_OF_LIST = ' '
I_STRUCTURE_NAME = I_STRUCTURE_NAME
I_BACKGROUND_ID = ' '
I_GRID_TITLE = 'SECONDARY LIST'
I_GRID_SETTINGS = I_GRID_SETTINGS
IS_LAYOUT = IS_LAYOUT
IT_FIELDCAT = IT_FIELDCAT
IT_EXCLUDING = IT_EXCLUDING
IT_SPECIAL_GROUPS = IT_SPECIAL_GROUPS
IT_SORT = IT_SORT
IT_FILTER = IT_FILTER
IS_SEL_HIDE = IS_SEL_HIDE
I_DEFAULT = 'X'
I_SAVE = ' '
IS_VARIANT = IS_VARIANT
IT_EVENTS = IT_EVENTS
IT_EVENT_EXIT = IT_EVENT_EXIT
IS_PRINT = IS_PRINT
IS_REPREP_ID = IS_REPREP_ID
I_SCREEN_START_COLUMN = 0
I_SCREEN_START_LINE = 0
I_SCREEN_END_COLUMN = 0
I_SCREEN_END_LINE = 0
I_HTML_HEIGHT_TOP = 0
I_HTML_HEIGHT_END = 0
IT_ALV_GRAPHICS = IT_ALV_GRAPHICS
IT_HYPERLINK = IT_HYPERLINK
IT_ADD_FIELDCAT = IT_ADD_FIELDCAT
IT_EXCEPT_QINFO = IT_EXCEPT_QINFO
IR_SALV_FULLSCREEN_ADAPTER = IR_SALV_FULLSCREEN_ADAPTER
IMPORTING
E_EXIT_CAUSED_BY_CALLER = E_EXIT_CAUSED_BY_CALLER
ES_EXIT_CAUSED_BY_USER = ES_EXIT_CAUSED_BY_USER
TABLES
T_OUTTAB = IT_EKBE
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.
ENDIF.
IF RB2 = 'X'.
CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'
EXPORTING
I_INTERFACE_CHECK = ' '
I_BYPASSING_BUFFER = I_BYPASSING_BUFFER
I_BUFFER_ACTIVE = ' '
I_CALLBACK_PROGRAM = V_REPID
I_CALLBACK_PF_STATUS_SET = ' '
I_CALLBACK_USER_COMMAND = ' '
I_STRUCTURE_NAME = I_STRUCTURE_NAME
IS_LAYOUT = IS_LAYOUT
IT_FIELDCAT = IT_FIELDCAT
IT_EXCLUDING = IT_EXCLUDING
IT_SPECIAL_GROUPS = IT_SPECIAL_GROUPS
IT_SORT = IT_SORT
IT_FILTER = IT_FILTER
IS_SEL_HIDE = IS_SEL_HIDE
I_DEFAULT = 'X'
I_SAVE = ' '
IS_VARIANT = IS_VARIANT
IT_EVENTS = IT_EVENTS
IT_EVENT_EXIT = IT_EVENT_EXIT
IS_PRINT = IS_PRINT
IS_REPREP_ID = IS_REPREP_ID
I_SCREEN_START_COLUMN = 0
I_SCREEN_START_LINE = 0
I_SCREEN_END_COLUMN = 0
I_SCREEN_END_LINE = 0
IR_SALV_LIST_ADAPTER = IR_SALV_LIST_ADAPTER
IT_EXCEPT_QINFO = IT_EXCEPT_QINFO
I_SUPPRESS_EMPTY_DATA = ABAP_FALSE
IMPORTING
E_EXIT_CAUSED_BY_CALLER = E_EXIT_CAUSED_BY_CALLER
ES_EXIT_CAUSED_BY_USER = ES_EXIT_CAUSED_BY_USER
TABLES
T_OUTTAB = IT_EKBE
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.
ENDIF.
ENDFORM. " get_list
Thanks
Vikranth Khimavath
Message was edited by:
Khimavath Vikranth -
Change sales orders from report
Hi there,
My report shows grid_display,
column1 is chechbox,
column2 is Sales Order number,
column3 is Sales Order description. here user has to check required sales Orders and press pushbutton in appl tool bar, all these Sales Orders(i.e. checked by user) have to be opend in changemode automatically one after another, where user can change accordingly. can anybody pls sugest logic for this.
thanks in advance.
Zakir.used bapi .
pass those data to bapi.
** Program ID :
** Program Desc :
** Process Overview : SD
** Created By : P.KARTHIKEYAN
REPORT ZBAPI_SALESORDER_CHANGE LINE-SIZE 132 MESSAGE-ID ZMMBAPI .
Internal table definition *
*****<<<< BAPI Sales Order>>>>>>>>>>>>>>>>>>>>>>>
DATA: GT_SALESDOCUMENT LIKE BAPIVBELN-VBELN,
******<<<<Communication Fields: SD Order Header>>>
GT_ORDER_HEADER_IN LIKE BAPISDH1,
******<<<<<Checkbox List: SD Order Header>>>>>>>>>
GT_ORDER_HEADER_INX LIKE BAPISDH1X,
*****<<<Return Parameter>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
GT_RETURN LIKE BAPIRET2 OCCURS 0 WITH HEADER LINE,
*******<<<<<<<Communication Fields: Sales and Distribution Document Item>>
GT_ORDER_ITEM_IN LIKE BAPISDITM OCCURS 0 WITH HEADER LINE,
*******<<<<<<<Communication Fields: Sales and Distribution Document Item>>
GT_ORDER_ITEM_INX LIKE BAPISDITMX OCCURS 0 WITH HEADER LINE,
*******<<<<<<<<Communication Fields for Maintaining Conditions in the Order
GT_CONDITIONS_IN LIKE BAPICOND OCCURS 0 WITH HEADER LINE,
*******<<<<<<<<Communication Fields for Maintaining Conditions in the Order
GT_CONDITIONS_INX LIKE BAPICONDX OCCURS 0 WITH HEADER LINE.
FLAT FLIE Internal table definition *
DATA: BEGIN OF GT_FT_SALES OCCURS 0,
SALESDOCUMENT(10), "SALESDOCUMENT
SALES_ORG(4) , "Sales Organization
DISTR_CHAN(2), "Sales Organization
DIVISION(2) , " DIVISION
PURCH_NO_C(35) , "Customer purchase order number
SALES_DIST(6) , "Sales district
INCOTERMS1(3) , "INCOTERMS1
PMNTTRMS(4) , "Terms of payment key
ITM_NUMBER(6) , "Sales Document Item
PO_ITM_NO(6) , "Item Number of the Underlying Purchase Order
MATERIAL(18), "Material Number
END OF GT_FT_SALES,
MSG(240) TYPE C, " Return Message
E_REC(8) TYPE C, " Error Records Counter
REC_NO(8) TYPE C, " Records Number Indicator
S_REC(8) TYPE C, " Successful Records Counter
T_REC(8) TYPE C, " Total Records Counter
ERR_ORDER(10) TYPE C. " Order Number Indicator
selection block for EXCEL UPLOAD FILE>>>>>>>>>>>>>>>>>>>>>>>>
SELECTION-SCREEN BEGIN OF BLOCK B1 WITH FRAME TITLE TEXT-000.
PARAMETERS FILE TYPE IBIPPARMS-PATH OBLIGATORY.
SELECTION-SCREEN END OF BLOCK B1.
*<<<<AT SELECTION-SCREEN ON VALUE-REQUEST FOR FILE .>>>>>>>>>>>>
AT SELECTION-SCREEN ON VALUE-REQUEST FOR FILE .
CALL FUNCTION 'F4_FILENAME'
EXPORTING
PROGRAM_NAME = SYST-CPROG
DYNPRO_NUMBER = SYST-DYNNR
IMPORTING
FILE_NAME = FILE.
**<<<<<<<<<<<<<<<<<START-OF-SELECTION.>>>>>>>>>>>>>>>>>>>>>>>>>>>
START-OF-SELECTION.
CALL FUNCTION 'WS_UPLOAD' "#EC *
EXPORTING
FILENAME = FILE
FILETYPE = 'DAT'
TABLES
DATA_TAB = GT_FT_SALES
EXCEPTIONS
CONVERSION_ERROR = 1
FILE_OPEN_ERROR = 2
FILE_READ_ERROR = 3
INVALID_TYPE = 4
NO_BATCH = 5
UNKNOWN_ERROR = 6
INVALID_TABLE_WIDTH = 7
GUI_REFUSE_FILETRANSFER = 8
CUSTOMER_ERROR = 9
NO_AUTHORITY = 10
OTHERS = 11.
IF SY-SUBRC <> 0 .
MESSAGE E000.
ENDIF.
SKIP 3.
FORMAT COLOR COL_HEADING INVERSE ON.
WRITE 40 TEXT-001.
FORMAT COLOR COL_HEADING INVERSE OFF.
SKIP 1.
FORMAT COLOR COL_NEGATIVE INVERSE ON.
WRITE :/ TEXT-002, 13 SY-MANDT , 104 TEXT-003, 111 SY-UNAME,
/ TEXT-004, 13 SY-DATUM , 104 TEXT-005, 111 SY-UZEIT.
FORMAT COLOR COL_NEGATIVE INVERSE OFF.
SKIP 3.
LOOP AT GT_FT_SALES.
PERFORM UPLOAD_FILE.
ENDLOOP.
T_REC = E_REC + S_REC.
SKIP 3.
FORMAT COLOR COL_TOTAL INVERSE ON.
WRITE: /38 TEXT-007, T_REC.
FORMAT COLOR COL_TOTAL INVERSE OFF.
FORMAT COLOR COL_NEGATIVE INVERSE ON.
WRITE: /38 TEXT-008, E_REC.
FORMAT COLOR COL_NEGATIVE INVERSE OFF.
FORMAT COLOR COL_TOTAL INVERSE ON.
WRITE: /38 TEXT-009, S_REC.
FORMAT COLOR COL_TOTAL INVERSE OFF.
*& Form UPLOAD_FILE
text
--> p1 text
<-- p2 text
FORM UPLOAD_FILE .
********<<<< BAPI Sales Order>>>>>>>>>>>>>>>>>>>>>>>
GT_SALESDOCUMENT = GT_FT_SALES-SALESDOCUMENT . " '0000000233' "Order Number
******<<<<Communication Fields: SD Order Header>>>
GT_ORDER_HEADER_IN-SALES_ORG = GT_FT_SALES-SALES_ORG . "'0001' "Sales Organization
GT_ORDER_HEADER_IN-DISTR_CHAN = GT_FT_SALES-DISTR_CHAN . "Distribution Channel
GT_ORDER_HEADER_IN-DIVISION = GT_FT_SALES-DIVISION . "Division
GT_ORDER_HEADER_IN-PURCH_NO_C = GT_FT_SALES-PURCH_NO_C . "Customer purchase order number
GT_ORDER_HEADER_IN-SALES_DIST = GT_FT_SALES-SALES_DIST . " Sales district
GT_ORDER_HEADER_IN-INCOTERMS1 = GT_FT_SALES-INCOTERMS1 . "Incoterms (part 1)
GT_ORDER_HEADER_IN-PMNTTRMS = GT_FT_SALES-PMNTTRMS . "Terms of payment key
******<<<<Communication Fields: SD Order Header FLAG>>>
GT_ORDER_HEADER_INX-UPDATEFLAG = 'U'.
GT_ORDER_HEADER_INX-SALES_ORG = 'X'. "Sales Organization
GT_ORDER_HEADER_INX-DISTR_CHAN = 'X'. "Distribution Channel
GT_ORDER_HEADER_INX-DIVISION = 'X'. "Division
GT_ORDER_HEADER_INX-PURCH_NO_C = 'X' ."Customer purchase order number
GT_ORDER_HEADER_INX-SALES_DIST = 'X'. " Sales district
GT_ORDER_HEADER_INX-INCOTERMS1 = 'X'."Incoterms (part 1)
GT_ORDER_HEADER_INX-PMNTTRMS = 'X'. "Terms of payment key
*******<<<<<<<Communication Fields: Sales and Distribution Document Item>>
GT_ORDER_ITEM_IN-ITM_NUMBER = GT_FT_SALES-ITM_NUMBER . "'000010' "Sales Document Item
GT_ORDER_ITEM_IN-PO_ITM_NO = GT_FT_SALES-PO_ITM_NO . "'PO-129' "Item Number of the Underlying Purchase Order
GT_ORDER_ITEM_IN-MATERIAL = GT_FT_SALES-MATERIAL . "'M-24' "Material Number
APPEND GT_ORDER_ITEM_IN.
*******<<<<<<<Communication Fields: Sales and Distribution Document Item>>
GT_ORDER_ITEM_INX-UPDATEFLAG = 'U'.
GT_ORDER_ITEM_INX-ITM_NUMBER = '000010'. "Sales Document Item
GT_ORDER_ITEM_INX-PO_ITM_NO = 'X'. "Item Number of the Underlying Purchase Order
GT_ORDER_ITEM_INX-MATERIAL = 'X'. "Material Number
APPEND GT_ORDER_ITEM_INX.
*******<<<<<<<<Communication Fields for Maintaining Conditions in the Order>>>>
GT_CONDITIONS_IN-ITM_NUMBER = GT_FT_SALES-ITM_NUMBER . "'000010' "Condition item number
APPEND GT_CONDITIONS_IN.
*******<<<<<<<<Communication Fields for Maintaining Conditions in the Order FLAG>>>
GT_CONDITIONS_INX-ITM_NUMBER = '000010' ."Condition item number
APPEND GT_CONDITIONS_INX.
CALL FUNCTION 'BAPI_SALESORDER_CHANGE'
EXPORTING
SALESDOCUMENT = GT_SALESDOCUMENT
ORDER_HEADER_IN = GT_ORDER_HEADER_IN
ORDER_HEADER_INX = GT_ORDER_HEADER_INX
TABLES
RETURN = GT_RETURN
ORDER_ITEM_IN = GT_ORDER_ITEM_IN
ORDER_ITEM_INX = GT_ORDER_ITEM_INX
CONDITIONS_IN = GT_CONDITIONS_IN
CONDITIONS_INX = GT_CONDITIONS_INX.
IF GT_RETURN-TYPE EQ 'E'.
ERR_ORDER = GT_RETURN-MESSAGE_V1.
READ TABLE GT_RETURN WITH KEY ID = 'V1'.
E_REC = E_REC + 1.
CONCATENATE TEXT-006 ERR_ORDER ':' GT_RETURN-MESSAGE INTO MSG SEPARATED BY SPACE .
CONDENSE MSG.
FORMAT COLOR COL_NEGATIVE INVERSE ON.
WRITE / MSG .
FORMAT COLOR COL_NEGATIVE INVERSE OFF.
ELSEIF GT_RETURN-TYPE EQ 'S'.
S_REC = S_REC + 1.
FORMAT COLOR COL_POSITIVE INVERSE ON.
WRITE / GT_RETURN-MESSAGE .
FORMAT COLOR COL_POSITIVE INVERSE OFF.
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
EXPORTING
WAIT = 'X'
IMPORTING
RETURN = GT_RETURN.
ENDIF.
ENDFORM. " UPLOAD_FILE -
Not Able to Generate Out of the Report by adding the new 2 fields
Hi,
I'm Very new to ABAP. I have created one report. after 2 new fields added they are EKNAM and EKGRP.
The Thing is the remaining fields are displaying in the output. The Newly added fields are not displaying the out. I was able to add this 2 fields in the head of the report. But issue is not able to get the data on these 2 fields.
Please see the below program and any one please help me out to display the data in this report for the fields eknam and ekgrp.
TABLES: eban,
lfa1,
ekko,
t024,
v_username.
DATA: BEGIN OF i_req_items OCCURS 10,
ernam LIKE eban-ernam, "Created by
lifnr LIKE eban-lifnr, "Desired vendor
ebeln LIKE eban-ebeln, "PO Number
ebelp LIKE eban-ebelp, "PO Item
eknam LIKE t024-eknam, "Pur.Grp Name
ekgrp LIKE t024-ekgrp, "Pur.Grp Number
flief LIKE eban-flief, "Fixed vendor
name1 LIKE lfa1-name1, "Vendor name
badat LIKE eban-badat, "Creation date
erdat LIKE eban-erdat, "Change date
banfn LIKE eban-banfn, "Requisition no.
bnfpo LIKE eban-bnfpo, "Req. item no.
bsart LIKE eban-bsart, "Document type
knttp LIKE eban-knttp, "Acct.assgmt category
txz01 LIKE eban-txz01, "PO item description
menge LIKE eban-menge, "Quantity
preis LIKE eban-preis, "Price
peinh LIKE eban-peinh, "Price unit
value(14) TYPE p DECIMALS 2, "Item Value
END OF i_req_items.
DATA: BEGIN OF i_reqs OCCURS 10,
ernam LIKE eban-ernam, "Created by
persn LIKE usr21-persnumber, "Person number
uname LIKE adrp-name_text, "User name
lifnr LIKE eban-lifnr, "Vendor
name1 LIKE lfa1-name1, "Vendor name
badat LIKE eban-badat, "Creation date
banfn LIKE eban-banfn, "Requisition no.
bnfpo LIKE eban-bnfpo, "Req. item no.
bsart LIKE eban-bsart, "Document type
knttp LIKE eban-knttp, "Acct.assgmt category
txz01 LIKE eban-txz01, "PO item description
eknam like t024-eknam, "Purchase Grp Name
ekgrp like t024-ekgrp, "Purchase Grp Number
value(14) TYPE p DECIMALS 2, "Item Value
END OF i_reqs.
DATA: BEGIN OF i_req_keys OCCURS 0,
ernam LIKE eban-ernam, "Created by
lifnr LIKE eban-lifnr, "Desired vendor
erdat LIKE eban-erdat, "Create or Change date
banfn LIKE eban-banfn, "Requisition no.
bnfpo LIKE eban-bnfpo, "Req. item no.
eknam like t024-eknam, "Purchase Grp Name
ekgrp like t024-ekgrp, "Purchase Grp number
END OF i_req_keys.
DATA: BEGIN OF i_req_keeper OCCURS 0,
ernam LIKE eban-ernam, "Created by
lifnr LIKE eban-lifnr, "Desired vendor
banfn LIKE eban-banfn, "Requisition no
END OF i_req_keeper.
DATA: wa_reqitems LIKE i_req_items.
DATA: BEGIN OF i_export OCCURS 10,
record(150) TYPE c,
END OF i_export.
CONSTANTS
CONSTANTS:
c_doccat LIKE eban-bstyp VALUE 'B',
c_creind LIKE eban-estkz VALUE 'R',
c_delflag LIKE eban-loekz VALUE 'L',
c_write(5) TYPE c VALUE 'WRITE',
c_slash(1) TYPE c VALUE '/',
*start ESPZC U8DK900439
c_delimiter TYPE x VALUE '09',
c_delimiter TYPE c VALUE cl_abap_char_utilities=>horizontal_tab,
*end ESPZC U8DK900439
c_sc(1) TYPE c VALUE ';',
c_x(1) TYPE c VALUE 'X',
c_usd(1) TYPE c VALUE '2',
c_export LIKE authb-filename VALUE '/BAY2/UBEM_SPLIT_REQS'.
WORKING VARIABLES
DATA: w_report_id LIKE syst-repid,
w_sttime LIKE syst-uzeit,
w_rpt_pagno LIKE syst-pagno,
w_rc LIKE sy-subrc,
w_datelow LIKE eban-badat,
w_datehigh LIKE eban-badat,
w_export LIKE c_export,
w_records TYPE i,
w_message(50) TYPE c.
TYPES number TYPE i.
SELECTION SCREEN / PARAMETERS
SELECTION-SCREEN BEGIN OF BLOCK org WITH FRAME TITLE text-001.
PARAMETERS: p_purorg LIKE eban-ekorg OBLIGATORY DEFAULT 'US02'.
SELECT-OPTIONS: s_doctyp FOR eban-bsart,
s_date FOR eban-badat.
PARAMETERS: p_timper(2) TYPE n.
SELECTION-SCREEN: COMMENT 37(37) text-002.
SELECTION-SCREEN END OF BLOCK org.
SELECTION-SCREEN BEGIN OF BLOCK outp WITH FRAME TITLE text-003.
PARAMETERS: p_onlin RADIOBUTTON GROUP outp DEFAULT 'X',
p_servr RADIOBUTTON GROUP outp.
SELECTION-SCREEN END OF BLOCK outp.
AT SELECTION SCREEN
AT SELECTION-SCREEN.
IF p_servr = c_x.
CLEAR w_rc.
PERFORM authority_check_dataset USING w_export
CHANGING w_rc.
IF w_rc <> 0.
MESSAGE e532 WITH text-006 w_export.
ENDIF.
CLEAR w_rc.
PERFORM verify_unix_path_and_file CHANGING w_rc.
IF w_rc <> 0.
MESSAGE e531 WITH w_message.
ENDIF.
ENDIF.
INITIALIZATION EVENT
INITIALIZATION.
PERFORM get_filename.
MOVE syst-uzeit TO w_sttime.
MOVE syst-repid TO w_report_id.
CLEAR: w_rpt_pagno.
START-OF-SELECTION.
PERFORM get_data.
IF p_onlin = c_x.
IF w_records GT 0.
PERFORM print_report_header.
PERFORM write_report.
ELSE.
MESSAGE i531 WITH text-007.
ENDIF.
ELSEIF p_servr = c_x.
PERFORM write_export.
ENDIF.
END-OF-SELECTION.
---- F O R M R O U T I N E S -
*& FORM get_filename
FORM get_filename.
CALL FUNCTION 'FILE_GET_NAME'
EXPORTING
logical_filename = c_export
IMPORTING
file_name = w_export
EXCEPTIONS
file_not_found = 1
OTHERS = 2.
IF sy-subrc <> 0.
ENDIF.
ENDFORM. " get_filename
FORM authority_check_dataset
FORM authority_check_dataset USING p_filename
CHANGING p_rc.
CALL FUNCTION 'AUTHORITY_CHECK_DATASET'
EXPORTING
activity = c_write
filename = p_filename
EXCEPTIONS
no_authority = 1
activity_unknown = 2
OTHERS = 3.
p_rc = sy-subrc.
ENDFORM. "authority_check_dataset
FORM verify_unix_path_and_file
FORM verify_unix_path_and_file CHANGING p_rc.
*start ESPZC U8DK900439
OPEN DATASET w_export FOR OUTPUT IN TEXT MODE
MESSAGE w_message.
OPEN DATASET w_export FOR OUTPUT IN TEXT MODE ENCODING DEFAULT
MESSAGE w_message.
*end ESPZC U8DK900439
p_rc = sy-subrc.
ENDFORM. "verify_unix_path_and_file
FORM get_data
FORM get_data.
CLEAR w_datelow.
CLEAR w_datehigh.
w_datelow = s_date-low - p_timper.
w_datehigh = s_date-high + p_timper.
w_datehigh = s_date-high.
SELECT ernam lifnr ebeln ebelp flief badat erdat banfn bnfpo bsart
knttp menge preis peinh txz01
FROM eban
INTO CORRESPONDING FIELDS OF TABLE i_req_items
WHERE bstyp = c_doccat
AND estkz = c_creind
AND knttp <> space
AND bsart IN s_doctyp
AND loekz <> c_delflag
AND ekorg EQ p_purorg
AND ( ( badat BETWEEN w_datelow and w_datehigh ) OR
( erdat BETWEEN w_datelow AND w_datehigh ) ).
AND erdat BETWEEN w_datelow AND w_datehigh.
IF sy-subrc = 0.
LOOP AT i_req_items.
IF i_req_items-lifnr IS INITIAL.
IF NOT i_req_items-flief IS INITIAL.
MOVE i_req_items-flief TO i_req_items-lifnr.
MODIFY i_req_items.
ENDIF.
IF NOT i_req_items-ebeln IS INITIAL.
SELECT lifnr FROM ekko
INTO i_req_items-lifnr
WHERE ebeln = i_req_items-ebeln.
ENDSELECT.
MODIFY i_req_items.
ENDIF.
ENDIF.
IF i_req_items-erdat GT i_req_items-badat.
MOVE i_req_items-erdat TO i_req_items-badat.
MODIFY i_req_items.
ENDIF.
ENDLOOP.
PERFORM weed_out_unique_records.
PERFORM apply_time_period.
SORT i_req_items BY ernam lifnr banfn bnfpo.
LOOP AT i_req_items.
i_req_items-value = ( i_req_items-menge *
( i_req_items-preis / i_req_items-peinh ) ).
MODIFY i_req_items.
ENDLOOP.
Getting vendor name from table LFA1 -
CLEAR i_req_items.
LOOP AT i_req_items.
SELECT SINGLE name1 FROM lfa1
INTO i_req_items-name1
WHERE lifnr = i_req_items-lifnr.
MODIFY i_req_items.
ENDLOOP.
LOOP AT i_req_items.
MOVE-CORRESPONDING i_req_items TO i_reqs.
Getting user name from view v_username -
SELECT SINGLE name_text
FROM v_username INTO i_reqs-uname
WHERE bname = i_reqs-ernam.
APPEND i_reqs.
ENDLOOP.
ENDIF.
DESCRIBE TABLE i_reqs LINES w_records.
ENDFORM. "Get_data
FORM print_report_header
FORM print_report_header.
ADD 1 TO w_rpt_pagno.
CALL FUNCTION '/BAY2/UBEXBH_BAYER_HEADR_FUN'
EXPORTING
f_jobname = text-020
f_business_group = text-021
f_report_title = text-022
f_repid = w_report_id
f_sysid = syst-sysid
f_linsz = syst-linsz
f_pagno = w_rpt_pagno
f_mandt = syst-mandt
f_datum = syst-datum
f_uzeit = w_sttime.
FORMAT COLOR COL_HEADING.
WRITE: /1 text-010, "Created by CWID & user name
29 text-011, "Vendor #
38 text-012, "Vendor Name
69 text-013, "Req Number
79 text-014, "/Item
87 text-015, "Created On
98 text-017, "A (AcctAssgmtCat)
100(14) text-019 RIGHT-JUSTIFIED, "Item Value
116(30) text-018, "Item Description
148 text-030, "Pur.Grp Name
170 text-031. "Pur.Grp Number
FORMAT COLOR OFF.
ULINE.
ENDFORM. "print_report_header
*& Form WRITE_REPORT
FORM write_report.
LOOP AT i_reqs.
WRITE: /1 i_reqs-ernam,
9(18) i_reqs-uname,
29 i_reqs-lifnr,
38(30) i_reqs-name1,
69 i_reqs-banfn,
79 c_slash,
80 i_reqs-bnfpo,
87 i_reqs-badat,
98 i_reqs-knttp,
100(14) i_reqs-value CURRENCY c_usd,
116(30) i_reqs-txz01,
145 i_reqs-eknam,
160 i_reqs-ekgrp.
ENDLOOP.
ENDFORM. "write_report
*& Form WRITE_EXPORT
FORM write_export.
DATA: l_value(14) TYPE c,
l_bsart(100) TYPE c,
l_uname(7) TYPE c,
l_records(5) TYPE c,
l_header(150) TYPE c,
l_params(150) TYPE c,
i_char TYPE i.
LOOP AT i_reqs.
CLEAR l_value.
CLEAR l_uname.
l_value = i_reqs-value.
l_uname = sy-uname.
CONCATENATE: i_reqs-uname
i_reqs-ernam
i_reqs-lifnr
i_reqs-name1
i_reqs-banfn
i_reqs-bnfpo
i_reqs-badat
i_reqs-knttp
l_value
i_reqs-txz01 INTO i_export
SEPARATED BY c_delimiter.
APPEND i_export.
ENDLOOP.
CONCATENATE: text-008 "Created By Name
text-009 "CWID
text-011 "Vendor No
text-012 "Vendor Name
text-013 "Req Number
text-023 "Item
text-015 "Created On
text-017 "A
text-019 "Item Value
text-018 "Item Description
text-030 "Purchase Grp name
text-031 "Purchase Grp number
INTO l_header SEPARATED BY c_delimiter.
INSERT l_header INTO i_export INDEX 1.
IF sy-batch IS INITIAL.
MOVE sy-uname TO l_uname.
ELSE.
MOVE text-024 TO l_uname.
ENDIF.
PERFORM collect_bsart CHANGING l_bsart
i_char.
l_records = w_records.
CONCATENATE: sy-sysid
p_purorg
l_bsart(i_char)
s_date-low
s_date-high
p_timper
l_uname
sy-datum
l_records INTO l_params
SEPARATED BY c_delimiter.
INSERT l_params INTO i_export INDEX 1.
LOOP AT i_export.
CONDENSE i_export NO-GAPS.
TRANSFER i_export TO w_export.
ENDLOOP.
CLOSE DATASET w_export.
MESSAGE s533 WITH text-028 w_export text-029.
ENDFORM. "write_export
*& FORM collect_bsart
FORM collect_bsart CHANGING p_bsart
p_char.
CLEAR p_bsart.
LOOP AT s_doctyp.
IF sy-tabix = 1.
p_bsart = s_doctyp-low.
ELSE.
CONCATENATE: p_bsart c_sc s_doctyp-low INTO p_bsart.
ENDIF.
ENDLOOP.
CONDENSE p_bsart NO-GAPS.
p_char = strlen( p_bsart ).
ENDFORM. "collect_bsart
*& Form WEED_OUT_UNIQUE_RECORDS
FORM weed_out_unique_records.
DATA: i_l_req_items LIKE i_req_items OCCURS 0 WITH HEADER LINE.
DATA: i_l_req_final_items LIKE i_req_items OCCURS 0 WITH HEADER LINE.
DATA: l_count TYPE i,
l_sy_tabix LIKE sy-tabix,
l_banfn LIKE eban-banfn.
REFRESH i_l_req_items.
REFRESH i_l_req_final_items.
CLEAR l_banfn.
i_l_req_items[] = i_req_items[].
i_l_req_final_items[] = i_req_items[].
SORT i_req_items BY ernam lifnr.
SORT i_l_req_items BY ernam lifnr.
SORT i_l_req_final_items BY ernam lifnr.
LOOP AT i_l_req_items.
l_banfn = i_l_req_items-banfn.
CLEAR l_count.
LOOP AT i_req_items
WHERE ernam = i_l_req_items-ernam
AND lifnr = i_l_req_items-lifnr.
IF i_req_items-banfn <> l_banfn.
ADD +1 TO l_count.
ENDIF.
ENDLOOP.
IF NOT ( l_count > 0 ).
LOOP AT i_l_req_final_items
WHERE ernam = i_l_req_items-ernam
AND lifnr = i_l_req_items-lifnr.
DELETE i_l_req_final_items.
ENDLOOP.
ENDIF.
ENDLOOP.
REFRESH i_req_items.
i_req_items[] = i_l_req_final_items[].
ENDFORM. " WEED_OUT_UNIQUE_RECORDS
*& Form APPLY_TIME_PERIOD
FORM apply_time_period.
DATA: l_i_req_keys LIKE i_req_keys.
DATA: l_days_diff TYPE p,
l_no_of_key_recs TYPE i,
l_next_item LIKE sy-tabix,
l_finished_with_keys TYPE c VALUE 'N',
l_add_line TYPE c VALUE 'N',
l_count TYPE i,
l_req_ernam LIKE eban-ernam,
l_req_lifnr LIKE lfa1-lifnr,
l_req_banfn LIKE eban-banfn,
l_save_tabix like sy-tabix.
REFRESH: i_req_keys, i_req_keeper.
LOOP AT i_req_items.
MOVE-CORRESPONDING i_req_items TO
i_req_keys.
IF i_req_items-erdat IS INITIAL.
i_req_keys-erdat = i_req_items-badat.
ENDIF.
APPEND i_req_keys.
ENDLOOP.
SORT i_req_keys BY ernam lifnr erdat.
CLEAR l_no_of_key_recs.
DESCRIBE TABLE i_req_keys LINES l_no_of_key_recs.
LOOP AT i_req_keys.
IF l_add_line = 'Y'.
MOVE-CORRESPONDING i_req_keys
TO i_req_keeper.
APPEND i_req_keeper.
l_add_line = 'N'.
ENDIF.
IF l_finished_with_keys = 'Y'.
EXIT.
ENDIF.
CLEAR l_next_item.
l_save_tabix = sy-tabix.
COMPUTE l_next_item = sy-tabix + 1.
IF l_next_item = l_no_of_key_recs.
l_finished_with_keys = 'Y'.
ENDIF.
clear: l_i_req_keys.
READ TABLE i_req_keys INDEX l_next_item
INTO l_i_req_keys.
sy-tabix = l_save_tabix.
CLEAR l_days_diff.
l_days_diff = l_i_req_keys-erdat -
i_req_keys-erdat.
IF l_i_req_keys-ernam =
i_req_keys-ernam AND
l_i_req_keys-lifnr =
i_req_keys-lifnr AND
l_i_req_keys-banfn <>
i_req_keys-banfn AND
l_days_diff <= p_timper.
MOVE-CORRESPONDING i_req_keys
TO i_req_keeper.
APPEND i_req_keeper.
l_add_line = 'Y'.
ENDIF.
ENDLOOP.
DELETE ADJACENT DUPLICATES FROM i_req_keeper
COMPARING ALL FIELDS.
SORT i_req_keeper BY ernam lifnr banfn.
LOOP AT i_req_items.
CLEAR l_count.
CLEAR: l_req_ernam,
l_req_lifnr,
l_req_banfn.
l_req_ernam = i_req_items-ernam.
l_req_lifnr = i_req_items-lifnr.
l_req_banfn = i_req_items-banfn.
LOOP AT i_req_keeper
WHERE ernam = i_req_items-ernam
AND lifnr = i_req_items-lifnr
AND banfn = i_req_items-banfn.
ADD +1 TO l_count.
ENDLOOP.
IF NOT ( l_count > 0 ).
LOOP AT i_req_items
WHERE ernam = l_req_ernam
AND lifnr = l_req_lifnr
AND banfn = l_req_banfn.
DELETE i_req_items.
ENDLOOP.
ENDIF.
ENDLOOP.
ENDFORM. " APPLY_TIME_PERIODRajesh,
Put a breakpoint and try to debug the report step by step.
You will findout the reason very easily.
Whenever you have a select and are trying to append into an internal table, keep checking your internal table if it is been populated with the correct records.
This way, you will findout the cause and can correct is accordingly.
Thanks,
Suresh Ganti -
Help needed in hr abap om reporting
hi to all experts,
1)can we declare two ldb in a single program
2) i need a sample code for om reporting ( if anyone could explain it would be great)
3) can we use macros rp* in om reporting if yes how
thanks.Hi Moazam,
As Narin said u cant use two logical data bases in program.
Because we have option in attributes of the program to choose the logical database.
U can check out all the macros in the Table TRMAC
Please check this come
MOVE i_date TO wa_newdt.
IF NOT i_orgeh IS INITIAL.
SELECT SINGLE objid FROM hrp1000 INTO hrp1000-objid WHERE
plvar = '01' AND
otype = 'O' AND
objid = i_orgeh.
IF sy-subrc NE 0.
RAISE inivalid_orgunit.
EXIT.
ENDIF.
ENDIF.
IF NOT i_pernr IS INITIAL.
SELECT SINGLE orgeh FROM pa0001 INTO wa_orgeh WHERE
pernr = i_pernr AND
* AM8598 - Address delimited org unit issue starts.
* BEGDA <= I_DATE AND
begda <= wa_newdt AND
* ENDDA >= I_DATE.
endda >= wa_newdt.
SELECT SINGLE * FROM hrp1000 WHERE plvar = '01' AND
otype = 'O' AND
objid = wa_orgeh AND
begda LE sy-datum AND
endda GE sy-datum.
IF sy-subrc NE 0.
SELECT * FROM hrp1000 WHERE plvar = '01' AND
otype = 'O' AND
objid = wa_orgeh AND
endda LT sy-datum
ORDER BY endda DESCENDING.
EXIT.
ENDSELECT.
MOVE hrp1000-endda TO wa_newdt.
ENDIF.
DATA: v_subrc LIKE sy-subrc. " MMMOOR1
IF i_flag NE 'P'. " MMMOOR1
SELECT SINGLE sobid INTO hrp1001-sobid
FROM hrp1001
WHERE otype = 'O'
AND objid = wa_orgeh
AND plvar = '01'
AND rsign = 'B'
AND relat = '012'
AND istat = '1'
* AND ENDDA >= I_DATE
AND endda >= wa_newdt
* AND BEGDA <= I_DATE.
AND begda <= wa_newdt.
IF sy-subrc = 0.
SELECT SINGLE * FROM hrp1001
WHERE otype = 'S'
AND objid = hrp1001-sobid
AND plvar = '01'
AND rsign = 'A'
AND relat = '008'
AND istat = '1'
* AND ENDDA >= I_DATE
AND endda >= wa_newdt
* AND BEGDA <= I_DATE.
AND begda <= wa_newdt.
v_subrc = sy-subrc.
MOVE hrp1001-sobid TO e_pernr.
ENDIF.
ELSE.
CLEAR wa_mgrno.
* SELECT SINGLE YYMGRNO
* FROM YHRCM_PLAN_MGR
* INTO WA_MGRNO
* WHERE YYORGID = WA_ORGEH.
SELECT SINGLE sobid INTO hrp1001-sobid
FROM hrp1001
WHERE otype = 'O'
AND objid = wa_orgeh
AND plvar = '01'
AND rsign = 'A'
AND relat = 'Z18'
AND istat = '1'
AND endda >= wa_newdt
AND begda <= wa_newdt.
IF sy-subrc = 0.
SELECT SINGLE sobid INTO l_sobid
FROM hrp1001
WHERE otype = 'S'
AND objid = hrp1001-sobid
AND plvar = '01'
AND rsign = 'A'
AND relat = '008'
AND istat = '1'
AND endda >= wa_newdt
AND begda <= wa_newdt.
v_subrc = sy-subrc.
wa_mgrno = l_sobid.
MOVE wa_mgrno TO e_pernr.
ENDIF.
ENDIF.
IF v_subrc = 0.
SELECT SINGLE * FROM pa0002
WHERE pernr = e_pernr
AND endda >= sy-datum
AND begda <= sy-datum.
IF sy-subrc = 0.
IF NOT pa0002-nach2 IS INITIAL.
CONCATENATE pa0002-nachn '-' pa0002-nach2 ','
INTO e_name.
ELSE.
CONCATENATE pa0002-nachn ',' INTO e_name.
ENDIF.
CONCATENATE e_name pa0002-vorna pa0002-inits
INTO e_name SEPARATED BY space.
ENDIF.
SELECT SINGLE * FROM pa0105
WHERE pernr = e_pernr
AND subty = '0010'
AND endda >= sy-datum
AND begda <= sy-datum.
IF sy-subrc = 0.
e_email = pa0105-usrid_long.
ENDIF.
SELECT SINGLE yymailstop FROM pa0032
INTO pa0032-yymailstop
WHERE pernr = e_pernr
AND endda >= sy-datum
AND begda <= sy-datum.
IF sy-subrc = 0.
e_mailstop = pa0032-yymailstop.
ENDIF.
ENDIF.
IF e_pernr IS INITIAL AND NOT i_get_higher IS INITIAL.
PERFORM get_higher_mgr
USING i_pernr wa_orgeh wa_newdt
CHANGING e_pernr e_name e_email e_mailstop.
ENDIF.
* AN0884 - Get Higher Manager - Ends.
ENDFUNCTION.
Best regards,
raam -
TAx Reporter Temse Files Download Automation
Hi,
I have a reuiqrement to download the Temse files generated in Tax Reporter. I have completed the code and it works fine if we run the program in foreground. But when I run the same program in background some Temse files downloaded have junk characters. If I download the same Temse file in foreground it works fine.
There seems to be some issue with the FM when I run my progam in background.
I have searched SDN and SAP Notes for any clues but did not get any.
REPORT ZPHOP_TEMSE NO STANDARD PAGE HEADING
LINE-SIZE 1023
LINE-COUNT 65
MESSAGE-ID zz.
DATA: BEGIN OF tape OCCURS 1,
DATA(2000),
END OF tape.
DATA: force_ascii type c VALUE 'T'.
DATA: BEGIN OF int_msgs2 OCCURS 10,
errnum(2) TYPE c,
text1(8) TYPE c,
text2(60) TYPE c,
END OF int_msgs2.
DATA: BEGIN OF g_int_temse OCCURS 0,
dname LIKE TST01-dname,
dpart LIKE TST01-dpart,
dcretime LIKE TST01-DCRETIME,
dcreater LIKE TST01-DCREATER,
END OF g_int_temse.
DATA: record_length TYPE i VALUE 275,
data_length TYPE i,
convert_to_ebcdic,
filesize TYPE i,
number_of_records TYPE i VALUE 1,
filetype(3) VALUE 'BIN',
conv TYPE REF TO cl_abap_conv_out_ce,
dline TYPE REF TO data,
dtab TYPE REF TO data,
p_compid(4),
p_pswd(8),
g_str(2000),
uc_filename TYPE string.
DATA: l_nm_fixed_record.
CONSTANTS: c_lpath TYPE pathintern VALUE 'ZOUT'.
TABLES: TST01, ZPHOPFLS, ZTEMSE_LOG, V_5UXY_A.
FIELD-SYMBOLS: <dtab> TYPE STANDARD TABLE,
<dline> TYPE ANY.
INCLUDE: dbpnpcom. " No logical database Do not modify!
INCLUDE: zphoptop, " Top Include Do not modify!
zphopfil. " File inlcude Do not modify!
SELECTION-SCREEN BEGIN OF BLOCK B1 WITH FRAME TITLE text-T01.
SELECTION-SCREEN BEGIN OF LINE.
SELECTION-SCREEN COMMENT 1(30) text-001.
SELECT-OPTIONS s_temse FOR TST01-dname NO INTERVALS.
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN END OF BLOCK B1.
SELECTION-SCREEN BEGIN OF BLOCK B2 WITH FRAME TITLE text-T02.
SELECT-OPTIONS s_cai FOR TST01-DCREATER NO INTERVALS.
SELECT-OPTIONS s_date FOR sy-datum.
SELECTION-SCREEN END OF BLOCK B2.
SELECTION-SCREEN BEGIN OF BLOCK B3 WITH FRAME TITLE text-T03.
PARAMETERS: p_ifid LIKE t9aoa-if_id MODIF ID DIS ,
p_fileid LIKE t9aoa-file_id MODIF ID DIS,
p_unixf(60) LOWER CASE MODIF ID DIS,
p_uxdir TYPE pathextern LOWER CASE MODIF ID DIS,
p_dstfil(45) LOWER CASE MODIF ID DIS.
SELECTION-SCREEN END OF BLOCK B3.
PARAMETERS: p_skip AS CHECKBOX.
DATA: ws_unixr LIKE p_unixf,
ws_trans LIKE p_unixf.
AT SELECTION-SCREEN OUTPUT.
LOOP AT SCREEN.
IF screen-group1 = 'DIS'.
screen-output = '1'.
screen-input = '0'.
MODIFY SCREEN.
ENDIF.
ENDLOOP.
INITIALIZATION.
p_ifid = 'PAYFLS'.
p_compid = 'HR00'.
p_fileid = '01'.
p_unixf = 'AFS'.
p_pswd = 'chevr123'.
p_skip = 'X'.
-End of Initialization--
PERFORM get_physical_path.
FORMAT COLOR COL_HEADING.
WRITE: /01 text-t04,
10 sy-pagno,
41 text-t05,
110 text-t06,
123 sy-datum.
WRITE: /01 text-t08,
14 sy-repid,
110 text-t07,
125 sy-uzeit.
FORMAT COLOR OFF.
SKIP.
WRITE: /(20) text-T21 CENTERED COLOR COL_HEADING,
(15) text-T22 CENTERED COLOR COL_HEADING,
(20) text-T23 CENTERED COLOR COL_HEADING,
(15) text-T24 CENTERED COLOR COL_HEADING,
(40) text-T25 CENTERED COLOR COL_HEADING.
START-OF-SELECTION.
*Do not allow background processing
*Check if the Temse file and CAI both are entered
IF NOT S_TEMSE IS INITIAL AND NOT S_CAI IS INITIAL.
MESSAGE W999 WITH TEXT-E01.
ELSEIF S_TEMSE IS INITIAL AND S_CAI IS INITIAL.
MESSAGE W999 WITH TEXT-E02.
ENDIF.
Collect all temse filenames from TST01 into an internal table.
IF NOT s_temse IS INITIAL.
SELECT dname dpart dcretime dcreater FROM TST01 INTO TABLE g_int_temse
WHERE dname in s_temse
AND dpart EQ '1'.
ELSE.
SELECT * FROM TST01
WHERE DCREATER in s_cai
AND DPART EQ '1'.
IF TST01-DCRETIME(8) GE s_date-low
AND TST01-DCRETIME(8) LE s_date-high.
MOVE-CORRESPONDING TST01 TO g_int_temse.
APPEND g_int_temse.
ENDIF.
ENDSELECT.
ENDIF.
SORT g_int_temse BY DNAME DPART DCRETIME.
LOOP AT g_int_temse.
Check if the temse file is already processed in ZTEMSE_LOG table.
SELECT SINGLE * FROM ZTEMSE_LOG
WHERE DNAME = g_int_temse-dname.
IF sy-subrc EQ 0.
error. Temse already processed
CONTINUE.
ENDIF.
Check if the temse file bieng processed is the eligible temse file
SELECT SINGLE * FROM V_5UXY_A
WHERE TSOBJ = g_int_temse-dname.
IF sy-subrc EQ 0.
SELECT SINGLE * FROM ZPHOPFLS
WHERE TAXAU = V_5UXY_A-TAXAU
AND TXFRM = V_5UXY_A-TXFRM.
IF sy-subrc EQ 0.
Generate the filename for the target destination
CONCATENATE ZPHOPFLS-FILENAME '.' sy-datum '.' sy-uzeit INTO p_dstfil.
ELSE.
error. Script not maintained in ZPHOPFLS table
CONTINUE.
ENDIF.
ELSE.
error. Temse file is not the latest processed file.
CONTINUE.
ENDIF.
CALL FUNCTION 'RP_TS_OPEN'
EXPORTING
tsobj = g_int_temse-dname
versn = g_int_temse-dpart
empfg = 'RPUTSVUM'.
COMMIT WORK.
REFRESH tape.
CLEAR tape.
Einlesen von der TemSe
CALL FUNCTION 'RSTS_READ'
EXPORTING
PARTS1BY1 = 'X'
TABLES
datatab = tape.
CALL FUNCTION 'RSTS_CLOSE'.
Read the 1st line which is supposed to contains info important for
the downloading procedure. The syntax of the line is :
SAPxxxnnnyyyy - the 1st 3 char 'SAP' indicates this line contains
download related info. xxx can either be 'ASC' (for ASCII) or 'EBC'
(for EBCDIC). nnn is the length of each record, e.g. 128 for SSA disk
format, 275 for SSA tape format etc. yyyy can either be 'CRLF' (each
record is delimited by CRLF) or blank (no CRLF).
After processing the 1st line, the line is deleted from the internal
table. Downloading begins on the 2nd line.
READ TABLE tape INDEX 1.
IF tape-data(3) EQ 'SAP'.
IF tape-data+3(3) EQ 'EBC'.
convert_to_ebcdic = 'x'.
ELSEIF tape-data+3(3) EQ 'ASC'
AND force_ascii EQ 'T'.
filetype = 'ASC'.
ENDIF.
IF tape-data+6(3) NA '*'.
record_length = tape-data+6(3).
ELSE.
record_length = tape-data+13(4).
ENDIF.
IF tape-data+9(4) EQ 'CRLF'.
data_length = record_length + 2.
ELSE.
data_length = record_length.
ENDIF.
DELETE tape INDEX 1.
ELSE.
data_length = record_length.
ENDIF.
Transfer the Temse file data to Unix file.
PERFORM transfer_file.
Update the Log table with the temse details.
ZTEMSE_LOG-dname = g_int_temse-dname.
ZTEMSE_LOG-txcmp = V_5UXY_A-taxau.
ZTEMSE_LOG-txfrm = V_5UXY_A-txfrm.
ZTEMSE_LOG-filename = ws_unixr.
ZTEMSE_LOG-DCREATER = g_int_temse-dcreater.
INSERT ZTEMSE_LOG.
WRITE: /(20) ZTEMSE_LOG-dname,
(15) ZTEMSE_LOG-txcmp,
(20) ZTEMSE_LOG-txfrm,
(15) ZTEMSE_LOG-dcreater,
(40) ZTEMSE_LOG-filename.
ENDLOOP.
*& Form get_physical_path
Get Physical directory name for the given logical path name
FORM get_physical_path .
CALL FUNCTION 'ZFILE_GET_PATH_NAME'
EXPORTING
LOGICAL_PATH = c_lpath
IMPORTING
FILE_NAME_PATH = p_uxdir
EXCEPTIONS
PATH_NOT_FOUND = 1
MISSING_PARAMETER = 2
OPERATING_SYSTEM_NOT_FOUND = 3
FILE_SYSTEM_NOT_FOUND = 4
OTHERS = 5.
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. " get_physical_path
*& Form TRANSFER_FILE
FORM transfer_file.
p_unixf = 'AFS'.
Concatenate Date with Unix File name
CONCATENATE p_unixf '.' p_compid '.' p_ifid '.' sy-datum '.' sy-uzeit INTO ws_unixr.
Concatenate Unix Directory with Unix File for Outbound
CONCATENATE p_uxdir ws_unixr INTO p_unixf.
PERFORM open_files USING p_unixf.
LOOP AT tape.
g_str = tape-data(record_length).
TRANSFER g_str TO p_unixf LENGTH record_length.
IF sy-subrc <> 0.
MESSAGE ID '00' TYPE 'E' NUMBER '398' WITH 'sy-subrc:' sy-subrc
' Error Transferring to: ' p_unixf.
ENDIF.
ENDLOOP.
PERFORM close_files USING p_unixf.
ENDFORM. " TRANSFER_FILE
Can anyone please check and tell me what I need to overcome this problem.Hi Bhaskar,
I also have the same requirement to upload TemSe files in to application server.
In FDTA tcode after we enter company code and click on enter.
In the second screen checking and line item and go to edit and click on download button.
Here we see a popup with default file name, and when we say ok the file will get downloaded into C:\.....
Here our req is to upload the file automatically pick up via batch job and place it in the in to the application server and from there it should be placed in the Netwrok server (UNIX).
Pls provide me with suitable code so that i can finish it off.I tried a lot but did not work.
Thanks. -
Serious Performance Problems in ABAP Reports
Hi All,
We are developing ABAP reports for SAP IS-U/CCS Modules and facing Performance issues.Whole scenario is given below.Please suggest some solution.
1. Total No. Of Business Partners = 1500000
2. Reports Selection Criteria are of two types:
a) GSBER(Business Area) - Selection for atleast 200000 Business Partners
b) Cokey(Division) - Selection for around 1000 to 50000 Business Partners
3. For implementing our reports logic we have to access several tables all of which are very large.They are :
Table Name No. of records (Appx)
DBERCHV 20000000
DBERCHZ1 20000000
DBERDLB 20000000
DFKKKO 20000000
DFKKOP 20000000
EANLH 4000000
ERCH 10000000
ERCHC 10000000
ETTIFN 30000000
EVER 1500000
FKKVKP 1500000
TECOKT 500
TGSBT 12
4. Due to large no. of records we are facing problems at two levels:
a) OpenSQL Statement is taking too much time for data selection
b) Since large no. of records are selected Corresponding loops and data processing also takes much time
5. We have tried almost all ABAP Performance optimization techniques such as using Index, SQL optimization techniques,Read Table Optimization, Loop Statement Optimization etc. but there is not much improvement.
6. For example one of our Reports "R15" takes around 1500 seconds for 1000 Business Partners.
Its Code is attached below:
<b>a) ZISU_SCHL_LTR15_BAPI - Program which schedules actual R15 report in background</b>
*& Report ZISU_SCHL_LTR15_BAPI *
*& Developed By : Piyusha Kirwai *
*& Date : 02/12/2005 *
*& Purpose : To Schedule the LT R 15 prog in background and store
*& the File for Manual R-15 into server.
REPORT ZISU_SCHL_LTR15_BAPI NO STANDARD PAGE HEADING.
TABLES ZEVERFKKVKP.
DATA: DYFIELDS LIKE DYNPREAD OCCURS 0 WITH HEADER LINE.
DATA: IT_TAB TYPE FILETABLE,
GD_SUBRC TYPE I.
DATA: LV_GSBER TYPE TGSBT-GSBER.
RANGES R_COKEY FOR ZEVERFKKVKP-COKEY.
DATA: BEGIN OF GT_TECOKT OCCURS 100,
COKEY TYPE TECOKT-COKEY,
LTEXT TYPE TECOKT-LTEXT,
END OF GT_TECOKT,
BEGIN OF GT_TE422 OCCURS 100,
TERMSCHL TYPE TE422-TERMSCHL,
TERMTEXT TYPE TE422-TERMTEXT,
END OF GT_TE422.
DATA: BEGIN OF GWA_MANUAL_DATA,
COL_1(5) TYPE C,
COL_2(10) TYPE C,
COL_3(40) TYPE C,
COL_4(40) TYPE C,
COL_5(10) TYPE C,
COL_6(19) TYPE C,
COL_7(19) TYPE C,
COL_8(19) TYPE C,
COL_9(19) TYPE C,
COL_10(19) TYPE C,
COL_11(19) TYPE C,
COL_12(10) TYPE C,
COL_13(19) TYPE C,
COL_14(19) TYPE C,
COL_15(19) TYPE C,
COL_16(19) TYPE C,
COL_17(19) TYPE C,
COL_18(19) TYPE C,
END OF GWA_MANUAL_DATA,
GT_MANUAL_DATA LIKE GWA_MANUAL_DATA OCCURS 0,
GT_INTERN_DATA TYPE ALSMEX_TABLINE OCCURS 0 WITH HEADER LINE.
*&-----FOR UPLOADING FILE TO SERVER------------------------------------*
DATA: LV_SERVER_FILE_PREFIX(60) TYPE C.
DATA: LV_SERVER_DATAFILE_NAME(60) TYPE C.
DATA: LV_SERVER_ERRFILE_NAME(60) TYPE C.
DATA: ENDT LIKE SY-UZEIT,
ENDD LIKE SY-DATUM,
JOBCOUNT TYPE TBTCJOB-JOBCOUNT.
SELECTION-SCREEN BEGIN OF BLOCK 001 WITH FRAME TITLE TEXT-001.
SELECT-OPTIONS: SO_GSBER FOR ZEVERFKKVKP-GSBER OBLIGATORY,
SO_COKEY FOR ZEVERFKKVKP-COKEY OBLIGATORY,
SO_MRU FOR ZEVERFKKVKP-ABLEINH.
PARAMETERS: P_BMNTH(7) TYPE C OBLIGATORY.
SELECT-OPTIONS: SO_GPART FOR ZEVERFKKVKP-GPART.
SELECTION-SCREEN END OF BLOCK 001.
SELECTION-SCREEN BEGIN OF BLOCK 002 WITH FRAME TITLE TEXT-003.
PARAMETERS: P_COMPUT RADIOBUTTON GROUP R15,
P_INCLUD RADIOBUTTON GROUP R15,
P_FILE TYPE RLGRAP-FILENAME MODIF ID ACT.
SELECTION-SCREEN END OF BLOCK 002.
SELECTION-SCREEN BEGIN OF LINE.
SELECTION-SCREEN COMMENT 2(83) TEXT-004.
SELECTION-SCREEN END OF LINE.
*SELECTION-SCREEN BEGIN OF LINE.
* SELECTION-SCREEN COMMENT 8(40) TEXT-005.
*SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN BEGIN OF BLOCK 003 WITH FRAME TITLE TEXT-002.
PARAMETERS P_SCHL TYPE C AS CHECKBOX.
PARAMETERS : P_IMMED RADIOBUTTON GROUP SCH ,
P_DT_TM RADIOBUTTON GROUP SCH,
P_DATE TYPE SY-DATUM MODIF ID SHL,
P_TIME TYPE SY-UZEIT MODIF ID SHL.
SELECTION-SCREEN END OF BLOCK 003.
AT SELECTION-SCREEN.
AT SELECTION-SCREEN ON SO_GSBER.
IF NOT SO_GSBER-LOW IS INITIAL.
SELECT SINGLE GSBER FROM TGSBT INTO LV_GSBER
WHERE GSBER = SO_GSBER-LOW.
IF SY-SUBRC <> 0.
MESSAGE E007(ZISU).
ENDIF.
ENDIF.
IF NOT SO_GSBER-HIGH IS INITIAL .
SELECT SINGLE GSBER FROM TGSBT INTO LV_GSBER
WHERE GSBER = SO_GSBER-HIGH.
IF SY-SUBRC <> 0.
MESSAGE E007(ZISU).
ENDIF.
ENDIF.
AT SELECTION-SCREEN ON P_BMNTH.
**check the validity of Billing month format and for valid billing month
IF P_BMNTH CO '0123456789/'.
IF P_BMNTH CP '++++/++'.
IF P_BMNTH+5(2) > 12.
MESSAGE E002(ZISU) WITH 'from'.
ENDIF.
** current year is less than year entered
IF SY-DATUM(4) < P_BMNTH(4).
MESSAGE E003(ZISU) WITH 'from'.
ELSEIF SY-DATUM(4) = P_BMNTH(4).
** month in future
IF SY-DATUM+4(2) < P_BMNTH+5(2).
MESSAGE E004(ZISU) WITH 'from'.
ENDIF.
ENDIF.
ELSE.
MESSAGE E001(ZISU) WITH 'from'.
ENDIF.
ELSE.
** entry have some invalid char
MESSAGE E010(ZISU).
ENDIF.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR SO_COKEY-LOW.
**for geting the CO account assigment key of the entered Business area
CLEAR: DYFIELDS[], DYFIELDS.
PERFORM DIVISON_DATA_GET CHANGING SO_COKEY-LOW.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR SO_COKEY-HIGH.
**for geting the CO account assigment key of the entered Business area
CLEAR: DYFIELDS[], DYFIELDS.
PERFORM DIVISON_DATA_GET CHANGING SO_COKEY-HIGH.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR SO_MRU-LOW.
CLEAR: DYFIELDS[], DYFIELDS.
PERFORM MRU_DATA_GET CHANGING SO_MRU-LOW.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR SO_MRU-HIGH.
CLEAR: DYFIELDS[], DYFIELDS.
PERFORM MRU_DATA_GET CHANGING SO_MRU-HIGH.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_FILE.
REFRESH: IT_TAB.
**Opens File Open Dialog Box for selecting input file.
CALL METHOD CL_GUI_FRONTEND_SERVICES=>FILE_OPEN_DIALOG
EXPORTING
WINDOW_TITLE = 'Select File'
DEFAULT_FILENAME = '*.xls'
MULTISELECTION = ' '
CHANGING
FILE_TABLE = IT_TAB
RC = GD_SUBRC.
LOOP AT IT_TAB INTO P_FILE.
* so_fpath-sign = 'I'.
* so_fpath-option = 'EQ'.
* append so_fpath.
ENDLOOP.
AT SELECTION-SCREEN OUTPUT.
LOOP AT SCREEN.
IF SCREEN-GROUP1 = 'ACT'.
IF P_INCLUD = ' '.
SCREEN-INPUT = '0'.
ELSE.
SCREEN-INPUT = '1'.
ENDIF.
ENDIF.
IF SCREEN-GROUP1 = 'SHL'.
IF P_DT_TM = 'X'.
SCREEN-INPUT = '1'.
ELSE.
SCREEN-INPUT = '0'.
ENDIF.
ENDIF.
MODIFY SCREEN.
ENDLOOP.
INITIALIZATION.
P_DATE = SY-DATUM.
P_TIME = SY-UZEIT + 180.
START-OF-SELECTION.
IF P_INCLUD = 'X' AND P_FILE IS INITIAL.
MESSAGE 'Enter the Manual R-15 File' TYPE 'E'.
ENDIF.
* IF P_INCLUD = 'X'.
* PERFORM UPLOAD_EXCEL_FILE.
* CONCATENATE 'R15' SY-DATUM '-' SY-UZEIT INTO LV_SERVER_FILE_PREFIX.
* CONCATENATE LV_SERVER_FILE_PREFIX '-' 'LT.TMP' INTO
* LV_SERVER_DATAFILE_NAME.
* OPEN DATASET LV_SERVER_DATAFILE_NAME
* FOR OUTPUT
* IN TEXT MODE
* ENCODING DEFAULT.
* LOOP AT GT_MANUAL_DATA INTO GWA_MANUAL_DATA.
* IF ( GWA_MANUAL_DATA-COL_6 CN '0123456789 '
* AND GWA_MANUAL_DATA-COL_7 CN '0123456789 '
* AND GWA_MANUAL_DATA-COL_8 CN '0123456789 '
* AND GWA_MANUAL_DATA-COL_9 CN '0123456789 '
* AND GWA_MANUAL_DATA-COL_10 CN '0123456789 '
* AND GWA_MANUAL_DATA-COL_11 CN '0123456789 '
* AND GWA_MANUAL_DATA-COL_13 CN '0123456789 '
* AND GWA_MANUAL_DATA-COL_14 CN '0123456789 '
* AND GWA_MANUAL_DATA-COL_15 CN '0123456789 '
* AND GWA_MANUAL_DATA-COL_16 CN '0123456789 '
* AND GWA_MANUAL_DATA-COL_17 CN '0123456789 '
* AND GWA_MANUAL_DATA-COL_18 CN '0123456789 ' ).
* MESSAGE 'Character Data in Numerical Field' TYPE 'E'.
* ENDIF.
* TRANSFER GWA_MANUAL_DATA TO LV_SERVER_DATAFILE_NAME.
* ENDLOOP.
* CLOSE DATASET LV_SERVER_DATAFILE_NAME.
* ENDIF. " P_INCLUD = 'X'.
IF P_SCHL = 'X'.
IF P_IMMED = 'X'.
CALL FUNCTION 'C14B_ADD_TIME'
EXPORTING
I_STARTTIME = SY-UZEIT
I_STARTDATE = SY-DATUM
I_ADDTIME = '000010'
IMPORTING
E_ENDTIME = ENDT
E_ENDDATE = ENDD.
ELSEIF P_DT_TM = 'X'.
ENDD = P_DATE.
ENDT = P_TIME.
ENDIF.
CALL FUNCTION 'JOB_OPEN'
EXPORTING
* DELANFREP = ' '
* JOBGROUP = ' '
JOBNAME = 'R15JOB'
* SDLSTRTDT = ENDD
* SDLSTRTTM = ENDT
* JOBCLASS =
IMPORTING
JOBCOUNT = JOBCOUNT
* CHANGING
* RET =
* EXCEPTIONS
* CANT_CREATE_JOB = 1
* INVALID_JOB_DATA = 2
* JOBNAME_MISSING = 3
* OTHERS = 4
IF SY-SUBRC <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
IF P_INCLUD = 'X'.
PERFORM UPLOAD_EXCEL_FILE.
CONCATENATE 'R15' SY-DATUM '-' SY-UZEIT INTO LV_SERVER_FILE_PREFIX.
CONCATENATE LV_SERVER_FILE_PREFIX '-' JOBCOUNT 'LT.TMP' INTO
LV_SERVER_DATAFILE_NAME.
CONDENSE LV_SERVER_DATAFILE_NAME.
OPEN DATASET LV_SERVER_DATAFILE_NAME
FOR OUTPUT
IN TEXT MODE
ENCODING DEFAULT.
IF SY-SUBRC NE 0.
MESSAGE 'Error in Creating File on Server' TYPE 'E'.
ENDIF.
LOOP AT GT_MANUAL_DATA INTO GWA_MANUAL_DATA.
IF ( GWA_MANUAL_DATA-COL_6 CN '0123456789 '
AND GWA_MANUAL_DATA-COL_7 CN '0123456789 '
AND GWA_MANUAL_DATA-COL_8 CN '0123456789 '
AND GWA_MANUAL_DATA-COL_9 CN '0123456789 '
AND GWA_MANUAL_DATA-COL_10 CN '0123456789 '
AND GWA_MANUAL_DATA-COL_11 CN '0123456789 '
AND GWA_MANUAL_DATA-COL_13 CN '0123456789 '
AND GWA_MANUAL_DATA-COL_14 CN '0123456789 '
AND GWA_MANUAL_DATA-COL_15 CN '0123456789 '
AND GWA_MANUAL_DATA-COL_16 CN '0123456789 '
AND GWA_MANUAL_DATA-COL_17 CN '0123456789 '
AND GWA_MANUAL_DATA-COL_18 CN '0123456789 ' ).
MESSAGE 'Character Data in Numerical Field' TYPE 'E'.
ENDIF.
TRANSFER GWA_MANUAL_DATA TO LV_SERVER_DATAFILE_NAME.
ENDLOOP.
CLOSE DATASET LV_SERVER_DATAFILE_NAME.
IF SY-SUBRC NE 0.
MESSAGE 'Error in Creating File on Server' TYPE 'E'.
ENDIF.
ENDIF. " P_INCLUD = 'X'.
SUBMIT ZISU_LTR15_TUNE
WITH SO_GSBER IN SO_GSBER
WITH SO_COKEY IN SO_COKEY
WITH SO_MRU IN SO_MRU
WITH SO_GPART IN SO_GPART
WITH P_BMNTH = P_BMNTH
WITH P_COMPUT = P_COMPUT
WITH P_INCLUD = P_INCLUD
WITH P_FILE = LV_SERVER_DATAFILE_NAME
USER SY-UNAME VIA JOB 'R15JOB' NUMBER JOBCOUNT AND RETURN.
CALL FUNCTION 'JOB_CLOSE'
EXPORTING
* AT_OPMODE = ' '
* AT_OPMODE_PERIODIC = ' '
* CALENDAR_ID = ' '
* EVENT_ID = ' '
* EVENT_PARAM = ' '
* EVENT_PERIODIC = ' '
JOBCOUNT = JOBCOUNT
JOBNAME = 'R15JOB'
* LASTSTRTDT = NO_DATE
* LASTSTRTTM = NO_TIME
* PRDDAYS = 0
* PRDHOURS = 0
* PRDMINS = 0
* PRDMONTHS = 0
* PRDWEEKS = 0
* PREDJOB_CHECKSTAT = ' '
* PRED_JOBCOUNT = ' '
* PRED_JOBNAME = ' '
SDLSTRTDT = ENDD
SDLSTRTTM = ENDT
* STARTDATE_RESTRICTION = BTC_PROCESS_ALWAYS
STRTIMMED = P_IMMED
* TARGETSYSTEM = ' '
* START_ON_WORKDAY_NOT_BEFORE = SY-DATUM
* START_ON_WORKDAY_NR = 0
* WORKDAY_COUNT_DIRECTION = 0
* RECIPIENT_OBJ =
* TARGETSERVER = ' '
* DONT_RELEASE = ' '
* TARGETGROUP = ' '
* DIRECT_START =
* IMPORTING
* JOB_WAS_RELEASED =
* CHANGING
* RET =
* EXCEPTIONS
* CANT_START_IMMEDIATE = 1
* INVALID_STARTDATE = 2
* JOBNAME_MISSING = 3
* JOB_CLOSE_FAILED = 4
* JOB_NOSTEPS = 5
* JOB_NOTEX = 6
* LOCK_FAILED = 7
* INVALID_TARGET = 8
* OTHERS = 9
IF SY-SUBRC <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
ELSE. " IF NOT TO RUN IN BACKGROUND
IF P_INCLUD = 'X'.
PERFORM UPLOAD_EXCEL_FILE.
CONCATENATE 'R15' SY-DATUM '-' SY-UZEIT INTO LV_SERVER_FILE_PREFIX.
CONCATENATE LV_SERVER_FILE_PREFIX '-' 'LT.TMP' INTO
LV_SERVER_DATAFILE_NAME.
CONDENSE LV_SERVER_DATAFILE_NAME.
OPEN DATASET LV_SERVER_DATAFILE_NAME
FOR OUTPUT
IN TEXT MODE
ENCODING DEFAULT.
IF SY-SUBRC NE 0.
MESSAGE 'Error in Creating File on Server' TYPE 'E'.
ENDIF.
LOOP AT GT_MANUAL_DATA INTO GWA_MANUAL_DATA.
IF ( GWA_MANUAL_DATA-COL_6 CN '0123456789 '
AND GWA_MANUAL_DATA-COL_7 CN '0123456789 '
AND GWA_MANUAL_DATA-COL_8 CN '0123456789 '
AND GWA_MANUAL_DATA-COL_9 CN '0123456789 '
AND GWA_MANUAL_DATA-COL_10 CN '0123456789 '
AND GWA_MANUAL_DATA-COL_11 CN '0123456789 '
AND GWA_MANUAL_DATA-COL_13 CN '0123456789 '
AND GWA_MANUAL_DATA-COL_14 CN '0123456789 '
AND GWA_MANUAL_DATA-COL_15 CN '0123456789 '
AND GWA_MANUAL_DATA-COL_16 CN '0123456789 '
AND GWA_MANUAL_DATA-COL_17 CN '0123456789 '
AND GWA_MANUAL_DATA-COL_18 CN '0123456789 ' ).
MESSAGE 'Character Data in Numerical Field' TYPE 'E'.
ENDIF.
TRANSFER GWA_MANUAL_DATA TO LV_SERVER_DATAFILE_NAME.
ENDLOOP.
CLOSE DATASET LV_SERVER_DATAFILE_NAME.
IF SY-SUBRC NE 0.
MESSAGE 'Error in Creating File on Server' TYPE 'E'.
ENDIF.
ENDIF. " P_INCLUD = 'X'.
IF NOT SY-BATCH IS INITIAL.
SUBMIT ZISU_LTR15_TUNE
WITH SO_GSBER IN SO_GSBER
WITH SO_COKEY IN SO_COKEY
WITH SO_MRU IN SO_MRU
WITH SO_GPART IN SO_GPART
WITH P_BMNTH = P_BMNTH
WITH P_COMPUT = P_COMPUT
WITH P_INCLUD = P_INCLUD
WITH P_FILE = LV_SERVER_DATAFILE_NAME
TO SAP-SPOOL WITHOUT SPOOL DYNPRO.
ELSE.
SUBMIT ZISU_LTR15_TUNE
WITH SO_GSBER IN SO_GSBER
WITH SO_COKEY IN SO_COKEY
WITH SO_MRU IN SO_MRU
WITH SO_GPART IN SO_GPART
WITH P_BMNTH = P_BMNTH
WITH P_COMPUT = P_COMPUT
WITH P_INCLUD = P_INCLUD
WITH P_FILE = LV_SERVER_DATAFILE_NAME.
ENDIF.
ENDIF.
*& Form divison_data_get
* text
* <--P_SO_COKEY_LOW text
FORM DIVISON_DATA_GET CHANGING P_SO_COKEY_LOW.
**to get the search help for division
DATA : LV_LINES TYPE SY-TFILL,
LT_RETURN_TAB LIKE DDSHRETVAL OCCURS 0, " with header line.
LWA_RETURN_TAB LIKE DDSHRETVAL.
DATA: LV_COKEY TYPE ZEVERFKKVKP-COKEY.
**according to the Business area entered]
* break csebdev1.
REFRESH R_COKEY[].
DESCRIBE TABLE SO_GSBER LINES LV_LINES.
** when user has neither pressed the enter key nor selected the values
**using search help
IF LV_LINES = 0.
* loop at so_gsber.
CLEAR R_COKEY.
* if so_gsber-high is initial.
* break csebdev1.
DYFIELDS-FIELDNAME = 'SO_GSBER-LOW'.
APPEND DYFIELDS.
CALL FUNCTION 'DYNP_VALUES_READ'
EXPORTING
DYNAME = SY-CPROG
DYNUMB = SY-DYNNR
TABLES
DYNPFIELDS = DYFIELDS.
* r_cokey-sign = 'I'.
* r_cokey-option = 'CP'.
*r_cokey-low = so_gsber-low+0(2).
CONCATENATE DYFIELDS-FIELDVALUE+0(2) '*' INTO R_COKEY-LOW.
* elseif not so_gsber-high is initial.
DYFIELDS-FIELDNAME = 'SO_GSBER-HIGH'.
APPEND DYFIELDS.
CALL FUNCTION 'DYNP_VALUES_READ'
EXPORTING
DYNAME = SY-CPROG
DYNUMB = SY-DYNNR
TABLES
DYNPFIELDS = DYFIELDS.
IF NOT DYFIELDS-FIELDVALUE IS INITIAL.
CONCATENATE DYFIELDS-FIELDVALUE+0(2) '99999999' INTO R_COKEY-HIGH.
ENDIF.
* endif.
IF NOT R_COKEY-HIGH IS INITIAL.
R_COKEY-SIGN = 'I'.
R_COKEY-OPTION = 'BT'.
ELSEIF R_COKEY-HIGH IS INITIAL.
R_COKEY-SIGN = 'I'.
R_COKEY-OPTION = 'CP'.
ENDIF.
APPEND R_COKEY.
ENDIF.
* endloop.
* APPEND DYFIELDS.
IF LV_LINES > 0.
* break-point.
IF NOT SO_GSBER[] IS INITIAL.
LOOP AT SO_GSBER.
* r_cokey-sign = 'I'.
* r_cokey-option = 'CP'.
*r_cokey-low = so_gsber-low+0(2).
CONCATENATE SO_GSBER-LOW+0(2) '*' INTO R_COKEY-LOW.
IF NOT SO_GSBER-HIGH IS INITIAL.
CONCATENATE SO_GSBER-HIGH+0(2) '99999999' INTO R_COKEY-HIGH.
ENDIF.
IF NOT R_COKEY-HIGH IS INITIAL.
R_COKEY-SIGN = 'I'.
R_COKEY-OPTION = 'BT'.
ELSEIF R_COKEY-HIGH IS INITIAL.
R_COKEY-SIGN = 'I'.
R_COKEY-OPTION = 'CP'.
ENDIF.
APPEND R_COKEY TO R_COKEY.
ENDLOOP.
ENDIF.
ENDIF.
IF NOT R_COKEY[] IS INITIAL.
* break csebdev1.
REFRESH GT_TECOKT[].
SELECT COKEY LTEXT
FROM TECOKT
INTO TABLE GT_TECOKT
WHERE COKEY IN R_COKEY AND SPRAS = 'EN'.
* %_HINTS ORACLE '("TECOKT","TECOKT~1")'.
ENDIF.
**now call the search help
CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
EXPORTING
* DDIC_STRUCTURE = ' '
RETFIELD = 'COKEY'
* PVALKEY = ' '
* DYNPPROG = ' '
* DYNPNR = ' '
* DYNPROFIELD = ' '
* STEPL = 0
WINDOW_TITLE = 'Division'
VALUE = DYFIELDS-FIELDVALUE
VALUE_ORG = 'S'
* MULTIPLE_CHOICE = ' '
* DISPLAY = ' '
* CALLBACK_PROGRAM = ' '
* CALLBACK_FORM = ' '
* MARK_TAB =
* IMPORTING
* USER_RESET =
TABLES
VALUE_TAB = GT_TECOKT
* FIELD_TAB =
RETURN_TAB = LT_RETURN_TAB
* DYNPFLD_MAPPING =
* EXCEPTIONS
* PARAMETER_ERROR = 1
* NO_VALUES_FOUND = 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.
READ TABLE LT_RETURN_TAB INTO LWA_RETURN_TAB INDEX 1.
LV_COKEY = LWA_RETURN_TAB-FIELDVAL.
*break csebdev1.
ENDFORM. " divison_data_get
*& Form upload_excel_file
* text
* --> p1 text
* <-- p2 text
FORM UPLOAD_EXCEL_FILE .
DATA: LV_INDEX TYPE I.
FIELD-SYMBOLS <VAL> TYPE ANY.
CALL FUNCTION 'ALSM_EXCEL_TO_INTERNAL_TABLE'
EXPORTING
FILENAME = P_FILE
I_BEGIN_COL = 1
I_BEGIN_ROW = 8
I_END_COL = 18
I_END_ROW = 94
TABLES
INTERN = GT_INTERN_DATA
EXCEPTIONS
INCONSISTENT_PARAMETERS = 1
UPLOAD_OLE = 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.
IF NOT GT_INTERN_DATA[] IS INITIAL.
SORT GT_INTERN_DATA BY ROW COL.
LOOP AT GT_INTERN_DATA.
MOVE GT_INTERN_DATA-COL TO LV_INDEX.
ASSIGN COMPONENT LV_INDEX OF STRUCTURE GWA_MANUAL_DATA TO <VAL>.
MOVE GT_INTERN_DATA-VALUE TO <VAL>.
AT END OF ROW.
APPEND GWA_MANUAL_DATA TO GT_MANUAL_DATA.
CLEAR GWA_MANUAL_DATA.
ENDAT.
ENDLOOP.
ENDIF.
ENDFORM. " upload_excel_file
*& Form MRU_DATA_GET
* text
* <--P_SO_MRU_LOW text
FORM MRU_DATA_GET CHANGING LV_MRU.
**to get the search help for Group
DATA : LV_LINES TYPE SY-TFILL,
LT_RETURN_TAB LIKE DDSHRETVAL OCCURS 0,
LWA_RETURN_TAB LIKE DDSHRETVAL.
* lv_mru_p(3) type c.
RANGES R_MRU FOR EANLH-ABLEINH.
**according to the Business area entered
** break csebdev1.
REFRESH R_MRU[].
DESCRIBE TABLE SO_GSBER LINES LV_LINES.
** when user has neither pressed the enter key nor selected the values
**using search help
IF LV_LINES = 0.
CLEAR R_MRU[].
DYFIELDS-FIELDNAME = 'SO_GSBER-LOW'.
APPEND DYFIELDS.
CALL FUNCTION 'DYNP_VALUES_READ'
EXPORTING
DYNAME = SY-CPROG
DYNUMB = SY-DYNNR
TABLES
DYNPFIELDS = DYFIELDS.
CONCATENATE DYFIELDS-FIELDVALUE+0(2) '*' INTO R_MRU-LOW.
DYFIELDS-FIELDNAME = 'SO_GSBER-HIGH'.
APPEND DYFIELDS.
CALL FUNCTION 'DYNP_VALUES_READ'
EXPORTING
DYNAME = SY-CPROG
DYNUMB = SY-DYNNR
TABLES
DYNPFIELDS = DYFIELDS.
IF NOT DYFIELDS-FIELDVALUE IS INITIAL.
CONCATENATE DYFIELDS-FIELDVALUE+0(2) '99999999' INTO R_MRU-HIGH.
ENDIF.
IF NOT R_MRU-HIGH IS INITIAL.
R_MRU-SIGN = 'I'.
R_MRU-OPTION = 'BT'.
ELSEIF R_MRU-HIGH IS INITIAL.
R_MRU-SIGN = 'I'.
R_MRU-OPTION = 'CP'.
ENDIF.
APPEND R_MRU.
ENDIF. " end lv_lines =0
IF LV_LINES > 0.
IF NOT SO_GSBER[] IS INITIAL.
LOOP AT SO_GSBER.
CONCATENATE SO_GSBER-LOW+0(2) '*' INTO R_MRU-LOW.
IF NOT SO_GSBER-HIGH IS INITIAL.
CONCATENATE SO_GSBER-HIGH+0(2) '99999999' INTO R_MRU-HIGH.
ENDIF.
IF R_MRU-HIGH IS INITIAL.
R_MRU-SIGN = 'I'.
R_MRU-OPTION = 'CP'.
ELSEIF NOT R_MRU-HIGH IS INITIAL.
R_MRU-SIGN = 'I'.
R_MRU-OPTION = 'BT'.
ENDIF.
APPEND R_MRU.
ENDLOOP.
ENDIF. " end so_GSBER[]
ENDIF. " end lv_lines > 0
IF NOT R_MRU[] IS INITIAL.
* break csebdev1.
REFRESH GT_TE422[].
SELECT TERMSCHL TERMTEXT FROM TE422 INTO CORRESPONDING FIELDS OF
TABLE GT_TE422 WHERE TERMSCHL IN R_MRU .
ENDIF.
**now call the search help
CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
EXPORTING
* DDIC_STRUCTURE = ' '
RETFIELD = 'TERMSCHL'
* PVALKEY = ' '
* DYNPPROG = ' '
* DYNPNR = ' '
* DYNPROFIELD = ' '
* STEPL = 0
WINDOW_TITLE = 'Group'
VALUE = DYFIELDS-FIELDVALUE
VALUE_ORG = 'S'
* MULTIPLE_CHOICE = ' '
* DISPLAY = ' '
* CALLBACK_PROGRAM = ' '
* CALLBACK_FORM = ' '
* MARK_TAB =
* IMPORTING
* USER_RESET =
TABLES
VALUE_TAB = GT_TE422
* FIELD_TAB =
RETURN_TAB = LT_RETURN_TAB
* DYNPFLD_MAPPING =
* EXCEPTIONS
* PARAMETER_ERROR = 1
* NO_VALUES_FOUND = 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.
READ TABLE LT_RETURN_TAB INTO LWA_RETURN_TAB INDEX 1.
LV_MRU = LWA_RETURN_TAB-FIELDVAL.
ENDFORM. " MRU_DATA_GET
<b>b) ZISU_LTR15_TUNE - Actual R15 report</b>
*& Report ZISU_LTR15_TUNE *
REPORT ZISU_LTR15_TUNE NO STANDARD PAGE HEADING MESSAGE-ID ZISU
LINE-SIZE 250 LINE-COUNT 65.
**Tables
TABLES : EVER,
FKKVKP,
EANLH.
SELECTION-SCREEN BEGIN OF BLOCK SELECTION
WITH FRAME TITLE TEXT-001 . "no intervals.
SELECT-OPTIONS: SO_GSBER FOR EVER-GSBER OBLIGATORY,
SO_COKEY FOR EVER-COKEY,
SO_MRU FOR EANLH-ABLEINH.
PARAMETERS: P_BMNTH(7) TYPE C OBLIGATORY.
PARAMETERS: P_CONT TYPE EVER-VERTRAG.
SELECT-OPTIONS: SO_GPART FOR FKKVKP-GPART.
SELECTION-SCREEN END OF BLOCK SELECTION.
SELECTION-SCREEN BEGIN OF BLOCK PROCESS WITH FRAME.
PARAMETERS: P_COMPUT RADIOBUTTON GROUP R15.
PARAMETERS: P_INCLUD RADIOBUTTON GROUP R15,
P_FILE(60) TYPE C.
SELECTION-SCREEN END OF BLOCK PROCESS.
* Start of Type declaration
TYPES: BEGIN OF ST_TB024 ,
IND_SECTOR TYPE TB024-IND_SECTOR,
TEXTLONG TYPE TB024-TEXTLONG,
END OF ST_TB024,
BEGIN OF ST_TECOKT,
COKEY TYPE TECOKT-COKEY,
LTEXT TYPE TECOKT-LTEXT,
END OF ST_TECOKT,
BEGIN OF ST_TGSBT,
GSBER TYPE TGSBT-GSBER,
GTEXT TYPE TGSBT-GTEXT,
END OF ST_TGSBT,
BEGIN OF ST_TE422,
TERMSCHL TYPE TE422-TERMSCHL,
TERMTEXT TYPE TE422-TERMTEXT,
END OF ST_TE422.
* Start of data declaration
DATA: IT_TAB TYPE FILETABLE,
GD_SUBRC TYPE I.
DATA : GT_TB024 TYPE STANDARD TABLE OF ST_TB024 WITH HEADER LINE
INITIAL SIZE 0,
GT_TECOKT TYPE STANDARD TABLE OF ST_TECOKT
WITH HEADER LINE,
GT_TGSBT TYPE SORTED TABLE OF ST_TGSBT
WITH UNIQUE KEY GSBER WITH HEADER LINE,
GT_TE422 TYPE TABLE OF ST_TE422 WITH HEADER LINE INITIAL SIZE 0,
BEGIN OF GWA_EVER,
VKONT TYPE EVER-VKONTO,
ANLAGE TYPE EVER-ANLAGE,
ABRSPERR TYPE EVER-ABRSPERR,
END OF GWA_EVER,
GT_EVER LIKE TABLE OF GWA_EVER INITIAL SIZE 0,
BEGIN OF GWA_EANLH,
ANLAGE TYPE EANLH-ANLAGE,
BRANCHE TYPE EANLH-BRANCHE,
END OF GWA_EANLH,
GT_EANLH LIKE TABLE OF GWA_EANLH INITIAL SIZE 0,
BEGIN OF GWA_FKKVKP,
VKONT TYPE FKKVKP-VKONT,
KTOKL TYPE FKKVKP-KTOKL,
END OF GWA_FKKVKP,
GT_FKKVKP LIKE TABLE OF GWA_FKKVKP INITIAL SIZE 0,
BEGIN OF GWA_EVER_EANLH_FKKVKP,
VKONT TYPE FKKVKP-VKONT,
ANLAGE TYPE EVER-ANLAGE,
ABRSPERR TYPE EVER-ABRSPERR,
BRANCHE TYPE EANLH-BRANCHE,
KTOKL TYPE FKKVKP-KTOKL,
END OF GWA_EVER_EANLH_FKKVKP,
GT_EVER_EANLH_FKKVKP LIKE TABLE OF GWA_EVER_EANLH_FKKVKP
INITIAL SIZE 0,
GT_EVER_EANLH_FKKVKP_INACT LIKE STANDARD TABLE OF
GWA_EVER_EANLH_FKKVKP INITIAL SIZE 0,
BEGIN OF GWA_ERCH,
BELNR TYPE ERCH-BELNR,
VKONT TYPE ERCH-VKONT,
END OF GWA_ERCH,
GT_ERCH LIKE TABLE OF GWA_ERCH INITIAL SIZE 0,
BEGIN OF GWA_PRINTDOC,
OPBEL TYPE ERDK-OPBEL,
GPART TYPE ERDK-PARTNER,
VKONT TYPE ERDK-VKONT,
BUDAT TYPE ERDK-BUDAT,
FAEDN TYPE ERDK-FAEDN,
END OF GWA_PRINTDOC,
GT_PRINTDOC LIKE TABLE OF GWA_PRINTDOC INITIAL SIZE 0,
BEGIN OF GWA_DBERCHZ1,
BELNR TYPE DBERCHZ1-BELNR,
EIN01 TYPE DBERCHZ1-EIN01,
V_ABRMENGE TYPE DBERCHZ1-V_ABRMENGE,
END OF GWA_DBERCHZ1,
GT_DBERCHZ1 LIKE TABLE OF GWA_DBERCHZ1 INITIAL SIZE 0,
BEGIN OF GWA_ERCHC,
BELNR TYPE ERCHC-BELNR,
OPBEL TYPE ERCHC-OPBEL,
BUDAT TYPE ERCHC-BUDAT,
END OF GWA_ERCHC,
GT_ERCHC LIKE TABLE OF GWA_ERCHC INITIAL SIZE 0,
* arrears for inactive consumers.
BEGIN OF GWA_DFKKOP_INACTIVE_ARR,
OPBEL TYPE DFKKOP-OPBEL,
VKONT TYPE DFKKOP-VKONT,
BETRH TYPE DFKKOP-BETRH,
END OF GWA_DFKKOP_INACTIVE_ARR,
GT_DFKKOP_INACTIVE_ARR LIKE TABLE OF GWA_DFKKOP_INACTIVE_ARR
INITIAL SIZE 0,
BEGIN OF GWA_ETTIFN,
ANLAGE TYPE ETTIFN-ANLAGE,
OPERAND TYPE ETTIFN-OPERAND,
WERT1 TYPE ETTIFN-WERT1,
END OF GWA_ETTIFN,
GT_ETTIFN LIKE SORTED TABLE OF GWA_ETTIFN
WITH NON-UNIQUE KEY ANLAGE OPERAND INITIAL SIZE 0,
BEGIN OF GWA_DBERDLB,
PRINTDOC TYPE DBERDLB-PRINTDOC,
BILLDOC TYPE DBERDLB-BILLDOC,
BILLDOCLINE TYPE DBERDLB-BILLDOCLINE,
NETTOBTR TYPE DBERDLB-NETTOBTR,
END OF GWA_DBERDLB,
GT_DBERDLB LIKE TABLE OF GWA_DBERDLB INITIAL SIZE 0,
BEGIN OF GWA_DBERCHZ1_BILL,
BELNR TYPE DBERCHZ1-BELNR,
BELZEILE TYPE DBERCHZ1-BELZEILE,
TVORG TYPE DBERCHZ1-TVORG,
END OF GWA_DBERCHZ1_BILL,
GT_DBERCHZ1_BILL LIKE TABLE OF GWA_DBERCHZ1_BILL INITIAL SIZE 0,
BEGIN OF GWA_BILLDOC,
PRINTDOC TYPE ERDK-OPBEL,
BILLDOC TYPE DBERDLB-BILLDOC,
END OF GWA_BILLDOC,
GT_BILLDOC LIKE TABLE OF GWA_BILLDOC INITIAL SIZE 0,
BEGIN OF GWA_DBERCHV,
BELNR TYPE DBERCHV-BELNR,
OPERAND TYPE DBERCHV-OPERAND,
EZ_ABRMENGE TYPE DBERCHV-EZ_ABRMENGE,
ABLESGR TYPE DBERCHV-ABLESGR,
ABLESGRV TYPE DBERCHV-ABLESGRV,
END OF GWA_DBERCHV,
GT_DBERCHV LIKE TABLE OF GWA_DBERCHV INITIAL SIZE 0,
BEGIN OF GWA_DFKKOP_ARREAR,
OPBEL TYPE DFKKOP-OPBEL,
VKONT TYPE DFKKOP-VKONT,
HVORG TYPE DFKKOP-HVORG,
TVORG TYPE DFKKOP-TVORG,
BUDAT TYPE DFKKOP-BUDAT,
BETRH TYPE DFKKOP-BETRH,
AUGDT TYPE DFKKOP-AUGDT,
XBLNR TYPE DFKKOP-XBLNR,
END OF GWA_DFKKOP_ARREAR,
GT_DFKKOP_ARREAR LIKE TABLE OF GWA_DFKKOP_ARREAR INITIAL SIZE 0,
BEGIN OF GWA_MASTER_DATA,
SLNO(4) TYPE C,
IND_SECTOR TYPE TB024-IND_SECTOR,
TEXTLONG TYPE TB024-TEXTLONG,
AC_CODE TYPE TFK033D-FUN01,
END OF GWA_MASTER_DATA,
GT_MASTER_DATA LIKE TABLE OF GWA_MASTER_DATA INITIAL SIZE 0,
** internal table for final prepared data
BEGIN OF GWA_FINAL_DATA,
SLNO(4) TYPE C,
IND_SECTOR TYPE TB024-IND_SECTOR, " for testing
INDUSTRY TYPE TB024-TEXTLONG,
AC_CODE TYPE TFK033D-FUN01,
* *for urban partners
UPARTNER TYPE I , "(6) type n,
UBAD_METER TYPE I, "(4) type n,
UINACTIVE TYPE I,
ULOAD(8) TYPE P DECIMALS 2,
UUNITS(8) TYPE P DECIMALS 2,
UDEMANDS(8) TYPE P DECIMALS 2,
UARREARS(8) TYPE P DECIMALS 2, "FKKMAKO-Msalm,
UINACT_ARR(8) TYPE P DECIMALS 2,
BLANK(10) TYPE C,
* *for rural partners
RPARTNER TYPE I , "(6) type n,
RBAD_METER TYPE I , "(4) type n,
RINACTIVE TYPE I,
RLOAD(8) TYPE P DECIMALS 2,
RUNITS(8) TYPE P DECIMALS 2,
RDEMANDS(8) TYPE P DECIMALS 2,
RARREARS(8) TYPE P DECIMALS 2,
RINACT_ARR(8) TYPE P DECIMALS 2,
END OF GWA_FINAL_DATA,
GT_FINAL_DATA LIKE TABLE OF GWA_FINAL_DATA INITIAL SIZE 0,
BEGIN OF GWA_MANUAL_DATA,
COL_1(5) TYPE C,
COL_2(10) TYPE C,
COL_3(40) TYPE C,
COL_4(40) TYPE C,
COL_5(10) TYPE C,
COL_6(19) TYPE C,
COL_7(19) TYPE C,
COL_8(19) TYPE C,
COL_9(19) TYPE C,
COL_10(19) TYPE C,
COL_11(19) TYPE C,
COL_12(10) TYPE C,
COL_13(19) TYPE C,
COL_14(19) TYPE C,
COL_15(19) TYPE C,
COL_16(19) TYPE C,
COL_17(19) TYPE C,
COL_18(19) TYPE C,
END OF GWA_MANUAL_DATA,
GT_MANUAL_DATA LIKE TABLE OF GWA_MANUAL_DATA INITIAL SIZE 0.
** Variables for grand total of all heads.
DATA : GV_T_UPART TYPE I,
GV_T_RPART TYPE I,
GV_T_RINACTIVE TYPE I,
GV_T_UINACTIVE TYPE I,
GV_UDEF_MTR TYPE I,
GV_RDEF_MTR TYPE I,
GV_UCON_LOAD(16) TYPE P DECIMALS 2,
GV_RCON_LOAD(16) TYPE P DECIMALS 2,
GV_UUNITS(16) TYPE P DECIMALS 2,
GV_RUNITS(16) TYPE P DECIMALS 2,
GV_UDEMAND(16) TYPE P DECIMALS 2,
GV_RDEMAND(16) TYPE P DECIMALS 2,
GV_UARREAR(16) TYPE P DECIMALS 2,
GV_RARREAR(16) TYPE P DECIMALS 2,
GV_UINACT_ARR(16) TYPE P DECIMALS 2,
GV_RINACT_ARR(16) TYPE P DECIMALS 2,
GV_U_SD_DMD(16) TYPE P DECIMALS 2,
GV_R_SD_DMD(16) TYPE P DECIMALS 2,
GV_U_SD_ARR(16) TYPE P DECIMALS 2,
GV_R_SD_ARR(16) TYPE P DECIMALS 2,
GV_UR_PART TYPE I,
GV_UR_DEF_MTR TYPE I,
GV_UR_CON_LOAD(16) TYPE P DECIMALS 2,
GV_UR_UNITS(16) TYPE P DECIMALS 2,
GV_UR_DEMAND(16) TYPE P DECIMALS 2,
GV_UR_ARREARS(16) TYPE P DECIMALS 2,
GV_LOWDATE TYPE SY-DATUM,
GV_HIGHDATE TYPE SY-DATUM,
GV_YEAR LIKE DBERCHV-EZ_ABRMENGE,
GV_MONTH LIKE DBERCHZ1-V_ABRMENGE,
GV_MNTH_NAME TYPE T247-KTX.
DATA:
**total meter rent
GV_UTOTMETERRENT TYPE P LENGTH 16 DECIMALS 2,
GV_RTOTMETERRENT TYPE P LENGTH 16 DECIMALS 2,
**for total surcharge
GV_UTOTSURCHRG TYPE P LENGTH 16 DECIMALS 2, "dberdlb-nettobtr,
GV_RTOTSURCHRG TYPE P LENGTH 16 DECIMALS 2, "dberdlb-nettobtr,
**for total ED
GV_UTOTED TYPE P LENGTH 16 DECIMALS 2, "dberdlb-nettobtr,
GV_RTOTED TYPE P LENGTH 16 DECIMALS 2, "dberdlb-nettobtr,
**for total ED Cess
GV_UTOTEDCESS TYPE P LENGTH 16 DECIMALS 2, "dberdlb-nettobtr,
GV_RTOTEDCESS TYPE P LENGTH 16 DECIMALS 2, "dberdlb-nettobtr,
**for total other misc rev
GV_UTOTMISCREV TYPE P LENGTH 16 DECIMALS 2,
GV_RTOTMISCREV TYPE P LENGTH 16 DECIMALS 2,
**for total ED of Free agricultural pump
GV_RTOTEDAGRI TYPE P LENGTH 16 DECIMALS 2,
GV_UTOTEDAGRI TYPE P LENGTH 16 DECIMALS 2,
**for ED cess of Free agriculture pump
GV_RTOTCESSAGRI TYPE P LENGTH 16 DECIMALS 2,
GV_UTOTCESSAGRI TYPE P LENGTH 16 DECIMALS 2,
***data for selection screen data validation
GV_GSBER TYPE EVER-GSBER,
GV_COKEY TYPE EVER-COKEY,
DYFIELDS LIKE DYNPREAD OCCURS 0 WITH HEADER LINE,
GT_INTERN_DATA TYPE ALSMEX_TABLINE OCCURS 0 WITH HEADER LINE.
RANGES: R_COKEY FOR TECOKT-COKEY.
AT SELECTION-SCREEN.
AT SELECTION-SCREEN ON SO_GSBER.
IF NOT SO_GSBER-LOW IS INITIAL.
SELECT SINGLE GSBER FROM TGSBT INTO GT_TGSBT-GSBER WHERE
GSBER = SO_GSBER-LOW.
IF SY-SUBRC <> 0.
MESSAGE E007.
ENDIF.
ENDIF.
IF NOT SO_GSBER-HIGH IS INITIAL .
SELECT SINGLE GSBER FROM TGSBT INTO GT_TGSBT-GSBER WHERE
GSBER = SO_GSBER-HIGH.
IF SY-SUBRC <> 0.
MESSAGE E007.
ENDIF.
ENDIF.
AT SELECTION-SCREEN ON P_BMNTH.
**check the validity of Billing month format and for valid billing month
IF P_BMNTH CO '0123456789/'.
IF P_BMNTH CP '++++/++'.
IF P_BMNTH+5(2) > 12.
MESSAGE E002 WITH 'from'.
ENDIF.
** current year is less than year entered
IF SY-DATUM(4) < P_BMNTH(4).
MESSAGE E003 WITH 'from'.
ELSEIF SY-DATUM(4) = P_BMNTH(4).
** month in future
IF SY-DATUM+4(2) < P_BMNTH+5(2).
MESSAGE E004 WITH 'from'.
ENDIF.
ENDIF.
ELSE.
MESSAGE E001 WITH 'from'.
ENDIF.
ELSE.
** entry have some invalid char
MESSAGE E010.
ENDIF.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR SO_COKEY-LOW.
**for geting the CO account assigment key of the entered Business area
CLEAR: DYFIELDS[], DYFIELDS.
PERFORM DIVISON_DATA_GET CHANGING SO_COKEY-LOW.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR SO_COKEY-HIGH.
CLEAR: DYFIELDS[], DYFIELDS.
PERFORM DIVISON_DATA_GET CHANGING SO_COKEY-HIGH.
*AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_file.
* REFRESH: IT_TAB.
***Opens File Open Dialog Box for selecting input file.
* CALL METHOD CL_GUI_FRONTEND_SERVICES=>FILE_OPEN_DIALOG
* EXPORTING
* WINDOW_TITLE = 'Select File'
* DEFAULT_FILENAME = '*.xls'
* MULTISELECTION = ' '
* CHANGING
* FILE_TABLE = IT_TAB
* RC = GD_SUBRC.
* LOOP AT IT_TAB INTO P_FILE.
** so_fpath-sign = 'I'.
** so_fpath-option = 'EQ'.
** append so_fpath.
* ENDLOOP.
AT SELECTION-SCREEN OUTPUT.
LOOP AT SCREEN.
IF SCREEN-GROUP1 = 'ACT'.
IF P_INCLUD = ' '.
SCREEN-INPUT = '0'.
ELSE.
SCREEN-INPUT = '1'.
ENDIF.
ENDIF.
MODIFY SCREEN.
ENDLOOP.
* End of Selection screen processing
TOP-OF-PAGE.
DATA : LV_TEXT(70) TYPE C.
FORMAT INTENSIFIED OFF.
WRITE:/50 'CHHATTISGARH STATE ELECTRICITY BOARD',
/42 'R-15 REPORT FOR LT CONSUMERS FOR THE MONTH OF',
GV_MNTH_NAME NO-GAP,'-' NO-GAP, P_BMNTH(4) NO-GAP,
180 'PAGE-NO. -', SY-PAGNO LEFT-JUSTIFIED.
SKIP.
WRITE:/2 'RAO', 15 ':'.
LOOP AT GT_TGSBT WHERE GSBER IN SO_GSBER.
IF STRLEN( LV_TEXT ) > 60.
WRITE: 16 LV_TEXT, / ''.
CLEAR LV_TEXT.
ENDIF.
CONCATENATE LV_TEXT GT_TGSBT-GSBER '-' GT_TGSBT-GTEXT
INTO LV_TEXT SEPARATED BY SPACE.
ENDLOOP.
WRITE: 16 LV_TEXT.
CLEAR LV_TEXT.
WRITE: /2 'Division',15 ':'.
LOOP AT GT_TECOKT.
IF STRLEN( LV_TEXT ) > 60.
WRITE: 16 LV_TEXT, /.
CLEAR LV_TEXT.
ENDIF.
CONCATENATE LV_TEXT GT_TECOKT-COKEY '-' GT_TECOKT-LTEXT
INTO LV_TEXT SEPARATED BY SPACE.
ENDLOOP.
WRITE: 16 LV_TEXT.
CLEAR LV_TEXT.
WRITE: /2 'Group',15 ':'.
LOOP AT GT_TE422 .
IF STRLEN( LV_TEXT ) > 60.
WRITE: 16 LV_TEXT, /.
CLEAR LV_TEXT.
ENDIF.
CONCATENATE LV_TEXT GT_TE422-TERMSCHL '-' GT_TE422-TERMTEXT
INTO LV_TEXT SEPARATED BY SPACE.
ENDLOOP.
WRITE: 16 LV_TEXT.
CLEAR LV_TEXT.
**legends
* write :/ text-028, 15 ':',16 text-029.
**now write the headings on every page
SET LEFT SCROLL-BOUNDARY COLUMN 50.
FORMAT COLOR 1 ON.
WRITE :/1(244) SY-ULINE.
WRITE :/1 SY-VLINE,6 SY-VLINE,50 SY-VLINE, 58 SY-VLINE, 59
'<----------------------------------',
'U R B A N A R E A',
'----------------------------------->'.
WRITE : 151 SY-VLINE, 152
'<----------------------------------',
'R U R A L A R E A',
'----------------------------------->',
244 SY-VLINE.
WRITE :/1 SY-VLINE,
2 'Slno',
6 SY-VLINE,
7 'Revenue Category',
50 SY-VLINE,
51 'A/C',
58 SY-VLINE,
59 'Cons-',
67 SY-VLINE,
68 'Deff',
75 SY-VLINE,
76 'Conn',
89 SY-VLINE,
90 'Sold',
108 SY-VLINE,
109 'Demand',
129 SY-VLINE,
130 'Previous',
151 SY-VLINE,
152 'Cons-',
160 SY-VLINE,
161 'Deff',
168 SY-VLINE,
169 'Conn',
182 SY-VLINE,
183 'Sold',
201 SY-VLINE,
202 'Demand',
222 SY-VLINE,
223 'Previous',
244 SY-VLINE.
WRITE :/1 SY-VLINE,
6 SY-VLINE,
50 SY-VLINE,
51 'Code',
58 SY-VLINE,
59 'umers',
67 SY-VLINE,
68 'mtrs',
75 SY-VLINE,
76 'Load-KW',
89 SY-VLINE,
90 'Units',
108 SY-VLINE,
129 SY-VLINE,
130 'Arrear',
151 SY-VLINE,
152 'umers',
160 SY-VLINE,
161 'mtrs',
168 SY-VLINE,
169 'Load-KW',
182 SY-VLINE,
183 'Units',
201 SY-VLINE,
222 SY-VLINE,
223 'Arrear',
244 SY-VLINE.
WRITE :/1(244) SY-ULINE.
SET LEFT SCROLL-BOUNDARY COLUMN 59.
* Start of Data Selection
START-OF-SELECTION.
SELECT GSBER GTEXT INTO TABLE GT_TGSBT FROM TGSBT
WHERE SPRAS = SY-LANGU.
SELECT IND_SECTOR TEXTLONG INTO TABLE GT_TB024
FROM TB024 WHERE SPRAS = SY-LANGU
AND ( ( IND_SECTOR >= '01' AND IND_SECTOR <= '55' )
OR ( IND_SECTOR = '57' OR IND_SECTOR = '58'
OR IND_SECTOR = '94' ) ).
SELECT SINGLE KTX INTO GV_MNTH_NAME FROM T247
WHERE MNR = P_BMNTH+5(2) AND SPRAS = SY-LANGU.
***master data selection
PERFORM CONSUMER_DATA_SELECTION.
*&--Get Meter Status Connected Load & MF for each installation
PERFORM OPERAND_DATA_SELECTION.
*&--Get the Demand corresponding to each Print documents selected
PERFORM BILLING_DATA_SELECTION.
*&--Get the arrears corresponding to each Print document selected
PERFORM ARREAR_DATA_SELECTION.
*&--To include Mannual R-15 into computerized R-15.
IF P_INCLUD = 'X'.
OPEN DATASET P_FILE FOR INPUT IN TEXT MODE ENCODING DEFAULT.
DO.
READ DATASET P_FILE INTO GWA_MANUAL_DATA.
IF SY-SUBRC <> 0.
EXIT.
ELSE.
APPEND GWA_MANUAL_DATA TO GT_MANUAL_DATA.
ENDIF.
ENDDO.
CLOSE DATASET P_FILE.
DELETE DATASET P_FILE.
ENDIF.
END-OF-SELECTION.
* End of data Selection
* Start of Data Processing
PERFORM FINAL_TABLE_PREPARE.
PERFORM FINAL_OUTPUT_PREPARE.
PERFORM FINAL_OUTPUT_DISPLAY.
* End of Data Processing
PERFORM FREE_MEMORY.
*& Form master_data_selection
* text
* --> p1 text
* <-- p2 text
FORM CONSUMER_DATA_SELECTION .
DATA: LV_MAX_DAYS TYPE I,
LV_LAST_DAY(2) TYPE C,
LV_IMONTH TYPE I,
LV_IYEAR TYPE I,
LV_BMNTH TYPE ZERDK_ERCHC-V_ABRMENGE,
LV_BYEAR TYPE ZERDK_ERCHC-EZ_ABRMENGE,
*&----Temporary tables for global internal tables.
LT_DBERCHZ1_TEMP LIKE TABLE OF GWA_DBERCHZ1,
LWA_DBERCHZ1_TEMP LIKE GWA_DBERCHZ1,
LT_ERCH LIKE TABLE OF GWA_ERCH,
LWA_ERCH LIKE GWA_ERCH,
LT_EVER LIKE TABLE OF GWA_EVER.
*DATA: lt_ever_fkkvkp like gwa_ever_eanlh_fkkvkp occurs 0.
LV_IMONTH = P_BMNTH+5(2).
LV_IYEAR = P_BMNTH(4).
LV_BMNTH = P_BMNTH+5(2).
LV_BYEAR = P_BMNTH(4).
CALL FUNCTION 'RTP_US_API_MAX_DAYS_IN_MONTH'
EXPORTING
I_DATE_MONTH = LV_IMONTH
I_DATE_YEAR = LV_IYEAR
IMPORTING
E_MAX_DAYS = LV_MAX_DAYS.
LV_LAST_DAY = LV_MAX_DAYS.
CONCATENATE P_BMNTH(4) P_BMNTH+5(2) LV_LAST_DAY INTO GV_HIGHDATE.
IF SO_GPART[] IS INITIAL.
SELECT VKONTO ANLAGE ABRSPERR
INTO TABLE GT_EVER
FROM EVER
WHERE GSBER IN SO_GSBER
AND COKEY IN SO_COKEY
AND BUKRS = 'CSEB'
AND SPARTE = '01'
AND KOFIZ = '02'.
**get installation no from contract data and check biling class in eanlh
IF GT_EVER[] IS INITIAL.
MESSAGE 'No Business Partner exist for entered selection data' TYPE 'A'.
ENDIF.
IF NOT GT_EVER[] IS INITIAL.
SELECT VKONT KTOKL INTO TABLE GT_FKKVKP
FROM FKKVKP
FOR ALL ENTRIES IN GT_EVER
WHERE VKONT = GT_EVER-VKONT
AND GPART IN SO_GPART.
IF GT_FKKVKP[] IS INITIAL.
MESSAGE 'No Business Partner exist for entered Selection' TYPE 'A'.
ENDIF.
ENDIF.
ELSE.
SELECT VKONT KTOKL INTO TABLE GT_FKKVKP
FROM FKKVKP
WHERE GPART IN SO_GPART.
IF NOT GT_FKKVKP[] IS INITIAL.
SELECT VKONTO ANLAGE INTO TABLE GT_EVER
FROM EVER
FOR ALL ENTRIES IN GT_FKKVKP
WHERE VKONTO EQ GT_FKKVKP-VKONT
AND GSBER IN SO_GSBER
AND COKEY IN SO_COKEY
AND BUKRS EQ 'CSEB'
AND SPARTE EQ '01'
AND KOFIZ EQ '02'.
ENDIF.
ENDIF.
IF GT_EVER[] IS INITIAL AND GT_FKKVKP[] IS INITIAL.
MESSAGE 'No Business Partner exist for entered Selection' TYPE 'A'.
ENDIF.
SELECT ANLAGE BRANCHE INTO TABLE GT_EANLH
FROM EANLH
FOR ALL ENTRIES IN GT_EVER
WHERE ANLAGE EQ GT_EVER-ANLAGE
AND ABLEINH IN SO_MRU
AND AKLASSE EQ'0002'
AND AB <= GV_HIGHDATE
AND BIS => GV_HIGHDATE.
IF GT_EANLH[] IS INITIAL.
MESSAGE 'No Business Partner exist for entered Selection' TYPE 'A'.
ENDIF.
SORT : GT_EVER BY VKONT ANLAGE,
GT_FKKVKP BY VKONT,
GT_EANLH BY ANLAGE.
LOOP AT GT_EANLH INTO GWA_EANLH.
READ TABLE GT_EVER INTO GWA_EVER WITH KEY ANLAGE = GWA_EANLH-ANLAGE.
IF SY-SUBRC = 0.
READ TABLE GT_FKKVKP INTO GWA_FKKVKP
WITH KEY VKONT = GWA_EVER-VKONT.
IF SY-SUBRC = 0.
GWA_EVER_EANLH_FKKVKP-VKONT = GWA_EVER-VKONT.
GWA_EVER_EANLH_FKKVKP-ANLAGE = GWA_EVER-ANLAGE.
GWA_EVER_EANLH_FKKVKP-ABRSPERR = GWA_EVER-ABRSPERR.
GWA_EVER_EANLH_FKKVKP-BRANCHE = GWA_EANLH-BRANCHE.
GWA_EVER_EANLH_FKKVKP-KTOKL = GWA_FKKVKP-KTOKL.
APPEND GWA_EVER_EANLH_FKKVKP TO GT_EVER_EANLH_FKKVKP.
CLEAR GWA_EVER_EANLH_FKKVKP.
ENDIF.
ENDIF.
ENDLOOP.
IF GT_EVER_EANLH_FKKVKP[] IS INITIAL.
MESSAGE 'No Business Partner exist for Selection Data' TYPE 'A'.
ENDIF.
*&----get all the billdocuments for the busines partner's contract
*&----account
SELECT BELNR VKONT INTO TABLE GT_ERCH
FROM ERCH
FOR ALL ENTRIES IN GT_EVER_EANLH_FKKVKP
WHERE VKONT EQ GT_EVER_EANLH_FKKVKP-VKONT.
*&----get the BILL MONTH & BILL YEAR FOR THE BILLDOCUMENTS.
IF NOT GT_ERCH[] IS INITIAL.
SELECT BELNR EIN01 V_ABRMENGE INTO TABLE GT_DBERCHZ1
FROM DBERCHZ1
FOR ALL ENTRIES IN GT_ERCH
WHERE BELNR EQ GT_ERCH-BELNR
AND AKLASSE = '0002'
AND ( ( EIN01 = 'BILL_MNTH1'
AND V_ABRMENGE = P_BMNTH+5(2) )
OR ( EIN01 = 'BILL_YEAR1'
AND V_ABRMENGE = P_BMNTH(4) ) ).
*&---- GET THOSE BILL DOCUMENTS WHICH ARE FOR THE ENTERED BILL MONTH
IF NOT GT_DBERCHZ1[] IS INITIAL.
LOOP AT GT_DBERCHZ1 INTO GWA_DBERCHZ1 WHERE EIN01 = 'BILL_MNTH1'
AND V_ABRMENGE = P_BMNTH+5(2).
READ TABLE GT_DBERCHZ1 INTO LWA_DBERCHZ1_TEMP
WITH KEY BELNR = GWA_DBERCHZ1-BELNR EIN01 = 'BILL_YEAR1'
V_ABRMENGE = P_BMNTH(4).
IF SY-SUBRC = 0.
APPEND LWA_DBERCHZ1_TEMP TO LT_DBERCHZ1_TEMP.
CLEAR: LWA_DBERCHZ1_TEMP.
ENDIF.
ENDLOOP.
GT_DBERCHZ1[] = LT_DBERCHZ1_TEMP[].
ENDIF.
ENDIF.
*&---NOW FIND THE PRINT DOCUMENTS FOR THE SELECTED BILLDOCUMENTS.
IF NOT GT_DBERCHZ1[] IS INITIAL.
SELECT BELNR OPBEL BUDAT FROM ERCHC
INTO TABLE GT_ERCHC
FOR ALL ENTRIES IN GT_DBERCHZ1
WHERE BELNR = GT_DBERCHZ1-BELNR
AND INTOPBEL EQ SPACE
AND SIMULATED EQ SPACE
AND INVOICED EQ 'X'.
ENDIF.
IF NOT GT_ERCHC[] IS INITIAL.
LOOP AT GT_ERCHC INTO GWA_ERCHC.
READ TABLE GT_ERCH INTO GWA_ERCH WITH KEY BELNR = GWA_ERCHC-BELNR.
IF SY-SUBRC = 0.
APPEND GWA_ERCH TO LT_ERCH.
CLEAR GWA_ERCH.
ENDIF.
CLEAR GWA_ERCHC.
ENDLOOP.
ENDIF.
GT_ERCH[] = LT_ERCH[].
FREE: LT_ERCH, LT_DBERCHZ1_TEMP,LWA_DBERCHZ1_TEMP.
LOOP AT GT_EVER_EANLH_FKKVKP INTO GWA_EVER_EANLH_FKKVKP.
* READ TABLE gt_erdk_erchc INTO gwa_erdk_erchc
* WITH KEY vkont = gwa_ever_eanlh_fkkvkp-vkont.
READ TABLE GT_ERCH INTO GWA_ERCH
WITH KEY VKONT = GWA_EVER_EANLH_FKKVKP-VKONT.
IF SY-SUBRC <> 0.
IF GWA_EVER_EANLH_FKKVKP-ABRSPERR = SPACE.
GWA_EVER_EANLH_FKKVKP-ABRSPERR = '01'.
MODIFY GT_EVER_EANLH_FKKVKP FROM GWA_EVER_EANLH_FKKVKP
TRANSPORTING ABRSPERR.
APPEND GWA_EVER_EANLH_FKKVKP TO GT_EVER_EANLH_FKKVKP_INACT.
ENDIF.
ELSE.
IF GWA_EVER_EANLH_FKKVKP-ABRSPERR <> SPACE.
GWA_EVER_EANLH_FKKVKP-ABRSPERR = SPACE.
MODIFY GT_EVER_EANLH_FKKVKP FROM GWA_EVER_EANLH_FKKVKP
TRANSPORTING ABRSPERR.
ENDIF.
ENDIF.
CLEAR GWA_ERCH.
ENDLOOP.
REFRESH GT_TECOKT[].
IF NOT SO_COKEY[] IS INITIAL.
SELECT COKEY LTEXT INTO TABLE GT_TECOKT
FROM TECOKT
WHERE COKEY IN SO_COKEY
AND SPRAS = SY-LANGU .
* %_HINTS ORACLE '("TECOKT","TECOKT~1")'.
ENDIF.
IF NOT SO_MRU[] IS INITIAL.
SELECT TERMSCHL TERMTEXT INTO TABLE GT_TE422
FROM TE422
WHERE TERMSCHL IN SO_MRU.
ENDIF.
*FREE lt_ever_fkkvkp[].
ENDFORM. " consumer_data_selection
*& Form Operand_data_selection
* text
* --> p1 text
* <-- p2 text
FORM OPERAND_DATA_SELECTION .
DATA: LT_EVER_EANLH_FKKVKP_ACT LIKE TABLE OF GWA_EVER_EANLH_FKKVKP.
* SORT gt_ever_eanlh_fkkvkp BY vkont.
CHECK NOT GT_EVER_EANLH_FKKVKP[] IS INITIAL.
**now depending upon the billing month check the time slice date
**the last date of the billing month or the range of billing month
*should fall in between the time slice of the installation
** billing month to is space
**now select operands for processed installation
LT_EVER_EANLH_FKKVKP_ACT[] = GT_EVER_EANLH_FKKVKP[].
DELETE LT_EVER_EANLH_FKKVKP_ACT WHERE ABRSPERR NE SPACE.
IF NOT LT_EVER_EANLH_FKKVKP_ACT[] IS INITIAL.
SELECT ANLAGE OPERAND WERT1
FROM ETTIFN
INTO TABLE GT_ETTIFN
FOR ALL ENTRIES IN LT_EVER_EANLH_FKKVKP_ACT
WHERE ANLAGE = LT_EVER_EANLH_FKKVKP_ACT-ANLAGE
AND OPERAND IN ('MTR_STS','CONN_LOAD','LOAD_CODE','KWH_MF')
AND ( AB <= GV_HIGHDATE AND BIS >= GV_HIGHDATE ).
* %_HINTS ORACLE '("ETTIFN","ETTIFN~003")'.
ENDIF.
ENDFORM. " Operand_data_selection
*& Form billing_data_selection
*&------------------------------Hi,
Please do run time analysis as Rob correctly mentioned or do SQL trace(ST05) to find where the program is consuming more time.
Lanka -
When clic in the field "i_ekpo-ebeln" tab exit in report ALV
Good Afternoon! *********************************************************
Coloquei all the code, I believe for better clarification. When clico in the field i_ekpo-ebeln in the report is called transaction ME23 c/o GRID this functioning normally, but with the reports List and Hierarquico it does not happen the same and it prints in the baseboard the message "Invalid Function". when standard use buttons, functions of course.
obs.: I had that to create a SET Pf-status for each type of report pos I wanted that when clicar in the field box and clicar in the button "TO PRINT REPORT" it printed sapscript. How I make to solve such problem?
Att, Carlos Eduardo.
REPORT ztreino NO STANDARD PAGE HEADING LINE-SIZE 220.
************************declarações*********************
DATA: BEGIN OF y_ekko OCCURS 0,
ebeln TYPE ekko-ebeln, "Nº documento de compra
bukrs TYPE ekko-bukrs, "Empresa
bsart TYPE ekko-bsart, "Documento de compra
loekz TYPE ekko-loekz, "Código de eliminação
aedat TYPE ekko-aedat, "Data de criação do registro
ernam TYPE ekko-ernam, "Nome do responsável que criou o objeto
lifnr TYPE ekko-lifnr, "Nº conta do fornecedor
ekgrp TYPE ekko-ekgrp, "Grupo de compradores
waers TYPE ekko-waers, "Chave da moeda
BOX TYPE ptrv_approval-box, "campo para chekinbox
END OF y_ekko,
BEGIN OF y_ekpo OCCURS 0,
ebeln TYPE ekpo-ebeln, "Nº documento de compra
ebelp TYPE ekpo-ebelp, "Nº item do documento de compra
loekz TYPE ekpo-loekz, "Código de eliminação
txz01 TYPE ekpo-txz01, "Texto breve
matnr TYPE ekpo-matnr, "Nº material
bukrs TYPE ekpo-bukrs, "Empresa
werks TYPE ekpo-werks, "Centro
menge TYPE ekpo-menge, "Quantidade do pedido
netpr TYPE ekpo-netpr, "Preço líquido no documento de compra
BOX TYPE ptrv_approval-box, "campo para chekinbox
END OF y_ekpo.
*início seleção de dados
SELECTION-SCREEN BEGIN OF BLOCK bl2 WITH FRAME TITLE text-000.
SELECTION-SCREEN BEGIN OF BLOCK bl1 WITH FRAME TITLE text-001.
SELECTION-SCREEN SKIP.
*Nº documento de compra
SELECT-OPTIONS : s_ebeln FOR ekko-ebeln NO INTERVALS OBLIGATORY,
s_bukrs FOR ekko-bukrs OBLIGATORY, "Empresa
s_bsart FOR ekko-bsart. "Documento de compra
SELECTION-SCREEN END OF BLOCK bl1.
SELECTION-SCREEN END OF BLOCK bl2.
**fim da seleção de dados----
**início da variante
SELECTION-SCREEN BEGIN OF BLOCK bl4 WITH FRAME TITLE text-000.
SELECTION-SCREEN BEGIN OF BLOCK bl3 WITH FRAME TITLE text-002.
PARAMETERS : p_vari LIKE disvariant-variant.
SELECTION-SCREEN END OF BLOCK bl3.
SELECTION-SCREEN END OF BLOCK bl4.
***fim variante -
***início modo relatório
SELECTION-SCREEN BEGIN OF BLOCK bl5 WITH FRAME TITLE text-000.
SELECTION-SCREEN BEGIN OF BLOCK bl6 WITH FRAME TITLE text-003.
SELECTION-SCREEN SKIP.
PARAMETERS : rb1 RADIOBUTTON GROUP TIPO DEFAULT 'X',
rb2 RADIOBUTTON GROUP TIPO,
rb3 RADIOBUTTON GROUP TIPO.
SELECTION-SCREEN END OF BLOCK bl6.
SELECTION-SCREEN END OF BLOCK bl5.
****fim modo relatório
*******início da opção de download
Dados do arquivo texto de saída.
SELECTION-SCREEN BEGIN OF BLOCK bl9 WITH FRAME TITLE text-004.
SELECTION-SCREEN BEGIN OF LINE.
SELECTION-SCREEN COMMENT 1(15) text-005.
PARAMETERS: p_gerar AS CHECKBOX.
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN BEGIN OF LINE.
SELECTION-SCREEN COMMENT 1(15) text-006.
PARAMETERS: p_dir LIKE rlgrap-filename DEFAULT 'c:'.
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN BEGIN OF LINE.
SELECTION-SCREEN COMMENT 1(15) text-007.
PARAMETERS: p_arq LIKE rlgrap-filename DEFAULT 'nota-geral.txt'.
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN SKIP.
SELECTION-SCREEN END OF BLOCK bl9.
DATA :
i_ekko LIKE y_ekko OCCURS 0 WITH HEADER LINE,
i_ekpo LIKE y_ekpo OCCURS 0 WITH HEADER LINE.
i_tabsaida LIKE y_saida OCCURS 0 WITH HEADER LINE.
*********************Fim Declarações*******************************
*********************Declarações ALV*******************************
TYPE-POOLS : slis.
DATA :
s_layout TYPE slis_layout_alv,
t_sort TYPE slis_t_sortinfo_alv WITH HEADER LINE,
t_fieldcat TYPE slis_t_fieldcat_alv WITH HEADER LINE,
s_grupos TYPE slis_t_sp_group_alv WITH HEADER LINE,
s_keyinfo TYPE slis_keyinfo_alv,
extab TYPE slis_t_extab.
DATA :
variant_exit(1) TYPE c,
def_variant(1) TYPE c,
s_print TYPE slis_print_alv,
s_top TYPE slis_t_listheader,
variante TYPE disvariant,
def_variante TYPE disvariant,
v_repid LIKE sy-repid,
*------pega a data que esta rodando a transação
v_datasaida(10) TYPE C,
*------para saber quantos Pedidos na EKKO
v_exibe TYPE I,
s_selfield type slis_selfield,
v_ucomm like sy-ucomm.
**********************Fim declarações ALV*************************
Contants para Sapscript e declarações *
TABLES: ITCPO.
CONSTANTS: c_on(1) TYPE C VALUE 'X', "Parâmetro para o Sapscript
c_off(1) TYPE C VALUE ''. "Parâmetro para o Sapscript
Data:
v_element(15) TYPE C, "Elemento de texto do Sap Script
v_type(15) TYPE C, "BODY
v_window(15) TYPE C, "Janela
flag TYPE I, "Uma condição para impressão do sapscript
resp TYPE C, "resposta para confirmação do download tab
zlen TYPE I, "Para verificar o um diretório válido
Para a função WS_DOWNLOAD só em declarar as variaveis deste tipo já *
seria o bastante para passar o caminho para a função
TABLES : ekko, ekpo.
initialization *
INITIALIZATION.
PERFORM zf_verifica_variante.
at selection-screen on value-request *
AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_vari.
PERFORM zf_busca_variante_existente.
at seletion-screen *
AT SELECTION-SCREEN.
PERFORM zf_valida_variante.
validar os campo antes de fazer download do arquivo
PERFORM zf_trata_parametros_gerar_arqu.
start-of-selection *
START-OF-SELECTION.
PERFORM zf_seleciona_dados.
Criando ALV *
PERFORM zf_alv.
*& Form zf_verifica_variante
text
--> Verifica se a variante selecionada é existente
FORM zf_verifica_variante.
CLEAR variante.
v_repid = sy-repid.
variante-report = v_repid.
Buscar variante default
def_variante = variante.
CALL FUNCTION 'REUSE_ALV_VARIANT_DEFAULT_GET'
EXPORTING
i_save = 'A'
CHANGING
cs_variant = def_variante
EXCEPTIONS
wrong_input = 1
not_found = 2
program_error = 3
OTHERS = 4.
IF sy-subrc EQ 0.
p_vari = def_variante-variant.
ENDIF.
ENDFORM. " zf_verifica_variante
*& Form zf_busca_variante_existente
*- text
*- --> Vai buscar a variante existente
FORM zf_busca_variante_existente.
CALL FUNCTION 'REUSE_ALV_VARIANT_F4'
EXPORTING
is_variant = variante " Report com as
i_save = 'A' " Variantes Salvas
i_tabname_header = 'I_EKPO' " Tabela interna saida
it_default_fieldcat = t_fieldcat[] " Tabela de formatação
i_display_via_grid = 'X' " Dispara POPUP em ALV
IMPORTING
e_exit = variant_exit " Se não existir variante X
es_variant = def_variante " Variante default
EXCEPTIONS
not_found = 1
program_error = 2
OTHERS = 3.
IF sy-subrc = 2.
MESSAGE ID sy-msgid TYPE 'S' NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ELSE.
IF variant_exit = space.
p_vari = def_variante-variant. " Recebe variante escolhida
ENDIF.
ENDIF.
ENDFORM. " zf_busca_variante_existente
*-& Form zf_valida_variante
*- text
*- --> Verifica se a variante digitada é válida.
FORM zf_valida_variante.
IF NOT p_vari IS INITIAL.
variante = def_variante. "nome do report
def_variante-variant = p_vari. "nome que foi digitado
CALL FUNCTION 'REUSE_ALV_VARIANT_EXISTENCE'
EXPORTING
i_save = 'A'
CHANGING
cs_variant = def_variante
variante = def_variante.
ELSE.
clear variante.
variante-report = v_repid.
ENDIF.
ENDFORM. " zf_valida_variante
-& Form zf_seleciona_dados
*- text
--> Seleciona os dados da ekko e ekpo
FORM zf_seleciona_dados.
SELECT ebeln
bukrs
bsart
loekz
aedat
ernam
lifnr
ekgrp
waers
FROM ekko
INTO TABLE i_ekko
WHERE
( ebeln IN s_ebeln AND
bsart EQ 'NB' ).
SORT I_EKKO ASCENDING.
IF sy-subrc EQ 0.
SELECT ebeln
ebelp
loekz
txz01
matnr
bukrs
werks
menge
netpr
FROM ekpo
INTO TABLE i_ekpo
FOR ALL ENTRIES IN i_ekko
WHERE
( ebeln EQ i_ekko-ebeln ).
ENDIF.
SORT I_EKPO ASCENDING.
Para exibir no topo do relatório no grid
DESCRIBE TABLE I_EKKO LINES v_exibe.
ENDFORM. " zf_seleciona_dados
*-& Form zf_ALV
*- text
--> Opções de alv
FORM zf_alv.
IF rb1 = 'X'.
PERFORM zf_gri.
ENDIF.
IF rb2 = 'X'.
PERFORM ZF_HIERARQUICO.
ENDIF.
IF rb3 = 'X'.
PERFORM ZF_LIST.
ENDIF.
ENDFORM. " zf_ALV
*& Form zf_gri
*- text
*- --> Seqüência para gerar o alv grid
FORM zf_gri.
PERFORM zf_layout.
PERFORM zf_ordena_campos.
PERFORM zf_monta_campos_alv.
PERFORM zf_print.
PERFORM zf_grupo.
PERFORM zf_top USING s_top.
IF NOT I_EKPO[] IS INITIAL.
PERFORM zf_imprime_alv.
ELSE.
MESSAGE s000(zcl001) WITH 'Nenhum registro encontrado.'.
STOP.
ENDIF.
ENDFORM. " zf_gri
*-& Form zf_layout
*- text
--> cria o layout do alv
FORM zf_layout.
s_layout-box_tabname = 'I_EKPO'.
s_layout-box_fieldname = 'BOX'.
s_layout-get_selinfos = 'X'.
s_layout-detail_popup = 'X'.
s_layout-detail_initial_lines = 'X'.
s_layout-zebra = 'X'.
s_layout-colwidth_optimize = 'X'.
ENDFORM. " zf_layout
*-& Form zf_ordena_campos
*- text
--> Ordenação dos campos
FORM zf_ordena_campos.
CLEAR t_sort.
t_sort-spos = '1'. "prioridade de ordenação
t_sort-fieldname = 'EBELN'. "campo da tab int. de saida
t_sort-tabname = 'I_EKPO'. "tab inter de saida
t_sort-up = 'X'. "ordenação do maior para o menor
APPEND t_sort.
ENDFORM. " zf_ordena_campos
*-& Form zf_monta_campos_alv
text
--> è passado os campos de acordo com a ordem de exibição inicial
FORM zf_monta_campos_alv.
IF rb2 = 'X'.
CLEAR t_FIELDCAT.
t_FIELDCAT-FIELDNAME = 'BOX'.
t_FIELDCAT-TABNAME = 'I_EKKO'.
t_FIELDCAT-CHECKBOX = 'X'.
t_FIELDCAT-INPUT = 'X'.
APPEND t_FIELDCAT.
CLEAR t_fieldcat.
t_fieldcat-fieldname = 'EBELN'.
t_fieldcat-tabname = 'I_EKKO'.
t_fieldcat-ref_fieldname = 'EBELN'.
t_fieldcat-ref_tabname = 'EKKO'.
APPEND t_fieldcat.
CLEAR t_fieldcat.
t_fieldcat-fieldname = 'BUKRS'.
t_fieldcat-tabname = 'I_EKKO'.
t_fieldcat-ref_fieldname = 'BUKRS'.
t_fieldcat-ref_tabname = 'EKKO'.
APPEND t_fieldcat.
CLEAR t_fieldcat.
t_fieldcat-fieldname = 'BSART'.
t_fieldcat-tabname = 'I_EKKO'.
t_fieldcat-ref_fieldname = 'BSART'.
t_fieldcat-ref_tabname = 'EKKO'.
APPEND t_fieldcat.
CLEAR t_fieldcat.
t_fieldcat-fieldname = 'AEDAT'.
t_fieldcat-tabname = 'I_EKKO'.
t_fieldcat-ref_fieldname = 'AEDAT'.
t_fieldcat-ref_tabname = 'EKKO'.
APPEND t_fieldcat.
CLEAR t_fieldcat.
t_fieldcat-fieldname = 'ERNAM'.
t_fieldcat-tabname = 'I_EKKO'.
t_fieldcat-ref_fieldname = 'ERNAM'.
t_fieldcat-ref_tabname = 'EKKO'.
APPEND t_fieldcat.
CLEAR t_fieldcat.
t_fieldcat-fieldname = 'LIFNR'.
t_fieldcat-tabname = 'I_EKKO'.
t_fieldcat-ref_fieldname = 'LIFNR'.
t_fieldcat-ref_tabname = 'EKKO'.
APPEND t_fieldcat.
CLEAR t_fieldcat.
t_fieldcat-fieldname = 'EKGRP'.
t_fieldcat-tabname = 'I_EKKO'.
t_fieldcat-ref_fieldname = 'EKGRP'.
t_fieldcat-ref_tabname = 'EKKO'.
APPEND t_fieldcat.
ENDIF.
CLEAR t_fieldcat.
t_fieldcat-fieldname = 'EBELN'.
t_fieldcat-tabname = 'I_EKPO'.
t_fieldcat-ref_fieldname = 'EBELN'.
t_fieldcat-ref_tabname = 'EKPO'.
t_fieldcat-key = 'X'.
t_fieldcat-Hotspot = 'X'.
APPEND t_fieldcat.
CLEAR t_fieldcat.
T_fieldcat-fieldname = 'EBELP'.
T_fieldcat-tabname = 'I_EKPO'.
T_fieldcat-ref_fieldname = 'EBELP'.
T_fieldcat-ref_tabname = 'EKPO'.
APPEND t_fieldcat.
CLEAR t_fieldcat.
t_fieldcat-fieldname = 'MATNR'.
t_fieldcat-tabname = 'I_EKPO'.
t_fieldcat-ref_fieldname = 'MATNR'.
t_fieldcat-ref_tabname = 'EKPO'.
APPEND t_fieldcat.
CLEAR t_fieldcat.
t_fieldcat-fieldname = 'WERKS'.
t_fieldcat-tabname = 'I_EKPO'.
t_fieldcat-ref_fieldname = 'WERKS'.
t_fieldcat-ref_tabname = 'EKPO'.
APPEND t_fieldcat.
CLEAR t_fieldcat.
t_fieldcat-fieldname = 'MENGE'.
t_fieldcat-tabname = 'I_EKPO'.
t_fieldcat-ref_fieldname = 'MENGE'.
t_fieldcat-ref_tabname = 'EKPO'.
APPEND t_fieldcat.
CLEAR t_fieldcat.
t_fieldcat-fieldname = 'NETPR'.
t_fieldcat-tabname = 'I_EKPO'.
t_fieldcat-ref_fieldname = 'NETPR'.
t_fieldcat-ref_tabname = 'EKPO'.
t_fieldcat-do_sum = 'X'. "totalizar campo
APPEND t_fieldcat.
CLEAR t_fieldcat.
t_fieldcat-fieldname = 'TXZ01'.
t_fieldcat-tabname = 'I_EKPO'.
t_fieldcat-ref_fieldname = 'TXZ01'.
t_fieldcat-ref_tabname = 'EKPO'.
APPEND t_fieldcat.
ENDFORM. " zf_monta_campos_alv
*-& Form zf_top
*- text
*- --> Cria o texto de cabeçalho do ALV, passando por parametro o
--> p_S_TOP para s_top
FORM zf_top USING p_s_top TYPE slis_t_listheader.
DATA: ls_line TYPE slis_listheader.
CLEAR ls_line.
ls_line-typ = 'H'.
ls_line-info = 'Relatório de Compras por Classificação Contábil'.
APPEND ls_line TO p_s_top.
CLEAR ls_line.
ls_line-typ = 'S'.
ls_line-KEY = 'Parametros Seleção '.
ls_line-info = '- Documento de compra'.
APPEND ls_line TO p_s_top.
CLEAR ls_line.
ls_line-typ = 'S'.
ls_line-info = '- Empresa'.
APPEND ls_line TO p_s_top.
CLEAR ls_line.
ls_line-typ = 'S'.
ls_line-info = '- Tip.doc.compra'.
APPEND ls_line TO p_s_top.
CLEAR ls_line.
ls_line-typ = 'S'.
ls_line-KEY = 'Total Pedido'.
ls_line-info = v_exibe.
APPEND ls_line TO p_s_top.
início Formatar a data
CALL FUNCTION 'DATUMSAUFBEREITUNG'
EXPORTING
IDATE = SY-DATUM
IMPORTING
TDAT8 = v_datasaida.
Fim Formatar a data
CLEAR ls_line.
ls_line-typ = 'S'.
ls_line-KEY = 'Data da execução'.
ls_line-info = v_datasaida.
APPEND ls_line TO p_s_top.
CLEAR ls_line.
ls_line-typ = 'S'.
ls_line-KEY = 'Usuário'.
APPEND ls_line TO p_s_top.
CLEAR ls_line.
ls_line-typ = 'A'.
ls_line-info = sy-uname.
APPEND ls_line TO p_s_top.
ENDFORM. " zf_top
*-& Form zf_print
*- text
*- --> Parametros de Impressão para o ALV
FORM zf_print.
s_print-no_print_selinfos = 'N'.
s_print-no_print_listinfos = 'N'.
ENDFORM. " zf_print
*-& Form zf_imprime_alv
*- text
*- --> Imprime o ALV c/ seu parametros
FORM zf_imprime_alv.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
I_CALLBACK_PF_STATUS_SET = 'ZSET_PF_STATUS'
I_CALLBACK_USER_COMMAND = 'ZF_USER_COMMAND'
i_callback_program = v_repid
i_callback_top_of_page = 'TOP_OF_PAGE'
is_layout = s_layout
it_fieldcat = t_fieldcat[]
IT_EXCLUDING =
IT_SPECIAL_GROUPS = S_GRUPOS[]
it_sort = t_sort[]
IT_FILTER =
IS_SEL_HIDE =
i_default = 'X'
i_save = 'A'
is_variant = variante
IT_EVENTS =
IT_EVENT_EXIT =
IS_PRINT = S_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_ADD_FIELDCAT =
IT_HYPERLINK =
I_HTML_HEIGHT_TOP =
I_HTML_HEIGHT_END =
IMPORTING
E_EXIT_CAUSED_BY_CALLER =
ES_EXIT_CAUSED_BY_USER =
TABLES
t_outtab = I_EKPO
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. " zf_imprime_alv
*-& Form zf_top-of-page
*- text
--> Cabeçalho ALV
FORM top_of_page.
CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
EXPORTING
it_list_commentary = s_top
i_logo = 'CARLOS_LOGO3'.
I_END_OF_LIST_GRID = .
ENDFORM. " zf_top-of-page
*-& Form ZF_HIERARQUICO
*- text
*- --> RELATÓRIO HIERÁQUICO
form ZF_HIERARQUICO.
PERFORM zf_layout.
PERFORM zf_ordena_campos.
PERFORM zf_monta_campos_alv.
PERFORM zf_print.
PERFORM zf_grupo.
IF NOT I_EKPO[] IS INITIAL.
PERFORM zf_imprime_hierarquico_alv.
ELSE.
MESSAGE s000(zcl001) WITH 'Nenhum registro encontrado.'.
STOP.
ENDIF.
endform. " ZF_HIERARQUICO
*-& Form zf_grupo
text
--> Não é fundamental a criação de grupos de campos, mas facilita
ao usuário na hora de escolher os campos de exibição após o clique do
botão MODIFICAR LAYOUT . Vários campos da fieldcat podem ser
definidos para um mesmo grupo de campo.
form zf_grupo.
MOVE:'Moeda' TO S_GRUPOS-SP_GROUP,
'Campos moeda' TO S_GRUPOS-TEXT.
APPEND S_GRUPOS.
endform. " zf_grupo
*& Form zf_imprime_hierarquico_alv
text
--> p1 text
<-- p2 text
form zf_imprime_hierarquico_alv.
Vamos definir as ligações entre as tabelas para as quebras no momento
da impressão.
s_keyinfo-header01 = 'EBELN'.
s_keyinfo-item01 = 'EBELN'.
CALL FUNCTION 'REUSE_ALV_HIERSEQ_LIST_DISPLAY'
EXPORTING
I_CALLBACK_USER_COMMAND = 'ZF_USER_COMMAND'
I_CALLBACK_PF_STATUS_SET = 'ZF_SET_PF_STATUS_HIERARQ'
I_CALLBACK_PROGRAM = v_repid
IS_LAYOUT = S_LAYOUT
IT_FIELDCAT = T_FIELDCAT[]
IT_SPECIAL_GROUPS = S_GRUPOS[]
IT_SORT =
IT_FILTER =
- Parâmetro p/executar sempre com a variante default
I_DEFAULT = 'X'
- Se é possível salvar as variantes
I_SAVE = 'A'
- Nome da variante selecionada
IS_VARIANT = VARIANTE
IT_EVENTS =
IT_EVENT_EXIT =
i_tabname_header = 'I_EKKO'
i_tabname_item = 'I_EKPO'
I_STRUCTURE_NAME_HEADER =
I_STRUCTURE_NAME_ITEM =
is_keyinfo = S_KEYINFO
IS_PRINT = S_PRINT
IS_REPREP_ID =
I_BUFFER_ACTIVE =
I_BYPASSING_BUFFER =
IMPORTING
E_EXIT_CAUSED_BY_CALLER =
ES_EXIT_CAUSED_BY_USER =
tables
t_outtab_header = I_EKKO
t_outtab_item = I_EKPO.
endform. " zf_imprime_hierarquico_alv
*& Form ZF_LIST
text
--> p1 text
<-- p2 text
form ZF_LIST.
PERFORM zf_layout.
PERFORM zf_ordena_campos.
PERFORM zf_monta_campos_alv.
PERFORM zf_print.
PERFORM zf_grupo.
IF NOT I_EKPO[] IS INITIAL.
PERFORM zf_imprime_list_alv.
ELSE.
MESSAGE s000(zcl001) WITH 'Nenhum registro encontrado.'.
STOP.
ENDIF.
endform. " ZF_LIST
*& Form zf_imprime_list_alv
text
--> p1 text
<-- p2 text
form zf_imprime_list_alv.
CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'
EXPORTING
I_CALLBACK_PF_STATUS_SET = 'ZF_SET_PF_STATUS_LIST'
I_CALLBACK_USER_COMMAND = 'ZF_USER_COMMAND'
I_INTERFACE_CHECK = ' '
I_BYPASSING_BUFFER =
I_BUFFER_ACTIVE = ' '
I_CALLBACK_PROGRAM = v_repid
I_STRUCTURE_NAME = 'I_EKPO'
IS_LAYOUT = S_LAYOUT
IT_FIELDCAT = T_FIELDCAT[]
IT_EXCLUDING =
IT_SPECIAL_GROUPS = S_GRUPOS[]
IT_SORT = T_SORT[]
IT_FILTER =
IS_SEL_HIDE =
I_DEFAULT = 'X'
I_SAVE = 'A'
IS_VARIANT = VARIANTE
IT_EVENTS =
IT_EVENT_EXIT =
IS_PRINT = S_PRINT
IS_REPREP_ID =
I_SCREEN_START_COLUMN = 0
I_SCREEN_START_LINE = 0
I_SCREEN_END_COLUMN = 0
I_SCREEN_END_LINE = 0
IMPORTING
E_EXIT_CAUSED_BY_CALLER =
ES_EXIT_CAUSED_BY_USER =
TABLES
t_outtab = I_EKPO.
endform. " zf_imprime_list_alv
*& Form zf_user_command
text
--> p1 text
<-- p2 text
form zf_user_command using p_v_ucomm like SY-UCOMM
p_s_selfield type slis_selfield.
*---tratamento de impressão do Sapscript----
CASE p_v_ucomm.
FLAG = 0.
WHEN 'IMPRIMIR' OR 'PRINT'.
LOOP AT i_ekpo.
IF NOT i_ekpo-BOX IS INITIAL.
FLAG = FLAG + 1.
ENDIF.
ENDLOOP.
se tiver selecionado apenas uma box
IF flag EQ 1.
IF p_gerar EQ 'X'.
*-----perform para confirmação de download
PERFORM zf_popup_to_confirm.
ENDIF.
*------chama o form para imprimir o sapscript
PERFORM zf_sapscript.
ENDIF.
box estiver vazia
IF flag EQ 0.
MESSAGE E017(ZCL_GRUPO04). "Selecione apenas uma BOX
"referente ao pedido de compras.
STOP.
ENDIF.
"estiver selecionado + de uma box
IF flag GT 1.
MESSAGE E017(ZCL_GRUPO04). "Selecione apenas uma
"BOX referente ao pedido de compra.
STOP.
ENDIF.
ENDCASE.
CASE p_s_selfield-sel_tab_field.
*observe na exibição do relatório(hierarquico) que temos o EKKO-EBELN
ficaria melhor visualmente, a utilização de clicar no mesmo
WHEN 'I_EKPO-EBELN'. "tab de saida
SET PARAMETER ID 'BES' FIELD p_s_selfield-VALUE.
CALL TRANSACTION 'ME23' AND SKIP FIRST SCREEN.
ENDCASE.
endform. " zf_user_command
*& Form ZSET_PF_STATUS
text
-->P_EXTAB text
form ZSET_PF_STATUS using p_extab.
set pf-status 'BOTOES' EXCLUDING extab.
endform. " ZSET_PF_STATUS
*& Form zf_sapscript
text
--> p1 text
<-- p2 text
form zf_sapscript.
--carregar a ITCPO----
PERFORM zf_itcpo.
----chamar a função Open_form
PERFORM zf_open_form.
*----buscar o fornecedor e seus dados
LOOP AT I_ekko.
v_element = 'CABPRIN'.
v_type = 'BODY'.
v_window = 'JANCABEC'.
PERFORM zf_imprime_form USING v_element
v_type
v_window.
ENDLOOP.
*----buscar o documento de compra selecionado
LOOP AT i_ekpo.
IF i_ekpo-BOX = 'X'.
v_element = 'MAIN'.
v_type = 'BODY'.
v_window = 'MAIN'.
PERFORM zf_imprime_form USING v_element
v_type
v_window.
*---o comando EXIT é para que somente quando 1 registro for selecionado
no relatório e a verificação da igualdade acontecer faz que saia do
Loop
EXIT.
ENDIF.
ENDLOOP.
PERFORM zf_close_form.
endform. " zf_sapscript
*& Form zf_itcpo
text
--> p1 text
<-- p2 text
form zf_itcpo.
*Parâmetros para impressão da tabela ITCPO
ITCPO-TDCOPIES = 1. "Quantidade de cópias
ITCPO-TDPAGESLCT = ''. "Seleção de páginas
ITCPO-TDPROGRAM = SY-REPID. "Captura o nome do programa
ITCPO-TDIMMED = c_on. "Saída imediata do relatório
ITCPO-TDPREVIEW = c_on. "Exibição prévia do relatório
ITCPO-TDDEST = 'LOCL'. "SPOOL: dispositivo de saída
ITCPO-TDFAXUSER = SY-UNAME. "Usuário logado naquele momento
ITCPO-TDSENDDATE = SY-DATUM. "Data de envio desejada
ITCPO-TDSENDTIME = SY-UZEIT. "Hora envio desejada
ITCPO-TDNEWID = c_on. "Nova ordem SPOOL
ITCPO-TDARMOD = c_on. "IMPRIMIR: modo de arquivamento
ITCPO-TDTITLE = 'Relatório de Compras por Classificação Contábil'.
endform. " zf_itcpo
*& Form zf_open_formBoa Tarde Carlos,
Welcome to the SDN Forums. SDN gets it's power from the large community throughout the world. To harvest that power of knowledge we have settled on one language for posts here which is English.
Clearly English is not your first language, but don't be afraid, I would vouch that for most of the participant here on SDN English is the second language.
As it is for me. I am just lucky, that I am living in the States long enough that German colleagues start to look at me strangely when I talk to them in German, because it doesn't totally sound right anymore
So we are very forgiving her in SDNland regarding grammar and spelling (although not as much anymore in the Weblogs), we even provide a spell checker.
Please post your question again in English.
If people don't understand you they will ask you about the things that they don't understand and you can then clarify.
Try it out. Your chance of an excellent responds is way higher.
Boa sorte, Mark.
Maybe you are looking for
-
Error while connecting MYSQL Database
Hi, I use a 30 days trial of Crystal Reports 2008. When i try to connect with the database i always get the next error: [http://www.visiscan.nl/error.jpg] The database is 4.1GB large and there is 10GB free space on the database. Anybody can tell me w
-
Windows 7 blank error message at logon
Good day computer folks! I have had a problem for some time with my Asus G74sx, with Windows 7 Home. After boot up, my logon time has gotten fairly long and I get a blank error message box titles only "error". Process explorer groups it under csrss
-
Hi Gurus, I understand that TCodes OBYC and OKB9 both are for account assignments and both are used in posting to G/L accounts? Could you please help me understand why these are used? An example of a business logic would be of greate Many Thanks. Kum
-
App-V deploy to terminal servers: force update
Hi, We are deploying a new version of an App-v 5.0 package to a terminal server. How can we force this package to be upgraded? Asking users to close the application prooved to be impossible: they just don't do it. Please advise. J. Jan Hoedt
-
Is Satellite C650D compatible with an 18.5 inch Widescreen LED Monitor?
Hi. Can anyone tell me if my laptop reference above in the subject line is compatable with the Hanns G HL195 18.5 inch Widescreen LED Monitor. I want to use my laptop in dual role, but not sure if it will work. If it is compatable how do you connect