Вы находитесь на странице: 1из 39

TECHSAP

Hello Visitors,The blog contents are now available in my new site:


https://sapcodes.com/ .

Thursday, 14 June 2012

OO ALV WITH CONTAINERS


1. OO ALV USING DOCKING CONTAINER
data : o_dock type ref to cl_gui_docking_container,
o_alv type ref to cl_gui_alv_grid,
it_spfli type table of spfli,
wa_spfli type spfli,
ok_code type sy-ucomm.

select-options : p_carr for wa_spfli-carrid.

start-of-selection.
perform data_fetch.
call screen 100.

form DATA_FETCH .
select * from spfli into table it_spfli where carrid in p_carr.
endform. " DATA_FETCH

module STATUS_0100 output.


SET PF-STATUS 'STATUS'.
SET TITLEBAR 'TITLE'.
endmodule. " STATUS_0100 OUTPUT

module USER_COMMAND_0100 input.


case ok_code.
when 'BACK' OR 'EXIT' OR 'CANCEL'.
LEAVE TO SCREEN 0.
endcase.
endmodule. " USER_COMMAND_0100 INPUT

module DISPLAY_ALV output.


if o_dock is initial.

* EITHER PROVIDE SIDE AND EXTENSION OR RATIO TO CREATE A DOCKING


CONTAINER*

CREATE OBJECT o_dock


EXPORTING
side = o_dock->dock_at_left
"dock_at_right,dock_at_top,dock_at_bottom
extension = 2000.

* CREATE OBJECT o_dock


* EXPORTING
* ratio = 60.
endif.
if o_alv is initial.
CREATE OBJECT o_alv
EXPORTING
i_parent = o_dock.

CALL METHOD o_alv->set_table_for_first_display


EXPORTING
i_structure_name = 'SPFLI'
CHANGING
it_outtab = it_spfli.
endif.
endmodule. " DISPLAY_ALV OUTPUT

SCREEN FLOW LOGIC

PROCESS BEFORE OUTPUT.


MODULE STATUS_0100.
MODULE DISPLAY_ALV.

PROCESS AFTER INPUT.


MODULE USER_COMMAND_0100.
----------------------------------------------------------------------------
2. OO ALV USING CUSTOM CONTAINER
DATA : o_cust TYPE REF TO cl_gui_custom_container,
o_alv TYPE REF TO cl_gui_alv_grid,
it_spfli TYPE TABLE OF spfli,
wa_spfli TYPE spfli,
ok_code TYPE sy-ucomm.

SELECT-OPTIONS : p_carr FOR wa_spfli-carrid.

START-OF-SELECTION.
PERFORM data_fetch.
CALL SCREEN 100.

FORM data_fetch .
SELECT * FROM spfli INTO TABLE it_spfli WHERE carrid IN p_carr.
ENDFORM. " DATA_FETCH

MODULE status_0100 OUTPUT.


SET PF-STATUS 'STATUS'.
SET TITLEBAR 'TITLE'.

ENDMODULE. " STATUS_0100 OUTPUT

MODULE user_command_0100 INPUT.


CASE ok_code.
WHEN 'BACK' OR 'EXIT' OR 'CANCEL'.
LEAVE TO SCREEN 0.
ENDCASE.
ENDMODULE. " USER_COMMAND_0100 INPUT
MODULE display_alv OUTPUT.

CREATE OBJECT o_cust


EXPORTING
container_name = 'CUSTOM'.

CREATE OBJECT o_alv


EXPORTING
i_parent = O_CUST.

CALL METHOD o_alv->set_table_for_first_display


EXPORTING
i_structure_name = 'SPFLI'
CHANGING
it_outtab = IT_SPFLI.

ENDMODULE. " DISPLAY_ALV OUTPUT

SCREEN FLOW LOGIC


PROCESS BEFORE OUTPUT.
MODULE STATUS_0100.
MODULE DISPLAY_ALV.

PROCESS AFTER INPUT.


MODULE USER_COMMAND_0100.

3. OO ALV USING CUSTOM CONTAINER WITH DOUBLE CLICK EVENT

TYPES : BEGIN OF tab,


carrid TYPE spfli-carrid,
connid TYPE spfli-connid,
countryfr TYPE spfli-countryfr,
cityfrom TYPE spfli-cityfrom,
airpfrom TYPE spfli-airpfrom,
countryto TYPE spfli-countryto,
cityto TYPE spfli-cityto,
airpto TYPE spfli-airpto,
END OF tab.

DATA : it_spfli TYPE TABLE OF tab,


wa_spfli TYPE tab,
ok_code TYPE sy-ucomm,
o_cust TYPE REF TO cl_gui_custom_container,
o_alv TYPE REF TO cl_gui_alv_grid,
it_fcat TYPE lvc_t_fcat,
wa_fcat TYPE lvc_s_fcat .

DATA : IT_SFLIGHT TYPE TABLE OF SFLIGHT.


DATA : O_DOCK TYPE REF TO CL_GUI_DOCKING_CONTAINER,
O_ALV1 TYPE REF TO CL_GUI_ALV_GRID.

SELECT-OPTIONS : s_carr FOR wa_spfli-carrid.

CLASS HANDLE_EVENT DEFINITION.


PUBLIC SECTION.
CLASSMETHODS : HANDLE_DOUBLE_CLICK
FOR EVENT DOUBLE_CLICK OF CL_GUI_ALV_GRID IMPORTING e_row
.
ENDCLASS.

CLASS HANDLE_EVENT IMPLEMENTATION.


METHOD handle_double_click.
READ TABLE IT_SPFLI INTO WA_SPFLI INDEX E_ROW.
SELECT * FROM SFLIGHT INTO TABLE IT_SFLIGHT WHERE CARRID = WA_SPFLI-
CARRID.
CALL SCREEN 200.
ENDMETHOD.
ENDCLASS.

START-OF-SELECTION.

PERFORM DATA_FETCH.
PERFORM BUILD_FIELDCATALOG.
CALL SCREEN 100.

form DATA_FETCH .
SELECT carrid
connid
countryfr
cityfrom
airpfrom
countryto
cityto
airpto FROM spfli INTO TABLE it_spfli WHERE carrid IN s_carr.
endform. " DATA_FETCH

form BUILD_FIELDCATALOG .
CLEAR wa_fcat.
WA_FCAT-col_pos = 1.
WA_FCAT-fieldname = 'CARRID'.
WA_FCAT-tabname = 'IT_SPFLI'.
WA_FCAT-COLTEXT = 'CARRID'.
APPEND wa_fcat TO IT_FCAT.
CLEAR wa_fcat.

WA_FCAT-col_pos = 2.
WA_FCAT-fieldname = 'CONNID'.
WA_FCAT-tabname = 'IT_SPFLI'.
WA_FCAT-COLTEXT = 'CONNID'.
APPEND wa_fcat TO IT_FCAT.
CLEAR wa_fcat.

WA_FCAT-col_pos = 3.
WA_FCAT-fieldname = 'COUNTRYFR'.
WA_FCAT-tabname = 'IT_SPFLI'.
WA_FCAT-COLTEXT = 'COUNTRY FROM'.
APPEND wa_fcat TO IT_FCAT.
CLEAR wa_fcat.

WA_FCAT-col_pos = 4.
WA_FCAT-fieldname = 'CITYFROM'.
WA_FCAT-tabname = 'IT_SPFLI'.
WA_FCAT-COLTEXT = 'COUNTRY TO'..
APPEND wa_fcat TO IT_FCAT.
CLEAR wa_fcat.

WA_FCAT-col_pos = 5.
WA_FCAT-fieldname = 'AIRPFROM'.
WA_FCAT-tabname = 'IT_SPFLI'.
WA_FCAT-COLTEXT = 'AIRPORT FROM'.
APPEND wa_fcat TO IT_FCAT.
CLEAR wa_fcat.

WA_FCAT-col_pos = 6.
WA_FCAT-fieldname = 'COUNTRYTO'.
WA_FCAT-tabname = 'IT_SPFLI'.
WA_FCAT-COLTEXT = 'COUNTRY TO'.
APPEND wa_fcat TO IT_FCAT.
CLEAR wa_fcat.

WA_FCAT-col_pos = 7.
WA_FCAT-fieldname = 'CITYTO'.
WA_FCAT-tabname = 'IT_SPFLI'.
WA_FCAT-COLTEXT = 'CITY TO'.
APPEND wa_fcat TO IT_FCAT.
CLEAR wa_fcat.

