PARTE 2



Segundo empezamos creando la clase:
ZCL_ALV_GRID_MAINP


En Tipos Locales copiamos:
*"* use this source file for any type declarations (class
*"* definitions, interfaces or data types) you need for method
*"* implementation or private method's signature

INCLUDE <icon>.

CLASS cl_gui_cfw DEFINITION LOAD.
CLASS cl_gui_column_tree DEFINITION LOAD.

En Impl. copiamos:
*"* local class implementation for public class
*"* use this source file for the implementation part of
*"* local helper classes

* Defino una clase local para los eventos del toolbar

CLASS lcl_toolbar_event_receiver DEFINITION.

*  PUBLIC SECTION.
*    METHODS: on_function_selected
*              FOR EVENT toolbar OF cl_gui_alv_grid
*      IMPORTING
*      e_object
*      e_interactive.

ENDCLASS.                    "lcl_toolbar_event_receiver DEFINITION

*---------------------------------------------------------------------*

* Implemento una clase local para los eventos del toolbar

CLASS lcl_toolbar_event_receiver IMPLEMENTATION.

*  METHOD on_function_selected.
*    DATA: flag_s TYPE c.
*
*    CASE fcode.
*
*      WHEN '&CRR'.
*        flag_s = '1'.
*
*        CALL METHOD ZCL_ALV_GRID_MAINP=>pagination
*          EXPORTING
*            flag_s = flag_s.
*
*      WHEN '&CRL'.
*        flag_s = '2'.
*
*        CALL METHOD ZCL_ALV_GRID_MAINP=>pagination
*          EXPORTING
*            flag_s = flag_s.
*
*      WHEN '&CTL'.
*        flag_s = '3'.
*
*        CALL METHOD ZCL_ALV_GRID_MAINP=>pagination
*          EXPORTING
*            flag_s = flag_s.
*
*
*      WHEN '&CTR'.
*        flag_s = '4'.
*
*        CALL METHOD ZCL_ALV_GRID_MAINP=>pagination
*          EXPORTING
*            flag_s = flag_s.
*
**      WHEN '&LIST'.
**        flag_s = '5'.
**        CALL METHOD zcl_alv_tree_main=>pagination
**          EXPORTING
**            flag_s = flag_s.
*
*    ENDCASE.

*  ENDMETHOD.                    "on_function_selected

ENDCLASS.                    "lcl_toolbar_event_receiver IMPLEMENTATION

"nota : si deseas crear mas botones desde el programa
" CALL METHOD ao_tree->ao_tree->get_toolbar_object
*    IMPORTING
*      er_toolbar = ao_toolbar.
*
*  CHECK NOT ao_toolbar IS INITIAL.
*
*  CALL METHOD ao_toolbar->add_button
*    EXPORTING
*      fcode            = '&XXX'
*      icon             = 'dd'
*      butn_type        = cntb_btype_button
*      text             = ''
*      quickinfo        = ''
*    EXCEPTIONS
*      cntl_error       = 1
*      cntb_btype_error = 2
*      cntb_error_fcode = 3
*      OTHERS           = 4.

* Creas tu propia clase local para los eventos de aquellos botones

"nota : si deseo manipular datos desde el programa lo puedo hacer de la sgte. manera

*  ASSIGN ao_tree->at_nodetab->* TO <ta>.
*  LOOP AT <ta> INTO <wa>.
*    CLEAR at_nodetab2.
*    MOVE-CORRESPONDING <wa> TO at_nodetab2.  " a cualq tabla del programa
*    APPEND at_nodetab2.
*  ENDLOOP.

En Sección Pública copiamos:
 
class ZCL_ALV_GRID_MAINP definition
  public
  final
  create public .

