0% found this document useful (0 votes)
90 views10 pages

Zfi Alv Aging

This document defines macros and forms used to display data in ALV grids, lists, and hierarchies. It includes macros for registering ALV events, defining grid headers, and filling field catalog entries. Forms are defined for initializing the ALV, getting a default variant, displaying grids/lists/hierarchies, and handling exits. The macros and forms provide functionality for common ALV display and interaction tasks.

Uploaded by

3vilcat
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
90 views10 pages

Zfi Alv Aging

This document defines macros and forms used to display data in ALV grids, lists, and hierarchies. It includes macros for registering ALV events, defining grid headers, and filling field catalog entries. Forms are defined for initializing the ALV, getting a default variant, displaying grids/lists/hierarchies, and handling exits. The macros and forms provide functionality for common ALV display and interaction tasks.

Uploaded by

3vilcat
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
You are on page 1/ 10

*&---------------------------------------------------------------------*

*& Include ZFI_ALV_AGING


*&---------------------------------------------------------------------*

TYPE-POOLS: slis.
INCLUDE <list>.

*----------------------------------------------------------------------*
* Callback
*----------------------------------------------------------------------*
DATA: t_alv_event TYPE slis_t_event WITH HEADER LINE,
*DATA: t_alv_event TYPE slis_t_event,
t_alv_listheader TYPE slis_t_listheader WITH HEADER LINE,
t_alv_fieldcat TYPE slis_t_fieldcat_alv,
t_alv_sort TYPE slis_t_sortinfo_alv,
t_alv_color TYPE slis_t_specialcol_alv WITH HEADER LINE,
t_alv_filter TYPE slis_t_filter_alv,
t_alv_marked_columns TYPE slis_t_fieldcat_alv,
t_alv_filtered_entries TYPE slis_t_filtered_entries.

DATA: d_exit_caused_by_caller,
d_exit_caused_by_user TYPE slis_exit_by_user.

DATA: d_alv_repid LIKE sy-repid,


d_alv_title LIKE sy-title,
d_alv_title_detail LIKE sy-title,
d_alv_user_command TYPE slis_formname,
d_alv_top_of_page TYPE slis_formname,
d_alv_stats TYPE slis_formname,
d_alv_save VALUE 'A',
d_alv_layout TYPE slis_layout_alv,
d_alv_keyinfo TYPE slis_keyinfo_alv,
d_alv_print TYPE slis_print_alv,
d_alv_grid_scroll TYPE lvc_s_scrl,
d_alv_variant LIKE disvariant.

DATA t_grid_top_of_list TYPE slis_t_listheader.


DATA t_grid_top_of_page TYPE slis_t_listheader.

*----------------------------------------------------------------------*
* Macros
*----------------------------------------------------------------------*

*&---------------------------------------------------------------------*
*& Macro_ALV_Variant_Parameter
*&---------------------------------------------------------------------*
DEFINE macro_alv_variant_parameter.
selection-screen begin of block lvar with frame title text-lvr.
parameters: &1 like disvariant-variant.
selection-screen end of block lvar.
END-OF-DEFINITION.

*&---------------------------------------------------------------------*
*& Macro_ALV_RegEvent
*&---------------------------------------------------------------------*
DEFINE macro_alv_regevent.
clear t_alv_event.
t_alv_event-name = &1.
t_alv_event-form = &2.
append t_alv_event.
END-OF-DEFINITION.

*&---------------------------------------------------------------------*
*& Macro_ALV_GridHeader
*&---------------------------------------------------------------------*
* List Header Type:
* 1. 'H' = Header
* 2. 'S' = Selection
* 3. 'A' = Action
*&---------------------------------------------------------------------*
DEFINE macro_alv_gridheader.
clear t_alv_listheader.
t_alv_listheader-typ = &1.
t_alv_listheader-key = &2.
t_alv_listheader-info = &3.
append t_alv_listheader.
END-OF-DEFINITION.

*&---------------------------------------------------------------------*
*& Macro_Fill_KeyWord
*&---------------------------------------------------------------------*
DEFINE macro_fill_keyword.
&3 = strlen( &2 ).
if &3 > 20.
&1-ddictxt = 'L'.
&1-seltext_l = &2.
elseif &3 between 10 and 20.
&1-ddictxt = 'M'.
&1-seltext_m = &2.
else.
&1-ddictxt = 'S'.
&1-seltext_s = &2.
endif.
END-OF-DEFINITION.

