You are on page 1of 30

.ALV ...................................................................................................................

2
.ALV GRID CONTROL (ALV ).................................................................................................... 2
.ALV GRID CONTROL ...................................................................................................................... 2

ALV GRID ......................................................................................3


1. [Field catalog]........................................................................................................................ 3
2.[layout]..................................................................................................................................... 5
3.,................................................................................................................................ 6

. ALV ..................................................................................................... 6
ALV .............................................................................................................. 7
: SCREEN,,CONTAINER...................................................................7
: ALV ......................................................................................... 7
,............................................................................................................... 10
,........................................................................................................................................ 11
,..................................................................................................................... 11

:.......................................................................................................................... 12
:,.............................................................................................. 12
:................................................................................................................................. 12
:()...................................................................................................................... 13
:........................................................................................................................................ 13
:........................................................................................................................................ 14
:.................................................................................................................................... 16
:........................................................................................................................... 17

........................................................................................................ 18
......................................................................................................................................... 19
............................................................................................................................ 20
ALV GRID ...................................................................................................... 21
1.()................................................................................................................................ 22
2................................................................................................................................................ 22
3.................................................................................................................... 23
4....................................................................................................................................... 25
5.................................................................................................................................... 25
6. ........................................................................................................................................ 27

.ALV
The ALV Grid Control (ALV = SAP List Viewer),,
,.
SAP : SAP ,ALV GRID ,,,
.
ALV GRID :

3 ,,,..
ALV 3 ALV :, ALV, ALV.

.ALV GRID CONTROL (ALV )


ALV GRID CONTROL ,ALV GRID CONTROL
,.
ABAP , ALV (INSTANCE), ABAP .

.ALV GRID CONTROL


ALV GRID , CL_GUI_ALV_GRID
data ALV_GRID1 type ref to cl_gui_alv_grid.

ALV GRID :

ALV GRID
1. [Field catalog]
ALV ,,,,,.
:(, STRUCTURE LVC_S_FCAT)

ROW_POS

ALV : ()

COL_POS

ALV :

,, 1,2,..

FIELDNAME

ALV :

TABNAME

LVC

CURRENCY

ALV :

CFIELDNAME

ALV :

QUANTITY

ALV :

QFIELDNAME

ALV :

10

IFIELDNAME

ALV :

11

ROUND

ALV : ROUND

12

EXPONENT

ALV

13

KEY

ALV :

14

KEY_SEL

ALV :

15

ICON

ALV :

16

SYMBOL

ALV :

17

CHECKBOX

ALV :

18

JUST

ALV :

:
'R': right justified
'L': left justified

'C': centered
19

LZERO

ALV :

X'

20

NO_SIGN

ALV

X',

21

NO_ZERO

ALV :

X', 0

22

NO_CONVEXT

ALV :

23

EDIT_MASK

ALV :

24

EMPHASIZE

ALV :

25

FIX_COLUMN

ALV :

26

DO_SUM

ALV :

X',

27

NO_SUM

ALV :

X' ,

28

NO_OUT

ALV :

X' ,

29

TECH

ALV :

X'.

30

OUTPUTLEN

ALV :

31

CONVEXIT

32

SELTEXT

ALV :

33

TOOLTIP

ALV :

34

ROLLNAME

ALV : F1

35

DATATYPE

ABAP

ABAP

36

INTTYPE

ABAP (C,D,N,...)

ABAP (C,D,N,...)

37

INTLEN

38

LOWERCASE

X'

39

REPTEXT

40

HIER_LEVEL

ALV :

41

REPREP

ALV : /

42

DOMNAME

43

SP_GROUP

44

HOTSPOT

ALV :

X',,

45

DFIELDNAME

ALV :

46

COL_ID

ALV : ID

47

F4AVAILABL

X'.

48

AUTO_VALUE

ALV :

49

CHECKTABLE

50

VALEXI

51

WEB_FIELD

ALV :

52

HREF_HNDL

53

STYLE

ALV :

, PUSHBUTTION

54

STYLE2

ALV :

55

STYLE3

ALV :

56

STYLE4

ALV :

57

DRDN_HNDL

58

DRDN_FIELD

ALV :

59

NO_MERGING

60

H_FTYPE

ALV : (,,., ...)

61

COL_OPT

62

NO_INIT_CH

63

DRDN_ALIAS

64

REF_FIELD

ALV :

65

REF_TABLE

ALV :

66

TXT_FIELD

ALV :

67

ROUNDFIELD

ALV : ROUND

68

DECIMALS_O

ALV :

69

DECMLFIELD

ALV : DECIMALS

70

DD_OUTLEN

ALV :

71

DECIMALS

72

COLTEXT

ALV :

73

SCRTEXT_L

74

SCRTEXT_M

75

SCRTEXT_S

76

COLDDICTXT

