SAP R/3 форум ABAP консультантов
Russian ABAP Developer's Club

Home - FAQ - Search - Memberlist - Usergroups - Profile - Log in to check your private messages - Register - Log in - English
Blogs - Weblogs News

ALV Grid Demo(OO ALV)



 
Post new topic   Reply to topic    Russian ABAP Developer's Club Forum Index -> ALV Grid / ALV Tree / ALV List
View previous topic :: View next topic  
Author Message
admin
Администратор
Администратор



Joined: 01 Sep 2007
Posts: 1639

PostPosted: Mon Nov 09, 2009 4:34 pm    Post subject: ALV Grid Demo(OO ALV) Reply with quote

Code:
report zbobo_alv_grid_demo .

types: begin of rt_tab,
        excp(1) type c,
        ebeln type ebeln,
        ebelp type ebelp,
        matnr type matnr,
        bukrs type bukrs,
        menge type bstmg,
        meins type bstme,
        rowc(4) type c,
        cc type lvc_t_scol,
        detailinit type c,
      end of rt_tab.

class cl_gui_custom_container definition load.

class zalv_grid definition deferred.

define set_button.
  call method ref_colu->item_set_disabled
    exporting
      node_key          = &1
      item_name         = 'C3'
      disabled          = &2 .
end-of-definition.

define set_text.
  if &1 is initial.
    ls = 'Off'.
  else.
    ls = 'On'.
  endif.
  if &3 is initial.
    ls = 'Change'.
  endif.

  call method set_text
    exporting:
      n = &2 i = 'C2' t = &1 f = &3,
      n = &2 i = 'C3' t = ls f = &3.
end-of-definition.

define add_item_detail.
  call method add_item_detail
    exporting node_key  = &1
              item_name = 'C1'
              class     = 2
              text      = &4.
  call method add_item_detail
    exporting node_key  = &1
              item_name = 'C2'
              class     = 2
              text      = 'init'.
  call method add_item_detail
    exporting node_key  = &1
              item_name = 'C3'
              class     = &2
              text      = &3.
end-of-definition.

define refresh_display.
  concatenate 'LAYOUT-' &1 into ls.
  assign (ls) to <fs>.
  if n = &1.
    <fs> = c.
    call method ref_alv->set_frontend_layout
      exporting
        is_layout = layout.
    call method ref_alv->refresh_table_display.
  endif.
end-of-definition.

define set_when.
  when &1.
    method = 'LAY_CHECKBOX'.
    if not checked is initial.
      call method set_text
        exporting n = &1 i = 'C3' t = 'On' f = 'X'.
      call method me->(method)
        exporting n = &1 i = 'C3' c = checked.
    else.
      call method set_text
        exporting n = &1 i = 'C3' t = 'Off' f = 'X'.
      call method me->(method)
        exporting n = &1 i = 'C3' c = checked.
    endif.
end-of-definition.

define set_checkbox.
  concatenate 'LAYOUT-' &1 into ls.
  assign ls to <fs>.
  if n = &1.
    refresh_display <fs>.
  endif.
end-of-definition.

define set_node_when.
  when &1.
    flag = &1.
    length = &2.

    call screen 9100 starting at 30 3
                     ending at 74 13.
    if flag = 'Y'.
      concatenate 'LAYOUT-' &1 into ls.
      assign (ls) to <fs>.
      read table is into s index 1.
      <fs> = s.
      call method ref_alv->set_frontend_layout
        exporting
          is_layout = layout.
      call method ref_alv->refresh_table_display .
    endif.
end-of-definition.

define set_flag_when.
  when &1.
    if text is initial.
      create object text
        exporting
          MAX_NUMBER_CHARS       = length
          parent                 = con  .
      call method text->set_statusbar_mode
        EXPORTING
          STATUSBAR_MODE         = 0.
      call method text->set_toolbar_mode
        EXPORTING
          TOOLBAR_MODE           = 0.
    else.
      call method text->free.
      create object text
        exporting
          MAX_NUMBER_CHARS       = length
          parent                 = con  .
      call method text->set_statusbar_mode
        EXPORTING
          STATUSBAR_MODE         = 0.
      call method text->set_toolbar_mode
        EXPORTING
          TOOLBAR_MODE           = 0.
    endif.
end-of-definition.

data: con type ref to cl_gui_custom_container.
data: text type ref to cl_gui_textedit.
data: s(255) type c.
data: is like standard table of s.
data: modif type i.
data: flag(20) type c,
      length type i.

*---------------------------------------------------------------------*
*       CLASS zcl_init_screen DEFINITION
*---------------------------------------------------------------------*
*       ........                                                      *
*---------------------------------------------------------------------*
class zcl_init_screen definition.
  public section.
    data:
      sp_h type ref to cl_gui_splitter_container.
    methods:
      constructor,
      free,
      get_alv_con
        returning value(c_alv) type ref to cl_gui_container,
      get_tree_con
        returning value(c_tree) type ref to cl_gui_container.
endclass.

*---------------------------------------------------------------------*
*       CLASS zcl_init_screen IMPLEMENTATION
*---------------------------------------------------------------------*
*       ........                                                      *
*---------------------------------------------------------------------*
class zcl_init_screen implementation.
  method constructor.
    create object sp_h
      exporting
        parent  = cl_gui_custom_container=>screen0
        rows    = 1
        columns = 2
      exceptions
        cntl_error        = 1
        cntl_system_error = 2
        others            = 3
        .

    call method sp_h->set_row_sash
      exporting
        id                = 1
        type              = sp_h->type_movable
        value             = 0.
  endmethod.
  method get_alv_con.
    c_alv = sp_h->get_container( row = 1 column = 2 ).
  endmethod.
  method get_tree_con.
    c_tree = sp_h->get_container( row = 1 column = 1 ).
  endmethod.
  method free.
    call method sp_h->free.
  endmethod.
endclass.