*&---------------------------------------------------------------------*
*& Macro_Fill_Type
*&---------------------------------------------------------------------*
DEFINE macro_fill_type.
case &1.
* Key Field
when 'K'. &2-key = 'X'.
* Right Justified
when 'R'. lv_fctlg-just = 'R'.
* Left Justified
when 'L'. lv_fctlg-just = 'L'.
* Centered
when 'C'. lv_fctlg-just = 'C'.
* Icon
when 'I'. lv_fctlg-icon = 'X'.
* Symbol
when 'S'. lv_fctlg-symbol = 'X'.
* Checkbox
when 'X'. lv_fctlg-checkbox = 'X'.
* Leading Zero
when 'D'. lv_fctlg-lzero = 'X'.
* No-Sign
when 'G'. lv_fctlg-no_sign = 'X'.
* No-Zero
when 'Z'. lv_fctlg-no_zero = 'X'.
* No Sign & No-Zero
when 'A'.
lv_fctlg-no_sign = 'X'.
lv_fctlg-no_zero = 'X'.
* No Convext
when 'V'. lv_fctlg-no_convext = 'X'.
* No Output
when 'N'. lv_fctlg-no_out = 'X'.
endcase.
END-OF-DEFINITION.

*----------------------------------------------------------------------*
* Forms
*----------------------------------------------------------------------*

*---------------------------------------------------------------------*
* FORM f_alv_init *
*---------------------------------------------------------------------*
FORM f_alv_init TABLES ft_fctlg TYPE slis_t_fieldcat_alv
USING fu_alv_stats LIKE d_alv_stats
fu_alv_ucomm LIKE d_alv_user_command.
d_alv_repid = sy-repid.
d_alv_stats = fu_alv_stats.
d_alv_user_command = fu_alv_ucomm.
REFRESH ft_fctlg.
ENDFORM. "f_alv_init

*&---------------------------------------------------------------------*
*& Form f_alv_get_default_variant
*&---------------------------------------------------------------------*
* Get Default Variant
*----------------------------------------------------------------------*
FORM f_alv_get_default_variant USING fu_varian LIKE disvariant-variant.
CLEAR d_alv_variant.
d_alv_variant-report = d_alv_repid.
d_alv_variant-username = sy-uname.

CALL FUNCTION 'REUSE_ALV_VARIANT_DEFAULT_GET'


EXPORTING
i_save = d_alv_save
CHANGING
cs_variant = d_alv_variant
EXCEPTIONS
wrong_input = 1
not_found = 2
program_error = 3
OTHERS = 4.

CHECK sy-subrc = 0.
fu_varian = d_alv_variant-variant.
ENDFORM. " f_alv_get_default_variant"

*&---------------------------------------------------------------------*
*& FORM F_ALV_GRID_TOP_OF_PAGE
*&---------------------------------------------------------------------*
FORM f_alv_grid_top_of_page.
CHECK NOT t_alv_listheader[] IS INITIAL.
CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
EXPORTING
it_list_commentary = t_alv_listheader[].
ENDFORM. "f_alv_grid_top_of_page

*&---------------------------------------------------------------------*
*& Form f_alv_griddisplay
*&---------------------------------------------------------------------*
FORM f_alv_griddisplay TABLES ft_outtab.
* Display Grid
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
* i_background_id = 'ALV_BACKGROUND'
i_callback_program = d_alv_repid
i_callback_pf_status_set = d_alv_stats
i_callback_user_command = d_alv_user_command
* i_callback_top_of_page = d_alv_top_of_page
is_layout = d_alv_layout
it_fieldcat = t_alv_fieldcat[]
i_save = d_alv_save
is_variant = d_alv_variant
it_events = t_alv_event[]
it_sort = t_alv_sort
IMPORTING
e_exit_caused_by_caller = d_exit_caused_by_caller
es_exit_caused_by_user = d_exit_caused_by_user
TABLES
t_outtab = ft_outtab
EXCEPTIONS
program_error = 1
OTHERS = 2.
IF sy-subrc = 0.
PERFORM f_exit_handle USING d_exit_caused_by_caller
d_exit_caused_by_user.
ELSE.
* Fatal error
MESSAGE a001(aq) WITH 'Fatal error when calling ALV'.
ENDIF.
ENDFORM. " f_alv_griddisplay