ALV : DDIC

77

SELDDICTXT

ALV : DDIC

78

TIPDDICTXT

ALV : DDIC

79

EDIT

ALV :

.'X'

80

TECH_COL

ALV :

81

TECH_FORM

ALV :

82

TECH_COMP

ALV :

83

HIER_CPOS

ALV :

84

H_COL_KEY

: /

85

H_SELECT

86

DD_ROLL

()

87

DRAGDROPID

ALV : &

88

MAC

89

INDX_FIELD

90

INDX_CFIEL

91

INDX_QFIEL

92

INDX_IFIEL

93

INDX_ROUND

94

INDX_DECML

95

GET_STYLE

96

MARK

2.[layout]

ALV ALV ,,,.


ALV [LVC_S_LAYO],.

Value range

CWIDTH_OPT

SPACE, 'X'

SMALLTITLE

SPACE, 'X'

GRID_TITLE

70

NO_HEADERS

SPACE, 'X'

NO_HGRIDLN

SPACE, 'X'

NO_MERGING

SPACE, 'X'

NO_ROWMARK

SPACE, 'X'

D A
NO_TOOLBAR

SPACE, 'X'

NO_VGRIDLN

SPACE, 'X'

SEL_MODE

SPACE, 'A', 'B', 'C',


'D'

EXCP_CONDS

SPACE, 'X'

EXCP_FNAME

30

EXCP_LED

LED

SPACE, 'X'

EXCP_ROLLN

SPACE, 'X'

CTAB_FNAME

30

INFO_FNAME

30

ZEBRA

SPACE, 'X'

NO_TOTLINE

SPACE, 'X'

NUMC_TOTAL

NUMC

SPACE, 'X'

TOTALS_BEF

SPACE, 'X'

STYLEFNAME

, PUSHBUTTON

30

3.,

[LVC_S_PRNT]
[LVC_S_SORT]
[LVC_S_FILT]
,,,.

. ALV .
DIALOG .
OO ALV GRID , FUNCTION ALV,, CL_GUI_ALV_GRID
.

ALV .
1,,,,, I_STRUCTURE_NAME.
2.,,,,
..
2 ,,,.

: SCREEN,,CONTAINER..
DATA: wcl_container TYPE REF TO cl_gui_custom_container,
wcl_alv TYPE REF TO cl_gui_alv_grid .
*---
DATA gt_fieldcat TYPE lvc_t_fcat .
*---
DATA gs_layout TYPE lvc_s_layo .
*----( SFLIGHT )
DATA BEGIN OF gt_list OCCURS 0 .
INCLUDE STRUCTURE sflight .
DATA END OF gt_list .

: ALV .
PBO :

PROCESS BEFORE OUTPUT .


MODULE display_alv .
DISPLAY_ALV MODULE ,:

MODULE display_alv OUTPUT .


PERFORM display_alv .
ENDMODULE .

"display_alv OUTPUT

FORM DISPLAY_ALV , ALV ,,:

FORM display_alv .
IF

wcl_alv IS INITIAL .
CREATE OBJECT: wcl_container

EXPORTING
container_name = 'ALV_CON'.
CREATE OBJECT wcl_alv
EXPORTING
i_parent = wcl_container.
*-----
PERFORM prepare_field_catalog CHANGING gt_fieldcat .
*-----
PERFORM prepare_layout CHANGING gs_layout .
*----- alv
CALL METHOD gr_alvgrid->set_table_for_first_display
EXPORTING
*

I_BUFFER_ACTIVE =

I_CONSISTENCY_CHECK =

I_STRUCTURE_NAME =

IS_VARIANT =

I_SAVE =

I_DEFAULT = 'X'
is_layout = gs_layout

IS_PRINT =

IT_SPECIAL_GROUPS =

IT_TOOLBAR_EXCLUDING =

IT_HYPERLINK =
CHANGING
it_outtab = gt_list[]
it_fieldcatalog = gt_fieldcat

IT_SORT =

IT_FILTER =
EXCEPTIONS
invalid_parameter_combination = 1
program_error = 2
too_many_lines = 3
OTHERS = 4 .
ELSE .

*---- alv
CALL METHOD gr_alvgrid->refresh_table_display
*

EXPORTING

IS_STABLE =

I_SOFT_REFRESH =
EXCEPTIONS
finished = 1
OTHERS = 2 .
IF sy-subrc <> 0.

*--
ENDIF.
ENDIF .
ENDFORM.

"display_alv

"set_table_for_first_display"

,,, ALV

I_BUFFER_ACTIVE

.,
ALV
,'SFLIGHT'.,

I_STRUCTURE_NAME

, IT_FIELDCATALOG .
IS_VARIANT

I_SAVE

:
'X'
'U'
'A'
SPACE
:

I_DEFAULT

'X' ,
SPACE
IS_LAYOUT