WA_FCAT-col_pos = 8.
WA_FCAT-fieldname = 'AIRPTO'.
WA_FCAT-tabname = 'IT_SPFLI'.
WA_FCAT-COLTEXT = 'AIRPORT TO'.
APPEND wa_fcat TO IT_FCAT.
CLEAR wa_fcat.
endform. " BUILD_FIELDCATALOG

module STATUS_0100 output.


SET PF-STATUS 'STAT'.
SET TITLEBAR 'TITLT'.

endmodule. " STATUS_0100 OUTPUT

module DISPLAY_ALV output.


IF o_cust IS NOT BOUND.
CREATE OBJECT o_cust
EXPORTING
container_name = 'CONTAINER'.
ENDIF.

IF O_ALV IS NOT BOUND.


CREATE OBJECT o_alv
EXPORTING
i_parent = O_CUST.

SET HANDLER HANDLE_EVENT=>HANDLE_DOUBLE_CLICK FOR O_ALV.

CALL METHOD o_alv->set_table_for_first_display


CHANGING
it_outtab = IT_SPFLI
it_fieldcatalog = IT_FCAT.

ENDIF.
endmodule. " DISPLAY_ALV OUTPUT

module USER_COMMAND_0100 input.


CASE OK_CODE.
WHEN 'BACK'.
LEAVE TO SCREEN 0.
ENDCASE.
endmodule. " USER_COMMAND_0100 INPUT

module STATUS_0200 output.


SET PF-STATUS 'STSA'.
* SET TITLEBAR 'xxx'.
IF O_DOCK IS NOT BOUND.
CREATE OBJECT o_dock
EXPORTING
side = CL_GUI_DOCKING_CONTAINER=>dock_at_left
extension = 5000.
ENDIF.

IF O_ALV1 IS NOT BOUND.


CREATE OBJECT o_alv1
EXPORTING
i_parent = O_DOCK.

CALL METHOD o_alv1->set_table_for_first_display


EXPORTING
i_structure_name = 'SFLIGHT'
CHANGING
it_outtab = IT_SFLIGHT.

ENDIF.
CALL METHOD o_alv1->refresh_table_display.

endmodule. " STATUS_0200 OUTPUT

module USER_COMMAND_0200 input.


CASE OK_CODE.
WHEN 'BACK'.
LEAVE TO SCREEN 0.
ENDCASE.
endmodule. " USER_COMMAND_0200 INPUT
SCREEN 100 FLOW LOGIC

PROCESS BEFORE OUTPUT.


MODULE STATUS_0100.
MODULE DISPLAY_ALV.
PROCESS AFTER INPUT.
MODULE USER_COMMAND_0100.
SCREEN 200 FLOW LOGIC

PROCESS BEFORE OUTPUT.


MODULE STATUS_0200.
PROCESS AFTER INPUT.
MODULE USER_COMMAND_0200.
4. SPLITTING CUSTOM CONTAINER BY SPLITTER CONTAINER AND DISPLAYING INTERACTIVE ALV
DATA : it_spfli TYPE TABLE OF spfli,
wa_spfli TYPE spfli,
it_sflight TYPE TABLE OF sflight,
wa_sflight TYPE sflight,
o_cust TYPE REF TO cl_gui_custom_container,
o_spli TYPE REF TO cl_gui_splitter_container,
o_ref1 TYPE REF TO cl_gui_container,
o_ref2 TYPE REF TO cl_gui_container,
o_alv1 TYPE REF TO cl_gui_alv_grid,
o_alv2 TYPE REF TO cl_gui_alv_grid,
ok_code TYPE sy-ucomm.

CLASS handle_event DEFINITION.


PUBLIC SECTION.
CLASS-METHODS handle_double_click
FOR EVENT double_click OF cl_gui_alv_grid
IMPORTING e_row.
ENDCLASS. "HANDLE_EVENT DEFINITION

CLASS handle_event IMPLEMENTATION.


METHOD handle_double_click.
READ TABLE it_spfli INTO wa_spfli INDEX e_row.SELECT * FROM sflight INT
O TABLE it_sflight WHERE carrid = wa_spfli-carrid.
IF o_alv2 IS NOT BOUND.
CREATE OBJECT o_alv2
EXPORTING
i_parent = o_ref2.

CALL METHOD o_alv2->set_table_for_first_display


EXPORTING
i_structure_name = 'SFLIGHT'
CHANGING
it_outtab = it_sflight.
ENDIF.

CALL METHOD o_alv2->refresh_table_display.


ENDMETHOD. "HANDLE_DOUBLE_CLICK
ENDCLASS. "HANDLE_EVENT IMPLEMENTATION

START-OF-SELECTION.
PERFORM fetch_data_from_spfli.
CALL SCREEN 100.

*----------------------------------------------------------------------*
FORM fetch_data_from_spfli .
SELECT * FROM spfli INTO TABLE it_spfli.
ENDFORM. " FETCH_DATA_FROM_SPFLI

MODULE status_0100 OUTPUT.


SET PF-STATUS 'STATUS'.
SET TITLEBAR 'TITLE'.

ENDMODULE. " STATUS_0100 OUTPUT

MODULE split_container OUTPUT.


IF o_cust IS NOT BOUND.
CREATE OBJECT o_cust
EXPORTING
container_name = 'CONTAINER'.

CREATE OBJECT o_spli


EXPORTING
parent = o_cust
rows = 2
columns = 1.
CALL METHOD o_spli->get_container
EXPORTING
row = 1
column = 1
RECEIVING
container = o_ref1.

CALL METHOD o_spli->get_container


EXPORTING
row = 2
column = 1
RECEIVING
container = o_ref2.

ENDIF.
ENDMODULE. " SPLIT_CONTAINER OUTPUT

MODULE display_alv OUTPUT.


IF o_alv1 IS NOT BOUND.
CREATE OBJECT o_alv1
EXPORTING
i_parent = o_ref1.
SET HANDLER handle_event=>handle_double_click FOR o_alv1.
CALL METHOD o_alv1->set_table_for_first_display
EXPORTING
i_structure_name = 'SPFLI'
CHANGING
it_outtab = it_spfli.
ENDIF.
ENDMODULE. " DISPLAY_ALV OUTPUT

MODULE user_command_0100 INPUT.


CASE ok_code.
WHEN 'BACK'.
LEAVE PROGRAM.
ENDCASE.
ENDMODULE. " USER_COMMAND_0100 INPUT

SCREEN 100 FLOW LOGIC


PROCESS BEFORE OUTPUT.
MODULE status_0100.
MODULE split_container.
MODULE display_alv.

PROCESS AFTER INPUT.


MODULE user_command_0100.
5. OO ALV WITH TOP_OF_PAGE EVENT TO DISPLAY HEADER
DATA : it_spfli TYPE TABLE OF spfli,
wa_spfli TYPE spfli,
o_cust TYPE REF TO cl_gui_custom_container,
o_spli TYPE REF TO cl_gui_splitter_container,
o_ref1 TYPE REF TO cl_gui_container,
o_ref2 TYPE REF TO cl_gui_container,
o_alv TYPE REF TO cl_gui_alv_grid,
o_docu TYPE REF TO cl_dd_document,
ok_code TYPE sy-ucomm.

*----------------------------------------------------------------------*
CLASS handle_event DEFINITION.
PUBLIC SECTION.
CLASSMETHODS : page_head FOR EVENT
top_of_page OF cl_gui_alv_grid
IMPORTING e_dyndoc_id table_index.

ENDCLASS. "HANDLE_EVENT DEFINITION

*----------------------------------------------------------------------*
CLASS handle_event IMPLEMENTATION.

METHOD page_head.
*----------------try this one---------------------------------*

DATA : text TYPE sdydo_text_element.


text = 'FLIGHT DETAILS'.
CALL METHOD o_docu->add_text
EXPORTING
text = text
sap_color = cl_dd_document=>list_positive
sap_fontsize = cl_dd_document=>large.

CALL METHOD o_docu->add_picture


EXPORTING
picture_id = 'HEADER'. " Object uploaded by OAER Transaction
CALL METHOD o_docu->display_document
EXPORTING
parent = o_ref1.

*----------------------or try this --------------------------------*


DATA : text TYPE sdydo_text_element .
DATA : date TYPE char10.
WRITE sy-
datum TO date USING EDIT MASK '__/__/____'. CONCATENATE : 'FLIGHT DETAILS O
N ' date INTO text SEPARATED BY space.
CALL METHOD o_docu->add_text
EXPORTING
text = text
sap_style = cl_dd_document=>heading
sap_color = cl_dd_document=>list_heading_int
sap_fontsize = cl_dd_document=>large.
CALL METHOD o_docu->new_line.
CLEAR text.
CONCATENATE : 'BY USER :' sy-uname INTO text SEPARATED BY space.
CALL METHOD o_docu->add_text
EXPORTING
text = text
sap_style = cl_dd_document=>heading
sap_color = cl_dd_document=>list_heading_int
sap_fontsize = cl_dd_document=>large.
CALL METHOD o_docu->set_document_background
EXPORTING
picture_id = 'HEADER1'. " Object uploaded by OAER Transaction
CALL METHOD o_docu->display_document
EXPORTING
reuse_control = 'X'
parent = o_ref1.