*"* public components of class ZCL_ALV_GRID_MAINP
*"* do not include other source files here!!!
public section.

  class-data AO_ALV_OO type ref to ZCL_ALV_GRID_INFO .
  class-data AO_CONTAINER_OO type ref to CL_GUI_CUSTOM_CONTAINER .
  class-data AO_TOOLBAR_OO type ref to CL_GUI_TOOLBAR .
  class-data AW_IS_HIERARCHY_HEADER_OO type TREEV_HHDR .
  class-data AT_FIELDCATALOG_OO type LVC_T_FCAT .
  class-data AT_TOOLBAR_EXCL_OO type UI_FUNCTIONS .
  class-data AP_I_STRUCT_NAME_OO type DD02L-TABNAME .
  class-data AP_I_STRUCT_NAME_GRAPHIC_OO type DD02L-TABNAME .
  class-data AO_NODETAB_OO type ref to DATA .
  class-data AP_I_SAVE_OO type CHAR01 .
  class-data AP_I_DEFAULT_OO type CHAR01 .
  class-data AW_IS_EXCEPTION_FIELD_OO type LVC_S_L004 .
  class-data AT_IT_SPECIAL_GROUPS_OO type LVC_T_SGRP .
  type-pools SLIS .
  class-data AT_IT_LIST_COMMENTARY_OO type SLIS_T_LISTHEADER .
  type-pools SDYDO .
  class-data AP_I_LOGO_OO type SDYDO_VALUE .
  class-data AP_I_BACKGROUND_ID_OO type SDYDO_KEY .
  class-data AT_IT_EXCEPT_QINFO_OO type LVC_T_QINF .
  class-data AT_IT_FILTER_OO type LVC_T_FILT .
  class-data AW_IS_VARIANT_OO type DISVARIANT .
  class-data AP_PROGRAM_OO type PROGNAME .
  class-data AP_I_BUFFER_ACTIVE_OO type .
  class-data AP_I_BYPASSING_BUFFER_OO type CHAR01 .
  class-data AP_I_CONSISTENCY_CHECK_OO type CHAR1 .
  class-data AW_IS_LAYOUT_OO type LVC_S_LAYO .
  class-data AW_IS_PRINT_OO type LVC_S_PRNT .
  class-data AT_IT_HYPERLINK_OO type LVC_T_HYPE .
  class-data AT_IT_GRAPHICS_OO type DTC_T_TC .
  class-data AO_IR_SALV_ADAPTER_OO type ref to IF_SALV_ADAPTER .
  class-data AT_IT_SORT_OO type LVC_T_SORT .
  class-data AT_DROPDOWN_OO type LVC_T_DROP .
  class-data AT_REGISTER_OO type LVC_T_F4 .
  class-data AO_ALV type ref to ZCL_ALV_GRID_INFO .
  class-data AO_NODETAB type ref to DATA .
  class-data AO_TOOLBAR type ref to CL_GUI_TOOLBAR .
  class-data AW_ES_EXIT_CAUSED_BY_USER type SLIS_EXIT_BY_USER .
  class-data AP_I_INTERFACE_CHECK type .
  class-data AP_I_BYPASSING_BUFFER type CHAR01 .
  class-data AP_I_BUFFER_ACTIVE type .
  class-data AP_I_CALLBACK_PROGRAM type SY-REPID .
  class-data AP_I_CALLBACK_PF_STATUS_SET type SLIS_FORMNAME .
  class-data AP_I_CALLBACK_USER_COMMAND type SLIS_FORMNAME .
  class-data AP_I_CALLBACK_TOP_OF_PAGE type SLIS_FORMNAME .
  class-data AP_I_CALLBACK_HTML_TOP_OF_PAGE type SLIS_FORMNAME .
  class-data AP_I_CALLBACK_HTML_END_OF_LIST type SLIS_FORMNAME .
  class-data AP_I_STRUCTURE_NAME type DD02L-TABNAME .
  class-data AP_I_BACKGROUND_ID type SDYDO_KEY .
  class-data AP_I_GRID_TITLE type LVC_TITLE .
  class-data AP_I_GRID_SETTINGS type LVC_S_GLAY .
  class-data AW_IS_LAYOUT type SLIS_LAYOUT_ALV .
  class-data AT_IT_FIELDCAT type SLIS_T_FIELDCAT_ALV .
  class-data AT_IT_EXCLUDING type SLIS_T_EXTAB .
  class-data AT_IT_SPECIAL_GROUPS type SLIS_T_SP_GROUP_ALV .
  class-data AT_IT_SORT type SLIS_T_SORTINFO_ALV .
  class-data AT_IT_FILTER type SLIS_T_FILTER_ALV .
  class-data AW_IS_SEL_HIDE type SLIS_SEL_HIDE_ALV .
  class-data AP_I_DEFAULT type .
  class-data AP_I_SAVE type .
  class-data AW_IS_VARIANT type DISVARIANT .
  class-data AT_IT_EVENTS type SLIS_T_EVENT .
  class-data AT_IT_EVENT_EXIT type SLIS_T_EVENT_EXIT .
  class-data AW_IS_PRINT type SLIS_PRINT_ALV .
  class-data AW_IS_REPREP_ID type SLIS_REPREP_ID .
  class-data AP_I_SCREEN_START_COLUMN type .
  class-data AP_I_SCREEN_START_LINE type .
  class-data AP_I_SCREEN_END_COLUMN type .
  class-data AP_I_SCREEN_END_LINE type .
  class-data AP_I_HTML_HEIGHT_TOP type .
  class-data AP_I_HTML_HEIGHT_END type .
  class-data AT_IT_ALV_GRAPHICS type DTC_T_TC .
  class-data AO_IR_SALV_FULLSCREEN_ADAPTER type ref to CL_SALV_FULLSCREEN_ADAPTER .
  class-data AP_E_EXIT_CAUSED_BY_CALLER type .
  class-data AP_I_STRUCT_NAME type DD02L-TABNAME .
  class-data AP_PROGRAM type PROGNAME .

  class-methods INIT_ALV_OO
    importing
      value(P_PROGRAMtype PROGNAME
      value(P_STRUCTUREtype DD02L-TABNAME
      value(P_CONTAINERtype DYNFNAM
      !P_HIDE_MC_FC_AUF type XFELD optional
      !P_HIDE_MC_FC_AVERAGE type XFELD optional
      !P_HIDE_MC_FC_BACK_CLASSIC type XFELD optional
      !P_HIDE_MC_FC_CALL_ABC type XFELD optional
      !P_HIDE_MC_FC_CALL_CHAIN type XFELD optional
      !P_HIDE_MC_FC_CALL_CRBATCH type XFELD optional
      !P_HIDE_MC_FC_CALL_CRWEB type XFELD optional
      !P_HIDE_MC_FC_CALL_LINEITEMS type XFELD optional
      !P_HIDE_MC_FC_CALL_MASTER_DATA type XFELD optional
      !P_HIDE_MC_FC_CALL_MORE type XFELD optional
      !P_HIDE_MC_FC_CALL_REPORT type XFELD optional
      !P_HIDE_MC_FC_CALL_XINT type XFELD optional
      !P_HIDE_MC_FC_CALL_XXL type XFELD optional
      !P_HIDE_MC_FC_CHECK type XFELD optional
      !P_HIDE_MC_FC_COL_INVISIBLE type XFELD optional
      !P_HIDE_MC_FC_COL_OPTIMIZE type XFELD optional
      !P_HIDE_MC_FC_COUNT type XFELD optional
      !P_HIDE_MC_FC_CURRENT_VARIANT type XFELD optional
      !P_HIDE_MC_FC_DATA_SAVE type XFELD optional
      !P_HIDE_MC_FC_DELETE_FILTER type XFELD optional
      !P_HIDE_MC_FC_DESELECT_ALL type XFELD optional
      !P_HIDE_MC_FC_DETAIL type XFELD optional
      !P_HIDE_MC_FC_EXCL_ALL type XFELD optional
      !P_HIDE_MC_FC_EXPCRDATA type XFELD optional
      !P_HIDE_MC_FC_EXPCRDESIG type XFELD optional
      !P_HIDE_MC_FC_EXPCRTEMPL type XFELD optional
      !P_HIDE_MC_FC_EXPMDB type XFELD optional
      !P_HIDE_MC_FC_EXTEND type XFELD optional
      !P_HIDE_MC_FC_F4 type XFELD optional
      !P_HIDE_MC_FC_FILTER type XFELD optional
      !P_HIDE_MC_FC_FIND type XFELD optional
      !P_HIDE_MC_FC_FIX_COLUMNS type XFELD optional
      !P_HIDE_MC_FC_GRAPH type XFELD optional
      !P_HIDE_MC_FC_HELP type XFELD optional
      !P_HIDE_MC_FC_HTML type XFELD optional
      !P_HIDE_MC_FC_INFO type XFELD optional
      !P_HIDE_MC_FC_LOAD_VARIANT type XFELD optional
      !P_HIDE_MC_FC_LOC_APPEND_ROW type XFELD optional
      !P_HIDE_MC_FC_LOC_COPY type XFELD optional
      !P_HIDE_MC_FC_LOC_COPY_ROW type XFELD optional
      !P_HIDE_MC_FC_LOC_CUT type XFELD optional
      !P_HIDE_MC_FC_LOC_DELETE_ROW type XFELD optional
      !P_HIDE_MC_FC_LOC_INSERT_ROW type XFELD optional
      !P_HIDE_MC_FC_LOC_MOVE_ROW type XFELD optional
      !P_HIDE_MC_FC_LOC_PASTE type XFELD optional
      !P_HIDE_MC_FC_LOC_PASTE_NEW_ROW type XFELD optional
      !P_HIDE_MC_FC_LOC_UNDO type XFELD optional
      !P_HIDE_MC_FC_MAINTAIN_VARIANT type XFELD optional
      !P_HIDE_MC_FC_MAXIMUM type XFELD optional
      !P_HIDE_MC_FC_MINIMUM type XFELD optional
      !P_HIDE_MC_FC_PC_FILE type XFELD optional
      !P_HIDE_MC_FC_PRINT type XFELD optional
      !P_HIDE_MC_FC_PRINT_BACK type XFELD optional
      !P_HIDE_MC_FC_PRINT_PREV type XFELD optional
      !P_HIDE_MC_FC_REFRESH type XFELD optional
      !P_HIDE_MC_FC_REPREP type XFELD optional
      !P_HIDE_MC_FC_SAVE_VARIANT type XFELD optional
      !P_HIDE_MC_FC_SELECT_ALL type XFELD optional
      !P_HIDE_MC_FC_SEND type XFELD optional
      !P_HIDE_MC_FC_SEPARATOR type XFELD optional
      !P_HIDE_MC_FC_SORT type XFELD optional
      !P_HIDE_MC_FC_SORT_ASC type XFELD optional
      !P_HIDE_MC_FC_SORT_DSC type XFELD optional
      !P_HIDE_MC_FC_SUBTOT type XFELD optional
      !P_HIDE_MC_FC_SUM type XFELD optional
      !P_HIDE_MC_FC_TO_OFFICE type XFELD optional
      !P_HIDE_MC_FC_TO_REP_TREE type XFELD optional
      !P_HIDE_MC_FC_UNFIX_COLUMNS type XFELD optional
      !P_HIDE_MC_FC_URL_COPY_TO_CLIPB type XFELD optional
      !P_HIDE_MC_FC_VARIANT_ADMIN type XFELD optional
      !P_HIDE_MC_FC_VIEWS type XFELD optional
      !P_HIDE_MC_FC_VIEW_CRYSTAL type XFELD optional
      !P_HIDE_MC_FC_VIEW_EXCEL type XFELD optional
      !P_HIDE_MC_FC_VIEW_GRID type XFELD optional
      !P_HIDE_MC_FC_VIEW_LOTUS type XFELD optional
      !P_HIDE_MC_FC_WORD_PROCESSOR type XFELD optional .
  class-methods BUILD_ALV_OO
    importing
      !P_PROGR type PROGNAME .
  class-methods BUILD_FIELDCATALOG_OO
    importing
      !P_STRUCTURE_NAME type DD02L-TABNAME
    exporting
      !P_FIELDCAT type LVC_T_FCAT .
  class-methods HIDE_FUNCTIONS_OO
    importing
      !P_MC_FC_AUF type XFELD optional
      !P_MC_FC_AVERAGE type XFELD optional
      !P_MC_FC_BACK_CLASSIC type XFELD optional
      !P_MC_FC_CALL_ABC type XFELD optional
      !P_MC_FC_CALL_CHAIN type XFELD optional
      !P_MC_FC_CALL_CRBATCH type XFELD optional
      !P_MC_FC_CALL_CRWEB type XFELD optional
      !P_MC_FC_CALL_LINEITEMS type XFELD optional
      !P_MC_FC_CALL_MASTER_DATA type XFELD optional
      !P_MC_FC_CALL_MORE type XFELD optional
      !P_MC_FC_CALL_REPORT type XFELD optional
      !P_MC_FC_CALL_XINT type XFELD optional
      !P_MC_FC_CALL_XXL type XFELD optional
      !P_MC_FC_CHECK type XFELD optional
      !P_MC_FC_COL_INVISIBLE type XFELD optional
      !P_MC_FC_COL_OPTIMIZE type XFELD optional
      !P_MC_FC_COUNT type XFELD optional
      !P_MC_FC_CURRENT_VARIANT type XFELD optional
      !P_MC_FC_DATA_SAVE type XFELD optional
      !P_MC_FC_DELETE_FILTER type XFELD optional
      !P_MC_FC_DESELECT_ALL type XFELD optional
      !P_MC_FC_DETAIL type XFELD optional
      !P_MC_FC_EXCL_ALL type XFELD optional
      !P_MC_FC_EXPCRDATA type XFELD optional
      !P_MC_FC_EXPCRDESIG type XFELD optional
      !P_MC_FC_EXPCRTEMPL type XFELD optional
      !P_MC_FC_EXPMDB type XFELD optional
      !P_MC_FC_EXTEND type XFELD optional
      !P_MC_FC_F4 type XFELD optional
      !P_MC_FC_FILTER type XFELD optional
      !P_MC_FC_FIND type XFELD optional
      !P_MC_FC_FIX_COLUMNS type XFELD optional
      !P_MC_FC_GRAPH type XFELD optional
      !P_MC_FC_HELP type XFELD optional
      !P_MC_FC_HTML type XFELD optional
      !P_MC_FC_INFO type XFELD optional
      !P_MC_FC_LOAD_VARIANT type XFELD optional
      !P_MC_FC_LOC_APPEND_ROW type XFELD optional
      !P_MC_FC_LOC_COPY type XFELD optional
      !P_MC_FC_LOC_COPY_ROW type XFELD optional
      !P_MC_FC_LOC_CUT type XFELD optional
      !P_MC_FC_LOC_DELETE_ROW type XFELD optional
      !P_MC_FC_LOC_INSERT_ROW type XFELD optional
      !P_MC_FC_LOC_MOVE_ROW type XFELD optional
      !P_MC_FC_LOC_PASTE type XFELD optional
      !P_MC_FC_LOC_PASTE_NEW_ROW type XFELD optional
      !P_MC_FC_LOC_UNDO type XFELD optional
      !P_MC_FC_MAINTAIN_VARIANT type XFELD optional
      !P_MC_FC_MAXIMUM type XFELD optional
      !P_MC_FC_MINIMUM type XFELD optional
      !P_MC_FC_PC_FILE type XFELD optional
      !P_MC_FC_PRINT type XFELD optional
      !P_MC_FC_PRINT_BACK type XFELD optional
      !P_MC_FC_PRINT_PREV type XFELD optional
      !P_MC_FC_REFRESH type XFELD optional
      !P_MC_FC_REPREP type XFELD optional
      !P_MC_FC_SAVE_VARIANT type XFELD optional
      !P_MC_FC_SELECT_ALL type XFELD optional
      !P_MC_FC_SEND type XFELD optional
      !P_MC_FC_SEPARATOR type XFELD optional
      !P_MC_FC_SORT type XFELD optional
      !P_MC_FC_SORT_ASC type XFELD optional
      !P_MC_FC_SORT_DSC type XFELD optional
      !P_MC_FC_SUBTOT type XFELD optional
      !P_MC_FC_SUM type XFELD optional
      !P_MC_FC_TO_OFFICE type XFELD optional
      !P_MC_FC_TO_REP_TREE type XFELD optional
      !P_MC_FC_UNFIX_COLUMNS type XFELD optional
      !P_MC_FC_URL_COPY_TO_CLIPBOARD type XFELD optional
      !P_MC_FC_VARIANT_ADMIN type XFELD optional
      !P_MC_FC_VIEWS type XFELD optional
      !P_MC_FC_VIEW_CRYSTAL type XFELD optional
      !P_MC_FC_VIEW_EXCEL type XFELD optional
      !P_MC_FC_VIEW_GRID type XFELD optional
      !P_MC_FC_VIEW_LOTUS type XFELD optional
      !P_MC_FC_WORD_PROCESSOR type XFELD optional .
  class-methods DISPLAY_ALV_OO .
  class-methods SEND_DATA_OO
    importing
      value(P_NODETABtype DATA
      !P_EVT_RIGHT_CLICK type XFELD optional
      !P_EVT_LEFT_CLICK_DESIGN type XFELD optional
      !P_EVT_MOVE_CONTROL type XFELD optional
      !P_EVT_SIZE_CONTROL type XFELD optional
      !P_EVT_LEFT_CLICK_RUN type XFELD optional
      !P_EVT_ONF1 type XFELD optional
      !P_EVT_ONF4 type XFELD optional
      !P_EVT_DATA_CHANGED type XFELD optional
      !P_EVT_ONDROPGETFLAVOR type XFELD optional
      !P_EVT_ONDRAG type XFELD optional
      !P_EVT_ONDROP type XFELD optional
      !P_EVT_ONDROPCOMPLETE type XFELD optional
      !P_EVT_SUBTOTAL_TEXT type XFELD optional
      !P_EVT_BEFORE_USER_COMMAND type XFELD optional
      !P_EVT_USER_COMMAND type XFELD optional
      !P_EVT_AFTER_USER_COMMAND type XFELD optional
      !P_EVT_DOUBLE_CLICK type XFELD optional
      !P_EVT_DELAYED_CALLBACK type XFELD optional
      !P_EVT_DELAYED_CHANGED_SEL_CALL type XFELD optional
      !P_EVT_PRINT_TOP_OF_PAGE type XFELD optional
      !P_EVT_PRINT_TOP_OF_LIST type XFELD optional
      !P_EVT_PRINT_END_OF_PAGE type XFELD optional
      !P_EVT_PRINT_END_OF_LIST type XFELD optional
      !P_EVT_TOP_OF_PAGE type XFELD optional
      !P_EVT_CONTEXT_MENU_REQUEST type XFELD optional
      !P_EVT_MENU_BUTTON type XFELD optional
      !P_EVT_TOOLBAR type XFELD optional
      !P_EVT_HOTSPOT_CLICK type XFELD optional
      !P_EVT_END_OF_LIST type XFELD optional
      !P_EVT_AFTER_REFRESH type XFELD optional
      !P_EVT_BUTTON_CLICK type XFELD optional
      !P_EVT_DATA_CHANGED_FINISHED type XFELD optional
      !P_EVT_EVT_DELAYED_CHANGE_SELEC type XFELD optional
      !P_EVT_EVT_DELAYED_MOVE_CURR_CE type XFELD optional
      !P_EVT_EVT_ENTER type XFELD optional
      !P_EVT_EVT_MODIFIED type XFELD optional .
  class-methods DEFINE_EVENTS_OO
    importing
      !P_RIGHT_CLICK type XFELD optional
      !P_LEFT_CLICK_DESIGN type XFELD optional
      !P_MOVE_CONTROL type XFELD optional
      !P_SIZE_CONTROL type XFELD optional
      !P_LEFT_CLICK_RUN type XFELD optional
      !P_ONF1 type XFELD optional
      !P_ONF4 type XFELD optional
      !P_DATA_CHANGED type XFELD optional
      !P_ONDROPGETFLAVOR type XFELD optional
      !P_ONDRAG type XFELD optional
      !P_ONDROP type XFELD optional
      !P_ONDROPCOMPLETE type XFELD optional
      !P_SUBTOTAL_TEXT type XFELD optional
      !P_BEFORE_USER_COMMAND type XFELD optional
      !P_USER_COMMAND type XFELD optional
      !P_AFTER_USER_COMMAND type XFELD optional
      !P_DOUBLE_CLICK type XFELD optional
      !P_DELAYED_CALLBACK type XFELD optional
      !P_DELAYED_CHANGED_SEL_CALLBACK type XFELD optional
      !P_PRINT_TOP_OF_PAGE type XFELD optional
      !P_PRINT_TOP_OF_LIST type XFELD optional
      !P_PRINT_END_OF_PAGE type XFELD optional
      !P_PRINT_END_OF_LIST type XFELD optional
      !P_TOP_OF_PAGE type XFELD optional
      !P_CONTEXT_MENU_REQUEST type XFELD optional
      !P_MENU_BUTTON type XFELD optional
      !P_TOOLBAR type XFELD optional
      !P_HOTSPOT_CLICK type XFELD optional
      !P_END_OF_LIST type XFELD optional
      !P_AFTER_REFRESH type XFELD optional
      !P_BUTTON_CLICK type XFELD optional
      !P_DATA_CHANGED_FINISHED type XFELD optional
      !P_EVT_DELAYED_CHANGE_SELECT type XFELD optional
      !P_EVT_DELAYED_MOVE_CURR_CELL type XFELD optional
      !P_EVT_ENTER type XFELD optional
      !P_EVT_MODIFIED type XFELD optional .
  class-methods FREE_PROGRAM_OO .
  class-methods CHANGE_ICON_OO
    importing
      !P_TEXT type STRING
    changing
      !P_ITEM_IMAGE type TV_IMAGE .
  class-methods CHARGE_STRUCTURES_ALV_OO
    importing
      !P_ALV_I_BUFFER_ACTIVE type ANY optional
      !P_ALV_I_BYPASSING_BUFFER type CHAR01 optional
      !P_ALV_I_CONSISTENCY_CHECK type CHAR1 optional
      !P_ALV_IS_VARIANT_REPORT type REPID optional
      !P_ALV_IS_VARIANT_HANDLE type SLIS_HANDL optional
      !P_ALV_IS_VARIANT_LOG_GROUP type SLIS_LOGGR optional
      !P_ALV_IS_VARIANT_USERNAME type SLIS_USER optional
      !P_ALV_IS_VARIANT_VARIANT type SLIS_VARI optional
      !P_ALV_IS_VARIANT_TEXT type SLIS_VARBZ optional
      !P_ALV_IS_VARIANT_DEPENDVARS type SLIS_DEPVS optional
      !P_ALV_I_SAVE type CHAR01 optional
      !P_ALV_I_DEFAULT type CHAR01 default 'X'
      !P_ALV_IS_LAYOUT_ZEBRA type LVC_ZEBRA optional
      !P_ALV_IS_LAYOUT_EDIT type LVC_EDIT optional
      !P_ALV_IS_LAYOUT_EDIT_MODE type LVC_EDMO optional
      !P_ALV_IS_LAYOUT_NO_KEYFIX type LVC_NOKFIX optional
      !P_ALV_IS_LAYOUT_FRONTEND type LVC_FRONT optional
      !P_ALV_IS_LAYOUT_OBJECT_KEY type BDS_TYPEID optional
      !P_ALV_IS_LAYOUT_DOC_ID type BDS_DOCID optional
      !P_ALV_IS_LAYOUT_TEMPLATE type BDS_FILENA optional
      !P_ALV_IS_LAYOUT_LANGUAGE type LANG optional
      !P_ALV_IS_LAYOUT_GRAPHICS type GUID_32 optional
      !P_ALV_IS_LAYOUT_SMALLTITLE type LVC_TITSZ optional
      !P_ALV_IS_LAYOUT_NO_HGRIDLN type LVC_HGRID optional
      !P_ALV_IS_LAYOUT_NO_VGRIDLN type LVC_VGRID optional
      !P_ALV_IS_LAYOUT_NO_HEADERS type LVC_HEADS optional
      !P_ALV_IS_LAYOUT_NO_MERGING type LVC_MERGE optional
      !P_ALV_IS_LAYOUT_CWIDTH_OPT type LVC_CWO optional
      !P_ALV_IS_LAYOUT_TOTALS_BEF type LVC_TOTBEF optional
      !P_ALV_IS_LAYOUT_NO_TOTARR type CHAR01 optional
      !P_ALV_IS_LAYOUT_NO_TOTEXP type CHAR01 optional
      !P_ALV_IS_LAYOUT_NO_ROWMOVE type CHAR01 optional
      !P_ALV_IS_LAYOUT_NO_ROWINS type CHAR01 optional
      !P_ALV_IS_LAYOUT_NO_COLEXPD type CHAR01 optional
      !P_ALV_IS_LAYOUT_NO_F4 type CHAR01 optional
      !P_ALV_IS_LAYOUT_COUNTFNAME type LVC_FNAME optional
      !P_ALV_IS_LAYOUT_COL_OPT type CHAR01 optional
      !P_ALV_IS_LAYOUT_VAL_DATA type CHAR01 optional
      !P_ALV_IS_LAYOUT_STYLEFNAME type LVC_FNAME optional
      !P_ALV_IS_LAYOUT_NO_ROWMARK type LVC_ROWMK optional
      !P_ALV_IS_LAYOUT_NO_TOOLBAR type LVC_TOOLB optional
      !P_ALV_IS_LAYOUT_GRID_TITLE type LVC_TITLE optional
      !P_ALV_IS_LAYOUT_SEL_MODE type LVC_LIBOX optional
      !P_ALV_IS_LAYOUT_BOX_FNAME type LVC_FNAME optional
      !P_ALV_IS_LAYOUT_SGL_CLK_HD type LVC_SGLCLH optional
      !P_ALV_IS_LAYOUT_NO_TOTLINE type LVC_NOTOTL optional
      !P_ALV_IS_LAYOUT_NUMC_TOTAL type LVC_NUMCTO optional
      !P_ALV_IS_LAYOUT_NO_UTSPLIT type LVC_UNITSP optional
      !P_ALV_IS_LAYOUT_EXCP_FNAME type LVC_EXFNM optional
      !P_ALV_IS_LAYOUT_EXCP_ROLLN type LVC_EXROL optional
      !P_ALV_IS_LAYOUT_EXCP_CONDS type LVC_EXCON optional
      !P_ALV_IS_LAYOUT_EXCP_LED type LVC_EXLED optional
      !P_ALV_IS_LAYOUT_EXCP_GROUP type LVC_EXGRP optional
      !P_ALV_IS_LAYOUT_DETAILINIT type LVC_DETINI optional
      !P_ALV_IS_LAYOUT_DETAILTITL type LVC_DETTIT optional
      !P_ALV_IS_LAYOUT_KEYHOT type LVC_KEYHOT optional
      !P_ALV_IS_LAYOUT_NO_AUTHOR type LVC_NOAUTH optional
      !P_ALV_IS_LAYOUT_XIFUNCKEY type AQS_XIKEY optional
      !P_ALV_IS_LAYOUT_XIDIRECT type FLAG optional
      !P_ALV_IS_LAYOUT_S_DRAGDROP type LVC_S_DD01 optional
      !P_ALV_IS_LAYOUT_INFO_FNAME type LVC_CIFNM optional
      !P_ALV_IS_LAYOUT_CTAB_FNAME type LVC_CTFNM optional
      !P_ALV_IS_LAYOUT_WEBLOOK type LVC_LOOK optional
      !P_ALV_IS_LAYOUT_WEBSTYLE type LVC_STYLE optional
      !P_ALV_IS_LAYOUT_WEBROWS type LVC_WEBROW optional
      !P_ALV_IS_LAYOUT_WEBXWIDTH type INT4 optional
      !P_ALV_IS_LAYOUT_WEBXHEIGHT type INT4 optional
      !P_ALV_IS_PRINT_PRINT type CHAR1 optional
      !P_ALV_IS_PRINT_PRNT_TITLE type CHAR1 optional
      !P_ALV_IS_PRINT_FOOTLINE type LVC_FOOTL optional
      !P_ALV_IS_PRINT_PRNT_INFO type CHAR1 optional
      !P_ALV_IS_PRINT_RESERVELNS type LVC_RSVLN optional
      !P_ALV_IS_PRINT_GRPCHGEDIT type LVC_GCEDIT optional
      !P_ALV_IS_PRINT_PRNTLSTINF type LVC_LIINFO optional
      !P_ALV_IS_PRINT_PRNTSELINF type LVC_SLINFO optional
      !P_ALV_IS_PRINT_NO_COLWOPT type LVC_COLWOP optional
      !P_ALV_IS_PRINT_PRINT_CTRL type ALV_S_PCTL optional
      !P_ALV_IR_SALV_ADAPTER type ref to IF_SALV_ADAPTER optional .
  class-methods CHARGE_T_ALV_SPECIAL_GROUPS_OO
    importing
      !P_SP_GROUP type LVC_SPGRP optional
      !P_TEXT type LVC_TEXT optional .
  class-methods CHARGE_T_ALV_HYPERLINK_OO
    importing
      !P_HANDLE type INT4 optional
      !P_HREF type SERVICE_RL optional .
  class-methods CHARGE_T_ALV_GRAPHICS_OO
    importing
      !P_PROP_ID type GFWCUATT optional
      !P_PROP_VAL type GFWCUVAC optional .
  class-methods CHARGE_T_ALV_EXCEPT_QINFO_OO
    importing
      !P_TYPE type CHAR01 optional
      !P_EXCP_GROUP type LVC_EXGRP optional
      !P_FIELDNAME type LVC_FNAME optional
      !P_TABNAME type LVC_TNAME optional
      !P_VALUE type TEXT80 optional
      !P_TEXT type TEXT80 optional .
  class-methods CHARGE_T_ALV_SORT_OO
    importing
      !P_SPOS type SLIS_SPOS optional
      !P_FIELDNAME type LVC_FNAME optional
      !P_UP type CHAR1 optional
      !P_DOWN type CHAR1 optional
      !P_GROUP type SLIS_CTRLS optional
      !P_SUBTOT type SLIS_DOSUB optional
      !P_COMP type CHAR1 optional
      !P_EXPA type CHAR1 optional
      !P_SELTEXT type SLIS_SCRIT optional
      !P_OBLIGATORY type CHAR1 optional
      !P_LEVEL type INT4 optional
      !P_NO_OUT type CHAR1 optional
      !P_INTOPT type LVCIFLAG optional .
  class-methods CHARGE_T_ALV_FILTER_OO
    importing
      !P_FIELDNAME type LVC_FNAME optional
      !P_TABNAME type LVC_RTNAME optional
      !P_SELTEXT type LVC_TXT optional
      !P_VALUF type TEXT80 optional
      !P_VALUT type TEXT80 optional
      !P_SIGN_ICON type CHAR4 optional
      !P_STYPE type CHAR1 optional
      !P_DECIMALS type DECIMALS optional
      !P_INTLEN type INTLEN optional
      !P_CONVEXIT type CONVEXIT optional
      !P_EDIT_MASK type LVC_EDTMSK optional
      !P_LOWERCASE type LOWERCASE optional
      !P_INTTYPE type INTTYPE optional
      !P_DATATYPE type DATATYPE_D optional
      !P_EXCEPTION type CHAR1 optional
      !P_NO_SIGN type LVC_NOSIGN optional
      !P_OR type CHAR1 optional
      !P_ORDER type ORDER optional
      !P_REF_FIELD type LVC_RFNAME optional
      !P_REF_TABLE type LVC_RTNAME optional
      !P_C_FIELD type LVC_FNAME optional
      !P_C_TAB type LVC_TNAME optional
      !P_C_VALUE type CHAR5 optional
      !P_FLG_CQ type CHAR1 optional
      !P_LOW type TEXT80 optional
      !P_HIGH type TEXT80 optional
      !P_SIGN type CHAR1 optional
      !P_OPTION type CHAR2 optional
      !P_DD_OUTLEN type LVC_DDLEN optional .
  class-methods CHARGE_T_DROPDOWN_OO
    importing
      !P_HANDLE type INT4 optional
      !P_VALUE type LVC_VALUE optional .
  class-methods SET_T_DROPDOWN_OO .
  class-methods SET_READY_FOR_INPUT_OO
    importing
      !P_VAL type INT4 default .
  class-methods REFRESH_TABLE_DISPLAY_OO .
  class-methods INIT_ALV
    importing
      value(P_PROGRAMtype PROGNAME
      value(P_STRUCTUREtype DD02L-TABNAME
      !P_HIDE_MC_FC_AUF type XFELD optional
      !P_HIDE_MC_FC_AVERAGE type XFELD optional
      !P_HIDE_MC_FC_BACK_CLASSIC type XFELD optional
      !P_HIDE_MC_FC_CALL_ABC type XFELD optional
      !P_HIDE_MC_FC_CALL_CHAIN type XFELD optional
      !P_HIDE_MC_FC_CALL_CRBATCH type XFELD optional
      !P_HIDE_MC_FC_CALL_CRWEB type XFELD optional
      !P_HIDE_MC_FC_CALL_LINEITEMS type XFELD optional
      !P_HIDE_MC_FC_CALL_MASTER_DATA type XFELD optional
      !P_HIDE_MC_FC_CALL_MORE type XFELD optional
      !P_HIDE_MC_FC_CALL_REPORT type XFELD optional
      !P_HIDE_MC_FC_CALL_XINT type XFELD optional
      !P_HIDE_MC_FC_CALL_XXL type XFELD optional
      !P_HIDE_MC_FC_CHECK type XFELD optional
      !P_HIDE_MC_FC_COL_INVISIBLE type XFELD optional
      !P_HIDE_MC_FC_COL_OPTIMIZE type XFELD optional
      !P_HIDE_MC_FC_COUNT type XFELD optional
      !P_HIDE_MC_FC_CURRENT_VARIANT type XFELD optional
      !P_HIDE_MC_FC_DATA_SAVE type XFELD optional
      !P_HIDE_MC_FC_DELETE_FILTER type XFELD optional
      !P_HIDE_MC_FC_DESELECT_ALL type XFELD optional
      !P_HIDE_MC_FC_DETAIL type XFELD optional
      !P_HIDE_MC_FC_EXCL_ALL type XFELD optional
      !P_HIDE_MC_FC_EXPCRDATA type XFELD optional
      !P_HIDE_MC_FC_EXPCRDESIG type XFELD optional
      !P_HIDE_MC_FC_EXPCRTEMPL type XFELD optional
      !P_HIDE_MC_FC_EXPMDB type XFELD optional
      !P_HIDE_MC_FC_EXTEND type XFELD optional
      !P_HIDE_MC_FC_F4 type XFELD optional
      !P_HIDE_MC_FC_FILTER type XFELD optional
      !P_HIDE_MC_FC_FIND type XFELD optional
      !P_HIDE_MC_FC_FIX_COLUMNS type XFELD optional
      !P_HIDE_MC_FC_GRAPH type XFELD optional
      !P_HIDE_MC_FC_HELP type XFELD optional
      !P_HIDE_MC_FC_HTML type XFELD optional
      !P_HIDE_MC_FC_INFO type XFELD optional
      !P_HIDE_MC_FC_LOAD_VARIANT type XFELD optional
      !P_HIDE_MC_FC_LOC_APPEND_ROW type XFELD optional
      !P_HIDE_MC_FC_LOC_COPY type XFELD optional
      !P_HIDE_MC_FC_LOC_COPY_ROW type XFELD optional
      !P_HIDE_MC_FC_LOC_CUT type XFELD optional
      !P_HIDE_MC_FC_LOC_DELETE_ROW type XFELD optional
      !P_HIDE_MC_FC_LOC_INSERT_ROW type XFELD optional
      !P_HIDE_MC_FC_LOC_MOVE_ROW type XFELD optional
      !P_HIDE_MC_FC_LOC_PASTE type XFELD optional
      !P_HIDE_MC_FC_LOC_PASTE_NEW_ROW type XFELD optional
      !P_HIDE_MC_FC_LOC_UNDO type XFELD optional
      !P_HIDE_MC_FC_MAINTAIN_VARIANT type XFELD optional
      !P_HIDE_MC_FC_MAXIMUM type XFELD optional
      !P_HIDE_MC_FC_MINIMUM type XFELD optional
      !P_HIDE_MC_FC_PC_FILE type XFELD optional
      !P_HIDE_MC_FC_PRINT type XFELD optional
      !P_HIDE_MC_FC_PRINT_BACK type XFELD optional
      !P_HIDE_MC_FC_PRINT_PREV type XFELD optional
      !P_HIDE_MC_FC_REFRESH type XFELD optional
      !P_HIDE_MC_FC_REPREP type XFELD optional
      !P_HIDE_MC_FC_SAVE_VARIANT type XFELD optional
      !P_HIDE_MC_FC_SELECT_ALL type XFELD optional
      !P_HIDE_MC_FC_SEND type XFELD optional
      !P_HIDE_MC_FC_SEPARATOR type XFELD optional
      !P_HIDE_MC_FC_SORT type XFELD optional
      !P_HIDE_MC_FC_SORT_ASC type XFELD optional
      !P_HIDE_MC_FC_SORT_DSC type XFELD optional
      !P_HIDE_MC_FC_SUBTOT type XFELD optional
      !P_HIDE_MC_FC_SUM type XFELD optional
      !P_HIDE_MC_FC_TO_OFFICE type XFELD optional
      !P_HIDE_MC_FC_TO_REP_TREE type XFELD optional
      !P_HIDE_MC_FC_UNFIX_COLUMNS type XFELD optional
      !P_HIDE_MC_FC_URL_COPY_TO_CLIPB type XFELD optional
      !P_HIDE_MC_FC_VARIANT_ADMIN type XFELD optional
      !P_HIDE_MC_FC_VIEWS type XFELD optional
      !P_HIDE_MC_FC_VIEW_CRYSTAL type XFELD optional
      !P_HIDE_MC_FC_VIEW_EXCEL type XFELD optional
      !P_HIDE_MC_FC_VIEW_GRID type XFELD optional
      !P_HIDE_MC_FC_VIEW_LOTUS type XFELD optional
      !P_HIDE_MC_FC_WORD_PROCESSOR type XFELD optional .
  class-methods BUILD_ALV
    importing
      !P_PROGR type PROGNAME .
  class-methods BUILD_FIELDCATALOG
    importing
      !P_STRUCTURE_NAME type DD02L-TABNAME
    exporting
      !P_FIELDCAT type SLIS_T_FIELDCAT_ALV .
  class-methods SEND_DATA
    importing
      value(P_NODETABtype DATA .
  class-methods DISPLAY_ALV .
  class-methods CHARGE_STRUCTURES_ALV
    importing
      !P_I_INTERFACE_CHECK type optional
      !P_I_BYPASSING_BUFFER type CHAR01 optional
      !P_I_BUFFER_ACTIVE type optional
      !P_I_CALLBACK_PROGRAM type SY-REPID optional
      !P_I_CALLBACK_PF_STATUS_SET type SLIS_FORMNAME optional
      !P_I_CALLBACK_USER_COMMAND type SLIS_FORMNAME optional
      !P_I_CALLBACK_TOP_OF_PAGE type SLIS_FORMNAME optional
      !P_I_CALLBACK_HTML_TOP_OF_PAGE type SLIS_FORMNAME optional
      !P_I_CALLBACK_HTML_END_OF_LIST type SLIS_FORMNAME optional
      !P_I_STRUCTURE_NAME type DD02L-TABNAME optional
      !P_I_BACKGROUND_ID type SDYDO_KEY optional
      !P_I_GRID_TITLE type LVC_TITLE optional
      !P_I_GRID_SETTINGS type LVC_S_GLAY optional
      !P_LAYOUT_DUMMY type optional
      !P_LAYOUT_NO_COLHEAD type optional
      !P_LAYOUT_NO_HOTSPOT type optional
      !P_LAYOUT_ZEBRA type optional
      !P_LAYOUT_NO_VLINE type optional
      !P_LAYOUT_NO_HLINE type optional
      !P_LAYOUT_CELL_MERGE type optional
      !P_LAYOUT_EDIT type optional
      !P_LAYOUT_EDIT_MODE type optional
      !P_LAYOUT_NUMC_SUM type optional
      !P_LAYOUT_NO_INPUT type optional
      !P_LAYOUT_F2CODE type SY-UCOMM optional
      !P_LAYOUT_REPREP type optional
      !P_LAYOUT_NO_KEYFIX type optional
      !P_LAYOUT_EXPAND_ALL type optional
      !P_LAYOUT_NO_AUTHOR type optional
      !P_LAYOUT_DEF_STATUS type optional
      !P_LAYOUT_ITEM_TEXT type CHAR20 optional
      !P_LAYOUT_COUNTFNAME type LVC_FNAME optional
      !P_LAYOUT_COLWIDTH_OPTIMIZE type optional
      !P_LAYOUT_NO_MIN_LINESIZE type optional
      !P_LAYOUT_MIN_LINESIZE type SY-LINSZ optional
      !P_LAYOUT_MAX_LINESIZE type SY-LINSZ optional
      !P_LAYOUT_WINDOW_TITLEBAR type SY-TITLE optional
      !P_LAYOUT_NO_ULINE_HS type optional
      !P_LAYOUT_LIGHTS_FIELDNAME type SLIS_FIELDNAME optional
      !P_LAYOUT_LIGHTS_TABNAME type SLIS_TABNAME optional
      !P_LAYOUT_LIGHTS_ROLLNAME type DFIES-ROLLNAME optional
      !P_LAYOUT_LIGHTS_CONDENSE type optional
      !P_LAYOUT_NO_SUMCHOICE type optional
      !P_LAYOUT_NO_TOTALLINE type optional
      !P_LAYOUT_NO_SUBCHOICE type optional
      !P_LAYOUT_NO_SUBTOTALS type optional
      !P_LAYOUT_NO_UNIT_SPLITTING type optional
      !P_LAYOUT_TOTALS_BEFORE_ITEMS type optional
      !P_LAYOUT_TOTALS_ONLY type optional
      !P_LAYOUT_TOTALS_TEXT type ZECHAR60 optional
      !P_LAYOUT_SUBTOTALS_TEXT type ZECHAR60 optional
      !P_LAYOUT_BOX_FIELDNAME type SLIS_FIELDNAME optional
      !P_LAYOUT_BOX_TABNAME type SLIS_TABNAME optional
      !P_LAYOUT_BOX_ROLLNAME type DD03P-ROLLNAME optional
      !P_LAYOUT_EXPAND_FIELDNAME type SLIS_FIELDNAME optional
      !P_LAYOUT_HOTSPOT_FIELDNAME type SLIS_FIELDNAME optional
      !P_LAYOUT_CONFIRMATION_PROMPT type optional
      !P_LAYOUT_KEY_HOTSPOT type optional
      !P_LAYOUT_FLEXIBLE_KEY type optional
      !P_LAYOUT_GROUP_BUTTONS type optional
      !P_LAYOUT_GET_SELINFOS type optional
      !P_LAYOUT_GROUP_CHANGE_EDIT type optional
      !P_LAYOUT_NO_SCROLLING type optional
      !P_LAYOUT_DETAIL_POPUP type optional
      !P_LAYOUT_DETAIL_INITIAL_LINES type optional
      !P_LAYOUT_DETAIL_TITLEBAR type SY-TITLE optional
      !P_LAYOUT_HEADER_TEXT type CHAR20 optional
      !P_LAYOUT_DEFAULT_ITEM type optional
      !P_LAYOUT_INFO_FIELDNAME type SLIS_FIELDNAME optional
      !P_LAYOUT_COLTAB_FIELDNAME type SLIS_FIELDNAME optional
      !P_LAYOUT_LIST_APPEND type optional
      !P_LAYOUT_XIFUNCKEY type AQS_XIKEY optional
      !P_LAYOUT_XIDIRECT type FLAG optional
      !P_LAYOUT_DTC_LAYOUT type DTC_S_LAYO optional
      !P_LAYOUT_ALLOW_SWITCH_TO_LIST type optional
      !P_HIDE_MODE type optional
      !P_HIDE_T_ENTRIES type SLIS_T_SELENTRY_HIDE_ALV optional
      !P_I_DEFAULT type optional
      !P_I_SAVE type optional
      !P_VARIANT_REPORT type REPID optional
      !P_VARIANT_HANDLE type SLIS_HANDL optional
      !P_VARIANT_LOG_GROUP type SLIS_LOGGR optional
      !P_VARIANT_USERNAME type SLIS_USER optional
      !P_VARIANT_VARIANT type SLIS_VARI optional
      !P_VARIANT_TEXT type SLIS_VARBZ optional
      !P_VARIANT_DEPENDVARS type SLIS_DEPVS optional
      !P_PRINT_PRINT type CHAR1 optional
      !P_PRINT_PRNT_TITLE type CHAR1 optional
      !P_PRINT_FOOTLINE type LVC_FOOTL optional
      !P_PRINT_PRNT_INFO type CHAR1 optional
      !P_PRINT_NO_PRINT_SELINFOS type optional
      !P_PRINT_NO_COVERPAGE type optional
      !P_PRINT_NO_NEW_PAGE type optional
      !P_PRINT_RESERVE_LINES type optional
      !P_PRINT_NO_PRINT_LISTINFOS type optional
      !P_PRINT_NO_CHANGE_PRINT_PARAMS type optional
      !P_PRINT_NO_PRINT_HIERSEQ_ITEM type optional
      !P_PRINT_PRINT_CTRL type ALV_S_PCTL optional
      !P_REPREPID_TOOL type CHAR2 optional
      !P_REPREPID_APPL type CHAR4 optional
      !P_REPREPID_SUBC type CHAR2 optional
      !P_REPREPID_ONAM type ZECHAR54 optional
      !P_I_SCREEN_START_COLUMN type optional
      !P_I_SCREEN_START_LINE type optional
      !P_I_SCREEN_END_COLUMN type optional
      !P_I_SCREEN_END_LINE type optional
      !P_I_HTML_HEIGHT_TOP type optional
      !P_I_HTML_HEIGHT_END type optional
      !P_IR_SALV_FULLSCREEN_ADAPTER type ref to CL_SALV_FULLSCREEN_ADAPTER optional .
  class-methods CHARGE_T_SPECIAL_GROUPS
    importing
      !P_SP_GROUP type CHAR4 optional
      !P_TEXT type CHAR40 optional .
  class-methods CHARGE_T_SORT
    importing
      !P_SPOS type ALVDYNP-SORTPOS optional
      !P_FIELDNAME type SLIS_FIELDNAME optional
      !P_TABNAME type SLIS_FIELDNAME optional
      !P_UP type ALVDYNP-SORTUP optional
      !P_DOWN type ALVDYNP-SORTDOWN optional
      !P_GROUP type ALVDYNP-GROUPLEVEL optional
      !P_SUBTOT type ALVDYNP-SUBTOTALS optional
      !P_COMP type optional
      !P_EXPA type optional
      !P_OBLIGATORY type optional .
  class-methods CHARGE_T_FILTER
    importing
      !P_FIELDNAME type SLIS_FIELDNAME optional
      !P_TABNAME type SLIS_TABNAME optional
      !P_SELTEXT type CHAR40 optional
      !P_VALUF type CHAR80 optional
      !P_VALUT type CHAR80 optional
      !P_VALUF_INT type CHAR80 optional
      !P_VALUT_INT type CHAR80 optional
      !P_SIGN0 type optional
      !P_SIGN_ICON type CHAR4 optional
      !P_OPTIO type CHAR2 optional
      !P_STYPE type optional
      !P_DECIMALS type DFIES-DECIMALS optional
      !P_INTLEN type DFIES-INTLEN optional
      !P_CONVEXIT type DFIES-CONVEXIT optional
      !P_EDIT_MASK type SLIS_EDIT_MASK optional
      !P_LOWERCASE type DFIES-LOWERCASE optional
      !P_INTTYPE type DFIES-INTTYPE optional
      !P_DATATYPE type DFIES-DATATYPE optional
      !P_EXCEPTION type optional
      !P_NO_SIGN type optional
      !P_OR type optional
      !P_ORDER type ORDER optional
      !P_CQVALUE type optional
      !P_REF_FIELDNAME type DFIES-FIELDNAME optional
      !P_REF_TABNAME type DFIES-TABNAME optional
      !P_DDIC_OUTPUTLEN type DFIES-OUTPUTLEN optional .
  class-methods CHARGE_T_EVENTS
    importing
      !P_NAME type CHAR30 optional
      !P_FORM type CHAR30 optional .
  class-methods CHARGE_T_EVENTS_EXITS
    importing
      !P_UCOMM type SY-UCOMM optional
      !P_BEFORE type optional
      !P_AFTER type optional .
  class-methods CHARGE_T_GRAPHIC
    importing
      !P_PROP_ID type GFWCUATT optional
      !P_PROP_VAL type GFWCUVAC optional .
  class-methods DEFINE_EVENTS
    importing
      !P_ITEM_DATA_EXPAND type XFELD optional
      !P_REPREP_SEL_MODIFY type XFELD optional
      !P_CALLER_EXIT type XFELD optional
      !P_USER_COMMAND type XFELD optional
      !P_TOP_OF_PAGE type XFELD optional
      !P_DATA_CHANGED type XFELD optional
      !P_TOP_OF_COVERPAGE type XFELD optional
      !P_END_OF_COVERPAGE type XFELD optional
      !P_FOREIGN_TOP_OF_PAGE type XFELD optional
      !P_FOREIGN_END_OF_PAGE type XFELD optional
      !P_PF_STATUS_SET type XFELD optional
      !P_LIST_MODIFY type XFELD optional
      !P_TOP_OF_LIST type XFELD optional
      !P_END_OF_PAGE type XFELD optional
      !P_END_OF_LIST type XFELD optional
      !P_AFTER_LINE_OUTPUT type XFELD optional
      !P_BEFORE_LINE_OUTPUT type XFELD optional
      !P_SUBTOTAL_TEXT type XFELD optional
      !P_GROUPLEVEL_CHANGE type XFELD optional
      !P_CONTEXT_MENU type XFELD optional .
  class-methods HIDE_FUNCTIONS
    importing
      !P_MC_FC_AUF type XFELD optional
      !P_MC_FC_AVERAGE type XFELD optional
      !P_MC_FC_BACK_CLASSIC type XFELD optional
      !P_MC_FC_CALL_ABC type XFELD optional
      !P_MC_FC_CALL_CHAIN type XFELD optional
      !P_MC_FC_CALL_CRBATCH type XFELD optional
      !P_MC_FC_CALL_CRWEB type XFELD optional
      !P_MC_FC_CALL_LINEITEMS type XFELD optional
      !P_MC_FC_CALL_MASTER_DATA type XFELD optional
      !P_MC_FC_CALL_MORE type XFELD optional
      !P_MC_FC_CALL_REPORT type XFELD optional
      !P_MC_FC_CALL_XINT type XFELD optional
      !P_MC_FC_CALL_XXL type XFELD optional
      !P_MC_FC_CHECK type XFELD optional
      !P_MC_FC_COL_INVISIBLE type XFELD optional
      !P_MC_FC_COL_OPTIMIZE type XFELD optional
      !P_MC_FC_COUNT type XFELD optional
      !P_MC_FC_CURRENT_VARIANT type XFELD optional
      !P_MC_FC_DATA_SAVE type XFELD optional
      !P_MC_FC_DELETE_FILTER type XFELD optional
      !P_MC_FC_DESELECT_ALL type XFELD optional
      !P_MC_FC_DETAIL type XFELD optional
      !P_MC_FC_EXCL_ALL type XFELD optional
      !P_MC_FC_EXPCRDATA type XFELD optional
      !P_MC_FC_EXPCRDESIG type XFELD optional
      !P_MC_FC_EXPCRTEMPL type XFELD optional
      !P_MC_FC_EXPMDB type XFELD optional
      !P_MC_FC_EXTEND type XFELD optional
      !P_MC_FC_F4 type XFELD optional
      !P_MC_FC_FILTER type XFELD optional
      !P_MC_FC_FIND type XFELD optional
      !P_MC_FC_FIX_COLUMNS type XFELD optional
      !P_MC_FC_GRAPH type XFELD optional
      !P_MC_FC_HELP type XFELD optional
      !P_MC_FC_HTML type XFELD optional
      !P_MC_FC_INFO type XFELD optional
      !P_MC_FC_LOAD_VARIANT type XFELD optional
      !P_MC_FC_LOC_APPEND_ROW type XFELD optional
      !P_MC_FC_LOC_COPY type XFELD optional
      !P_MC_FC_LOC_COPY_ROW type XFELD optional
      !P_MC_FC_LOC_CUT type XFELD optional
      !P_MC_FC_LOC_DELETE_ROW type XFELD optional
      !P_MC_FC_LOC_INSERT_ROW type XFELD optional
      !P_MC_FC_LOC_MOVE_ROW type XFELD optional
      !P_MC_FC_LOC_PASTE type XFELD optional
      !P_MC_FC_LOC_PASTE_NEW_ROW type XFELD optional
      !P_MC_FC_LOC_UNDO type XFELD optional
      !P_MC_FC_MAINTAIN_VARIANT type XFELD optional
      !P_MC_FC_MAXIMUM type XFELD optional
      !P_MC_FC_MINIMUM type XFELD optional
      !P_MC_FC_PC_FILE type XFELD optional
      !P_MC_FC_PRINT type XFELD optional
      !P_MC_FC_PRINT_BACK type XFELD optional
      !P_MC_FC_PRINT_PREV type XFELD optional
      !P_MC_FC_REFRESH type XFELD optional
      !P_MC_FC_REPREP type XFELD optional
      !P_MC_FC_SAVE_VARIANT type XFELD optional
      !P_MC_FC_SELECT_ALL type XFELD optional
      !P_MC_FC_SEND type XFELD optional
      !P_MC_FC_SEPARATOR type XFELD optional
      !P_MC_FC_SORT type XFELD optional
      !P_MC_FC_SORT_ASC type XFELD optional
      !P_MC_FC_SORT_DSC type XFELD optional
      !P_MC_FC_SUBTOT type XFELD optional
      !P_MC_FC_SUM type XFELD optional
      !P_MC_FC_TO_OFFICE type XFELD optional
      !P_MC_FC_TO_REP_TREE type XFELD optional
      !P_MC_FC_UNFIX_COLUMNS type XFELD optional
      !P_MC_FC_URL_COPY_TO_CLIPBOARD type XFELD optional
      !P_MC_FC_VARIANT_ADMIN type XFELD optional
      !P_MC_FC_VIEWS type XFELD optional
      !P_MC_FC_VIEW_CRYSTAL type XFELD optional
      !P_MC_FC_VIEW_EXCEL type XFELD optional
      !P_MC_FC_VIEW_GRID type XFELD optional
      !P_MC_FC_VIEW_LOTUS type XFELD optional
      !P_MC_FC_WORD_PROCESSOR type XFELD optional .
  class-methods CHANGE_ICON
    importing
      !P_TEXT type STRING optional
      !P_TEXT2 type STRING optional
    changing
      !P_ITEM_IMAGE type TV_IMAGE .
  class-methods BUILD_VARIANT
    changing
      !P_I_SAVE type C
      !P_VARIANT type DISVARIANT .
  class-methods INITIALIZE .

-------------------------------------------------------
Ahora definimos cada método:

METHOD INIT_ALV_OO.

  DATAl_tree_container_name(30TYPE c.
  DATAat_toolbar_excl TYPE ui_functions.

  l_tree_container_name p_container.
  CLEAR at_toolbar_excl.

* creo el contenedor del árbol

  CREATE OBJECT ao_container_oo
      EXPORTING
            container_name l_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 ID 'ZHRMSG' TYPE 'E' NUMBER 074.
  ENDIF.

** creo el árbol

  CREATE OBJECT ao_alv_oo
    EXPORTING
        i_parent              ao_container_oo
    EXCEPTIONS
        error_cntl_create 1
        error_cntl_init 2
        error_cntl_link 3
        error_dp_create 4.

  IF sy-subrc <> 0.
    MESSAGE ID 'ZHRMSG' TYPE 'E' NUMBER 074.
  ENDIF.

  CALL METHOD ao_alv_oo->get_name_program
    EXPORTING
      p_programa p_program.

  CALL METHOD ZCL_ALV_GRID_MAINP=>build_alv_oo
    EXPORTING
      p_progr p_program.

  ap_i_struct_name_oo p_structure.
  ap_i_struct_name_graphic_oo p_structure.

  CALL METHOD ZCL_ALV_GRID_MAINP=>build_fieldcatalog_oo
    EXPORTING
      p_structure_name p_structure
    IMPORTING
      p_fieldcat       at_fieldcatalog_oo.

  CALL METHOD ZCL_ALV_GRID_MAINP=>hide_functions_oo
    EXPORTING
          p_mc_fc_auf  =  p_hide_mc_fc_auf
          p_mc_fc_average  =  p_hide_mc_fc_average
          p_mc_fc_back_classic  p_hide_mc_fc_back_classic
          p_mc_fc_call_abc  p_hide_mc_fc_call_abc
          p_mc_fc_call_chain  p_hide_mc_fc_call_chain
          p_mc_fc_call_crbatch  p_hide_mc_fc_call_crbatch
          p_mc_fc_call_crweb  p_hide_mc_fc_call_crweb
          p_mc_fc_call_lineitems  p_hide_mc_fc_call_lineitems
          p_mc_fc_call_master_data  p_hide_mc_fc_call_master_data
          p_mc_fc_call_more  =  p_hide_mc_fc_call_more
          p_mc_fc_call_report  =  p_hide_mc_fc_call_report
          p_mc_fc_call_xint  =  p_hide_mc_fc_call_xint
          p_mc_fc_call_xxl  p_hide_mc_fc_call_xxl
          p_mc_fc_check  =  p_hide_mc_fc_check
          p_mc_fc_col_invisible  =  p_hide_mc_fc_col_invisible
          p_mc_fc_col_optimize  p_hide_mc_fc_col_optimize
          p_mc_fc_count  =  p_hide_mc_fc_count
          p_mc_fc_current_variant  =  p_hide_mc_fc_current_variant
          p_mc_fc_data_save  =  p_hide_mc_fc_data_save
          p_mc_fc_delete_filter  =  p_hide_mc_fc_delete_filter
          p_mc_fc_deselect_all  p_hide_mc_fc_deselect_all
          p_mc_fc_detail  p_hide_mc_fc_detail
          p_mc_fc_excl_all  p_hide_mc_fc_excl_all
          p_mc_fc_expcrdata  =  p_hide_mc_fc_expcrdata
          p_mc_fc_expcrdesig  p_hide_mc_fc_expcrdesig
          p_mc_fc_expcrtempl  p_hide_mc_fc_expcrtempl
          p_mc_fc_expmdb  p_hide_mc_fc_expmdb
          p_mc_fc_extend  p_hide_mc_fc_extend
          p_mc_fc_f4  p_hide_mc_fc_f4
          p_mc_fc_filter  p_hide_mc_fc_filter
          p_mc_fc_find  p_hide_mc_fc_find
          p_mc_fc_fix_columns  =  p_hide_mc_fc_fix_columns
          p_mc_fc_graph  =  p_hide_mc_fc_graph
          p_mc_fc_help  p_hide_mc_fc_help
          p_mc_fc_html  p_hide_mc_fc_html
          p_mc_fc_info  p_hide_mc_fc_info
          p_mc_fc_load_variant  p_hide_mc_fc_load_variant
          p_mc_fc_loc_append_row  p_hide_mc_fc_loc_append_row
          p_mc_fc_loc_copy  p_hide_mc_fc_loc_copy
          p_mc_fc_loc_copy_row  p_hide_mc_fc_loc_copy_row
          p_mc_fc_loc_cut  =  p_hide_mc_fc_loc_cut
          p_mc_fc_loc_delete_row  p_hide_mc_fc_loc_delete_row
          p_mc_fc_loc_insert_row  p_hide_mc_fc_loc_insert_row
          p_mc_fc_loc_move_row  p_hide_mc_fc_loc_move_row
          p_mc_fc_loc_paste  =  p_hide_mc_fc_loc_paste
          p_mc_fc_loc_paste_new_row  =  p_hide_mc_fc_loc_paste_new_row
          p_mc_fc_loc_undo  p_hide_mc_fc_loc_undo
          p_mc_fc_maintain_variant  p_hide_mc_fc_maintain_variant
          p_mc_fc_maximum  =  p_hide_mc_fc_maximum
          p_mc_fc_minimum  =  p_hide_mc_fc_minimum
          p_mc_fc_pc_file  =  p_hide_mc_fc_pc_file
          p_mc_fc_print  =  p_hide_mc_fc_print
          p_mc_fc_print_back  p_hide_mc_fc_print_back
          p_mc_fc_print_prev  p_hide_mc_fc_print_prev
          p_mc_fc_refresh  =  p_hide_mc_fc_refresh
          p_mc_fc_reprep  p_hide_mc_fc_reprep
          p_mc_fc_save_variant  p_hide_mc_fc_save_variant
          p_mc_fc_select_all  p_hide_mc_fc_select_all
          p_mc_fc_send  p_hide_mc_fc_send
          p_mc_fc_separator  =  p_hide_mc_fc_separator
          p_mc_fc_sort  p_hide_mc_fc_sort
          p_mc_fc_sort_asc  p_hide_mc_fc_sort_asc
          p_mc_fc_sort_dsc  p_hide_mc_fc_sort_dsc
          p_mc_fc_subtot  p_hide_mc_fc_subtot
          p_mc_fc_sum  =  p_hide_mc_fc_sum
          p_mc_fc_to_office  =  p_hide_mc_fc_to_office
          p_mc_fc_to_rep_tree  =  p_hide_mc_fc_to_rep_tree
          p_mc_fc_unfix_columns  =  p_hide_mc_fc_unfix_columns
          p_mc_fc_url_copy_to_clipboard  =  p_hide_mc_fc_url_copy_to_clipb
          p_mc_fc_variant_admin  =  p_hide_mc_fc_variant_admin
          p_mc_fc_views  =  p_hide_mc_fc_views
          p_mc_fc_view_crystal  p_hide_mc_fc_view_crystal
          p_mc_fc_view_excel  p_hide_mc_fc_view_excel
          p_mc_fc_view_grid  =  p_hide_mc_fc_view_grid
          p_mc_fc_view_lotus  p_hide_mc_fc_view_lotus
          p_mc_fc_word_processor  p_hide_mc_fc_word_processor.

ENDMETHOD.                    "init_alv

METHOD BUILD_ALV_OO.

  ap_program_oo p_progr.

ENDMETHOD.

METHOD BUILD_FIELDCATALOG_OO.

  DATAlt_fieldcatalog TYPE lvc_t_fcat.
  FIELD-SYMBOLS<fs_fieldcat> TYPE lvc_s_fcat.

  CLEAR lt_fieldcatalog.
  REFRESH lt_fieldcatalog[].

  CALL FUNCTION 'LVC_FIELDCATALOG_MERGE'
    EXPORTING
      i_structure_name p_structure_name
    CHANGING
      ct_fieldcat      lt_fieldcatalog.

  p_fieldcat lt_fieldcatalog.

ENDMETHOD.

METHOD HIDE_FUNCTIONS_OO.

  IF p_mc_fc_auf 'X'.
    APPEND ao_alv_oo->mc_fc_auf TO at_toolbar_excl_oo.
  ENDIF.

  IF p_mc_fc_average 'X'.
    APPEND ao_alv_oo->mc_fc_average TO at_toolbar_excl_oo.
  ENDIF.

  IF p_mc_fc_back_classic 'X'.
    APPEND ao_alv_oo->mc_fc_back_classic TO at_toolbar_excl_oo.
  ENDIF.

  IF p_mc_fc_call_abc 'X'.
    APPEND ao_alv_oo->mc_fc_call_abc TO at_toolbar_excl_oo.
  ENDIF.

  IF p_mc_fc_call_chain 'X'.
    APPEND ao_alv_oo->mc_fc_call_chain TO at_toolbar_excl_oo.
  ENDIF.

  IF p_mc_fc_call_crbatch 'X'.
    APPEND ao_alv_oo->mc_fc_call_crbatch TO at_toolbar_excl_oo.
  ENDIF.

  IF p_mc_fc_call_crweb 'X'.
    APPEND ao_alv_oo->mc_fc_call_crweb TO at_toolbar_excl_oo.
  ENDIF.

  IF p_mc_fc_call_lineitems 'X'.
    APPEND ao_alv_oo->mc_fc_call_lineitems TO at_toolbar_excl_oo.
  ENDIF.

  IF p_mc_fc_call_master_data 'X'.
    APPEND ao_alv_oo->mc_fc_call_master_data TO at_toolbar_excl_oo.
  ENDIF.

  IF p_mc_fc_call_more 'X'.
    APPEND ao_alv_oo->mc_fc_call_more TO at_toolbar_excl_oo.
  ENDIF.

  IF p_mc_fc_call_report 'X'.
    APPEND ao_alv_oo->mc_fc_call_report TO at_toolbar_excl_oo.
  ENDIF.

  IF p_mc_fc_call_xint 'X'.
    APPEND ao_alv_oo->mc_fc_call_xint TO at_toolbar_excl_oo.
  ENDIF.

  IF p_mc_fc_call_xxl 'X'.
    APPEND ao_alv_oo->mc_fc_call_xxl TO at_toolbar_excl_oo.
  ENDIF.

  IF p_mc_fc_check 'X'.
    APPEND ao_alv_oo->mc_fc_check TO at_toolbar_excl_oo.
  ENDIF.

  IF p_mc_fc_col_invisible 'X'.
    APPEND ao_alv_oo->mc_fc_col_invisible TO at_toolbar_excl_oo.
  ENDIF.

  IF p_mc_fc_col_optimize 'X'.
    APPEND ao_alv_oo->mc_fc_col_optimize TO at_toolbar_excl_oo.
  ENDIF.

  IF p_mc_fc_count 'X'.
    APPEND ao_alv_oo->mc_fc_count TO at_toolbar_excl_oo.
  ENDIF.

  IF p_mc_fc_current_variant 'X'.
    APPEND ao_alv_oo->mc_fc_current_variant TO at_toolbar_excl_oo.
  ENDIF.

  IF p_mc_fc_data_save 'X'.
    APPEND ao_alv_oo->mc_fc_data_save TO at_toolbar_excl_oo.
  ENDIF.

  IF p_mc_fc_delete_filter 'X'.
    APPEND ao_alv_oo->mc_fc_delete_filter TO at_toolbar_excl_oo.
  ENDIF.

  IF p_mc_fc_deselect_all 'X'.
    APPEND ao_alv_oo->mc_fc_deselect_all TO at_toolbar_excl_oo.
  ENDIF.

  IF p_mc_fc_detail 'X'.
    APPEND ao_alv_oo->mc_fc_detail TO at_toolbar_excl_oo.
  ENDIF.

  IF p_mc_fc_excl_all 'X'.
    APPEND ao_alv_oo->mc_fc_excl_all TO at_toolbar_excl_oo.
  ENDIF.

  IF p_mc_fc_expcrdata 'X'.
    APPEND ao_alv_oo->mc_fc_expcrdata TO at_toolbar_excl_oo.
  ENDIF.

  IF p_mc_fc_expcrdesig 'X'.
    APPEND ao_alv_oo->mc_fc_expcrdesig TO at_toolbar_excl_oo.
  ENDIF.


  IF p_mc_fc_expcrtempl 'X'.
    APPEND ao_alv_oo->mc_fc_expcrtempl TO at_toolbar_excl_oo.
  ENDIF.


  IF p_mc_fc_expmdb 'X'.
    APPEND ao_alv_oo->mc_fc_expmdb TO at_toolbar_excl_oo.
  ENDIF.


  IF p_mc_fc_extend 'X'.
    APPEND ao_alv_oo->mc_fc_extend TO at_toolbar_excl_oo.
  ENDIF.


  IF p_mc_fc_f4 'X'.
    APPEND ao_alv_oo->mc_fc_f4 TO at_toolbar_excl_oo.
  ENDIF.

  IF p_mc_fc_filter 'X'.
    APPEND ao_alv_oo->mc_fc_filter TO at_toolbar_excl_oo.
  ENDIF.

  IF p_mc_fc_find 'X'.
    APPEND ao_alv_oo->mc_fc_find TO at_toolbar_excl_oo.
  ENDIF.

  IF p_mc_fc_fix_columns 'X'.
    APPEND ao_alv_oo->mc_fc_fix_columns TO at_toolbar_excl_oo.
  ENDIF.

  IF p_mc_fc_graph 'X'.
    APPEND ao_alv_oo->mc_fc_graph TO at_toolbar_excl_oo.
  ENDIF.

  IF p_mc_fc_help 'X'.
    APPEND ao_alv_oo->mc_fc_help TO at_toolbar_excl_oo.
  ENDIF.

  IF p_mc_fc_html 'X'.
    APPEND ao_alv_oo->mc_fc_html TO at_toolbar_excl_oo.
  ENDIF.

  IF p_mc_fc_info 'X'.
    APPEND ao_alv_oo->mc_fc_info TO at_toolbar_excl_oo.
  ENDIF.

  IF p_mc_fc_load_variant 'X'.
    APPEND ao_alv_oo->mc_fc_load_variant TO at_toolbar_excl_oo.
  ENDIF.

  IF p_mc_fc_loc_append_row 'X'.
    APPEND ao_alv_oo->mc_fc_loc_append_row TO at_toolbar_excl_oo.
  ENDIF.

  IF p_mc_fc_loc_copy 'X'.
    APPEND ao_alv_oo->mc_fc_loc_copy TO at_toolbar_excl_oo.
  ENDIF.

  IF p_mc_fc_loc_copy_row 'X'.
    APPEND ao_alv_oo->mc_fc_loc_copy_row TO at_toolbar_excl_oo.
  ENDIF.

  IF p_mc_fc_loc_cut 'X'.
    APPEND ao_alv_oo->mc_fc_loc_cut TO at_toolbar_excl_oo.
  ENDIF.

  IF p_mc_fc_loc_delete_row 'X'.
    APPEND ao_alv_oo->mc_fc_loc_delete_row TO at_toolbar_excl_oo.
  ENDIF.

  IF p_mc_fc_loc_insert_row 'X'.
    APPEND ao_alv_oo->mc_fc_loc_insert_row TO at_toolbar_excl_oo.
  ENDIF.

  IF p_mc_fc_loc_move_row 'X'.
    APPEND ao_alv_oo->mc_fc_loc_move_row TO at_toolbar_excl_oo.
  ENDIF.
  IF p_mc_fc_loc_paste 'X'.
    APPEND ao_alv_oo->mc_fc_loc_paste TO at_toolbar_excl_oo.
  ENDIF.

  IF p_mc_fc_loc_paste_new_row 'X'.
    APPEND ao_alv_oo->mc_fc_loc_paste_new_row TO at_toolbar_excl_oo.
  ENDIF.

  IF p_mc_fc_loc_undo 'X'.
    APPEND ao_alv_oo->mc_fc_loc_undo TO at_toolbar_excl_oo.
  ENDIF.

  IF p_mc_fc_maintain_variant 'X'.
    APPEND ao_alv_oo->mc_fc_maintain_variant TO at_toolbar_excl_oo.
  ENDIF.

  IF p_mc_fc_maximum 'X'.
    APPEND ao_alv_oo->mc_fc_maximum TO at_toolbar_excl_oo.
  ENDIF.

  IF p_mc_fc_minimum 'X'.
    APPEND ao_alv_oo->mc_fc_minimum TO at_toolbar_excl_oo.
  ENDIF.
  IF p_mc_fc_pc_file 'X'.
    APPEND ao_alv_oo->mc_fc_pc_file TO at_toolbar_excl_oo.
  ENDIF.

  IF p_mc_fc_print 'X'.
    APPEND ao_alv_oo->mc_fc_print TO at_toolbar_excl_oo.
  ENDIF.

  IF p_mc_fc_print_back 'X'.
    APPEND ao_alv_oo->mc_fc_print_back TO at_toolbar_excl_oo.
  ENDIF.

  IF p_mc_fc_print_prev 'X'.
    APPEND ao_alv_oo->mc_fc_print_prev TO at_toolbar_excl_oo.
  ENDIF.

  IF p_mc_fc_refresh 'X'.
    APPEND ao_alv_oo->mc_fc_refresh TO at_toolbar_excl_oo.
  ENDIF.

  IF p_mc_fc_save_variant 'X'.
    APPEND ao_alv_oo->mc_fc_save_variant TO at_toolbar_excl_oo.
  ENDIF.

  IF p_mc_fc_select_all 'X'.
    APPEND ao_alv_oo->mc_fc_select_all TO at_toolbar_excl_oo.
  ENDIF.

  IF p_mc_fc_send 'X'.
    APPEND ao_alv_oo->mc_fc_send TO at_toolbar_excl_oo.
  ENDIF.

  IF p_mc_fc_separator 'X'.
    APPEND ao_alv_oo->mc_fc_separator TO at_toolbar_excl_oo.
  ENDIF.

  IF p_mc_fc_sort 'X'.
    APPEND ao_alv_oo->mc_fc_sort TO at_toolbar_excl_oo.
  ENDIF.

  IF p_mc_fc_sort_asc 'X'.
    APPEND ao_alv_oo->mc_fc_sort_asc TO at_toolbar_excl_oo.
  ENDIF.

  IF p_mc_fc_sort_dsc 'X'.
    APPEND ao_alv_oo->mc_fc_sort_dsc TO at_toolbar_excl_oo.
  ENDIF.

  IF p_mc_fc_subtot 'X'.
    APPEND ao_alv_oo->mc_fc_subtot TO at_toolbar_excl_oo.
  ENDIF.

  IF p_mc_fc_sum 'X'.
    APPEND ao_alv_oo->mc_fc_sum TO at_toolbar_excl_oo.
  ENDIF.

  IF p_mc_fc_to_office 'X'.
    APPEND ao_alv_oo->mc_fc_to_office TO at_toolbar_excl_oo.
  ENDIF.

  IF p_mc_fc_to_rep_tree 'X'.
    APPEND ao_alv_oo->mc_fc_to_rep_tree TO at_toolbar_excl_oo.
  ENDIF.

  IF p_mc_fc_unfix_columns 'X'.
    APPEND ao_alv_oo->mc_fc_unfix_columns TO at_toolbar_excl_oo.
  ENDIF.

  IF p_mc_fc_url_copy_to_clipboard 'X'.
    APPEND ao_alv_oo->mc_fc_url_copy_to_clipboard TO at_toolbar_excl_oo.
  ENDIF.

  IF p_mc_fc_variant_admin 'X'.
    APPEND ao_alv_oo->mc_fc_variant_admin TO at_toolbar_excl_oo.
  ENDIF.

  IF p_mc_fc_views 'X'.
    APPEND ao_alv_oo->mc_fc_views TO at_toolbar_excl_oo.
  ENDIF.

  IF p_mc_fc_view_crystal 'X'.
    APPEND ao_alv_oo->mc_fc_view_crystal TO at_toolbar_excl_oo.
  ENDIF.

  IF p_mc_fc_view_excel 'X'.
    APPEND ao_alv_oo->mc_fc_view_excel TO at_toolbar_excl_oo.
  ENDIF.

  IF p_mc_fc_view_grid 'X'.
    APPEND ao_alv_oo->mc_fc_view_grid TO at_toolbar_excl_oo.
  ENDIF.

  IF p_mc_fc_view_lotus 'X'.
    APPEND ao_alv_oo->mc_fc_view_lotus TO at_toolbar_excl_oo.
  ENDIF.

  IF p_mc_fc_word_processor 'X'.
    APPEND ao_alv_oo->mc_fc_word_processor TO at_toolbar_excl_oo.
  ENDIF.

ENDMETHOD.                    "hide_functions

METHOD DISPLAY_ALV_OO.

  FIELD-SYMBOLS<ta> TYPE table.
  ASSIGN ao_nodetab_oo->TO <ta>.

  CALL METHOD ao_alv_oo->set_table_for_first_display
    EXPORTING
      i_buffer_active      ap_i_buffer_active_oo
      i_bypassing_buffer   ap_i_bypassing_buffer_oo
      i_consistency_check  ap_i_consistency_check_oo
      i_structure_name     ap_i_struct_name_oo
      is_variant           aw_is_variant_oo
      i_save               ap_i_save_oo
      i_default             ap_i_default_oo
      is_layout            aw_is_layout_oo
      is_print             aw_is_print_oo
      it_special_groups     at_it_special_groups_oo
      it_toolbar_excluding at_toolbar_excl_oo
      it_hyperlink         at_it_hyperlink_oo
      it_alv_graphics      at_it_graphics_oo
      it_except_qinfo       at_it_except_qinfo_oo
      ir_salv_adapter      ao_ir_salv_adapter_oo
    CHANGING
      it_outtab             <ta>
      it_filter             at_it_filter_oo
      it_fieldcatalog       at_fieldcatalog_oo
      it_sort              at_it_sort_oo.

ENDMETHOD.

METHOD SEND_DATA_OO.

  ao_nodetab_oo p_nodetab.

  FIELD-SYMBOLS<ti> TYPE table.
  ASSIGN ao_nodetab_oo->TO <ti>.

  CALL METHOD ZCL_ALV_GRID_MAINP=>define_events_oo
    EXPORTING
          p_right_click  =  p_evt_right_click
          p_left_click_design  =  p_evt_left_click_design
          p_move_control  p_evt_move_control
          p_size_control  p_evt_size_control
          p_left_click_run  p_evt_left_click_run
          p_onf1  p_evt_onf1
          p_onf4  p_evt_onf4
          p_data_changed  p_evt_data_changed
          p_ondropgetflavor  =  p_evt_ondropgetflavor
          p_ondrag  p_evt_ondrag
          p_ondrop  p_evt_ondrop
          p_ondropcomplete  p_evt_ondropcomplete
          p_subtotal_text  =  p_evt_subtotal_text
          p_before_user_command  =  p_evt_before_user_command
          p_user_command  p_evt_user_command
          p_after_user_command  p_evt_after_user_command
          p_double_click  p_evt_double_click
          p_delayed_callback  p_evt_delayed_callback
          p_delayed_changed_sel_callback  p_evt_delayed_changed_sel_call
          p_print_top_of_page  =  p_evt_print_top_of_page
          p_print_top_of_list  =  p_evt_print_top_of_list
          p_print_end_of_page  =  p_evt_print_end_of_page
          p_print_end_of_list  =  p_evt_print_end_of_list
          p_top_of_page  =  p_evt_top_of_page
          p_context_menu_request  p_evt_context_menu_request
          p_menu_button  =  p_evt_menu_button
          p_toolbar  =  p_evt_toolbar
          p_hotspot_click  =  p_evt_hotspot_click
          p_end_of_list  =  p_evt_end_of_list
          p_after_refresh  =  p_evt_after_refresh
          p_button_click  p_evt_button_click
          p_data_changed_finished  =  p_evt_data_changed_finished
          p_evt_delayed_change_select  =  p_evt_evt_delayed_change_selec
          p_evt_delayed_move_curr_cell  p_evt_evt_delayed_move_curr_ce
          p_evt_enter  =  p_evt_evt_enter
          p_evt_modified  p_evt_evt_modified.

ENDMETHOD.

METHOD DEFINE_EVENTS_OO.

  DATAevents TYPE cntl_simple_events,
        event TYPE cntl_simple_event,
        l_event_receiver TYPE REF TO lcl_toolbar_event_receiver.

  CLEAR events.

  IF p_evt_delayed_change_select  'X'.
    CALL METHOD ao_alv_oo->register_edit_event
      EXPORTING
        i_event_id ao_alv_oo->mc_evt_delayed_change_select.
  ENDIF.

  IF p_evt_delayed_move_curr_cell 'X'.
    CALL METHOD ao_alv_oo->register_edit_event
      EXPORTING
        i_event_id ao_alv_oo->mc_evt_delayed_move_curr_cell.
  ENDIF.

  IF p_evt_enter 'X'.
    CALL METHOD ao_alv_oo->register_edit_event
      EXPORTING
        i_event_id ao_alv_oo->mc_evt_enter.
  ENDIF.

  IF p_evt_modified 'X'.
    CALL METHOD ao_alv_oo->register_edit_event
      EXPORTING
        i_event_id ao_alv_oo->mc_evt_modified.
  ENDIF.


  IF p_right_click 'X'.
    SET HANDLER ao_alv_oo->ev_right_click FOR ao_alv_oo.
  ENDIF.

  IF p_left_click_design 'X'.
    SET HANDLER ao_alv_oo->ev_left_click_design FOR ao_alv_oo.
  ENDIF.

  IF p_move_control 'X'.
    SET HANDLER ao_alv_oo->ev_move_control FOR ao_alv_oo.
  ENDIF.

  IF p_size_control 'X'.
    SET HANDLER ao_alv_oo->ev_size_control FOR ao_alv_oo.
  ENDIF.

  IF p_left_click_run 'X'.
    SET HANDLER ao_alv_oo->ev_left_click_run FOR ao_alv_oo.
  ENDIF.

  IF p_onf1  'X'.
    SET HANDLER ao_alv_oo->ev_onf1 FOR ao_alv_oo.
  ENDIF.

  IF p_onf4 'X'.
    SET HANDLER ao_alv_oo->ev_onf4 FOR ao_alv_oo.
  ENDIF.

  IF p_data_changed  'X'.
    SET HANDLER ao_alv_oo->ev_data_changed FOR ao_alv_oo.
  ENDIF.

  IF p_ondropgetflavor  'X'.
    SET HANDLER ao_alv_oo->ev_ondropgetflavor FOR ao_alv_oo.
  ENDIF.

  IF p_ondrag  'X'.
    SET HANDLER ao_alv_oo->ev_ondrag FOR ao_alv_oo.
  ENDIF.

  IF p_ondrop  'X'.
    SET HANDLER ao_alv_oo->ev_ondrop FOR ao_alv_oo.
  ENDIF.

  IF p_ondropcomplete  'X'.
    SET HANDLER ao_alv_oo->ev_ondropcomplete FOR ao_alv_oo.
  ENDIF.

  IF p_subtotal_text  'X'.
    SET HANDLER ao_alv_oo->ev_subtotal_text FOR ao_alv_oo.
  ENDIF.

  IF p_before_user_command  'X'.
    SET HANDLER ao_alv_oo->ev_before_user_command FOR ao_alv_oo.
  ENDIF.

  IF p_user_command  'X'.
    SET HANDLER ao_alv_oo->ev_user_command FOR ao_alv_oo.
  ENDIF.

  IF p_after_user_command  'X'.
    SET HANDLER ao_alv_oo->ev_after_user_command FOR ao_alv_oo.
  ENDIF.

  IF p_double_click   'X'.
    SET HANDLER ao_alv_oo->ev_double_click FOR ao_alv_oo.
  ENDIF.

  IF p_delayed_callback    'X'.
    SET HANDLER ao_alv_oo->ev_delayed_callback FOR ao_alv_oo.
  ENDIF.

  IF p_delayed_changed_sel_callback 'X'.
    SET HANDLER ao_alv_oo->ev_del_changed_sel_callback FOR ao_alv_oo.
  ENDIF.

  IF p_print_top_of_page 'X'.
    SET HANDLER ao_alv_oo->ev_print_top_of_page FOR ao_alv_oo.
  ENDIF.

  IF p_print_top_of_list  'X'.
    SET HANDLER ao_alv_oo->ev_print_top_of_list FOR ao_alv_oo.
  ENDIF.

  IF p_print_end_of_page 'X'.
    SET HANDLER ao_alv_oo->ev_print_end_of_page FOR ao_alv_oo.
  ENDIF.

  IF p_print_end_of_list 'X'.
    SET HANDLER ao_alv_oo->ev_print_end_of_list  FOR ao_alv_oo.
  ENDIF.

  IF p_top_of_page  'X'.
    SET HANDLER ao_alv_oo->ev_top_of_page  FOR ao_alv_oo.
  ENDIF.

  IF p_context_menu_request  'X'.
    SET HANDLER ao_alv_oo->ev_context_menu_request FOR ao_alv_oo.
  ENDIF.

  IF p_menu_button 'X'.
    SET HANDLER ao_alv_oo->ev_menu_button FOR ao_alv_oo.
  ENDIF.

  IF p_toolbar 'X'.
    SET HANDLER ao_alv_oo->ev_toolbar FOR ao_alv_oo.
  ENDIF.

  IF p_hotspot_click 'X'.
    SET HANDLER ao_alv_oo->ev_hotspot_click FOR ao_alv_oo.
  ENDIF.

  IF p_end_of_list  'X'.
    SET HANDLER ao_alv_oo->ev_end_of_list FOR ao_alv_oo.
  ENDIF.

  IF p_after_refresh   'X'.
    SET HANDLER ao_alv_oo->ev_after_refresh FOR ao_alv_oo.
  ENDIF.

  IF p_button_click 'X'.
    SET HANDLER ao_alv_oo->ev_button_click FOR ao_alv_oo.
  ENDIF.

  IF p_data_changed_finished 'X'.
    SET HANDLER ao_alv_oo->ev_data_changed_finished  FOR ao_alv_oo.
  ENDIF.

ENDMETHOD. 

METHOD FREE_PROGRAM_OO.

  CALL METHOD cl_gui_cfw=>flush
    EXCEPTIONS
      cntl_system_error 1
      cntl_error        2
      OTHERS            3.

  IF sy-subrc <> 0.
    CASE sy-subrc.
      WHEN '1'.
        MESSAGE ID 'ZHRMSG' TYPE 'I' NUMBER 492.
      WHEN '2'.
        MESSAGE ID 'ZHRMSG' TYPE 'I' NUMBER 493.
      WHEN OTHERS.
        MESSAGE ID sy-msgid
    TYPE sy-msgty
    NUMBER sy-msgno
    WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
    ENDCASE.
  ENDIF.

  CALL METHOD ao_alv_oo->free
    EXCEPTIONS
      cntl_error        1
      cntl_system_error 2
      OTHERS            3.

  IF sy-subrc <> 0.
    CASE sy-subrc.
      WHEN '1'.
        MESSAGE ID 'ZHRMSG' TYPE 'I' NUMBER 494.
      WHEN '2'.
        MESSAGE ID 'ZHRMSG' TYPE 'I' NUMBER 495.
      WHEN OTHERS.
        MESSAGE ID sy-msgid
    TYPE sy-msgty
    NUMBER sy-msgno
    WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
    ENDCASE.
  ENDIF.

  CALL METHOD ao_container_oo->free
    EXCEPTIONS
      cntl_error        1
      cntl_system_error 2
      OTHERS            3.

  IF sy-subrc <> 0.
    CASE sy-subrc.
      WHEN '1'.
        MESSAGE ID 'ZHRMSG' TYPE 'I' NUMBER 074.
      WHEN '2'.
        MESSAGE ID 'ZHRMSG' TYPE 'I' NUMBER 496.
      WHEN OTHERS.
        MESSAGE ID sy-msgid
    TYPE sy-msgty
    NUMBER sy-msgno
    WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
    ENDCASE.
  ENDIF.

  LEAVE TO SCREEN 0.

ENDMETHOD.

METHOD CHANGE_ICON_OO.

  DATAstatus_icon TYPE icons-text.

  CALL FUNCTION 'ICON_CREATE'
    EXPORTING
      name                  p_item_image
      text                  p_text
      info                  p_text
      add_stdinf            'X'
    IMPORTING
      RESULT                status_icon
    EXCEPTIONS
      icon_not_found        1
      outputfield_too_short 2
      OTHERS                3.

  IF sy-subrc <> 0.
    CASE sy-subrc.
      WHEN '1'.
        MESSAGE ID 'ZHRMSG' TYPE 'I' NUMBER 490.
      WHEN '2'.
        MESSAGE ID 'ZHRMSG' TYPE 'I' NUMBER 491.
      WHEN OTHERS.
        MESSAGE ID sy-msgid
    TYPE sy-msgty
    NUMBER sy-msgno
    WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
    ENDCASE.
  ENDIF.

  p_item_image status_icon.

ENDMETHOD.

METHOD CHARGE_STRUCTURES_ALV_OO.

  aw_is_variant_oo-report  p_alv_is_variant_report.
  aw_is_variant_oo-handle  p_alv_is_variant_handle.
  aw_is_variant_oo-log_group  =  p_alv_is_variant_log_group.
  aw_is_variant_oo-username  p_alv_is_variant_username.
  aw_is_variant_oo-variant  =  p_alv_is_variant_variant.
  aw_is_variant_oo-text  p_alv_is_variant_text.
  aw_is_variant_oo-dependvars  p_alv_is_variant_dependvars.
***************************************************************
  aw_is_layout_oo-zebra p_alv_is_layout_zebra.
  aw_is_layout_oo-edit p_alv_is_layout_edit.
  aw_is_layout_oo-edit_mode p_alv_is_layout_edit_mode.
  aw_is_layout_oo-no_keyfix p_alv_is_layout_no_keyfix.
  aw_is_layout_oo-frontend =  p_alv_is_layout_frontend.
  aw_is_layout_oo-object_key  p_alv_is_layout_object_key.
  aw_is_layout_oo-doc_id =  p_alv_is_layout_doc_id.
  aw_is_layout_oo-template =  p_alv_is_layout_template.
  aw_is_layout_oo-language =  p_alv_is_layout_language.
  aw_is_layout_oo-graphics =  p_alv_is_layout_graphics.
  aw_is_layout_oo-smalltitle =  p_alv_is_layout_smalltitle.
  aw_is_layout_oo-no_hgridln =  p_alv_is_layout_no_hgridln.
  aw_is_layout_oo-no_vgridln =  p_alv_is_layout_no_vgridln.
  aw_is_layout_oo-no_headers =  p_alv_is_layout_no_headers.
  aw_is_layout_oo-no_merging =  p_alv_is_layout_no_merging.
  aw_is_layout_oo-cwidth_opt =  p_alv_is_layout_cwidth_opt.
  aw_is_layout_oo-totals_bef =  p_alv_is_layout_totals_bef.
  aw_is_layout_oo-no_totarr =   p_alv_is_layout_no_totarr.
  aw_is_layout_oo-no_totexp =   p_alv_is_layout_no_totexp.
  aw_is_layout_oo-no_rowmove =  p_alv_is_layout_no_rowmove.
  aw_is_layout_oo-no_rowins =  p_alv_is_layout_no_rowins.
  aw_is_layout_oo-no_colexpd =   p_alv_is_layout_no_colexpd.
  aw_is_layout_oo-no_f4 =   p_alv_is_layout_no_f4.
  aw_is_layout_oo-countfname =  p_alv_is_layout_countfname.
  aw_is_layout_oo-col_opt =   p_alv_is_layout_col_opt.
  aw_is_layout_oo-val_data =   p_alv_is_layout_val_data.
  aw_is_layout_oo-stylefname p_alv_is_layout_stylefname.
  aw_is_layout_oo-no_rowmark =  p_alv_is_layout_no_rowmark.
  aw_is_layout_oo-no_toolbar =   p_alv_is_layout_no_toolbar.
  aw_is_layout_oo-grid_title =  p_alv_is_layout_grid_title.
  aw_is_layout_oo-sel_mode =  p_alv_is_layout_sel_mode.
  aw_is_layout_oo-box_fname p_alv_is_layout_box_fname.
  aw_is_layout_oo-sgl_clk_hd =  p_alv_is_layout_sgl_clk_hd.
  aw_is_layout_oo-no_totline =  p_alv_is_layout_no_totline.
  aw_is_layout_oo-numc_total =  p_alv_is_layout_numc_total.
  aw_is_layout_oo-no_utsplit =  p_alv_is_layout_no_utsplit.
  aw_is_layout_oo-excp_fname =  p_alv_is_layout_excp_fname.
  aw_is_layout_oo-excp_rolln =  p_alv_is_layout_excp_rolln.
  aw_is_layout_oo-excp_conds =  p_alv_is_layout_excp_conds.
  aw_is_layout_oo-excp_led =   p_alv_is_layout_excp_led.
  aw_is_layout_oo-excp_group =  p_alv_is_layout_excp_group.
  aw_is_layout_oo-detailinit =  p_alv_is_layout_detailinit.
  aw_is_layout_oo-detailtitl =  p_alv_is_layout_detailtitl.
  aw_is_layout_oo-keyhot =   p_alv_is_layout_keyhot.
  aw_is_layout_oo-no_author =  p_alv_is_layout_no_author.
  aw_is_layout_oo-xifunckey =  p_alv_is_layout_xifunckey.
  aw_is_layout_oo-xidirect =  p_alv_is_layout_xidirect.
  aw_is_layout_oo-s_dragdrop p_alv_is_layout_s_dragdrop.
  aw_is_layout_oo-info_fname p_alv_is_layout_info_fname.
  aw_is_layout_oo-ctab_fname =  p_alv_is_layout_ctab_fname.
  aw_is_layout_oo-weblook =  p_alv_is_layout_weblook.
  aw_is_layout_oo-webstyle =  p_alv_is_layout_webstyle.
  aw_is_layout_oo-webrows =   p_alv_is_layout_webrows.
  aw_is_layout_oo-webxwidth =   p_alv_is_layout_webxwidth.
  aw_is_layout_oo-webxheight =  p_alv_is_layout_webxheight.

****************************************************
  aw_is_print_oo-prnt_title p_alv_is_print_prnt_title.
  aw_is_print_oo-footline p_alv_is_print_footline.
  aw_is_print_oo-prnt_info p_alv_is_print_prnt_info.
  aw_is_print_oo-reservelns p_alv_is_print_reservelns.
  aw_is_print_oo-grpchgedit p_alv_is_print_grpchgedit.
  aw_is_print_oo-prntlstinf p_alv_is_print_prntlstinf.
  aw_is_print_oo-prntselinf p_alv_is_print_prntselinf.
  aw_is_print_oo-no_colwopt p_alv_is_print_no_colwopt.
  aw_is_print_oo-print_ctrl p_alv_is_print_print_ctrl.

***************************************************

  ap_i_save_oo p_alv_i_save.
  ap_i_default_oo p_alv_i_default.
  ap_i_buffer_active_oo p_alv_i_buffer_active.
  ap_i_bypassing_buffer_oo p_alv_i_bypassing_buffer.
  ap_i_consistency_check_oo p_alv_i_consistency_check.
  ao_ir_salv_adapter_oo p_alv_ir_salv_adapter.

ENDMETHOD.  

METHOD CHARGE_T_ALV_SPECIAL_GROUPS_OO.

  DATAaw_special_groups TYPE lvc_s_sgrp.

  CLEAR aw_special_groups.
  aw_special_groups-sp_group p_sp_group.
  aw_special_groups-text p_text.

  APPEND aw_special_groups TO at_it_special_groups_oo.

ENDMETHOD.

METHOD CHARGE_T_ALV_HYPERLINK_OO.

  DATAaw_hyperlink TYPE LVC_S_HYPE.

  CLEAR aw_hyperlink.
  aw_hyperlink-handle p_handle.
  aw_hyperlink-href p_href.

  APPEND aw_hyperlink TO at_it_hyperlink_oo.

ENDMETHOD.

METHOD CHARGE_T_ALV_GRAPHICS_OO.

  DATAaw_graph TYPE dtc_s_tc.

  CLEAR aw_graph.
  aw_graph-prop_id p_prop_id.
  aw_graph-prop_val p_prop_val.

  APPEND aw_graph TO at_it_graphics_oo.

ENDMETHOD.

METHOD CHARGE_T_ALV_EXCEPT_QINFO_OO.

  DATAaw_excep TYPE lvc_s_qinf.

  CLEAR aw_excep.

  aw_excep-type p_type.
  aw_excep-excp_group p_excp_group.
  aw_excep-fieldname p_fieldname.
  aw_excep-tabname p_tabname.
  aw_excep-value p_value.
  aw_excep-text p_text.

  APPEND aw_excep TO at_it_except_qinfo_oo.

ENDMETHOD.

METHOD CHARGE_T_ALV_SORT_OO.

  DATAaw_sort TYPE lvc_s_sort.

  CLEAR aw_sort.

  aw_sort-spos p_spos .
  aw_sort-fieldname p_fieldname .
  aw_sort-up p_up .
  aw_sort-down p_down.
  aw_sort-group p_group.
  aw_sort-subtot p_subtot.
  aw_sort-comp p_comp .
  aw_sort-expa p_expa .
  aw_sort-seltext p_seltext.
  aw_sort-obligatory p_obligatory.
  aw_sort-level p_level.
  aw_sort-no_out p_no_out.
  aw_sort-intopt p_intopt.

  APPEND aw_sort TO at_it_sort_oo.

ENDMETHOD.

METHOD CHARGE_T_ALV_FILTER_OO.

  DATAaw_filter TYPE lvc_s_filt.

  CLEAR aw_filter.

  aw_filter-fieldname p_fieldname.
  aw_filter-tabname p_tabname .
  aw_filter-seltext p_seltext .
  aw_filter-valuf p_valuf .
  aw_filter-valut p_valut .
  aw_filter-sign_icon p_sign_icon.
  aw_filter-stype p_stype.
  aw_filter-decimals p_decimals.
  aw_filter-intlen p_intlen.
  aw_filter-convexit p_convexit.
  aw_filter-edit_mask p_edit_mask.
  aw_filter-lowercase p_lowercase.
  aw_filter-inttype p_inttype.
  aw_filter-datatype p_datatype.
  aw_filter-exception p_exception.
  aw_filter-no_sign p_no_sign.
  aw_filter-or p_or.
  aw_filter-order p_order.
  aw_filter-ref_field p_ref_field.
  aw_filter-ref_table p_ref_table.
  aw_filter-c_field p_c_field.
  aw_filter-c_tab p_c_tab.
  aw_filter-c_value p_c_value.
  aw_filter-flg_cq p_flg_cq.
  aw_filter-low p_low.
  aw_filter-high p_high.
  aw_filter-sign p_sign.
  aw_filter-option p_option.
  aw_filter-dd_outlen p_dd_outlen.

  APPEND aw_filter TO at_it_filter_oo.

ENDMETHOD.

METHOD CHARGE_T_DROPDOWN_OO.

  DATAaw_drop TYPE lvc_s_drop     .

  CLEAR aw_drop.
  aw_drop-handle p_handle.
  aw_drop-value p_value.

  APPEND aw_drop TO at_dropdown_oo.

ENDMETHOD.

METHOD SET_T_DROPDOWN_OO.

  CALL METHOD ao_alv_oo->set_drop_down_table
    EXPORTING
      it_drop_down at_dropdown_oo.

ENDMETHOD.  

METHOD SET_READY_FOR_INPUT_OO.

  CALL METHOD ao_alv_oo->set_ready_for_input
    EXPORTING
      i_ready_for_input p_val.

ENDMETHOD. 

method REFRESH_TABLE_DISPLAY_OO.

  CALL METHOD ao_alv_oo->refresh_table_display.

endmethod. 

METHOD INIT_ALV.

  CALL METHOD ZCL_ALV_GRID_MAINP=>build_alv
    EXPORTING
      p_progr p_program.

  ap_i_struct_name p_structure.


  CALL METHOD ZCL_ALV_GRID_MAINP=>build_fieldcatalog
    EXPORTING
      p_structure_name p_structure
    IMPORTING
      p_fieldcat       at_it_fieldcat.

*
  CALL METHOD ZCL_ALV_GRID_MAINP=>hide_functions
    EXPORTING
          p_mc_fc_auf  p_hide_mc_fc_auf
          p_mc_fc_average  p_hide_mc_fc_average
          p_mc_fc_back_classic  p_hide_mc_fc_back_classic
          p_mc_fc_call_abc  p_hide_mc_fc_call_abc
          p_mc_fc_call_chain  p_hide_mc_fc_call_chain
          p_mc_fc_call_crbatch  p_hide_mc_fc_call_crbatch
          p_mc_fc_call_crweb  p_hide_mc_fc_call_crweb
          p_mc_fc_call_lineitems  p_hide_mc_fc_call_lineitems
          p_mc_fc_call_master_data  p_hide_mc_fc_call_master_data
          p_mc_fc_call_more  p_hide_mc_fc_call_more
          p_mc_fc_call_report  p_hide_mc_fc_call_report
          p_mc_fc_call_xint  p_hide_mc_fc_call_xint
          p_mc_fc_call_xxl  p_hide_mc_fc_call_xxl
          p_mc_fc_check  p_hide_mc_fc_check
          p_mc_fc_col_invisible  p_hide_mc_fc_col_invisible
          p_mc_fc_col_optimize  p_hide_mc_fc_col_optimize
          p_mc_fc_count  p_hide_mc_fc_count
          p_mc_fc_current_variant  p_hide_mc_fc_current_variant
          p_mc_fc_data_save  p_hide_mc_fc_data_save
          p_mc_fc_delete_filter  p_hide_mc_fc_delete_filter
          p_mc_fc_deselect_all  p_hide_mc_fc_deselect_all
          p_mc_fc_detail  p_hide_mc_fc_detail
          p_mc_fc_excl_all  p_hide_mc_fc_excl_all
          p_mc_fc_expcrdata  p_hide_mc_fc_expcrdata
          p_mc_fc_expcrdesig  p_hide_mc_fc_expcrdesig
          p_mc_fc_expcrtempl  p_hide_mc_fc_expcrtempl
          p_mc_fc_expmdb  p_hide_mc_fc_expmdb
          p_mc_fc_extend  p_hide_mc_fc_extend
          p_mc_fc_f4  p_hide_mc_fc_f4
          p_mc_fc_filter  p_hide_mc_fc_filter
          p_mc_fc_find  p_hide_mc_fc_find
          p_mc_fc_fix_columns  p_hide_mc_fc_fix_columns
          p_mc_fc_graph  p_hide_mc_fc_graph
          p_mc_fc_help  p_hide_mc_fc_help
          p_mc_fc_html  p_hide_mc_fc_html
          p_mc_fc_info  p_hide_mc_fc_info
          p_mc_fc_load_variant  p_hide_mc_fc_load_variant
          p_mc_fc_loc_append_row  p_hide_mc_fc_loc_append_row
          p_mc_fc_loc_copy  p_hide_mc_fc_loc_copy
          p_mc_fc_loc_copy_row  p_hide_mc_fc_loc_copy_row
          p_mc_fc_loc_cut  p_hide_mc_fc_loc_cut
          p_mc_fc_loc_delete_row  p_hide_mc_fc_loc_delete_row
          p_mc_fc_loc_insert_row  p_hide_mc_fc_loc_insert_row
          p_mc_fc_loc_move_row  p_hide_mc_fc_loc_move_row
          p_mc_fc_loc_paste  p_hide_mc_fc_loc_paste
          p_mc_fc_loc_paste_new_row  p_hide_mc_fc_loc_paste_new_row
          p_mc_fc_loc_undo  p_hide_mc_fc_loc_undo
          p_mc_fc_maintain_variant  p_hide_mc_fc_maintain_variant
          p_mc_fc_maximum  p_hide_mc_fc_maximum
          p_mc_fc_minimum  p_hide_mc_fc_minimum
          p_mc_fc_pc_file  p_hide_mc_fc_pc_file
          p_mc_fc_print  p_hide_mc_fc_print
          p_mc_fc_print_back  p_hide_mc_fc_print_back
          p_mc_fc_print_prev  p_hide_mc_fc_print_prev
          p_mc_fc_refresh  p_hide_mc_fc_refresh
          p_mc_fc_reprep  p_hide_mc_fc_reprep
          p_mc_fc_save_variant  p_hide_mc_fc_save_variant
          p_mc_fc_select_all  p_hide_mc_fc_select_all
          p_mc_fc_send  p_hide_mc_fc_send
          p_mc_fc_separator  p_hide_mc_fc_separator
          p_mc_fc_sort  p_hide_mc_fc_sort
          p_mc_fc_sort_asc  p_hide_mc_fc_sort_asc
          p_mc_fc_sort_dsc  p_hide_mc_fc_sort_dsc
          p_mc_fc_subtot  p_hide_mc_fc_subtot
          p_mc_fc_sum  p_hide_mc_fc_sum
          p_mc_fc_to_office  p_hide_mc_fc_to_office
          p_mc_fc_to_rep_tree  p_hide_mc_fc_to_rep_tree
          p_mc_fc_unfix_columns  p_hide_mc_fc_unfix_columns
          p_mc_fc_url_copy_to_clipboard  p_hide_mc_fc_url_copy_to_clipb
          p_mc_fc_variant_admin  p_hide_mc_fc_variant_admin
          p_mc_fc_views  p_hide_mc_fc_views
          p_mc_fc_view_crystal  p_hide_mc_fc_view_crystal
          p_mc_fc_view_excel  p_hide_mc_fc_view_excel
          p_mc_fc_view_grid  p_hide_mc_fc_view_grid
          p_mc_fc_view_lotus  p_hide_mc_fc_view_lotus
          p_mc_fc_word_processor  p_hide_mc_fc_word_processor.

ENDMETHOD.                    "init_alv  

METHOD BUILD_ALV.

  ap_program p_progr.

ENDMETHOD.

METHOD BUILD_FIELDCATALOG.

  DATAlt_field_t TYPE slis_t_fieldcat_alv,
        lwa_catalog_rewrite TYPE slis_fieldcat_alv,
*        lw_ztfldcat TYPE ztfldcat,
*        lw_ztfldlyt TYPE ztfldlyt,
        lw_color TYPE slis_specialcol_alv.
  FIELD-SYMBOLS<fs1> LIKE LINE OF lt_field_t.

  CLEAR lt_field_t.
  REFRESH lt_field_t[].

  CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
    EXPORTING
      i_program_name         ap_program
      i_structure_name       p_structure_name
      i_internal_tabname     p_structure_name
      i_inclname             ap_program
    CHANGING
      ct_fieldcat            lt_field_t
    EXCEPTIONS
      inconsistent_interface 1
      program_error          2
      OTHERS                 3.

  IF sy-subrc <> 0.
    CASE sy-subrc.
      WHEN '1'.
        MESSAGE ID 'ZHRMSG' TYPE 'I' NUMBER 497.
      WHEN '2'.
        MESSAGE ID 'ZHRMSG' TYPE 'I' NUMBER 498.
      WHEN OTHERS.
        MESSAGE ID sy-msgid
    TYPE sy-msgty
    NUMBER sy-msgno
    WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
    ENDCASE.
  ENDIF.

  p_fieldcat lt_field_t.

ENDMETHOD.

METHOD SEND_DATA.

  ao_nodetab p_nodetab.

  FIELD-SYMBOLS<ti> TYPE table.
  ASSIGN ao_nodetab->TO <ti>.

ENDMETHOD.

METHOD DISPLAY_ALV.

  FIELD-SYMBOLS<ta> TYPE table.
  ASSIGN ao_nodetab->TO <ta>.

  CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
   EXPORTING
          i_interface_check  =  ap_i_interface_check
          i_bypassing_buffer  ap_i_bypassing_buffer
          i_buffer_active  =  ap_i_buffer_active
          i_callback_program  ap_i_callback_program
          i_callback_pf_status_set  ap_i_callback_pf_status_set
          i_callback_user_command  =  ap_i_callback_user_command
          i_callback_top_of_page  ap_i_callback_top_of_page
          i_callback_html_top_of_page  =  ap_i_callback_html_top_of_page
          i_callback_html_end_of_list  =  ap_i_callback_html_end_of_list
          i_structure_name  ap_i_structure_name
          i_background_id  =  ap_i_background_id
          i_grid_title  ap_i_grid_title
          i_grid_settings  =  ap_i_grid_settings
          is_layout  =  aw_is_layout
          it_fieldcat  =  at_it_fieldcat
          it_excluding  at_it_excluding
          it_special_groups  =  at_it_special_groups
          it_sort  =  at_it_sort
          it_filter  =  at_it_filter
          is_sel_hide  =  aw_is_sel_hide
          i_default  =  ap_i_default
          i_save  ap_i_save
          is_variant  aw_is_variant
          it_events  =  at_it_events
          it_event_exit  =  at_it_event_exit
          is_print  aw_is_print
          is_reprep_id  aw_is_reprep_id
          i_screen_start_column  =  ap_i_screen_start_column
          i_screen_start_line  =  ap_i_screen_start_line
          i_screen_end_column  =  ap_i_screen_end_column
          i_screen_end_line  =  ap_i_screen_end_line
          i_html_height_top  =  ap_i_html_height_top
          i_html_height_end  =  ap_i_html_height_end
          it_alv_graphics  =  at_it_alv_graphics
          ir_salv_fullscreen_adapter  ao_ir_salv_fullscreen_adapter
   IMPORTING
           e_exit_caused_by_caller           ap_e_exit_caused_by_caller
           es_exit_caused_by_user            aw_es_exit_caused_by_user
    TABLES
            t_outtab                          <ta>
   EXCEPTIONS
           program_error                     1
           OTHERS                            2.

  IF sy-subrc <> 0.
    CASE sy-subrc.
      WHEN  '1'.
        MESSAGE ID 'ZHRMSG' TYPE 'I' NUMBER 489.
      WHEN OTHERS.
        MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
                WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.

    ENDCASE.
  ENDIF.


ENDMETHOD.

METHOD CHARGE_STRUCTURES_ALV.

  ap_i_interface_check  p_i_interface_check.
  ap_i_bypassing_buffer  =  p_i_bypassing_buffer.
  ap_i_buffer_active  p_i_buffer_active.
  ap_i_callback_program  =  p_i_callback_program.
  ap_i_callback_pf_status_set  =  p_i_callback_pf_status_set.
  ap_i_callback_user_command  p_i_callback_user_command.
  ap_i_callback_top_of_page  =  p_i_callback_top_of_page.
  ap_i_callback_html_top_of_page  p_i_callback_html_top_of_page.
  ap_i_callback_html_end_of_list  p_i_callback_html_end_of_list.
  ap_i_structure_name  =  p_i_structure_name.
  ap_i_background_id  p_i_background_id.
  ap_i_grid_title  =  p_i_grid_title.
  ap_i_grid_settings  p_i_grid_settings.

  aw_is_layout-dummy  p_layout_dummy.
  aw_is_layout-no_colhead  =  p_layout_no_colhead.
  aw_is_layout-no_hotspot  =  p_layout_no_hotspot.
  aw_is_layout-zebra  p_layout_zebra.
  aw_is_layout-no_vline  =  p_layout_no_vline.
  aw_is_layout-no_hline  =  p_layout_no_hline.
  aw_is_layout-cell_merge  =  p_layout_cell_merge.
  aw_is_layout-edit  =  p_layout_edit.
  aw_is_layout-edit_mode  p_layout_edit_mode.
  aw_is_layout-numc_sum  =  p_layout_numc_sum.
  aw_is_layout-no_input  =  p_layout_no_input.
  aw_is_layout-f2code  =  p_layout_f2code.
  aw_is_layout-reprep  =  p_layout_reprep.
  aw_is_layout-no_keyfix  p_layout_no_keyfix.
  aw_is_layout-expand_all  =  p_layout_expand_all.
  aw_is_layout-no_author  p_layout_no_author.
  aw_is_layout-def_status  =  p_layout_def_status.
  aw_is_layout-item_text  p_layout_item_text.
  aw_is_layout-countfname  =  p_layout_countfname.
  aw_is_layout-colwidth_optimize  p_layout_colwidth_optimize.
  aw_is_layout-no_min_linesize  p_layout_no_min_linesize.
  aw_is_layout-min_linesize  =  p_layout_min_linesize.
  aw_is_layout-max_linesize  =  p_layout_max_linesize.
  aw_is_layout-window_titlebar  p_layout_window_titlebar.
  aw_is_layout-no_uline_hs  p_layout_no_uline_hs.
  aw_is_layout-lights_fieldname  =  p_layout_lights_fieldname.
  aw_is_layout-lights_tabname  =  p_layout_lights_tabname.
  aw_is_layout-lights_rollname  p_layout_lights_rollname.
  aw_is_layout-lights_condense  p_layout_lights_condense.
  aw_is_layout-no_sumchoice  =  p_layout_no_sumchoice.
  aw_is_layout-no_totalline  =  p_layout_no_totalline.
  aw_is_layout-no_subchoice  =  p_layout_no_subchoice.
  aw_is_layout-no_subtotals  =  p_layout_no_subtotals.
  aw_is_layout-no_unit_splitting  p_layout_no_unit_splitting.
  aw_is_layout-totals_before_items  p_layout_totals_before_items.
  aw_is_layout-totals_only  p_layout_totals_only.
  aw_is_layout-totals_text  p_layout_totals_text.
  aw_is_layout-subtotals_text  =  p_layout_subtotals_text.
  aw_is_layout-box_fieldname  p_layout_box_fieldname.
  aw_is_layout-box_tabname  p_layout_box_tabname.
  aw_is_layout-box_rollname  =  p_layout_box_rollname.
  aw_is_layout-expand_fieldname  =  p_layout_expand_fieldname.
  aw_is_layout-hotspot_fieldname  p_layout_hotspot_fieldname.
  aw_is_layout-confirmation_prompt  p_layout_confirmation_prompt.
  aw_is_layout-key_hotspot  p_layout_key_hotspot.
  aw_is_layout-flexible_key  =  p_layout_flexible_key.
  aw_is_layout-group_buttons  p_layout_group_buttons.
  aw_is_layout-get_selinfos  =  p_layout_get_selinfos.
  aw_is_layout-group_change_edit  p_layout_group_change_edit.
  aw_is_layout-no_scrolling  =  p_layout_no_scrolling.
  aw_is_layout-detail_popup  =  p_layout_detail_popup.
  aw_is_layout-detail_initial_lines  =  p_layout_detail_initial_lines.
  aw_is_layout-detail_titlebar  p_layout_detail_titlebar.
  aw_is_layout-header_text  p_layout_header_text.
  aw_is_layout-default_item  =  p_layout_default_item.
  aw_is_layout-info_fieldname  =  p_layout_info_fieldname.
  aw_is_layout-coltab_fieldname  =  p_layout_coltab_fieldname.
  aw_is_layout-list_append  p_layout_list_append.
  aw_is_layout-xifunckey  p_layout_xifunckey.
  aw_is_layout-xidirect  =  p_layout_xidirect.
  aw_is_layout-dtc_layout  =  p_layout_dtc_layout.
  aw_is_layout-allow_switch_to_list  =  p_layout_allow_switch_to_list.

  aw_is_sel_hide-mode  =  p_hide_mode.
  aw_is_sel_hide-t_entries  p_hide_t_entries.

  ap_i_default  p_i_default.
  ap_i_save  =  p_i_save.

  aw_is_variant-report  p_variant_report.     "UNA EN ESPECIAL
  aw_is_variant-handle  p_variant_handle.
  aw_is_variant-log_group  =  p_variant_log_group.
  aw_is_variant-username  p_variant_username.
  aw_is_variant-variant  =  p_variant_variant.
  aw_is_variant-text  p_variant_text.
  aw_is_variant-dependvars  p_variant_dependvars.

  aw_is_print-print  =  p_print_print.
  aw_is_print-prnt_title  p_print_prnt_title.
  aw_is_print-footline  p_print_footline.
  aw_is_print-prnt_info  =  p_print_prnt_info.
  aw_is_print-no_print_selinfos  =  p_print_no_print_selinfos.
  aw_is_print-no_coverpage  p_print_no_coverpage.
  aw_is_print-no_new_page  =  p_print_no_new_page.
  aw_is_print-reserve_lines  =  p_print_reserve_lines.
  aw_is_print-no_print_listinfos  p_print_no_print_listinfos.
  aw_is_print-no_change_print_params  p_print_no_change_print_params.
  aw_is_print-no_print_hierseq_item  =  p_print_no_print_hierseq_item.
  aw_is_print-print_ctrl =  p_print_print_ctrl.

  aw_is_reprep_id-tool  p_reprepid_tool.
  aw_is_reprep_id-appl  p_reprepid_appl.
  aw_is_reprep_id-subc  p_reprepid_subc.
  aw_is_reprep_id-onam  p_reprepid_onam.

  ap_i_screen_start_column  p_i_screen_start_column.
  ap_i_screen_start_line  p_i_screen_start_line.
  ap_i_screen_end_column  p_i_screen_end_column.
  ap_i_screen_end_line  p_i_screen_end_line.
  ap_i_html_height_top  p_i_html_height_top.
  ap_i_html_height_end  p_i_html_height_end.

  ao_ir_salv_fullscreen_adapter p_ir_salv_fullscreen_adapter.
ENDMETHOD.

METHOD CHARGE_T_SPECIAL_GROUPS.

  DATAaw_sg TYPE slis_sp_group_alv.

  CLEAR aw_sg.

  aw_sg-sp_group p_sp_group.
  aw_sg-text p_text.

  APPEND aw_sg TO at_it_special_groups.

ENDMETHOD.

METHOD CHARGE_T_SORT.

  DATAaw_sort TYPE slis_sortinfo_alv.

  CLEAR aw_sort.

  aw_sort-spos p_spos.
  aw_sort-fieldname p_fieldname.
  aw_sort-tabname p_tabname.
  aw_sort-up p_up.
  aw_sort-down p_down.
  aw_sort-group p_group.
  aw_sort-subtot p_subtot.
  aw_sort-comp p_comp.
  aw_sort-expa p_expa.
  aw_sort-obligatory p_obligatory.

  APPEND aw_sort TO at_it_sort.

ENDMETHOD.

METHOD CHARGE_T_FILTER.

  DATAaw_filter TYPE slis_filter_alv.

  CLEAR aw_filter.
  aw_filter-fieldname p_fieldname.
  aw_filter-tabname p_tabname.
  aw_filter-seltext p_seltext.
  aw_filter-valuf p_valuf.
  aw_filter-valut p_valut.
  aw_filter-valuf_int p_valuf_int.
  aw_filter-valut_int p_valut_int.
  aw_filter-sign0 p_sign0.
  aw_filter-sign_icon p_sign_icon.
  aw_filter-optio p_optio.
  aw_filter-stype p_stype.
  aw_filter-decimals p_decimals.
  aw_filter-intlen p_intlen.
  aw_filter-convexit p_convexit.
  aw_filter-edit_mask p_edit_mask.
  aw_filter-lowercase p_lowercase.
  aw_filter-inttype p_inttype.
  aw_filter-datatype p_datatype.
  aw_filter-exception p_exception.
  aw_filter-no_sign p_no_sign.
  aw_filter-or p_or.
  aw_filter-order p_order.
  aw_filter-cqvalue p_cqvalue.

  aw_filter-ref_fieldname p_ref_fieldname.
  aw_filter-ref_tabname p_ref_tabname.
  aw_filter-ddic_outputlen p_ddic_outputlen.

  APPEND aw_filter TO at_it_filter.

ENDMETHOD.

METHOD CHARGE_T_EVENTS.

  DATAaw_events TYPE slis_alv_event.

  CLEAR aw_events.

  aw_events-name p_name.
  aw_events-form p_form.

  APPEND aw_events TO at_it_events.

ENDMETHOD.

METHOD CHARGE_T_EVENTS_EXITS.

  DATAaw_event_e TYPE slis_event_exit.

  CLEAR aw_event_e.

  aw_event_e-ucomm p_ucomm.
  aw_event_e-before p_before.
  aw_event_e-after p_after.

  APPEND aw_event_e TO at_it_event_exit.

ENDMETHOD.

METHOD CHARGE_T_GRAPHIC.

  DATAaw_graph TYPE dtc_s_tc.

  CLEAR aw_graph.
  aw_graph-prop_id p_prop_id.
  aw_graph-prop_val p_prop_val.

  APPEND aw_graph TO at_it_alv_graphics.

ENDMETHOD.

METHOD DEFINE_EVENTS.

  DATAd_event TYPE slis_alv_event.
  DATAt_events     TYPE TABLE OF slis_alv_event.

  CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
    EXPORTING
      i_list_type 0
    IMPORTING
      et_events   t_events.


  IF  p_item_data_expand    'X'.
    READ TABLE t_events WITH KEY name slis_ev_item_data_expand
                        INTO d_event.
    IF sy-subrc <= 2.
      MOVE slis_ev_item_data_expand TO d_event-form.
      APPEND d_event TO t_events.
    ENDIF.
  ENDIF.

  IF  p_reprep_sel_modify   'X'.
    READ TABLE t_events WITH KEY name slis_ev_reprep_sel_modify
                        INTO d_event.
    IF sy-subrc <= 2.
      MOVE slis_ev_reprep_sel_modify TO d_event-form.
      APPEND d_event TO t_events.
    ENDIF.
  ENDIF.

  IF  p_caller_exit   'X'.
    READ TABLE t_events WITH KEY name slis_ev_caller_exit_at_start
                        INTO d_event.
    IF sy-subrc <= 2.
      MOVE slis_ev_caller_exit_at_start TO d_event-form.
      APPEND d_event TO t_events.
    ENDIF.
  ENDIF.

  IF  p_user_command    'X'.
    READ TABLE t_events WITH KEY name slis_ev_user_command
                        INTO d_event.
    IF sy-subrc <= 2.
      MOVE slis_ev_user_command TO d_event-form.
      APPEND d_event TO t_events.
    ENDIF.
  ENDIF.

  IF  p_top_of_page   'X'.
    READ TABLE t_events WITH KEY name slis_ev_top_of_page
                        INTO d_event.
    IF sy-subrc <= 2.
      MOVE slis_ev_top_of_page TO d_event-form.
      APPEND d_event TO t_events.
    ENDIF.
  ENDIF.

  IF  p_data_changed    'X'.
    READ TABLE t_events WITH KEY name slis_ev_data_changed
                        INTO d_event.
    IF sy-subrc <= 2.
      MOVE slis_ev_data_changed   TO d_event-form.
      APPEND d_event TO t_events.
    ENDIF.
  ENDIF.

  IF  p_top_of_coverpage    'X'.
    READ TABLE t_events WITH KEY name slis_ev_top_of_coverpage
                        INTO d_event.
    IF sy-subrc <= 2.
      MOVE slis_ev_top_of_coverpage TO d_event-form.
      APPEND d_event TO t_events.
    ENDIF.
  ENDIF.

  IF  p_end_of_coverpage    'X'.
    READ TABLE t_events WITH KEY name slis_ev_end_of_coverpage
                        INTO d_event.
    IF sy-subrc <= 2.
      MOVE slis_ev_end_of_coverpage TO d_event-form.
      APPEND d_event TO t_events.
    ENDIF.
  ENDIF.

  IF  p_foreign_top_of_page   'X'.
    READ TABLE t_events WITH KEY name slis_ev_foreign_top_of_page
                        INTO d_event.
    IF sy-subrc <= 2.
      MOVE slis_ev_foreign_top_of_page TO d_event-form.
      APPEND d_event TO t_events.
    ENDIF.
  ENDIF.

  IF  p_foreign_end_of_page   'X'.
    READ TABLE t_events WITH KEY name slis_ev_foreign_end_of_page
                        INTO d_event.
    IF sy-subrc <= 2.
      MOVE slis_ev_foreign_end_of_page TO d_event-form.
      APPEND d_event TO t_events.
    ENDIF.
  ENDIF.

  IF  p_pf_status_set   'X'.
    READ TABLE t_events WITH KEY name slis_ev_pf_status_set
                        INTO d_event.
    IF sy-subrc <= 2.
      MOVE slis_ev_pf_status_set TO d_event-form.
      APPEND d_event TO t_events.
    ENDIF.
  ENDIF.

  IF  p_list_modify   'X'.
    READ TABLE t_events WITH KEY name slis_ev_list_modify
                        INTO d_event.
    IF sy-subrc <= 2.
      MOVE slis_ev_list_modify TO d_event-form.
      APPEND d_event TO t_events.
    ENDIF.
  ENDIF.

  IF  p_top_of_list   'X'.
    READ TABLE t_events WITH KEY name slis_ev_top_of_list
                        INTO d_event.
    IF sy-subrc <= 2.
      MOVE slis_ev_top_of_list TO d_event-form.
      APPEND d_event TO t_events.
    ENDIF.
  ENDIF.

  IF  p_end_of_page   'X'.
    READ TABLE t_events WITH KEY name slis_ev_end_of_page
                        INTO d_event.
    IF sy-subrc <= 2.
      MOVE slis_ev_end_of_page TO d_event-form.
      APPEND d_event TO t_events.
    ENDIF.
  ENDIF.

  IF  p_end_of_list   'X'.
    READ TABLE t_events WITH KEY name slis_ev_end_of_list
                        INTO d_event.
    IF sy-subrc <= 2.
      MOVE slis_ev_end_of_list TO d_event-form.
      APPEND d_event TO t_events.
    ENDIF.
  ENDIF.

  IF  p_after_line_output   'X'.
    READ TABLE t_events WITH KEY name slis_ev_after_line_output
                        INTO d_event.
    IF sy-subrc <= 2.
      MOVE slis_ev_after_line_output TO d_event-form.
      APPEND d_event TO t_events.
    ENDIF.
  ENDIF.

  IF  p_before_line_output    'X'.
    READ TABLE t_events WITH KEY name slis_ev_before_line_output
                        INTO d_event.
    IF sy-subrc <= 2.
      MOVE slis_ev_before_line_output TO d_event-form.
      APPEND d_event TO t_events.
    ENDIF.
  ENDIF.

  IF  p_subtotal_text   'X'.
    READ TABLE t_events WITH KEY name slis_ev_subtotal_text
                        INTO d_event.
    IF sy-subrc <= 2.
      MOVE slis_ev_subtotal_text TO d_event-form.
      APPEND d_event TO t_events.
    ENDIF.
  ENDIF.

  IF  p_grouplevel_change   'X'.
    READ TABLE t_events WITH KEY name slis_ev_grouplevel_change
                        INTO d_event.
    IF sy-subrc <= 2.
      MOVE slis_ev_grouplevel_change TO d_event-form.
      APPEND d_event TO t_events.
    ENDIF.
  ENDIF.

  IF  p_context_menu    'X'.
    READ TABLE t_events WITH KEY name slis_ev_context_menu
                        INTO d_event.
    IF sy-subrc <= 2.
      MOVE slis_ev_context_menu TO d_event-form.
      APPEND d_event TO t_events.
    ENDIF.
  ENDIF.

  at_it_events t_events.

ENDMETHOD.  

METHOD HIDE_FUNCTIONS.

IF p_mc_fc_auf 'X'.
    APPEND cl_gui_alv_grid=>mc_fc_auf TO at_it_excluding.
  ENDIF.

  IF p_mc_fc_average 'X'.
    APPEND cl_gui_alv_grid=>mc_fc_average TO at_it_excluding.
  ENDIF.

  IF p_mc_fc_back_classic 'X'.
    APPEND cl_gui_alv_grid=>mc_fc_back_classic TO at_it_excluding.
  ENDIF.

  IF p_mc_fc_call_abc 'X'.
    APPEND cl_gui_alv_grid=>mc_fc_call_abc TO at_it_excluding.
  ENDIF.

  IF p_mc_fc_call_chain 'X'.
    APPEND cl_gui_alv_grid=>mc_fc_call_chain TO at_it_excluding.
  ENDIF.

  IF p_mc_fc_call_crbatch 'X'.
    APPEND cl_gui_alv_grid=>mc_fc_call_crbatch TO at_it_excluding.
  ENDIF.

  IF p_mc_fc_call_crweb 'X'.
    APPEND cl_gui_alv_grid=>mc_fc_call_crweb TO at_it_excluding.
  ENDIF.

  IF p_mc_fc_call_lineitems 'X'.
    APPEND cl_gui_alv_grid=>mc_fc_call_lineitems TO at_it_excluding.
  ENDIF.

  IF p_mc_fc_call_master_data 'X'.
    APPEND cl_gui_alv_grid=>mc_fc_call_master_data TO at_it_excluding.
  ENDIF.

  IF p_mc_fc_call_more 'X'.
    APPEND cl_gui_alv_grid=>mc_fc_call_more TO at_it_excluding.
  ENDIF.

  IF p_mc_fc_call_report 'X'.
    APPEND cl_gui_alv_grid=>mc_fc_call_report TO at_it_excluding.
  ENDIF.

  IF p_mc_fc_call_xint 'X'.
    APPEND cl_gui_alv_grid=>mc_fc_call_xint TO at_it_excluding.
  ENDIF.

  IF p_mc_fc_call_xxl 'X'.
    APPEND cl_gui_alv_grid=>mc_fc_call_xxl TO at_it_excluding.
  ENDIF.

  IF p_mc_fc_check 'X'.
    APPEND cl_gui_alv_grid=>mc_fc_check TO at_it_excluding.
  ENDIF.

  IF p_mc_fc_col_invisible 'X'.
    APPEND cl_gui_alv_grid=>mc_fc_col_invisible TO at_it_excluding.
  ENDIF.

  IF p_mc_fc_col_optimize 'X'.
    APPEND cl_gui_alv_grid=>mc_fc_col_optimize TO at_it_excluding.
  ENDIF.

  IF p_mc_fc_count 'X'.
    APPEND cl_gui_alv_grid=>mc_fc_count TO at_it_excluding.
  ENDIF.

  IF p_mc_fc_current_variant 'X'.
    APPEND cl_gui_alv_grid=>mc_fc_current_variant TO at_it_excluding.
  ENDIF.

  IF p_mc_fc_data_save 'X'.
    APPEND cl_gui_alv_grid=>mc_fc_data_save TO at_it_excluding.
  ENDIF.

  IF p_mc_fc_delete_filter 'X'.
    APPEND cl_gui_alv_grid=>mc_fc_delete_filter TO at_it_excluding.
  ENDIF.

  IF p_mc_fc_deselect_all 'X'.
    APPEND cl_gui_alv_grid=>mc_fc_deselect_all TO at_it_excluding.
  ENDIF.

  IF p_mc_fc_detail 'X'.
    APPEND cl_gui_alv_grid=>mc_fc_detail TO at_it_excluding.
  ENDIF.

  IF p_mc_fc_excl_all 'X'.
    APPEND cl_gui_alv_grid=>mc_fc_excl_all TO at_it_excluding.
  ENDIF.

  IF p_mc_fc_expcrdata 'X'.
    APPEND cl_gui_alv_grid=>mc_fc_expcrdata TO at_it_excluding.
  ENDIF.

  IF p_mc_fc_expcrdesig 'X'.
    APPEND cl_gui_alv_grid=>mc_fc_expcrdesig TO at_it_excluding.
  ENDIF.


  IF p_mc_fc_expcrtempl 'X'.
    APPEND cl_gui_alv_grid=>mc_fc_expcrtempl TO at_it_excluding.
  ENDIF.


  IF p_mc_fc_expmdb 'X'.
    APPEND cl_gui_alv_grid=>mc_fc_expmdb TO at_it_excluding.
  ENDIF.


  IF p_mc_fc_extend 'X'.
    APPEND cl_gui_alv_grid=>mc_fc_extend TO at_it_excluding.
  ENDIF.


  IF p_mc_fc_f4 'X'.
    APPEND cl_gui_alv_grid=>mc_fc_f4 TO at_it_excluding.
  ENDIF.

  IF p_mc_fc_filter 'X'.
    APPEND cl_gui_alv_grid=>mc_fc_filter TO at_it_excluding.
  ENDIF.

  IF p_mc_fc_find 'X'.
    APPEND cl_gui_alv_grid=>mc_fc_find TO at_it_excluding.
  ENDIF.

  IF p_mc_fc_fix_columns 'X'.
    APPEND cl_gui_alv_grid=>mc_fc_fix_columns TO at_it_excluding.
  ENDIF.

  IF p_mc_fc_graph 'X'.
    APPEND cl_gui_alv_grid=>mc_fc_graph TO at_it_excluding.
  ENDIF.

  IF p_mc_fc_help 'X'.
    APPEND cl_gui_alv_grid=>mc_fc_help TO at_it_excluding.
  ENDIF.

  IF p_mc_fc_html 'X'.
    APPEND cl_gui_alv_grid=>mc_fc_html TO at_it_excluding.
  ENDIF.

  IF p_mc_fc_info 'X'.
    APPEND cl_gui_alv_grid=>mc_fc_info TO at_it_excluding.
  ENDIF.

  IF p_mc_fc_load_variant 'X'.
    APPEND cl_gui_alv_grid=>mc_fc_load_variant TO at_it_excluding.
  ENDIF.

  IF p_mc_fc_loc_append_row 'X'.
    APPEND cl_gui_alv_grid=>mc_fc_loc_append_row TO at_it_excluding.
  ENDIF.

  IF p_mc_fc_loc_copy 'X'.
    APPEND cl_gui_alv_grid=>mc_fc_loc_copy TO at_it_excluding.
  ENDIF.

  IF p_mc_fc_loc_copy_row 'X'.
    APPEND cl_gui_alv_grid=>mc_fc_loc_copy_row TO at_it_excluding.
  ENDIF.

  IF p_mc_fc_loc_cut 'X'.
    APPEND cl_gui_alv_grid=>mc_fc_loc_cut TO at_it_excluding.
  ENDIF.

  IF p_mc_fc_loc_delete_row 'X'.
    APPEND cl_gui_alv_grid=>mc_fc_loc_delete_row TO at_it_excluding.
  ENDIF.

  IF p_mc_fc_loc_insert_row 'X'.
    APPEND cl_gui_alv_grid=>mc_fc_loc_insert_row TO at_it_excluding.
  ENDIF.

  IF p_mc_fc_loc_move_row 'X'.
    APPEND cl_gui_alv_grid=>mc_fc_loc_move_row TO at_it_excluding.
  ENDIF.
  IF p_mc_fc_loc_paste 'X'.
    APPEND cl_gui_alv_grid=>mc_fc_loc_paste TO at_it_excluding.
  ENDIF.

  IF p_mc_fc_loc_paste_new_row 'X'.
    APPEND cl_gui_alv_grid=>mc_fc_loc_paste_new_row TO at_it_excluding.
  ENDIF.

  IF p_mc_fc_loc_undo 'X'.
    APPEND cl_gui_alv_grid=>mc_fc_loc_undo TO at_it_excluding.
  ENDIF.

  IF p_mc_fc_maintain_variant 'X'.
    APPEND cl_gui_alv_grid=>mc_fc_maintain_variant TO at_it_excluding.
  ENDIF.

  IF p_mc_fc_maximum 'X'.
    APPEND cl_gui_alv_grid=>mc_fc_maximum TO at_it_excluding.
  ENDIF.

  IF p_mc_fc_minimum 'X'.
    APPEND cl_gui_alv_grid=>mc_fc_minimum TO at_it_excluding.
  ENDIF.
  IF p_mc_fc_pc_file 'X'.
    APPEND cl_gui_alv_grid=>mc_fc_pc_file TO at_it_excluding.
  ENDIF.

  IF p_mc_fc_print 'X'.
    APPEND cl_gui_alv_grid=>mc_fc_print TO at_it_excluding.
  ENDIF.

  IF p_mc_fc_print_back 'X'.
    APPEND cl_gui_alv_grid=>mc_fc_print_back TO at_it_excluding.
  ENDIF.

  IF p_mc_fc_print_prev 'X'.
    APPEND cl_gui_alv_grid=>mc_fc_print_prev TO at_it_excluding.
  ENDIF.

  IF p_mc_fc_refresh 'X'.
    APPEND cl_gui_alv_grid=>mc_fc_refresh TO at_it_excluding.
  ENDIF.

  IF p_mc_fc_save_variant 'X'.
    APPEND cl_gui_alv_grid=>mc_fc_save_variant TO at_it_excluding.
  ENDIF.

  IF p_mc_fc_select_all 'X'.
    APPEND cl_gui_alv_grid=>mc_fc_select_all TO at_it_excluding.
  ENDIF.

  IF p_mc_fc_send 'X'.
    APPEND cl_gui_alv_grid=>mc_fc_send TO at_it_excluding.
  ENDIF.

  IF p_mc_fc_separator 'X'.
    APPEND cl_gui_alv_grid=>mc_fc_separator TO at_it_excluding.
  ENDIF.

  IF p_mc_fc_sort 'X'.
    APPEND cl_gui_alv_grid=>mc_fc_sort TO at_it_excluding.
  ENDIF.

  IF p_mc_fc_sort_asc 'X'.
    APPEND cl_gui_alv_grid=>mc_fc_sort_asc TO at_it_excluding.
  ENDIF.

  IF p_mc_fc_sort_dsc 'X'.
    APPEND cl_gui_alv_grid=>mc_fc_sort_dsc TO at_it_excluding.
  ENDIF.

  IF p_mc_fc_subtot 'X'.
    APPEND cl_gui_alv_grid=>mc_fc_subtot TO at_it_excluding.
  ENDIF.

  IF p_mc_fc_sum 'X'.
    APPEND cl_gui_alv_grid=>mc_fc_sum TO at_it_excluding.
  ENDIF.

  IF p_mc_fc_to_office 'X'.
    APPEND cl_gui_alv_grid=>mc_fc_to_office TO at_it_excluding.
  ENDIF.

  IF p_mc_fc_to_rep_tree 'X'.
    APPEND cl_gui_alv_grid=>mc_fc_to_rep_tree TO at_it_excluding.
  ENDIF.

  IF p_mc_fc_unfix_columns 'X'.
    APPEND cl_gui_alv_grid=>mc_fc_unfix_columns TO at_it_excluding.
  ENDIF.

  IF p_mc_fc_url_copy_to_clipboard 'X'.
    APPEND cl_gui_alv_grid=>mc_fc_url_copy_to_clipboard TO at_it_excluding.
  ENDIF.

  IF p_mc_fc_variant_admin 'X'.
    APPEND cl_gui_alv_grid=>mc_fc_variant_admin TO at_it_excluding.
  ENDIF.

  IF p_mc_fc_views 'X'.
    APPEND cl_gui_alv_grid=>mc_fc_views TO at_it_excluding.
  ENDIF.

  IF p_mc_fc_view_crystal 'X'.
    APPEND cl_gui_alv_grid=>mc_fc_view_crystal TO at_it_excluding.
  ENDIF.

  IF p_mc_fc_view_excel 'X'.
    APPEND cl_gui_alv_grid=>mc_fc_view_excel TO at_it_excluding.
  ENDIF.

  IF p_mc_fc_view_grid 'X'.
    APPEND cl_gui_alv_grid=>mc_fc_view_grid TO at_it_excluding.
  ENDIF.

  IF p_mc_fc_view_lotus 'X'.
    APPEND cl_gui_alv_grid=>mc_fc_view_lotus TO at_it_excluding.
  ENDIF.

  IF p_mc_fc_word_processor 'X'.
    APPEND cl_gui_alv_grid=>mc_fc_word_processor TO at_it_excluding.
  ENDIF.

ENDMETHOD.                    "hide_functions
 
METHOD CHANGE_ICON.

  DATAstatus_icon TYPE icons-text.

  CALL FUNCTION 'ICON_CREATE'
    EXPORTING
      name                  p_item_image
      text                  p_text
      info                  p_text2
      add_stdinf            'X'
    IMPORTING
      RESULT                status_icon
    EXCEPTIONS
      icon_not_found        1
      outputfield_too_short 2
      OTHERS                3.

  p_item_image status_icon.

ENDMETHOD.

METHOD BUILD_VARIANT.

  IF p_i_save IS INITIAL.
    p_i_save 'A'.
  ENDIF.

  IF p_variant-variant IS INITIAL.
    p_variant-variant '/STANDARD'.
  ENDIF.

  CALL FUNCTION 'REUSE_ALV_VARIANT_DEFAULT_GET'
    EXPORTING
      i_save     p_i_save
    CHANGING
      cs_variant p_variant
    EXCEPTIONS
      not_found  2.

  ap_i_save p_i_save.
  aw_is_variant p_variant.

ENDMETHOD.

METHOD INITIALIZE.

  REFRESH at_it_fieldcat.
  REFRESH at_it_excluding.
  REFRESH at_it_special_groups.
  REFRESH at_it_sort.
  REFRESH at_it_filter.
  REFRESH at_it_events.
  REFRESH at_it_event_exit.
  REFRESH at_it_alv_graphics.

ENDMETHOD.

1 comentario:

  1. HOLA ME SALE UN ERROR AL EJECUTAR EL ZCL_ALV_GRID_MAIN.
    THE TYPE "SLIS_T_LISTHEADER" IS UNKNOWN

    ResponderEliminar