IS_PRINT

IT_SPECIAL_GROUPS

SP_GROUP .

IT_TOOLBAR_EXCLUDING

IT_HYPERLINK

,LVC_S_HYPE HREF ,
HANDLE , GRID

IT_ALV_GRAPHICS

, ALV.

IT_OUTTAB

IT_FIELDCATALOG

IT_SORT

IT_FILTER

"REFRESH_TABLE_DISPLAY"

IS_STABLE

2 .,
,.

I_SOFT_REFRESH

,,,
,.
.: ALV,
.

,.
.
1.

FORM prepare_field_catalog CHANGING pt_fieldcat TYPE lvc_t_fcat .


DATA ls_fcat type lvc_s_fcat .
ls_fcat-fieldname = 'CARRID' .
ls_fcat-inttype = 'C' .
ls_fcat-outputlen = '3' .
ls_fcat-coltext = 'Carrier ID' .
ls_fcat-seltext = 'Carrier ID' .
APPEND ls_fcat to pt_fieldcat .
CLEAR ls_fcat .
ls_fcat-fieldname = 'CONNID' .
ls_fcat-ref_table = 'SFLIGHT' .
ls_fcat-ref_table = 'CONNID' .
ls_fcat-outputlen = '3' .
ls_fcat-coltext = 'Connection ID' .
ls_fcat-seltext = 'Connection ID' .
APPEND ls_fcat to pt_fieldcat .
ENDFORM .
2.

FORM prepare_field_catalog CHANGING pt_fieldcat TYPE lvc_t_fcat .


DATA ls_fcat type lvc_s_fcat .
CALL FUNCTION 'LVC_FIELDCATALOG_MERGE'
EXPORTING
i_structure_name

= 'SFLIGHT'

CHANGING
ct_fieldcat
EXCEPTIONS

= pt_fieldcat[]

inconsistent_interface = 1
program_error

= 2

OTHERS

= 3.

IF sy-subrc <> 0.
*--Exception handling
ENDIF.
LOOP AT pt_fieldcat INTO ls_fcat .
CASE pt_fieldcat-fieldname .
WHEN 'CARRID' .
ls_fcat-outpulen = '10' .
ls_fcat-coltext = 'Airline Carrier ID' .
MODIFY pt_fieldcat FROM ls_fcat .
WHEN 'PAYMENTSUM' .
ls_fcat-no_out = 'X' .
MODIFY pt_fieldcat FROM ls_fcat .
ENDCASE .
ENDLOOP .
ENDFORM .

"prepare_field_catalog

FORM prepare_layout CHANGING ps_layout TYPE lvc_s_layo.


ps_layout-zebra = 'X' .
ps_layout-grid_title = 'Flights' .
ps_layout-smalltitle = 'X' .
ENDFORM. " prepare_layout

,
(,,)
ALV , UI_FUNCTIONS ,
set_table_for_first_display "IT_TOOLBAR_EXCLUDING".
cl_gui_alv_grid , after_user_command .
, layout no_toolbar "X".

FORM exclude_tb_functions CHANGING pt_exclude TYPE ui_functions .


DATA ls_exclude TYPE ui_func.
ls_exclude = cl_gui_alv_grid=>mc_fc_maximum .
APPEND ls_exclude TO pt_exclude.
ls_exclude = cl_gui_alv_grid=>mc_fc_minimum .

APPEND ls_exclude TO pt_exclude.


ls_exclude = cl_gui_alv_grid=>mc_fc_subtot .
APPEND ls_exclude TO pt_exclude.
ls_exclude = cl_gui_alv_grid=>mc_fc_sum .
APPEND ls_exclude TO pt_exclude.
ls_exclude = cl_gui_alv_grid=>mc_fc_average .
APPEND ls_exclude TO pt_exclude.
ls_exclude = cl_gui_alv_grid=>mc_mb_sum .
APPEND ls_exclude TO pt_exclude.
ls_exclude = cl_gui_alv_grid=>mc_mb_subtot .
ENDFORM .

:
, ALV DEMO ..

:,.
,,..
:

get_frontend_fieldcatalog
set_frontend_fieldcatalog

get_frontend_layout
set_frontend_layout

,,,.

DATA ls_fcat TYPE lvc_s_fcat .


DATA lt_fcat TYPE lvc_t_fcat .
DATA ls_layout TYPE lvc_s_layo .
CALL METHOD gr_alvgrid->get_frontend_fieldcatalog
IMPORTING
et_fieldcatalog = lt_fcat[].
LOOP AT lt_fcat INTO ls_fcat .
IF ls_fcat-fieldname = 'PAYMENTSUM' .
ls_fcat-no_out = space .
MODIFY lt_fcat FROM ls_fcat .
ENDIF .
ENDLOOP .
CALL METHOD gr_alvgrid->set_frontend_fieldcatalog

