Sunday, March 28, 2010

Graphs Report

*&---------------------------------------------------------------------*
*& Report ZSAN_GRAPH
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*

REPORT ZSAN_GRAPH.

*** Internal table to hold Statistical data
DATA:

BEGIN OF IT_DATA OCCURS 0,

DATANAME(15),

QUANTITY1 TYPE I,

QUANTITY2 TYPE I,

QUANTITY3 TYPE I,

END OF IT_DATA.
*** Internal table to hold Options
DATA:

BEGIN OF IT_OPTIONS OCCURS 0,

OPTION(20),

END OF IT_OPTIONS.
*** Populating statistics data
IT_DATA-DATANAME = 'India'.

IT_DATA-QUANTITY1 = 55.

IT_DATA-QUANTITY2 = 62.

IT_DATA-QUANTITY3 = 59.

APPEND IT_DATA.

IT_DATA-DATANAME = 'UK'.

IT_DATA-QUANTITY1 = 35.

IT_DATA-QUANTITY2 = 80.

IT_DATA-QUANTITY3 = 44.

APPEND IT_DATA.

IT_DATA-DATANAME = 'USA'.

IT_DATA-QUANTITY1 = 18.

IT_DATA-QUANTITY2 = 80.

IT_DATA-QUANTITY3 = 19.

APPEND IT_DATA.

*** Call FM to generate graph for the stats

CALL FUNCTION 'GRAPH_MATRIX_3D'

EXPORTING

COL1 = 'IT Professionals'

COL2 = 'Doctors'

COL3 = 'Engineers'

TITL = 'Professional Statistics'

TABLES

DATA = IT_DATA

OPTS = IT_OPTIONS

EXCEPTIONS

OTHERS = 1.

Thursday, March 18, 2010

Oops Program to navigate the screens


*&---------------------------------------------------------------------*
*& Report Z_15006_MP_1203_1
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*

REPORT Z_15006_MP_1203_1.

TYPES: BEGIN OF ty_bws,
company TYPE char20, " Company
division TYPE char20, " Division1...
emp_team TYPE char20, " Software / Non Software
emp_spe TYPE char20, " Employee Specialization
END OF ty_bws.

*--------------------------------------------------------------------------------------------------------------------------------------------*
*& DATA DECLARATIONS
*--------------------------------------------------------------------------------------------------------------------------------------------*

DATA: g_alv_tree TYPE REF TO cl_gui_alv_tree, " For ALV tree
g_custom_container TYPE REF TO cl_gui_custom_container, " For custom container
a_hier_header TYPE treev_hhdr. " For Header

DATA: t_bws TYPE TABLE OF ty_bws,
v_bws TYPE ty_bws,
t_bws2 LIKE t_bws.

DATA: t_fieldcat TYPE lvc_t_fcat.

*--------------------------------------------------------------------------------------------------------------------------------------------*
*& END OF SELECTIONS
*--------------------------------------------------------------------------------------------------------------------------------------------*
END-OF-SELECTION.
" Call Screen 9001

CALL SCREEN 9000.

*--------------------------------------------------------------------------------------------------------------------------------------------*
*& Form INIT_TREE
*--------------------------------------------------------------------------------------------------------------------------------------------*
* text
*--------------------------------------------------------------------------------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*--------------------------------------------------------------------------------------------------------------------------------------------*
FORM init_tree .
* Create container for alv tree
CONSTANTS: l_tree_container_name(30) TYPE c VALUE 'CC1'.

* Create Object for the custom container
CREATE OBJECT g_custom_container
EXPORTING
* PARENT =
container_name = l_tree_container_name
* STYLE =
* LIFETIME = lifetime_default
* REPID =
* DYNNR =
* NO_AUTODEF_PROGID_DYNNR =
EXCEPTIONS
cntl_error = 1
cntl_system_error = 2
create_error = 3
lifetime_error = 4
lifetime_dynpro_dynpro_link = 5
OTHERS = 6 .
IF sy-subrc <> 0.
MESSAGE x208(00) WITH 'Error in G_CUSTOM_CONTAINER'(100).
ENDIF.