*---------------------------------------------------------------------*
*       CLASS zcl_event DEFINITION
*---------------------------------------------------------------------*
*       ........                                                      *
*---------------------------------------------------------------------*
class zcl_event definition.
  public section.
    data:
      event type cntl_simple_event,
      events type cntl_simple_events.

    data:
      layout type lvc_s_layo.
    methods:
      constructor
        importing alv type ref to object
                  tree type ref to object,
      colu_button_click for event button_click
        of cl_gui_column_tree
        importing node_key item_name sender,
      colu_checkbox_change for event checkbox_change
        of cl_gui_column_tree
        importing node_key item_name checked,
      alv_HOTSPOT_CLICK for event HOTSPOT_CLICK
        of cl_gui_alv_grid
        importing E_ROW_ID E_COLUMN_ID ES_ROW_NO,
      add_colu_events,
      add_alv_events,
      set_handler.
  private section.
    data:
      ref_alv type ref to cl_gui_alv_grid,
      ref_tree type ref to cl_gui_column_tree,
      ref_colu type ref to cl_gui_column_tree.
    methods:
      set_text
        importing n type any i type any t type any f type c,
      lay_checkbox
        importing n type any optional
                  i type any optional
                  c type c optional.
endclass.
*---------------------------------------------------------------------*
*       CLASS zcl_event IMPLEMENTATION
*---------------------------------------------------------------------*
*       ........                                                      *
*---------------------------------------------------------------------*
class zcl_event implementation.
  method constructor.
    if not alv is initial.
      ref_alv ?= alv.
    endif.
    if not tree is initial.
      ref_tree ?= tree.
    endif.
  endmethod.
  method alv_HOTSPOT_CLICK.
    break-point.
  endmethod.
  method colu_button_click.
    data: ls(30) type c.
    data: ltab type rt_tab.
    field-symbols: <fs> type any.
    case node_key.
      when 'F'.
        if item_name = 'C2'.
        elseif item_name = 'C3'.
        endif.
      when 'L'.
        if item_name = 'C2'.
          call method ref_alv->get_frontend_layout
            importing
              es_layout = layout.

          set_text:
            layout-cwidth_opt 'CWIDTH_OPT' 'X',
            layout-smalltitle 'SMALLTITLE' 'X',
            layout-grid_title 'GRID_TITLE' ' ',
            layout-no_headers 'NO_HEADERS' 'X',
            layout-no_hgridln 'NO_HGRIDLN' 'X',
            layout-no_merging 'NO_MERGING' 'X',
            layout-no_rowmark 'NO_ROWMARK' 'X',
            layout-no_toolbar 'NO_TOOLBAR' 'X',
            layout-no_vgridln 'NO_VGRIDLN' 'X',
            layout-sel_mode 'SEL_MODE' ' ',
            layout-excp_conds 'EXCP_CONDS' 'X',
            layout-excp_fname 'EXCP_FNAME' ' ',
            layout-excp_led 'EXCP_LED' 'X',
            layout-excp_rolln 'EXCP_ROLLN' ' ',
            layout-ctab_fname 'CTAB_FNAME' ' ',
            layout-info_fname 'INFO_FNAME' ' ',
            layout-zebra 'ZEBRA' 'X',
            layout-no_totarr 'NO_TOTARR' 'X',
            layout-no_totexp 'NO_TOTEXP' 'X',
            layout-no_totline 'NO_TOTLINE' 'X',
            layout-numc_total 'NUMC_TOTAL' 'X',
            layout-totals_bef 'TOTALS_BEF' 'X',
            layout-detailinit 'DETAILINIT' 'X',
            layout-detailtitl 'DETAILTITL' ' ',
            layout-keyhot 'KEYHOT' 'X',
            layout-sgl_clk_hd 'SGL_CLK_HD' 'X',
            layout-stylefname 'STYLEFNAME' ' '.
            ref_colu = ref_tree.
            set_button: 'GRID_TITLE' ' ',
                        'SEL_MODE' ' ',
                        'EXCP_FNAME' ' ',
                        'EXCP_ROLLN' ' ',
                        'CTAB_FNAME' ' ',
                        'INFO_FNAME' ' ',
                        'DETAILTITL' ' ',
                        'S_DRAGDROP' ' ',
                        'STYLEFNAME' ' '.
*          call method ref_tree->item_set_text
*            exporting
*              node_key          = 'S_DRAGDROP'
*              item_name         = 'C2'
*              text              = layout-S_DRAGDROP   .

        elseif item_name = 'C3'.
        endif.
      set_node_when: 'GRID_TITLE' 70,
                     'SEL_MODE' 1,
                     'EXCP_FNAME' 30,
                     'EXCP_ROLLN' 30,
                     'INFO_FNAME' 30,
                     'CTAB_FNAME' 30,
                     'DETAILTITL' 30.
    endcase.
  endmethod.
  method colu_checkbox_change.
    data: method(20) type c.
    case node_key.
      set_when: 'CWIDTH_OPT',
                'SMALLTITLE',
                'NO_HEADERS',
                'NO_HGRIDLN',
                'NO_MERGING',
                'NO_ROWMARK',
                'NO_TOOLBAR',
                'NO_VGRIDLN',
                'EXCP_CONDS',
                'EXCP_LED',
                'ZEBRA',
                'NO_TOTARR',
                'NO_TOTEXP',
                'NO_TOTLINE',
                'NUMC_TOTAL',
                'TOTALS_BEF',
                'KEYHOT',
                'SGL_CLK_HD',
                'DETAILINIT'.
    endcase.
  endmethod.
  method lay_checkbox.
    data: ls(30) type c.
    field-symbols <fs> type any.

    refresh_display:
      'CWIDTH_OPT',
      'SMALLTITLE',
      'NO_HEADERS',
      'NO_HGRIDLN',
      'NO_MERGING',
      'NO_ROWMARK',
      'NO_TOOLBAR',
      'NO_VGRIDLN',
      'EXCP_CONDS',
      'EXCP_LED',
      'ZEBRA',
      'NO_TOTARR',
      'NO_TOTEXP',
      'NO_TOTLINE',
      'NUMC_TOTAL',
      'DETAILINIT',
      'TOTALS_BEF',
      'KEYHOT',
      'SGL_CLK_HD',
      'DETAILINIT'.
  endmethod.
  method set_text.
    call method ref_tree->item_set_text
      exporting
        node_key          = n
        item_name         = i
        text              = t   .
    check i = 'C3' and f = 'X'.
    call method ref_tree->item_set_editable
      exporting
        node_key          = n
        item_name         = i
        editable          = 'X'.
  endmethod.
  method add_alv_events.