ENDMETHOD. "PAGE_HEAD
ENDCLASS. "HANDLE_EVENT IMPLEMENTATION

START-OF-SELECTION.
PERFORM fetch_data_from_spfli.
CALL SCREEN 100.
*&---------------------------------------------------------------------*
FORM fetch_data_from_spfli .
SELECT * FROM spfli INTO TABLE it_spfli.
ENDFORM. " FETCH_DATA_FROM_SPFLI
*&---------------------------------------------------------------------*

MODULE status_0100 OUTPUT.


SET PF-STATUS 'STATUS'.
SET TITLEBAR 'TITLE'.
ENDMODULE. " STATUS_0100 OUTPUT

*----------------------------------------------------------------------*
MODULE split_container OUTPUT.
IF o_cust IS NOT BOUND.
CREATE OBJECT o_cust
EXPORTING
container_name = 'CONTAINER'.
CREATE OBJECT o_spli
EXPORTING
parent = o_cust
rows = 2
columns = 1.
CALL METHOD o_spli->get_container
EXPORTING
row = 1
column = 1
RECEIVING
container = o_ref1.
CALL METHOD o_spli->set_row_height
EXPORTING
id = 1
height = 35.
CALL METHOD o_spli->get_container
EXPORTING
row = 2
column = 1
RECEIVING
container = o_ref2.

CREATE OBJECT o_docu


EXPORTING
style = 'ALV_GRID'.
ENDIF.
ENDMODULE. " SPLIT_CONTAINER OUTPUT
*----------------------------------------------------------------------*
MODULE display_alv OUTPUT.
IF o_alv IS NOT BOUND.
CREATE OBJECT o_alv
EXPORTING
i_parent = o_ref2.

SET HANDLER handle_event=>page_head FOR o_alv.

CALL METHOD o_alv->set_table_for_first_display


EXPORTING
i_structure_name = 'SPFLI'
CHANGING
it_outtab = it_spfli.
CALL METHOD o_alv->list_processing_events
EXPORTING
i_event_name = 'TOP_OF_PAGE'
i_dyndoc_id = o_docu.
ENDIF.
ENDMODULE. " DISPLAY_ALV OUTPUT
*----------------------------------------------------------------------*
MODULE user_command_0100 INPUT.
CASE ok_code.
WHEN 'BACK'.
LEAVE PROGRAM.
ENDCASE.
ENDMODULE. " USER_COMMAND_0100 INPUT
SCREEN 100 FLOW LOGIC

PROCESS BEFORE OUTPUT.


MODULE status_0100.
MODULE split_container.
MODULE display_alv.

PROCESS AFTER INPUT.


MODULE user_command_0100.

6. OO ALV WITH SUBTOTAL AND TOTAL TEXT


TYPES : BEGIN OF tab,
carrid TYPE sflight-carrid,
connid TYPE sflight-connid,
fldate TYPE sflight-fldate,
price TYPE sflight-price,
text1(20), " FOR TOTAL TEXT
text2(20), " FOR SUBTOTAL TEXT
END OF tab.

DATA : it_flight TYPE TABLE OF tab,


wa_flight TYPE tab,
it_fcat TYPE lvc_t_fcat,
wa_fcat TYPE lvc_s_fcat,
wa_layo TYPE lvc_s_layo,
it_sort TYPE lvc_t_sort,
wa_sort TYPE lvc_s_sort,
o_cust TYPE REF TO cl_gui_custom_container,
o_alv TYPE REF TO cl_gui_alv_grid,
ok_code TYPE sy-ucomm.

START-OF-SELECTION.
PERFORM fetch_data.
PERFORM build_text.
PERFORM build_fieldcat.
PERFORM build_layout.
PERFORM build_sort.

END-OF-SELECTION.
CALL SCREEN 100.
*----------------------------------------------------------------------*
FORM fetch_data .
SELECT carrid
connid
fldate price FROM sflight INTO CORRESPONDING FIELDS OF TABLE it_flig
ht.
SORT it_flight BY carrid ASCENDING.
ENDFORM. " FETCH_DATA

*----------------------------------------------------------------------*
FORM build_text .
DATA : carr TYPE sflight-carrid,
txt TYPE char20.
LOOP AT it_flight INTO wa_flight.
wa_flight-text1 = 'Total Price = '.
IF wa_flight-carrid NE carr.
carr = wa_flight-carrid.
CONCATENATE 'Subtotal (' carr ') =' INTO txt SEPARATED BY space.
ENDIF.
wa_flight-text2 = txt.
MODIFY it_flight FROM wa_flight.
ENDLOOP.
ENDFORM. " BUILD_TEXT

*----------------------------------------------------------------------*
FORM build_fieldcat .
wa_fcat-col_pos = 1.
wa_fcat-fieldname = 'TEXT1'.
wa_fcat-tech = 'X'.
wa_fcat-no_out = 'X'.
APPEND wa_fcat TO it_fcat.
CLEAR wa_fcat.

wa_fcat-col_pos = 2.
wa_fcat-fieldname = 'TEXT2'.
wa_fcat-tech = 'X'.
wa_fcat-no_out = 'X'.
APPEND wa_fcat TO it_fcat.
CLEAR wa_fcat.

wa_fcat-col_pos = 3.
wa_fcat-fieldname = 'CARRID'.
wa_fcat-tabname = 'IT_FLIGHT'.
wa_fcat-scrtext_m = 'CARRID'.
APPEND wa_fcat TO it_fcat.
CLEAR wa_fcat.

wa_fcat-col_pos = 4.
wa_fcat-fieldname = 'CONNID'.
wa_fcat-tabname = 'IT_FLIGHT'.
wa_fcat-scrtext_m = 'CONNID'.
APPEND wa_fcat TO it_fcat.
CLEAR wa_fcat.

wa_fcat-col_pos = 5.
wa_fcat-fieldname = 'FLDATE'.
wa_fcat-tabname = 'IT_FLIGHT'.
wa_fcat-scrtext_m = 'FLIGHT DATE'.
APPEND wa_fcat TO it_fcat.
CLEAR wa_fcat.

wa_fcat-col_pos = 6.
wa_fcat-fieldname = 'PRICE'.
wa_fcat-tabname = 'IT_FLIGHT'.
wa_fcat-scrtext_m = 'PRICE'.
wa_fcat-do_sum = 'X'.
APPEND wa_fcat TO it_fcat.
CLEAR wa_fcat.

ENDFORM. " BUILD_FIELDCAT


*------------------------------------------------------------*
FORM build_layout .
wa_layo-cwidth_opt = 'X'.
wa_layo-zebra = 'X'.
wa_layo-no_totline = 'X'.
ENDFORM. " BUILD_LAYOUT
*-------------------------------------------------------------*
FORM build_sort .
wa_sort-spos = 1.
wa_sort-fieldname = 'TEXT1'.
wa_sort-up = 'X'.
wa_sort-subtot = 'X'.
APPEND wa_sort TO it_sort.
CLEAR wa_sort.

wa_sort-spos = 2.
wa_sort-fieldname = 'TEXT2'.
wa_sort-up = 'X'.
wa_sort-subtot = 'X'.
APPEND wa_sort TO it_sort.
CLEAR wa_sort.
ENDFORM. " BUILD_SORT
*-------------------------------------------------------------*
MODULE status_0100 OUTPUT.
SET PF-STATUS 'STATUS'.
ENDMODULE. " STATUS_0100 OUTPUT
*------------------------------------------------------------*
MODULE display_alv_grid OUTPUT.
IF o_cust IS NOT BOUND.
CREATE OBJECT o_cust
EXPORTING
container_name = 'CONT'."CREATE A CUSTOM CONT WITH NAME 'CONT'
ENDIF.
IF o_alv IS NOT BOUND.
CREATE OBJECT o_alv
EXPORTING
i_parent = o_cust.
ENDIF.
CALL METHOD o_alv->set_table_for_first_display
EXPORTING
is_layout = wa_layo
CHANGING
it_outtab = it_flight
it_fieldcatalog = it_fcat
it_sort = it_sort.

ENDMODULE. " DISPLAY_ALV_GRID OUTPUT