* Create Tree control
CREATE OBJECT g_alv_tree
EXPORTING
* LIFETIME =
parent = g_custom_container
* SHELLSTYLE =
node_selection_mode = cl_gui_column_tree=>node_sel_mode_single
* HIDE_SELECTION =
item_selection = 'X'
no_toolbar = ''
no_html_header = 'X'
* I_PRINT =
* I_FCAT_COMPLETE =
* I_MODEL_MODE =
EXCEPTIONS
cntl_error = 1
cntl_system_error = 2
create_error = 3
lifetime_error = 4
illegal_node_selection_mode = 5
failed = 6
illegal_column_name = 7
OTHERS = 8.

IF sy-subrc <> 0.
MESSAGE x208(00) WITH 'Error in G_ALV_TREE'(100).
ENDIF.
ENDFORM. " INIT_TREE
*--------------------------------------------------------------------------------------------------------------------------------------------*
*& Form BUILD_HIER_HEADER
*--------------------------------------------------------------------------------------------------------------------------------------------*
* text
*--------------------------------------------------------------------------------------------------------------------------------------------*
* <--P_P_HIER_HEADER text
* <--P_TYPE text
* <--P_TREEV_HHDR text
*--------------------------------------------------------------------------------------------------------------------------------------------*
FORM build_hier_header CHANGING p_hier_header TYPE treev_hhdr.

p_hier_header-heading = 'Company/Divisions/Businesses/Employee Teams/Employees'(300).
p_hier_header-tooltip = 'This is tool tip'(400).
p_hier_header-width = 35.
p_hier_header-width_pix = ''.

ENDFORM. " BUILD_HIER_HEADER
*--------------------------------------------------------------------------------------------------------------------------------------------*
*& Module STATUS_9001 OUTPUT
*--------------------------------------------------------------------------------------------------------------------------------------------*
* text
*--------------------------------------------------------------------------------------------------------------------------------------------*
MODULE status_9001 OUTPUT.
SET PF-STATUS 'PF_9001'.
SET TITLEBAR 'TB_9001'.

IF g_alv_tree IS INITIAL.
PERFORM init_tree. " Initialize tree
PERFORM build_hier_header CHANGING a_hier_header. " Build Hierarchy Header
PERFORM build_data_tab.
PERFORM preapre_fcat.
PERFORM call_alv.
PERFORM create_hier_root.

** Send data to frontend.
CALL METHOD g_alv_tree->frontend_update.
ENDIF.
ENDMODULE. " STATUS_9001 OUTPUT
*--------------------------------------------------------------------------------------------------------------------------------------------*
*& Module USER_COMMAND_9001 INPUT
*--------------------------------------------------------------------------------------------------------------------------------------------*
* text
*--------------------------------------------------------------------------------------------------------------------------------------------*
MODULE user_command_9001 INPUT.
CASE sy-ucomm.
WHEN 'BACK'.
LEAVE TO SCREEN 0.
ENDCASE.
ENDMODULE. " USER_COMMAND_9001 INPUT
*--------------------------------------------------------------------------------------------------------------------------------------------*
*& Form PREAPRE_FCAT
*--------------------------------------------------------------------------------------------------------------------------------------------*
* text
*--------------------------------------------------------------------------------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*--------------------------------------------------------------------------------------------------------------------------------------------*
FORM preapre_fcat .

DATA: wa_fieldcat TYPE lvc_s_fcat.

wa_fieldcat-tabname = 'T_BWS'.
wa_fieldcat-fieldname = 'COMPANY'.
wa_fieldcat-seltext = 'Division'.
APPEND wa_fieldcat TO t_fieldcat.
CLEAR wa_fieldcat.

wa_fieldcat-tabname = 'T_BWS'.
wa_fieldcat-fieldname = 'DIVISION'.
wa_fieldcat-seltext = 'Division'.
APPEND wa_fieldcat TO t_fieldcat.
CLEAR wa_fieldcat.

wa_fieldcat-tabname = 'T_BWS'.
wa_fieldcat-fieldname = 'EMP_TEAM'.
wa_fieldcat-seltext = 'Employee Team'.
APPEND wa_fieldcat TO t_fieldcat.
CLEAR wa_fieldcat.

wa_fieldcat-tabname = 'T_BWS'.
wa_fieldcat-fieldname = 'EMP_SPE'.
wa_fieldcat-seltext = 'Employee Specialization'.
APPEND wa_fieldcat TO t_fieldcat.
CLEAR wa_fieldcat.
ENDFORM. " PREAPRE_FCAT
*--------------------------------------------------------------------------------------------------------------------------------------------*
*& Form BUILD_DATA_TAB
*--------------------------------------------------------------------------------------------------------------------------------------------*
* text
*--------------------------------------------------------------------------------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*--------------------------------------------------------------------------------------------------------------------------------------------*
FORM build_data_tab .
PERFORM append_data USING 'Company' 'Division1' 'Software' 'SAP'.
PERFORM append_data USING 'Company' 'Division1' 'Software' '.net'.
PERFORM append_data USING 'Company' 'Division1' 'Non-Software' 'Designers'.
PERFORM append_data USING 'Company' 'Division1' 'Non-Software' 'Other Workers'.

PERFORM append_data USING 'Company' 'Division2' 'Software' 'SAP'.
PERFORM append_data USING 'Company' 'Division2' 'Software' '.net'.
PERFORM append_data USING 'Company' 'Division2' 'Non-Software' 'Designers'.
PERFORM append_data USING 'Company' 'Division2' 'Non-Software' 'Other Workers'.

PERFORM append_data USING 'Company' 'Division3' 'Software' 'SAP'.
PERFORM append_data USING 'Company' 'Division3' 'Software' '.net'.
PERFORM append_data USING 'Company' 'Division3' 'Non-Software' 'Designers'.
PERFORM append_data USING 'Company' 'Division3' 'Non-Software' 'Other Workers'.

PERFORM append_data USING 'Company' 'Division4' 'Software' 'SAP'.
PERFORM append_data USING 'Company' 'Division4' 'Software' '.net'.
PERFORM append_data USING 'Company' 'Division4' 'Non-Software' 'Designers'.
PERFORM append_data USING 'Company' 'Division4' 'Non-Software' 'Other Workers'.

ENDFORM. " BUILD_DATA_TAB
*--------------------------------------------------------------------------------------------------------------------------------------------*
*& Form CALL_ALV
*--------------------------------------------------------------------------------------------------------------------------------------------*
* text
*--------------------------------------------------------------------------------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*--------------------------------------------------------------------------------------------------------------------------------------------*
FORM call_alv .
CALL METHOD g_alv_tree->set_table_for_first_display
EXPORTING
is_hierarchy_header = a_hier_header
CHANGING
it_fieldcatalog = t_fieldcat
it_outtab = t_bws2. "table must be empty !
ENDFORM. " CALL_ALV
*--------------------------------------------------------------------------------------------------------------------------------------------*
*& Form CREATE_HIER_ROOT
*--------------------------------------------------------------------------------------------------------------------------------------------*
* text
*--------------------------------------------------------------------------------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*--------------------------------------------------------------------------------------------------------------------------------------------*
FORM create_hier_root .
DATA: p_divnode TYPE lvc_nkey,
p_teamnode TYPE lvc_nkey,
p_lastnode TYPE lvc_nkey,
p_division TYPE ty_bws-division.

DATA: l_node_text TYPE lvc_value.
DATA: lv_emp_team TYPE ty_bws-emp_team,
lv_emp_spe TYPE ty_bws-emp_spe.

break jdonepudi.

l_node_text = 'Company'.

CLEAR v_bws.
CALL METHOD g_alv_tree->add_node
EXPORTING
i_relat_node_key = ''
i_relationship = cl_gui_column_tree=>relat_last_child
i_node_text = l_node_text
IMPORTING
e_new_node_key = p_divnode.

*sort t_bws by division emp_team emp_spe.

LOOP AT t_bws INTO v_bws.
l_node_text = v_bws-division.
*p_relat_key = 1.
AT NEW division.
*at end of division.
PERFORM add_division USING v_bws
p_divnode
l_node_text
CHANGING p_teamnode.
p_division = v_bws-division.
ENDAT.

*at new emp_team - Software / Non Software
IF lv_emp_team <> v_bws-emp_team.
lv_emp_team = v_bws-emp_team.
l_node_text = v_bws-emp_team.

PERFORM add_emp_team USING v_bws
p_teamnode
l_node_text
CHANGING p_lastnode.
ENDIF.

*at new emp_spe SAP / .net Designers / Other Workers
IF lv_emp_spe <> v_bws-emp_spe.
lv_emp_spe = v_bws-emp_spe.
l_node_text = v_bws-emp_spe.
IF lv_emp_spe = '.net' OR
lv_emp_spe = 'Other Workers'.
p_lastnode = p_lastnode - 1.
ENDIF.
PERFORM add_emp_team USING v_bws
p_lastnode
l_node_text
CHANGING p_lastnode.
ENDIF.
ENDLOOP.