*    clear:event,events.
*    event-eventid = CL_GUI_ALV_GRID=>eventid_link_click.
*    event-appl_event = 'X'.                                   "
*    append event to events.
  endmethod.
  method add_colu_events.
    clear:event,events.
    event-eventid = cl_gui_column_tree=>eventid_link_click.
    event-appl_event = 'X'.                                   "
    append event to events.

    event-eventid = cl_gui_column_tree=>eventid_button_click.
    event-appl_event = 'X'.
    append event to events.

    event-eventid = cl_gui_column_tree=>eventid_checkbox_change.
    event-appl_event = 'X'.
    append event to events.
  endmethod.
  method set_handler.
    set handler me->colu_button_click for ref_tree.
    set handler me->colu_checkbox_change for ref_tree.
  endmethod.
endclass.

*---------------------------------------------------------------------*
*       CLASS zcl_tree DEFINITION
*---------------------------------------------------------------------*
*       ........                                                      *
*---------------------------------------------------------------------*
class zcl_tree definition.
  public section.
    data:
      l_node_t type treev_ntab,
      l_item_t type standard table of mtreeitm with default key,
      con type ref to cl_gui_container,
      ref_colu type ref to cl_gui_column_tree.
    methods:
      constructor
        importing ref_init type ref to zcl_init_screen,
      add_data,
      show_data,
      free.
  private section.
    methods:
      add_node,
      add_item,
      add_node_detail
        importing node_key  type tv_nodekey
                  relatkey  type tv_nodekey optional
                  relatship type int4 optional
                  isfolder  type as4flag optional,
      add_item_detail
        importing node_key  type tv_nodekey
                  item_name type tv_itmname
                  class     type int4 optional
                  text      type scrpcha72
                  t_image   type tv_image optional
                  editable  type as4flag optional.
endclass.
*---------------------------------------------------------------------*
*       CLASS zcl_tree IMPLEMENTATION
*---------------------------------------------------------------------*
*       ........                                                      *
*---------------------------------------------------------------------*
class zcl_tree implementation.
  method constructor.
    data: hierarchy_header type treev_hhdr.

    call method ref_init->get_tree_con
      receiving c_tree = con.

    hierarchy_header-heading = text-001.
    hierarchy_header-width = 30.

    create object ref_colu
      exporting
        parent                      = con
        node_selection_mode         = 0
        item_selection              = 'X'
        hierarchy_column_name       = 'C1'
        hierarchy_header            = hierarchy_header
      exceptions
        lifetime_error              = 1
        cntl_system_error           = 2
        create_error                = 3
        illegal_node_selection_mode = 4
        failed                      = 5
        illegal_column_name         = 6
        others                      = 7
        .
    if sy-subrc <> 0.
*     Processing error
    endif.
*   Add data to tree
    call method add_data.
*   Display tree data
    call method show_data.
  endmethod.
  method add_data.
    data: node type treev_node,
          item type mtreeitm.
*   Add columns to tree
    call method ref_colu->add_column
      exporting
        name = 'C2'
        width = 20
        header_text = 'Document'.
    call method ref_colu->add_column
      exporting
        name = 'C3'
        width = 21
        header_text = 'Value'.
*   Add node data to tree
    call method add_node.
*   Add item data to tree
    call method add_item.
  endmethod.
  method add_node.
*   For field catelog
    call method add_node_detail
      exporting node_key = 'F'
                isfolder = 'X'.
    call method add_node_detail
      exporting node_key = 'FIELDNAME'
                relatkey = 'F'.
    call method add_node_detail
      exporting node_key = 'REF_FIELD'
                relatkey = 'F'.
    call method add_node_detail
      exporting node_key = 'REF_TABLE'
                relatkey = 'F'.
    call method add_node_detail
      exporting node_key = 'CHECKBOX'
                relatkey = 'F'.
    call method add_node_detail
      exporting node_key = 'COL_POS'
                relatkey = 'F'.
    call method add_node_detail
      exporting node_key = 'DO_SUM'
                relatkey = 'F'.
    call method add_node_detail
      exporting node_key = 'EMPHASIZE'
                relatkey = 'F'.
    call method add_node_detail
      exporting node_key = 'HOTSPOT'
                relatkey = 'F'.
    call method add_node_detail
      exporting node_key = 'HREF_HNDL'
                relatkey = 'F'.
    call method add_node_detail
      exporting node_key = 'KEY'
                relatkey = 'F'.
    call method add_node_detail
      exporting node_key = 'LOWERCASE'
                relatkey = 'F'.
    call method add_node_detail
      exporting node_key = 'NO_OUT'
                relatkey = 'F'.
    call method add_node_detail
      exporting node_key = 'NO_MERG'
                relatkey = 'F'.
    call method add_node_detail
      exporting node_key = 'NO_SUM'
                relatkey = 'F'.
    call method add_node_detail
      exporting node_key = 'OUTPUTLEN'
                relatkey = 'F'.
    call method add_node_detail
      exporting node_key = 'STYLE'
                relatkey = 'F'.
    call method add_node_detail
      exporting node_key = 'TECH'
                relatkey = 'F'.
    call method add_node_detail
      exporting node_key = 'DECIMALS_O'
                relatkey = 'F'.
    call method add_node_detail
      exporting node_key = 'DECMFIELD'
                relatkey = 'F'.
    call method add_node_detail
      exporting node_key = 'EDIT_MASK'
                relatkey = 'F'.
    call method add_node_detail
      exporting node_key = 'ICON'
                relatkey = 'F'.
    call method add_node_detail
      exporting node_key = 'JUST'
                relatkey = 'F'.
    call method add_node_detail
      exporting node_key = 'LZERO'
                relatkey = 'F'.
    call method add_node_detail
      exporting node_key = 'NO_SIGN'
                relatkey = 'F'.
    call method add_node_detail
      exporting node_key = 'NO_ZERO'
                relatkey = 'F'.
    call method add_node_detail
      exporting node_key = 'COLDDICTXT'
                relatkey = 'F'.
    call method add_node_detail
      exporting node_key = 'COLTEXT'
                relatkey = 'F'.
    call method add_node_detail
      exporting node_key = 'REPTEXT'
                relatkey = 'F'.
    call method add_node_detail
      exporting node_key = 'SCRTEXT_L'
                relatkey = 'F'.
    call method add_node_detail
      exporting node_key = 'SCRTEXT_M'
                relatkey = 'F'.
    call method add_node_detail
      exporting node_key = 'SCRTEXT_S'
                relatkey = 'F'.
    call method add_node_detail
      exporting node_key = 'SELDDICTXT'
                relatkey = 'F'.
    call method add_node_detail
      exporting node_key = 'SELTEXT'
                relatkey = 'F'.
    call method add_node_detail
      exporting node_key = 'TIPDDICTXT'
                relatkey = 'F'.
    call method add_node_detail
      exporting node_key = 'TOOLTIP'
                relatkey = 'F'.
    call method add_node_detail
      exporting node_key = 'INTTYPE'
                relatkey = 'F'.
    call method add_node_detail
      exporting node_key = 'SP_GROUP'
                relatkey = 'F'.