*-----------------------------------------------------------*
MODULE user_command_0100 INPUT.
CASE ok_code.
WHEN 'BACK'.
LEAVE PROGRAM.
ENDCASE.
ENDMODULE. " USER_COMMAND_0100 INPUT
*------------------------------------------------------------*
SCREEN 100 FLOW LOGIC
PROCESS BEFORE OUTPUT.
MODULE status_0100.
MODULE display_alv_grid.

PROCESS AFTER INPUT.


MODULE user_command_0100.

*---------------------------------------------------------------*
6. OO ALV WITH HIDING TOOLBAR
DATA : it_spfli TYPE TABLE OF spfli,
wa_spfli TYPE spfli,
ok_code TYPE sy-ucomm,
o_cust TYPE REF TO cl_gui_custom_container,
o_alv TYPE REF TO cl_gui_alv_grid,
lt_exclude TYPE ui_functions,
ls_exclude TYPE ui_func,
ls_layo TYPE lvc_s_layo.

START-OF-SELECTION.
PERFORM data_fetch.
PERFORM build_layout.
PERFORM fill_fcode.

END-OF-SELECTION.
CALL SCREEN 100.
*--------------------------------------------------------------*
FORM data_fetch .
SELECT * FROM spfli INTO TABLE it_spfli .
SORT it_spfli BY carrid connid.
ENDFORM. " DATA_FETCH
*-------------------------------------------------------------*
FORM build_layout .
*ls_layo-no_toolbar = 'X'. " To hide all toolbar buttons
ENDFORM.
*-------------------------------------------------------------*
FORM fill_fcode .
ls_exclude = cl_gui_alv_grid=>mc_fc_subtot.
APPEND ls_exclude TO lt_exclude.
CLEAR ls_exclude.

ls_exclude = cl_gui_alv_grid=>mc_fc_sort_asc.
APPEND ls_exclude TO lt_exclude.
CLEAR ls_exclude.
ls_exclude = cl_gui_alv_grid=>mc_fc_sort_dsc.
APPEND ls_exclude TO lt_exclude.
CLEAR ls_exclude.

ls_exclude = cl_gui_alv_grid=>mc_fc_filter.
APPEND ls_exclude TO lt_exclude.
CLEAR ls_exclude.

ls_exclude = cl_gui_alv_grid=>mc_fc_detail.
APPEND ls_exclude TO lt_exclude.
CLEAR ls_exclude.

ENDFORM. " FILL_FCODE


*-------------------------------------------------------------*
MODULE display_alv OUTPUT.
IF o_cust IS NOT BOUND.
CREATE OBJECT o_cust
EXPORTING
container_name = 'CONT'.
ENDIF.
IF o_alv IS NOT BOUND.
CREATE OBJECT o_alv
EXPORTING
i_parent = o_cust.
ENDIF.
CALL METHOD o_alv->set_table_for_first_display
EXPORTING
i_structure_name = 'SPFLI'
it_toolbar_excluding = lt_exclude
is_layout = ls_layo
CHANGING
it_outtab = it_spfli.

ENDMODULE. " DISPLAY_ALV OUTPUT


" BUILD_LAYOUT
SCREEN 100 FLOW LOGIC
PROCESS BEFORE OUTPUT.
* MODULE status_0100.
MODULE display_alv.

PROCESS AFTER INPUT.


* MODULE user_command_0100.
*---------------------------------------------------------------*
OUTPUT BEFORE & AFTER HIDING TOOLBAR BUTTONS
*--------------------------------------------------------------*
6. OO ALV WITH EDIT & SAVE FUNCTIONALITY & ADDING BUTTON IN ALV TOOLBAR
TYPE-POOLS : icon.
TYPES : BEGIN OF tab,
carrid TYPE spfli-carrid,
connid TYPE spfli-connid,
countryfr TYPE spfli-countryfr,
cityfrom TYPE spfli-cityfrom,
airpfrom TYPE spfli-airpfrom,
countryto TYPE spfli-countryto,
cityto TYPE spfli-cityto,
airpto TYPE spfli-airpto,
END OF tab.
DATA : it_spfli TYPE TABLE OF tab,
it_spfli_old TYPE TABLE OF tab,
it_spfli_new TYPE TABLE OF spfli,
wa_spfli_new TYPE spfli,
wa_spfli TYPE tab,
ok_code TYPE sy-ucomm,
o_cust TYPE REF TO cl_gui_custom_container,
o_alv TYPE REF TO cl_gui_alv_grid,
it_fcat TYPE lvc_t_fcat,
is_fcat TYPE lvc_s_fcat,
is_layo TYPE lvc_s_layo,
check.
*----------------------------------------------------------*
* CLASS HANDLE_EVENT DEFINITION
*-------------------------------------------------------------*
*
*-------------------------------------------------------------*
CLASS handle_event DEFINITION.
PUBLIC SECTION.
CLASS-METHODS : handle_toolbar
FOR EVENT toolbar OF cl_gui_alv_grid
IMPORTING e_object
e_interactive.
CLASS-METHODS : handle_user_command
FOR EVENT user_command OF cl_gui_alv_grid
IMPORTING e_ucomm.
ENDCLASS. "HANDLE_EVENT DEFINITION
*-------------------------------------------------------------*
CLASS handle_event IMPLEMENTATION.
METHOD handle_toolbar.
* *ADDING A SAVE BUTTONN TO THE ALV TOOLBAR *
DATA : is_btn TYPE stb_button.
is_btn-function = 'SAVE'.
is_btn-icon = icon_system_save.
is_btn-text = 'SAVE'.
is_btn-quickinfo = 'SAVE'.
is_btn-disabled = ' '.
APPEND is_btn TO e_object->mt_toolbar.
ENDMETHOD. "handle_toolbar
METHOD handle_user_command .
CASE e_ucomm.
WHEN 'SAVE'. " WILL TRIGGER WHEN CLICK ON ALV TOOLBAR 'SAVE' BUTTON
PERFORM update_data_base.
ENDCASE.
ENDMETHOD. "handle_user_command
ENDCLASS. "HANDLE_EVENT IMPLEMENTATION
START-OF-SELECTION.
PERFORM data_fetch.
PERFORM buld_fieldcat.
PERFORM buld_layout.
END-OF-SELECTION.
CALL SCREEN 100.
*-------------------------------------------------------------*
FORM data_fetch .
SELECT carrid
connid
countryfr
cityfrom
airpfrom
countryto
cityto
airpto FROM spfli INTO TABLE it_spfli .
SORT it_spfli BY carrid connid.
it_spfli_old = it_spfli.
ENDFORM. " DATA_FETCH
*--------------------------------------------------------------*
MODULE display_alv OUTPUT.
IF o_cust IS NOT BOUND.
CREATE OBJECT o_cust
EXPORTING
container_name = 'CONT'.
ENDIF.
IF o_alv IS NOT BOUND.
CREATE OBJECT o_alv
EXPORTING
i_parent = o_cust.
SET HANDLER handle_event=>handle_toolbar FOR o_alv.
SET HANDLER handle_event=>handle_user_command FOR o_alv.
CALL METHOD o_alv->set_table_for_first_display
EXPORTING
is_layout = is_layo
CHANGING
it_outtab = it_spfli
it_fieldcatalog = it_fcat.
CALL METHOD o_alv->set_toolbar_interactive .
ENDIF.
CALL METHOD o_alv->refresh_table_display.
ENDMODULE. " DISPLAY_ALV OUTPUT
*------------------------------------------------------------*
FORM buld_fieldcat .
is_fcat-col_pos = 1 .
is_fcat-fieldname = 'CARRID'.
is_fcat-tabname = 'IT_SPFLI'.
is_fcat-scrtext_l = 'Carrer No.'.
is_fcat-key = 'X'.
APPEND is_fcat TO it_fcat.
CLEAR is_fcat.
is_fcat-col_pos = 2 .
is_fcat-fieldname = 'CONNID'.
is_fcat-tabname = 'IT_SPFLI'.
is_fcat-scrtext_l = 'Conn No.'.
is_fcat-key = 'X'.
APPEND is_fcat TO it_fcat.
CLEAR is_fcat.
is_fcat-col_pos = 3 .
is_fcat-fieldname = 'COUNTRYFR'.
is_fcat-tabname = 'IT_SPFLI'.
is_fcat-scrtext_l = 'Country From'.
APPEND is_fcat TO it_fcat.
CLEAR is_fcat.
is_fcat-col_pos = 4 .
is_fcat-fieldname = 'CITYFROM'.
is_fcat-tabname = 'IT_SPFLI'.
is_fcat-scrtext_l = 'City From'.
is_fcat-edit = 'X'. " MAKES ONLY THIS FIELD AS EDITABLE
APPEND is_fcat TO it_fcat.
CLEAR is_fcat.
is_fcat-col_pos = 5 .
is_fcat-fieldname = 'AIRP FROM'.
is_fcat-tabname = 'IT_SPFLI'.
is_fcat-scrtext_l = 'Airp From'.
APPEND is_fcat TO it_fcat.
CLEAR is_fcat.
is_fcat-col_pos = 6.
is_fcat-fieldname = 'COUNTRYTO'.
is_fcat-tabname = 'IT_SPFLI'.
is_fcat-scrtext_l = 'Country To'.
APPEND is_fcat TO it_fcat.
CLEAR is_fcat.
is_fcat-col_pos = 7 .
is_fcat-fieldname = 'CITYTO'.
is_fcat-tabname = 'IT_SPFLI'.
is_fcat-scrtext_l = 'City To'.
is_fcat-edit = 'X'. " MAKES ONLY THIS FIELD AS EDITABLE
APPEND is_fcat TO it_fcat.
CLEAR is_fcat.
is_fcat-col_pos = 8 .
is_fcat-fieldname = 'AIRPTO'.
is_fcat-tabname = 'IT_SPFLI'.
is_fcat-scrtext_l = 'Airport To'.
APPEND is_fcat TO it_fcat.
CLEAR is_fcat.
ENDFORM. " BULD_FIELDCAT
*--------------------------------------------------------------*
FORM buld_layout .
is_layo-col_opt = 'X'.
* is_layo-edit = 'X'. " ALL FIELDS ARE EDITABLE
ENDFORM. " BULD_LAYOUT
*--------------------------------------------------------------*
MODULE status_0100 OUTPUT.
SET PF-STATUS 'STATUS'.
ENDMODULE. " STATUS_0100 OUTPUT
*-----------------------------------------------------------*
MODULE user_command_0100 INPUT.
CASE ok_code.
WHEN 'SAVE'. " WILL TRIGGER WHEN CLICK ON STANDARD TOOLBAR SAVE BUTTON
PERFORM UPDATE_DATA_BASE.
WHEN 'BACK' OR 'EXIT' OR 'CANCEL'.
LEAVE PROGRAM.
ENDCASE.
ENDMODULE. " USER_COMMAND_0100 INPUT
*-------------------------------------------------------------*
form UPDATE_DATA_BASE .
CALL METHOD o_alv->check_changed_data
IMPORTING
e_valid = check.
IF it_spfli NE it_spfli_old.
LOOP AT it_spfli INTO wa_spfli.
MOVE-CORRESPONDING wa_spfli TO wa_spfli_new.
APPEND wa_spfli_new TO it_spfli_new.
ENDLOOP.
MODIFY spfli FROM TABLE it_spfli_new.
IF sy-subrc = 0..
MESSAGE 'DATABASE TABLE SPFLI UPDATED' TYPE 'S'.
ENDIF.
ENDIF.
endform. " UPDATE_DATA_BASE