EXPORTING
it_fieldcatalog = lt_fcat[].
CALL METHOD gr_alvgrid->get_frontend_layout
IMPORTING
es_layout = ls_layout.
ls_layout-grid_title = 'Flights (with Payment Sums)' .
CALL METHOD gr_alvgrid->set_frontend_layout
EXPORTING
is_layout = ls_layout.

:
. LVC_T_SORT
. set_table_for_first_display IT_SORT .

FORM prepare_sort_table CHANGING pt_sort TYPE lvc_t_sort .


DATA ls_sort TYPE lvc_s_sort .
ls_sort-spos = '1' .
ls_sort-fieldname = 'CARRID' .
ls_sort-up = 'X' . "A to Z
ls_sort-down = space .
APPEND ls_sort TO pt_sort .
ls_sort-spos = '2' .
ls_sort-fieldname = 'SEATSOCC' .
ls_sort-up = space .
ls_sort-down = 'X' . "Z to A
APPEND ls_sort TO pt_sort .
ENDFORM. " prepare_sort_table
2 :
1. DUMP.
2.,,,"no_merging""X" .
get_sort_criteria set_sort_criteria.

:()
ALV ,.
"LVC_T_FILT". RANGES .
"SET_TABLE_FOR_FIRST_DISPLAY""IT_FILTER"

FORM prepare_filter_table CHANGING pt_filt TYPE lvc_t_filt .


DATA ls_filt TYPE lvc_s_filt .
ls_filt-fieldname = 'FLDATE' .

ls_filt-sign = 'E' .
ls_filt-option = 'BT' .
ls_filt-low = '20030101' .
ls_filt-high = '20031231' .
APPEND ls_filt TO pt_filt .
ENDFORM. " preparefiltertable
"get_filter_criteria" "set_filter_criteria".

:
,,"SEL_MODE".
..

SPACE

'A'

'B'

,,

'C'

,,

'D'

:
1. ALV ,.
2.,."GET_SELECTED_CELLS",
"GET_SELECTED_CELLS_ID", "GET_SELECTED_ROWS","GET_SELECTED_COLUMNS"
3. PAI ,,. PBO , SET .

:
, ALV .,.
,,.
ALV .,4 CHAR .
Cx y

-----------------------------------------Color | |
|

|
1/0: /

1/0: /
C ,(1 7),,,,,
.

Gray-blue

headers

Light gray

List bodies

yellow

totals

Blue-green

Key columns

green

Positive threshold value

red

Negative threshold value

orange

Control levels

A).
"emphasize". 4 CHAR ,.
:
LS_FCAT-EMPHASIZE = 'C701'.
,

LS_FCAT-KEY = 'X' ,.,KEY

.
B)
,,,.,
4 CHAR ,.
:

DATA BEGIN OF gt_list OCCURS 0 .


INCLUDE STRUCTURE SFLIGHT .
DATA rowcolor(4) TYPE c .
DATA END OF gt_list .
,ALV ,"INFO_FNAME",
ALV,.
ps_layout-info_fname = 'ROWCOLOR'.
,,,.
,,,.
C)
,, 2 .
DEEP , ALV ..
"LVC_T_SCOL".
3 :
FNAME , COLOR ,.
,.
COLOR .

NOKEYCOL .,.,
.
,ALV "CTAB_FNAME",.

DATA BEGIN OF gt_list OCCURS 0 .


INCLUDE STRUCTURE SFLIGHT .
DATA rowcolor(4) TYPE c .
DATA cellcolors TYPE lvc_t_scol .
DATA END OF gt_list .
DATA ls_cellcolor TYPE lvc_s_scol .
...
READ TABLE gt_list INDEX 5 .
ls_cellcolor-fname = 'SEATSOCC' .
ls_cellcolor-color-col = '7' .
ls_cellcolor-color-int = '1' .
APPEND ls_cellcolor TO gt_list-cellcolors .
MODIFY gt_list INDEX 5 .
:

,--->--->.

:
."LVC_T_HYPE" , INT4 ,
ALV,,.
,WEB_FIELD .
, CARRID,CONNID :
, 2 :

DATA BEGIN OF gt_list OCCURS 0 .


INCLUDE STRUCTURE SFLIGHT .
DATA rowcolor(4) TYPE c .
DATA cellcolors TYPE lvc_t_scol .
DATA carrid_handle TYPE int4 .
DATA connid_handle TYPE int4 .
DATA END OF gt_list .
: ,.,,"LVC_T_HYPE".

FORM prepare_hyperlinks_table CHANGING pt_hype TYPE lvc_t_hype .


DATA ls_hype TYPE lvc_s_hype .
ls_hype-handle = '1' .
ls_hype-href = 'http://www.company.com/carrids/car1' .

APPEND ls_hype TO pt_hype .