*   For alv layout
    call method add_node_detail
      exporting node_key = 'L'
                isfolder = 'X'.
    call method add_node_detail
      exporting node_key = 'CWIDTH_OPT'
                relatkey = 'L'.
    call method add_node_detail
      exporting node_key = 'SMALLTITLE'
                relatkey = 'L'.
    call method add_node_detail
      exporting node_key = 'GRID_TITLE'
                relatkey = 'L'.
    call method add_node_detail
      exporting node_key = 'NO_HEADERS'
                relatkey = 'L'.
    call method add_node_detail
      exporting node_key = 'NO_HGRIDLN'
                relatkey = 'L'.
    call method add_node_detail
      exporting node_key = 'NO_MERGING'
                relatkey = 'L'.
    call method add_node_detail
      exporting node_key = 'NO_ROWMARK'
                relatkey = 'L'.
    call method add_node_detail
      exporting node_key = 'NO_TOOLBAR'
                relatkey = 'L'.
    call method add_node_detail
      exporting node_key = 'NO_VGRIDLN'
                relatkey = 'L'.
    call method add_node_detail
      exporting node_key = 'SEL_MODE'
                relatkey = 'L'.
    call method add_node_detail
      exporting node_key = 'EXCP_CONDS'
                relatkey = 'L'.
    call method add_node_detail
      exporting node_key = 'EXCP_FNAME'
                relatkey = 'L'.
    call method add_node_detail
      exporting node_key = 'EXCP_LED'
                relatkey = 'L'.
    call method add_node_detail
      exporting node_key = 'EXCP_ROLLN'
                relatkey = 'L'.
    call method add_node_detail
      exporting node_key = 'CTAB_FNAME'
                relatkey = 'L'.
    call method add_node_detail
      exporting node_key = 'INFO_FNAME'
                relatkey = 'L'.
    call method add_node_detail
      exporting node_key = 'ZEBRA'
                relatkey = 'L'.
    call method add_node_detail
      exporting node_key = 'NO_TOTARR'
                relatkey = 'L'.
    call method add_node_detail
      exporting node_key = 'NO_TOTEXP'
                relatkey = 'L'.
    call method add_node_detail
      exporting node_key = 'NO_TOTLINE'
                relatkey = 'L'.
    call method add_node_detail
      exporting node_key = 'NUMC_TOTAL'
                relatkey = 'L'.
    call method add_node_detail
      exporting node_key = 'TOTALS_BEF'
                relatkey = 'L'.
    call method add_node_detail
      exporting node_key = 'DETAILINIT'
                relatkey = 'L'.
    call method add_node_detail
      exporting node_key = 'DETAILTITL'
                relatkey = 'L'.
    call method add_node_detail
      exporting node_key = 'S_DRAGDROP'
                relatkey = 'L'.
    call method add_node_detail
      exporting node_key = 'KEYHOT'
                relatkey = 'L'.
    call method add_node_detail
      exporting node_key = 'SGL_CLK_HD'
                relatkey = 'L'.
    call method add_node_detail
      exporting node_key = 'STYLEFNAME'
                relatkey = 'L'.
*   For alv variant
    call method add_node_detail
      exporting node_key = 'V'
                isfolder = 'X'.
*   For alv filter
    call method add_node_detail
      exporting node_key = 'FI'
                isfolder = 'X'.
    call method add_node_detail
      exporting node_key = 'STR1'
                relatkey = 'FI'
                isfolder = 'X'.
    call method add_node_detail
      exporting node_key = 'FIELDNAME2'
                relatkey = 'STR1'.
    call method add_node_detail
      exporting node_key = 'SIGN'
                relatkey = 'STR1'.
    call method add_node_detail
      exporting node_key = 'OPTION'
                relatkey = 'STR1'.
    call method add_node_detail
      exporting node_key = 'LOW'
                relatkey = 'STR1'.
    call method add_node_detail
      exporting node_key = 'HIGH'
                relatkey = 'STR1'.