7.WORK WITH TEXT EDITOR IN CUSTOM CONTAINER


TYPE-POOLS : abap.
DATA : o_text TYPE REF TO cl_gui_textedit,
o_cust TYPE REF TO cl_gui_custom_container,
ok_code TYPE sy-ucomm,
mode TYPE i VALUE cl_gui_textedit=>false,
it_text TYPE TABLE OF char65,
wa_text TYPE char65.

START-OF-SELECTION.
wa_text = '*---------------------Write Your Comment --------*'.
APPEND wa_text TO it_text.
CALL SCREEN 100.
*-----------------------------------------------------------*
MODULE create_comment_box OUTPUT.
IF o_cust IS NOT BOUND.
CREATE OBJECT o_cust
EXPORTING
container_name = 'CONT'.
ENDIF.
IF o_text IS NOT BOUND.
CREATE OBJECT o_text
EXPORTING
parent = o_cust.
CALL METHOD o_text->set_toolbar_mode
EXPORTING
toolbar_mode = 0.

CALL METHOD o_text->set_statusbar_mode


EXPORTING
statusbar_mode = 0.
ENDIF.

CALL METHOD o_text->set_text_as_stream


EXPORTING
text = it_text.

ENDMODULE. " CREATE_COMMENT_BOX OUTPUT


*--------------------------------------------------------*
MODULE user_command_0100 INPUT.
CASE ok_code.
WHEN 'BACK' OR 'EXIT' OR 'CANCEL'.
LEAVE PROGRAM.
WHEN 'SAVE'.
CALL METHOD o_text->get_text_as_stream
EXPORTING
only_when_modified = cl_gui_textedit=>true
IMPORTING
text = it_text.

WHEN 'TOGG'.
IF ( mode = cl_gui_textedit=>true ).
mode = cl_gui_textedit=>false.
ELSE.
mode = cl_gui_textedit=>true.
ENDIF.
CALL METHOD o_text->set_readonly_mode
EXPORTING
readonly_mode = mode.

ENDCASE.
ENDMODULE. " USER_COMMAND_0100 INPUT
*------------------------------------------------------------*

MODULE status_0100 OUTPUT.


SET PF-STATUS 'STATUS'. " SET (SAVE, BACK,EXIT,CANCEL) IN PF-STATUS
ENDMODULE. " STATUS_0100 OUTPUT
SCREEN 100 FLOW LOGIC
PROCESS BEFORE OUTPUT.
MODULE status_0100.
MODULE create_comment_box.

PROCESS AFTER INPUT.


MODULE user_command_0100.
*-----------------------------------------------------------*
8. OO ALV USING DOCKING CONTAINER & COLORING ROWS BASED ON CONDITION
*coloring particular rows in alv on condition*
TYPE-POOLS : col.
TYPES : BEGIN OF tab,
carrid TYPE sflight-carrid,
connid TYPE sflight-connid,
fldate TYPE sflight-fldate,
price TYPE sflight-price,
seatsmax TYPE sflight-seatsmax,
seatsocc TYPE sflight-seatsocc,
color(4),
END OF tab.

DATA : it_flight TYPE TABLE OF tab,


wa_flight TYPE tab,
ok_code TYPE syst-ucomm,
o_alv TYPE REF TO cl_gui_alv_grid,
o_dock TYPE REF TO cl_gui_docking_container,
is_layo TYPE lvc_s_layo,
it_fcat TYPE lvc_t_fcat,
is_fcat TYPE lvc_s_fcat.

START-OF-SELECTION.
PERFORM data_fetch.
PERFORM build_fieldcatalog.
PERFORM build_layout.

END-OF-SELECTION.
CALL SCREEN 100.
*-------------------------------------------------------------*
FORM data_fetch .
SELECT carrid
connid
fldate
price
seatsmax seatsocc FROM sflight INTO CORRESPONDING FIELDS OF TABLE
it_flight.

CONCATENATE 'C' col_group '10' INTO wa_flight-color.


MODIFY it_flight FROM wa_flight TRANSPORTING color WHERE price > 5000.
ENDFORM. " DATA_FETCH

*------------------------------------------------------------*
FORM build_fieldcatalog .
is_fcat-col_pos = 1.
is_fcat-fieldname = 'CARRID'.
is_fcat-tabname = 'IT_FLIGHT'.
is_fcat-key = 'X'.
APPEND is_fcat TO it_fcat.
CLEAR is_fcat.

is_fcat-col_pos = 1.
is_fcat-fieldname = 'CONNID'.
is_fcat-tabname = 'IT_FLIGHT'.
is_fcat-key = 'X'.
APPEND is_fcat TO it_fcat.
CLEAR is_fcat.

is_fcat-col_pos = 3.
is_fcat-fieldname = 'FLDATE'.
is_fcat-tabname = 'IT_FLIGHT'.
is_fcat-key = 'X'.
APPEND is_fcat TO it_fcat.
CLEAR is_fcat.

is_fcat-col_pos = 4.
is_fcat-fieldname = 'PRICE'.
is_fcat-tabname = 'IT_FLIGHT'.
APPEND is_fcat TO it_fcat.
CLEAR is_fcat.

is_fcat-col_pos = 5.
is_fcat-fieldname = 'SEATSMAX'.
is_fcat-tabname = 'IT_FLIGHT'.
APPEND is_fcat TO it_fcat.
CLEAR is_fcat.

is_fcat-col_pos = 6.
is_fcat-fieldname = 'SEATSOCC'.
is_fcat-tabname = 'IT_FLIGHT'.
APPEND is_fcat TO it_fcat.
CLEAR is_fcat.

ENDFORM. " BUILD_FIELDCATALOG