ls_hype-handle = '2' .
ls_hype-href = 'http://www.company.com/carrids/car1' .
APPEND ls_hype TO pt_hype .
ls_hype-handle = '3' .
ls_hype-href = 'http://www.company.com/carrids/car1' .
APPEND ls_hype TO pt_hype .
ls_hype-handle = '4' .
ls_hype-href = 'http://www.company.com/connids/con11' .
APPEND ls_hype TO pt_hype .
ls_hype-handle = '5' .
ls_hype-href = 'http://www.company.com/connids/con12'
APPEND ls_hype TO pt_hype .
.. ..
ENDFORM .
. FIELDCATLOG .
CARRID field catalog

Ls_fieldcat-web_field = 'CARRID_HANDLE'.
CONNID field catalog

Ls_fieldcat-web_field = 'CONNID_HANDLE.
"SET_TABLE_FOR_FIRST_DISPLAY" it_hyperlink
::

LOOP AT gt_list.
IF gt_list-carrid = XX.
Gt_list-carrid_handle = 1.
IF gt_list-connid = 01.
Gt_list-connid_handle = 4.
ENDIF.
ENDIF.
ENDLOOP.

:
,,
,.
,,,"LVC_T_DROP".
ALV ."SET_TABLE_FOR_FIRST_DISPLAY",
"SET_DROP_DOWN_TABLE".

,"DRDN_HNDL"
.:

ps_fcat-drdn_hndl = '1' .
(,
),"DRDN_FIELD".:

ps_fcat-drdn_field = 'PTYP_DD_HNDL' .
:

DATA BEGIN OF gt_list OCCURS 0 .


INCLUDE STRUCTURE SFLIGHT .
DATA rowcolor(4) TYPE c .
DATA cellcolors TYPE lvc_t_scol .
DATA carrid_handle TYPE int4 .
DATA connid_handle TYPE int4 .
DATA ptype_dd_hndl TYPE int4 .
DATA END OF gt_list .
:

FORM prepare_drilldown_values.
DATA lt_ddval TYPE lvc_t_drop .
DATA ls_ddval TYPE lvc_s_drop .
ls_ddval-handle = '1' .
ls_ddval-value = 'JFK-12' .
APPEND ls_ddval TO lt_ddval .
ls_ddval-handle = '1' .
ls_ddval-value = 'JSF-44' .
APPEND ls_ddval TO lt_ddval .
ls_ddval-handle = '1' .
ls_ddval-value = 'KMDA-53' .
APPEND ls_ddval TO lt_ddval .
ls_ddval-handle = '1' .
ls_ddval-value = 'SS3O/N' .
APPEND ls_ddval TO lt_ddval .
CALL METHOD gr_alvgrid->set_drop_down_table
EXPORTING
it_drop_down = lt_ddval.
ENDFORM.

"prepare_drilldown_values

, set_drop_down_table ALV.

,ALV GRID .
. ALV GRID .
ALV GRID , HTML HTML SAP GUI .
:
Event

Application

HTML

Print_end_of_list

Define output text to be printed at the end of the entire list

Print_top_of_list

Define output text to be printed at begin of the entire list

Print_top_of_page

Define output text to be printed at begin of each page

Print_end_of_page

Define output text to be printed at the end of each page

Subtotal_text

Define self-defined subtotal texts

ALV GRID

Event

Application

HTML

Button_click

Query click on a push button in the ALV GRID control

Double_click

Query a double click on a cell of the ALV GRID

Hotspot_click

Query a hotspot click on columns defined for this purpose in advance

Ondrag

Collect information when elements of the ALV GRID Control are dragged

Ondrop

Process information when elements of the ALV GRID Control are

dropped
ondropComplete

Perform final actions after successful drag&drop

ondropGetFlavor

Distinguish between options for drag&drop behavior

Event

Application

HTML

Before_user_command

Query self-defined and

standard functions
User_command

Query self-defined function

codes
After_user_command

Query self-defined and

standard functions codes


(,)
Event

Application

HTML

Tool bar

Change,delete or add gui

elements on alv grid


Menu_button

Define menus for menu

buttons in the toolbar


Context_menu_request

Change context menu

Onf1

Define self-defined f1 help

.
CLASS lcl_event_handler DEFINITION.
PUBLIC SECTION.
METHODS:
*-- ALV
Handle_toolbar FOR EVENT toolbar OF cl_gui_alv_grid
IMPORTING e_object e_interactive,
*--
Handle_user_command
FOR EVENT user_command OF cl_gui_alv_grid
IMPORTING e_ucomm.
*--
Handle_hotspot_click
FOR EVENT hotspot_click OF cl_gui_alv_grid
IMPORTING e_row_id e_column_id es_row_no.
*--
Handle_before_user_command
FOR EVENT before_user_command OF cl_gui_alv_grid
IMPORTING e_ucomm.
*--
Handle_after_user_command
FOR EVENT after_user_command OF cl_gui_alv_grid
IMPORTING e_ucomm.
*-- ALV ,
Handle_data_changed
FOR EVENT data_changed OF cl_gui_alv_grid
IMPORTING er_data_changed.
*--
Handle_data_changed_finished