*&---------------------------------------------------------------------*
*& Form f_alv_listdisplay
*&---------------------------------------------------------------------*
FORM f_alv_listdisplay TABLES ft_outtab.
* Display List
d_alv_repid = sy-repid.
CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'
EXPORTING
i_callback_program = d_alv_repid
* i_callback_pf_status_set = d_alv_stats
* i_callback_user_command = d_alv_user_command
i_callback_pf_status_set = d_alv_stats"'F_ALV_STATUS'
i_callback_user_command = d_alv_user_command"'F_ALV_USER_COMMAND'
is_layout = d_alv_layout
it_fieldcat = t_alv_fieldcat
i_save = d_alv_save
is_variant = d_alv_variant
is_print = d_alv_print
it_events = t_alv_event[]
it_sort = t_alv_sort
IMPORTING
e_exit_caused_by_caller = d_exit_caused_by_caller
es_exit_caused_by_user = d_exit_caused_by_user
TABLES
t_outtab = ft_outtab
EXCEPTIONS
program_error = 1
OTHERS = 2.

IF sy-subrc = 0.
PERFORM f_exit_handle USING d_exit_caused_by_caller
d_exit_caused_by_user.
ELSE.
* Fatal error
MESSAGE a001(aq) WITH 'Fatal error when calling ALV'.
ENDIF.
ENDFORM. " f_alv_listdisplay

*&---------------------------------------------------------------------*
*& Form f_alv_hierdisplay
*&---------------------------------------------------------------------*
FORM f_alv_hierdisplay TABLES ft_head
ft_item
USING fu_thead TYPE slis_tabname
fu_titem TYPE slis_tabname.
* Display Hier
CALL FUNCTION 'REUSE_ALV_HIERSEQ_LIST_DISPLAY'
EXPORTING
i_callback_program = d_alv_repid
i_callback_pf_status_set = d_alv_stats
i_callback_user_command = d_alv_user_command
is_layout = d_alv_layout
it_fieldcat = t_alv_fieldcat[]
i_save = d_alv_save
is_variant = d_alv_variant
it_events = t_alv_event[]
i_tabname_header = fu_thead
i_tabname_item = fu_titem
is_keyinfo = d_alv_keyinfo
IMPORTING
e_exit_caused_by_caller = d_exit_caused_by_caller
es_exit_caused_by_user = d_exit_caused_by_user
TABLES
t_outtab_header = ft_head
t_outtab_item = ft_item
EXCEPTIONS
program_error = 1
OTHERS = 2.

IF sy-subrc = 0.
PERFORM f_exit_handle USING d_exit_caused_by_caller
d_exit_caused_by_user.
ELSE.
* Fatal error
MESSAGE a001(aq) WITH 'Fatal error when calling ALV'.
ENDIF.
ENDFORM. " f_alv_hierdisplay

*&---------------------------------------------------------------------*
*& Form f_exit_handle
*&---------------------------------------------------------------------*
* Handle Exit command from ALV
*----------------------------------------------------------------------*
FORM f_exit_handle USING fu_caller TYPE c
fu_user TYPE slis_exit_by_user.
IF fu_caller = 'X'.
* Forced Exit by calling program
MESSAGE e001(aq) WITH 'Forced exit by calling program'.
ELSE.
* User left list via F3, F12 or F15
IF d_exit_caused_by_user-back = 'X'. "F3
ELSEIF d_exit_caused_by_user-exit = 'X'. "F15
LEAVE PROGRAM.
ELSEIF d_exit_caused_by_user-cancel = 'X'."F12
ELSE.
MESSAGE a001(aq) WITH 'Abnormal error, terminating program ...'.
ENDIF.
ENDIF.
ENDFORM. " f_exit_handle"

*&---------------------------------------------------------------------*
*& Form F_ALV_CATALOG
*&---------------------------------------------------------------------*
FORM f_alv_catalog USING ft_fctlg TYPE slis_t_fieldcat_alv
fu_tbnam TYPE slis_fieldname
fu_fname TYPE slis_tabname
fu_reftb LIKE dd03p-tabname
fu_refld LIKE dd03p-fieldname
fu_type TYPE c
fu_dscrp LIKE dd03p-scrtext_l
fu_outln LIKE dd03p-outputlen
fu_input TYPE c
fu_hotsp TYPE c
fu_no_out.