*   For alv sorts
    call method add_node_detail
      exporting node_key = 'S'
                isfolder = 'X'.
    call method add_node_detail
      exporting node_key = 'STR'
                relatkey = 'S'
                isfolder = 'X'.
    call method add_node_detail
      exporting node_key = 'SPOS'
                relatkey = 'STR'.
    call method add_node_detail
      exporting node_key = 'FIELDNAME1'
                relatkey = 'STR'.
    call method add_node_detail
      exporting node_key = 'UP'
                relatkey = 'STR'.
    call method add_node_detail
      exporting node_key = 'DOWN'
                relatkey = 'STR'.
  endmethod.
  method add_item.
    call method add_item_detail
      exporting node_key  = 'F'
                item_name = 'C1'
                class     = 2
                text      = text-i01.
    call method add_item_detail
      exporting node_key  = 'F'
                item_name = 'C3'
                class     = 4
                text      = text-c01.
    call method add_item_detail
      exporting node_key  = 'F'
                item_name = 'C2'
                class     = 4
                text      = text-c05.
    call method add_item_detail
      exporting node_key  = 'FIELDNAME'
                item_name = 'C1'
                class     = 2
                text      = text-f01.
    call method add_item_detail
      exporting node_key  = 'FIELDNAME'
                item_name = 'C2'
                class     = 2
                text      = text-c02.
    call method add_item_detail
      exporting node_key  = 'REF_FIELD'
                item_name = 'C1'
                class     = 2
                text      = text-f02.
    call method add_item_detail
      exporting node_key  = 'REF_FIELD'
                item_name = 'C2'
                class     = 2
                text      = text-c02.
    call method add_item_detail
      exporting node_key  = 'REF_TABLE'
                item_name = 'C1'
                class     = 2
                text      = text-f03.
    call method add_item_detail
      exporting node_key  = 'REF_TABLE'
                item_name = 'C2'
                class     = 2
                text      = text-c02.
    call method add_item_detail
      exporting node_key  = 'CHECKBOX'
                item_name = 'C1'
                class     = 2
                text      = text-f04.
    call method add_item_detail
      exporting node_key  = 'CHECKBOX'
                item_name = 'C2'
                class     = 3
                editable  = 'X'
                text      = text-c03.
    call method add_item_detail
      exporting node_key  = 'COL_POS'
                item_name = 'C1'
                class     = 2
                text      = text-f05.
    call method add_item_detail
      exporting node_key  = 'DO_SUM'
                item_name = 'C1'
                class     = 2
                text      = text-f06.
    call method add_item_detail
      exporting node_key  = 'EMPHASIZE'
                item_name = 'C1'
                class     = 2
                text      = text-f07.
    call method add_item_detail
      exporting node_key  = 'HOTSPOT'
                item_name = 'C1'
                class     = 2
                text      = text-f08.
    call method add_item_detail
      exporting node_key  = 'HREF_HNDL'
                item_name = 'C1'
                class     = 2
                text      = text-f09.
    call method add_item_detail
      exporting node_key  = 'KEY'
                item_name = 'C1'
                class     = 2
                text      = text-f10.
    call method add_item_detail
      exporting node_key  = 'LOWERCASE'
                item_name = 'C1'
                class     = 2
                text      = text-f11.
    call method add_item_detail
      exporting node_key  = 'NO_OUT'
                item_name = 'C1'
                class     = 2
                text      = text-f12.
    call method add_item_detail
      exporting node_key  = 'NO_MERGING'
                item_name = 'C1'
                class     = 2
                text      = text-f13.
    call method add_item_detail
      exporting node_key  = 'NO_SUM'
                item_name = 'C1'
                class     = 2
                text      = text-f14.
    call method add_item_detail
      exporting node_key  = 'OUTPUTLEN'
                item_name = 'C1'
                class     = 2
                text      = text-f15.
    call method add_item_detail
      exporting node_key  = 'STYLE'
                item_name = 'C1'
                class     = 2
                text      = text-f16.
    call method add_item_detail
      exporting node_key  = 'TECH'
                item_name = 'C1'
                class     = 2
                text      = text-f17.
    call method add_item_detail
      exporting node_key  = 'DECIMALS_O'
                item_name = 'C1'
                class     = 2
                text      = text-f18.
    call method add_item_detail
      exporting node_key  = 'DECMFIELD'
                item_name = 'C1'
                class     = 2
                text      = text-f19.
    call method add_item_detail
      exporting node_key  = 'EDIT_MASK'
                item_name = 'C1'
                class     = 2
                text      = text-f20.
    call method add_item_detail
      exporting node_key  = 'ICON'
                item_name = 'C1'
                class     = 2
                text      = text-f21.
    call method add_item_detail
      exporting node_key  = 'JUST'
                item_name = 'C1'
                class     = 2
                text      = text-f22.
    call method add_item_detail
      exporting node_key  = 'LZERO'
                item_name = 'C1'
                class     = 2
                text      = text-f23.
    call method add_item_detail
      exporting node_key  = 'NO_SIGN'
                item_name = 'C1'
                class     = 2
                text      = text-f24.
    call method add_item_detail
      exporting node_key  = 'NO_ZERO'
                item_name = 'C1'
                class     = 2
                text      = text-f25.
    call method add_item_detail
      exporting node_key  = 'COLDDICTXT'
                item_name = 'C1'
                class     = 2
                text      = text-f26.
    call method add_item_detail
      exporting node_key  = 'COLTEXT'
                item_name = 'C1'
                class     = 2
                text      = text-f27.
    call method add_item_detail
      exporting node_key  = 'REPTEXT'
                item_name = 'C1'
                class     = 2
                text      = text-f28.
    call method add_item_detail
      exporting node_key  = 'SCRTEXT_L'
                item_name = 'C1'
                class     = 2
                text      = text-f29.
    call method add_item_detail
      exporting node_key  = 'SCRTEXT_M'
                item_name = 'C1'
                class     = 2
                text      = text-f30.
    call method add_item_detail
      exporting node_key  = 'SCRTEXT_S'
                item_name = 'C1'
                class     = 2
                text      = text-f31.
    call method add_item_detail
      exporting node_key  = 'SELDDICTXT'
                item_name = 'C1'
                class     = 2
                text      = text-f32.
    call method add_item_detail
      exporting node_key  = 'SELTEXT'
                item_name = 'C1'
                class     = 2
                text      = text-f33.
    call method add_item_detail
      exporting node_key  = 'TIPDDICTXT'
                item_name = 'C1'
                class     = 2
                text      = text-f34.
    call method add_item_detail
      exporting node_key  = 'TOOLTIP'
                item_name = 'C1'
                class     = 2
                text      = text-f35.
    call method add_item_detail
      exporting node_key  = 'INTTYPE'
                item_name = 'C1'
                class     = 2
                text      = text-f36.
    call method add_item_detail
      exporting node_key  = 'SP_GROUP'
                item_name = 'C1'
                class     = 2
                text      = text-f37.
    call method add_item_detail
      exporting node_key  = 'L'
                item_name = 'C1'
                class     = 2
                text      = text-i02.