FOR EVENT data_changed_finished OF cl_gui_alv_grid


IMPORTING e_modified.
*--
Handle_menu_button
FOR EVENT menu_button OF cl_gui_alv_grid
IMPORTING e_object e_ucomm.
*--
Handle_button_click
FOR EVENT button_click OF cl_gui_alv_grid
IMPORTING e_objec e_ucomm.
PRIVATE SECTION.
ENDCLASS.

"

ALV :

CLASS lcl_event_handler IMPLEMENTATION.


*-- Handle toolbar
METHOD handle_toolbar.
PERFORM handle_toolbar usign e_object e_interactive.
ENDMETHOD.

"lcl_event_handler

*-- Handle hotspot click


METHOD handle_hotspot_click.
PERFORM handle_hotspot_click USING e_row_id e_column_id es_row_no.
ENDMETHOD.

"lcl_event_handler

*-- Handle double click


METHOD handle_double_click.
PERFORM handle_double_click USING e_row e_column es_row_no.
ENDMETHOD.

"lcl_event_handler

*-- Handle after user command


METHOD handle_after_user_command.
PERFORM handle_after_user_command USING e_object.
ENDFORM.

"lcl_event_handler

*-- Handle before user command


METHOD handle_before_user_command.
PERFORM handle_before_user_command.
ENDMETHOD.

"lcl_event_handler

*--Handle data changed


METHOD handle_data_changed.
PERFORM handle_data_changed USING er_data_changed.
ENDMETHOD.

METHOD handle_data_changed_finished.
PERFORM handle_data_chaged USING e_modified.
ENDMETHOD.

"handle_data_changed_finished

METHOD handle_menu_button.
PERFORM handle_menu_button USING e_object e_ucomm.
ENDMETHOD.
METHOD handle_button_click.
PERFORM handle_button_click USING e_objcet e_ucomm.
ENDMETHOD.
ENDCLASS.

"handle_menu_button
"lcl_event_handler IMPLEMENTATION

ALV GRID
, ALV GRID .

DATA gr_event_handler TYPE REF TO lcl_event_handler .


.. ..
*--Creating an instance for the event handler
CREATE OBJECT gr_event_handler .
*--Registering handler methods to handle ALV Grid events
SET HANDLER gr_event_handler->handle_user_command FOR gr_alvgrid .
SET HANDLER gr_event_handler->handle_toolbar FOR gr_alvgrid .
SET HANDLER gr_event_handler->handle_menu_button FOR gr_alvgrid .
SET HANDLER gr_event_handler->handle_double_click FOR gr_alvgrid .
SET HANDLER gr_event_handler->handle_hotspot_click FOR gr_alvgrid .
SET HANDLER gr_event_handler->handle_button_click FOR gr_alvgrid .
SET HANDLER gr_event_handler->handle_before_user_command FOR gr_alvgrid .
SET HANDLER gr_event_handler->handle_context_menu_request FOR gr_alvgrid .
SET HANDLER gr_event_handler->handle_data_changed FOR gr_alvgrid .
SET HANDLER gr_event_handler->handle_data_changed_finished FOR gr_alvgrid .

1.()
,,"HOTSPOT""X",
HOTSPOT_CLICK. HOTSPOT_CLICK ,"E_ROW_ID", 2 :
LVC_S_COL "E_COLUMN_ID", E_COLUMN_ID-FIELDNAME .
LVC_S_ROID "ES_ROW_NO", ES_ROW_NO-ROW_ID ,.

FORM handle_hotspot_click USING i_row_id TYPE lvc_s_row


i_column_id TYPE lvc_s_col
is_row_no TYPE lvc_s_roid.
READ TABLE gt_list INDEX is_row_no-rowid.
IF sy-subrc = 0 AND i_column_id-fieldname = seatsocc.
CALL SCREEN 200.
ENDIF.
ENDFORM.

"handle_hotspot_click

SEATSOCC, 200.

2.
, 3 ..
:

FORM handle_double_click USING i_row TYPE lvc_s_row


i_column TYPE lvc_s_col
is_row_no TYPE lvc_s_rowid.
READ TABLE gt_list INDEX is_row_no-row_id.
IF sy-subrc = 0 AND i_column-fieldname = seatsocc.
CALL SCREEN 200.
ENDIF.
ENDFORM.

"handle_double_click

SEATSOCC 200.

3.
ALV , GUI ,2 .
toolbar , user_command .
TOOLBAR ,"e_object""mt_toolbar".:

FORM handle_toolbar USING i_object TYPE REF TO cl_alv_event_toolbar_set.


DATA: ls_toolbar TYPE stb_button.
CLEAR ls_toolbar.
MOVE 3 TO ls_toolbar-butn_type.
APPEND ls_toolbar TO i_object->mt_toolbar.
CLEAR ls_toolbar.
MOVE 'PER' TO ls_toolbar-function.

MOVE icon_display_text TO ls_toolbar-icon.


MOVE 'Passenger Info'(201) TO ls_toolbar-quickinfo.
MOVE 'Passenger Info'(201) TO ls_toolbar-text.
MOVE ' ' TO ls_toolbar-disabled.
APPEND ls_toolbar TO i_object->mt_toolbar.
CLEAR ls_toolbar.
MOVE 'EXCH' TO ls_toolbar-function.
MOVE 2 TO ls_toolbar-butn_type.
MOVE icon_calculation TO ls_toolbar-icon.
MOVE 'Payment in other Curencies'(202) TO ls_toolbar-quickinfo.
MOVE ' ' TO ls_toolbar-text.
MOVE ' ' TO ls_toolbar-disapbled.
APPEND ls_toolbar TO i_object->mt_toolbar.
ENDFORM.

"handle_toolbar

:
Field

Description

FUNCTION

BUTN_TYPE

:
0

Button(normal)

Menu and default button

Menu

Radio button

Checkbox

Menu entry

ICON

()

TEXT

()

QUICKINFO

()

DISABLED

. 1 2,
, menu_button :

FORM handle_menu_button USING i_object TYPE REF TO cl_ctmenu


i_ucomm TYPE syucomm..
CASE i_ucomm.
WHEN exch.
CALL METHOD i_object->add_function
EXPORTING
fcode = eu

text

= euro.

CALL METHOD i_object->add_function


EXPORTING
fcode

= trl

text

= turkish lira.

ENDCASE.
ENDFORM.

"handle_menu_button

, USER_COMMAND .

FORM handle_user_command USING i_ucomm TYPE sy-ucomm.


DATA lt_selected_rows TYPE lvc_t_rowid.
DATA ls_selected_row TYPE lvc_s_roid.
CALL METHOD gr_alvgrid->get_selected_rows
IMPORTING
et_row_no = lt_selected_rows.
READ TABLE lt_selected_rows INTO ls_selected_row INDEX 1.
IF sy-subrc NE 0.
MESSAGE s000(su) WITH 'Select a row'(203).
ENDIF.
CASE i_ucomm.
WHEN 'CAR'.
READ TABLE gt_list INDEX ls_selected_row-row_id.
IF sy-subrc = 0.
CALL FUNCTION 'ZDISPLAY_CARRIER_INFO'
EXPORTING
carrid

= gt_list-carrid

EXCEPTIONS
carrier_not_found = 1
oters

= 2.

ENDIF.
WHEN 'EU'.
READ TABLE gt_list INDEX ls_selected_row-row_id.
IF sy-subrc = 0.
CALL FUNCTION 'ZPOPUP_CONV_CURR_ADD_DISPLAY'
EXPORTING
monun = 'EU'
quant = gt_list-paymentsum.
ENDIF.
ENDCASE.
ENDFORM.

"handle_user_command

get_selected_rows . EXCH 2 ,. ALV


, ALV set_toolbar_interactive .

CALL METHOD gr_alv_grid->set_toolbar_interactive.

4..
ALV .,"before_user_command",
"set_user_command",.
:

FORM handle_before_user_command USING i_ucomm TYPE syucomm .


CASE e_ucomm .
WHEN '&INFO' .
CALL FUNCTION 'ZSFLIGHT_PROG_INFO' .
CALL METHOD gr_alvgrid->set_user_command
EXPORTING
i_ucomm = space.
ENDCASE .
ENDFORM .

"handle_before_user_command

5.
(style , style CL_GUI_ALV_GRID ,
MC_STYLE4_LINK,MC_STYLE4_LINK_NO,MC_STYLE_BUTTON,MC_STYLE_DISABLED,....),
/, F4,,,......
5.1 PUSHBUTTON
,"LVC_T_STYL". :

DATA: BEGIN OF gt_list OCCURS 0.


INCLUDE STRUCTURE sflight.
DATA rowcolor(4) TYPE c.
DATA cellcolors TYPE lvc_t_scol.
DATA carrid_handle TYPE int4.
DATA connid_handle TYPE int4.
DATA cellstyles TYPE lvc_t_styl.
DATA END OF gt_list.
:
7 SEATSMAX .

DATA ls_style TYPE lvc_s_styl.


READ TABLE gt_list INDEX 7.
ls_style-fieldname = 'SEATSMAX'.
ls_style-style = cl_gui_alv_grid=>mc_style_button.
APPEND ls_style TO gt_list-cellstyles.
MODIFY gt_list INDEX 7.
STYLE ,:

gs_layout-stylefname = 'CELLSTYLES'.
, 2 .
5.2
, SAP .
,, A,, B,.
, EDIT "X".,ALV ,,
,.,.
5.1 ,,"LVC_T_STYL". style
CL_GUI_ALV_GRID=>MC_STYLE_ENABLED CL_GUI_ALV_GRID=>MC_STYLE_DISABLED.
.CL_GUI_ALV_GRID=>MC_STYLE_ENABLED , CL_GUI_ALV_GRID=>MC_STYLE_DISABLED
.:

FORM adjust_edittables USING pt_list LIKE gt_list[].


DATA ls_listrow LIKE LINE OF pt_list.
DATA ls_stylerow TYPE lvc_s_styl.
DATA lt_styletab TYPE lvc_t_styl.
LOOP AT pt_list INTO ls_listrow.
IF ls_listrow-carrid = 'XY'.
ls_stylerow-fieldname = 'SEATSMAX'.
ls_stylerow-style = cl_alv_grid=>mc_style_disabled.
APPEND ls_stylerow TO lt_styletab.
ENDIF.
IF ls_listrow-connid = '02'.
ls_stylerow-fieldname = 'PLANETYPE'
LS_STYLEROW-STYLE = CL_ALV_GRID=>MC_STYLE_ENABLED.
APPEND ls_pstylerow TO lt_styletab.
ENDIF.
INSERT LINES OF lt_styletab INTO ls_listrow-cellstyles.
MODIFY pt_list FROM ls_listrow.

ENDLOOP.
ENDFORM.

"adjust_edittables

ALV STYLE .

gs_layout-stylefname = 'CELLSTYLES'.
, STYLE
. set_ready_for_input i_ready_for_input = 1 ALV
ALV i_ready_for_input 0
,

6.
alv ALV Alv grid :data_changed
data_changed_finished.

REGISTER_EDIT_EVENT ,.2 :
1.:

i_event_id = cl_gui_alv_grid=>mc_event_enter

2.:

i_event_id = cl_gui_alv_grid=>mc_event_modifies

,.
ALV ,DATA_CHANGED CL_ALV_CHANGED_DATA_PROTOCOL
ER_DATA_CHANGED ALV..
CL_ALV_CHANGED_DATA_PROTOCOL :
Get_cell_value

Modify_cell

Add_protocol_entry

Protocol_is_visible

Refresh_protocol

:
MT_MOD_CELLS

Contains address of modified cells with rowed


and field name

MT_MOD_ROWS

Contain modified rows Its type is genric

MT_GOOD_CELLS

Contain cells have proper values

MT_DELETED_ROWS

Contain rows deleted from the list

MT_INSERTED_ROWS

Contain rows deleted from the list

,.
:

FORM handle_data_changed USING ir_data_changed


TYPE REF TO cl_alv_changed_data_protocol.
DATA: ls_mod_cell TYPE lvc_s_modi,
lv_value

TYPE lvc_value.

SORT ir_data_changed->mt_mod_cells BY row_id.


LOOP AT ir_data_changed->mt_mod_cells
INTO ls_mod_cell
WHERE fieldname = 'SEATSMAX'.
CALL METHOD ir_data_changed->get_cell_value
EXPORTING
i_row_id

= ls_mod_cell-row_id

i_fieldname = 'CARRID'
IMPORTING
e_value

= lv_value.

IF lv_value = 'THY' AND ls_mod_cell-value > '500'.


CALL METHOD ir_data_changed->add_protocol_entry
EXPORTING
i_msgid

= 'SU'

i_msgno

= '000'

i_msgty

= 'E'

i_msgv1

= 'This number can not exceed 500 for '

i_msgv2

= lv_value

i_msgv3

= 'The value is et to ''500'''

i_fieldname = ls_mod_cell-fieldname
i_row_id

= ls_mod_cell-rowid.

CALL METHOD ir_data_changed->modify_cell


EXPORTING
i_row_id

= ls_mod_cell-row_id

i_fieldname = ls_mod_cell-fieldname
i_value

= '500'.

ENDIF.
ENDLOOP.
ENDFORM.

"handle_data_changed

7.
Class ALV
Control Framework: Fatal error - GUI cannot be reached

Docking_container
DATA: cont_docking TYPE REF TO cl_gui_docking_container .

PBO ALV ALV GRID


IF cl_gui_alv_grid=>offline( ) IS INITIAL.
CREATE OBJECT g_custom_container
EXPORTING container_name = g_container.
CREATE OBJECT grid1
EXPORTING i_parent = g_custom_container.
ELSE.
CREATE OBJECT grid1
EXPORTING i_parent = cont_docking .
ENDIF.

You might also like