*-----------------------------------------------------------*
FORM build_layout .
is_layo-info_fname = 'COLOR'.
ENDFORM. " BUILD_LAYOUT
*------------------------------------------------------------*
MODULE status_0100 OUTPUT.
SET PF-STATUS 'STATUS'.
* SET TITLEBAR 'xxx'.

ENDMODULE. " STATUS_0100 OUTPUT

*----------------------------------------------------------*
MODULE display_alv OUTPUT.
IF o_dock IS NOT BOUND.
CREATE OBJECT o_dock
EXPORTING
side = cl_gui_docking_container=>dock_at_left
extension = 500.
ENDIF.

if o_alv is not bound.


CREATE OBJECT o_alv
EXPORTING
i_parent = o_dock.
CALL METHOD o_alv->set_table_for_first_display
EXPORTING
is_layout = is_layo
CHANGING
it_outtab = it_flight
it_fieldcatalog = it_fcat.
endif.
ENDMODULE. " DISPLAY_ALV OUTPUT
*-----------------------------------------------------------*
MODULE user_command_0100 INPUT.
CASE ok_code.
WHEN 'BACK' OR 'EXIT' OR 'CANCEL'.
LEAVE PROGRAM.
ENDCASE.
ENDMODULE. " USER_COMMAND_0100 INPUT
*-------------------------------------------------------------*
SCREEN 100 FLOW LOGIC
PROCESS BEFORE OUTPUT.
MODULE status_0100.
MODULE display_alv.

PROCESS AFTER INPUT.


MODULE user_command_0100.
*-------------------------------------------------------------*
9. OO ALV USING DIALOGBOX CONTAINER
TYPES : BEGIN OF tab1,
carrid TYPE sflight-carrid,
connid TYPE sflight-connid,
fldate TYPE sflight-fldate,
price TYPE sflight-price,
seatsmax TYPE sflight-seatsmax,
seatsocc TYPE sflight-seatsocc,
END OF tab1.
DATA : it_spfli TYPE TABLE OF spfli,
wa_spfli LIKE LINE OF it_spfli,
it_flight TYPE TABLE OF tab1,
wa_flight LIKE LINE OF it_flight,
ok_code TYPE ui_func,
o_alv1 TYPE REF TO cl_gui_alv_grid,
o_alv2 TYPE REF TO cl_gui_alv_grid,
o_dock TYPE REF TO cl_gui_docking_container,
o_dial TYPE REF TO cl_gui_dialogbox_container,
it_fcat TYPE lvc_t_fcat,
is_fcat TYPE lvc_s_fcat,
alv_ok_code TYPE sy-ucomm VALUE 'INCLUDE'.

*-----------------------------------------------------------*
CLASS handle DEFINITION.
PUBLIC SECTION.
CLASS-METHODS : handle_double_click
FOR EVENT double_click OF cl_gui_alv_grid
IMPORTING e_row.
CLASS-METHODS : handle_close
FOR EVENT close OF cl_gui_dialogbox_container
IMPORTING sender. "triggers when user
clicks " the close button on the
dialog box
CLASS-METHODS : on_toolbar
FOR EVENT toolbar OF cl_gui_alv_grid
IMPORTING e_object.
CLASSMETHODS : on_user_command
FOR EVENT user_command OF cl_gui_alv_grid
IMPORTING e_ucomm.
ENDCLASS. "handle DEFINITION
*----------------------------------------------------------*
CLASS handle IMPLEMENTATION.
METHOD handle_double_click.
READ TABLE it_spfli INTO wa_spfli INDEX e_row-index.
IF sy-subrc = 0.
SELECT carrid
connid
fldate
price
seatsmax
seatsocc FROM sflight INTO TABLE it_flight WHERE carrid = wa_spfli-carrid.
ENDIF.
PERFORM build_fieldcat.
CREATE OBJECT o_dial
EXPORTING
width = 800
height = 200
top = 120
left = 120
caption = 'Flight Details'.
SET HANDLER handle=>handle_close FOR o_dial.
CREATE OBJECT o_alv2
EXPORTING
i_parent = o_dial.
CALL METHOD o_alv2->set_table_for_first_display
CHANGING
it_outtab = it_flight
it_fieldcatalog = it_fcat.

CALL METHOD o_alv2->refresh_table_display.


REFRESH it_fcat.
ENDMETHOD. "handle_double_click

METHOD handle_close.
CALL METHOD sender->set_visible
EXPORTING
visible = space.
ENDMETHOD. "handle_close

METHOD on_toolbar.
DATA btn TYPE stb_button.
CASE alv_ok_code.
WHEN 'INCLUDE'.
btn-function = 'EXCLUDE'.
btn-icon = icon_pdir_foreward_switch.
WHEN 'EXCLUDE'.
CLEAR e_object->mt_toolbar.
btn-function = 'INCLUDE'.
btn-icon = icon_pdir_back_switch.
ENDCASE.
INSERT btn INTO TABLE e_object->mt_toolbar.
ENDMETHOD. "on_toolbar

METHOD on_user_command.
CASE e_ucomm.
WHEN 'INCLUDE' OR 'EXCLUDE'.
alv_ok_code = e_ucomm.
CALL METHOD o_alv1->set_toolbar_interactive.
ENDCASE.
ENDMETHOD. "on_user_command

ENDCLASS. "handle IMPLEMENTATION

START-OF-SELECTION.
PERFORM data_fetch.

END-OF-SELECTION.
CALL SCREEN 100.

*-----------------------------------------------------------*
FORM data_fetch .
SELECT * FROM spfli INTO TABLE it_spfli UP TO 20 ROWS.
ENDFORM. " DATA_FETCH
*&----------------------------------------------------------*
*& Module STATUS_0100 OUTPUT
*&-----------------------------------------------------------*
* text
*--------------------------------------------------------------*
MODULE status_0100 OUTPUT.
SET PF-STATUS 'STATUS'.
* SET TITLEBAR 'xxx'.
ENDMODULE. " STATUS_0100 OUTPUT
*-----------------------------------------------------------*
MODULE display_alv OUTPUT.
IF o_dock IS NOT BOUND.
CREATE OBJECT o_dock
EXPORTING
side = cl_gui_docking_container=>dock_at_left
extension = 5000.
ENDIF.
IF o_alv1 IS NOT BOUND.
CREATE OBJECT o_alv1
EXPORTING
i_parent = o_dock.
SET HANDLER handle=>handle_double_click FOR o_alv1.
SET HANDLER handle=>on_toolbar FOR o_alv1.
SET HANDLER handle=>on_user_command FOR o_alv1.
CALL METHOD o_alv1->set_table_for_first_display
EXPORTING
i_structure_name = 'SPFLI'
CHANGING
it_outtab = it_spfli.
ENDIF.
ENDMODULE. " DISPLAY_ALV OUTPUT
*-----------------------------------------------------------*
MODULE user_command_0100 INPUT.
CASE ok_code.
WHEN 'BACK' OR 'EXIT' OR 'CANCEL'.
LEAVE PROGRAM.
ENDCASE.
ENDMODULE. " USER_COMMAND_0100 INPUT

*------------------------------------------------------------*
FORM build_fieldcat .
is_fcat-col_pos = 1.
is_fcat-fieldname = 'CARRID'.
is_fcat-tabname = 'IT_FLIGHT'.
is_fcat-scrtext_l = 'CARRID'.
is_fcat-key = 'X'.
APPEND is_fcat TO it_fcat.
CLEAR is_fcat.

is_fcat-col_pos = 1.
is_fcat-fieldname = 'CONNID'.
is_fcat-tabname = 'IT_FLIGHT'.
is_fcat-key = 'X'.
is_fcat-scrtext_l = 'CONNID'.
APPEND is_fcat TO it_fcat.
CLEAR is_fcat.

is_fcat-col_pos = 3.
is_fcat-fieldname = 'FLDATE'.
is_fcat-tabname = 'IT_FLIGHT'.
is_fcat-key = 'X'.
is_fcat-scrtext_l = 'FLDATE'.
APPEND is_fcat TO it_fcat.
CLEAR is_fcat.

is_fcat-col_pos = 4.
is_fcat-fieldname = 'PRICE'.
is_fcat-tabname = 'IT_FLIGHT'.
is_fcat-scrtext_l = 'PRICE'.
APPEND is_fcat TO it_fcat.
CLEAR is_fcat.

is_fcat-col_pos = 5.
is_fcat-fieldname = 'SEATSMAX'.
is_fcat-tabname = 'IT_FLIGHT'.
is_fcat-scrtext_l = 'MAX SEAT'.
APPEND is_fcat TO it_fcat.
CLEAR is_fcat.

