You are on page 1of 6

*&---------------------------------------------------------------------*

*& Report ZES_TEST2


*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*
REPORT zes_test2.
TABLES:sflight.
*----------------------------------------------------------------------*
*
CLASS lcl_data DEFINITION
*----------------------------------------------------------------------*
* Local class definition
*----------------------------------------------------------------------*
CLASS lcl_data DEFINITION.
PUBLIC SECTION.
* Types
TYPES:
BEGIN OF t_sflight,
carrid
TYPE s_carr_id,
" Airline Code
connid
TYPE s_conn_id,
" Flight Connection Number
fldate
TYPE s_date,
" Flight date
price
TYPE s_price,
" Airfare
planetype TYPE s_planetye,
" Aircraft Type
paymentsum TYPE s_sum,
" Total of current bookings
END OF t_sflight.
*--------------------------------------------------------------------*
* Internal tables
DATA:
o_table TYPE STANDARD TABLE OF t_sflight.
*--------------------------------------------------------------------*
* Work areas
DATA:
o_table_line TYPE t_sflight,
o_sflight_line type sflight.
*--------------------------------------------------------------------*
* Global Data
DATA:
g_okcode_100 TYPE sy-ucomm.
*--------------------------------------------------------------------*
* Object refrences for ALV Display
DATA:
obj_grid
TYPE REF TO cl_salv_table,
obj_columns
TYPE REF TO cl_salv_columns_table,
obj_column
TYPE REF TO cl_salv_column_table,
obj_functions TYPE REF TO cl_salv_functions,
obj_selections TYPE REF TO cl_salv_selections,
obj_container TYPE REF TO cl_gui_custom_container.
*--------------------------------------------------------------------*
* Methods
METHODS:
validate_carrid,
get_data,

display,
display_data,
pbo_100,
pai_100,
pbo_200,
pai_200,
exit_200.
ENDCLASS.
" Lcl_data DEFINITION
*--------------------------------------------------------------------*
* Object reference
DATA:
obj_data
TYPE REF TO lcl_data.
*--------------------------------------------------------------------*
* Table control
CONTROLS:tabc TYPE TABLEVIEW USING SCREEN 100.
DATA:cols LIKE LINE OF tabc-cols,
tab_cont TYPE STANDARD TABLE OF obj_data->t_sflight,
tab_line TYPE obj_data->t_sflight,
lines TYPE i.
**********************************************************************
* Selection Screen
*
**********************************************************************
SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-001.
SELECT-OPTIONS s_carrid FOR sflight-carrid .
" Airline Code
SELECTION-SCREEN END OF BLOCK b1.
**********************************************************************
* Initialization
*
**********************************************************************
INITIALIZATION.
* Create object for local class
CREATE OBJECT obj_data.
**********************************************************************
* At selection screen on field
*
**********************************************************************
* On MRP area
AT SELECTION-SCREEN ON s_carrid.
* Validating MRP Area
CALL METHOD obj_data->validate_carrid.
**********************************************************************
* Start of selection
*
**********************************************************************
START-OF-SELECTION.
* Fetch the data
CALL METHOD obj_data->get_data.
**********************************************************************
* End of Selection
*
**********************************************************************

END-OF-SELECTION.
* Output display
CALL METHOD obj_data->display.
*----------------------------------------------------------------------*
*
CLASS lcl_data IMPLEMENTATION
*----------------------------------------------------------------------*
* Validating s_carrid
*----------------------------------------------------------------------*
CLASS lcl_data IMPLEMENTATION.
METHOD validate_carrid.
* Local data
DATA:l_carrid TYPE s_carr_id.
* Validating Airline Code against SCARR table
SELECT carrid
FROM scarr
INTO l_carrid
UP TO 1 ROWS
WHERE carrid IN s_carrid.
ENDSELECT.
IF sy-subrc NE 0.
MESSAGE 'Please enter valid airline code' TYPE 'E'.
ENDIF.

ENDMETHOD.
" Validate_carrid
METHOD get_data.
Get data from SFLIGHT table
SELECT carrid
" Airline Code
connid
" Flight Connection Number
fldate
" Flight date
price
" Airfare
planetype
" Aircraft Type
paymentsum
" Total of current bookings
FROM sflight
INTO TABLE o_table
WHERE carrid IN s_carrid.
ENDMETHOD.
" Get_data
METHOD display.
Call for screen to display out put
CALL SCREEN 100.
ENDMETHOD.
" Display
METHOD display_data.
IF obj_grid IS NOT INITIAL.
obj_grid->free( ).
ENDIF.
IF obj_container IS NOT INITIAL.
obj_container->free( ).
ENDIF.
Creating container for ALV Display.
CREATE OBJECT obj_container
EXPORTING
container_name = 'CONTAINER'.
TRY.
CALL METHOD cl_salv_table=>factory
EXPORTING
r_container
= obj_container
container_name = 'CONTAINER'
IMPORTING

