alv1
TRANSCRIPT
![Page 1: ALV1](https://reader036.vdocuments.mx/reader036/viewer/2022081908/5528b1945503466b588b487a/html5/thumbnails/1.jpg)
ALV (ABAP List Viewer) vs. Normal ABAP Report
Notes
Introduction. ALV – ABAP List Viewer (4.6B) ALV Grid Control vs. ALV List Advantages
o No huge selection screens – use filters – (moderate use!)o Minimal maintenance if done properly
Extract lots of data Work with user on possible data requirements Setup variants together with the user
o User-friendly functionality (Download to Excel etc.)o Non-Statico It is not an updating tool!
Workingso Grid / Report
Moving of columns Total / Sub Total (Breaks) / Hide Columns Sort / Filter / Blank Control Breaks not on List Hotspots Multiple lines report (ALV List only) Buttons Variants (User / Set as default / “/GENERAL”) When it dump (Flush / CNTL-ERROR) Differences between 4.6B & 4.6C
Helpo Users & ABAPers
SAP Library ► Search Tab ► Enter “ALV Grid” ► Select “ABAP List Viewer (ALV) Grid Control (Getting Started)”
o ABAPers SAP Library ► Index Tab ► Enter “ALV” ► Select “ALV Grid
Control” ► Select “BC – ALV Grid Control” (Hotspot on right-hand panel)
ABAP ALV Report. Use Function Modules Pass parameters using fields, structures & tables Use dynamic events GUI status Logo in Grid – not printed or shown on print preview!
Pitfalls, Disadvantages & Tips. Dumps – Messages are not to useful
o Flush – CL_GUI_… (4.6B / C with latest service packs)o Discuss Application Server vs. Presentation Servero Check ITAB-fieldname and Initialize_ALV (Incorrect fieldnames)
Memory block read – Shows a page of icons
![Page 2: ALV1](https://reader036.vdocuments.mx/reader036/viewer/2022081908/5528b1945503466b588b487a/html5/thumbnails/2.jpg)
Report variant (Transportable???) Report cut-off after 255 columns Multiple lines not downloadable to Excel Statistics pages will have to be reported with separate button Zebra lines on report (not on grid) Colour of lines / columns – Use ‘soft’ colours (Different in 4.6C ???) SAP standard ALV reports – Be careful
o Not “populating” all fields of “ITAB”o Looping through selection more than once – Some advantages
Discuss not using huge selection screens Page number 0 on Grid (and after using list) Total number of records – create count field in ITAB Dialog programs – Heading only 80 columns
Additional Stuff. Logos Using ALV Grid in WANs Full Excel capabilities in SAP Using Graphs (minimal effort)
ABAP ALV Dialog Program. Use objects
![Page 3: ALV1](https://reader036.vdocuments.mx/reader036/viewer/2022081908/5528b1945503466b588b487a/html5/thumbnails/3.jpg)
Report ZXX0001....
ALV (ABAP List Viewer) vs. Normal ABAP Report
A2: ALV (ABAP List Viewer) Report - Page 1
ALV Report
GU
I S
tatu
s (C
op
y an
y B
AL
V..
. p
rog
ram
's a
nd
ch
ang
e)* Tables, Types and Data DeclarationTables: ....Types: ....Data: ....
* Selection ScreenSelection Screen: ....Select Options: ....Parameters: ....
Initialization. ....
At Selection Screen (on value request for ????).....
Start-Of-Selection. Perform Select_Data.End-Of-Selection. Perform Display_Data
Form Select_Data. Select * from .... ....
Append Wa_Itab to Itab. EndSelect.EndForm.Form Display_Data.
EndForm.Form Top_Of_Page. " Headings* (See details on following pages)EndForm.
EVENTS
SUBROUTINES
ABC Company
Code Description T
0001 HP Printer 3
0005 PC 5
TOTAL 8
Tex
t E
lem
ents
Type-Pools: slis.Data: .... " * (See details on following pages)
Parameters: p_vari like disvariant-variant default '/GENERAL'.
Perform Initialize_ALV.
At Selection-Screen on Value-Request for p_vari. Perform F4_for_Variant.At Selection-Screen. Perform PAI_of_Selection_Screen.At Line-Selection. .... Call Transaction ....Top-Of-Page. Perform Headings.
If flag = ' '. wa_itab-linecolor = 'C000'. flag = 'X'. Else. wa_itab-linecolor = 'C200'. flag = ' '. EndIf.
Call function 'REUSE_ALV_GRID_DISPLAY' exporting i_callback_program = report is_layout = layout i_callback_pf_status_set = status i_callback_user_command = user_command it_fieldcat = fldcat[] i_save = 'A' it_events = event[] is_print = print is_variant = variant 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.
![Page 4: ALV1](https://reader036.vdocuments.mx/reader036/viewer/2022081908/5528b1945503466b588b487a/html5/thumbnails/4.jpg)
ALV (ABAP List Viewer) vs. Normal ABAP Report
A2: ALV (ABAP List Viewer) Report - Page 2
GU
I S
tatu
s (C
op
y an
y B
AL
V..
. p
rog
ram
's a
nd
ch
ang
e)
* Tables, Types and Data Declarationdata: val_tab like api_vali occurs 20 with header line, char_tab like api_char occurs 20 with header line, att_tab like api_ch_att occurs 20 with header line, fldcat type slis_t_fieldcat_alv with header line, layout type slis_layout_alv occurs 0 with header line, event type slis_t_event, ls_event type slis_alv_event, print type slis_print_alv, user_command type slis_formname value 'USER_COMMAND', status type slis_formname value 'PF_STATUS', heading type slis_t_listheader, variant like disvariant, def_variant like disvariant, variant_exit type c, variant_def type c, report like sy-repid, module(2), module_text(30), name(50), percentage type i, error.
Form Top_Of_Page.* Prepare standard heading refresh heading. data: line type slis_listheader, len type i, pos type i, page(4) type c.
len = sy-linsz. " Line width of list if sy-pagno = 0. sy-pagno = 1. endif. write sy-pagno to page.
* Determine the module heading. perform get_module_heading using 'FI'.
* Page no. left and module description as far right as possible. clear line. line-typ = 'H'. concatenate 'Pg.' page into line-info. pos = 60 - strlen( module_text ). pos = pos / 2. line-info+pos = module_text. append line to heading.
* Report title as far right as possible. clear line. line-typ = 'H'. pos = pos - 3. line-info+pos = sy-title. append line to heading.
* Report name, user, date/time and system details. clear line. line-typ = 'S'. line-key = 'Report :'. line-info = report. append line to heading.
line-key = 'Userid :'. select * from user_addr where bname = sy-uname. exit. endselect.* Continue on next page.
SUBROUTINES
Tex
t E
lem
ents
DATA DECLARATION (ALV Specific)
![Page 5: ALV1](https://reader036.vdocuments.mx/reader036/viewer/2022081908/5528b1945503466b588b487a/html5/thumbnails/5.jpg)
ALV (ABAP List Viewer) vs. Normal ABAP Report
A2: ALV (ABAP List Viewer) Report - Page 3
GU
I S
tatu
s (C
op
y an
y B
AL
V..
. p
rog
ram
's a
nd
ch
ang
e)
if sy-subrc = 0. concatenate user_addr-mc_namefir user_addr-mc_namelas into name separated by space. concatenate sy-uname '-' name into line-info separated by space. else. move sy-uname to line-info. endif. append line to heading.
line-key = 'Requested :'. write: sy-datum to line-info using edit mask '____/__/__', 'at' to line-info+11, sy-uzeit to line-info+14 using edit mask '__:__:__'. append line to heading.
line-key = 'System :'. concatenate sy-sysid ' / ' sy-mandt into line-info separated by space. append line to heading. line-info = sy-uname.
clear line. line-typ = 'A'. if not s_bukrs is initial. write: 'Company : ' to line-info, s_bukrs-low to line-info+29. if not s_bukrs-high is initial. write: 'to' to line-info+35, s_bukrs-high to line-info+38. endif. append line to heading. endif.* call function 'REUSE_ALV_COMMENTARY_WRITE' exporting i_logo = 'AST_LOGO' it_list_commentary = heading.
EndForm.Form Get_Module_Heading using p_module.* To be displayed in the heading.
case p_module. when 'AA'. move 'Asset Accounting' to module_text. when 'AM'. move 'Asset Management' to module_text. when 'BA'. move 'Basis, R/3 Administration' to module_text. when 'CA'. move 'Cross Application' to module_text. when 'CO'. move 'Controlling' to module_text. when 'EC'. move 'Enterprise Control' to module_text. when 'FI'. move 'Financial Accounting' to module_text. when 'FS'. move 'Consolidation' to module_text. when 'HR'. move 'Human Recources' to module_text. when 'GL'. move 'General Ledger' to module_text. when 'IM'. move 'Inventory Management' to module_text. when 'MM'. move 'Material Management' to module_text. .... endcase.
EndForm.
Tex
t E
lem
ents
SUBROUTINES
![Page 6: ALV1](https://reader036.vdocuments.mx/reader036/viewer/2022081908/5528b1945503466b588b487a/html5/thumbnails/6.jpg)
ALV (ABAP List Viewer) vs. Normal ABAP Report
A2: ALV (ABAP List Viewer) Report - Page 4
GU
I S
tatu
s (C
op
y an
y B
AL
V..
. p
rog
ram
's a
nd
ch
ang
e)
Form Initialize_ALV.
variant-report = sy-repid. " This is to enable variant selection variant-log_group = 'ZVAR'. " on screen 2 when not done on sel.scr
Perform Column using: 'BUKRS' '7' text-003 '' '' '' '', 'BUTXT' '25' text-012 '' '' '' '', 'HBKID' '10' text-004 '' '' '' '', 'BANKL' '15' text-005 '' '' '' '', 'BANKA' '60' text-006 '' '' '' '', 'BRNCH' '40' text-007 '' '' '' '', 'HKTID' '6' text-008 '' '' '' '', 'TEXT1' '50' text-009 '' '' '' '', 'BANKN' '18' text-010 '' '' '' '', 'HKONT' '15' text-011 '' '' '' ''.
* Printing layout print-no_print_selinfos = 'X'. " display no selection infos print-no_coverpage = 'X'. print-reserve_lines = 1. " lines reserved for end of page print-no_print_listinfos = 'X'. " display no listinfos
* Display options layout-colwidth_optimize = 'X'. " no column width optimization layout-no_colhead = ' '. " no headings layout-no_hotspot = ' '. " headings not as hotspot layout-zebra = 'X'. " striped pattern layout-no_vline = ' '. " columns separated by space layout-no_min_linesize = ' '. " line size = width of the list
* Sums layout-no_sumchoice = ' '. " no choice for summing up layout-no_totalline = ' '. " no total line layout-no_subchoice = ' '. " no choice for subtotals layout-no_subtotals = ' '. " no subtotals possible layout-numc_sum = ' '. " totals for NUMC-Fields possib. layout-totals_only = ' '. " show only totals layout-info_fieldname = 'LINECOLOR'.
* Set up table with subroutine to be used for top-of-page processing. report = sy-repid. " THIS IS ESSENTIAL FOR TOP-OF-PAGE & EVENTS
Call Function 'REUSE_ALV_EVENTS_GET' exporting i_list_type = 0 importing et_events = event. read table event with key name = slis_ev_top_of_page into ls_event. if sy-subrc = 0. move 'TOP_OF_PAGE' to ls_event-form. append ls_event to event. endif.
EndForm.
Form Column using name length desc datatype dec sum noout. clear fldcat. fldcat-fieldname = name. fldcat-outputlen = length. fldcat-seltext_l = desc. fldcat-datatype = datatype. fldcat-decimals_out = dec. fldcat-do_sum = sum. fldcat-no_out = noout. if name = 'SEL'. fldcat-checkbox = 'X'. endif. append fldcat.EndForm.
Tex
t E
lem
ents
SUBROUTINES
![Page 7: ALV1](https://reader036.vdocuments.mx/reader036/viewer/2022081908/5528b1945503466b588b487a/html5/thumbnails/7.jpg)
ALV (ABAP List Viewer) vs. Normal ABAP Report
A2: ALV (ABAP List Viewer) Report - Page 5
GU
I S
tatu
s (C
op
y an
y B
AL
V..
. p
rog
ram
's a
nd
ch
ang
e)
Form F4_For_Variant.
variant-report = sy-repid. variant-log_group = 'ZVAR'. clear def_variant.
call function 'REUSE_ALV_VARIANT_F4' exporting is_variant = variant " Report name i_save = 'A' importing e_exit = variant_exit es_variant = def_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 variant_exit = space. p_vari = def_variant-variant. variant = def_variant. " Required for selection screen usage endif. endif.
EndForm.
Form PAI_of_Selection_Screen.
if not p_vari is initial. move variant to def_variant. move p_vari to def_variant-variant. call function 'REUSE_ALV_VARIANT_EXISTENCE' exporting i_save = 'A' changing cs_variant = def_variant. variant = def_variant. endif.
EndForm.
Form User_Command using ucomm like sy-ucomm rs_selfield type slis_selfield.* Processing according to content of sy-ucomm.
case ucomm.* At line-selection interactive event - call transaction when '&IC1'.* READ TABLE itab INTO itab INDEX rs_selfield-tabindex.* CHECK NOT rs_selfield-value IS INITIAL.* CASE rs_selfield-fieldname.* WHEN 'VBELN'.* SET PARAMETER ID 'AUN' FIELD rs_selfield-value.* CALL TRANSACTION 'VA03' AND SKIP FIRST SCREEN.* WHEN 'EBELN'.* SET PARAMETER ID 'BES' FIELD rs_selfield-value.* CALL TRANSACTION 'ME23N' AND SKIP FIRST SCREEN.* ENDCASE. endcase. clear ucomm.
EndForm.
Form PF_Status using extab type slis_t_extab.
set pf-status 'STAT' excluding extab.
EndForm.
Tex
t E
lem
ents
SUBROUTINES