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
屏幕属性
9000
PROCESS BEFORE OUTPUT.
MODULE STATUS_9000.
*
PROCESS AFTER INPUT.
MODULE USER_COMMAND_9000.
9100
PROCESS BEFORE OUTPUT.
MODULE STATUS_9100.
*
PROCESS AFTER INPUT.
MODULE USER_COMMAND_9100.
Status: