‎2009 Jan 15 8:03 AM
hi abapers, i'm try to write a alv report using oo concept ... but currenly i'm stuck to convert from FM (function module) to OO Alv. this my snap shop of my prog.
DATA: display_settings TYPE REF TO cl_salv_display_settings.
DATA: salv_table TYPE REF TO cl_salv_table.
DATA: error TYPE REF TO cx_root.
DATA: errtext TYPE string.
----
C.L.A.S.S lcl_main D.E.F.I.N.I.T.I.O.N
----
CLASS lcl_main DEFINITION.
PUBLIC SECTION.
METHODS:get_data,
write_output.
EVENTS: no_data.
PRIVATE SECTION.
data:set_display_setting TYPE REF TO cl_salv_table.
*----
Local Data
*----
details listing by WBS is selected
TYPES: BEGIN OF st_wbs,
rsnum TYPE zmeime002a-rsnum,
rspos TYPE zmeime002a-rspos,
a TYPE zmmgitab01-menge, "previous month GI quantity
b TYPE zmeime002a-bdmng, "Requirement month GI Quantity
c TYPE zmeime002a-bdmng , "Actual Requirement Quantity
d TYPE zmeime002a-bdmng, "Actual Requirement Balance
e TYPE zmeime002a-bdmng, "Actual Reqn Quantity with MATR
f TYPE zmmgitab01-menge, "overall GI qty
g TYPE zmmgitab01-menge, "matr GI qty
qrtn TYPE zmmgitab01-menge, "quantitty returned
areq TYPE zmmgitab01-menge, "actual req value
amatr TYPE zmmgitab01-menge, "actual req value with MATR value
gival TYPE zmmgitab01-menge, "overall GI value
matrval TYPE zmmgitab01-menge, "MATR GI value
END OF st_wbs.
DATA: it_wbs TYPE TABLE OF st_wbs.
DATA : wa_wbs LIKE LINE OF it_wbs.
ENDCLASS.
----
C.L.A.S.S lcl_handler D.E.F.I.N.I.T.I.O.N
----
CLASS lcl_handler DEFINITION.
PUBLIC SECTION.
METHODS handle_event FOR EVENT no_data OF lcl_main.
ENDCLASS.
----
C.L.A.S.S lcl_handler I.M.P.L.E.M.E.N.T.A.T.I.O.N
----
CLASS lcl_handler IMPLEMENTATION.
METHOD handle_event.
MESSAGE i398(00) WITH 'No entries exist for this selection !'.
LEAVE LIST-PROCESSING.
ENDMETHOD.
ENDCLASS.
*----
M.A.I.N. .P.R.O.G.R.A.M.
*----
START-OF-SELECTION.
DATA: o_main TYPE REF TO lcl_main,
o_handler TYPE REF TO lcl_handler.
CREATE OBJECT: o_main,o_kpi,o_handler.
SET HANDLER o_handler->handle_event FOR ALL INSTANCES.
CALL METHOD o_main->get_data.
CALL METHOD o_main->write_output.
----
C.L.A.S.S lcl_main I.M.P.L.E.M.E.N.T.A.T.I.O.N
----
CLASS lcl_main IMPLEMENTATION.
METHOD get_data.
*********i run some select statement into IT_WBS********
ENDMETHOD.
METHOD write_output.
cl_salv_table=>factory(
EXPORTING
list_display = if_salv_c_bool_sap=>false
IMPORTING
r_salv_table = salv_table
CHANGING
t_table = it_wbs
).
PERFORM define_settings USING salv_table.
salv_table->display( ).
ENDMETHOD.
ENDCLASS.
########i want to change this FM ALV into OO concept ######
FORM define_settings USING p_salv_table TYPE REF TO cl_salv_table.
PERFORM set_display_settings USING p_salv_table.
PERFORM set_columns USING p_salv_table.
PERFORM set_functions USING p_salv_table.
ENDFORM. " DEFINE_SETTINGS
FORM set_display_settings USING p_salv_table TYPE REF TO cl_salv_table.
display_settings = p_salv_table->get_display_settings( ).
display_settings->set_list_header( 'MMMs KPI Extraction' ).
display_settings->set_striped_pattern( 'X' ).
display_settings->set_horizontal_lines( '' ).
ENDFORM. " SET_DISPLAY_SETTINGS
FORM set_columns USING p_salv_table TYPE REF TO cl_salv_table.
DATA: columns_table TYPE REF TO cl_salv_columns_table.
DATA: column_table TYPE REF TO cl_salv_column_table.
columns_table = p_salv_table->get_columns( ).
column_table ?= columns_table->get_column( columnname = 'RSNUM' ).
column_table->set_medium_text( 'Reservation number' ).
column_table->set_output_length( '15' ).
column_table ?= columns_table->get_column( columnname = 'RSPOS' ).
column_table->set_short_text( 'Item' ).
column_table ?= columns_table->get_column( columnname = 'A' ).
column_table->set_long_text( 'A-Prev month GI' ).
column_table->set_output_length( '15' ).
column_table ?= columns_table->get_column( columnname = 'B' ).
column_table->set_long_text( 'B-Req Quan' ).
column_table ?= columns_table->get_column( columnname = 'C' ).
column_table->set_long_text( 'C-Actual Req' ).
column_table ?= columns_table->get_column( columnname = 'D' ).
column_table->set_long_text( 'D-Actual Req Bal' ).
column_table ?= columns_table->get_column( columnname = 'E' ).
column_table->set_long_text( 'E-Actual Req MATR' ).
column_table ?= columns_table->get_column( columnname = 'F' ).
column_table->set_long_text( 'F-Overall GI' ).
column_table ?= columns_table->get_column( columnname = 'G' ).
column_table->set_long_text( 'G-Qty Return' ).
column_table ?= columns_table->get_column( columnname = 'QRTN' ).
column_table->set_long_text( 'Qty Return' ).
column_table ?= columns_table->get_column( columnname = 'AREQ' ).
column_table->set_long_text( 'Actual Req Val' ).
column_table ?= columns_table->get_column( columnname = 'AMATR' ).
column_table->set_long_text( 'Actual Req Val-MATR' ).
column_table ?= columns_table->get_column( columnname = 'GIVAL' ).
column_table->set_long_text( 'Overall GI value' ).
column_table ?= columns_table->get_column( columnname = 'MATRVAL' ).
column_table->set_long_text( 'MATR GI value' ).
ENDFORM. " SET_COLUMNS
FORM set_functions USING p_salv_table TYPE REF TO cl_salv_table.
DATA : functions_list TYPE REF TO cl_salv_functions_list.
functions_list = p_salv_table->get_functions( ).
functions_list->set_default( ).
functions_list->set_view_excel( ).
functions_list->set_view_grid( ).
functions_list->set_group_view( ).
ENDFORM.
Edited by: firdaus hashim on Jan 15, 2009 9:04 AM
‎2009 Jan 16 1:48 AM