call method add_item_detail
      exporting node_key  = 'L'
                item_name = 'C3'
                class     = 4
                text      = text-c01.
    call method add_item_detail
      exporting node_key  = 'L'
                item_name = 'C2'
                class     = 4
                text      = text-c05.
    call method add_item_detail
      exporting node_key  = 'NO_MERG'
                item_name = 'C1'
                class     = 2
                text      = text-l06.
    call method add_item_detail
      exporting node_key  = 'NO_MERGING'
                item_name = 'C2'
                class     = 2
                text      = 'init'.
    call method add_item_detail
      exporting node_key  = 'NO_MERGING'
                item_name = 'C3'
                class     = 3
                text      = 'init'.
    add_item_detail:
      'CWIDTH_OPT' '3' 'init' text-l01,
      'SMALLTITLE' '3' 'init' text-l02,
      'GRID_TITLE' '4' 'Change' text-l03,
      'NO_HEADERS' '3' 'init' text-l04,
      'NO_HGRIDLN' '3' 'init' text-l05,
      'NO_ROWMARK' '3' 'init' text-l07,
      'NO_TOOLBAR' '3' 'init' text-l08,
      'NO_VGRIDLN' '3' 'init' text-l09,
      'SEL_MODE' '4' 'Change' text-l10,
      'EXCP_CONDS' '3' 'init' text-l11,
      'EXCP_FNAME' '4' 'Change' text-l12,
      'EXCP_LED' '3' 'init' text-l13,
      'EXCP_ROLLN' '4' 'Change' text-l14,
      'CTAB_FNAME' '4' 'Change' text-l15,
      'INFO_FNAME' '4' 'Change' text-l16,
      'ZEBRA' '3' 'init' text-l17,
      'NO_TOTARR' '3' 'init' text-l18,
      'NO_TOTEXP' '3' 'init' text-l19,
      'NO_TOTLINE' '3' 'init' text-l20,
      'NUMC_TOTAL' '3' 'init' text-l21,
      'TOTALS_BEF' '3' 'init' text-l22,
      'DETAILINIT' '3' 'init' text-l23,
      'DETAILTITL' '4' 'Change' text-l24,
      'S_DRAGDROP' '4' 'Change' text-l25,
      'KEYHOT' '3' 'init' text-l26,
      'SGL_CLK_HD' '3' 'init' text-l27,
      'STYLEFNAME' '4' 'Change' text-l28.

    call method add_item_detail
      exporting node_key  = 'V'
                item_name = 'C1'
                class     = 2
                text      = text-i03.
    call method add_item_detail
      exporting node_key  = 'V'
                item_name = 'C3'
                class     = 4
                text      = text-c01.
    call method add_item_detail
      exporting node_key  = 'V'
                item_name = 'C2'
                class     = 4
                text      = text-c05.

    call method add_item_detail
      exporting node_key  = 'FI'
                item_name = 'C1'
                class     = 2
                text      = text-i04.
    call method add_item_detail
      exporting node_key  = 'FIELDNAME2'
                item_name = 'C1'
                class     = 2
                text      = 'FIELDNAME'.
    call method add_item_detail
      exporting node_key  = 'FIELDNAME2'
                item_name = 'C2'
                class     = 2
                text      = 'Field name for filter'.
    call method add_item_detail
      exporting node_key  = 'SIGN'
                item_name = 'C1'
                class     = 2
                text      = 'SIGN'.
    call method add_item_detail
      exporting node_key  = 'SIGN'
                item_name = 'C2'
                class     = 2
                text      = '''E'',''I'''.
    call method add_item_detail
      exporting node_key  = 'OPTION'
                item_name = 'C1'
                class     = 2
                text      = 'OPTION'.
    call method add_item_detail
      exporting node_key  = 'OPTION'
                item_name = 'C2'
                class     = 2
                text      = '''BT'',''EQ'''.
    call method add_item_detail
      exporting node_key  = 'LOW'
                item_name = 'C1'
                class     = 2
                text      = 'LOW'.
    call method add_item_detail
      exporting node_key  = 'LOW'
                item_name = 'C2'
                class     = 2
                text      = 'Text (80 characters)'.
    call method add_item_detail
      exporting node_key  = 'HIGH'
                item_name = 'C1'
                class     = 2
                text      = 'HIGH'  .
    call method add_item_detail
      exporting node_key  = 'HIGH'
                item_name = 'C2'
                class     = 2
                text      = 'Text (80 characters)'  .

    call method add_item_detail
      exporting node_key  = 'S'
                item_name = 'C1'
                class     = 2
                text      = text-i05.
    call method add_item_detail
      exporting node_key  = 'S'
                item_name = 'C2'
                class     = 2
                text      = 'LVC_S_SORT'.
    call method add_item_detail
      exporting node_key  = 'FI'
                item_name = 'C2'
                class     = 2
                text      = 'LVC_S_FILT'.
    call method add_item_detail
      exporting node_key  = 'STR'
                item_name = 'C1'
                class     = 2
                text      = 'Structure'.
    call method add_item_detail
      exporting node_key  = 'STR1'
                item_name = 'C1'
                class     = 2
                text      = 'Structure'.
    call method add_item_detail
      exporting node_key  = 'SPOS'
                item_name = 'C1'
                class     = 2
                text      = text-d01.
    call method add_item_detail
      exporting node_key  = 'SPOS'
                item_name = 'C2'
                class     = 2
                text      = 'Sort sequence'.
    call method add_item_detail
      exporting node_key  = 'FIELDNAME1'
                item_name = 'C1'
                class     = 2
                text      = text-d02.
    call method add_item_detail
      exporting node_key  = 'FIELDNAME1'
                item_name = 'C2'
                class     = 2
                text      = 'Sorted field name'.
    call method add_item_detail
      exporting node_key  = 'UP'
                item_name = 'C1'
                class     = 2
                text      = text-d03.
    call method add_item_detail
      exporting node_key  = 'UP'
                item_name = 'C2'
                class     = 2
                text      = 'Asscending is ''X'''.
    call method add_item_detail
      exporting node_key  = 'DOWN'
                item_name = 'C1'
                class     = 2
                text      = text-d04.
    call method add_item_detail
      exporting node_key  = 'DOWN'
                item_name = 'C2'
                class     = 2
                text      = 'Asscending is ''X'''.
    call method add_item_detail
      exporting node_key  = 'STR'
                item_name = 'C2'
                class     = 2
                text      = 'Field description'.
    call method add_item_detail
      exporting node_key  = 'STR1'
                item_name = 'C2'
                class     = 2
                text      = 'Field description'.

  endmethod.
  method add_node_detail.
    data: node type treev_node.
    node-node_key = node_key.
    node-relatkey = relatkey.
    node-relatship = relatship.
    node-isfolder = isfolder.
    append node to l_node_t.
  endmethod.
  method add_item_detail.
    data:item type mtreeitm.
    item-node_key = node_key.
    item-item_name = item_name.
    item-class = class.
    item-text = text.
    item-t_image = t_image.
    item-editable = editable.
    append item to l_item_t.
  endmethod.
  method show_data.
    call method ref_colu->add_nodes_and_items
      exporting
        node_table = l_node_t
        item_table = l_item_t
        item_table_structure_name = 'MTREEITM'.
    set_button: 'GRID_TITLE' 'X',
                'SEL_MODE' 'X',
                'EXCP_FNAME' 'X',
                'EXCP_ROLLN' 'X',
                'CTAB_FNAME' 'X',
                'INFO_FNAME' 'X',
                'DETAILTITL' 'X',
                'S_DRAGDROP' 'X',
                'STYLEFNAME' 'X'.
  endmethod.
  method free.
  endmethod.