r_salv_table = obj_grid
CHANGING
t_table
= o_table.
CATCH cx_salv_msg .
MESSAGE 'Error raised while displaying output.'
TYPE 'S' DISPLAY LIKE 'E'.
ENDTRY.
* For functions
obj_functions = obj_grid->get_functions( ).
obj_functions->set_all( 'X' ).
* Selections
obj_selections = obj_grid->get_selections( ).
obj_selections->set_selection_mode( 4 ).
* Out put display
CALL METHOD obj_grid->display( ).
ENDMETHOD.
" Display_data
METHOD pbo_100.
SET PF-STATUS 'MENU_100'.
SET TITLEBAR 'TITLE_100'.
DESCRIBE TABLE o_table LINES lines.
tabc-lines = lines.
* Setting selection mode
tabc-line_selector = 'X'.
tabc-line_sel_mode = 1.
" 1. single row 2. multiple rows
ENDMETHOD.
METHOD pai_100.
MOVE sy-ucomm TO g_okcode_100.
CASE g_okcode_100.
WHEN 'CREATE_100'.
CALL SCREEN 200 STARTING AT 7 7.
WHEN 'CHANGE_100'.
CALL SCREEN 300 STARTING AT 7 7.
WHEN 'DELETE_100'.
WHEN 'CANCEL'.
LEAVE TO SCREEN 0.
ENDCASE.
ENDMETHOD.
METHOD pbo_200.
SET PF-STATUS 'MENU_200'.
SET TITLEBAR 'TITLE_200'.
CLEAR sflight.
*
DESCRIBE TABLE o_table LINES lines.
*
tabc-lines = lines.
** Setting selection mode
*
tabc-line_selector = 'X'.
*
tabc-line_sel_mode = 2.
ENDMETHOD.
METHOD pai_200.
DATA: l_selected_row TYPE i.
CLEAR:o_sflight_line.
MOVE sy-ucomm TO g_okcode_100.
CASE g_okcode_100.
WHEN 'SAVE'.
o_sflight_line-carrid
= sflight-carrid.

" Pbo_100

" Pai_100

" Pbo_200

o_sflight_line-connid
o_sflight_line-fldate
o_sflight_line-price
o_sflight_line-planetype
o_sflight_line-paymentsum
* Modifying Internal table

=
=
=
=
=

sflight-connid.
sflight-fldate.
sflight-price.
sflight-planetype.
sflight-paymentsum.

* Modifying DB table
modify sflight from o_sflight_line.
WHEN 'CLEAR'.
WHEN 'CANCEL'.
LEAVE TO SCREEN 0.
ENDCASE.
ENDMETHOD.
" Pai_200
METHOD exit_200.
LEAVE TO SCREEN 0.
ENDMETHOD.
"exit_200
ENDCLASS.
" Lcl_data IMPLEMENTATION
*&---------------------------------------------------------------------*
*&
Module PBO_0100 OUTPUT
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
MODULE pbo_0100 OUTPUT.
CALL METHOD obj_data->pbo_100.
ENDMODULE.
" PBO_0100 OUTPUT
*&---------------------------------------------------------------------*
*&
Module PAI_0100 INPUT
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
MODULE pai_0100 INPUT.
CALL METHOD obj_data->pai_100.
ENDMODULE.
" PAI_0100 INPUT
*&---------------------------------------------------------------------*
*&
Module READ_TABLE_CONTROL INPUT
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
MODULE read_table_control INPUT.
ENDMODULE.
" READ_TABLE_CONTROL INPUT
*&---------------------------------------------------------------------*
*&
Module CANCEL INPUT
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
MODULE cancel INPUT.
LEAVE TO SCREEN 0.
ENDMODULE.
" CANCEL INPUT
*&---------------------------------------------------------------------*
*&
Module FILL_TABLE OUTPUT
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
MODULE fill_table OUTPUT.
* Local data
DATA: o_line TYPE obj_data->t_sflight.

MOVE obj_data->o_table_line TO o_line.


sflight-carrid
= o_line-carrid.
sflight-connid
= o_line-connid.
sflight-fldate
= o_line-fldate.
sflight-price
= o_line-price.
sflight-planetype = o_line-planetype.
sflight-paymentsum = o_line-paymentsum.
* READ TABLE obj_data->o_table INTO obj_data->o_table_line INDEX tabc-current_l
ine.
ENDMODULE.
" FILL_TABLE OUTPUT
*&---------------------------------------------------------------------*
*&
Module PBO_0200 OUTPUT
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
MODULE pbo_0200 OUTPUT.
CALL METHOD obj_data->pbo_200.
ENDMODULE.
" PBO_0200 OUTPUT
*&---------------------------------------------------------------------*
*&
Module PAI_0200 INPUT
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
MODULE pai_0200 INPUT.
CALL METHOD obj_data->pai_200.
ENDMODULE.
" PAI_0200 INPUT
*&---------------------------------------------------------------------*
*&
Module EXIT_200 INPUT
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
MODULE exit_200 INPUT.
CALL METHOD obj_data->exit_200.
ENDMODULE.
" EXIT_200 INPUT

You might also like