Zfi Alv Aging
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.
*----------------------------------------------------------------------*
* 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.
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.
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.
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.
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 = ' '.
*---------------------------------------------------------------------*
* 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.
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.
----------------------------------------------------------------------------------
Extracted by Mass Download version 1.4.3 - E.G.Mellodew. 1998-2017. Sap Release 750