endclass.

*---------------------------------------------------------------------*
*       CLASS zalv_grid DEFINITION
*---------------------------------------------------------------------*
*       ........                                                      *
*---------------------------------------------------------------------*
class zalv_grid definition inheriting from cl_gui_alv_grid.
  public section.
    methods:
      constructor
        importing par type ref to cl_gui_container.
endclass.
*---------------------------------------------------------------------*
*       CLASS zalv_grid IMPLEMENTATION
*---------------------------------------------------------------------*
*       ........                                                      *
*---------------------------------------------------------------------*
class zalv_grid implementation.
  method constructor.
    call method super->constructor
      exporting i_parent = par.
  endmethod.
endclass.
*---------------------------------------------------------------------*
*       CLASS zcl_alv DEFINITION
*---------------------------------------------------------------------*
*       ........                                                      *
*---------------------------------------------------------------------*
class zcl_alv definition.
  public section.
    data: it_tab type standard table of rt_tab,
          st_tab type rt_tab.
    data:
      con type ref to cl_gui_container,
      ref_alv type ref to zalv_grid.

    data:
      it_fieldcat type lvc_t_fcat,
      fieldcat type lvc_s_fcat,
      layout type lvc_s_layo.

    methods:
      constructor importing
        ref_init type ref to zcl_init_screen,
      refresh_data.
  private section.
    methods:
      init_fieldcat,
      init_layout,
      get_variant,
      build_sort,
      build_filter,
      add_data,
      show_data.
endclass.
*---------------------------------------------------------------------*
*       CLASS zcl_alv IMPLEMENTATION
*---------------------------------------------------------------------*
*       ........                                                      *
*---------------------------------------------------------------------*
class zcl_alv implementation.
  method constructor.
    call method ref_init->get_alv_con
      receiving c_alv = con.
    create object ref_alv
      exporting par = con.
    call method init_fieldcat.
    call method init_layout.
    call method get_variant.
    call method build_sort.
    call method build_filter.
    call method add_data.
    call method show_data.
  endmethod.
  method init_fieldcat.
    clear: fieldcat.
    fieldcat-col_pos = '1'.
    fieldcat-fieldname = 'EXCP'.
    fieldcat-key = 'X'.
    fieldcat-COLTEXT = 'Exceptions'.
    append fieldcat to it_fieldcat.
    clear: fieldcat.
    fieldcat-col_pos = '2'.
    fieldcat-fieldname = 'EBELN'.
    fieldcat-ref_field = 'EBELN'.
    fieldcat-ref_table = 'EKPO'.
    fieldcat-key = 'X'.
    append fieldcat to it_fieldcat.
    clear: fieldcat.
    fieldcat-col_pos = '3'.
    fieldcat-fieldname = 'EBELP'.
    fieldcat-ref_field = 'EBELP'.
    fieldcat-ref_table = 'EKPO'.
    append fieldcat to it_fieldcat.
    clear: fieldcat.
    fieldcat-col_pos = '4'.
    fieldcat-fieldname = 'MATNR'.
    fieldcat-ref_field = 'MATNR'.
    fieldcat-ref_table = 'EKPO'.
    append fieldcat to it_fieldcat.
    clear: fieldcat.
    fieldcat-col_pos = '5'.
    fieldcat-fieldname = 'BUKRS'.
    fieldcat-ref_field = 'BUKRS'.
    fieldcat-ref_table = 'EKPO'.
    append fieldcat to it_fieldcat.
    clear: fieldcat.
    fieldcat-col_pos = '6'.
    fieldcat-fieldname = 'MENGE'.
    fieldcat-ref_field = 'MENGE'.
    fieldcat-ref_table = 'EKPO'.
    append fieldcat to it_fieldcat.
    clear: fieldcat.
    fieldcat-col_pos = '7'.
    fieldcat-fieldname = 'MEINS'.
    fieldcat-ref_field = 'MEINS'.
    fieldcat-ref_table = 'EKPO'.
    append fieldcat to it_fieldcat.
  endmethod.
  method init_layout.
    layout-grid_title = 'test'.
  endmethod.
  method get_variant.
  endmethod.
  method build_sort.
  endmethod.
  method build_filter.
  endmethod.
  method add_data.
    data: ls type lvc_s_scol.
    clear sy-tabix.
    select ebeln ebelp matnr bukrs menge meins
      from ekpo
      into (st_tab-ebeln, st_tab-ebelp, st_tab-matnr,
      st_tab-bukrs, st_tab-menge, st_tab-meins).
      if sy-tabix > 200.
        exit.
      endif.
      append st_tab to it_tab.
    endselect.
    sort it_tab by ebeln.
    loop at it_tab into st_tab.
