Fieldcatalog-OUTPUTLEN ?
hi friends ı wrote this code,
fieldcatalog-fieldname = 'TEXT'.
fieldcatalog-seltext_m = 'Programin Ismi'.
fieldcatalog-col_pos = 3.
fieldcatalog-no_zero = 'X'.
fieldcatalog-hotspot = 'X'.
fieldcatalog-OUTPUTLEN = 100.
APPEND fieldcatalog TO fieldcatalog.
CLEAR fieldcatalog.
fieldcatalog-OUTPUTLEN = 100.
this code isn't running.
where am ı do error ?
thanks.
Hi ,
instead of this
fieldcatalog-seltext_m = 'Programin Ismi'.
write
fieldcatalog-seltext_m = 'PROGRAMIN ISMI'.
hope it will help.
regards,
gulrez
Similar Messages
-
Hi all
In ALV Report .The user must be able to adapt the result list (add hidden fields, remove columns) and save the layout as layout. The user must be able to select this layout when executing the selection.
the user must hide the fields and can diplay when ever he needs in ALV reportU have to use no_out = 'X'.
fieldcatalog-fieldname = 'EBELN'.
fieldcatalog-seltext_m = 'Purchase Order'.
fieldcatalog-col_pos = 0.
fieldcatalog-outputlen = 10.
fieldcatalog-no_out = 'X'.
fieldcatalog-key = 'X'.
gd_repid = sy-repid.
call function 'REUSE_ALV_GRID_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_events
is_print = gd_prntparams
<b> i_save = 'X'</b>
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.
http://www.sapdevelopment.co.uk/reporting/alv/alvgrid_enhanced.htm -
How to pass field in Alv Top-of-page
Edited by: Deepak Mathrani on Aug 12, 2008 12:40 PM
<THREAD LOCKED. Please read the [Rules of Engagement|https://wiki.sdn.sap.com/wiki/display/HOME/RulesofEngagement] to discover why>
Edited by: Mike Pokraka on Aug 12, 2008 2:58 PMHi
sample program
*& Report ZNNR_ALVSAMPLE
REPORT znnr_alvsample NO STANDARD PAGE HEADING.
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-do_sum = 'X'. "Display column total
fieldcatalog-datatype = 'CURR'.
APPEND fieldcatalog TO fieldcatalog.
CLEAR fieldcatalog.
fieldcatalog-fieldname = 'PEINH'.
fieldcatalog-seltext_m = 'Price Unit'.
fieldcatalog-col_pos = 8.
fieldcatalog-EDIT = 'X'.
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_GRID_DISPLAY'
exporting
i_callback_program = gd_repid
i_callback_top_of_page = 'TOP-OF-PAGE'(001) "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. -
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. -
Summation of a field in ALV report
Hi,
I hv created an ALV Report. But i m not getting the summation sign in the Application Toolbar. What can be the problem? I am trying to find out the sum of the the field NETWR in table VBAK.
Thanks,
Mohit.See the ALV function module used by you and me ... the below program gives the summation icon in the alv bar .
*& Report ZDEMO_ALVGRID *
*& Example of a simple ALV Grid Report *
REPORT zdemo_alvgrid .
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-do_sum = 'X'. "Display column total
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_GRID_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
reward points if it is usefull
Girish -
Hello Friends,
I am using ALV Tree to display a report.
In this report for a particular input.2 nodes are cerated.
On clicking on the 2nd node the details for the same are shown .
However on clicking the 1st node , the system automatically logs off closing all the SAP sessions and even the SAP Logon pad.
Suppose i am on executing the program on development server,even the sessions of test server are closed.
Can anyone please help me in this.....
its a bit urgent.
i am attaching my code for reference.
REPORT ZPRPROUTOPERATIONS1 .
tables : mapl,t001w,zroutpromast.
TYPE-POOLS: slis,kkblo.
include <icon>.
data : it_zrouteledtl like zrouteledtl occurs 0 with header line.
data : it_zeledtl type zeledtl occurs 0 with header line.
data : conv_sec(5) type c value '0.036'.
types : begin of it_output2,
Srno like zrouteledtl-srno,
srno1 type p decimals 8,
subgid like zrouteledtl-subgid,
subopn like zrouteledtl-subopn,
movetype type zeledtl-movetype,
DESC type zeledtl-description,
Add_desc like zrouteledtl-DESCRIPTION,
Freq type p decimals 2,
div_freq type p decimals 2,
men type p decimals 2,
offline(3),
CT type p decimals 2,
CW type p decimals 2,
Ideal_ct type p decimals 2,
ideal_cw type p decimals 2,
A_trg type p decimals 2,
b_Trg type p decimals 2,
g_Trg type p decimals 2,
p_Trg type p decimals 2,
m_Trg type p decimals 2,
t_Trg type p decimals 2,
i_Trg type p decimals 2,
Autocycle type p decimals 2,
online_time type p decimals 2,
offline_time type p decimals 2,
online_p_time type p decimals 2,
offline_p_time type p decimals 2,
end of it_output2.
*types : begin of it_output3,
Srno like zrouteledtl-srno,
mop_gid like zroutdetails-MOP_GID,
MOp_opn like zroutdetails-MOP_OPN,
sub_gid like zpromast-subgid,
subopn like zpromast-subopn,
DESC like zpromast-description,
Add_desc like zroutdetails-ADD_INFO,
Freq type p decimals 2,
batch type p decimals 2,
mix type p decimals 2,
offline(3),
CT type p decimals 2,
CW type p decimals 2,
Ideal_ct type p decimals 2,
ideal_cw type p decimals 2,
A_trg type p decimals 2,
b_Trg type p decimals 2,
g_Trg type p decimals 2,
p_Trg type p decimals 2,
m_Trg type p decimals 2,
t_Trg type p decimals 2,
i_Trg type p decimals 2,
Autocycle type p decimals 2,
online_time type p decimals 2,
offline_time type p decimals 2,
online_p_time type p decimals 2,
offline_p_time type p decimals 2,
end of it_output3.
data : it_output type it_output2 occurs 0 with header line,
it_output1 type it_output2 occurs 0 with header line,
it_emptytab type standard table of it_output2 INITIAL SIZE 0.
data : a_trg type f,b_trg type f,g_trg type f,p_trg type f,m_trg type f,t_trg type f,i_trg type f,
autocycle type f,online_p_time type f,offline_p_time type f.
data : ch1 type c,ch2.
DATA: ok_code like sy-ucomm, "OK-Code
save_ok like sy-ucomm.
data : ct_fieldcat type KKBLO_T_FIELDCAT.
*ALV data declarations
DATA: fieldcatalog TYPE lvc_t_fcat WITH HEADER LINE.
DATA: gd_fieldcat TYPE lvc_t_fcat,
gd_tab_group TYPE slis_t_sp_group_alv,
gd_layout TYPE slis_layout_alv.
*ALVtree data declarations
CLASS cl_gui_column_tree DEFINITION LOAD.
CLASS cl_gui_cfw DEFINITION LOAD.
DATA: gd_tree TYPE REF TO cl_gui_alv_tree,
gd_hierarchy_header TYPE treev_hhdr,
gd_report_title TYPE slis_t_listheader,
gd_logo TYPE sdydo_value,
gd_variant TYPE disvariant.
*Create container for alv-tree
DATA: gd_tree_container_name(30) TYPE c,
gd_custom_container TYPE REF TO cl_gui_custom_container.
*data mr_toolbar type ref to cl_gui_toolbar. "Add to top include
selection-screen begin of block start with frame title text-001.
select-options: p_gid for zroutpromast-mop_gid obligatory no-extension no intervals,
p_opn for zroutpromast-mop_opn obligatory no-extension no intervals,
p_werks for t001w-werks obligatory no-extension no intervals.
selection-screen end of block start.
*selection-screen begin of block detail with frame title text-002.
*parameter : radio1 radiobutton group dept default 'X',
radio2 radiobutton group dept.
*selection-screen end of block detail.
include ZTEST_TOOLBAR_EVENT_RECEIVER.
start-of-selection.
ALVtree setup data
PERFORM data_retrieval.
PERFORM build_fieldcatalog.
PERFORM build_layout.
PERFORM build_hierarchy_header CHANGING gd_hierarchy_header.
PERFORM build_report_title USING gd_report_title gd_logo.
PERFORM build_variant.
Display ALVtree report
call screen 100.
*& Form data_retrieval
text
--> p1 text
<-- p2 text
FORM data_retrieval .
select * from zrouteledtl into table it_zrouteledtl where mop_gid in p_gid and
mop_opn in p_opn
and werks in p_werks.
if sy-subrc ne 0.
message i001(0) with 'No Records Found'.
leave program.
endif.
select * from zeledtl into table it_zeledtl for all entries in it_zrouteledtl
where subgid = it_zrouteledtl-subgid
and subopn = it_zrouteledtl-subopn
and werks = it_zrouteledtl-werks.
loop at it_zeledtl.
it_output1-srno = it_zeledtl-srno.
it_output1-srno1 = it_zeledtl-srno.
it_output1-subgid = it_zeledtl-subgid.
it_output1-subopn = it_zeledtl-subopn.
it_output1-movetype = it_zeledtl-movetype.
it_output1-desc = it_zeledtl-DESCRIPTION.
it_output1-freq = it_zeledtl-frequency.
it_output1-div_freq = it_zeledtl-div_freq.
it_output1-men = it_zeledtl-men.
it_output1-offline = it_zeledtl-offline1.
it_output1-ct = it_zeledtl-cy_time * conv_sec.
it_output1-cw = it_zeledtl-wc_time * conv_sec.
it_output1-ideal_ct = it_zeledtl-cy_trg_time * conv_sec.
it_output1-ideal_cw = it_zeledtl-wc_trg_time * conv_sec.
if it_zeledtl-men = 0.
it_output-autocycle = it_zeledtl-cy_time * conv_sec.
endif.
if it_zeledtl-men ne 0 and it_zeledtl-offline1 eq 'NO'
and ( it_zeledtl-movetype eq 'A' or it_zeledtl-movetype eq 'C' ).
case it_zeledtl-movetype.
when 'A'.
if it_zeledtl-SIM_AUTO = 'TRUE'.
ch2 = 0.
else.
ch2 = 1.
endif.
it_output-online_p_time = ( it_zeledtl-autocycle * ch2 * conv_sec ) * it_zeledtl-frequency / it_zeledtl-div_freq.
when 'C'.
if it_zeledtl-sim5 = 'TRUE'.
ch1 = 0.
else.
ch1 = 1.
endif.
it_output-online_p_time = ( it_zeledtl-index5 * it_zeledtl-par_freq5 * ch1
it_zeledtl-frequency * 10 ) / it_zeledtl-div_freq .
endcase.
elseif it_zeledtl-men ne 0 and it_zeledtl-offline1 eq 'YES'
and ( it_zeledtl-movetype eq 'A' or it_zeledtl-movetype eq 'C' ).
case it_zeledtl-movetype.
when 'A'.
if it_zeledtl-SIM_AUTO = 'TRUE'.
ch2 = 0.
else.
ch2 = 1.
endif.
it_output1-offline_p_time = ( it_zeledtl-autocycle * ch2 * conv_sec ) * it_zeledtl-frequency / it_zeledtl-div_freq.
when 'C'.
if it_zeledtl-sim5 = 'TRUE'.
ch1 = 0.
else.
ch1 = 1.
endif.
it_output-offline_p_time = ( it_zeledtl-index5 * it_zeledtl-par_freq5 * ch1
it_zeledtl-frequency * 10 ) / it_zeledtl-div_freq .
endcase.
endif.
it_output1-a_trg = it_zeledtl-TARGET_A * conv_sec.
it_output1-b_trg = it_zeledtl-target_B * conv_sec.
it_output1-g_trg = it_zeledtl-TARGET_G * conv_sec.
it_output1-p_trg = it_zeledtl-TARGET_P * conv_sec.
it_output1-M_trg = it_zeledtl-TARGET_M * conv_sec.
it_output1-t_trg = it_zeledtl-TARGET_T * conv_sec.
it_output1-i_trg = it_zeledtl-TARGET_I * conv_sec.
append it_output1.
endloop.
sort it_output1 ascending by subgid subopn srno1.
clear ch1.
loop at it_zrouteledtl.
move-corresponding it_zrouteledtl to it_output.
select single description from zpromast into it_output-desc
where subgid = it_zrouteledtl-subgid and
subopn = it_zrouteledtl-subopn and
werks in p_werks.
it_output-add_desc = it_zrouteledtl-description.
it_output-freq = it_zrouteledtl-frequency.
it_output-div_freq = it_zrouteledtl-div_freq.
it_output-men = it_zrouteledtl-men.
it_output-ct = it_zrouteledtl-cy_time * conv_sec.
it_output-cw = it_zrouteledtl-wc_time * conv_sec.
it_output-ideal_ct = it_zrouteledtl-cy_trg_time * conv_sec.
it_output-ideal_cw = it_zrouteledtl-wc_trg_time * conv_sec.
if it_zrouteledtl-offline1 = '1'.
it_output-offline = 'No'.
else.
it_output-offline = 'Yes'.
endif.
append it_output.
endloop.
loop at it_output.
if it_output-offline = 'Yes'.
ch1 = 0.
else.
ch1 = 1.
endif.
loop at it_output1 where subgid = it_output-subgid and
subopn = it_output-subopn.
a_trg = A_trg + it_output1-A_trg.
b_Trg = b_Trg + it_output1-b_Trg.
g_Trg = g_Trg + it_output1-g_Trg.
p_Trg = p_Trg + it_output1-p_Trg.
m_Trg = m_Trg + it_output1-m_Trg.
t_Trg = t_Trg + it_output1-t_Trg.
i_Trg = i_Trg + it_output1-i_Trg.
autocycle = autocycle + it_output1-Autocycle.
online_p_time = online_p_time + it_output1-online_p_time.
offline_p_time = offline_p_time + it_output1-offline_p_time.
endloop.
it_output-autocycle = ( autocycle * ch1 * it_output-freq ) / it_output-div_freq / it_output-men.
it_output-a_trg = ( a_trg * ch1 * it_output-freq ) / it_output-div_freq / it_output-men.
it_output-b_trg = ( b_trg * ch1 * it_output-freq ) / it_output-div_freq / it_output-men.
it_output-g_trg = ( g_trg * ch1 * it_output-freq ) / it_output-div_freq / it_output-men.
it_output-p_trg = ( p_trg * ch1 * it_output-freq ) / it_output-div_freq / it_output-men.
it_output-m_trg = ( m_trg * ch1 * it_output-freq ) / it_output-div_freq / it_output-men.
it_output-t_trg = ( t_trg * ch1 * it_output-freq ) / it_output-div_freq / it_output-men.
it_output-i_trg = ( i_trg * ch1 * it_output-freq ) / it_output-div_freq / it_output-men.
it_output-online_time = ( it_output-ct - it_output-autocycle ) * ch1.
it_output-offline_time = ( it_output-ct - it_output-cw ) + it_output-autocycle.
it_output-online_p_time = ( online_p_time * ch1 * it_output-freq ) / it_output-div_freq / it_output-men.
it_output-offline_p_time = ( offline_p_time * ch1 * it_output-freq ) / it_output-div_freq / it_output-men.
clear : a_trg,b_trg,g_trg,p_trg,m_trg,t_trg,i_trg,online_p_time,offline_p_time,ch1,ch2,it_zeledtl,
autocycle,online_p_time,offline_p_time,zroutpromast.
modify it_output.
endloop.
ENDFORM. " data_retrieval
*& Form build_fieldcatalog
text
--> p1 text
<-- p2 text
FORM build_fieldcatalog .
Please not there are a number of differences between the structure of
ALVtree fieldcatalogs and ALVgrid fieldcatalogs.
For example the field seltext_m is replace by scrtext_m in ALVtree.
DATA: COL_POS TYPE I VALUE 0.
fieldcatalog-fieldname = 'SRNO'.
fieldcatalog-SCRTEXT_L = 'Sr No.'.
fieldcatalog-SCRTEXT_m = 'Sr No.'.
fieldcatalog-SCRTEXT_s = 'Sr No.'.
fieldcatalog-outputlen = 15.
fieldcatalog-col_pos = COL_POS.
APPEND fieldcatalog TO gd_fieldcat..
CLEAR fieldcatalog.
COL_POS = COL_POS + 1.
fieldcatalog-fieldname = 'SUBGID'. "Field name in itab
fieldcatalog-SCRTEXT_L = 'Sub Opn GID'. "Column text
fieldcatalog-SCRTEXT_m = 'Sub Opn GID'. "Column text
fieldcatalog-SCRTEXT_s = 'Sub Opn GID'. "Column text
fieldcatalog-col_pos = COL_POS. "Column position
fieldcatalog-outputlen = 15. "Column width
fieldcatalog-emphasize = 'X'. "Emphasize (X or SPACE)
fieldcatalog-key = 'X'. "Key Field? (X or SPACE)
fieldcatalog-do_sum = 'X'. "Sum Column?
fieldcatalog-no_zero = 'X'. "Don't display if zero
APPEND fieldcatalog TO gd_fieldcat.
CLEAR fieldcatalog.
COL_POS = COL_POS + 1.
fieldcatalog-fieldname = 'SUBOPN'.
fieldcatalog-SCRTEXT_L = 'Sub Opn'.
fieldcatalog-SCRTEXT_m = 'Sub Opn'.
fieldcatalog-SCRTEXT_s = 'Sub Opn'.
fieldcatalog-outputlen = 15.
fieldcatalog-col_pos = COL_POS.
fieldcatalog-emphasize = 'X'. "Emphasize (X or SPACE)
fieldcatalog-key = 'X'. "Key Field? (X or SPACE)
APPEND fieldcatalog TO gd_fieldcat..
CLEAR fieldcatalog.
COL_POS = COL_POS + 1.
fieldcatalog-fieldname = 'MOVETYPE'.
fieldcatalog-SCRTEXT_L = 'Movetype'.
fieldcatalog-SCRTEXT_m = 'Movetype'.
fieldcatalog-SCRTEXT_s = 'Movetype'.
fieldcatalog-outputlen = 15.
fieldcatalog-col_pos = COL_POS.
APPEND fieldcatalog TO gd_fieldcat..
CLEAR fieldcatalog.
COL_POS = COL_POS + 1.
fieldcatalog-fieldname = 'DESC'.
fieldcatalog-SCRTEXT_L = 'Description'.
fieldcatalog-SCRTEXT_m = 'Description'.
fieldcatalog-SCRTEXT_s = 'Description'.
fieldcatalog-outputlen = 600.
fieldcatalog-col_pos = COL_POS.
APPEND fieldcatalog TO gd_fieldcat..
CLEAR fieldcatalog.
COL_POS = COL_POS + 1.
fieldcatalog-fieldname = 'ADD_DESC'.
fieldcatalog-SCRTEXT_L = 'Add. Description'.
fieldcatalog-SCRTEXT_m = 'Add. Description'.
fieldcatalog-SCRTEXT_s = 'Add. Description'.
fieldcatalog-outputlen = 100.
fieldcatalog-col_pos = COL_POS.
APPEND fieldcatalog TO gd_fieldcat..
CLEAR fieldcatalog.
COL_POS = COL_POS + 1.
fieldcatalog-fieldname = 'FREQ'.
fieldcatalog-SCRTEXT_L = 'Frequency'.
fieldcatalog-SCRTEXT_m = 'Frequency'.
fieldcatalog-SCRTEXT_s = 'Frequency'.
fieldcatalog-outputlen = 15.
fieldcatalog-col_pos = COL_POS.
APPEND fieldcatalog TO gd_fieldcat..
CLEAR fieldcatalog.
COL_POS = COL_POS + 1.
fieldcatalog-fieldname = 'DIV_FREQ'.
fieldcatalog-SCRTEXT_L = 'Div Freq'.
fieldcatalog-SCRTEXT_m = 'Div Freq'.
fieldcatalog-SCRTEXT_s = 'Div Freq'.
fieldcatalog-outputlen = 15.
fieldcatalog-col_pos = COL_POS.
APPEND fieldcatalog TO gd_fieldcat..
CLEAR fieldcatalog.
COL_POS = COL_POS + 1.
fieldcatalog-fieldname = 'MEN'.
fieldcatalog-SCRTEXT_L = 'Men'.
fieldcatalog-SCRTEXT_m = 'Men'.
fieldcatalog-SCRTEXT_s = 'Men'.
fieldcatalog-outputlen = 15.
fieldcatalog-col_pos = COL_POS.
APPEND fieldcatalog TO gd_fieldcat..
CLEAR fieldcatalog.
COL_POS = COL_POS + 1.
fieldcatalog-fieldname = 'BATCH'.
fieldcatalog-SCRTEXT_L = 'Batch/Div Freq'.
fieldcatalog-SCRTEXT_m = 'Batch/Div Freq'.
fieldcatalog-SCRTEXT_s = 'Batch/Div Freq'.
fieldcatalog-outputlen = 15.
fieldcatalog-col_pos = COL_POS.
APPEND fieldcatalog TO gd_fieldcat.
CLEAR fieldcatalog.
COL_POS = COL_POS + 1.
fieldcatalog-fieldname = 'OFFLINE'.
fieldcatalog-SCRTEXT_L = 'Offline'.
fieldcatalog-SCRTEXT_m = 'Offline'.
fieldcatalog-SCRTEXT_s = 'Offline'.
fieldcatalog-outputlen = 6.
fieldcatalog-col_pos = COL_POS.
APPEND fieldcatalog TO gd_fieldcat.
CLEAR fieldcatalog.
COL_POS = COL_POS + 1.
fieldcatalog-fieldname = 'CT'.
fieldcatalog-SCRTEXT_L = 'Cycle Time'.
fieldcatalog-SCRTEXT_m = 'Cycle Time'.
fieldcatalog-SCRTEXT_s = 'Cycle Time'.
fieldcatalog-outputlen = 15.
fieldcatalog-col_pos = COL_POS.
fieldcatalog-do_sum = 'X'.
APPEND fieldcatalog TO gd_fieldcat.
CLEAR fieldcatalog.
COL_POS = COL_POS + 1.
fieldcatalog-fieldname = 'CW'.
fieldcatalog-SCRTEXT_L = 'Work Content'.
fieldcatalog-SCRTEXT_m = 'Work Content'.
fieldcatalog-SCRTEXT_s = 'Work Content'.
fieldcatalog-outputlen = 15.
fieldcatalog-col_pos = COL_POS.
fieldcatalog-do_sum = 'X'.
APPEND fieldcatalog TO gd_fieldcat.
CLEAR fieldcatalog.
COL_POS = COL_POS + 1.
fieldcatalog-fieldname = 'IDEAL_CT'.
fieldcatalog-SCRTEXT_L = 'Ideal CT'.
fieldcatalog-SCRTEXT_m = 'Ideal CT'.
fieldcatalog-SCRTEXT_s = 'Ideal CT'.
fieldcatalog-outputlen = 15.
fieldcatalog-col_pos = COL_POS.
fieldcatalog-do_sum = 'X'.
APPEND fieldcatalog TO gd_fieldcat.
CLEAR fieldcatalog.
COL_POS = COL_POS + 1.
fieldcatalog-fieldname = 'IDEAL_CW'.
fieldcatalog-SCRTEXT_L = 'Ideal CW'.
fieldcatalog-SCRTEXT_m = 'Ideal CW'.
fieldcatalog-SCRTEXT_s = 'Ideal CW'.
fieldcatalog-outputlen = 15.
fieldcatalog-col_pos = COL_POS.
fieldcatalog-do_sum = 'X'.
APPEND fieldcatalog TO gd_fieldcat.
CLEAR fieldcatalog.
COL_POS = COL_POS + 1.
fieldcatalog-fieldname = 'A_TRG'.
fieldcatalog-SCRTEXT_L = 'Target A'.
fieldcatalog-SCRTEXT_m = 'Target A'.
fieldcatalog-SCRTEXT_s = 'Target A'.
fieldcatalog-outputlen = 15.
fieldcatalog-col_pos = COL_POS.
fieldcatalog-do_sum = 'X'.
APPEND fieldcatalog TO gd_fieldcat.
CLEAR fieldcatalog.
COL_POS = COL_POS + 1.
fieldcatalog-fieldname = 'B_TRG'.
fieldcatalog-SCRTEXT_L = 'Target B'.
fieldcatalog-SCRTEXT_m = 'Target B'.
fieldcatalog-SCRTEXT_s = 'Target B'.
fieldcatalog-outputlen = 15.
fieldcatalog-col_pos = COL_POS.
fieldcatalog-do_sum = 'X'.
APPEND fieldcatalog TO gd_fieldcat.
CLEAR fieldcatalog.
COL_POS = COL_POS + 1.
fieldcatalog-fieldname = 'G_TRG'.
fieldcatalog-SCRTEXT_L = 'Target G'.
fieldcatalog-SCRTEXT_m = 'Target G'.
fieldcatalog-SCRTEXT_s = 'Target G'.
fieldcatalog-outputlen = 15.
fieldcatalog-col_pos = COL_POS.
fieldcatalog-do_sum = 'X'.
APPEND fieldcatalog TO gd_fieldcat.
CLEAR fieldcatalog.
COL_POS = COL_POS + 1.
fieldcatalog-fieldname = 'P_TRG'.
fieldcatalog-SCRTEXT_L = 'Target P'.
fieldcatalog-SCRTEXT_m = 'Target P'.
fieldcatalog-SCRTEXT_s = 'Target P'.
fieldcatalog-outputlen = 15.
fieldcatalog-col_pos = COL_POS.
fieldcatalog-do_sum = 'X'.
APPEND fieldcatalog TO gd_fieldcat.
CLEAR fieldcatalog.
COL_POS = COL_POS + 1.
fieldcatalog-fieldname = 'M_TRG'.
fieldcatalog-SCRTEXT_L = 'Target M'.
fieldcatalog-SCRTEXT_m = 'Target M'.
fieldcatalog-SCRTEXT_s = 'Target M'.
fieldcatalog-outputlen = 15.
fieldcatalog-col_pos = COL_POS.
fieldcatalog-do_sum = 'X'.
APPEND fieldcatalog TO gd_fieldcat.
CLEAR fieldcatalog.
COL_POS = COL_POS + 1.
fieldcatalog-fieldname = 'T_TRG'.
fieldcatalog-SCRTEXT_L = 'Target T'.
fieldcatalog-SCRTEXT_m = 'Target T'.
fieldcatalog-SCRTEXT_s = 'Target T'.
fieldcatalog-outputlen = 15.
fieldcatalog-col_pos = COL_POS.
fieldcatalog-do_sum = 'X'.
APPEND fieldcatalog TO gd_fieldcat.
CLEAR fieldcatalog.
COL_POS = COL_POS + 1.
fieldcatalog-fieldname = 'I_TRG'.
fieldcatalog-SCRTEXT_L = 'Target I'.
fieldcatalog-SCRTEXT_m = 'Target I'.
fieldcatalog-SCRTEXT_s = 'Target I'.
fieldcatalog-outputlen = 15.
fieldcatalog-col_pos = COL_POS.
fieldcatalog-do_sum = 'X'.
APPEND fieldcatalog TO gd_fieldcat.
CLEAR fieldcatalog.
COL_POS = COL_POS + 1.
fieldcatalog-fieldname = 'AUTOCYCLE'.
fieldcatalog-SCRTEXT_L = 'AutoCycle'.
fieldcatalog-SCRTEXT_m = 'AutoCycle'.
fieldcatalog-SCRTEXT_s = 'AutoCycle'.
fieldcatalog-outputlen = 15.
fieldcatalog-col_pos = COL_POS.
fieldcatalog-do_sum = 'X'.
APPEND fieldcatalog TO gd_fieldcat.
CLEAR fieldcatalog.
COL_POS = COL_POS + 1.
fieldcatalog-fieldname = 'ONLINE_TIME'.
fieldcatalog-SCRTEXT_L = 'Online Time'.
fieldcatalog-SCRTEXT_m = 'Online Time'.
fieldcatalog-SCRTEXT_s = 'Online Time'.
fieldcatalog-outputlen = 15.
fieldcatalog-col_pos = COL_POS.
fieldcatalog-do_sum = 'X'.
APPEND fieldcatalog TO gd_fieldcat.
CLEAR fieldcatalog.
COL_POS = COL_POS + 1.
fieldcatalog-fieldname = 'OFFLINE_TIME'.
fieldcatalog-SCRTEXT_L = 'Offline Time'.
fieldcatalog-SCRTEXT_m = 'Offline Time'.
fieldcatalog-SCRTEXT_s = 'Offline Time'.
fieldcatalog-outputlen = 15.
fieldcatalog-col_pos = COL_POS.
fieldcatalog-do_sum = 'X'.
APPEND fieldcatalog TO gd_fieldcat.
CLEAR fieldcatalog.
COL_POS = COL_POS + 1.
fieldcatalog-fieldname = 'ONLINE_P_TIME'.
fieldcatalog-SCRTEXT_L = 'Online Process Time'.
fieldcatalog-SCRTEXT_m = 'Online Process Time'.
fieldcatalog-SCRTEXT_s = 'Online Process Time'.
fieldcatalog-outputlen = 15.
fieldcatalog-col_pos = COL_POS.
fieldcatalog-do_sum = 'X'.
APPEND fieldcatalog TO gd_fieldcat.
CLEAR fieldcatalog.
COL_POS = COL_POS + 1.
fieldcatalog-fieldname = 'OFFLINE_P_TIME'.
fieldcatalog-SCRTEXT_L = 'Offline Process Time'.
fieldcatalog-SCRTEXT_m = 'Offline Process Time'.
fieldcatalog-SCRTEXT_s = 'Offline Process Time'.
fieldcatalog-outputlen = 15.
fieldcatalog-col_pos = COL_POS.
fieldcatalog-do_sum = 'X'.
APPEND fieldcatalog TO gd_fieldcat.
CLEAR fieldcatalog.
ENDFORM. " build_fieldcatalog
*& Form build_layout
text
--> p1 text
<-- p2 text
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 build_hierarchy_header
text
<--P_GD_HIERARCHY_HEADER text
FORM build_hierarchy_header CHANGING
p_hierarchy_header TYPE treev_hhdr.
p_hierarchy_header-heading = 'Drill Down For Detail'(022).
p_hierarchy_header-tooltip = 'This is the Hierarchy Header !'(014).
p_hierarchy_header-width = 30.
p_hierarchy_header-width_pix = ''.
ENDFORM. " build_hierarchy_header
*& Form build_report_title
text
-->P_GD_REPORT_TITLE text
-->P_GD_LOGO text
FORM build_report_title using
pt_report_title TYPE slis_t_listheader
pa_logo TYPE sdydo_value.
DATA: ls_line TYPE slis_listheader,
ld_date(10) TYPE c,
string1 type string,string2 type string.
List Heading Line(TYPE H)
concatenate 'Material: ' p_matnr-low into string1 separated by space.
CLEAR ls_line.
ls_line-typ = 'H'.
ls_line-key = 'MOST Operation'.
concatenate p_gid-low p_opn-low into string2 separated by space.
ls_line-info = string2.
APPEND ls_line TO pt_report_title.
ls_line-typ = 'S'.
ls_line-key = 'Text'.
select single DESCRIPTION from zroutpromast into string1 where mop_gid = p_gid-low
and mop_opn = p_opn-low
and werks = p_werks-low.
ls_line-info = string1.
APPEND ls_line TO pt_report_title.
ls_line-typ = 'S'.
ls_line-key = 'Routing Counter:'.
ls_line-info = counter.
APPEND ls_line TO pt_report_title.
Status Line(TYPE S)
ld_date(2) = sy-datum+6(2).
ld_date+2(1) = '/'.
ld_date3(2) = sy-datum4(2).
ld_date+5(1) = '/'.
ld_date+6(4) = sy-datum(4).
ls_line-typ = 'S'.
ls_line-key = 'Date'.
ls_line-info = ld_date.
APPEND ls_line TO pt_report_title.
Action Line(TYPE A)
CLEAR ls_line.
ls_line-typ = 'A'.
CONCATENATE 'Report: ' sy-repid INTO ls_line-info SEPARATED BY space.
APPEND ls_line TO pt_report_title.
ENDFORM. " build_report_title
*& Form build_variant
text
--> p1 text
<-- p2 text
FORM build_variant .
gd_variant-report = sy-repid.
ENDFORM. " build_variant
*& Module STATUS_0100 OUTPUT
text
MODULE STATUS_0100 OUTPUT.
SET PF-STATUS 'STATUS1'.
SET TITLEBAR 'ZTITLE'.
IF gd_tree IS INITIAL.
Create ALVtree (must be performed within screen PBO module)
PERFORM create_alvtree_container.
PERFORM create_object_in_container.
PERFORM create_empty_alvtree_control.
perform change_toolbar.
PERFORM create_alvtree_hierarchy.
ENDIF.
CALL METHOD cl_gui_cfw=>flush.
ENDMODULE. " STATUS_0100 OUTPUT
*& Module USER_COMMAND_0100 INPUT
text
MODULE USER_COMMAND_0100 INPUT.
case sy-ucomm.
when 'EXIT' or 'BACK' or 'CANC'.
call method gd_tree->free.
leave program.
when others.
call method cl_gui_cfw=>dispatch.
endcase.
clear ok_code.
call method cl_gui_cfw=>flush.
ENDMODULE. " USER_COMMAND_0100 INPUT
*& Form create_alvtree_container
text
--> p1 text
<-- p2 text
FORM create_alvtree_container .
gd_tree_container_name = 'SCREEN_CONTAINER'.
create object gd_custom_container
exporting
container_name = gd_tree_container_name
exceptions
cntl_error = 1
cntl_system_error = 2
create_error = 3
lifetime_error = 4
lifetime_dynpro_dynpro_link = 5.
if sy-subrc <> 0.
message x208(00) with 'ERROR'.
endif.
ENDFORM. " create_alvtree_container
*& Form create_object_in_container
text
--> p1 text
<-- p2 text
FORM create_object_in_container .
create object gd_tree
exporting
parent = gd_custom_container
node_selection_mode = cl_gui_column_tree=>node_sel_mode_single
item_selection = 'X'
no_html_header = ''
no_toolbar = ''
exceptions
cntl_error = 1
cntl_system_error = 2
create_error = 3
lifetime_error = 4
illegal_node_selection_mode = 5
failed = 6
illegal_column_name = 7.
if sy-subrc <> 0.
message x208(00) with 'ERROR'.
endif.
ENDFORM. " create_object_in_container
*& Form create_empty_alvtree_control
text
--> p1 text
<-- p2 text
FORM create_empty_alvtree_control .
CLEAR: it_emptytab.
REFRESH: it_emptytab.
CALL METHOD gd_tree->set_table_for_first_display
EXPORTING
is_hierarchy_header = gd_hierarchy_header
it_list_commentary = gd_report_title
i_logo = gd_logo
i_background_id = 'ALV_BACKGROUND'
i_save = 'A'
is_variant = gd_variant
CHANGING
it_outtab = it_emptytab "Must be empty
it_fieldcatalog = gd_fieldcat.
ENDFORM. " create_empty_alvtree_control
*& Form create_alvtree_hierarchy
text
--> p1 text
<-- p2 text
FORM create_alvtree_hierarchy .
data: ls_sflight type sflight,
lt_sflight type sflight occurs 0.
data: ld_mop_gid_key type lvc_nkey,
ld_mop_opn_key type lvc_nkey.
loop at it_output.
perform add_ekko_node using it_output
changing ld_mop_gid_key.
loop at it_output1 where subgid eq it_output-subgid
and subopn eq it_output-subopn.
perform add_ekpo_line using it_output1
ld_mop_gid_key
changing ld_mop_opn_key.
endloop.
endloop.
calculate totals
call method gd_tree->update_calculations.
this method must be called to send the data to the frontend
call method gd_tree->frontend_update.
ENDFORM. " create_alvtree_hierarchy
*& Form add_ekko_node
text
-->P_IT_OUTPUT text
-->P_2478 text
<--P_LD_MOP_GID_KEY text
FORM add_ekko_node USING ps_output like it_output
VALUE(p_relate_key)
CHANGING p_node_key.
data: ld_node_text type lvc_value,
ls_sflight type sflight.
data : text128(128).
Set item-layout
concatenate ps_output-subgid ps_output-subopn into text128 separated by space.
data: lt_item_layout type lvc_t_layi,
ls_item_layout type lvc_s_layi.
ls_item_layout-t_image = '@3P@'.
ls_item_layout-fieldname = gd_tree->c_hierarchy_column_name.
ls_item_layout-style = cl_gui_column_tree=>style_default.
ld_node_text = text128.
append ls_item_layout to lt_item_layout.
Add node
call method gd_tree->add_node
exporting
i_relat_node_key = p_relate_key
i_relationship = cl_gui_column_tree=>relat_last_child
i_node_text = ld_node_text
is_outtab_line = ps_output
it_item_layout = lt_item_layout
importing
e_new_node_key = p_node_key.
ENDFORM. " add_ekko_node
*& Form add_ekpo_line
text
-->P_IT_OUTPUT1 text
-->P_LD_MOP_GID_KEY text
<--P_LD_MOP_OPN_KEY text
FORM add_ekpo_line USING Ps_OUTPUT1 like it_output1
value(p_relate_key)
CHANGING p_node_key.
data: ld_node_text type lvc_value,
ls_sflight type sflight.
data : text128(128).
concatenate ps_output1-srno ps_output1-movetype into text128 separated by space.
Set item-layout
data: lt_item_layout type lvc_t_layi,
ls_item_layout type lvc_s_layi.
ls_item_layout-t_image = '@3P@'.
ls_item_layout-fieldname = gd_tree->c_hierarchy_column_name.
ls_item_layout-style = cl_gui_column_tree=>style_default.
ld_node_text = text128.
append ls_item_layout to lt_item_layout.
Add node
call method gd_tree->add_node
exporting
i_relat_node_key = p_relate_key
i_relationship = cl_gui_column_tree=>relat_last_child
i_node_text = ld_node_text
is_outtab_line = ps_output1
it_item_layout = lt_item_layout
importing
e_new_node_key = p_node_key.
ENDFORM. " add_ekpo_line
*& Form change_toolbar
text
--> p1 text
<-- p2 text
FORM change_toolbar .
get toolbar control
call method gd_tree->get_toolbar_object
importing
er_toolbar = mr_toolbar.
check not mr_toolbar is initial.
add seperator to toolbar
call method mr_toolbar->add_button
exporting
fcode = ''
icon = ''
butn_type = cntb_btype_sep
text = ''
quickinfo = 'This is a Seperator'. "#EC NOTEXT
add Standard Button to toolbar (for Delete Subtree)
call method mr_toolbar->add_button
exporting
fcode = 'EXPORT' "Function code of button
icon = '@49@' "Icon ID (see )
butn_type = cntb_btype_button "Button type
text = '' "Button text
quickinfo = 'Download To Excel'. "Quick info text
add Dropdown Button to toolbar (for Insert Line)
call method mr_toolbar->add_button
exporting
fcode = 'INSERT_LC' "Function code of button
icon = '@17@' "Icon ID (see )
butn_type = cntb_btype_dropdown "Button type
text = '' "Button text
quickinfo = 'Insert Line'. "Quick info text
set event-handler for toolbar-control
data: toolbar_event_receiver type ref to lcl_toolbar_event_receiver.
create object toolbar_event_receiver.
set handler toolbar_event_receiver->on_function_selected
for mr_toolbar.
set handler toolbar_event_receiver->on_toolbar_dropdown
for mr_toolbar.
ENDFORM. " change_toolbar
Edited by: Darshan Shah on Jan 2, 2008 1:31 PMGui patch was not available on my pc
-
Hi Friends,
I have the following 2 problems in ALV report
1) Logo is not getting displayed in the report.
2) When i click on the Purchase order number in the report the interactive report is not working,i am not able to see report of First interactive level.
can you help it out friends.
Thanks and regards
Dinesh
REPORT YSDBALV1
tables: ekko , ekpo .
type-pools: slis .
Table for Display Header
data:i_header type slis_t_listheader with header line.
*Fieldcat Declaration
data:fieldcatalog type slis_T_fieldcat_alv WITH HEADER LINE.
*Table of Events
data:i_event type slis_t_event with header line .
For Layout
data:i_layout type slis_layout_alv .
data: text(30) .
*Internal Table Declaration
data: begin of it_final occurs 0 ,
ebeln like ekko-ebeln , "Purchasing Document No.
bedat like ekko-bedat , "Purchasing Document Date
matnr like ekpo-matnr , "Material No.
netwr like ekpo-netwr , "Net Order Value in PO Currancy
meins like ekpo-meins , "UOM
chk(1) ,
light(1) ,
change like ekpo-menge ,
end of it_final .
**select option Declaration
selection-screen begin of block block.
select-options: s_ebeln for ekko-ebeln .
selection-screen end of block block .
selection-screen begin of block block1 .
parameters:grid radiobutton group r .
parameters:list radiobutton group r .
selection-screen end of block block1 .
at selection screen
at selection-screen .
select single * from ekko where ebeln in s_ebeln .
if sy-subrc <> 0 .
message e000(8I) WITH 'No Data Exists' .
endif .
start-of-selection .
if grid = 'X' .
perform get_data .
perform event using i_event[] .
perform field using fieldcatalog[] .
perform layout using i_layout .
perform grid_display .
endif .
*& Form get_data
text
--> p1 text
<-- p2 text
form get_data .
*DATA Retrieval from tables
SELECT EKKO~EBELN
EKKO~BEDAT
EKPO~EBELP
EKPO~MATNR
EKPO~NETWR
EKPO~MEINS
EKPO~MENGE
EKPO~BPRME
INTO CORRESPONDING FIELDS OF table IT_FINAL
FROM EKKO INNER JOIN EKPO ON EKKOEBELN = EKPOEBELN
WHERE EKKO~EBELN IN S_EBELN.
APPEND IT_FINAL.
endform. " get_data
*Getting the Event for Top of Page display.
*& Form event
text
-->P_I_event[] text
form event using p_i_event type slis_t_event.
clear p_i_event .
refresh p_i_event .
CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
EXPORTING
I_LIST_TYPE = 0
IMPORTING
ET_EVENTS = p_i_event
EXCEPTIONS
LIST_TYPE_WRONG = 1
OTHERS = 2
read table p_i_event with key name = slis_ev_top_of_page into i_event.
if sy-subrc = 0.
move 'TOP_OF_PAGE_PO' to i_event-form.
modify p_i_event from i_event index sy-tabix transporting form.
endif.
clear i_event.
endform. " event
*Display Top-of Page Details and Logo
form top_of_page_po .
clear i_header .
refresh i_header .
write sy-datum to text.
i_header-typ = 'H'.
i_header-info = 'PURCHASE OREDER DETAILS'.
append i_header.
*Logo Display
CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
EXPORTING
it_list_commentary = i_header[]
I_LOGO = 'ENJOYSAPLOGO'.
endform .
*Field Catalog Append
*& Form field
text
-->P_fieldCATALOG[] text
form field using p_fieldcatalog type slis_t_fieldcat_alv.
clear fieldcatalog.
fieldcatalog-fieldname = 'EBELN'.
fieldcatalog-seltext_m = 'Purchase Order No'.
fieldcatalog-col_pos = 1.
append fieldcatalog .
clear fieldcatalog.
fieldcatalog-fieldname = 'BEDAT'.
fieldcatalog-seltext_m = 'PO Date'.
fieldcatalog-col_pos = 2.
append fieldcatalog .
clear fieldcatalog.
fieldcatalog-fieldname = 'MATNR'.
fieldcatalog-seltext_m = 'Material No'.
fieldcatalog-col_pos = 4.
fieldcatalog-outputlen = 20.
append fieldcatalog .
clear fieldcatalog.
fieldcatalog-fieldname = 'NETWR'.
fieldcatalog-seltext_m = 'Net Value '.
fieldcatalog-col_pos = 5.
fieldcatalog-outputlen = 20.
fieldcatalog-do_sum = 'X'.
append fieldcatalog .
clear fieldcatalog.
fieldcatalog-fieldname = 'MEINS'.
fieldcatalog-seltext_m = 'Units'.
fieldcatalog-col_pos = 6.
fieldcatalog-outputlen = 4.
append fieldcatalog .
clear fieldcatalog.
endform. " field
*& Form layout
text
form layout using p_i_layout TYPE SLIS_LAYOUT_ALV .
i_layout-zebra = 'X'.
i_layout-lights_fieldname = 'LIGHT'.
i_layout-lights_tabname = 'IT_FINAL'.
i_layout-box_fieldname = 'CHK'.
i_layout-box_tabname = 'IT_FINAL'.
i_layout-edit = ' '.
endform.
*To display Buttons in the MENU BAR if needed
FORM SET_PO_PF_STATUS USING P_I_EXTAB TYPE
SLIS_T_EXTAB.
SET PF-STATUS 'MENUPO'.
ENDFORM.
*Event for Interactive display of ALV report
form USER_COMMAND using r_ucomm like sy-ucomm
rs_selfield type slis_selfield .
if r_ucomm = '&IC1'.
READ TABLE IT_FINAL index rs_selfield-tabindex.
write:/ IT_FINAL-ebeln.
endif.
endform .
*Parameters of FM REUSE_ALV_GRID_DISPLAY
*& Form grid_display
text
--> p1 text
<-- p2 text
form grid_display .
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
I_CALLBACK_PROGRAM = SY-REPID
I_CALLBACK_PF_STATUS_SET = 'SET_PO_PF_STATUS'
I_CALLBACK_USER_COMMAND = 'USER_COMMAND'
IS_LAYOUT = I_LAYOUT
IT_FIELDCAT = FIELDCATALOG[]
IT_EVENTS = I_EVENT[]
TABLES
t_outtab = IT_FINAL.
endform. " grid_display*& Report YSDBALV1
REPORT YSDBALV1.
tables: ekko , ekpo .
type-pools: slis .
Table for Display Header
data:i_header type slis_t_listheader with header line.
*Fieldcat Declaration
data:fieldcatalog type slis_T_fieldcat_alv WITH HEADER LINE.
*Table of Events
data:i_event type slis_t_event with header line ,
wa_event type line of slis_t_event.
For Layout
data:i_layout type slis_layout_alv .
data: text(30) .
*Internal Table Declaration
data: begin of it_final occurs 0 ,
ebeln like ekko-ebeln , "Purchasing Document No.
bedat like ekko-bedat , "Purchasing Document Date
matnr like ekpo-matnr , "Material No.
netwr like ekpo-netwr , "Net Order Value in PO Currancy
meins like ekpo-meins , "UOM
chk(1) ,
light(1) ,
change like ekpo-menge ,
end of it_final .
**select option Declaration
selection-screen begin of block block.
select-options: s_ebeln for ekko-ebeln .
selection-screen end of block block .
selection-screen begin of block block1 .
parameters:grid radiobutton group r .
parameters:list radiobutton group r .
selection-screen end of block block1 .
at selection screen
at selection-screen .
select single * from ekko where ebeln in s_ebeln .
if sy-subrc <> 0 .
message e000(8I) WITH 'No Data Exists' .
endif .
start-of-selection .
if grid = 'X' .
perform get_data .
perform event using i_event[] .
perform field using fieldcatalog[] .
perform layout using i_layout .
perform grid_display .
endif .
*& Form get_data
text
--> p1 text
<-- p2 text
form get_data .
*DATA Retrieval from tables
SELECT EKKO~EBELN
EKKO~BEDAT
EKPO~EBELP
EKPO~MATNR
EKPO~NETWR
EKPO~MEINS
EKPO~MENGE
EKPO~BPRME
INTO CORRESPONDING FIELDS OF table IT_FINAL
FROM EKKO INNER JOIN EKPO ON EKKOEBELN = EKPOEBELN
WHERE EKKO~EBELN IN S_EBELN.
APPEND IT_FINAL.
endform. " get_data
*Getting the Event for Top of Page display.
*& Form event
text
-->P_I_event[] text
form event using p_i_event type slis_t_event.
clear p_i_event .
refresh p_i_event .
CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
EXPORTING
I_LIST_TYPE = 0
IMPORTING
ET_EVENTS = p_i_event.
EXCEPTIONS
LIST_TYPE_WRONG = 1
OTHERS = 2.
read table p_i_event with key name = slis_ev_top_of_page into wa_event.
if sy-subrc = 0.
move 'TOP_OF_PAGE_PO' to i_event-form.
modify p_i_event from i_event index sy-tabix transporting form.
endif.
clear i_event.
endform. " event
*Display Top-of Page Details and Logo
form top_of_page_po .
clear i_header .
refresh i_header .
write sy-datum to text.
i_header-typ = 'H'.
i_header-info = 'PURCHASE OREDER DETAILS'.
append i_header.
*Logo Display
CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
EXPORTING
it_list_commentary = i_header[]
I_LOGO = 'ENJOYSAP_LOGO'.
endform .
*Field Catalog Append
*& Form field
text
-->P_fieldCATALOG[] text
form field using p_fieldcatalog type slis_t_fieldcat_alv.
clear fieldcatalog.
fieldcatalog-fieldname = 'EBELN'.
fieldcatalog-seltext_m = 'Purchase Order No'.
fieldcatalog-col_pos = 1.
append fieldcatalog .
clear fieldcatalog.
fieldcatalog-fieldname = 'BEDAT'.
fieldcatalog-seltext_m = 'PO Date'.
fieldcatalog-col_pos = 2.
append fieldcatalog .
clear fieldcatalog.
fieldcatalog-fieldname = 'MATNR'.
fieldcatalog-seltext_m = 'Material No'.
fieldcatalog-col_pos = 4.
fieldcatalog-outputlen = 20.
append fieldcatalog .
clear fieldcatalog.
fieldcatalog-fieldname = 'NETWR'.
fieldcatalog-seltext_m = 'Net Value '.
fieldcatalog-col_pos = 5.
fieldcatalog-outputlen = 20.
fieldcatalog-do_sum = 'X'.
append fieldcatalog .
clear fieldcatalog.
fieldcatalog-fieldname = 'MEINS'.
fieldcatalog-seltext_m = 'Units'.
fieldcatalog-col_pos = 6.
fieldcatalog-outputlen = 4.
append fieldcatalog .
clear fieldcatalog.
endform. " field
*& Form layout
text
form layout using p_i_layout TYPE SLIS_LAYOUT_ALV .
i_layout-zebra = 'X'.
i_layout-lights_fieldname = 'LIGHT'.
i_layout-lights_tabname = 'IT_FINAL'.
i_layout-box_fieldname = 'CHK'.
i_layout-box_tabname = 'IT_FINAL'.
i_layout-edit = ' '.
endform.
*To display Buttons in the MENU BAR if needed
FORM SET_PO_PF_STATUS USING P_I_EXTAB TYPE
SLIS_T_EXTAB.
SET PF-STATUS 'MENUPO'.
ENDFORM.
*Event for Interactive display of ALV report
form USER_COMMAND using r_ucomm like sy-ucomm
rs_selfield type slis_selfield .
if r_ucomm = '&IC1'.
READ TABLE IT_FINAL index rs_selfield-tabindex.
set parameter id 'VL1' field it_final-ebeln.
call transaction 'ME23N'.
endif.
endform .
*Parameters of FM REUSE_ALV_GRID_DISPLAY
*& Form grid_display
text
--> p1 text
<-- p2 text
form grid_display .
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
I_CALLBACK_PROGRAM = SY-REPID
I_CALLBACK_PF_STATUS_SET = 'SET_PO_PF_STATUS'
I_CALLBACK_USER_COMMAND = 'USER_COMMAND'
IS_LAYOUT = I_LAYOUT
IT_FIELDCAT = FIELDCATALOG[]
IT_EVENTS = I_EVENT[]
TABLES
t_outtab = IT_FINAL.
endform. " grid_display
Regards,
Rusidar S. -
IT_FIELDCATALOG IS NOT GETTING FILLED
HI friends
I have returned a program for workflow tracking. Am getting the output has led light alone no data's are displayed. I found that my IT_FIELDCATALOG = GT_FCAT is not getting filled. How to fill that. Am pasting my programming here. Kinldy help me out.
TYPE-POOLS: ABAP.
TABLES : PTREQ_ATTABSDATA,PTREQ_HEADER,PTREQ_ITEMS.
TYPES: BEGIN OF TY_S_OUTTAB,
EXCEPTION TYPE LVC_EXLED,
PERNR TYPE P0001-PERNR,
BEGDA TYPE PTREQ_ATTABSDATA-BEGDA,
ENDDA TYPE PTREQ_ATTABSDATA-ENDDA,
SUBTY TYPE SUBTY,
STATUS TYPE PTREQ_HEADER-STATUS,
END OF TY_S_OUTTAB.
TYPES: TY_T_OUTTAB TYPE STANDARD TABLE OF TY_S_OUTTAB
WITH DEFAULT KEY.
DATA : REQUEST_ID TYPE PTREQ_HEADER-REQUEST_ID.
DATA:
GD_REPID TYPE SYREPID,
GD_OKCODE TYPE UI_FUNC,
GT_FCAT TYPE LVC_T_FCAT,
GS_LAYOUT TYPE LVC_S_LAYO,
GS_VARIANT TYPE DISVARIANT,
GO_DOCKING TYPE REF TO CL_GUI_DOCKING_CONTAINER,
GO_GRID TYPE REF TO CL_GUI_ALV_GRID.
DATA: FIELDCATALOG TYPE SLIS_T_FIELDCAT_ALV WITH HEADER LINE.
DATA: GT_OUTTAB TYPE TY_T_OUTTAB.
PARAMETERS:
PERNR TYPE PA0001-PERNR,
REQ_ID TYPE PTREQ_HEADER-REQUEST_ID,
LEA_TY TYPE PA0001-SUBTY,
BEGDA TYPE PA0001-BEGDA,
ENDDA TYPE PA0001-ENDDA.
REQ_ID = '52A08D487A9B5807E10000000A170133'.
START-OF-SELECTION.
BREAK-POINT.
* SELECT * FROM PTREQ_ATTABSDATA INTO CORRESPONDING FIELDS OF TABLE gt_outtab
* WHERE PERNR = PERNR AND SUBTY = LEA_TY.
SELECT C~PERNR C~BEGDA C~ENDDA C~SUBTY A~STATUS INTO CORRESPONDING FIELDS OF TABLE GT_OUTTAB
FROM ( ( PTREQ_HEADER AS A INNER JOIN
PTREQ_ITEMS AS B ON A~ITEM_LIST_ID = B~ITEM_LIST_ID ) INNER JOIN
PTREQ_ATTABSDATA AS C ON B~ITEM_INS = C~ITEM_ID )
WHERE REQUEST_ID = REQ_ID AND REQUEST_TYPE = 'ABSREQ'
AND VERSION_NO = ( SELECT MAX( VERSION_NO ) FROM PTREQ_HEADER
WHERE REQUEST_ID = REQ_ID ) AND
ITEM_LIST_NO = ( SELECT MAX( ITEM_LIST_NO )
FROM PTREQ_ITEMS WHERE ITEM_LIST_ID = A~ITEM_LIST_ID ) .
PERFORM INIT_CONTROLS.
PERFORM CHECK_CONDITION.
* Display data
CALL METHOD GO_GRID->SET_TABLE_FOR_FIRST_DISPLAY
EXPORTING
IS_LAYOUT = GS_LAYOUT
IS_VARIANT = GS_VARIANT
I_SAVE = 'A'
CHANGING
IT_OUTTAB = GT_OUTTAB
IT_FIELDCATALOG = GT_FCAT
EXCEPTIONS
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.
* MESSAGE ID mid TYPE mtype NUMBER num.
ENDIF.
CALL SCREEN '0100'.
END-OF-SELECTION.
*& Module STATUS_0100 OUTPUT
* text
MODULE STATUS_0100 OUTPUT.
SET PF-STATUS 'STATUS_0100'.
* SET TITLEBAR 'xxx'.
** CALL METHOD go_grid1->refresh_table_display
*** EXPORTING
*** IS_STABLE =
*** I_SOFT_REFRESH =
** EXCEPTIONS
** FINISHED = 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.
*OK-CODE->GD_OKCODE.
ENDMODULE. " STATUS_0100 OUTPUT
*& Module USER_COMMAND_0100 INPUT
* text
MODULE USER_COMMAND_0100 INPUT.
CASE GD_OKCODE.
WHEN 'BACK' OR
'END' OR
'CANC'.
SET SCREEN 0.
LEAVE SCREEN.
WHEN OTHERS.
CALL METHOD GO_GRID->REFRESH_TABLE_DISPLAY
EXCEPTIONS
FINISHED = 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.
ENDCASE.
CLEAR: GD_OKCODE.
ENDMODULE. " USER_COMMAND_0100 INPUT
*& Form INIT_CONTROLS
* text
* --> p1 text
* <-- p2 text
FORM INIT_CONTROLS .
* Create ALV grid
CREATE OBJECT GO_GRID
EXPORTING
I_PARENT = GO_DOCKING
EXCEPTIONS
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.
PERFORM BUILD_FIELDCATALOG.
PERFORM SET_LAYOUT_AND_VARIANT.
ENDFORM. " INIT_CONTROLS
*& Form BUILD_FIELDCATALOG
* text
* --> p1 text
* <-- p2 text
FORM BUILD_FIELDCATALOG.
*fieldcatalog-fieldname = 'EXPECTION'.
* fieldcatalog-seltext_m = 'LIGHT'.
* fieldcatalog-col_pos = 1.
* fieldcatalog-outputlen = 3.
** fieldcatalog-emphasize = 'X'.
* APPEND fieldcatalog TO fieldcatalog.
* CLEAR fieldcatalog.
FIELDCATALOG-FIELDNAME = 'PERNR'.
FIELDCATALOG-SELTEXT_M = 'EMPLOYEE NO'.
FIELDCATALOG-COL_POS = 1.
FIELDCATALOG-OUTPUTLEN = 8.
FIELDCATALOG-EMPHASIZE = 'X'.
APPEND FIELDCATALOG TO FIELDCATALOG.
CLEAR FIELDCATALOG.
FIELDCATALOG-FIELDNAME = 'REQ_ID'.
FIELDCATALOG-SELTEXT_M = 'REQUEST_ID'.
FIELDCATALOG-COL_POS = 2.
APPEND FIELDCATALOG TO FIELDCATALOG.
CLEAR FIELDCATALOG.
FIELDCATALOG-FIELDNAME = 'LEA_TY'.
FIELDCATALOG-SELTEXT_M = 'LEAVE_TYPE'.
FIELDCATALOG-COL_POS = 3.
APPEND FIELDCATALOG TO FIELDCATALOG.
CLEAR FIELDCATALOG.
FIELDCATALOG-FIELDNAME = 'BEGDA'.
FIELDCATALOG-SELTEXT_M = 'BEGIN_DATE'.
FIELDCATALOG-COL_POS = 4.
APPEND FIELDCATALOG TO FIELDCATALOG.
CLEAR FIELDCATALOG.
FIELDCATALOG-FIELDNAME = 'ENDDA'.
FIELDCATALOG-SELTEXT_M = 'END_DATE'.
FIELDCATALOG-COL_POS = 5.
APPEND FIELDCATALOG TO FIELDCATALOG.
CLEAR FIELDCATALOG.
FIELDCATALOG-FIELDNAME = 'STATUS'.
FIELDCATALOG-SELTEXT_M = 'STATUS'.
FIELDCATALOG-COL_POS = 6.
APPEND FIELDCATALOG TO FIELDCATALOG.
CLEAR FIELDCATALOG.
* define local data
DATA:
LS_FCAT TYPE LVC_S_FCAT.
CALL FUNCTION 'LVC_FIELDCATALOG_MERGE'
* EXPORTING
* I_BUFFER_ACTIVE =
* I_STRUCTURE_NAME = 'TY_S_OUTTAB'
* I_CLIENT_NEVER_DISPLAY = 'X'
* I_BYPASSING_BUFFER =
* I_INTERNAL_TABNAME =
CHANGING
CT_FIELDCAT = GT_FCAT
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.
ENDFORM. " BUILD_FIELDCATALOG_KNB1
*& Form SET_LAYOUT_AND_VARIANT
* text
* --> p1 text
* <-- p2 text
FORM SET_LAYOUT_AND_VARIANT .
CLEAR: GS_LAYOUT,
GS_VARIANT.
* GS_LAYOUT-CWIDTH_OPT = ABAP_TRUE.
GS_LAYOUT-ZEBRA = ABAP_TRUE.
GS_LAYOUT-EXCP_FNAME = 'EXCEPTION'. " define column for LED
GS_LAYOUT-EXCP_LED = ABAP_TRUE.
GS_VARIANT-REPORT = SYST-REPID.
GS_VARIANT-HANDLE = 'GRID'.
ENDFORM. " SET_LAYOUT_AND_VARIANT
*& Form CHECK_CONDITION
* text
* --> p1 text
* <-- p2 text
FORM CHECK_CONDITION .
* define local data
DATA: LS_OUTTAB TYPE TY_S_OUTTAB.
LOOP AT GT_OUTTAB INTO LS_OUTTAB.
IF ( LS_OUTTAB-STATUS = 'APPROVED' ).
LS_OUTTAB-EXCEPTION = '3'. " GREEN LED/traffic light
ELSE.
LS_OUTTAB-EXCEPTION = '1'. " RED LED / traffic light
ENDIF.
MODIFY GT_OUTTAB FROM LS_OUTTAB INDEX SYST-TABIX.
ENDLOOP.
ENDFORM. " CHECK_CONDITION
Here in the function module 'LVC_FIELDCATALOG_MERGE'
GT_FACT is not getting filled. How to do that.
Regards
vijaysome thing you are missing, but any you can also do this..
change the definiton of the fieldcatalog.
DATA: FIELDCATALOG TYPE lvc_t_fcat WITH HEADER LINE.
population change
FIELDCATALOG-FIELDNAME = 'PERNR'.
FIELDCATALOG-COLTEXT = 'EMPLOYEE NO'.
FIELDCATALOG-COL_POS = 1.
FIELDCATALOG-OUTPUTLEN = 8.
FIELDCATALOG-EMPHASIZE = 'X'.
APPEND FIELDCATALOG TO FIELDCATALOG.
CLEAR FIELDCATALOG.
FIELDCATALOG-FIELDNAME = 'REQ_ID'.
FIELDCATALOG-COLTEXT = 'REQUEST_ID'.
FIELDCATALOG-COL_POS = 2.
APPEND FIELDCATALOG TO FIELDCATALOG.
CLEAR FIELDCATALOG.
FIELDCATALOG-FIELDNAME = 'LEA_TY'.
FIELDCATALOG-COLTEXT = 'LEAVE_TYPE'.
FIELDCATALOG-COL_POS = 3.
APPEND FIELDCATALOG TO FIELDCATALOG.
CLEAR FIELDCATALOG.
FIELDCATALOG-FIELDNAME = 'BEGDA'.
FIELDCATALOG-COLTEXT = 'BEGIN_DATE'.
FIELDCATALOG-COL_POS = 4.
APPEND FIELDCATALOG TO FIELDCATALOG.
CLEAR FIELDCATALOG.
FIELDCATALOG-FIELDNAME = 'ENDDA'.
FIELDCATALOG-COLTEXT = 'END_DATE'.
FIELDCATALOG-COL_POS = 5.
APPEND FIELDCATALOG TO FIELDCATALOG.
CLEAR FIELDCATALOG.
FIELDCATALOG-FIELDNAME = 'STATUS'.
FIELDCATALOG-COLTEXT = 'STATUS'.
FIELDCATALOG-COL_POS = 6.
APPEND FIELDCATALOG TO FIELDCATALOG.
CLEAR FIELDCATALOG.
method call display change..
* Display data
CALL METHOD GO_GRID->SET_TABLE_FOR_FIRST_DISPLAY
EXPORTING
IS_LAYOUT = GS_LAYOUT
IS_VARIANT = GS_VARIANT
I_SAVE = 'A'
CHANGING
IT_OUTTAB = GT_OUTTAB
IT_FIELDCATALOG = FIELDCATALOG[]
EXCEPTIONS
OTHERS = 4.
IF SY-SUBRC EQ 0.
ENDIF.
apply all the changes and see... -
Alv : drill down not working.
Hi All,
Could you please tell me whats wrong with this code ? its not drilling down to show 'ebeln' with me22n. Am I missing something ?
Please help.
Hrishi
code is :-
REPORT Z_VENDOR_BACKORDER_REPORT_ALV .
TABLES: EKKO, LFA1, MAKT, EKET, EKPO, AFPO, MARC.
*Data Declaration
DATA: BEGIN OF ITAB OCCURS 0 ,
ebeln LIKE ekko-ebeln , " PO number
aedat LIKE ekko-aedat , " creation date
ebelp LIKE ekpo-ebelp , " item no
lifnr LIKE ekko-lifnr , " vendor number
name1 LIKE lfa1-name1 , " vendor name
RESWK LIKE EKKO-RESWK , " PLANT NO
MEMORY LIKE EKKO-MEMORY , " ORDER INCOMPLETE
matnr LIKE ekpo-matnr , " material number
werks like ekpo-werks , " plant
txz01 LIKE ekpo-txz01 , " material description
eindt LIKE eket-eindt , " Promised date
menge LIKE eket-menge , " quantity
wemng LIKE eket-wemng , " delivered quantity
netpr like ekpo-netpr , " value in AUD
peinh like ekpo-peinh , " price unit
banfn like ekpo-banfn , " PR no
aufnr like ebkn-aufnr , " Production order no
MAABC LIKE MARC-MAABC , " MATERIAL ABC Indicator
maktx like makt-maktx , " material long description
open_quant type p decimals 2, " quantity - delivered
VALUE TYPE p decimals 2, " $ VALUE * OPEN QUANTITY
end of ITAB.
data: wa like itab.
DATA: bdcdata LIKE bdcdata OCCURS 0 WITH HEADER LINE.
DATA: TEMP TYPE EKKO-LIFNR.
data: opt like CTU_PARAMS.
*DATA: WA TYPE FINAL.
all ALV declarations
type-pools: slis. "ALV Declarations
DATA: fieldcatalog TYPE slis_t_fieldcat_alv with header line,
G_REPID TYPE SY-REPID,
GS_PRINT TYPE SLIS_PRINT_ALV,
GT_LIST_TOP_OF_PAGE TYPE SLIS_T_LISTHEADER,
GT_EVENTS TYPE SLIS_T_EVENT,
GT_SORT TYPE SLIS_T_SORTINFO_ALV,
GS_LAYOUT TYPE SLIS_LAYOUT_ALV,
COL_POS TYPE I.
-----------------SELECTION SCREEN----------------------
selection-screen begin of block b1 with frame title text-001.
select-options VENDORNO for ekko-lifnr.
select-options MATERIAL for ekpo-matnr.
SELECT-OPTIONS PLANT FOR EKKO-RESWK.
select-options REQDAT for eket-eindt.
selection-screen end of block b1.
*................... GET DATA..................
START-OF-SELECTION.
PERFORM GATHER_DATA.
END-OF-SELECTION.
FORM USER_COMMAND USING r_ucomm LIKE sy-ucomm
rs_selfield TYPE slis_selfield.
CASE r_ucomm.
WHEN '&IC1'.
CASE rs_selfield-sel_tab_field.
WHEN 'ITAB-EBELN'.
CHECK NOT rs_selfield-value IS INITIAL.
SET PARAMETER ID 'BUS' FIELD rs_selfield-value.
CALL TRANSACTION 'ME22N' AND SKIP FIRST SCREEN.
Do something at 'Sales document type' field selection
when 'ITAB-MATNR'.
SET PARAMETER ID 'BUS' FIELD rs_selfield-value.
CALL TRANSACTION 'MD04' AND SKIP FIRST SCREEN.
ENDCASE.
ENDCASE.
ENDFORM.
form gather_data.
SELECT EKKO~EBELN
EKKO~AEDAT
EKKO~LIFNR
EKKO~MEMORY
EKKO~RESWK
EKPO~EBELP
EKPO~MATNR
ekpo~werks
ekpo~netpr
ekpo~peinh
ekpo~banfn
ekpo~txz01
makt~maktx
EKET~EINDT
EKET~MENGE
EKET~WEMNG
LFA1~NAME1
INTO corresponding fields of ITAB
FROM (
EKKO inner JOIN EKPO
ON EKKOEBELN = EKPOEBELN
inner JOIN EKET
ON EKPOEBELN = EKETEBELN
AND EKPOEBELP = EKETEBELP
inner JOIN LFA1
ON EKKOLIFNR = LFA1LIFNR
*left outer join makt
*on ekpomatnr = maktmatnr
WHERE EKKO~LIFNR IN VENDORNO
AND EKKO~RESWK IN PLANT
and EKPO~MATNR IN MATERIAL
and ekpo~elikz eq ' '
and ekpo~loekz ne 'L'
and eket~eindt in REQDAT.
append itab.
CLEAR ITAB.
endselect.
clear temp.
sort itab by lifnr.
loop at itab .
ITAB-OPEN_QUANT = ITAB-MENGE - ITAB-WEMNG.
if itab-matnr eq ''.
select single aufnr from ebkn into itab-aufnr where banfn = itab-banfn.
select single matnr from afpo into itab-matnr where aufnr = itab-aufnr.
endif.
select single maktx from makt into itab-maktx where matnr = itab-matnr.
select single maabc from MARC INTO ITAB-MAABC WHERE MATNR = ITAB-MATNR.
ITAB-VALUE = ITAB-NETPR * ITAB-OPEN_QUANT / itab-peinh.
modify itab.
endloop.
SKIP.
fieldcatalog-tabname = 'ITAB'.
fieldcatalog-fieldname = 'LIFNR'.
fieldcatalog-seltext_m = 'vendor no'.
fieldcatalog-col_pos = 1.
fieldcatalog-outputlen = 15.
fieldcatalog-inttype = 'C'.
fieldcatalog-emphasize = 'X'.
fieldcatalog-key = 'X'.
fieldcatalog-do_sum = 'X'.
fieldcatalog-no_zero = 'X'.
append fieldcatalog to fieldcatalog.
clear fieldcatalog.
fieldcatalog-tabname = 'ITAB'.
fieldcatalog-fieldname = 'EBELN'.
fieldcatalog-seltext_m = 'po Number'.
fieldcatalog-col_pos = 2.
fieldcatalog-inttype = 'C'.
fieldcatalog-emphasize = 'C401'.
append fieldcatalog to fieldcatalog.
clear fieldcatalog.
fieldcatalog-tabname = 'ITAB'.
fieldcatalog-fieldname = 'AEDAT'.
fieldcatalog-seltext_m = 'po date'.
fieldcatalog-col_pos = 3.
fieldcatalog-inttype = 'C'.
append fieldcatalog to fieldcatalog.
clear fieldcatalog.
fieldcatalog-tabname = 'ITAB'.
fieldcatalog-fieldname = 'EBELP'.
fieldcatalog-seltext_m = 'item number'.
fieldcatalog-col_pos = 4.
fieldcatalog-inttype = 'C'.
append fieldcatalog to fieldcatalog.
clear fieldcatalog.
fieldcatalog-tabname = 'ITAB'.
fieldcatalog-fieldname = 'MATNR'.
fieldcatalog-no_zero = 'X'.
fieldcatalog-seltext_m = 'material number'.
fieldcatalog-col_pos = 5.
fieldcatalog-inttype = 'C'.
append fieldcatalog to fieldcatalog.
clear fieldcatalog.
fieldcatalog-tabname = 'ITAB'.
fieldcatalog-fieldname = 'MAABC'.
fieldcatalog-seltext_m = 'material type'.
fieldcatalog-col_pos = 6.
fieldcatalog-inttype = 'C'.
append fieldcatalog to fieldcatalog.
clear fieldcatalog.
fieldcatalog-tabname = 'ITAB'.
fieldcatalog-fieldname = 'TXZ01'.
fieldcatalog-seltext_m = 'short text'.
fieldcatalog-col_pos = 7.
fieldcatalog-inttype = 'C'.
append fieldcatalog to fieldcatalog.
clear fieldcatalog.
fieldcatalog-tabname = 'ITAB'.
fieldcatalog-fieldname = 'MAKTX'.
fieldcatalog-seltext_m = 'long text'.
fieldcatalog-col_pos = 8.
fieldcatalog-inttype = 'C'.
fieldcatalog-outputlen = 15.
append fieldcatalog to fieldcatalog.
clear fieldcatalog.
fieldcatalog-tabname = 'ITAB'.
fieldcatalog-fieldname = 'EINDT'.
fieldcatalog-seltext_m = 'date promised'.
fieldcatalog-col_pos = 9.
fieldcatalog-inttype = 'C'.
append fieldcatalog to fieldcatalog.
clear fieldcatalog.
fieldcatalog-tabname = 'ITAB'.
fieldcatalog-fieldname = 'MENGE'.
fieldcatalog-seltext_m = 'Quantity'.
fieldcatalog-col_pos = 10.
fieldcatalog-inttype = 'C'.
fieldcatalog-outputlen = 15.
append fieldcatalog to fieldcatalog.
clear fieldcatalog.
fieldcatalog-tabname = 'ITAB'.
fieldcatalog-fieldname = 'WEMNG'.
fieldcatalog-seltext_m = 'Delivered'.
fieldcatalog-col_pos = 11.
fieldcatalog-inttype = 'C'.
append fieldcatalog to fieldcatalog.
clear fieldcatalog.
fieldcatalog-tabname = 'ITAB'.
fieldcatalog-fieldname = 'OPEN_QUANT'.
fieldcatalog-seltext_m = 'Open quantity'.
fieldcatalog-col_pos = 12.
fieldcatalog-inttype = 'C'.
append fieldcatalog to fieldcatalog.
clear fieldcatalog.
fieldcatalog-tabname = 'ITAB'.
fieldcatalog-fieldname = 'VALUE'.
fieldcatalog-seltext_m = '$ value'.
fieldcatalog-col_pos = 13.
fieldcatalog-inttype = 'C'.
fieldcatalog-do_sum = 'X'.
append fieldcatalog to fieldcatalog.
clear fieldcatalog.
call function 'REUSE_ALV_GRID_DISPLAY'
exporting
i_callback_program = g_repid
I_CALLBACK_USER_COMMAND = 'USER_COMMAND'
it_fieldcat = fieldcatalog[]
is_layout = GS_layout
IT_SORT = gt_sort
I_DEFAULT = 'X'
I_SAVE = 'X'
is_variant = z_template
tables
t_outtab = ITAB
exceptions
program_error = 1
others = 2.
endform.hi,
please run the code below.
REPORT yfi7g_ing_mic_001 .
*PROGRAM YFI7G_ING_MIC_001.
TABLES: vbak .
TABLES: mara .
TYPES: BEGIN OF tp_vbak ,
vbeln TYPE vbak-vbeln,
erdat TYPE vbak-erdat,
erzet TYPE vbak-erzet,
ernam TYPE vbak-ernam,
vbtyp TYPE vbak-vbtyp,
trvog TYPE vbak-trvog,
auart TYPE vbak-auart,
lifsk TYPE vbak-lifsk,
faksk TYPE vbak-faksk,
waerk TYPE vbak-waerk,
vkorg TYPE vbak-vkorg,
kunnr TYPE vbak-kunnr,
vgbel TYPE vbak-vgbel,
vgtyp TYPE vbak-vgtyp,
END OF tp_vbak .
TYPES: BEGIN OF tp_mara ,
matnr TYPE mara-matnr,
END OF tp_mara .
TYPES: BEGIN OF tp_alv1_data.
INCLUDE TYPE tp_vbak .
TYPES: END OF tp_alv1_data.
TYPES: BEGIN OF tp_alv2_data.
INCLUDE TYPE tp_mara .
TYPES: END OF tp_alv2_data.
TYPE-POOLS: slis.
DATA: gt_vbak TYPE STANDARD TABLE OF tp_vbak WITH HEADER LINE.
DATA: gt_mara TYPE STANDARD TABLE OF tp_mara WITH HEADER LINE.
DATA: gs_variant LIKE disvariant.
DATA: gt_alv1_data TYPE STANDARD TABLE OF tp_alv1_data WITH HEADER LINE.
DATA: gt_alv2_data TYPE STANDARD TABLE OF tp_alv2_data WITH HEADER LINE.
SELECTION-SCREEN *
BLOCK b0 *
SELECTION-SCREEN BEGIN OF BLOCK b0 WITH FRAME.
SELECT-OPTIONS: s_vbeln FOR vbak-vbeln. "<field not defined?>
PARAMETERS: p_matnr LIKE mara-matnr. "<field not defined?>
SELECTION-SCREEN END OF BLOCK b0.
BLOCK bvar *
SELECTION-SCREEN BEGIN OF BLOCK bvar WITH FRAME.
PARAMETERS: p_vari LIKE disvariant-variant.
SELECTION-SCREEN END OF BLOCK bvar.
BLOCK bbox *
SELECTION-SCREEN BEGIN OF BLOCK bbox WITH FRAME.
PARAMETERS: p_box_up RADIOBUTTON GROUP b1,
p_box_do RADIOBUTTON GROUP b1 DEFAULT 'X',
p_box_no RADIOBUTTON GROUP b1.
SELECTION-SCREEN END OF BLOCK bbox.
AT SELECTION-SCREEN ON P_VARI *
AT SELECTION-SCREEN ON p_vari.
PERFORM alv_variant_existence USING p_vari
CHANGING gs_variant.
AT SELECTION-SCREEN ON VALUE REQUEST FOR P_VARI *
AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_vari.
PERFORM alv_variant_f4 CHANGING p_vari
gs_variant.
INITIALIZATION *
INITIALIZATION.
START-OF-SELECTION *
START-OF-SELECTION.
PERFORM authority_check.
PERFORM get_control_data.
PERFORM get_transaction_data.
PERFORM process_transaction_data.
END-OF-SELECTION *
END-OF-SELECTION.
PERFORM output_data.
F O R M S *
FORM AUTHORITY_CHECK *
Perform authority checks for the report *
FORM authority_check.
!!! Note: authorisation checks are application-dependent.
!!! Some common cases are listed below - please select one of them
!!! or add new authorisation checks.
!!! If the report is creating batch input session or using LDB
!!! it may be sufficient to use automatic SAP auth.checks.
Authorisation for displaying documents in a single company code
authority-check object 'F_BKPF_BUK'
id 'BUKRS' field p_bukrs
id 'ACTVT' field '03'.
if sy-subrc <> 0.
message e001(z9) with 'No authorisation to display documents'
'in company code' p_bukrs.
endif.
Displaying documents from a list of company codes (select-options)
call function 'Y_BUKRS_AUTHORITY_CHECK'
EXPORTING
ACTVT = '03'
NOMESSAGE = ' '
tables
s_bukrs = s_bukrs.
ENDFORM. " AUTHORITY_CHECK
FORM GET_CONTROL_DATA *
Read configuration etc. *
FORM get_control_data.
ENDFORM. " GET_CONTROL_DATA
FORM GET_TRANSACTION_DATA *
Read documents etc. *
FORM get_transaction_data.
!!! Data selection statement below has been generated automatically.
!!! Please check if it is correct and complete.
!!! Use table joins or 'SELECT FOR ALL ENTRIES' when selecting data
!!! from related tables.
SELECT
vbeln
erdat
erzet
ernam
FROM vbak
INTO CORRESPONDING FIELDS OF TABLE gt_vbak
CHECK NOT gt_vbak[] IS INITIAL.
SELECT
matnr
FROM mara
INTO CORRESPONDING FIELDS OF TABLE gt_mara
FOR ALL ENTRIES IN gt_vbak
WHERE ernam = gt_vbak-ernam
ENDFORM. " GET_TRANSACTION_DATA
FORM PROCESS_TRANSACTION_DATA *
FORM process_transaction_data.
LOOP AT gt_vbak .
MOVE-CORRESPONDING gt_vbak TO gt_alv1_data .
APPEND gt_alv1_data .
ENDLOOP.
FREE gt_vbak .
LOOP AT gt_mara .
MOVE-CORRESPONDING gt_mara TO gt_alv2_data .
APPEND gt_alv2_data .
ENDLOOP.
FREE gt_mara .
ENDFORM. " PROCESS_TRANSACTION_DATA
FORM OUTPUT_DATA *
FORM output_data.
PERFORM alv_list_display.
ENDFORM. " OUTPUT_DATA
FORM DISPLAY_RECORD *
Display object associated with the current ALV line *
FORM display_record USING is_selfield TYPE slis_selfield.
READ TABLE gt_alv1_data INDEX is_selfield-tabindex.
CHECK sy-subrc = 0.
!!! SAMPLE IMPLEMENTATION FOR DISPLAYING FI DOCUMENTS:
SET PARAMETER ID 'BUK' FIELD gt_alv1_data-vbeln.
set parameter id 'BLN' field gt_alv1_data-belnr.
set parameter id 'GJR' field gt_alv1_data-gjahr.
CALL TRANSACTION 'FB03' AND SKIP FIRST SCREEN.
ENDFORM. " DISPLAY_RECORD
FORM ALV_LIST_DISPLAY *
Invoke main ALV function to format and show the report *
FORM alv_list_display.
DATA: ls_layout TYPE slis_layout_alv,
ls_print TYPE slis_print_alv,
ls_keyinfo TYPE slis_keyinfo_alv,
lt_fieldcat TYPE slis_t_fieldcat_alv,
lt_exctab TYPE slis_t_extab,
lt_sorttab TYPE slis_t_sortinfo_alv,
lt_events TYPE slis_t_event.
PERFORM alv_init_report_events TABLES lt_events.
PERFORM alv_init_report_layout TABLES lt_fieldcat
lt_exctab
lt_sorttab
CHANGING ls_layout
ls_print
ls_keyinfo.
CALL FUNCTION 'REUSE_ALV_HIERSEQ_LIST_DISPLAY'
EXPORTING
i_interface_check = ' '
i_callback_program = sy-cprog
is_layout = ls_layout
it_fieldcat = lt_fieldcat
it_excluding = lt_exctab
IT_SPECIAL_GROUPS =
it_sort = lt_sorttab
IT_FILTER =
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 = 'A'
is_variant = gs_variant
it_events = lt_events
IT_EVENT_EXIT =
i_tabname_header = 'GT_ALV1_DATA'
i_tabname_item = 'GT_ALV2_DATA'
I_STRUCTURE_NAME_HEADER =
I_STRUCTURE_NAME_ITEM =
is_keyinfo = ls_keyinfo
is_print = ls_print
IS_REPREP_ID =
IMPORTING
E_EXIT_CAUSED_BY_CALLER =
ES_EXIT_CAUSED_BY_USER =
TABLES
t_outtab_header = gt_alv1_data
t_outtab_item = gt_alv2_data.
EXCEPTIONS
PROGRAM_ERROR = 1
OTHERS = 2
ENDFORM. " ALV_LIST_DISPLAY
FORM ALV_INIT_REPORT_LAYOUT *
Set up report layout definition for ALV_LIST_DISPLAY *
<-- OT_FIELDCAT list of fields *
<-- OT_EXCTAB excluded menu options *
<-- OT_SORTTAB sorting/grouping definition *
<-- OS_LAYOUT global report layout settings *
<-- OS_PRINT global report printout settings *
<-- OS_KEYINFO itab key fields (required only for hier.lists) *
FORM alv_init_report_layout TABLES ot_fieldcat TYPE slis_t_fieldcat_alv
ot_exctab TYPE slis_t_extab
ot_sorttab TYPE slis_t_sortinfo_alv
CHANGING cs_layout TYPE slis_layout_alv
cs_print TYPE slis_print_alv
cs_keyinfo TYPE slis_keyinfo_alv.
add menu items to be excluded to ot_exctab.
REFRESH ot_exctab.
REFRESH ot_fieldcat.
REFRESH ot_sorttab.
!!! List all ALV data fields for display here:
DD-struct = data dictionary structure name
DD-field = field of data dictionary structure
itab = internal table for output data
itab-field = internal table field name
key = set to 'X' if key field
sum = set to 'X' for totals
hid = set to 'X' if field is initially hidden
row = list row number (multi-line list if >1)
DD-struct DD-field itab itab-field key sum hid row
PERFORM alv_build_fieldcat TABLES ot_fieldcat USING:
'VBAK' 'VBELN' 'GT_ALV1_DATA' 'VBELN' ' ' ' ' ' ' 1 ,
'VBAK' 'ERDAT' 'GT_ALV1_DATA' 'ERDAT' ' ' ' ' ' ' 1 ,
'VBAK' 'ERZET' 'GT_ALV1_DATA' 'ERZET' ' ' ' ' ' ' 1 ,
'VBAK' 'ERNAM' 'GT_ALV1_DATA' 'ERNAM' ' ' ' ' ' ' 1.
PERFORM alv_build_fieldcat TABLES ot_fieldcat USING:
'MARA' 'MATNR' 'GT_ALV2_DATA' 'MATNR' ' ' ' ' ' ' 1 .
!!! List all ALV data fields for sorting/grouping here
itab = internal table for output data
itab-field = internal table field name
up = sort ascending
down = sort descending
grp = group by
comp = group initially compressed
pos = field position in sort sequence
itab field up down grp comp pos
PERFORM alv_build_sorttab TABLES ot_sorttab USING:
'GT_ALV1_DATA' 'VBELN' 'X' ' ' ' ' ' ' 1.
PERFORM alv_build_sorttab TABLES ot_sorttab USING:
'GT_ALV2_DATA' 'MATNR' 'X' ' ' ' ' ' ' 1.
!!! key definition - required only for hierarchical display (2 itabs)
cs_keyinfo-header01 = 'VBELN' .
cs_keyinfo-item01 = 'MATNR' .
!!! See the declaration of type SLIS_LAYOUT_ALV and set the fields
!!! of OS_LAYOUT record to change list-level attributes
os_layout-no_colhead = 'X'. " no headings
cs_layout-zebra = 'X'. " stripped pattern
os_layout-no_vline = 'X'. " columns separated by space
os_layout-totals_only = 'X'. " show only totals
os_layout-totals_text = 'Total'. " totals line label
os_layout-subtotals_text = 'Subtotal'. " subtotals line label
os_layout-subtotals_text = 'Subtotal'. " subtotals line label
os_layout-key_hotspot = 'X'. " keys as hotspot
os_layout-expand_all = 'X'. " Expand all positions
os_layout...
cs_print-no_print_selinfos = 'X'. " Skip selection statistics
cs_print-no_print_listinfos = 'X'. " Skip list statistics
os_print-...
ENDFORM. " INIT_REPORT_LAYOUT
FORM ALV_BUILD_FIELDCAT *
Format a single line for ALV_INIT_REPORT_LAYOUT *
FORM alv_build_fieldcat TABLES ot_fieldcat
USING iv_ref_tabname "ref to a table/field
iv_ref_fieldname
iv_tabname "actual table/field name
iv_fieldname
iv_key
iv_do_sum
iv_no_out
iv_row_pos.
status variables for auto-numbering of field column position
(column number reset when a new table or row begins)
STATICS: sv_last_tabname TYPE slis_tabname,
sv_last_row_pos TYPE i,
sv_current_col TYPE i.
IF sv_last_tabname <> iv_tabname OR sv_last_row_pos <> iv_row_pos.
sv_current_col = 1.
ELSE.
ADD 1 TO sv_current_col.
ENDIF.
sv_last_tabname = iv_tabname.
sv_last_row_pos = iv_row_pos.
DATA: ls_fieldcat TYPE slis_fieldcat_alv.
DATA: lv_fieldname TYPE slis_fieldname.
lv_fieldname = iv_fieldname.
!!! List all the special formatting requirements in cases below
case lv_fieldname.
when 'WRBTR'. "<-- link with currency required
ls_fieldcat-cfieldname = 'WAERS'.
ls_fieldcat-ctabname = iv_tabname.
when 'HKONT'. "<-- change default column header
ls_fieldcat-seltext_s = 'GL Acc.'.
ls_fieldcat-ddictxt = 'S'. " (S)hort (M)iddle (L)ong
when 'SOME_NUMBER' "<-- change number formatting
ls_fieldcat-nosign = 'X'.
ls_fieldcat-nozero = 'X'.
ls_fieldcat-just = 'L'. " (L)eft (R)ight (C)enter
endcase.
ls_fieldcat-ref_tabname = iv_ref_tabname.
ls_fieldcat-ref_fieldname = iv_ref_fieldname.
ls_fieldcat-tabname = iv_tabname.
ls_fieldcat-fieldname = iv_fieldname.
ls_fieldcat-key = iv_key.
ls_fieldcat-do_sum = iv_do_sum.
ls_fieldcat-no_out = iv_no_out.
ls_fieldcat-row_pos = iv_row_pos.
ls_fieldcat-col_pos = sv_current_col.
APPEND ls_fieldcat TO ot_fieldcat.
ENDFORM. " ALV_BUILD_FIELDCAT
FORM ALV_BUILD_SORTTAB *
Set up sorting information for ALV_INIT_REPORT_LAYOUT *
FORM alv_build_sorttab TABLES ot_sorttab TYPE slis_t_sortinfo_alv
USING iv_tabname TYPE slis_fieldname
iv_fieldname TYPE slis_fieldname
iv_up TYPE c
iv_down TYPE c
iv_subtot TYPE c
iv_comp TYPE c
iv_spos TYPE n.
ot_sorttab-spos = iv_spos.
ot_sorttab-fieldname = iv_fieldname.
ot_sorttab-tabname = iv_tabname.
ot_sorttab-up = iv_up.
ot_sorttab-down = iv_down.
ot_sorttab-subtot = iv_subtot.
ot_sorttab-comp = iv_comp.
APPEND ot_sorttab.
ENDFORM. " ALV_BUILD_SORTTAB
FORM ALV_INIT_REPORT_EVENTS *
Set up program events for ALV_LIST_DISPLAY *
<-- OT_EVENTS list of events and associated report subroutines *
FORM alv_init_report_events TABLES ot_events TYPE slis_t_event.
CLEAR ot_events.
REFRESH ot_events.
ot_events-name = slis_ev_user_command.
ot_events-form = 'USER_COMMAND'.
APPEND ot_events.
ot_events-name = slis_ev_pf_status_set.
ot_events-form = ''. "'PF_STATUS_SET'.
APPEND ot_events.
ot_events-name = slis_ev_top_of_list.
ot_events-form = 'TOP_OF_LIST'.
APPEND ot_events.
ot_events-name = slis_ev_end_of_list.
ot_events-form = 'END_OF_LIST'.
APPEND ot_events.
ot_events-name = slis_ev_top_of_page.
ot_events-form = 'TOP_OF_PAGE'.
APPEND ot_events.
ot_events-name = slis_ev_end_of_page.
ot_events-form = 'END_OF_PAGE'.
APPEND ot_events.
ot_events-name = slis_ev_foreign_top_of_page.
ot_events-form = ''.
APPEND ot_events.
ot_events-name = slis_ev_foreign_end_of_page.
ot_events-form = ''.
APPEND ot_events.
ot_events-name = slis_ev_top_of_coverpage.
ot_events-form = ''.
APPEND ot_events.
ot_events-name = slis_ev_end_of_coverpage.
ot_events-form = ''.
APPEND ot_events.
ot_events-name = slis_ev_before_line_output.
ot_events-form = ''.
APPEND ot_events.
ot_events-name = slis_ev_after_line_output.
ot_events-form = ''.
APPEND ot_events.
ot_events-name = slis_ev_caller_exit_at_start.
ot_events-form = ''.
APPEND ot_events.
ot_events-name = slis_ev_list_modify.
ot_events-form = ''.
APPEND ot_events.
ot_events-name = slis_ev_subtotal_text.
ot_events-form = ''.
APPEND ot_events.
ENDFORM. " ALV_INIT_REPORT_EVENTS
FORM USER_COMMAND *
Subroutine attached as callback form to ABAP List Viewer *
--> UCOMM - user command code passed from ALV *
--> SELFIELD - information record describing current line/field *
FORM user_command USING value(iv_ucomm) LIKE sy-ucomm
is_selfield TYPE slis_selfield.
CASE iv_ucomm.
WHEN '&IC1'. "ALV record selection
PERFORM display_record USING is_selfield.
when ...
ENDCASE.
ENDFORM. " USER_COMMAND
FORM PF_STATUS_SET *
Subroutine attached as callback form to ABAP List Viewer, *
allows setting alternative menu. If necessary: *
1. Copy 'STANDARD' menu from SAPLKKBL and modify as required, *
2. Activate callback *
FORM pf_status_set USING it_exctab TYPE slis_t_extab.
set pf-status 'STANDARD' excluding it_exctab.
ENDFORM. " PF_STATUS_SET
FORM TOP_OF_LIST *
Subroutine attached as callback form to ABAP List Viewer, *
executed once at the start of list output. *
FORM top_of_list.
DATA: lt_seltab TYPE STANDARD TABLE OF rsparams WITH HEADER LINE.
DATA: lv_report LIKE sy-repid.
lv_report = sy-repid. "do not pass sy-repid to function!
IF p_box_up = 'X'. "display select options at report start
CALL FUNCTION 'RS_REFRESH_FROM_SELECTOPTIONS'
EXPORTING
curr_report = lv_report
TABLES
selection_table = lt_seltab.
remove 'technical' parameters with 'DELETE LT_SELTAB WHERE...'
before display, if necessary
CALL FUNCTION 'RS_LIST_SELECTION_TABLE'
EXPORTING
report = lv_report
seltext = 'X'
dyn_range =
newpage = ' '
screennr = 1000
TABLES
sel_tab = lt_seltab
EXCEPTIONS
sel_tab_empty = 1.
ENDIF. "p_box_up = 'X'
ENDFORM. " TOP_OF_LIST
FORM END_OF_LIST *
Subroutine attached as callback form to ABAP List Viewer *
executed once at the end of list output. *
FORM end_of_list.
DATA: lt_seltab TYPE STANDARD TABLE OF rsparams WITH HEADER LINE.
DATA: lv_report LIKE sy-repid.
lv_report = sy-repid. "do not pass sy-repid to function!
IF p_box_do = 'X'. "display select options at report end
CALL FUNCTION 'RS_REFRESH_FROM_SELECTOPTIONS'
EXPORTING
curr_report = lv_report
TABLES
selection_table = lt_seltab.
remove 'technical' parameters with 'DELETE LT_SELTAB WHERE...'
before display, if necessary
CALL FUNCTION 'RS_LIST_SELECTION_TABLE'
EXPORTING
report = lv_report
seltext = 'X'
dyn_range =
newpage = ' '
screennr = 1000
TABLES
sel_tab = lt_seltab
EXCEPTIONS
sel_tab_empty = 1.
ENDIF. "p_box_do = 'X'
ENDFORM. " END_OF_LIST
FORM TOP_OF_PAGE *
Subroutine attached as callback form to ABAP List Viewer *
FORM top_of_page.
standard Ingram Micro report page heading
DATA: lv_coco_pos TYPE i, "CurPos of 'Company confidential'
lv_title_pos TYPE i, "CurPos of report title
lv_title(70) TYPE c, "Truncated report title
lv_page_pos TYPE i, "CurPos of page number
lv_date_pos TYPE i, "CurPos of date and time
lv_page_no(10) TYPE c,
lv_date(25) TYPE c,
lv_time(20) TYPE c,
lv_page(10) TYPE c.
We may need to truncate title if the line size is < 81.
IF sy-linsz < 81.
lv_title = sy-title+0(50).
ELSE.
lv_title = sy-title.
ENDIF.
Decide on positioning of text depending on width of page
lv_title_pos = ( sy-linsz / 2 ) - ( STRLEN( lv_title ) / 2 ).
lv_coco_pos = sy-linsz - 20.
FORMAT COLOR COL_HEADING INTENSIFIED ON.
WRITE: / 'Ingram Micro',
AT lv_title_pos lv_title,
AT lv_coco_pos 'Company Confidential'.
Setup data correctly in the correct format for the display fields.
lv_page = sy-pagno.
SHIFT lv_page LEFT DELETING LEADING ' '.
CONCATENATE sy-datum6(2) sy-datum4(2) sy-datum+0(4)
INTO lv_date SEPARATED BY '.'.
CONCATENATE sy-uzeit0(2) ':' sy-uzeit2(2) INTO lv_time.
CONCATENATE lv_date lv_time INTO lv_date SEPARATED BY ' '.
CONCATENATE 'Page' lv_page INTO lv_page_no SEPARATED BY ' '.
Decide on positioning of text depending on width of page.
lv_page_pos = sy-linsz - ( STRLEN( lv_page_no ) ).
WRITE: / lv_date,
AT lv_page_pos lv_page_no.
ULINE.
ENDFORM. " TOP_OF_PAGE
FORM END_OF_PAGE *
Subroutine attached as callback form to ABAP List Viewer *
FORM end_of_page.
ENDFORM. " END_OF_PAGE
Form ALV_VARIANT_EXISTENCE
Reads ALV variant definition
FORM alv_variant_existence USING iv_variant LIKE disvariant-variant
CHANGING os_variant LIKE disvariant.
CHECK NOT iv_variant IS INITIAL.
os_variant-report = sy-repid.
os_variant-variant = iv_variant.
IF iv_variant CP '/*'. "user-specific variants begin with slash
os_variant-username = sy-uname.
ENDIF.
CALL FUNCTION 'REUSE_ALV_VARIANT_EXISTENCE'
EXPORTING
i_save = 'A'
CHANGING
cs_variant = os_variant
EXCEPTIONS
wrong_input = 1
not_found = 2
program_error = 3
OTHERS = 4.
IF sy-subrc <> 0.
MESSAGE e001(z9) WITH 'Please select a valid display variant.'.
ENDIF.
ENDFORM. " ALV_VARIANT_EXISTENCE
FORM ALV_VARIANT_F4 *
Display list of layout variants on report selection screen *
FORM alv_variant_f4 CHANGING cv_varname LIKE disvariant-variant
cs_variant LIKE disvariant.
DATA: lv_exit(1) TYPE c.
cs_variant-report = sy-repid.
CALL FUNCTION 'REUSE_ALV_VARIANT_F4'
EXPORTING
is_variant = cs_variant
i_save = 'A'
it_default_fieldcat =
IMPORTING
e_exit = lv_exit
es_variant = cs_variant
EXCEPTIONS
not_found = 2.
IF sy-subrc = 2.
MESSAGE ID sy-msgid TYPE 'S' NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ELSE.
IF lv_exit = space.
cv_varname = cs_variant-variant.
ENDIF.
ENDIF.
hope this will help.
see form user_command.
regards,
Ruchika -
How to enable excel downloading in ALV grid report.
Hi all,
How to enable excal downing in ALV grid report?
Thanks in Advance.
Siva Sankar.hi
check the following code
Example of a Simple ALV Grid Report
REPORT ZTUFI091 .
*& Report ZDEMO_ALVGRID *
*& Example of a simple ALV Grid Report *
*& The basic requirement for this demo is to display a number of *
*& fields from the EKKO table. *
*REPORT zdemo_alvgrid .
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,
gt_events type slis_t_event,
gd_prntparams type slis_print_alv.
*Start-of-selection.
START-OF-SELECTION.
perform data_retrieval.
perform build_fieldcatalog.
perform build_layout.
perform build_events.
perform build_print_params.
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_GRID_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_events
is_print = gd_prntparams
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.
FORM USER_COMMAND *
--> R_UCOMM *
--> RS_SELFIELD *
FORM user_command USING r_ucomm LIKE sy-ucomm
rs_selfield TYPE slis_selfield.
Check function code
CASE r_ucomm.
WHEN '&IC1'.
Check field clicked on within ALVgrid report
IF rs_selfield-fieldname = 'EBELN'.
Read data table, using index of row user clicked on
READ TABLE it_ekko INTO wa_ekko INDEX rs_selfield-tabindex.
Set parameter ID for transaction screen field
SET PARAMETER ID 'BES' FIELD wa_ekko-ebeln.
Sxecute transaction ME23N, and skip initial data entry screen
CALL TRANSACTION 'ME23N' AND SKIP FIRST SCREEN.
ENDIF.
ENDCASE.
ENDFORM.
*& Form BUILD_EVENTS
Build events table
form build_events.
data: ls_event type slis_alv_event.
call function 'REUSE_ALV_EVENTS_GET'
exporting
i_list_type = 0
importing
et_events = gt_events[].
read table gt_events with key name = slis_ev_end_of_page
into ls_event.
if sy-subrc = 0.
move 'END_OF_PAGE' to ls_event-form.
append ls_event to gt_events.
endif.
read table gt_events with key name = slis_ev_end_of_list
into ls_event.
if sy-subrc = 0.
move 'END_OF_LIST' to ls_event-form.
append ls_event to gt_events.
endif.
endform. " BUILD_EVENTS
*& Form BUILD_PRINT_PARAMS
Setup print parameters
form build_print_params.
gd_prntparams-reserve_lines = '3'. "Lines reserved for footer
gd_prntparams-no_coverpage = 'X'.
endform. " BUILD_PRINT_PARAMS
*& Form END_OF_PAGE
form END_OF_PAGE.
data: listwidth type i,
ld_pagepos(10) type c,
ld_page(10) type c.
write: sy-uline(50).
skip.
write:/40 'Page:', sy-pagno .
endform.
*& Form END_OF_LIST
form END_OF_LIST.
data: listwidth type i,
ld_pagepos(10) type c,
ld_page(10) type c.
skip.
write:/40 'Page:', sy-pagno .
endform.
hope it will help you
regards
sreelatha gullapalli -
hi all,
plz correct this revert back whan i executing every time it will show internal table itab is no long enough.
plz rectify the errirs and send back it.
ABLES: zfm_kfz.
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.
DATA : BEGIN OF ITAB OCCURS 0,
KFZNR LIKE ZFM_KFZ-KFZNR,
GERAET LIKE ZFM_KFZ-KFZNR,
KOSTENTRAEGER(10) TYPE C,
BEZEICHNUNG(10) TYPE C,
TUVDATUMMMYYYY(6) TYPE C,
ASUDATUMMMYYYY(6) TYPE C,
KMSTAND(6) TYPE C,
HISTO(1) TYPE C,
REIFEN(1) TYPE C,
USERNAME(12) TYPE C,
END OF ITAB.
DATA: BEGIN OF ITAB1 OCCURS 0.
INCLUDE STRUCTURE ITAB.
DATA: END OF ITAB1.
DATA: BEGIN OF ITAB_FIELDCAT OCCURS 0.
INCLUDE STRUCTURE ITAB.
DATA: END OF ITAB_FIELDCAT.
DATA: T_KFZ LIKE TABLE OF ZFM_KFZ.
*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,
gt_events type slis_t_event,
gd_prntparams type slis_print_alv.
*Start-of-selection.
START-OF-SELECTION.
perform data_retrieval.
perform build_fieldcatalog.
perform build_layout.
perform build_events.
perform build_print_params.
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 = 'kfznr'.
fieldcatalog-seltext_m = 'kfznr'.
fieldcatalog-col_pos = 0.
fieldcatalog-outputlen = 11.
fieldcatalog-emphasize = 'X'.
fieldcatalog-key = 'X'.
fieldcatalog-do_sum = 'X'.
fieldcatalog-no_zero = 'X'.
append fieldcatalog to fieldcatalog.
clear fieldcatalog.
fieldcatalog-fieldname = 'geraet'.
fieldcatalog-seltext_m = 'geraet'.
fieldcatalog-col_pos = 1.
append fieldcatalog to fieldcatalog.
clear fieldcatalog.
fieldcatalog-fieldname = 'kostentraeger'.
fieldcatalog-seltext_m = 'kostentraeger'.
fieldcatalog-col_pos = 2.
append fieldcatalog to fieldcatalog.
clear fieldcatalog.
fieldcatalog-fieldname = 'bezeichnung'.
fieldcatalog-seltext_m = 'bezeichnung'.
fieldcatalog-col_pos = 3.
append fieldcatalog to fieldcatalog.
clear fieldcatalog.
fieldcatalog-fieldname = 'tuvdatummmyyyy'.
fieldcatalog-seltext_m = 'tuvdatummmyyyy'.
fieldcatalog-col_pos = 4.
append fieldcatalog to fieldcatalog.
clear fieldcatalog.
fieldcatalog-fieldname = 'asudatummmyyyy'.
fieldcatalog-seltext_m = 'asudatummmyyyy'.
fieldcatalog-col_pos = 5.
append fieldcatalog to fieldcatalog.
clear fieldcatalog.
fieldcatalog-fieldname = 'kmstand'.
fieldcatalog-seltext_m = 'kmstand'.
fieldcatalog-col_pos = 6.
append fieldcatalog to fieldcatalog.
clear fieldcatalog.
fieldcatalog-fieldname = 'histo'.
fieldcatalog-seltext_m = 'histo'.
fieldcatalog-col_pos = 7.
fieldcatalog-outputlen = 1.
fieldcatalog-datatype = 'CURR'.
append fieldcatalog to fieldcatalog.
clear fieldcatalog.
fieldcatalog-fieldname = 'reifen'.
fieldcatalog-seltext_m = 'reifen'.
fieldcatalog-col_pos = 8.
append fieldcatalog to fieldcatalog.
clear fieldcatalog.
fieldcatalog-fieldname = 'username'.
fieldcatalog-seltext_m = 'username'.
fieldcatalog-col_pos = 9.
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_GRID_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_events
is_print = gd_prntparams
i_save = 'X'
is_variant = z_template
tables
t_outtab = itab1
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 * from zfm_kfz
into table itab where kfznr = itab-kfznr.
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 itab 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.
FORM USER_COMMAND *
--> R_UCOMM *
--> RS_SELFIELD *
FORM user_command USING r_ucomm LIKE sy-ucomm
rs_selfield TYPE slis_selfield.
Check function code
CASE r_ucomm.
WHEN '&IC1'.
Check field clicked on within ALVgrid report
IF rs_selfield-fieldname = 'EBELN'.
Read data table, using index of row user clicked on
READ TABLE it_ekko INTO wa_ekko INDEX rs_selfield-tabindex.
Set parameter ID for transaction screen field
SET PARAMETER ID 'BES' FIELD wa_ekko-ebeln.
Sxecute transaction ME23N, and skip initial data entry screen
CALL TRANSACTION 'ME23N' AND SKIP FIRST SCREEN.
ENDIF.
ENDCASE.
ENDFORM.
*& Form BUILD_EVENTS
Build events table
form build_events.
data: ls_event type slis_alv_event.
call function 'REUSE_ALV_EVENTS_GET'
exporting
i_list_type = 0
importing
et_events = gt_events[].
read table gt_events with key name = slis_ev_end_of_page
into ls_event.
if sy-subrc = 0.
move 'END_OF_PAGE' to ls_event-form.
append ls_event to gt_events.
endif.
read table gt_events with key name = slis_ev_end_of_list
into ls_event.
if sy-subrc = 0.
move 'END_OF_LIST' to ls_event-form.
append ls_event to gt_events.
endif.
endform. " BUILD_EVENTS
*& Form BUILD_PRINT_PARAMS
Setup print parameters
form build_print_params.
gd_prntparams-reserve_lines = '3'. "Lines reserved for footer
gd_prntparams-no_coverpage = 'X'.
endform. " BUILD_PRINT_PARAMS
*& Form END_OF_PAGE
form END_OF_PAGE.
data: listwidth type i,
ld_pagepos(10) type c,
ld_page(10) type c.
write: sy-uline(50).
skip.
write:/40 'Page:', sy-pagno .
endform.
*& Form END_OF_LIST
form END_OF_LIST.
data: listwidth type i,
ld_pagepos(10) type c,
ld_page(10) type c.
skip.
write:/40 'Page:', sy-pagno .
endform.Hi,
Change this..
DATA : BEGIN OF ITAB ,
KFZNR LIKE ZFM_KFZ-KFZNR,
GERAET LIKE ZFM_KFZ-KFZNR,
KOSTENTRAEGER(10) TYPE C,
BEZEICHNUNG(10) TYPE C,
TUVDATUMMMYYYY(6) TYPE C,
ASUDATUMMMYYYY(6) TYPE C,
KMSTAND(6) TYPE C,
HISTO(1) TYPE C,
REIFEN(1) TYPE C,
USERNAME(12) TYPE C,
END OF ITAB.
DATA: BEGIN OF ITAB1 OCCURS 0.
INCLUDE STRUCTURE ITAB.
DATA: END OF ITAB1.
DATA: ITAB_FIELDCAT type SLIS_T_FIELDCAT_ALV .
and also use CAPS for field names.
fieldcatalog-fieldname = '<b>KFZNR</b>'.
fieldcatalog-seltext_m = 'kfznr'.
fieldcatalog-col_pos = 0.
fieldcatalog-outputlen = 11.
fieldcatalog-emphasize = 'X'.
fieldcatalog-key = 'X'.
fieldcatalog-do_sum = 'X'.
fieldcatalog-no_zero = 'X'.
append fieldcatalog to fieldcatalog.
clear fieldcatalog.
Regards
vijay -
Dear Experts
I need to do summation of netprice when ever the PO Changes for the sample report given below
REPORT ZTUFI091 .
*& Report ZDEMO_ALVGRID *
*& Example of a simple ALV Grid Report *
*& The basic requirement for this demo is to display a number of *
*& fields from the EKKO table. *
*REPORT zdemo_alvgrid .
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,
gt_events type slis_t_event,
gd_prntparams type slis_print_alv.
*Start-of-selection.
START-OF-SELECTION.
perform data_retrieval.
perform build_fieldcatalog.
perform build_layout.
perform build_events.
perform build_print_params.
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_GRID_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_events
is_print = gd_prntparams
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.
FORM USER_COMMAND *
--> R_UCOMM *
--> RS_SELFIELD *
FORM user_command USING r_ucomm LIKE sy-ucomm
rs_selfield TYPE slis_selfield.
Check function code
CASE r_ucomm.
WHEN '&IC1'.
Check field clicked on within ALVgrid report
IF rs_selfield-fieldname = 'EBELN'.
Read data table, using index of row user clicked on
READ TABLE it_ekko INTO wa_ekko INDEX rs_selfield-tabindex.
Set parameter ID for transaction screen field
SET PARAMETER ID 'BES' FIELD wa_ekko-ebeln.
Sxecute transaction ME23N, and skip initial data entry screen
CALL TRANSACTION 'ME23N' AND SKIP FIRST SCREEN.
ENDIF.
ENDCASE.
ENDFORM.
*& Form BUILD_EVENTS
Build events table
form build_events.
data: ls_event type slis_alv_event.
call function 'REUSE_ALV_EVENTS_GET'
exporting
i_list_type = 0
importing
et_events = gt_events[].
read table gt_events with key name = slis_ev_end_of_page
into ls_event.
if sy-subrc = 0.
move 'END_OF_PAGE' to ls_event-form.
append ls_event to gt_events.
endif.
read table gt_events with key name = slis_ev_end_of_list
into ls_event.
if sy-subrc = 0.
move 'END_OF_LIST' to ls_event-form.
append ls_event to gt_events.
endif.
endform. " BUILD_EVENTS
*& Form BUILD_PRINT_PARAMS
Setup print parameters
form build_print_params.
gd_prntparams-reserve_lines = '3'. "Lines reserved for footer
gd_prntparams-no_coverpage = 'X'.
endform. " BUILD_PRINT_PARAMS
*& Form END_OF_PAGE
form END_OF_PAGE.
data: listwidth type i,
ld_pagepos(10) type c,
ld_page(10) type c.
write: sy-uline(50).
skip.
write:/40 'Page:', sy-pagno .
endform.
*& Form END_OF_LIST
form END_OF_LIST.
data: listwidth type i,
ld_pagepos(10) type c,
ld_page(10) type c.
skip.
write:/40 'Page:', sy-pagno .
endform.
pls show me how to accomplish this
Thanks in advance
karthikHi,
Try like the below...
REPORT ZTUFI091 .
*& Report ZDEMO_ALVGRID *
*& Example of a simple ALV Grid Report *
*& The basic requirement for this demo is to display a number of *
*& fields from the EKKO table. *
*REPORT zdemo_alvgrid .
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,
gt_events type slis_t_event,
gd_prntparams type slis_print_alv.
*Start-of-selection.
START-OF-SELECTION.
perform data_retrieval.
perform build_fieldcatalog.
perform build_layout.
perform build_events.
perform build_print_params.
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'.
<b> fieldcatalog-do_sum = 'X'.
fieldcatalog-no_zero = 'X'.</b>
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_GRID_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[]
<b> IT_SORT = i_sort</b>
it_special_groups = gd_tabgroup
it_events = gt_events
is_print = gd_prntparams
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.
FORM USER_COMMAND *
--> R_UCOMM *
--> RS_SELFIELD *
FORM user_command USING r_ucomm LIKE sy-ucomm
rs_selfield TYPE slis_selfield.
Check function code
CASE r_ucomm.
WHEN '&IC1'.
Check field clicked on within ALVgrid report
IF rs_selfield-fieldname = 'EBELN'.
Read data table, using index of row user clicked on
READ TABLE it_ekko INTO wa_ekko INDEX rs_selfield-tabindex.
Set parameter ID for transaction screen field
SET PARAMETER ID 'BES' FIELD wa_ekko-ebeln.
Sxecute transaction ME23N, and skip initial data entry screen
CALL TRANSACTION 'ME23N' AND SKIP FIRST SCREEN.
ENDIF.
ENDCASE.
ENDFORM.
*& Form BUILD_EVENTS
Build events table
form build_events.
data: ls_event type slis_alv_event.
call function 'REUSE_ALV_EVENTS_GET'
exporting
i_list_type = 0
importing
et_events = gt_events[].
read table gt_events with key name = slis_ev_end_of_page
into ls_event.
if sy-subrc = 0.
move 'END_OF_PAGE' to ls_event-form.
append ls_event to gt_events.
endif.
read table gt_events with key name = slis_ev_end_of_list
into ls_event.
if sy-subrc = 0.
move 'END_OF_LIST' to ls_event-form.
append ls_event to gt_events.
endif.
endform. " BUILD_EVENTS
*& Form BUILD_PRINT_PARAMS
Setup print parameters
form build_print_params.
gd_prntparams-reserve_lines = '3'. "Lines reserved for footer
gd_prntparams-no_coverpage = 'X'.
endform. " BUILD_PRINT_PARAMS
*& Form END_OF_PAGE
form END_OF_PAGE.
data: listwidth type i,
ld_pagepos(10) type c,
ld_page(10) type c.
write: sy-uline(50).
skip.
write:/40 'Page:', sy-pagno .
endform.
*& Form END_OF_LIST
form END_OF_LIST.
data: listwidth type i,
ld_pagepos(10) type c,
ld_page(10) type c.
skip.
write:/40 'Page:', sy-pagno .
endform.
<b>
clear wa_sort.
wa_sort-tabname = it_ekko
wa_sort-fieldname = 'EBELN'.
wa_sort-up = gc_var_x.
APPEND wa_sort to i_sort.</b>
Satya -
ALV-Save tab not fucntion in PF status
Following report that I have has a PF status Save which when clicked should mark the selected documenst in the output as selected and save . But in my report this is not happeining , it checks the doc when I press save but when I og out of the report and come back again it dosen show me the saved items as checked and shows just as before. Can anyone help me out pls.
*& Report ZSD_PRINT_CONFIRMATION
REPORT ZSD_PRINT_CONFIRMATION LINE-SIZE 190 LINE-COUNT 60
no standard page heading.
TYPE-POOLS: slis.
TABLES: vbrk, vbrp, vbpa.
*& Selection-Screen
SELECTION-SCREEN BEGIN OF BLOCK block1 WITH FRAME TITLE text-000.
SELECT-OPTIONS: s_vbeln FOR vbrk-vbeln, " billing doc.
s_kunnr FOR vbpa-kunnr, " bill-to customer number.
s_werks FOR vbrp-werks, " line item plant.
s_fkdat FOR vbrk-fkdat, " billing date.
s_fkart FOR vbrk-fkart, " billing type.
s_vkorg FOR vbrk-vkorg. " sales org.
PARAMETERS : p_hold as CHECKBOX.
SELECTION-SCREEN END OF BLOCK block1.
SELECTION-SCREEN BEGIN OF BLOCK block2 WITH FRAME TITLE text-024.
PARAMETERS : pa_vari TYPE slis_vari DEFAULT ' '. " Display Variant.
SELECTION-SCREEN END OF BLOCK block2.
*& Internal Tables, Work Areas, Work Variables and Constants
* Storing Extracted Info.
TYPES: BEGIN OF t_extract,
sel type C,
count type I,
vbeln TYPE vbeln_vf, " Billing document.
posnr TYPE posnr, " line item.
fkart TYPE fkart, " billing type.
vtext TYPE BEZEI20, " billing type description.
fkdat TYPE fkdat, " billing date.
werks TYPE werks_d, " line item plant.
werks_name1 TYPE name1, " plant description.
kunnr TYPE kunnr, " bill-to customer.
kunnr_name1 TYPE name1_gp, " bill-to description.
netwr TYPE netwr, " net value,invoice total dollar
zzflag TYPE boolean, " hold or print indicator
zzreason TYPE char30, " reason being held
zzuser TYPE ernam, " last changed by
zz_changed_date TYPE dats, " last changed date
zz_changed_time TYPE tims, " last changed time
END OF t_extract.
DATA: it_extract TYPE TABLE OF t_extract,
it_extract2 TYPE TABLE OF t_extract,
wa_extract LIKE LINE OF it_extract,
wa_selected LIKE LINE OF it_extract,
wa_extract3 LIKE LINE OF it_extract.
DATA: t_vbrk TYPE TABLE OF vbrk,
wa_vbrk LIKE LINE OF t_vbrk.
* ALV data declaration
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.
* messages as result of processing in program, will be displayed
* at end of processing.
TYPES: BEGIN OF t_msg,
vbeln TYPE vbeln_vf, " Billing document.
dummy TYPE c,
message TYPE CHAR80,
END OF t_msg.
DATA: it_msg TYPE TABLE OF t_msg,
wa_msg LIKE LINE OF it_msg,
w_idx2 type sy-tabix,
w_idx3 type sy-tabix.
CONSTANTS: c_zog2 TYPE vbrk-fkart value 'ZOG2',
c_zol2 TYPE vbrk-fkart value 'ZOL2',
c_zre TYPE vbrk-fkart value 'ZRE ',
c_s1 TYPE vbrk-fkart value 'S1 '.
*& main body of processing logic
START-OF-SELECTION.
IF s_vbeln[] IS INITIAL
AND s_kunnr[] IS INITIAL
AND s_werks[] IS INITIAL
AND s_fkdat[] IS INITIAL
AND s_fkart[] IS INITIAL
AND s_vkorg[] IS INITIAL.
MESSAGE s999(z001) WITH 'Please Enter Selections'(011).
ELSE.
PERFORM extract_data.
ENDIF.
END-OF-SELECTION.
* SET PF-STATUS 'STAT1000'.
IF s_vbeln[] IS INITIAL
AND s_kunnr[] IS INITIAL
AND s_werks[] IS INITIAL
AND s_fkdat[] IS INITIAL
AND s_fkart[] IS INITIAL
AND s_vkorg[] IS INITIAL.
MESSAGE s999(z001) WITH 'Please Enter Selections'(011).
ELSE.
IF it_extract2[] IS INITIAL.
MESSAGE s999(z001) WITH 'No Data Selected for this criteria'(002).
ELSE.
PERFORM field_catalog.
PERFORM show_report.
ENDIF.
ENDIF.
*& U S E R C O M M A N D
AT USER-COMMAND.
* accommodated at teh end or report********
* CASE sy-ucomm.
* WHEN 'SELE'.
* PERFORM update_itab_from_screen.
* LOOP AT it_extract2 INTO wa_extract.
* wa_extract-zzflag = 'X'.
* MODIFY it_extract2 FROM wa_extract.
* ENDLOOP.
* PERFORM show_report.
* WHEN 'DSEL'.
* PERFORM update_itab_from_screen.
* LOOP AT it_extract2 INTO wa_extract.
* clear wa_extract-zzflag.
* MODIFY it_extract2 FROM wa_extract.
* ENDLOOP.
* PERFORM show_report.
* WHEN 'EXIT'.
* leave to screen 0.
* WHEN OTHERS.
* MESSAGE S999(Z001) WITH 'Inactive Key, Try Again'(001).
* ENDCASE.
*& LINE SELECTION
AT LINE-SELECTION.
PERFORM update_itab_from_screen.
REFRESH it_msg.
* Upate vbrk append structure
LOOP AT it_extract2 INTO wa_extract.
w_idx2 = sy-tabix.
* if flag is on, there must be a reason
if NOT wa_extract-zzflag is initial.
if wa_extract-zzreason is initial.
wa_msg-vbeln = wa_extract-vbeln.
wa_msg-message = 'For Hold doc.,Reason required'(017).
append wa_msg to it_msg.
continue.
endif.
endif.
* only if the flag or reason has been changed with what's in database vbrk
* which was read in the beginning of program and stored in
* it_extract.
read table it_extract into wa_extract3
with key vbeln = wa_extract-vbeln.
w_idx3 = sy-tabix.
if sy-subrc = 0.
if wa_extract3-zzflag <> wa_extract-zzflag
or wa_extract3-zzreason <> wa_extract-zzreason.
PERFORM update_vbrk.
endif.
endif.
ENDLOOP.
* display an updated list.
PERFORM show_report.
* display processing messages
* popup with table display ok has 'print' functionality but
* titletext is not working. One option is to copy following
* and fix titletext.
CALL FUNCTION 'POPUP_WITH_TABLE_DISPLAY_OK'
EXPORTING
ENDPOS_COL = 35
ENDPOS_ROW = 15
STARTPOS_COL = 1
STARTPOS_ROW = 1
TITLETEXT = 'Results'
* IMPORTING
* CHOISE =
TABLES
VALUETAB = it_msg.
* EXCEPTIONS
* BREAK_OFF = 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.
* wrf popup with table display has no 'print' capability
* but titletext is working.
*CALL FUNCTION 'WRF_POPUP_WITH_TABLE_DISPLAY'
* EXPORTING
* ENDPOS_COL = 35
* ENDPOS_ROW = 15
* STARTPOS_COL = 1
* STARTPOS_ROW = 1
* TITLETEXT = 'Results'
* TABLES
* VALUETAB = it_msg.
*& LINE SELECTION
TOP-OF-PAGE.
* same as top-of-page during line-selection
WRITE: 3 text-003, 14 text-013, 45 text-014, 58 text-015,
69 text-016, 78 text-004, 88 text-005, 104 text-006,
115 text-007, 121 text-008, 136 text-009,
147 text-010, 173 text-012, 186 text-023,
/ sy-uline.
FORMAT INTENSIFIED OFF COLOR OFF.
TOP-OF-PAGE DURING LINE-SELECTION.
WRITE: 3 text-003, 14 text-013, 45 text-014, 58 text-015,
69 text-016, 78 text-004, 88 text-005, 104 text-006,
115 text-007, 121 text-008, 136 text-009,
147 text-010, 173 text-012,186 text-023,
/ sy-uline.
FORMAT INTENSIFIED OFF COLOR OFF.
*& Form show_report
* Report to Display Available Orders on Screen
FORM show_report .
DATA: l_idx TYPE i.
l_idx = 0.
data: GS_layout TYPE slis_layout_alv.
gd_layout-zebra = 'X'.
gd_layout-colwidth_optimize = 'X'.
gd_layout-box_fieldname = 'SEL'.
gd_layout-f2code = 'SAVE'.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
I_CALLBACK_PROGRAM = sy-repid
I_CALLBACK_PF_STATUS_SET = 'SET_PF_STATUS'
I_CALLBACK_USER_COMMAND = 'USER_COMMAND'
I_CALLBACK_TOP_OF_PAGE = 'TOP_OF_PAGE'
IS_LAYOUT = GD_LAYOUT
IT_FIELDCAT = fieldcatalog[]
* I_DEFAULT = 'X'
I_SAVE = 'A'
* IS_VARIANT =
TABLES
T_OUTTAB = it_extract2
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.
* LOOP AT it_extract2 INTO wa_extract.
* IF l_idx EQ 0.
* FORMAT COLOR COL_NORMAL INTENSIFIED ON.
* l_idx = 1.
* ELSE.
* FORMAT COLOR COL_NORMAL INTENSIFIED OFF.
* l_idx = 0.
* ENDIF.
* WRITE: / wa_extract-zzflag AS CHECKBOX,
* 3 wa_extract-vbeln, "UNDER 'Bill.Doc'(003),
* 14 wa_extract-zzreason input on, "UNDER 'Reason'(013),
* 45 wa_extract-zzuser, "UNDER 'User'(014),
* 58 wa_extract-zz_changed_date, "Chngd Date(015),
* 69 wa_extract-zz_changed_time, "Time(016).
* 78 wa_extract-fkart, "UNDER 'Bill.Type'(004),
* 83 wa_extract-vtext, "UNDER 'Description'(005),
* 104 wa_extract-fkdat, "UNDER 'Bill.Date'(006),
* 115 wa_extract-werks, "UNDER 'Plant'(007),
* 120 wa_extract-werks_name1(15), "UNDER 'Plt Descrptn'(008),
* 136 wa_extract-kunnr, "UNDER 'Bill-to'(009),
* 147 wa_extract-kunnr_name1(15), "UNDER 'Name'(010),
* 163 wa_extract-netwr, "UNDER 'Net Value'(012),
* 180 wa_extract-count.
* ENDLOOP.
ENDFORM. " show_report
*& Form extract_data
* text
* --> p1 text
* <-- p2 text
FORM extract_data .
CLEAR: it_extract. REFRESH: it_extract.
* read and select all billing documents
IF p_hold is not initial.
SELECT vbrk~vbeln vbrk~fkart vbrk~fkdat vbrk~netwr
vbrk~zzflag vbrk~zzreason vbrk~zzuser
vbrk~zz_changed_date vbrk~zz_changed_time
vbrp~posnr vbrp~werks
INTO CORRESPONDING FIELDS OF TABLE it_extract
FROM vbrk INNER JOIN vbrp ON
vbrk~vbeln = vbrp~vbeln
WHERE vbrk~vbeln IN s_vbeln
AND vbrk~fkart IN s_fkart
AND vbrk~fkdat IN s_fkdat
AND vbrk~vkorg IN s_vkorg
AND vbrk~fksto NE 'X'
AND vbrp~werks IN s_werks.
ELSE.
* read and select billing documents
SELECT vbrk~vbeln vbrk~fkart vbrk~fkdat vbrk~netwr
vbrk~zzflag vbrk~zzreason vbrk~zzuser
vbrk~zz_changed_date vbrk~zz_changed_time
vbrp~posnr vbrp~werks
INTO CORRESPONDING FIELDS OF TABLE it_extract
FROM vbrk INNER JOIN vbrp ON
vbrk~vbeln = vbrp~vbeln
WHERE vbrk~vbeln IN s_vbeln
AND vbrk~fkart IN s_fkart
AND vbrk~fkart NE c_zog2 "NAL credit memo
AND vbrk~fkart NE c_zol2 "NAL debit memo
AND vbrk~fkart NE c_zre "NAL credit for returns
* testing revealed that fksto = X (cancelled) is blank while
* fkart is S1, cancelled invoice. Need to check both fields.
AND vbrk~fkart NE c_S1 "cancelled invoice
AND vbrk~fkdat IN s_fkdat
AND vbrk~vkorg IN s_vkorg
AND vbrk~fksto NE 'X'
AND vbrp~werks IN s_werks.
IF sy-subrc <> 0.
MESSAGE s999(z001) WITH 'No Data Selected for this criteria'(002).
ENDIF.
ENDIF.
CHECK sy-subrc = 0.
* only need first line item for this report.
SORT it_extract BY vbeln posnr.
DELETE ADJACENT DUPLICATES FROM it_extract COMPARING vbeln.
LOOP AT it_extract INTO wa_extract.
* Retrieve and select by sales order bill-to on header level
* as well as lookup bill-to customer name/description
SELECT SINGLE kunnr FROM vbpa INTO wa_extract-kunnr
WHERE vbeln = wa_extract-vbeln
AND posnr = '000000'
AND parvw = 'RE'.
IF wa_extract-kunnr IN s_kunnr.
wa_extract-kunnr_name1 = zcl_kna1=>get_name1( wa_extract-kunnr ).
ELSE.
DELETE it_extract.
CONTINUE.
ENDIF.
* lookup billing type description
SELECT SINGLE vtext FROM tvfkt
INTO wa_extract-vtext
WHERE spras = sy-langu
AND fkart = wa_extract-fkart.
IF sy-subrc <> 0.
clear wa_extract-vtext.
ENDIF.
* lookup plant description
SELECT SINGLE name1 FROM t001w
INTO wa_extract-werks_name1
WHERE werks = wa_extract-werks.
IF sy-subrc <> 0.
clear wa_extract-werks_name1.
ENDIF.
wa_extract-count = 1.
APPEND wa_extract TO it_extract2.
ENDLOOP.
ENDFORM. " extract_data
*& Form update_itab_from_screen
* text
* --> p1 text
* <-- p2 text
FORM update_itab_from_screen .
DO.
READ LINE sy-index FIELD VALUE wa_extract-zzflag wa_extract-vbeln
wa_extract-zzreason.
IF sy-subrc NE 0.
EXIT.
ELSE.
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
EXPORTING
input = wa_extract-vbeln
IMPORTING
output = wa_extract-vbeln.
READ TABLE it_extract2 INTO wa_selected
WITH KEY vbeln = wa_extract-vbeln.
IF sy-subrc EQ 0.
wa_selected-zzflag = wa_extract-zzflag.
wa_selected-zzreason = wa_extract-zzreason.
MODIFY it_extract2 FROM wa_selected INDEX sy-tabix.
ENDIF.
ENDIF.
ENDDO.
ENDFORM. " update_itab_from_screen
*& Form update_vbrk
* text
* --> p1 text
* <-- p2 text
FORM update_vbrk .
* read the current version of the corresponding billing doc. from vbrk
* in case it has been changed.
SELECT single * FROM VBRK INTO wa_vbrk
WHERE vbeln = wa_extract-vbeln.
IF sy-subrc <> 0.
wa_msg-vbeln = wa_extract-vbeln.
wa_msg-message = 'Billing Doc. Not Found. Contact Support'(018).
append wa_msg to it_msg.
ENDIF.
* lock the same billing doc.
CHECK sy-subrc = 0.
CALL FUNCTION 'ENQUEUE_EVVBRKE'
EXPORTING
MODE_VBRK = 'E'
MANDT = SY-MANDT
VBELN = wa_extract-vbeln
X_VBELN = ' '
_SCOPE = '2'
_WAIT = ' '
_COLLECT = ' '
EXCEPTIONS
FOREIGN_LOCK = 1
SYSTEM_FAILURE = 2
OTHERS = 3.
IF SY-SUBRC <> 0.
wa_msg-vbeln = wa_extract-vbeln.
wa_msg-message = 'Unable To Lock'(019).
append wa_msg to it_msg.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ELSE.
* Update the corresponding billing doc. in vbrk
* wa_vbrk-zzflag = wa_extract-zzflag.
* wa_vbrk-zzreason = wa_extract-zzreason.
* wa_vbrk-zzuser = sy-uname.
* wa_vbrk-zz_changed_date = sy-datum.
* wa_vbrk-zz_changed_time = sy-uzeit.
* wa_extract3-zzflag = wa_vbrk-zzflag.
* wa_extract3-zzreason = wa_vbrk-zzreason.
* wa_extract3-zzuser = wa_vbrk-zzuser.
* wa_extract3-zz_changed_date = wa_vbrk-zz_changed_date.
* wa_extract3-zz_changed_time = wa_vbrk-zz_changed_time.
UPDATE vbrk FROM wa_vbrk.
IF sy-subrc = 0.
CALL FUNCTION 'DEQUEUE_EVVBRKE'
EXPORTING
MODE_VBRK = 'E'
MANDT = SY-MANDT
VBELN = wa_extract-vbeln
X_VBELN = ' '
_SCOPE = '3'
_SYNCHRON = ' '
_COLLECT = ' '.
if sy-subrc = 0.
wa_msg-vbeln = wa_extract-vbeln.
wa_msg-message = 'Billing Document Updated'(022).
append wa_msg to it_msg.
modify it_extract index w_idx3 from wa_extract3
transporting zzflag zzreason zzuser zz_changed_date zz_changed_time.
modify it_extract2 index w_idx2 from wa_extract3
transporting zzuser zz_changed_date zz_changed_time.
else.
wa_msg-vbeln = wa_extract-vbeln.
wa_msg-message = 'Unable To unLock Document'(021).
append wa_msg to it_msg.
endif.
ELSE.
wa_msg-vbeln = wa_extract-vbeln.
wa_msg-message = 'Failed to Update Document'(020).
append wa_msg to it_msg.
ENDIF.
ENDIF.
ENDFORM. " update_vbrk
*& Form FIELD_CATALOG
* text
* --> p1 text
* <-- p2 text
FORM field_catalog .
fieldcatalog-fieldname = 'SEL'.
fieldcatalog-seltext_m = 'Select'.
fieldcatalog-col_pos = 19.
fieldcatalog-checkbox = 'X'.
fieldcatalog-edit = 'X'.
APPEND fieldcatalog TO fieldcatalog.
CLEAR fieldcatalog.
fieldcatalog-fieldname = 'VBELN'.
fieldcatalog-seltext_m = 'Billing document'.
fieldcatalog-col_pos = 23.
fieldcatalog-outputlen = 10.
fieldcatalog-emphasize = 'X'.
* fieldcatalog-key = 'X'.
fieldcatalog-hotspot = 'X'.
* fieldcatalog-edit = 'X'.
* fieldcatalog-do_sum = 'X'.
* fieldcatalog-no_zero = 'X'.
APPEND fieldcatalog TO fieldcatalog.
CLEAR fieldcatalog.
* fieldcatalog-fieldname = 'POSNR'.
* fieldcatalog-seltext_m = 'line item'.
* fieldcatalog-col_pos = 1.
* APPEND fieldcatalog TO fieldcatalog.
* CLEAR fieldcatalog.
fieldcatalog-fieldname = 'FKART'.
fieldcatalog-seltext_m = 'Billing Type'.
fieldcatalog-col_pos = 30.
APPEND fieldcatalog TO fieldcatalog.
CLEAR fieldcatalog.
fieldcatalog-fieldname = 'VTEXT'.
fieldcatalog-seltext_m = 'Billing Type Description'(030).
fieldcatalog-col_pos = 31.
APPEND fieldcatalog TO fieldcatalog.
CLEAR fieldcatalog.
fieldcatalog-fieldname = 'FKDAT'.
fieldcatalog-seltext_m = 'Billing Date'.
fieldcatalog-col_pos = 32.
APPEND fieldcatalog TO fieldcatalog.
CLEAR fieldcatalog.
fieldcatalog-fieldname = 'WERKS'.
fieldcatalog-seltext_m = 'Line Item Plant'.
fieldcatalog-col_pos = 33.
APPEND fieldcatalog TO fieldcatalog.
CLEAR fieldcatalog.
fieldcatalog-fieldname = 'WERKS_NAME1'.
fieldcatalog-seltext_m = 'Plant Description'.
fieldcatalog-col_pos = 34.
APPEND fieldcatalog TO fieldcatalog.
CLEAR fieldcatalog.
fieldcatalog-fieldname = 'KUNNR'.
fieldcatalog-seltext_m = 'Bill-to Customer'.
fieldcatalog-col_pos = 24.
fieldcatalog-outputlen = 15.
* fieldcatalog-datatype = 'CURR'.
APPEND fieldcatalog TO fieldcatalog.
CLEAR fieldcatalog.
fieldcatalog-fieldname = 'KUNNR_NAME1'.
fieldcatalog-seltext_m = 'Bill-to Description'.
fieldcatalog-col_pos = 25.
fieldcatalog-emphasize = 'X'.
fieldcatalog-hotspot = 'X'.
APPEND fieldcatalog TO fieldcatalog.
CLEAR fieldcatalog.
fieldcatalog-fieldname = 'NETWR'.
fieldcatalog-seltext_m = 'Invoice Total Dollar'.
fieldcatalog-col_pos = 26.
APPEND fieldcatalog TO fieldcatalog.
CLEAR fieldcatalog.
fieldcatalog-fieldname = 'ZZFLAG'.
fieldcatalog-seltext_m = 'Hold / Print Indicator'.
fieldcatalog-col_pos = 21.
* fieldcatalog-checkbox = 'X'.
fieldcatalog-edit = 'X'.
APPEND fieldcatalog TO fieldcatalog.
CLEAR fieldcatalog.
fieldcatalog-fieldname = 'ZZREASON'.
fieldcatalog-seltext_m = 'Reason Being Held'.
fieldcatalog-col_pos = 22.
fieldcatalog-outputlen = 15.
fieldcatalog-edit = 'X'.
* fieldcatalog-datatype = 'CURR'.
APPEND fieldcatalog TO fieldcatalog.
CLEAR fieldcatalog.
fieldcatalog-fieldname = 'ZZUSER'.
fieldcatalog-seltext_m = 'Changed By'.
fieldcatalog-col_pos = 27.
* fieldcatalog-edit = 'X'.
APPEND fieldcatalog TO fieldcatalog.
CLEAR fieldcatalog.
fieldcatalog-fieldname = 'ZZ_CHANGED_DATE'.
fieldcatalog-seltext_m = 'Changed Date'.
fieldcatalog-col_pos = 28.
* fieldcatalog-edit = 'X'.
APPEND fieldcatalog TO fieldcatalog.
CLEAR fieldcatalog.
fieldcatalog-fieldname = 'ZZ_CHANGED_TIME'.
fieldcatalog-seltext_m = 'Changed Time'.
fieldcatalog-col_pos = 29.
* fieldcatalog-edit = 'X'.
APPEND fieldcatalog TO fieldcatalog.
CLEAR fieldcatalog.
fieldcatalog-fieldname = 'COUNT'.
fieldcatalog-seltext_m = 'Count'.
fieldcatalog-col_pos = 37.
fieldcatalog-do_sum = 'X'.
fieldcatalog-no_zero = 'X'.
APPEND fieldcatalog TO fieldcatalog.
CLEAR fieldcatalog.
ENDFORM. " FIELD_CATALOG
*& Form user_command
* text
*FORM user_command.
FORM user_command USING r_ucomm LIKE sy-ucomm
rs_selfield TYPE slis_selfield.
DATA: ltp_vbeln TYPE vbeln. " Sales document number.
CASE r_ucomm.
WHEN '&IC1'.
IF ( rs_selfield-fieldname = 'VBELN'
OR rs_selfield-fieldname = 'BILL_VBELN' )
AND rs_selfield-value IS NOT INITIAL. " Display sales document.
ltp_vbeln = rs_selfield-value.
zcl_sales_doc=>display( ltp_vbeln ).
ENDIF.
* Comments - r_ucomm = SEL is the Select All. I took out the perform show_report
* because that actually calls another screen with the new ALV, instead of replacing
* the existing ALV. I added the refresh/col_stable/row_stable = 'X' to achieve this
WHEN 'SEL'.
PERFORM update_itab_from_screen.
LOOP AT it_extract2 INTO wa_extract.
wa_extract-zzflag = 'X'.
MODIFY it_extract2 FROM wa_extract.
ENDLOOP.
RS_SELFIELD-refresh = 'X'.
RS_SELFIELD-col_stable = 'X'.
RS_SELFIELD-row_stable = 'X'.
* Comments - r_ucomm = DSEL is the DeSelect All. I took out the perform show_report
* because that actually calls another screen with the new ALV, instead of replacing
* the existing ALV. I added the refresh/col_stable/row_stable = 'X' to achieve this
WHEN 'DSEL'.
PERFORM update_itab_from_screen.
LOOP AT it_extract2 INTO wa_extract.
CLEAR wa_extract-zzflag.
MODIFY it_extract2 FROM wa_extract.
ENDLOOP.
RS_SELFIELD-refresh = 'X'.
RS_SELFIELD-col_stable = 'X'.
RS_SELFIELD-row_stable = 'X'..
* Comments - Insert your code to call VBRK updates here in the SAVE portion.
WHEN 'PICK'.
*PERFORM update_itab_from_screen.
* REFRESH it_msg.
* Upate vbrk append structure
LOOP AT it_extract2 INTO wa_extract.
w_idx2 = sy-tabix.
* if flag is on, there must be a reason
if NOT wa_extract-zzflag is initial.
if wa_extract-zzreason is initial.
wa_msg-vbeln = wa_extract-vbeln.
wa_msg-message = 'For Hold doc.,Reason required'(017).
append wa_msg to it_msg.
perform show_report.
continue.
endif.
endif.
* only if the flag or reason has been changed with what's in database vbrk
* which was read in the beginning of program and stored in
* it_extract.
read table it_extract into wa_extract3
with key vbeln = wa_extract-vbeln.
w_idx3 = sy-tabix.
if sy-subrc = 0.
if wa_extract3-zzflag <> wa_extract-zzflag
or wa_extract3-zzreason <> wa_extract-zzreason.
PERFORM update_vbrk.
endif.
endif.
ENDLOOP.
RS_SELFIELD-refresh = 'X'.
RS_SELFIELD-col_stable = 'X'.
RS_SELFIELD-row_stable = 'X'.
WHEN 'EXIT'.
LEAVE TO SCREEN 0.
* Comments - I would personally issue a message warning here instead of
* totally leaving the program.
WHEN OTHERS.
message w000(kx) with 'Inactive Key, Try Again'.
* LEAVE TO SCREEN 0.
ENDCASE.
ENDFORM. "user_command
*& Form top_of_page
* text
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,
i_logo TYPE c.
* Title
wa_header-typ = 'H'.
wa_header-info = 'Print Confirmation 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_extract2 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 = 'NEWALTA_LOGO'.
ENDFORM. "top_of_page
* SET PF STATUS FOR ALV *
* Comments - This is the form, similar to form USER_COMMAND, that is
* passed to your ALV function module so it knows where to grab the
* status from.
FORM set_pf_status USING rt_extab TYPE slis_t_extab.
SET PF-STATUS 'STANDARD'.
ENDFORM. "set_pf_status
thanksYou need use the Function moduel in the user command.
GET_GLOBALS_FROM_SLVC_FULLSCR
follow the sample code.
REPORT ZTEST_ALV_CHECK MESSAGE-ID ZZ .
TYPE-POOLS: SLIS.
DATA: X_FIELDCAT TYPE SLIS_FIELDCAT_ALV,
IT_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV,
L_LAYOUT TYPE SLIS_LAYOUT_ALV,
X_EVENTS TYPE SLIS_ALV_EVENT,
IT_EVENTS TYPE SLIS_T_EVENT.
DATA: BEGIN OF ITAB OCCURS 0,
VBELN LIKE VBAK-VBELN,
POSNR LIKE VBAP-POSNR,
CHK(1),
color(4),
END OF ITAB.
SELECT VBELN
POSNR
FROM VBAP
UP TO 20 ROWS
INTO TABLE ITAB.
X_FIELDCAT-FIELDNAME = 'CHK'.
X_FIELDCAT-TABNAME = 'ITAB'.
X_FIELDCAT-COL_POS = 1.
X_FIELDCAT-INPUT = 'X'.
X_FIELDCAT-EDIT = 'X'.
X_FIELDCAT-CHECKBOX = 'X'.
APPEND X_FIELDCAT TO IT_FIELDCAT.
CLEAR X_FIELDCAT.
X_FIELDCAT-FIELDNAME = 'VBELN'.
X_FIELDCAT-SELTEXT_L = 'VBELN'.
X_FIELDCAT-HOTSPOT = 'X'.
X_FIELDCAT-TABNAME = 'ITAB'.
X_FIELDCAT-COL_POS = 2.
APPEND X_FIELDCAT TO IT_FIELDCAT.
CLEAR X_FIELDCAT.
X_FIELDCAT-FIELDNAME = 'POSNR'.
X_FIELDCAT-SELTEXT_L = 'POSNR'.
X_FIELDCAT-TABNAME = 'ITAB'.
X_FIELDCAT-COL_POS = 3.
APPEND X_FIELDCAT TO IT_FIELDCAT.
CLEAR X_FIELDCAT.
L_LAYOUT-info_fieldname = 'COLOR'.
*L_LAYOUT-ZEBRA = 'X'.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
I_CALLBACK_PROGRAM = SY-REPID
IS_LAYOUT = L_LAYOUT
I_CALLBACK_PF_STATUS_SET = 'STATUS'
I_CALLBACK_USER_COMMAND = 'USER_COMMAND'
IT_FIELDCAT = IT_FIELDCAT
TABLES
T_OUTTAB = ITAB
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.
*& Form STATUS
text
-->P_EXTAB text
FORM STATUS USING P_EXTAB TYPE SLIS_T_EXTAB.
Pf status
SET PF-STATUS 'STATUS'.
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.
DATA: GD_REPID LIKE SY-REPID, "Exists
REF_GRID TYPE REF TO CL_GUI_ALV_GRID.
IF REF_GRID IS INITIAL.
CALL FUNCTION 'GET_GLOBALS_FROM_SLVC_FULLSCR'
IMPORTING
E_GRID = REF_GRID.
ENDIF.
IF NOT REF_GRID IS INITIAL.
CALL METHOD REF_GRID->CHECK_CHANGED_DATA .
ENDIF.
loop at itab where chk = 'X'.
itab-color = 'C300'.
modify itab index sy-tabix transporting color.
endloop.
RS_SELFIELD-refresh = 'X'.
break-point.
ENDFORM. "USER_COMMAND -
Regarding report for material status
HI All,
Can u guys pls help me thre is an error in the report
which iam presenting now. The error is that iam getting
the output for units in simple report is 'PC' and iam getting the out put for units in ALV as 'ST'.
why, i need an immediate reply.
*& Report ZSTOCKDETAILS4 *
REPORT zstockdetails4 NO STANDARD PAGE HEADING
LINE-SIZE 160
LINE-COUNT 60(3).
tables declaration *
TABLES : mara, "general material data
marc, "plant data for material
mard, "storage location data for material
makt. "material description
TYPE-POOLS : slis.
internal table declaration *
TYPES : BEGIN OF ty_mara,
matnr TYPE matnr,
mtart TYPE mtart,
meins TYPE meins,
END OF ty_mara.
TYPES : BEGIN OF ty_marc,
matnr TYPE matnr,
werks TYPE werks,
END OF ty_marc.
TYPES : BEGIN OF ty_mard,
matnr TYPE matnr,
werks TYPE werks,
lgort TYPE lgort_d,
labst TYPE labst,
END OF ty_mard.
TYPES : BEGIN OF ty_makt,
matnr TYPE matnr,
maktx TYPE maktx,
END OF ty_makt.
DATA:t_mara TYPE TABLE OF ty_mara WITH HEADER LINE,
t_marc TYPE TABLE OF ty_marc WITH HEADER LINE,
t_mard TYPE TABLE OF ty_mard WITH HEADER LINE,
t_makt TYPE TABLE OF ty_makt WITH HEADER LINE.
PARAMETER : p_alv AS CHECKBOX DEFAULT 'X'.
final internal table *
TYPES : BEGIN OF ty_out,
matnr TYPE matnr,
werks TYPE werks,
lgort TYPE lgort_d,
labst TYPE labst,
meins TYPE meins,
mtart TYPE mtart,
maktx TYPE maktx,
END OF ty_out.
DATA:t_out TYPE TABLE OF ty_out WITH HEADER LINE.
DATA DECLARATION FOR ALV *
DATA : fieldcatalog TYPE slis_t_fieldcat_alv WITH HEADER LINE,
gd_repid LIKE sy-repid,
gd_layout TYPE slis_layout_alv,
gd_tab_group TYPE slis_t_sp_group_alv,
gt_list_top_of_page TYPE slis_t_listheader,
it_sortcat TYPE slis_sortinfo_alv OCCURS 1,
wa_sort LIKE LINE OF it_sortcat.
selection screen *
SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-001.
SELECT-OPTIONS : s_werks FOR marc-werks OBLIGATORY,
s_matnr FOR mara-matnr,
s_mtart FOR mara-mtart,
s_lgort FOR mard-lgort.
SELECTION-SCREEN END OF BLOCK b1.
start-of-selection *
START-OF-SELECTION.
SELECT matnr mtart meins
FROM mara
INTO TABLE t_mara
WHERE matnr IN s_matnr
AND mtart IN s_mtart.
SORT t_mara BY matnr.
SELECT matnr werks
FROM marc
INTO TABLE t_marc
FOR ALL ENTRIES IN t_mara
WHERE matnr = t_mara-matnr
AND werks IN s_werks.
SORT t_marc BY matnr.
SELECT matnr lgort labst
FROM mard
INTO CORRESPONDING FIELDS OF TABLE t_mard
FOR ALL ENTRIES IN t_mara
WHERE matnr = t_mara-matnr
AND lgort IN s_lgort.
SORT t_mard BY matnr.
LOOP AT t_mara.
READ TABLE t_marc WITH KEY matnr = t_mara-matnr BINARY SEARCH.
READ TABLE t_mard WITH KEY matnr = t_mara-matnr BINARY SEARCH.
MOVE : t_mara-matnr TO t_out-matnr.
MOVE : t_mara-mtart TO t_out-mtart.
MOVE : t_mara-meins TO t_out-meins.
MOVE : t_marc-werks TO t_out-werks.
MOVE : t_mard-lgort TO t_out-lgort.
MOVE : t_mard-labst TO t_out-labst.
SELECT SINGLE matnr maktx
FROM makt
INTO CORRESPONDING FIELDS OF makt
WHERE matnr = t_mara-matnr.
MOVE-CORRESPONDING makt TO t_out.
LOOP AT t_mard WHERE matnr = t_mara-matnr.
MOVE : t_mard-lgort TO t_out-lgort.
MOVE : t_mard-labst TO t_out-labst.
APPEND t_out.
CLEAR : t_out-lgort, t_out-labst.
ENDLOOP.
CLEAR t_out.
ENDLOOP.
SORT t_out BY werks lgort matnr.
IF
p_alv = 'X'.
PERFORM build_fieldcatalog.
PERFORM display_alv_report.
ELSE.
DATA: tot_lgort TYPE labst,
tot_werks TYPE labst,
tot TYPE labst.
LOOP AT t_out.
NEW-LINE.
WRITE :/ sy-vline, t_out-matnr,
15 t_out-werks,
35 t_out-lgort,
45 t_out-labst,
85 t_out-meins,
100 t_out-mtart,
120 t_out-maktx,160 sy-vline.
tot_lgort = tot_lgort + t_out-labst.
tot_werks = tot_werks + t_out-labst.
tot = tot + t_out-labst.
AT LAST.
ULINE.
WRITE : / 'THE GRAND TAOTAL IS', 52 tot.
ENDAT.
ENDLOOP.
ENDIF.
TOP-OF-PAGE *
TOP-OF-PAGE.
ULINE.
WRITE : sy-vline, 'MATERIAL',
15 'PLANT',
32 'STOR LOC',
56 'STOCK',
80 'UNITS',
95 'MAT TYPE',
115 'MAT DESCR',160 sy-vline.
ULINE.
*& Form build_fieldcatalog
text
FORM build_fieldcatalog.
fieldcatalog-fieldname = 'MATNR'.
fieldcatalog-seltext_m = 'Material Number'.
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 = 'WERKS'.
fieldcatalog-seltext_m = 'Plant'.
fieldcatalog-col_pos = 1.
APPEND fieldcatalog TO fieldcatalog.
CLEAR fieldcatalog.
fieldcatalog-fieldname = 'LGORT'.
fieldcatalog-seltext_m = 'Storage Location'.
fieldcatalog-col_pos = 2.
APPEND fieldcatalog TO fieldcatalog.
CLEAR fieldcatalog.
fieldcatalog-fieldname = 'LABST'.
fieldcatalog-seltext_m = 'Stock'.
fieldcatalog-col_pos = 3.
fieldcatalog-outputlen = 15.
fieldcatalog-do_sum = 'X'.
APPEND fieldcatalog TO fieldcatalog.
CLEAR fieldcatalog.
fieldcatalog-fieldname = 'MEINS'.
fieldcatalog-seltext_m = 'Unit of Measure'.
fieldcatalog-col_pos = 4.
fieldcatalog-datatype = 'PC'.
fieldcatalog-reptext_ddic = 'Unit of Measure'.
APPEND fieldcatalog TO fieldcatalog.
CLEAR fieldcatalog.
fieldcatalog-fieldname = 'MTART'.
fieldcatalog-seltext_m = 'Material Type'.
fieldcatalog-col_pos = 5.
APPEND fieldcatalog TO fieldcatalog.
CLEAR fieldcatalog.
fieldcatalog-fieldname = 'MAKTX'.
fieldcatalog-seltext_m = 'Material Description'.
fieldcatalog-col_pos = 6.
APPEND fieldcatalog TO fieldcatalog.
CLEAR fieldcatalog.
ENDFORM. "build_fieldcatalog
*& Form display_alv_report
text
FORM display_alv_report.
gd_repid = sy-repid.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
I_INTERFACE_CHECK = ' '
I_BYPASSING_BUFFER = ' '
I_BUFFER_ACTIVE = ' '
i_callback_program = gd_repid
I_CALLBACK_PF_STATUS_SET = ' '
I_CALLBACK_USER_COMMAND = ' '
i_callback_top_of_page = 'TOP-OF-PAGE'
I_CALLBACK_HTML_TOP_OF_PAGE = ' '
I_CALLBACK_HTML_END_OF_LIST = ' '
I_STRUCTURE_NAME =
I_BACKGROUND_ID = ' '
I_GRID_TITLE =
I_GRID_SETTINGS =
is_layout = gd_layout
it_fieldcat = fieldcatalog[]
IT_EXCLUDING =
IT_SPECIAL_GROUPS =
it_sort = it_sortcat
IT_FILTER =
IS_SEL_HIDE =
I_DEFAULT = 'X'
I_SAVE = ' '
IS_VARIANT =
IT_EVENTS =
IT_EVENT_EXIT =
IS_PRINT =
IS_REPREP_ID =
I_SCREEN_START_COLUMN = 0
I_SCREEN_START_LINE = 0
I_SCREEN_END_COLUMN = 0
I_SCREEN_END_LINE = 0
IT_ALV_GRAPHICS =
IT_HYPERLINK =
IT_ADD_FIELDCAT =
IT_EXCEPT_QINFO =
I_HTML_HEIGHT_TOP =
I_HTML_HEIGHT_END =
IMPORTING
E_EXIT_CAUSED_BY_CALLER =
ES_EXIT_CAUSED_BY_USER =
TABLES
t_outtab = t_out
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_reportHi Sai,
Please do the following:
While populating the fileld catalog for "MEINS".
<u>
add the shown code in bold:</u>
fieldcatalog-fieldname = 'MEINS'.
fieldcatalog-seltext_m = 'Unit of Measure'.
<b>fieldcatalog-CFIELDNAME = 'MEINS'.
fieldcatalog-CTABNAME = 'MARA'</b>.
fieldcatalog-col_pos = 4.
fieldcatalog-datatype = 'PC'.
fieldcatalog-reptext_ddic = 'Unit of Measure'.
APPEND fieldcatalog TO fieldcatalog.
CLEAR fieldcatalog.
This will bring you "EA" in place of ST.
Hope this will work for you.
Lanka -
Total in REUSE_ALV_GRID_DISPLAY
Hi,
If we CHECK total option in REUSE_ALV_GRID_DISPLAY we get a total of numeric value with yellow color at the bottom.
Requirement:
Let say I have 3 line item records in the display, with 20 fields and one amount field. So I get the total of the amount field. Apart from that I want the Total number of LINE ITEMS to get displayed on that line. Is that possible . How?
Thanks in Advance.Just call Reuse_alv_list_display instead of gris. Rest of functionality is same.
*& Report ZDEMO_ALVGRID *
*& Example of a simple ALV Grid Report *
*& The basic requirement for this demo is to display a number of *
*& fields from the EKKO table. *
REPORT zdemo_alvgrid .
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-do_sum = 'X' "Display column total
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_GRID_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
Maybe you are looking for
-
as recent i notice itself upgrade to 20mb from 8mb option 3 i have it only broadband no phone as i am deaf so i have stable 7.5 mb and it great never went down at all as i am near at the exchanged however it upgraded itself to 20mb and i notice it fa
-
Why wont my ipad connect to wifi ???
why wont my ipad connect to wifi ???
-
Why are my adobe complete picture vidios poor quality
Why are my adobe complete picture vidios poor quality
-
Looking for a way to force failed disk to mount ??
I have approx. 450GB of files saved to the disk of my 2TB Time Capsule which suddenly failed and will not mount the internal TC disk. ** I am not talking about Time Machine backups in anyway - I am talking about files + folders of all kinds which I m
-
Forms, Calculations and Percentages
I am using Acrobat XI Pro. I am trying to calculate some items for an order form. It will be the (Quantity * Unit Price)*(Discount*-1). The discount it a percentage. However, the form keeps turning the percentage from 20% to 2000%. Then when it does