DATA: lv_fctlg TYPE slis_fieldcat_alv,


ld_lngth TYPE i.

CLEAR lv_fctlg.
* Table and Field Name
lv_fctlg-tabname = fu_tbnam.
lv_fctlg-fieldname = fu_fname.
* Field Type
macro_fill_type fu_type lv_fctlg.
* Output Length
lv_fctlg-outputlen = fu_outln.
* Key Word (Long, Middle and Short)
macro_fill_keyword lv_fctlg fu_dscrp ld_lngth.
* Reference Table & Field Name
lv_fctlg-ref_tabname = fu_reftb.
lv_fctlg-ref_fieldname = fu_refld.
* Hotspot
lv_fctlg-hotspot = fu_hotsp.
* Input
lv_fctlg-input = fu_input.

* No Out
lv_fctlg-no_out = fu_no_out.

* Append to Catalog
APPEND lv_fctlg TO ft_fctlg.
ENDFORM. " F_ALV_CATALOG"

*&---------------------------------------------------------------------*
*& Form F_ALV_CATALOG_CURR
*&---------------------------------------------------------------------*
FORM f_alv_catalog_curr USING ft_fctlg TYPE slis_t_fieldcat_alv
fu_tbnam TYPE slis_fieldname
fu_fname TYPE slis_tabname
fu_reftb LIKE dd03p-tabname
fu_refld LIKE dd03p-fieldname
fu_ctnam TYPE slis_tabname
fu_cfnam TYPE slis_fieldname
fu_type TYPE c
fu_dsum TYPE c
fu_dscrp LIKE dd03p-scrtext_l
fu_outln LIKE dd03p-outputlen
fu_hotsp TYPE c.

DATA: lv_fctlg TYPE slis_fieldcat_alv,


ld_lngth TYPE i.

CLEAR lv_fctlg.
* Table and Field Name
lv_fctlg-tabname = fu_tbnam.
lv_fctlg-fieldname = fu_fname.
* Currency Reference
lv_fctlg-cfieldname = fu_cfnam.
lv_fctlg-ctabname = fu_ctnam.
* Field Type
macro_fill_type fu_type lv_fctlg.
* Sum
lv_fctlg-do_sum = fu_dsum.
* Output Length
lv_fctlg-outputlen = fu_outln.
* Key Word (Long, Middle and Short)
macro_fill_keyword lv_fctlg fu_dscrp ld_lngth.
* Reference Table & Field Name
lv_fctlg-ref_tabname = fu_reftb.
lv_fctlg-ref_fieldname = fu_refld.
* Data Type
lv_fctlg-datatype = 'CURR'.
* Hotspot
lv_fctlg-hotspot = fu_hotsp.

* Append to Catalog
APPEND lv_fctlg TO ft_fctlg.
ENDFORM. " F_ALV_CATALOG_CURR"

*&---------------------------------------------------------------------*
*& Form F_ALV_CATALOG_QUAN
*&---------------------------------------------------------------------*
FORM f_alv_catalog_quan USING ft_fctlg TYPE slis_t_fieldcat_alv
fu_tbnam TYPE slis_fieldname
fu_fname TYPE slis_tabname
fu_reftb LIKE dd03p-tabname
fu_refld LIKE dd03p-fieldname
fu_qtnam TYPE slis_tabname
fu_qfnam TYPE slis_fieldname
fu_type TYPE c
fu_dsum TYPE c
fu_dscrp LIKE dd03p-scrtext_l
fu_outln LIKE dd03p-outputlen.

DATA: lv_fctlg TYPE slis_fieldcat_alv,


ld_lngth TYPE i.

CLEAR lv_fctlg.
* Table and Field Name
lv_fctlg-tabname = fu_tbnam.
lv_fctlg-fieldname = fu_fname.
* Quantity Reference
lv_fctlg-qfieldname = fu_qfnam.
lv_fctlg-qtabname = fu_qtnam.
* Field Type
macro_fill_type fu_type lv_fctlg.
* Sum
lv_fctlg-do_sum = fu_dsum.
* Output Length
lv_fctlg-outputlen = fu_outln.
* Key Word (Long, Middle and Short)
macro_fill_keyword lv_fctlg fu_dscrp ld_lngth.
* Reference Table & Field Name
lv_fctlg-ref_tabname = fu_reftb.
lv_fctlg-ref_fieldname = fu_refld.
* Data Type
lv_fctlg-datatype = 'QUAN'.