*     For coloring a row
      st_tab-excp = sy-tabix mod 3 + 1.
      st_tab-rowc+0(1) = 'C'.
      st_tab-rowc+1(1) = sy-tabix mod 7 + 1.
      st_tab-rowc+2(2) = '10'.
*     For coloring a cell
      if sy-tabix = 2.
        ls-fname = 'MENGE'.
        ls-color-col = '6'.
        ls-color-int = '1'.
        append ls to st_tab-cc.
      endif.
*     For coloring all column
      ls-fname = 'MATNR'.
      ls-color-col = '7'.
      ls-color-int = '1'.
      append ls to st_tab-cc.
      modify it_tab from st_tab.
    endloop.
  endmethod.
  method show_data.
    call method ref_alv->set_table_for_first_display
      exporting
*        I_BYPASSING_BUFFER            =
*        I_BUFFER_ACTIVE               =
*        I_CONSISTENCY_CHECK           =
*        I_STRUCTURE_NAME              =
*        IS_VARIANT                    =
*        I_SAVE                        =
*        I_DEFAULT                     = 'X'
        is_layout                     = layout
*        IS_PRINT                      =
*        IT_SPECIAL_GROUPS             =
*        IT_TOOLBAR_EXCLUDING          =
*        IT_HYPERLINK                  =
*        IT_ALV_GRAPHICS               =
*        IT_EXCEPT_QINFO               =
      changing
        it_outtab                     = it_tab
        it_fieldcatalog               = it_fieldcat
*        IT_SORT                       =
*        IT_FILTER                     =
*      EXCEPTIONS
*        INVALID_PARAMETER_COMBINATION = 1
*        PROGRAM_ERROR                 = 2
*        TOO_MANY_LINES                = 3
*        others                        = 4
            .
    if sy-subrc <> 0.
*     MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
*                WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
    endif.

  endmethod.
  method refresh_data.
  endmethod.
endclass.

*---------------------------------------------------------------------*
*       CLASS zcl_excute DEFINITION
*---------------------------------------------------------------------*
*       ........                                                      *
*---------------------------------------------------------------------*
class zcl_excute definition.
  public section.
    data:
      ref_screen type ref to zcl_init_screen,
      ref_tree type ref to zcl_tree,
      ref_alv type ref to zcl_alv,
      ref_event type ref to zcl_event.
    methods:
      constructor.
endclass.
*---------------------------------------------------------------------*
*       CLASS zcl_excute IMPLEMENTATION
*---------------------------------------------------------------------*
*       ........                                                      *
*---------------------------------------------------------------------*
class zcl_excute implementation.
  method constructor.
    create object ref_screen.
    create object ref_tree
      exporting ref_init = ref_screen.
    create object ref_alv
      exporting ref_init = ref_screen.
    create object ref_event
      exporting alv = ref_alv->ref_alv
                tree = ref_tree->ref_colu.
    call method ref_event->add_colu_events.

    call method ref_tree->ref_colu->set_registered_events
      exporting
        events = ref_event->events
      exceptions
        cntl_error                = 1
        cntl_system_error         = 2
        illegal_event_combination = 3.
    call method ref_event->set_handler.
  endmethod.
endclass.

data:
  ok_code like sy-ucomm,
  ref_excute type ref to zcl_excute.

start-of-selection.

  call screen 9000.
*&---------------------------------------------------------------------*
*&      Module  STATUS_9000  OUTPUT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
module status_9000 output.
  set pf-status 'ST9000'.
  set titlebar 'ALV'.
  if ref_excute is initial.
    create object ref_excute.
  endif.
endmodule.                 " STATUS_9000  OUTPUT
*&---------------------------------------------------------------------*
*&      Module  USER_COMMAND_9000  INPUT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
module user_command_9000 input.
  case ok_code.
    when 'BACK'.
      leave program.
  endcase.
endmodule.                 " USER_COMMAND_9000  INPUT
*&---------------------------------------------------------------------*
*&      Module  USER_COMMAND_9100  INPUT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
module USER_COMMAND_9100 input.
  case ok_code.
    when 'CONF'.
      clear: s, is.
      call method text->get_text_as_stream
        IMPORTING
          TEXT                   = is
          IS_MODIFIED            = modif.
      if modif <> 0.
        flag = 'Y'.
      else.
        flag = 'N'.
      endif.
      leave to screen 0.
    when 'CANC'.
      flag = 'N'.
      leave to screen 0.
  endcase.
endmodule.                 " USER_COMMAND_9100  INPUT
*&---------------------------------------------------------------------*
*&      Module  STATUS_9100  OUTPUT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
module STATUS_9100 output.
  if con is initial.
    create object con
      exporting
        container_name              = 'CON'.
  endif.
  case flag.
    set_flag_when 'GRID_TITLE'.
    set_flag_when 'SEL_MODE'.
    set_flag_when 'EXCP_FNAME'.
    set_flag_when 'EXCP_ROLLN'.
    set_flag_when 'INFO_FNAME'.
    set_flag_when 'CTAB_FNAME'.
    set_flag_when 'DETAILTITL'.
  endcase.
endmodule.                 " STATUS_9100  OUTPUT
Back to top
View user's profile Send private message
Display posts from previous:   
Post new topic   Reply to topic    Russian ABAP Developer's Club Forum Index -> ALV Grid / ALV Tree / ALV List All times are GMT + 4 Hours
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum
You cannot attach files in this forum
You can download files in this forum


All product names are trademarks of their respective companies. SAPNET.RU websites are in no way affiliated with SAP AG.
SAP, SAP R/3, R/3 software, mySAP, ABAP, BAPI, xApps, SAP NetWeaver and any other are registered trademarks of SAP AG.
Every effort is made to ensure content integrity. Use information on this site at your own risk.