is_fcat-col_pos = 6.
is_fcat-fieldname = 'SEATSOCC'.
is_fcat-tabname = 'IT_FLIGHT'.
is_fcat-scrtext_l = 'OCCUPIED SEAT'.
APPEND is_fcat TO it_fcat.
CLEAR is_fcat.
ENDFORM. " BUILD_FIELDCAT
*------------------------------------------------------------*
SCREEN 100 FLOW LOGIC
PROCESS BEFORE OUTPUT.
MODULE status_0100.
MODULE display_alv.

PROCESS AFTER INPUT.


MODULE user_command_0100.
*----------------------------------------------------------*
10. OO TREE ALV USING CL_SIMPLE_TREE_MODEL

DATA : it_scarr TYPE TABLE OF scarr,


wa_scarr TYPE scarr,
it_spfli TYPE TABLE OF spfli,
wa_spfli TYPE spfli,
it_flight TYPE TABLE OF sflight,
wa_flight TYPE sflight,
ok_code TYPE sy-ucomm,
o_tree TYPE REF TO cl_simple_tree_model,
o_dock TYPE REF TO cl_gui_docking_container.

START-OF-SELECTION.
PERFORM data_fetch.

END-OF-SELECTION.
CALL SCREEN 100.
*-----------------------------------------------------------*
FORM data_fetch .
SELECT * FROM scarr INTO TABLE it_scarr.
IF it_scarr IS NOT INITIAL.
SELECT * FROM spfli INTO TABLE it_spfli
FOR ALL ENTRIES IN it_scarr WHERE carrid = it_scarr-carrid.
IF it_spfli IS NOT INITIAL.
SELECT * FROM sflight INTO TABLE it_flight
FOR ALL ENTRIES IN it_spfli WHERE carrid = it_spfli-carrid

AND connid = it_spfli-connid.


ENDIF.
ENDIF.
ENDFORM. " DATA_FETCH
*------------------------------------------------------------*
MODULE status_0100 OUTPUT.
SET PF-STATUS 'STATUS'.
* SET TITLEBAR 'xxx'.
ENDMODULE. " STATUS_0100 OUTPUT
*-------------------------------------------------------------*
MODULE process_container OUTPUT.
IF o_dock IS NOT BOUND.
CREATE OBJECT o_dock
EXPORTING
ratio = 30.
ENDIF.
ENDMODULE. " PROCESS_CONTAINER OUTPUT
*------------------------------------------------------------*
MODULE process_tree OUTPUT.
IF o_tree IS NOT BOUND.
CREATE OBJECT o_tree
EXPORTING node_selection_mode = cl_simple_tree_model=>node_sel_mode_single.
CALL METHOD o_tree->create_tree_control
EXPORTING
parent = o_dock.
PERFORM add_nodes USING o_tree.
ENDIF.
ENDMODULE. " PROCESS_TREE OUTPUT
*&-------------------------------------------------------------*
*& Module USER_COMMAND_0100 INPUT
*&-------------------------------------------------------------*
* text
*-----------------------------------------------------------*
MODULE user_command_0100 INPUT.
CASE ok_code.
WHEN 'BACK' OR 'EXIT' OR 'CANCEL'.
LEAVE PROGRAM.
ENDCASE.
ENDMODULE. " USER_COMMAND_0100 INPUT
*------------------------------------------------------------*
FORM add_nodes USING obj_tree TYPE REF TO cl_simple_tree_model.
DATA : wa_node TYPE treemsnodt.
DATA : date_text TYPE char10.
CALL METHOD obj_tree->add_node
EXPORTING
node_key = 'ROOT'
isfolder = 'X'
text = 'FLIGHT DETAILS'
expander = 'X'.
LOOP AT it_scarr INTO wa_scarr.
wa_node-node_key = wa_scarr-carrid.
wa_node-text = wa_scarr-carrname.

CALL METHOD obj_tree->add_node


EXPORTING
node_key = wa_node-node_key
relative_node_key = 'ROOT'
relationship = cl_simple_tree_model=>relat_last_child
isfolder = 'X'
text = wa_node-text
expander = 'X'.
ENDLOOP.

LOOP AT it_spfli INTO wa_spfli.


CONCATENATE wa_spfli-carrid
wa_spfli-connid
INTO wa_node-node_key SEPARATED BY space.
wa_node-relatkey = wa_spfli-carrid.
CONCATENATE wa_spfli-carrid
wa_spfli-connid ':'
wa_spfli-cityfrom '->'
wa_spfli-cityto INTO wa_node-text SEPARATED BY space.
CALL METHOD obj_tree->add_node
EXPORTING
node_key = wa_node-node_key
relative_node_key = wa_node-relatkey
relationship = cl_simple_tree_model=>relat_last_child
isfolder = 'X'
text = wa_node-text
expander = 'X'.
ENDLOOP.

LOOP AT it_flight INTO wa_flight.


CONCATENATE wa_flight-carrid
wa_flight-connid
wa_flight-fldate INTO wa_node-node_key
SEPARATED BY space.
CONCATENATE wa_flight-carrid
wa_flight-connid INTO wa_node-relatkey

SEPARATED BY space.
WRITE wa_flight-fldate TO date_text.
wa_node-text = date_text.
CALL METHOD obj_tree->add_node
EXPORTING
node_key = wa_node-node_key
relative_node_key = wa_node-relatkey
relationship = cl_simple_tree_model=>relat_last_child
isfolder = space
text = wa_node-text
expander = space.
ENDLOOP.
ENDFORM. " ADD_NODES
*------------------------------------------------------------*
SCREEN 100 FLOW LOGIC

PROCESS BEFORE OUTPUT.


MODULE status_0100.
MODULE process_container.
MODULE process_tree.

PROCESS AFTER INPUT.


MODULE user_command_0100.

*-----------------------------------------------------------*
OUTPUT

*-------------------------------------------------------------*
11. OO COLUMNTREE ALV USING CL_COLUMN_TREE_MODEL

TYPE-POOLS : icon.
DATA : it_scarr TYPE SORTED TABLE OF scarr
WITH UNIQUE KEY carrid,
wa_scarr LIKE LINE OF it_scarr,
it_spfli TYPE SORTED TABLE OF spfli
WITH UNIQUE KEY carrid connid,
wa_spfli LIKE LINE OF it_spfli,
it_flight TYPE SORTED TABLE OF sflight
WITH UNIQUE KEY carrid connid fldate,

wa_flight LIKE LINE OF it_flight,


ok_code TYPE sy-ucomm,
o_dock TYPE REF TO cl_gui_docking_container,
o_col_tree TYPE REF TO cl_column_tree_model,
wa_header TYPE treemhhdr.

START-OF-SELECTION.
PERFORM data_fetch.

END-OF-SELECTION.
CALL SCREEN 100.
*----------------------------------------------------------------------*
FORM data_fetch .
SELECT * FROM scarr INTO TABLE it_scarr.
IF it_scarr IS NOT INITIAL.
SELECT * FROM spfli INTO TABLE it_spfli
FOR ALL ENTRIES IN it_scarr WHERE carrid = it_scarr-carrid.
IF it_spfli IS NOT INITIAL.
SELECT * FROM sflight INTO TABLE it_flight
FOR ALL ENTRIES IN it_spfli WHERE carrid = it_spfli-carrid
AND connid = it_spfli-connid.
ENDIF.
ENDIF.
ENDFORM. " DATA_FETCH
*-------------------------------------------------------------*
MODULE status_0100 OUTPUT.
SET PF-STATUS 'STATUS'.
* SET TITLEBAR 'xxx'.

ENDMODULE. " STATUS_0100 OUTPUT


*-----------------------------------------------------------*
MODULE container_processing OUTPUT.
IF o_dock IS NOT BOUND.
CREATE OBJECT o_dock
EXPORTING
ratio = 80.
ENDIF.
ENDMODULE. " CONTAINER_PROCESSING OUTPUT
*---------------------------------------------------------*
MODULE columntree_processing OUTPUT.
wa_header-heading = 'Flight Details'.
wa_header-t_image = icon_ws_plane .
wa_header-tooltip = 'PLANE'.
wa_header-width = 65.
CREATE OBJECT o_col_tree
EXPORTING
node_selection_mod = cl_column_tree_model=>node_sel_mode_single
hierarchy_column_name = 'MAIN'
hierarchy_header = wa_header.

CALL METHOD o_col_tree->create_tree_control