* Append to Catalog
APPEND lv_fctlg TO ft_fctlg.
ENDFORM. " F_ALV_CATALOG_QUAN"

*---------------------------------------------------------------------*
* FORM f_alv_build_print *
*---------------------------------------------------------------------*
FORM f_alv_build_print.
d_alv_print-print = ' '. "Display or Print
d_alv_print-no_print_selinfos = ' '.
d_alv_print-no_coverpage = ' '.
d_alv_print-no_new_page = ' '.
d_alv_print-reserve_lines = 0.
d_alv_print-no_print_listinfos = 'X'.
d_alv_print-no_change_print_params = ' '.

ENDFORM. " F_BUILD_PRINT

*---------------------------------------------------------------------*
* FORM f_alv_layout_color *
*---------------------------------------------------------------------*
FORM f_alv_layout_color USING fu_zebra LIKE d_alv_layout-zebra
fu_btabnm LIKE d_alv_layout-box_tabname
fu_bfldnm LIKE d_alv_layout-box_fieldname
fu_ltabnm LIKE d_alv_layout-lights_tabname
fu_lfldnm LIKE d_alv_layout-lights_fieldname
fu_efldnm LIKE d_alv_layout-expand_fieldname
fu_cfldnm LIKE d_alv_layout-coltab_fieldname
fu_ncolhd LIKE d_alv_layout-no_colhead.
d_alv_layout-zebra = fu_zebra.
d_alv_layout-box_fieldname = fu_bfldnm.
d_alv_layout-box_tabname = fu_btabnm.
d_alv_layout-lights_tabname = fu_ltabnm.
d_alv_layout-lights_fieldname = fu_lfldnm.
d_alv_layout-expand_fieldname = fu_efldnm.
d_alv_layout-coltab_fieldname = fu_cfldnm.
d_alv_layout-no_colhead = fu_ncolhd.
ENDFORM. " f_alv_layout_color

*---------------------------------------------------------------------*
* FORM f_alv_color *
*---------------------------------------------------------------------*
FORM f_alv_color
USING fu_fieldname
fu_color
fu_intensified
fu_inverted.
t_alv_color-fieldname = fu_fieldname.
t_alv_color-color-col = fu_color.
t_alv_color-color-int = fu_intensified.
t_alv_color-color-inv = fu_inverted.
APPEND t_alv_color.
ENDFORM. "f_alv_color

*&--------------------------------------------------------------------*
*& Form f_ALV_sort
*&--------------------------------------------------------------------*
* text
*---------------------------------------------------------------------*
* -->FU_POS text
* -->FU_FIELDNAMtext
* -->FU_TABNAME text
* -->FU_UP text
* -->FU_DOWN text
* -->FU_GROUP text
* -->FU_SUBTOT text
* -->FU_COMP text
* -->FU_EXPA text
* -->FU_OBLIG text
*---------------------------------------------------------------------*
FORM f_alv_sort USING
fu_pos
fu_fieldname
fu_tabname

fu_up
fu_down
fu_group
fu_subtot
fu_comp
fu_expa
fu_oblig.

DATA lt_alv_sort TYPE slis_sortinfo_alv.

lt_alv_sort-spos = fu_pos.
lt_alv_sort-fieldname = fu_fieldname.
lt_alv_sort-tabname = fu_tabname.

lt_alv_sort-up = fu_up.
lt_alv_sort-down = fu_down.
lt_alv_sort-group = fu_group.
lt_alv_sort-subtot = fu_subtot.
lt_alv_sort-comp(1) = fu_comp.
lt_alv_sort-expa(1) = fu_expa.
lt_alv_sort-obligatory(1) = fu_oblig.

APPEND lt_alv_sort TO t_alv_sort.

ENDFORM. " f_sort_alv

----------------------------------------------------------------------------------
Extracted by Mass Download version 1.4.3 - E.G.Mellodew. 1998-2017. Sap Release 750

You might also like