ENDFORM. " CREATE_HIER_ROOT
*--------------------------------------------------------------------------------------------------------------------------------------------*
*& Form ADD_EMP_TEAM
*--------------------------------------------------------------------------------------------------------------------------------------------*
* text
*--------------------------------------------------------------------------------------------------------------------------------------------*
* -->P_KEY text
* -->P_TEXT text
* -->P_OUTTAB text
*--------------------------------------------------------------------------------------------------------------------------------------------*
FORM add_emp_team USING p_v_bws TYPE ty_bws
p_key TYPE lvc_nkey
p_text TYPE lvc_value
CHANGING p_key2 TYPE lvc_nkey.

* add node
CALL METHOD g_alv_tree->add_node
EXPORTING
i_relat_node_key = p_key
i_relationship = cl_gui_column_tree=>relat_last_child
i_node_text = p_text
is_outtab_line = p_v_bws
IMPORTING
e_new_node_key = p_key2.
ENDFORM. " ADD_EMP_TEAM

*--------------------------------------------------------------------------------------------------------------------------------------------*
*& Form ADD_DIVISION
*--------------------------------------------------------------------------------------------------------------------------------------------*
* text
*--------------------------------------------------------------------------------------------------------------------------------------------*
* -->P_V_BWS text
* -->P_KEY text
* -->P_TEXT text
* <--P_KEY2 text
*--------------------------------------------------------------------------------------------------------------------------------------------*
FORM add_division USING p_v_bws TYPE ty_bws
p_key TYPE lvc_nkey
p_text TYPE lvc_value
CHANGING p_key2 TYPE lvc_nkey.

* add node
CALL METHOD g_alv_tree->add_node
EXPORTING
i_relat_node_key = p_key
i_relationship = cl_gui_column_tree=>relat_last_child
i_node_text = p_text
is_outtab_line = p_v_bws
IMPORTING
e_new_node_key = p_key2.

ENDFORM. " ADD_DIVISION
*--------------------------------------------------------------------------------------------------------------------------------------------*
*& Form APPEND_DATA
*--------------------------------------------------------------------------------------------------------------------------------------------*
* text
*--------------------------------------------------------------------------------------------------------------------------------------------*
* -->P_COMPANY text
* -->P_DIVISION text
*--------------------------------------------------------------------------------------------------------------------------------------------*
FORM append_data USING p_company TYPE ty_bws-company
p_division TYPE ty_bws-division
p_empteam TYPE ty_bws-emp_team
p_empspe TYPE ty_bws-emp_spe.

v_bws-company = p_company.
v_bws-division = p_division.
v_bws-emp_team = p_empteam.
v_bws-emp_spe = p_empspe.
APPEND v_bws TO t_bws. CLEAR v_bws.
ENDFORM. " APPEND_DATA



output:

Write the Month Name based on input date

*&---------------------------------------------------------------------*
*& Report YDATES
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*

REPORT YDATES.
FIELD-SYMBOLS: TYPE ANY.

CONSTANTS: lc_fl01(9) TYPE c VALUE 'January',
lc_fl02(9) TYPE c VALUE 'February',
lc_fl03(9) TYPE c VALUE 'March',
lc_fl04(9) TYPE c VALUE 'April',
lc_fl05(9) TYPE c VALUE 'May',
lc_fl06(9) TYPE c VALUE 'June',
lc_fl07(9) TYPE c VALUE 'July',
lc_fl08(9) TYPE c VALUE 'August',
lc_fl09(9) TYPE c VALUE 'September',
lc_fl10(9) TYPE c VALUE 'Octomber',
lc_fl11(9) TYPE c VALUE 'November',
lc_fl12(9) TYPE c VALUE 'December'.

DATA: lv_dd(2),
lv_mm(2),
lv_yyyy(4),
lv_month TYPE char7,
lv_month_name(9).

parameters: p_date type sy-datum.


lv_mm = p_date+4(2).


CONCATENATE 'lc_fl' lv_mm INTO lv_month.

ASSIGN (lv_month) TO .
lv_month_name = .
write : lv_month_name.