EXPORTING
parent = o_dock.
PERFORM add_columns USING o_col_tree.
PERFORM add_nodes USING o_col_tree.
ENDMODULE. " COLUMNTREE_PROCESSING OUTPUT
*-----------------------------------------------------------*
MODULE user_command_0100 INPUT.
CASE ok_code.
WHEN 'BACK' OR 'EXIT' OR 'CANCEL'.
LEAVE PROGRAM.
ENDCASE.
ENDMODULE. " USER_COMMAND_0100 INPUT
*-----------------------------------------------------------*
FORM add_columns USING col_tree TYPE REF TO cl_column_tree_model.
CALL METHOD col_tree->add_column
EXPORTING
name = 'PRICE'
width = 40
header_text = 'Ticket Price'.
CALL METHOD col_tree->add_column
EXPORTING
name = 'CURRENCY'
width = 20
header_text = 'Currency In:'.
CALL METHOD col_tree->add_column
EXPORTING
name = 'PLANETYPE'
width = 20
header_text = 'Type Of Plane'.
CALL METHOD col_tree->add_column
EXPORTING
name = 'ICON'
width = 15
header_text = 'Icon'.
CALL METHOD col_tree->add_column
EXPORTING
name = 'SEATSFREE'
width = 40
header_text = 'available Seats'.

ENDFORM. " ADD_COLUMNS


*-----------------------------------------------------------*
FORM add_nodes USING col_tree TYPE REF TO cl_column_tree_model.
DATA : wa_node TYPE treemcnodt,
it_item TYPE treemcitab,
text1 TYPE char40,
text2 type char10,
text3 type char40,
text4 type char40.
PERFORM fill_item_table USING 'FLIGHTS'
space
space
space
space
CHANGING it_item.

CALL METHOD col_tree->add_node


EXPORTING
node_key = 'ROOT'
isfolder = 'X'
item_table = it_item.
REFRESH it_item.

LOOP AT it_scarr INTO wa_scarr.


CLEAR wa_node.
wa_node-node_key = wa_scarr-carrid.
PERFORM fill_item_table USING wa_scarr-carrname
space
space
space
space
CHANGING it_item.

CALL METHOD col_tree->add_node


EXPORTING
node_key = wa_node-node_key
relative_node_key = 'ROOT'
relationship = cl_column_tree_model=>relat_last_child
isfolder = 'X'
expander = 'X'
item_table = it_item.
REFRESH it_item.
ENDLOOP.

LOOP AT it_spfli INTO wa_spfli.


CLEAR wa_node.
CONCATENATE wa_spfli-carrid wa_spfli-connid
INTO wa_node-node_key SEPARATED BY space.
wa_node-relatkey = wa_spfli-carrid.
CONCATENATE wa_spfli-carrid wa_spfli-connid ':'
wa_spfli-cityfrom '->' wa_spfli-cityto
INTO text1 SEPARATED BY space.
PERFORM fill_item_table USING text1
space
space
space
space
CHANGING it_item.

CALL METHOD col_tree->add_node


EXPORTING
node_key = wa_node-node_key
relative_node_key = wa_node-relatkey
relationship = cl_column_tree_model=>relat_last_child
isfolder = 'X'
expander = 'X'
item_table = it_item.
REFRESH it_item.
ENDLOOP.

LOOP AT it_flight INTO wa_flight.


CLEAR wa_node.
CONCATENATE wa_flight-carrid
wa_spfli-connid
wa_flight-fldate
INTO wa_node-node_key SEPARATED BY space.
concatenate wa_flight-carrid
wa_flight-connid
into wa_node-relatkey separated by space.
write wa_flight-fldate to text2.
write wa_flight-price to text3 currency wa_flight-currency.
if wa_flight-seatsmax >= wa_flight-seatsocc.
text4 = wa_flight-seatsmax - wa_flight-seatsocc.
endif.

PERFORM fill_item_table USING text2


text3
wa_flight-currency
wa_flight-planetype
text4
CHANGING it_item.

CALL METHOD col_tree->add_node


EXPORTING
node_key = wa_node-node_key
relative_node_key = wa_node-relatkey
relationship = cl_column_tree_model=>relat_last_child
isfolder = space
expander = space
item_table = it_item.
REFRESH it_item.
ENDLOOP.

ENDFORM. " ADD_NODES


*--------------------------------------------------------------*
FORM fill_item_table USING p_space1 TYPE c
p_space2 TYPE c
p_space3 TYPE c
p_space4 TYPE c
p_space5 TYPE c
CHANGING it_item TYPE treemcitab.

DATA : wa_item TYPE treemcitem.


CLEAR wa_item.

wa_item-class = cl_column_tree_model=>item_class_text.

wa_item-item_name = 'MAIN'.
wa_item-text = p_space1.
INSERT wa_item INTO TABLE it_item.

wa_item-item_name = 'PRICE'.
wa_item-text = p_space2.
INSERT wa_item INTO TABLE it_item.

wa_item-item_name = 'CURRENCY'.
wa_item-text = p_space3.
INSERT wa_item INTO TABLE it_item.

wa_item-item_name = 'PLANETYPE'.
wa_item-text = p_space4.
INSERT wa_item INTO TABLE it_item.

wa_item-item_name = 'ICON'.
IF NOT p_space5 IS INITIAL.
IF p_space5 CO ' 0'.
wa_item-t_image = icon_red_light.
ELSE.
wa_item-t_image = icon_green_light.
ENDIF.
CLEAR wa_item-text.
INSERT wa_item INTO TABLE it_item.
ENDIF.

wa_item-item_name = 'SEATSFREE'.
wa_item-text = p_space5.
wa_item-t_image = space.
INSERT wa_item INTO TABLE it_item.
ENDFORM. " FILL_ITEM_TABLE
*------------------------------------------------------------*
SCREEN 100 FLOW LOGIC
PROCESS BEFORE OUTPUT.
MODULE status_0100.
MODULE container_processing.
MODULE columntree_processing.

PROCESS AFTER INPUT.


MODULE user_command_0100.

*-------------------------------------------------------------*
OUTPUT

*-------------------------------------------------------------------------
---------------------------------*
at 07:15:00
Email ThisBlogThis!Share to TwitterShare to FacebookShare to Pinterest

4 comments:

sathya narayanan said...


Very useful info with almost all required ALV functionalities
5 August 2013 at 04:02

Pradeep Kumar said...


Superb Notes its very useful.
29 September 2013 at 00:17

chitti babu said...


excellent blog
28 February 2014 at 04:09
Unknown said...
Very useful and easy to understand.
9 April 2014 at 06:35

Post a Comment

Newer PostOlder PostHome

Subscribe to: Post Comments (Atom)


Comments system

Disqus Shortname

Pages - Menu

 Home
 ABAP
 ABAP-2
 Web-Dynpro
 FPM
 WorkFlow
 BASIS
 Interview Ques
 ABAP Short Ques
Blog Archive

 ► 2017 (27)
 ► 2016 (57)
 ► 2015 (160)
 ► 2014 (175)
 ► 2013 (46)
 ▼ 2012 (14)
o ▼ June (1)
 OO ALV WITH CONTAINERS
o ► May (7)
o ► April (6)

Total Pageviews

1412707

Popular Posts


OO ALV WITH CONTAINERS
1. OO ALV USING DOCKING CONTAINER d...


MODULE POOL
SIMPLE PROGRAM ON MODULE POOL Scenario : ...


Creation of Table Control in Module Pool Program
Description: Table Control generally used to display Multiple records in a single screen. Step
1. Create a Module Pool Program , declare ...


Modal Dialog Box (Pop Up Screen) In Module pool program
Description : Modal Dialog Box is a Pop up window which is displayed on the top of the
screen. When calling this type of screen we have to...


Chain - EndChain In Module Pool Program
----------------------------------------------------------------------------------------------------------------
------------------- Descri...


10. Smartform :Designing a template in Smartform
----------------------------------------------------------------------------------------------------------------
--------------- Step1. ...
 CLASSICAL REPORT PROGRAMS
*****VERY SIMPLE REPORT PROGRAM TO DISPLAY RECORDS FROM SPFLI
TABLE**** * REPORT ZCLASSICAL_REPORT_01 NO STANDARD PAGE HEADING
LINE-...
 INTERACTIVE REPORTS
*****Simple Interactive Report ******* REPORT ZREP_0012 NO STANDARD PAGE
HEADING line-count 30(2). data : it_spfli type table o...


Customer Exit (Screen Exit)- ME21N/ME22N/ME23N- Header
Step1. Go to Tcode- ME21N. Let it be as a requirement, we need some customer specific
input field on the header section of the screen. A...


Creating Lock Object and Using Lock in Program
Step 1. Go to TCODE-SE11, Provide the lock object name and Click on Create
Button. Step 2. Provide the Short text and cli...
Simple theme. Powered by Blogger.

Вам также может понравиться