2007 Feb 23 10:14 AM
Hi Experts,
Please help for making Pie chart and bar chats how can i make on a subscreen?
If any program you have please send it.
Thanks & Regards.
Ankur garg.
2007 Feb 23 10:34 AM
Hi,
Use the function Modules
GRAPH_MATRIX_2D and GRAPH_MATRIX_3D
To generate Pie and Bar charts.
Sample Code:
REPORT yb<rupg>
MESSAGE-ID yb
NO STANDARD PAGE HEADING.
TABLES : ybstsaco .
&----
*Data Declarations
&----
*Internal Table for Upgrade errors
DATA : it_ybstsaco LIKE ybstucck OCCURS 0 WITH HEADER LINE.
*Internal Table for Tree Nodes
DATA : it_tnode LIKE snodetext OCCURS 0 WITH HEADER LINE.
DATA : it_tempcobs LIKE ybstsaco OCCURS 0 WITH HEADER LINE.
DATA : v_tot TYPE i.
DATA : v_validate TYPE tdevc-devclass,
v_vobjna TYPE tadir-obj_name,
v_devdes TYPE tdevct-ctext,
v_objdes TYPE ybstcobt-otext,
v_uecount TYPE i,
v_uwcount TYPE i,
v_cl1,v_cl2,v_cl3,
v_cl4,v_cl5,
v_ues(7),
v_uws(7),
v_ero(7),
v_objna(30).
DATA : v_flag TYPE flag.
DATA : v_objty(4).
DATA : BEGIN OF it_rulesaco OCCURS 0,
upgru TYPE ybstsaco-upgru,
impac TYPE ybstsaco-impac,
analw TYPE ybstsaco-analw,
objna TYPE ybstsaco-objna,
objty TYPE ybstsaco-objty,
categ TYPE ybstsaco-categ,
abapl TYPE ybstsaco-abapl,
progl TYPE ybstsaco-progl,
END OF it_rulesaco.
DATA : icon(20),
v_cntrule TYPE i.
DATA: green(20) TYPE c VALUE 'icon_green_light',
: yellow(20) TYPE c VALUE 'icon_yellow_light',
: red(20) TYPE c VALUE 'icon_red_light'.
DATA : it_rulesaco1 LIKE STANDARD TABLE OF it_rulesaco WITH HEADER LINE.
&----
*Selection Screen
&----
SELECTION-SCREEN : BEGIN OF BLOCK b1 WITH FRAME TITLE text-001.
SELECT-OPTIONS : s_devcl FOR ybstsaco-devcl.
SELECT-OPTIONS : s_objna FOR ybstsaco-objna.
SELECTION-SCREEN : END OF BLOCK b1.
SELECTION-SCREEN : BEGIN OF BLOCK b2 WITH FRAME TITLE text-002.
PARAMETERS: v_dewise RADIOBUTTON GROUP grp,
v_ruwise RADIOBUTTON GROUP grp.
SELECTION-SCREEN : END OF BLOCK b2.
&----
*At Selection Screen.
&----
AT SELECTION-SCREEN.
SELECT SINGLE devclass
INTO v_validate
FROM tdevc
WHERE devclass IN s_devcl.
IF sy-subrc NE 0.
v_flag = 'X'.
MESSAGE 'Package Does Not Exist' TYPE 'I'.
STOP.
ENDIF.
SELECT SINGLE obj_name
INTO v_objna
FROM tadir
WHERE obj_name IN s_objna.
IF sy-subrc NE 0.
v_flag = 'X'.
MESSAGE 'Object Does not Exist' TYPE 'I'.
STOP.
ENDIF.
&----
Start-of-selection.
&----
START-OF-SELECTION.
IF v_dewise = 'X'.
PERFORM get_data.
ELSEIF v_ruwise = 'X'.
PERFORM get_data_rule_wise.
ENDIF.
&----
*End-of-selection.
&----
END-OF-SELECTION.
IF v_flag NE 'X'.
IF v_dewise = 'X'.
PERFORM tree_display.
ELSEIF v_ruwise = 'X'.
PERFORM tree_display_rule_wise..
ENDIF.
ENDIF.
&----
*& Form tree_display
&----
FORM tree_display .
it_tnode-name = 'Custom Developed Objects'.
it_tnode-nlength = STRLEN( it_tnode-name ).
it_tnode-color = 1.
it_tnode-tlevel = 1.
APPEND it_tnode.
CLEAR it_tnode.
SORT it_ybstsaco BY devcl objty categ objna.
LOOP AT it_ybstsaco.
AT NEW devcl.
PERFORM get_zebra USING v_cl3.
CLEAR v_objty.
READ TABLE it_ybstsaco INDEX sy-tabix.
it_tnode-name = it_ybstsaco-devcl.
it_tnode-nlength = 30.
it_tnode-color = '4'.
it_tnode-tlevel = 2.
PERFORM get_devdes.
PERFORM num_count.
it_tnode-tlength = 45.
it_tnode-tcolor = 1.
it_tnode-tpos = 52.
it_tnode-text1 = v_ues.
it_tnode-tlength1 = 7.
it_tnode-tcolor1 = 3.
it_tnode-tpos1 = 99.
it_tnode-text2 = v_uws.
it_tnode-tlength2 = 7.
it_tnode-tcolor2 = 3.
it_tnode-tpos2 = 107.
it_tnode-text3 = v_ero.
it_tnode-tlength3 = 7.
it_tnode-tcolor3 = 3.
it_tnode-tpos3 = 115.
APPEND it_tnode.
CLEAR it_tnode.
LOOP AT it_ybstsaco WHERE devcl EQ it_ybstsaco-devcl.
IF v_objty NE it_ybstsaco-objty.
v_objty = it_ybstsaco-objty.
PERFORM get_zebra USING v_cl5.
it_tnode-name = v_objty.
it_tnode-nlength = 4.
it_tnode-color = 7.
it_tnode-tlevel = 3.
PERFORM get_shorttext USING v_objty.
PERFORM num_count_objty.
it_tnode-text = v_objdes.
it_tnode-tlength = 45.
it_tnode-tcolor = 1.
it_tnode-tpos = 52.
it_tnode-text1 = v_ues.
it_tnode-tlength1 = 7.
it_tnode-tcolor1 = 3.
it_tnode-tpos1 = 99.
it_tnode-text2 = v_uws.
it_tnode-tlength2 = 7.
it_tnode-tcolor2 = 3.
it_tnode-tpos2 = 107.
it_tnode-text3 = v_ero.
it_tnode-tlength3 = 7.
it_tnode-tcolor3 = 3.
it_tnode-tpos3 = 115.
APPEND it_tnode.
CLEAR it_tnode.
PERFORM get_zebra USING v_cl1.
IF v_objty EQ 'PROG'.
PERFORM build_prognodes.
ELSE.
PERFORM build_others.
ENDIF.
ENDIF.
ENDLOOP.
ENDAT.
ENDLOOP.
CALL FUNCTION 'RS_TREE_CONSTRUCT'
TABLES
nodetab = it_tnode.
IF sy-subrc <> 0.
ENDIF.
CALL FUNCTION 'RS_TREE_LIST_DISPLAY'
EXPORTING
callback_program = sy-repid
callback_user_command = 'USER_COMMAND'
CALLBACK_TEXT_DISPLAY =
CALLBACK_MOREINFO_DISPLAY =
CALLBACK_COLOR_DISPLAY =
callback_top_of_page = 'TOP_OF_PAGE'
callback_gui_status = 'S001'
CALLBACK_CONTEXT_MENU =
STATUS = 'IMPLICIT'
CHECK_DUPLICATE_NAME = '1'
COLOR_OF_NODE = '4'
COLOR_OF_MARK = '3'
COLOR_OF_LINK = '1'
COLOR_OF_MATCH = '5'
LOWER_CASE_SENSITIVE = ' '
MODIFICATION_LOG = ' '
NODE_LENGTH = 30
TEXT_LENGTH = 75
TEXT_LENGTH1 = 0
TEXT_LENGTH2 = 0
RETURN_MARKED_SUBTREE = ' '
SCREEN_START COLUMN = 0
SCREEN_START_LINE = 0
SCREEN_END_COLUMN = 0
SCREEN_END_LINE = 0
SUPPRESS_NODE_OUTPUT = ' '
LAYOUT_MODE = ' '
use_control = 'L'.
IMPORTING
F15 = .
ENDFORM. " tree_display
&----
*& Form s001
&----
text
----
FORM s001.
SET PF-STATUS 'S002'.
SET TITLEBAR 'T001'.
ENDFORM. "s001
&----
*& Form top_of_page
&----
text
----
FORM top_of_page.
WRITE : 60 'UNICODE ANALYSIS' COLOR 1 INTENSIFIED OFF,
/60 '****************',
/,/12 'Object Name' COLOR 1,
60 'Description' COLOR 1 ,
99 'Unicode' COLOR 3,
107 'Unicode' COLOR 3,
115 'Total ' COLOR 3.
WRITE : /99 'Issues ' COLOR 3,
107 'Warns ' COLOR 3,
115 'Issues' COLOR 3,
sy-uline.
ENDFORM. "top_of_page
&----
*& Form user_command
&----
text
----
FORM user_command TABLES pt_nodes STRUCTURE seucomm
USING pv_command TYPE c
CHANGING pv_exit TYPE c
pv_list_refresh TYPE c.
DATA : v_objna1(30),
v_objct1(30).
CASE sy-ucomm.
WHEN 'TRPI' OR 'UPGR'.
IF pt_nodes-tlevel EQ '05' OR pt_nodes-tlevel EQ '04'.
IF pt_nodes-nlength NE '04'.
pv_list_refresh = ' '.
CLEAR v_objna.
v_objna1 = pt_nodes-name.
v_objct1 = pt_nodes-text4.
PERFORM tree_display1 USING v_objna1 v_objct1.
ELSEIF pt_nodes-selfield EQ 'MINUS'
OR pt_nodes-selfield EQ 'PLUS'.
ELSE.
MESSAGE 'No Errors For the Selected Object'
TYPE 'I'.
ENDIF.
ELSEIF pt_nodes-selfield EQ 'MINUS'
OR pt_nodes-selfield EQ 'PLUS'
OR sy-ucomm EQ 'TREP'
OR sy-ucomm EQ 'TRCM'.
ELSE.
MESSAGE
'Please Select the Object For Further Navigation' TYPE 'I'.
SET PF-STATUS 'S002'.
ENDIF.
WHEN OTHERS.
ENDCASE.
ENDFORM. "user_command
&----
*& Form num_count
&----
FORM num_count .
DATA : v_eroi TYPE i,
v_len TYPE i.
CLEAR : v_uecount,v_uwcount.
LOOP AT it_ybstsaco WHERE
devcl EQ it_ybstsaco-devcl.
IF it_ybstsaco-impac = 'E'.
v_uecount = v_uecount + 1.
ELSE.
v_uwcount = v_uwcount + 1.
ENDIF.
ENDLOOP.
CLEAR : v_ues,v_uws.
v_ues = v_uecount.
v_uws = v_uwcount.
v_eroi = v_uwcount + v_uecount.
v_ero = v_eroi.
v_len = STRLEN( v_ues ).
v_len = 7 - v_len.
SHIFT v_ues RIGHT BY v_len PLACES.
CLEAR v_len.
v_len = STRLEN( v_uws ).
v_len = 7 - v_len.
SHIFT v_uws RIGHT BY v_len PLACES.
CLEAR v_len.
v_len = STRLEN( v_ero ).
v_len = 7 - v_len.
SHIFT v_ero RIGHT BY v_len PLACES.
CLEAR v_len.
ENDFORM. " num_count
&----
*& Form get_devdes
&----
FORM get_devdes .
SELECT SINGLE ctext FROM tdevct INTO v_devdes
WHERE devclass EQ it_ybstsaco-devcl
AND spras EQ sy-langu.
IF sy-subrc EQ 0.
IF v_devdes IS NOT INITIAL.
it_tnode-text = v_devdes.
CLEAR v_devdes.
ELSE.
CONCATENATE 'Description Missing in '
sy-langu INTO it_tnode-text.
it_tnode-text = 'Description Missing'.
CLEAR v_devdes.
ENDIF.
ELSE.
it_tnode-text = 'Description Missing'.
ENDIF.
ENDFORM. " get_devdes
&----
*& Form get_Shorttext
&----
FORM get_shorttext USING p_v_objty.
CLEAR v_objdes.
SELECT SINGLE otext
FROM ybstcobt
INTO v_objdes
WHERE objct EQ p_v_objty
AND spras EQ sy-langu.
ENDFORM. " get_Shorttext
&----
*& Form build_prognodes
&----
FORM build_prognodes .
DATA : v_categ(4).
LOOP AT it_ybstsaco WHERE devcl EQ it_ybstsaco-devcl
AND objty EQ v_objty.
IF v_categ NE it_ybstsaco-categ.
PERFORM get_zebra USING v_cl1.
v_categ = it_ybstsaco-categ.
it_tnode-name = v_categ.
it_tnode-nlength = 4.
it_tnode-color = 7.
it_tnode-tlevel = 4.
PERFORM get_shorttext USING v_categ.
PERFORM numcount_categ USING v_categ.
it_tnode-text = v_objdes.
it_tnode-tlength = 45.
it_tnode-tcolor = 2.
it_tnode-tpos = 52.
it_tnode-text1 = v_ues.
it_tnode-tlength1 = 7.
it_tnode-tcolor1 = 3.
it_tnode-tpos1 = 99.
it_tnode-text2 = v_uws.
it_tnode-tlength2 = 7.
it_tnode-tcolor2 = 3.
it_tnode-tpos2 = 107.
it_tnode-text3 = v_ero.
it_tnode-tlength3 = 7.
it_tnode-tcolor3 = 3.
it_tnode-tpos3 = 115.
APPEND it_tnode.
CLEAR it_tnode.
LOOP AT it_ybstsaco WHERE devcl EQ it_ybstsaco-devcl
AND objty EQ v_objty
AND categ EQ v_categ.
IF v_objna NE it_ybstsaco-objna.
v_objna = it_ybstsaco-objna.
it_tnode-name = it_ybstsaco-objna.
it_tnode-nlength = 30.
it_tnode-color = 7.
it_tnode-tlevel = 5.
PERFORM get_shorttext_objna USING v_objna v_objty.
PERFORM num_countobjna CHANGING v_tot.
it_tnode-text = v_objdes.
it_tnode-tlength = 45.
it_tnode-tcolor = 2.
it_tnode-tpos = 52.
it_tnode-text1 = v_ues.
it_tnode-tlength1 = 7.
it_tnode-tcolor1 = 3.
it_tnode-tpos1 = 99.
it_tnode-text2 = v_uws.
it_tnode-tlength2 = 7.
it_tnode-tcolor2 = 3.
it_tnode-tpos2 = 107.
it_tnode-text3 = v_ero.
it_tnode-tlength3 = 7.
it_tnode-tcolor3 = 3.
it_tnode-tpos3 = 115.
it_tnode-text4 = it_ybstsaco-objty.
IF v_tot EQ 0.
CLEAR it_tnode.
ELSE.
PERFORM get_zebra USING v_cl2.
APPEND it_tnode.
CLEAR it_tnode.
ENDIF.
ENDIF.
ENDLOOP.
ENDIF.
ENDLOOP.
ENDFORM. " build_prognodes
&----
*& Form build_others
&----
FORM build_others .
LOOP AT it_ybstsaco WHERE devcl EQ it_ybstsaco-devcl
AND objty EQ v_objty.
IF v_objna NE it_ybstsaco-objna.
v_objna = it_ybstsaco-objna.
it_tnode-name = it_ybstsaco-objna.
it_tnode-nlength = 30.
it_tnode-color = 7.
it_tnode-tlevel = 4.
PERFORM get_shorttext_objna USING v_objna v_objty.
PERFORM num_countobjna CHANGING v_tot.
it_tnode-text = v_objdes.
it_tnode-tlength = 45.
it_tnode-tcolor = 2.
it_tnode-tpos = 52.
it_tnode-text1 = v_ues.
it_tnode-tlength1 = 7.
it_tnode-tcolor1 = 3.
it_tnode-tpos1 = 99.
it_tnode-text2 = v_uws.
it_tnode-tlength2 = 7.
it_tnode-tcolor2 = 3.
it_tnode-tpos2 = 107.
it_tnode-text3 = v_ero.
it_tnode-tlength3 = 7.
it_tnode-tcolor3 = 3.
it_tnode-tpos3 = 115.
it_tnode-text4 = it_ybstsaco-objty.
IF v_tot EQ 0.
CLEAR it_tnode.
ELSE.
PERFORM get_zebra USING v_cl2.
APPEND it_tnode.
CLEAR it_tnode.
ENDIF.
ENDIF.
ENDLOOP.
ENDFORM. " build_others
&----
*& Form num_count_objty
&----
FORM num_count_objty .
DATA : v_len TYPE i,
v_eroi TYPE i.
CLEAR : v_uecount,v_uwcount.
LOOP AT it_ybstsaco WHERE
devcl EQ it_ybstsaco-devcl
AND objty EQ v_objty..
IF it_ybstsaco-impac = 'E'.
v_uecount = v_uecount + 1.
ELSEIF it_ybstsaco-impac = 'W'.
v_uwcount = v_uwcount + 1.
ENDIF.
ENDLOOP.
CLEAR : v_ues,v_uws.
v_ues = v_uecount.
v_uws = v_uwcount.
v_eroi = v_uwcount + v_uecount.
v_ero = v_eroi.
v_len = STRLEN( v_ues ).
v_len = 7 - v_len.
SHIFT v_ues RIGHT BY v_len PLACES.
CLEAR v_len.
v_len = STRLEN( v_uws ).
v_len = 7 - v_len.
SHIFT v_uws RIGHT BY v_len PLACES.
CLEAR v_len.
v_len = STRLEN( v_ero ).
v_len = 7 - v_len.
SHIFT v_ero RIGHT BY v_len PLACES.
CLEAR v_len.
ENDFORM. " num_count_objty
&----
*& Form numcount_categ
&----
FORM numcount_categ USING v_categ.
DATA : v_len TYPE i,
v_eroi TYPE i.
CLEAR : v_uecount,v_uwcount.
LOOP AT it_ybstsaco WHERE
devcl EQ it_ybstsaco-devcl
AND objty EQ v_objty
AND categ EQ v_categ.
IF it_ybstsaco-impac = 'E'.
v_uecount = v_uecount + 1.
ELSEIF it_ybstsaco-impac = 'W'.
v_uwcount = v_uwcount + 1.
ENDIF.
ENDLOOP.
CLEAR : v_ues,v_uws.
v_ues = v_uecount.
v_uws = v_uwcount.
v_eroi = v_uwcount + v_uecount.
v_ero = v_eroi.
v_len = STRLEN( v_ues ).
v_len = 7 - v_len.
SHIFT v_ues RIGHT BY v_len PLACES.
CLEAR v_len.
v_len = STRLEN( v_uws ).
v_len = 7 - v_len.
SHIFT v_uws RIGHT BY v_len PLACES.
CLEAR v_len.
v_len = STRLEN( v_ero ).
v_len = 7 - v_len.
SHIFT v_ero RIGHT BY v_len PLACES.
CLEAR v_len.
ENDFORM. " numcount_categ
&----
*& Form num_countobjna
&----
FORM num_countobjna CHANGING v_tot.
DATA : v_len TYPE i,
v_eroi TYPE i.
CLEAR v_tot.
CLEAR : v_uecount,v_uwcount.
LOOP AT it_ybstsaco WHERE
devcl EQ it_ybstsaco-devcl
AND objty EQ v_objty
AND objna EQ it_ybstsaco-objna.
IF it_ybstsaco-impac = 'E'.
v_uecount = v_uecount + 1.
ELSEIF it_ybstsaco-impac = 'W'.
v_uwcount = v_uwcount + 1.
ENDIF.
ENDLOOP.
CLEAR : v_ues,v_uws.
v_ues = v_uecount.
v_uws = v_uwcount.
v_eroi = v_uwcount + v_uecount.
v_ero = v_eroi.
v_tot = v_eroi.
v_len = STRLEN( v_ues ).
v_len = 7 - v_len.
SHIFT v_ues RIGHT BY v_len PLACES.
CLEAR v_len.
v_len = STRLEN( v_uws ).
v_len = 7 - v_len.
SHIFT v_uws RIGHT BY v_len PLACES.
CLEAR v_len.
v_len = STRLEN( v_ero ).
v_len = 7 - v_len.
SHIFT v_ero RIGHT BY v_len PLACES.
CLEAR v_len.
ENDFORM. " num_countobjna
&----
*& Form get_shorttext_objna
&----
FORM get_shorttext_objna USING p_v_objna v_objty.
CLEAR : v_objdes.
IF v_objty EQ 'FUNC'.
SELECT SINGLE stext
FROM v_fdirt
INTO v_objdes
WHERE funcname EQ p_v_objna
AND spras EQ sy-langu.
IF sy-subrc NE 0.
v_objdes = 'Description Not available'.
ELSE.
IF v_objdes IS INITIAL.
CONCATENATE 'Description Not available in ' sy-langu INTO v_objdes.
ENDIF.
ENDIF.
ELSE.
SELECT SINGLE text
FROM trdirt
INTO v_objdes
WHERE name EQ p_v_objna
AND sprsl EQ sy-langu.
IF sy-subrc NE 0.
v_objdes = 'Description Not available'.
ELSE.
IF v_objdes IS INITIAL.
CONCATENATE 'Description Not available in ' sy-langu INTO v_objdes.
ENDIF.
ENDIF.
ENDIF.
ENDFORM. " get_shorttext_objna
&----
*& Form tree_display1
&----
FORM tree_display1 USING p_objna
v_objc.
DATA : v_rule(5),
v_len TYPE i,
v_ruleno TYPE i.
*Internal Table for Tree Nodes
DATA icon(20).
DATA: green(20) TYPE c VALUE 'icon_green_light',
: yellow(20) TYPE c VALUE 'icon_yellow_light',
: red(20) TYPE c VALUE 'icon_red_light'.
DATA : it_tnode1 LIKE snodetext OCCURS 0 WITH HEADER LINE.
CLEAR it_tnode1.
REFRESH it_tnode1.
it_tnode1-name = 'Object Name'.
it_tnode1-nlength = 15.
it_tnode1-color = 1.
it_tnode1-tlevel = 1.
it_tnode1-text = p_objna.
it_tnode1-tlength = 15.
it_tnode1-tcolor = 1.
it_tnode1-tpos = 20.
it_tnode1-text1 =
APPEND it_tnode1.
CLEAR it_tnode1.
SORT it_ybstsaco BY analw.
LOOP AT it_ybstsaco WHERE objna EQ p_objna
AND objty EQ v_objc.
IF it_ybstsaco-upgru NE v_ruleno.
IF v_cl1 IS INITIAL.
it_tnode1-tintensiv = 'X'.
it_tnode1-tintensiv2 = 'X'.
v_cl1 = 'X'.
ELSE.
CLEAR v_cl1.
it_tnode1-tintensiv = ' '.
it_tnode1-tintensiv2 = ' '.
ENDIF.
PERFORM 2count.
v_ruleno = it_ybstsaco-upgru.
it_tnode1-text = it_ybstsaco-analw.
it_tnode1-tlength = 64.
it_tnode1-tcolor = 1.
it_tnode1-tlevel = 2.
it_tnode1-tpos = 9.
IF it_ybstsaco-impac EQ 'E'.
icon = red.
ELSE.
icon = yellow.
ENDIF.
it_tnode1-text1 = icon.
it_tnode1-kind1 = 'I'.
it_tnode1-tlength1 = 3.
it_tnode1-tcolor1 = 1.
it_tnode1-tpos1 = 74.
it_tnode1-text2 = v_ues.
it_tnode1-tlength2 = 7.
it_tnode1-tcolor2 = 3.
it_tnode1-tpos2 = 79.
APPEND it_tnode1.
CLEAR it_tnode1.
LOOP AT it_ybstsaco WHERE objna EQ it_ybstsaco-objna
AND devcl EQ it_ybstsaco-devcl
AND upgru EQ it_ybstsaco-upgru.
IF v_cl2 IS INITIAL.
it_tnode1-tintensiv4 = 'X'.
it_tnode1-tintensiv = 'X'.
v_cl2 = 'X'.
ELSE.
CLEAR v_cl2.
it_tnode1-tintensiv4 = ' '.
it_tnode1-tintensiv = ' '.
ENDIF.
CONDENSE it_ybstsaco-abapl.
it_tnode1-text4 = it_ybstsaco-abapl.
it_tnode1-tpos4 = 13.
it_tnode1-tlength4 = 72.
it_tnode1-tcolor4 = 7.
it_tnode1-tlevel = 03.
it_tnode1-text = it_ybstsaco-progl.
it_tnode1-tlength = 5.
it_tnode1-tcolor = 1.
it_tnode1-tpos = 86.
it_tnode1-text2 = it_ybstsaco-objna.
it_tnode1-text3 = it_ybstsaco-objty.
APPEND it_tnode1.
CLEAR it_tnode1.
ENDLOOP.
ENDIF.
ENDLOOP.
CALL FUNCTION 'RS_TREE_CONSTRUCT'
TABLES
nodetab = it_tnode1.
IF sy-subrc <> 0.
ENDIF.
CALL FUNCTION 'RS_TREE_LIST_DISPLAY'
EXPORTING
callback_program = sy-repid
callback_user_command = 'USER_COMMAND1'
CALLBACK_TEXT_DISPLAY =
CALLBACK_MOREINFO_DISPLAY =
CALLBACK_COLOR_DISPLAY =
callback_top_of_page = 'TOP_OF_PAGE1'
callback_gui_status = 'S002'
CALLBACK_CONTEXT_MENU =
STATUS = 'IMPLICIT'
CHECK_DUPLICATE_NAME = '1'
COLOR_OF_NODE = '4'
COLOR_OF_MARK = '3'
COLOR_OF_LINK = '1'
COLOR_OF_MATCH = '5'
LOWER_CASE_SENSITIVE = ' '
MODIFICATION_LOG = ' '
NODE_LENGTH = 30
TEXT_LENGTH = 75
TEXT_LENGTH1 = 0
TEXT_LENGTH2 = 0
RETURN_MARKED_SUBTREE = ' '
SCREEN_START_COLUMN = 0
SCREEN_START_LINE = 0
SCREEN_END_COLUMN = 0
SCREEN_END_LINE = 0
SUPPRESS_NODE_OUTPUT = ' '
LAYOUT_MODE = ' '
use_control = 'L'.
IMPORTING
F15 =
ENDFORM. " tree_display1
&----
*& Form Top_of_page1
&----
text
----
FORM top_of_page1.
DATA : v_len TYPE i.
CLEAR v_len.
v_len = STRLEN( it_ybstsaco-objna ).
WRITE : /40 'Unicode Analysis For the Object :' COLOR 1 NO-GAP,
it_ybstsaco-objna(v_len) COLOR 1 .
v_len = 33 + v_len.
WRITE : /40 sy-uline(v_len).
WRITE : /9 'Error Description' COLOR 1,
74 'Err ' COLOR 2 INTENSIFIED ON,
79 'Err ' COLOR 3,
86 'Line' COLOR 2 INTENSIFIED ON.
WRITE : /13 'Error Line' COLOR 7,
74 'TYPE' COLOR 2,
79 'Count' COLOR 3,
86 'Numb' COLOR 2.
WRITE : sy-uline.
ENDFORM. "Top_of_page1
&----
*& Form user_command1
&----
text
----
FORM user_command1 TABLES pt_nodes STRUCTURE seucomm
USING pv_command TYPE c
CHANGING pv_exit TYPE c
pv_list_refresh TYPE c.
IF sy-ucomm EQ 'DISP' OR
sy-ucomm EQ 'TRPI'.
IF pt_nodes-tlevel EQ '03' AND
( pt_nodes-selfield NE 'MINUS' OR
pt_nodes-selfield NE 'PLUS').
IF pt_nodes-text3 NE 'FUNC'.
CALL FUNCTION 'EDITOR_PROGRAM'
EXPORTING
display = 'X'
line = pt_nodes-text
program = pt_nodes-text2.
ELSEIF pt_nodes-text3 EQ 'FUNC'..
CALL FUNCTION 'RS_TOOL_ACCESS'
EXPORTING
operation = 'SHOW'
object_name = pt_nodes-text2
object_type = 'FUNC'
ENCLOSING_OBJECT =
position = pt_nodes-text
DEVCLASS =
INCLUDE =
VERSION = ' '
MONITOR_ACTIVATION = 'X'
WB_MANAGER =
IN_NEW_WINDOW =
WITH_OBJECTLIST = ' '
WITH_WORKLIST = ' '
.
IF sy-subrc <> 0.
ENDIF.
IF sy-subrc <> 0.
ENDIF.
ENDIF.
ELSEIF ( pt_nodes-selfield EQ 'MINUS' OR
pt_nodes-selfield EQ 'PLUS') OR
sy-ucomm EQ 'TREP' OR
sy-ucomm EQ 'TRCM'.
ELSE.
MESSAGE 'Click on Error Line For Further Navigation'
TYPE 'I'.
ENDIF.
ENDIF.
ENDFORM. "user_command1
&----
*& Form s002
&----
text
----
FORM s002.
SET PF-STATUS 'S2SCR'.
SET TITLEBAR 'T002'.
ENDFORM. "s002
&----
*& Form 2count
&----
FORM 2count .
DATA : v_len.
CLEAR v_uecount.
LOOP AT it_ybstsaco WHERE objna EQ it_ybstsaco-objna
AND devcl EQ it_ybstsaco-devcl
AND upgru EQ it_ybstsaco-upgru.
v_uecount = v_uecount + 1.
ENDLOOP.
CLEAR : v_len,v_ues.
v_ues = v_uecount.
v_len = STRLEN( v_ues ).
v_len = 7 - v_len.
SHIFT v_ues RIGHT BY v_len PLACES.
ENDFORM. " 2count
&----
*& Form get_zebra
&----
FORM get_zebra USING v_cl.
IF v_cl IS INITIAL.
it_tnode-tintensiv9 = 'X'.
it_tnode-intensiv = 'X'.
it_tnode-tintensiv1 = 'X'.
it_tnode-tintensiv2 = 'X'.
it_tnode-tintensiv3 = 'X'.
it_tnode-tintensiv4 = 'X'.
it_tnode-tintensiv5 = 'X'.
it_tnode-tintensiv6 = 'X'.
it_tnode-tintensiv7 = 'X'.
it_tnode-tintensiv8 = 'X'.
it_tnode-tintensiv = 'X'.
v_cl ='X'.
ELSE.
it_tnode-tintensiv9 = ' '.
it_tnode-tintensiv = ' '.
it_tnode-intensiv = ' '.
it_tnode-tintensiv1 = ' '.
it_tnode-tintensiv2 = ' '.
it_tnode-tintensiv3 = ' '.
it_tnode-tintensiv4 = ' '.
it_tnode-tintensiv5 = ' '.
it_tnode-tintensiv6 = ' '.
it_tnode-tintensiv7 = ' '.
it_tnode-tintensiv8 = ' '.
CLEAR v_cl.
ENDIF.
ENDFORM. " get_zebra
&----
*& Form get_data
&----
text
----
FORM get_data .
CLEAR it_ybstsaco.
REFRESH it_ybstsaco.
*Fetching All The Error Data From Ybstsaco Table
SELECT *
FROM ybstucck
INTO TABLE it_ybstsaco
WHERE devcl IN s_devcl
AND objna IN s_objna.
IF sy-subrc NE 0.
v_flag = 'X'.
MESSAGE 'The Package doesnot contain any Upgrade issues' TYPE 'I'.
ENDIF.
ENDFORM. " get_data
&----
*& Form get_data_rule_wise
&----
text
----
FORM get_data_rule_wise .
SELECT upgru
impac
analw
objna
objty
categ
abapl
progl
INTO TABLE it_rulesaco
FROM ybstucck
WHERE devcl IN s_devcl.
IF sy-subrc NE 0.
v_flag = 'X'.
MESSAGE 'The Package doesnot contain any Upgrade issues' TYPE 'I'.
ENDIF.
ENDFORM. " get_data_rule_wise
&----
*& Form tree_display
&----
FORM tree_display_rule_wise .
DATA : it_tnode LIKE snodetext OCCURS 0 WITH HEADER LINE,
v_cntrule1(7).
LOOP AT it_rulesaco.
SHIFT it_rulesaco-upgru LEFT DELETING LEADING '0'.
MODIFY it_rulesaco INDEX sy-tabix.
ENDLOOP.
CLEAR it_tnode.
REFRESH it_tnode.
SORT it_rulesaco BY upgru objna.
it_tnode-name = 'Rule Wise'.
it_tnode-color = 1.
it_tnode-nlength = 9.
it_tnode-tlevel = 1.
APPEND it_tnode.
CLEAR it_tnode.
LOOP AT it_rulesaco.
AT NEW upgru.
READ TABLE it_rulesaco INDEX sy-tabix.
it_tnode-name = it_rulesaco-upgru.
it_tnode-color = 1.
it_tnode-nlength = 3.
it_tnode-tlevel = 2.
it_tnode-text = it_rulesaco-analw.
it_tnode-tcolor = 1.
it_tnode-tlength = 64.
it_tnode-tpos = 13.
PERFORM get_inforule.
it_tnode-text1 = icon.
it_tnode-kind1 = 'I'.
it_tnode-tpos1 = 78.
it_tnode-tlength1 = 3.
v_cntrule1 = v_cntrule.
it_tnode-text2 = v_cntrule1.
it_tnode-tpos2 = 83.
it_tnode-tlength2 = 7.
it_tnode-tcolor2 = 3.
APPEND it_tnode.
CLEAR it_tnode.
LOOP AT it_rulesaco1.
AT NEW objna.
READ TABLE it_rulesaco1 INDEX sy-tabix.
READ TABLE it_rulesaco INDEX sy-tabix.
it_tnode-name = it_rulesaco1-objna.
it_tnode-color = 1.
it_tnode-nlength = 30.
it_tnode-tlevel = 3.
it_tnode-text = it_rulesaco1-objty.
it_tnode-tcolor = 5.
it_tnode-tlength = 4.
it_tnode-tpos = 45.
it_tnode-text1 = it_rulesaco1-categ.
it_tnode-tcolor1 = 5.
it_tnode-tlength1 = 4.
it_tnode-tpos1 = 50.
PERFORM objna_count.
v_cntrule1 = v_cntrule.
it_tnode-text2 = v_cntrule1.
it_tnode-tpos2 = 83.
it_tnode-tlength2 = 7.
it_tnode-tcolor2 = 3.
APPEND it_tnode.
CLEAR it_tnode.
LOOP AT it_rulesaco1 WHERE objna EQ it_rulesaco1-objna.
it_tnode-name = it_rulesaco1-progl.
it_tnode-color = 1.
it_tnode-nlength = 6.
it_tnode-tlevel = 4.
it_tnode-text = it_rulesaco1-abapl.
it_tnode-tcolor = 1.
it_tnode-tlength = 72.
it_tnode-tpos = 24.
it_tnode-text1 = it_rulesaco1-objna.
it_tnode-text2 = it_rulesaco1-objty.
APPEND it_tnode.
CLEAR it_tnode.
ENDLOOP.
ENDAT.
ENDLOOP.
ENDAT.
ENDLOOP.
CALL FUNCTION 'RS_TREE_CONSTRUCT'
TABLES
nodetab = it_tnode.
CALL FUNCTION 'RS_TREE_LIST_DISPLAY'
EXPORTING
callback_program = sy-repid
callback_user_command = 'USER_COMMAND_RULE'
CALLBACK_TEXT_DISPLAY =
CALLBACK_MOREINFO_DISPLAY =
CALLBACK_COLOR_DISPLAY =
callback_top_of_page = 'TOP_OF_PAGE_RULE'
callback_gui_status = 'S001_RULE'
CALLBACK_CONTEXT_MENU =
STATUS = 'IMPLICIT'
CHECK_DUPLICATE_NAME = '1'
COLOR_OF_NODE = '4'
COLOR_OF_MARK = '3'
COLOR_OF_LINK = '1'
COLOR_OF_MATCH = '5'
LOWER_CASE_SENSITIVE = ' '
MODIFICATION_LOG = ' '
NODE_LENGTH = 30
TEXT_LENGTH = 75
TEXT_LENGTH1 = 0
TEXT_LENGTH2 = 0
RETURN_MARKED_SUBTREE = ' '
SCREEN_START_COLUMN = 0
SCREEN_START_LINE = 0
SCREEN_END_COLUMN = 0
SCREEN_END_LINE = 0
SUPPRESS_NODE_OUTPUT = ' '
LAYOUT_MODE = ' '
USE_CONTROL = STREE_USE_LIST
IMPORTING
F15 =
.
ENDFORM. " tree_display
&----
*& Form user_command
&----
text
----
FORM user_command_rule TABLES pt_nodes STRUCTURE seucomm
USING pv_command TYPE c
CHANGING pv_exit TYPE c
pv_list_refresh TYPE c.
CASE sy-ucomm.
when 'OBJT'.
data : begin of it_cnt occurs 0,
objna(30),
errcnt type i,
end of it_cnt.
data : itab1 like it_cnt occurs 0 with header line.
data : itab2 like it_cnt occurs 0 with header line.
data : begin of it_optru occurs 0,
optru like ybstsaco-upgru,
errcnt type i,
end of it_optru.
select upgru
into table it_optru
from ybstsaco
where devcl in s_devcl.
sort it_optru.
loop at it_optru.
it_cnt-errcnt = it_cnt-errcnt + 1.
at end of optru.
it_cnt-objna = it_optru-optru.
append it_cnt.
clear it_cnt.
endat.
endloop.
CALL FUNCTION
'GRAPH_MATRIX_2D'
EXPORTING
SO_TITLE = 'TITLE'
TITL = 'Rules/ Number of Errors Distribution'
VALT = 'Number of Errors '
TABLES
DATA = it_cnt
OPTS = itab1
TCOL = itab2.
WHEN 'TRPI' OR 'DISP'.
IF pt_nodes-tlevel EQ '04' .
CALL FUNCTION 'RS_TOOL_ACCESS'
EXPORTING
operation = 'SHOW'
object_name = pt_nodes-text1
object_type = pt_nodes-text2
ENCLOSING_OBJECT =
position = pt_nodes-name
DEVCLASS =
INCLUDE =
VERSION = ' '
MONITOR_ACTIVATION = 'X'
WB_MANAGER =
IN_NEW_WINDOW =
WITH_OBJECTLIST = ' '
WITH_WORKLIST = ' '
IMPORTING
NEW_NAME =
WB_TODO_REQUEST =
TABLES
OBJLIST =
CHANGING
P_REQUEST = ' '
EXCEPTIONS
NOT_EXECUTED = 1
INVALID_OBJECT_TYPE = 2
OTHERS = 3
.
IF sy-subrc <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
.
ELSEIF pt_nodes-selfield EQ 'MINUS' OR pt_nodes-selfield EQ 'PLUS'.
ELSE.
MESSAGE 'Select the Error Line For Further Navigation' TYPE 'I'.
ENDIF.
WHEN OTHERS.
ENDCASE.
ENDFORM. "user_command
&----
*& Form s001
&----
text
----
FORM s001_rule.
SET PF-STATUS 'S002'.
SET TITLEBAR 'T001'.
ENDFORM. "s001
&----
*& Form get_inforule
&----
FORM get_inforule .
IF it_rulesaco-impac EQ 'W'.
icon = yellow.
ELSE.
icon = red.
ENDIF.
CLEAR it_rulesaco1.
REFRESH it_rulesaco1.
LOOP AT it_rulesaco WHERE upgru EQ it_rulesaco-upgru.
MOVE-CORRESPONDING it_rulesaco TO it_rulesaco1.
APPEND it_rulesaco1.
ENDLOOP.
CLEAR v_cntrule.
LOOP AT it_rulesaco WHERE upgru EQ it_rulesaco-upgru.
v_cntrule = v_cntrule + 1.
ENDLOOP.
ENDFORM. " get_inforule
&----
*& Form objna_count
&----
FORM objna_count .
CLEAR v_cntrule.
LOOP AT it_rulesaco1 WHERE upgru EQ it_rulesaco1-upgru
AND objna EQ it_rulesaco1-objna.
v_cntrule = v_cntrule + 1.
ENDLOOP.
ENDFORM. " objna_count
&----
*& Form top_of_page_rule
&----
text
----
FORM top_of_page_rule.
WRITE : 40(16) 'Unicode Analysis' COLOR 1,
/40(16) '****************',/,
40(16) 'Rule Wise Report'.
ENDFORM. "top_of_page_rule
Regards,
Anji
Message was edited by:
Anji Reddy Vangala
Hi,
Use the function Modules
GRAPH_MATRIX_2D and GRAPH_MATRIX_3D
To generate Pie and Bar charts.
Sample Code:
REPORT yb<rupg>
MESSAGE-ID yb
NO STANDARD PAGE HEADING.
TABLES : ybstsaco .
&----
*Data Declarations
&----
*Internal Table for Upgrade errors
DATA : it_ybstsaco LIKE ybstucck OCCURS 0 WITH HEADER LINE.
*Internal Table for Tree Nodes
DATA : it_tnode LIKE snodetext OCCURS 0 WITH HEADER LINE.
DATA : it_tempcobs LIKE ybstsaco OCCURS 0 WITH HEADER LINE.
DATA : v_tot TYPE i.
DATA : v_validate TYPE tdevc-devclass,
v_vobjna TYPE tadir-obj_name,
v_devdes TYPE tdevct-ctext,
v_objdes TYPE ybstcobt-otext,
v_uecount TYPE i,
v_uwcount TYPE i,
v_cl1,v_cl2,v_cl3,
v_cl4,v_cl5,
v_ues(7),
v_uws(7),
v_ero(7),
v_objna(30).
DATA : v_flag TYPE flag.
DATA : v_objty(4).
DATA : BEGIN OF it_rulesaco OCCURS 0,
upgru TYPE ybstsaco-upgru,
impac TYPE ybstsaco-impac,
analw TYPE ybstsaco-analw,
objna TYPE ybstsaco-objna,
objty TYPE ybstsaco-objty,
categ TYPE ybstsaco-categ,
abapl TYPE ybstsaco-abapl,
progl TYPE ybstsaco-progl,
END OF it_rulesaco.
DATA : icon(20),
v_cntrule TYPE i.
DATA: green(20) TYPE c VALUE 'icon_green_light',
: yellow(20) TYPE c VALUE 'icon_yellow_light',
: red(20) TYPE c VALUE 'icon_red_light'.
DATA : it_rulesaco1 LIKE STANDARD TABLE OF it_rulesaco WITH HEADER LINE.
&----
*Selection Screen
&----
SELECTION-SCREEN : BEGIN OF BLOCK b1 WITH FRAME TITLE text-001.
SELECT-OPTIONS : s_devcl FOR ybstsaco-devcl.
SELECT-OPTIONS : s_objna FOR ybstsaco-objna.
SELECTION-SCREEN : END OF BLOCK b1.
SELECTION-SCREEN : BEGIN OF BLOCK b2 WITH FRAME TITLE text-002.
PARAMETERS: v_dewise RADIOBUTTON GROUP grp,
v_ruwise RADIOBUTTON GROUP grp.
SELECTION-SCREEN : END OF BLOCK b2.
&----
*At Selection Screen.
&----
AT SELECTION-SCREEN.
SELECT SINGLE devclass
INTO v_validate
FROM tdevc
WHERE devclass IN s_devcl.
IF sy-subrc NE 0.
v_flag = 'X'.
MESSAGE 'Package Does Not Exist' TYPE 'I'.
STOP.
ENDIF.
SELECT SINGLE obj_name
INTO v_objna
FROM tadir
WHERE obj_name IN s_objna.
IF sy-subrc NE 0.
v_flag = 'X'.
MESSAGE 'Object Does not Exist' TYPE 'I'.
STOP.
ENDIF.
&----
Start-of-selection.
&----
START-OF-SELECTION.
IF v_dewise = 'X'.
PERFORM get_data.
ELSEIF v_ruwise = 'X'.
PERFORM get_data_rule_wise.
ENDIF.
&----
*End-of-selection.
&----
END-OF-SELECTION.
IF v_flag NE 'X'.
IF v_dewise = 'X'.
PERFORM tree_display.
ELSEIF v_ruwise = 'X'.
PERFORM tree_display_rule_wise..
ENDIF.
ENDIF.
&----
*& Form tree_display
&----
FORM tree_display .
it_tnode-name = 'Custom Developed Objects'.
it_tnode-nlength = STRLEN( it_tnode-name ).
it_tnode-color = 1.
it_tnode-tlevel = 1.
APPEND it_tnode.
CLEAR it_tnode.
SORT it_ybstsaco BY devcl objty categ objna.
LOOP AT it_ybstsaco.
AT NEW devcl.
PERFORM get_zebra USING v_cl3.
CLEAR v_objty.
READ TABLE it_ybstsaco INDEX sy-tabix.
it_tnode-name = it_ybstsaco-devcl.
it_tnode-nlength = 30.
it_tnode-color = '4'.
it_tnode-tlevel = 2.
PERFORM get_devdes.
PERFORM num_count.
it_tnode-tlength = 45.
it_tnode-tcolor = 1.
it_tnode-tpos = 52.
it_tnode-text1 = v_ues.
it_tnode-tlength1 = 7.
it_tnode-tcolor1 = 3.
it_tnode-tpos1 = 99.
it_tnode-text2 = v_uws.
it_tnode-tlength2 = 7.
it_tnode-tcolor2 = 3.
it_tnode-tpos2 = 107.
it_tnode-text3 = v_ero.
it_tnode-tlength3 = 7.
it_tnode-tcolor3 = 3.
it_tnode-tpos3 = 115.
APPEND it_tnode.
CLEAR it_tnode.
LOOP AT it_ybstsaco WHERE devcl EQ it_ybstsaco-devcl.
IF v_objty NE it_ybstsaco-objty.
v_objty = it_ybstsaco-objty.
PERFORM get_zebra USING v_cl5.
it_tnode-name = v_objty.
it_tnode-nlength = 4.
it_tnode-color = 7.
it_tnode-tlevel = 3.
PERFORM get_shorttext USING v_objty.
PERFORM num_count_objty.
it_tnode-text = v_objdes.
it_tnode-tlength = 45.
it_tnode-tcolor = 1.
it_tnode-tpos = 52.
it_tnode-text1 = v_ues.
it_tnode-tlength1 = 7.
it_tnode-tcolor1 = 3.
it_tnode-tpos1 = 99.
it_tnode-text2 = v_uws.
it_tnode-tlength2 = 7.
it_tnode-tcolor2 = 3.
it_tnode-tpos2 = 107.
it_tnode-text3 = v_ero.
it_tnode-tlength3 = 7.
it_tnode-tcolor3 = 3.
it_tnode-tpos3 = 115.
APPEND it_tnode.
CLEAR it_tnode.
PERFORM get_zebra USING v_cl1.
IF v_objty EQ 'PROG'.
PERFORM build_prognodes.
ELSE.
PERFORM build_others.
ENDIF.
ENDIF.
ENDLOOP.
ENDAT.
ENDLOOP.
CALL FUNCTION 'RS_TREE_CONSTRUCT'
TABLES
nodetab = it_tnode.
IF sy-subrc <> 0.
ENDIF.
CALL FUNCTION 'RS_TREE_LIST_DISPLAY'
EXPORTING
callback_program = sy-repid
callback_user_command = 'USER_COMMAND'
CALLBACK_TEXT_DISPLAY =
CALLBACK_MOREINFO_DISPLAY =
CALLBACK_COLOR_DISPLAY =
callback_top_of_page = 'TOP_OF_PAGE'
callback_gui_status = 'S001'
CALLBACK_CONTEXT_MENU =
STATUS = 'IMPLICIT'
CHECK_DUPLICATE_NAME = '1'
COLOR_OF_NODE = '4'
COLOR_OF_MARK = '3'
COLOR_OF_LINK = '1'
COLOR_OF_MATCH = '5'
LOWER_CASE_SENSITIVE = ' '
MODIFICATION_LOG = ' '
NODE_LENGTH = 30
TEXT_LENGTH = 75
TEXT_LENGTH1 = 0
TEXT_LENGTH2 = 0
RETURN_MARKED_SUBTREE = ' '
SCREEN_START COLUMN = 0
SCREEN_START_LINE = 0
SCREEN_END_COLUMN = 0
SCREEN_END_LINE = 0
SUPPRESS_NODE_OUTPUT = ' '
LAYOUT_MODE = ' '
use_control = 'L'.
IMPORTING
F15 = .
ENDFORM. " tree_display
&----
*& Form s001
&----
text
----
FORM s001.
SET PF-STATUS 'S002'.
SET TITLEBAR 'T001'.
ENDFORM. "s001
&----
*& Form top_of_page
&----
text
----
FORM top_of_page.
WRITE : 60 'UNICODE ANALYSIS' COLOR 1 INTENSIFIED OFF,
/60 '****************',
/,/12 'Object Name' COLOR 1,
60 'Description' COLOR 1 ,
99 'Unicode' COLOR 3,
107 'Unicode' COLOR 3,
115 'Total ' COLOR 3.
WRITE : /99 'Issues ' COLOR 3,
107 'Warns ' COLOR 3,
115 'Issues' COLOR 3,
sy-uline.
ENDFORM. "top_of_page
&----
*& Form user_command
&----
text
----
FORM user_command TABLES pt_nodes STRUCTURE seucomm
USING pv_command TYPE c
CHANGING pv_exit TYPE c
pv_list_refresh TYPE c.
DATA : v_objna1(30),
v_objct1(30).
CASE sy-ucomm.
WHEN 'TRPI' OR 'UPGR'.
IF pt_nodes-tlevel EQ '05' OR pt_nodes-tlevel EQ '04'.
IF pt_nodes-nlength NE '04'.
pv_list_refresh = ' '.
CLEAR v_objna.
v_objna1 = pt_nodes-name.
v_objct1 = pt_nodes-text4.
PERFORM tree_display1 USING v_objna1 v_objct1.
ELSEIF pt_nodes-selfield EQ 'MINUS'
OR pt_nodes-selfield EQ 'PLUS'.
ELSE.
MESSAGE 'No Errors For the Selected Object'
TYPE 'I'.
ENDIF.
ELSEIF pt_nodes-selfield EQ 'MINUS'
OR pt_nodes-selfield EQ 'PLUS'
OR sy-ucomm EQ 'TREP'
OR sy-ucomm EQ 'TRCM'.
ELSE.
MESSAGE
'Please Select the Object For Further Navigation' TYPE 'I'.
SET PF-STATUS 'S002'.
ENDIF.
WHEN OTHERS.
ENDCASE.
ENDFORM. "user_command
&----
*& Form num_count
&----
FORM num_count .
DATA : v_eroi TYPE i,
v_len TYPE i.
CLEAR : v_uecount,v_uwcount.
LOOP AT it_ybstsaco WHERE
devcl EQ it_ybstsaco-devcl.
IF it_ybstsaco-impac = 'E'.
v_uecount = v_uecount + 1.
ELSE.
v_uwcount = v_uwcount + 1.
ENDIF.
ENDLOOP.
CLEAR : v_ues,v_uws.
v_ues = v_uecount.
v_uws = v_uwcount.
v_eroi = v_uwcount + v_uecount.
v_ero = v_eroi.
v_len = STRLEN( v_ues ).
v_len = 7 - v_len.
SHIFT v_ues RIGHT BY v_len PLACES.
CLEAR v_len.
v_len = STRLEN( v_uws ).
v_len = 7 - v_len.
SHIFT v_uws RIGHT BY v_len PLACES.
CLEAR v_len.
v_len = STRLEN( v_ero ).
v_len = 7 - v_len.
SHIFT v_ero RIGHT BY v_len PLACES.
CLEAR v_len.
ENDFORM. " num_count
&----
*& Form get_devdes
&----
FORM get_devdes .
SELECT SINGLE ctext FROM tdevct INTO v_devdes
WHERE devclass EQ it_ybstsaco-devcl
AND spras EQ sy-langu.
IF sy-subrc EQ 0.
IF v_devdes IS NOT INITIAL.
it_tnode-text = v_devdes.
CLEAR v_devdes.
ELSE.
CONCATENATE 'Description Missing in '
sy-langu INTO it_tnode-text.
it_tnode-text = 'Description Missing'.
CLEAR v_devdes.
ENDIF.
ELSE.
it_tnode-text = 'Description Missing'.
ENDIF.
ENDFORM. " get_devdes
&----
*& Form get_Shorttext
&----
FORM get_shorttext USING p_v_objty.
CLEAR v_objdes.
SELECT SINGLE otext
FROM ybstcobt
INTO v_objdes
WHERE objct EQ p_v_objty
AND spras EQ sy-langu.
ENDFORM. " get_Shorttext
&----
*& Form build_prognodes
&----
FORM build_prognodes .
DATA : v_categ(4).
LOOP AT it_ybstsaco WHERE devcl EQ it_ybstsaco-devcl
AND objty EQ v_objty.
IF v_categ NE it_ybstsaco-categ.
PERFORM get_zebra USING v_cl1.
v_categ = it_ybstsaco-categ.
it_tnode-name = v_categ.
it_tnode-nlength = 4.
it_tnode-color = 7.
it_tnode-tlevel = 4.
PERFORM get_shorttext USING v_categ.
PERFORM numcount_categ USING v_categ.
it_tnode-text = v_objdes.
it_tnode-tlength = 45.
it_tnode-tcolor = 2.
it_tnode-tpos = 52.
it_tnode-text1 = v_ues.
it_tnode-tlength1 = 7.
it_tnode-tcolor1 = 3.
it_tnode-tpos1 = 99.
it_tnode-text2 = v_uws.
it_tnode-tlength2 = 7.
it_tnode-tcolor2 = 3.
it_tnode-tpos2 = 107.
it_tnode-text3 = v_ero.
it_tnode-tlength3 = 7.
it_tnode-tcolor3 = 3.
it_tnode-tpos3 = 115.
APPEND it_tnode.
CLEAR it_tnode.
LOOP AT it_ybstsaco WHERE devcl EQ it_ybstsaco-devcl
AND objty EQ v_objty
AND categ EQ v_categ.
IF v_objna NE it_ybstsaco-objna.
v_objna = it_ybstsaco-objna.
it_tnode-name = it_ybstsaco-objna.
it_tnode-nlength = 30.
it_tnode-color = 7.
it_tnode-tlevel = 5.
PERFORM get_shorttext_objna USING v_objna v_objty.
PERFORM num_countobjna CHANGING v_tot.
it_tnode-text = v_objdes.
it_tnode-tlength = 45.
it_tnode-tcolor = 2.
it_tnode-tpos = 52.
it_tnode-text1 = v_ues.
it_tnode-tlength1 = 7.
it_tnode-tcolor1 = 3.
it_tnode-tpos1 = 99.
it_tnode-text2 = v_uws.
it_tnode-tlength2 = 7.
it_tnode-tcolor2 = 3.
it_tnode-tpos2 = 107.
it_tnode-text3 = v_ero.
it_tnode-tlength3 = 7.
it_tnode-tcolor3 = 3.
it_tnode-tpos3 = 115.
it_tnode-text4 = it_ybstsaco-objty.
IF v_tot EQ 0.
CLEAR it_tnode.
ELSE.
PERFORM get_zebra USING v_cl2.
APPEND it_tnode.
CLEAR it_tnode.
ENDIF.
ENDIF.
ENDLOOP.
ENDIF.
ENDLOOP.
ENDFORM. " build_prognodes
&----
*& Form build_others
&----
FORM build_others .
LOOP AT it_ybstsaco WHERE devcl EQ it_ybstsaco-devcl
AND objty EQ v_objty.
IF v_objna NE it_ybstsaco-objna.
v_objna = it_ybstsaco-objna.
it_tnode-name = it_ybstsaco-objna.
it_tnode-nlength = 30.
it_tnode-color = 7.
it_tnode-tlevel = 4.
PERFORM get_shorttext_objna USING v_objna v_objty.
PERFORM num_countobjna CHANGING v_tot.
it_tnode-text = v_objdes.
it_tnode-tlength = 45.
it_tnode-tcolor = 2.
it_tnode-tpos = 52.
it_tnode-text1 = v_ues.
it_tnode-tlength1 = 7.
it_tnode-tcolor1 = 3.
it_tnode-tpos1 = 99.
it_tnode-text2 = v_uws.
it_tnode-tlength2 = 7.
it_tnode-tcolor2 = 3.
it_tnode-tpos2 = 107.
it_tnode-text3 = v_ero.
it_tnode-tlength3 = 7.
it_tnode-tcolor3 = 3.
it_tnode-tpos3 = 115.
it_tnode-text4 = it_ybstsaco-objty.
IF v_tot EQ 0.
CLEAR it_tnode.
ELSE.
PERFORM get_zebra USING v_cl2.
APPEND it_tnode.
CLEAR it_tnode.
ENDIF.
ENDIF.
ENDLOOP.
ENDFORM. " build_others
&----
*& Form num_count_objty
&----
FORM num_count_objty .
DATA : v_len TYPE i,
v_eroi TYPE i.
CLEAR : v_uecount,v_uwcount.
LOOP AT it_ybstsaco WHERE
devcl EQ it_ybstsaco-devcl
AND objty EQ v_objty..
IF it_ybstsaco-impac = 'E'.
v_uecount = v_uecount + 1.
ELSEIF it_ybstsaco-impac = 'W'.
v_uwcount = v_uwcount + 1.
ENDIF.
ENDLOOP.
CLEAR : v_ues,v_uws.
v_ues = v_uecount.
v_uws = v_uwcount.
v_eroi = v_uwcount + v_uecount.
v_ero = v_eroi.
v_len = STRLEN( v_ues ).
v_len = 7 - v_len.
SHIFT v_ues RIGHT BY v_len PLACES.
CLEAR v_len.
v_len = STRLEN( v_uws ).
v_len = 7 - v_len.
SHIFT v_uws RIGHT BY v_len PLACES.
CLEAR v_len.
v_len = STRLEN( v_ero ).
v_len = 7 - v_len.
SHIFT v_ero RIGHT BY v_len PLACES.
CLEAR v_len.
ENDFORM. " num_count_objty
&----
*& Form numcount_categ
&----
FORM numcount_categ USING v_categ.
DATA : v_len TYPE i,
v_eroi TYPE i.
CLEAR : v_uecount,v_uwcount.
LOOP AT it_ybstsaco WHERE
devcl EQ it_ybstsaco-devcl
AND objty EQ v_objty
AND categ EQ v_categ.
IF it_ybstsaco-impac = 'E'.
v_uecount = v_uecount + 1.
ELSEIF it_ybstsaco-impac = 'W'.
v_uwcount = v_uwcount + 1.
ENDIF.
ENDLOOP.
CLEAR : v_ues,v_uws.
v_ues = v_uecount.
v_uws = v_uwcount.
v_eroi = v_uwcount + v_uecount.
v_ero = v_eroi.
v_len = STRLEN( v_ues ).
v_len = 7 - v_len.
SHIFT v_ues RIGHT BY v_len PLACES.
CLEAR v_len.
v_len = STRLEN( v_uws ).
v_len = 7 - v_len.
SHIFT v_uws RIGHT BY v_len PLACES.
CLEAR v_len.
v_len = STRLEN( v_ero ).
v_len = 7 - v_len.
SHIFT v_ero RIGHT BY v_len PLACES.
CLEAR v_len.
ENDFORM. " numcount_categ
&----
*& Form num_countobjna
&----
FORM num_countobjna CHANGING v_tot.
DATA : v_len TYPE i,
v_eroi TYPE i.
CLEAR v_tot.
CLEAR : v_uecount,v_uwcount.
LOOP AT it_ybstsaco WHERE
devcl EQ it_ybstsaco-devcl
AND objty EQ v_objty
AND objna EQ it_ybstsaco-objna.
IF it_ybstsaco-impac = 'E'.
v_uecount = v_uecount + 1.
ELSEIF it_ybstsaco-impac = 'W'.
v_uwcount = v_uwcount + 1.
ENDIF.
ENDLOOP.
CLEAR : v_ues,v_uws.
v_ues = v_uecount.
v_uws = v_uwcount.
v_eroi = v_uwcount + v_uecount.
v_ero = v_eroi.
v_tot = v_eroi.
v_len = STRLEN( v_ues ).
v_len = 7 - v_len.
SHIFT v_ues RIGHT BY v_len PLACES.
CLEAR v_len.
v_len = STRLEN( v_uws ).
v_len = 7 - v_len.
SHIFT v_uws RIGHT BY v_len PLACES.
CLEAR v_len.
v_len = STRLEN( v_ero ).
v_len = 7 - v_len.
SHIFT v_ero RIGHT BY v_len PLACES.
CLEAR v_len.
ENDFORM. " num_countobjna
&----
*& Form get_shorttext_objna
&----
FORM get_shorttext_objna USING p_v_objna v_objty.
CLEAR : v_objdes.
IF v_objty EQ 'FUNC'.
SELECT SINGLE stext
FROM v_fdirt
INTO v_objdes
WHERE funcname EQ p_v_objna
AND spras EQ sy-langu.
IF sy-subrc NE 0.
v_objdes = 'Description Not available'.
ELSE.
IF v_objdes IS INITIAL.
CONCATENATE 'Description Not available in ' sy-langu INTO v_objdes.
ENDIF.
ENDIF.
ELSE.
SELECT SINGLE text
FROM trdirt
INTO v_objdes
WHERE name EQ p_v_objna
AND sprsl EQ sy-langu.
IF sy-subrc NE 0.
v_objdes = 'Description Not available'.
ELSE.
IF v_objdes IS INITIAL.
CONCATENATE 'Description Not available in ' sy-langu INTO v_objdes.
ENDIF.
ENDIF.
ENDIF.
ENDFORM. " get_shorttext_objna
&----
*& Form tree_display1
&----
FORM tree_display1 USING p_objna
v_objc.
DATA : v_rule(5),
v_len TYPE i,
v_ruleno TYPE i.
*Internal Table for Tree Nodes
DATA icon(20).
DATA: green(20) TYPE c VALUE 'icon_green_light',
: yellow(20) TYPE c VALUE 'icon_yellow_light',
: red(20) TYPE c VALUE 'icon_red_light'.
DATA : it_tnode1 LIKE snodetext OCCURS 0 WITH HEADER LINE.
CLEAR it_tnode1.
REFRESH it_tnode1.
it_tnode1-name = 'Object Name'.
it_tnode1-nlength = 15.
it_tnode1-color = 1.
it_tnode1-tlevel = 1.
it_tnode1-text = p_objna.
it_tnode1-tlength = 15.
it_tnode1-tcolor = 1.
it_tnode1-tpos = 20.
it_tnode1-text1 =
APPEND it_tnode1.
CLEAR it_tnode1.
SORT it_ybstsaco BY analw.
LOOP AT it_ybstsaco WHERE objna EQ p_objna
AND objty EQ v_objc.
IF it_ybstsaco-upgru NE v_ruleno.
IF v_cl1 IS INITIAL.
it_tnode1-tintensiv = 'X'.
it_tnode1-tintensiv2 = 'X'.
v_cl1 = 'X'.
ELSE.
CLEAR v_cl1.
it_tnode1-tintensiv = ' '.
it_tnode1-tintensiv2 = ' '.
ENDIF.
PERFORM 2count.
v_ruleno = it_ybstsaco-upgru.
it_tnode1-text = it_ybstsaco-analw.
it_tnode1-tlength = 64.
it_tnode1-tcolor = 1.
it_tnode1-tlevel = 2.
it_tnode1-tpos = 9.
IF it_ybstsaco-impac EQ 'E'.
icon = red.
ELSE.
icon = yellow.
ENDIF.
it_tnode1-text1 = icon.
it_tnode1-kind1 = 'I'.
it_tnode1-tlength1 = 3.
it_tnode1-tcolor1 = 1.
it_tnode1-tpos1 = 74.
it_tnode1-text2 = v_ues.
it_tnode1-tlength2 = 7.
it_tnode1-tcolor2 = 3.
it_tnode1-tpos2 = 79.
APPEND it_tnode1.
CLEAR it_tnode1.
LOOP AT it_ybstsaco WHERE objna EQ it_ybstsaco-objna
AND devcl EQ it_ybstsaco-devcl
AND upgru EQ it_ybstsaco-upgru.
IF v_cl2 IS INITIAL.
it_tnode1-tintensiv4 = 'X'.
it_tnode1-tintensiv = 'X'.
v_cl2 = 'X'.
ELSE.
CLEAR v_cl2.
it_tnode1-tintensiv4 = ' '.
it_tnode1-tintensiv = ' '.
ENDIF.
CONDENSE it_ybstsaco-abapl.
it_tnode1-text4 = it_ybstsaco-abapl.
it_tnode1-tpos4 = 13.
it_tnode1-tlength4 = 72.
it_tnode1-tcolor4 = 7.
it_tnode1-tlevel = 03.
it_tnode1-text = it_ybstsaco-progl.
it_tnode1-tlength = 5.
it_tnode1-tcolor = 1.
it_tnode1-tpos = 86.
it_tnode1-text2 = it_ybstsaco-objna.
it_tnode1-text3 = it_ybstsaco-objty.
APPEND it_tnode1.
CLEAR it_tnode1.
ENDLOOP.
ENDIF.
ENDLOOP.
CALL FUNCTION 'RS_TREE_CONSTRUCT'
TABLES
nodetab = it_tnode1.
IF sy-subrc <> 0.
ENDIF.
CALL FUNCTION 'RS_TREE_LIST_DISPLAY'
EXPORTING
callback_program = sy-repid
callback_user_command = 'USER_COMMAND1'
CALLBACK_TEXT_DISPLAY =
CALLBACK_MOREINFO_DISPLAY =
CALLBACK_COLOR_DISPLAY =
callback_top_of_page = 'TOP_OF_PAGE1'
callback_gui_status = 'S002'
CALLBACK_CONTEXT_MENU =
STATUS = 'IMPLICIT'
CHECK_DUPLICATE_NAME = '1'
COLOR_OF_NODE = '4'
COLOR_OF_MARK = '3'
COLOR_OF_LINK = '1'
COLOR_OF_MATCH = '5'
LOWER_CASE_SENSITIVE = ' '
MODIFICATION_LOG = ' '
NODE_LENGTH = 30
TEXT_LENGTH = 75
TEXT_LENGTH1 = 0
TEXT_LENGTH2 = 0
RETURN_MARKED_SUBTREE = ' '
SCREEN_START_COLUMN = 0
SCREEN_START_LINE = 0
SCREEN_END_COLUMN = 0
SCREEN_END_LINE = 0
SUPPRESS_NODE_OUTPUT = ' '
LAYOUT_MODE = ' '
use_control = 'L'.
IMPORTING
F15 =
ENDFORM. " tree_display1
&----
*& Form Top_of_page1
&----
text
----
FORM top_of_page1.
DATA : v_len TYPE i.
CLEAR v_len.
v_len = STRLEN( it_ybstsaco-objna ).
WRITE : /40 'Unicode Analysis For the Object :' COLOR 1 NO-GAP,
it_ybstsaco-objna(v_len) COLOR 1 .
v_len = 33 + v_len.
WRITE : /40 sy-uline(v_len).
WRITE : /9 'Error Description' COLOR 1,
74 'Err ' COLOR 2 INTENSIFIED ON,
79 'Err ' COLOR 3,
86 'Line' COLOR 2 INTENSIFIED ON.
WRITE : /13 'Error Line' COLOR 7,
74 'TYPE' COLOR 2,
79 'Count' COLOR 3,
86 'Numb' COLOR 2.
WRITE : sy-uline.
ENDFORM. "Top_of_page1
&----
*& Form user_command1
&----
text
----
FORM user_command1 TABLES pt_nodes STRUCTURE seucomm
USING pv_command TYPE c
CHANGING pv_exit TYPE c
pv_list_refresh TYPE c.
IF sy-ucomm EQ 'DISP' OR
sy-ucomm EQ 'TRPI'.
IF pt_nodes-tlevel EQ '03' AND
( pt_nodes-selfield NE 'MINUS' OR
pt_nodes-selfield NE 'PLUS').
IF pt_nodes-text3 NE 'FUNC'.
CALL FUNCTION 'EDITOR_PROGRAM'
EXPORTING
display = 'X'
line = pt_nodes-text
program = pt_nodes-text2.
ELSEIF pt_nodes-text3 EQ 'FUNC'..
CALL FUNCTION 'RS_TOOL_ACCESS'
EXPORTING
operation = 'SHOW'
object_name = pt_nodes-text2
object_type = 'FUNC'
ENCLOSING_OBJECT =
position = pt_nodes-text
DEVCLASS =
INCLUDE =
VERSION = ' '
MONITOR_ACTIVATION = 'X'
WB_MANAGER =
IN_NEW_WINDOW =
WITH_OBJECTLIST = ' '
WITH_WORKLIST = ' '
.
IF sy-subrc <> 0.
ENDIF.
IF sy-subrc <> 0.
ENDIF.
ENDIF.
ELSEIF ( pt_nodes-selfield EQ 'MINUS' OR
pt_nodes-selfield EQ 'PLUS') OR
sy-ucomm EQ 'TREP' OR
sy-ucomm EQ 'TRCM'.
ELSE.
MESSAGE 'Click on Error Line For Further Navigation'
TYPE 'I'.
ENDIF.
ENDIF.
ENDFORM. "user_command1
&----
*& Form s002
&----
text
----
FORM s002.
SET PF-STATUS 'S2SCR'.
SET TITLEBAR 'T002'.
ENDFORM. "s002
&----
*& Form 2count
&----
FORM 2count .
DATA : v_len.
CLEAR v_uecount.
LOOP AT it_ybstsaco WHERE objna EQ it_ybstsaco-objna
AND devcl EQ it_ybstsaco-devcl
AND upgru EQ it_ybstsaco-upgru.
v_uecount = v_uecount + 1.
ENDLOOP.
CLEAR : v_len,v_ues.
v_ues = v_uecount.
v_len = STRLEN( v_ues ).
v_len = 7 - v_len.
SHIFT v_ues RIGHT BY v_len PLACES.
ENDFORM. " 2count
&----
*& Form get_zebra
&----
FORM get_zebra USING v_cl.
IF v_cl IS INITIAL.
it_tnode-tintensiv9 = 'X'.
it_tnode-intensiv = 'X'.
it_tnode-tintensiv1 = 'X'.
it_tnode-tintensiv2 = 'X'.
it_tnode-tintensiv3 = 'X'.
it_tnode-tintensiv4 = 'X'.
it_tnode-tintensiv5 = 'X'.
it_tnode-tintensiv6 = 'X'.
it_tnode-tintensiv7 = 'X'.
it_tnode-tintensiv8 = 'X'.
it_tnode-tintensiv = 'X'.
v_cl ='X'.
ELSE.
it_tnode-tintensiv9 = ' '.
it_tnode-tintensiv = ' '.
it_tnode-intensiv = ' '.
it_tnode-tintensiv1 = ' '.
it_tnode-tintensiv2 = ' '.
it_tnode-tintensiv3 = ' '.
it_tnode-tintensiv4 = ' '.
it_tnode-tintensiv5 = ' '.
it_tnode-tintensiv6 = ' '.
it_tnode-tintensiv7 = ' '.
it_tnode-tintensiv8 = ' '.
CLEAR v_cl.
ENDIF.
ENDFORM. " get_zebra
&----
*& Form get_data
&----
text
----
FORM get_data .
CLEAR it_ybstsaco.
REFRESH it_ybstsaco.
*Fetching All The Error Data From Ybstsaco Table
SELECT *
FROM ybstucck
INTO TABLE it_ybstsaco
WHERE devcl IN s_devcl
AND objna IN s_objna.
IF sy-subrc NE 0.
v_flag = 'X'.
MESSAGE 'The Package doesnot contain any Upgrade issues' TYPE 'I'.
ENDIF.
ENDFORM. " get_data
&----
*& Form get_data_rule_wise
&----
text
----
FORM get_data_rule_wise .
SELECT upgru
impac
analw
objna
objty
categ
abapl
progl
INTO TABLE it_rulesaco
FROM ybstucck
WHERE devcl IN s_devcl.
IF sy-subrc NE 0.
v_flag = 'X'.
MESSAGE 'The Package doesnot contain any Upgrade issues' TYPE 'I'.
ENDIF.
ENDFORM. " get_data_rule_wise
&----
*& Form tree_display
&----
FORM tree_display_rule_wise .
DATA : it_tnode LIKE snodetext OCCURS 0 WITH HEADER LINE,
v_cntrule1(7).
LOOP AT it_rulesaco.
SHIFT it_rulesaco-upgru LEFT DELETING LEADING '0'.
MODIFY it_rulesaco INDEX sy-tabix.
ENDLOOP.
CLEAR it_tnode.
REFRESH it_tnode.
SORT it_rulesaco BY upgru objna.
it_tnode-name = 'Rule Wise'.
it_tnode-color = 1.
it_tnode-nlength = 9.
it_tnode-tlevel = 1.
APPEND it_tnode.
CLEAR it_tnode.
LOOP AT it_rulesaco.
AT NEW upgru.
READ TABLE it_rulesaco INDEX sy-tabix.
it_tnode-name = it_rulesaco-upgru.
it_tnode-color = 1.
it_tnode-nlength = 3.
it_tnode-tlevel = 2.
it_tnode-text = it_rulesaco-analw.
it_tnode-tcolor = 1.
it_tnode-tlength = 64.
it_tnode-tpos = 13.
PERFORM get_inforule.
it_tnode-text1 = icon.
it_tnode-kind1 = 'I'.
it_tnode-tpos1 = 78.
it_tnode-tlength1 = 3.
v_cntrule1 = v_cntrule.
it_tnode-text2 = v_cntrule1.
it_tnode-tpos2 = 83.
it_tnode-tlength2 = 7.
it_tnode-tcolor2 = 3.
APPEND it_tnode.
CLEAR it_tnode.
LOOP AT it_rulesaco1.
AT NEW objna.
READ TABLE it_rulesaco1 INDEX sy-tabix.
READ TABLE it_rulesaco INDEX sy-tabix.
it_tnode-name = it_rulesaco1-objna.
it_tnode-color = 1.
it_tnode-nlength = 30.
it_tnode-tlevel = 3.
it_tnode-text = it_rulesaco1-objty.
it_tnode-tcolor = 5.
it_tnode-tlength = 4.
it_tnode-tpos = 45.
it_tnode-text1 = it_rulesaco1-categ.
it_tnode-tcolor1 = 5.
it_tnode-tlength1 = 4.
it_tnode-tpos1 = 50.
PERFORM objna_count.
v_cntrule1 = v_cntrule.
it_tnode-text2 = v_cntrule1.
it_tnode-tpos2 = 83.
it_tnode-tlength2 = 7.
it_tnode-tcolor2 = 3.
APPEND it_tnode.
CLEAR it_tnode.
LOOP AT it_rulesaco1 WHERE objna EQ it_rulesaco1-objna.
it_tnode-name = it_rulesaco1-progl.
it_tnode-color = 1.
it_tnode-nlength = 6.
it_tnode-tlevel = 4.
it_tnode-text = it_rulesaco1-abapl.
it_tnode-tcolor = 1.
it_tnode-tlength = 72.
it_tnode-tpos = 24.
it_tnode-text1 = it_rulesaco1-objna.
it_tnode-text2 = it_rulesaco1-objty.
APPEND it_tnode.
CLEAR it_tnode.
ENDLOOP.
ENDAT.
ENDLOOP.
ENDAT.
ENDLOOP.
CALL FUNCTION 'RS_TREE_CONSTRUCT'
TABLES
nodetab = it_tnode.
CALL FUNCTION 'RS_TREE_LIST_DISPLAY'
EXPORTING
callback_program = sy-repid
callback_user_command = 'USER_COMMAND_RULE'
CALLBACK_TEXT_DISPLAY =
CALLBACK_MOREINFO_DISPLAY =
CALLBACK_COLOR_DISPLAY =
callback_top_of_page = 'TOP_OF_PAGE_RULE'
callback_gui_status = 'S001_RULE'
CALLBACK_CONTEXT_MENU =
STATUS = 'IMPLICIT'
CHECK_DUPLICATE_NAME = '1'
COLOR_OF_NODE = '4'
COLOR_OF_MARK = '3'
COLOR_OF_LINK = '1'
COLOR_OF_MATCH = '5'
LOWER_CASE_SENSITIVE = ' '
MODIFICATION_LOG = ' '
NODE_LENGTH = 30
TEXT_LENGTH = 75
TEXT_LENGTH1 = 0
TEXT_LENGTH2 = 0
RETURN_MARKED_SUBTREE = ' '
SCREEN_START_COLUMN = 0
SCREEN_START_LINE = 0
SCREEN_END_COLUMN = 0
SCREEN_END_LINE = 0
SUPPRESS_NODE_OUTPUT = ' '
LAYOUT_MODE = ' '
USE_CONTROL = STREE_USE_LIST
IMPORTING
F15 =
.
ENDFORM. " tree_display
&----
*& Form user_command
&----
text
----
FORM user_command_rule TABLES pt_nodes STRUCTURE seucomm
USING pv_command TYPE c
CHANGING pv_exit TYPE c
pv_list_refresh TYPE c.
CASE sy-ucomm.
when 'OBJT'.
data : begin of it_cnt occurs 0,
objna(30),
errcnt type i,
end of it_cnt.
data : itab1 like it_cnt occurs 0 with header line.
data : itab2 like it_cnt occurs 0 with header line.
data : begin of it_optru occurs 0,
optru like ybstsaco-upgru,
errcnt type i,
end of it_optru.
select upgru
into table it_optru
from ybstsaco
where devcl in s_devcl.
sort it_optru.
loop at it_optru.
it_cnt-errcnt = it_cnt-errcnt + 1.
at end of optru.
it_cnt-objna = it_optru-optru.
append it_cnt.
clear it_cnt.
endat.
endloop.
CALL FUNCTION
'GRAPH_MATRIX_2D'
EXPORTING
SO_TITLE = 'TITLE'
TITL = 'Rules/ Number of Errors Distribution'
VALT = 'Number of Errors '
TABLES
DATA = it_cnt
OPTS = itab1
TCOL = itab2.
WHEN 'TRPI' OR 'DISP'.
IF pt_nodes-tlevel EQ '04' .
CALL FUNCTION 'RS_TOOL_ACCESS'
EXPORTING
operation = 'SHOW'
object_name = pt_nodes-text1
object_type = pt_nodes-text2
ENCLOSING_OBJECT =
position = pt_nodes-name
DEVCLASS =
INCLUDE =
VERSION = ' '
MONITOR_ACTIVATION = 'X'
WB_MANAGER =
IN_NEW_WINDOW =
WITH_OBJECTLIST = ' '
WITH_WORKLIST = ' '
IMPORTING
NEW_NAME =
WB_TODO_REQUEST =
TABLES
OBJLIST =
CHANGING
P_REQUEST = ' '
EXCEPTIONS
NOT_EXECUTED = 1
INVALID_OBJECT_TYPE = 2
OTHERS = 3
.
IF sy-subrc <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
.
ELSEIF pt_nodes-selfield EQ 'MINUS' OR pt_nodes-selfield EQ 'PLUS'.
ELSE.
MESSAGE 'Select the Error Line For Further Navigation' TYPE 'I'.
ENDIF.
WHEN OTHERS.
ENDCASE.
ENDFORM. "user_command
&----
*& Form s001
&----
text
----
FORM s001_rule.
SET PF-STATUS 'S002'.
SET TITLEBAR 'T001'.
ENDFORM. "s001
&----
*& Form get_inforule
&----
FORM get_inforule .
IF it_rulesaco-impac EQ 'W'.
icon = yellow.
ELSE.
icon = red.
ENDIF.
CLEAR it_rulesaco1.
REFRESH it_rulesaco1.
LOOP AT it_rulesaco WHERE upgru EQ it_rulesaco-upgru.
MOVE-CORRESPONDING it_rulesaco TO it_rulesaco1.
APPEND it_rulesaco1.
ENDLOOP.
CLEAR v_cntrule.
LOOP AT it_rulesaco WHERE upgru EQ it_rulesaco-upgru.
v_cntrule = v_cntrule + 1.
ENDLOOP.
ENDFORM. " get_inforule
&----
*& Form objna_count
&----
FORM objna_count .
CLEAR v_cntrule.
LOOP AT it_rulesaco1 WHERE upgru EQ it_rulesaco1-upgru
AND objna EQ it_rulesaco1-objna.
v_cntrule = v_cntrule + 1.
ENDLOOP.
ENDFORM. " objna_count
&----
*& Form top_of_page_rule
&----
text
----
FORM top_of_page_rule.
WRITE : 40(16) 'Unicode Analysis' COLOR 1,
/40(16) '****************',/,
40(16) 'Rule Wise Report'.
ENDFORM. "top_of_page_rule
Regards,
Anji
Message was edited by:
Anji Reddy Vangala
2007 Feb 23 10:34 AM
Hi,
Use the function Modules
GRAPH_MATRIX_2D and GRAPH_MATRIX_3D
To generate Pie and Bar charts.
Sample Code:
REPORT yb<rupg>
MESSAGE-ID yb
NO STANDARD PAGE HEADING.
TABLES : ybstsaco .
&----
*Data Declarations
&----
*Internal Table for Upgrade errors
DATA : it_ybstsaco LIKE ybstucck OCCURS 0 WITH HEADER LINE.
*Internal Table for Tree Nodes
DATA : it_tnode LIKE snodetext OCCURS 0 WITH HEADER LINE.
DATA : it_tempcobs LIKE ybstsaco OCCURS 0 WITH HEADER LINE.
DATA : v_tot TYPE i.
DATA : v_validate TYPE tdevc-devclass,
v_vobjna TYPE tadir-obj_name,
v_devdes TYPE tdevct-ctext,
v_objdes TYPE ybstcobt-otext,
v_uecount TYPE i,
v_uwcount TYPE i,
v_cl1,v_cl2,v_cl3,
v_cl4,v_cl5,
v_ues(7),
v_uws(7),
v_ero(7),
v_objna(30).
DATA : v_flag TYPE flag.
DATA : v_objty(4).
DATA : BEGIN OF it_rulesaco OCCURS 0,
upgru TYPE ybstsaco-upgru,
impac TYPE ybstsaco-impac,
analw TYPE ybstsaco-analw,
objna TYPE ybstsaco-objna,
objty TYPE ybstsaco-objty,
categ TYPE ybstsaco-categ,
abapl TYPE ybstsaco-abapl,
progl TYPE ybstsaco-progl,
END OF it_rulesaco.
DATA : icon(20),
v_cntrule TYPE i.
DATA: green(20) TYPE c VALUE 'icon_green_light',
: yellow(20) TYPE c VALUE 'icon_yellow_light',
: red(20) TYPE c VALUE 'icon_red_light'.
DATA : it_rulesaco1 LIKE STANDARD TABLE OF it_rulesaco WITH HEADER LINE.
&----
*Selection Screen
&----
SELECTION-SCREEN : BEGIN OF BLOCK b1 WITH FRAME TITLE text-001.
SELECT-OPTIONS : s_devcl FOR ybstsaco-devcl.
SELECT-OPTIONS : s_objna FOR ybstsaco-objna.
SELECTION-SCREEN : END OF BLOCK b1.
SELECTION-SCREEN : BEGIN OF BLOCK b2 WITH FRAME TITLE text-002.
PARAMETERS: v_dewise RADIOBUTTON GROUP grp,
v_ruwise RADIOBUTTON GROUP grp.
SELECTION-SCREEN : END OF BLOCK b2.
&----
*At Selection Screen.
&----
AT SELECTION-SCREEN.
SELECT SINGLE devclass
INTO v_validate
FROM tdevc
WHERE devclass IN s_devcl.
IF sy-subrc NE 0.
v_flag = 'X'.
MESSAGE 'Package Does Not Exist' TYPE 'I'.
STOP.
ENDIF.
SELECT SINGLE obj_name
INTO v_objna
FROM tadir
WHERE obj_name IN s_objna.
IF sy-subrc NE 0.
v_flag = 'X'.
MESSAGE 'Object Does not Exist' TYPE 'I'.
STOP.
ENDIF.
&----
Start-of-selection.
&----
START-OF-SELECTION.
IF v_dewise = 'X'.
PERFORM get_data.
ELSEIF v_ruwise = 'X'.
PERFORM get_data_rule_wise.
ENDIF.
&----
*End-of-selection.
&----
END-OF-SELECTION.
IF v_flag NE 'X'.
IF v_dewise = 'X'.
PERFORM tree_display.
ELSEIF v_ruwise = 'X'.
PERFORM tree_display_rule_wise..
ENDIF.
ENDIF.
&----
*& Form tree_display
&----
FORM tree_display .
it_tnode-name = 'Custom Developed Objects'.
it_tnode-nlength = STRLEN( it_tnode-name ).
it_tnode-color = 1.
it_tnode-tlevel = 1.
APPEND it_tnode.
CLEAR it_tnode.
SORT it_ybstsaco BY devcl objty categ objna.
LOOP AT it_ybstsaco.
AT NEW devcl.
PERFORM get_zebra USING v_cl3.
CLEAR v_objty.
READ TABLE it_ybstsaco INDEX sy-tabix.
it_tnode-name = it_ybstsaco-devcl.
it_tnode-nlength = 30.
it_tnode-color = '4'.
it_tnode-tlevel = 2.
PERFORM get_devdes.
PERFORM num_count.
it_tnode-tlength = 45.
it_tnode-tcolor = 1.
it_tnode-tpos = 52.
it_tnode-text1 = v_ues.
it_tnode-tlength1 = 7.
it_tnode-tcolor1 = 3.
it_tnode-tpos1 = 99.
it_tnode-text2 = v_uws.
it_tnode-tlength2 = 7.
it_tnode-tcolor2 = 3.
it_tnode-tpos2 = 107.
it_tnode-text3 = v_ero.
it_tnode-tlength3 = 7.
it_tnode-tcolor3 = 3.
it_tnode-tpos3 = 115.
APPEND it_tnode.
CLEAR it_tnode.
LOOP AT it_ybstsaco WHERE devcl EQ it_ybstsaco-devcl.
IF v_objty NE it_ybstsaco-objty.
v_objty = it_ybstsaco-objty.
PERFORM get_zebra USING v_cl5.
it_tnode-name = v_objty.
it_tnode-nlength = 4.
it_tnode-color = 7.
it_tnode-tlevel = 3.
PERFORM get_shorttext USING v_objty.
PERFORM num_count_objty.
it_tnode-text = v_objdes.
it_tnode-tlength = 45.
it_tnode-tcolor = 1.
it_tnode-tpos = 52.
it_tnode-text1 = v_ues.
it_tnode-tlength1 = 7.
it_tnode-tcolor1 = 3.
it_tnode-tpos1 = 99.
it_tnode-text2 = v_uws.
it_tnode-tlength2 = 7.
it_tnode-tcolor2 = 3.
it_tnode-tpos2 = 107.
it_tnode-text3 = v_ero.
it_tnode-tlength3 = 7.
it_tnode-tcolor3 = 3.
it_tnode-tpos3 = 115.
APPEND it_tnode.
CLEAR it_tnode.
PERFORM get_zebra USING v_cl1.
IF v_objty EQ 'PROG'.
PERFORM build_prognodes.
ELSE.
PERFORM build_others.
ENDIF.
ENDIF.
ENDLOOP.
ENDAT.
ENDLOOP.
CALL FUNCTION 'RS_TREE_CONSTRUCT'
TABLES
nodetab = it_tnode.
IF sy-subrc <> 0.
ENDIF.
CALL FUNCTION 'RS_TREE_LIST_DISPLAY'
EXPORTING
callback_program = sy-repid
callback_user_command = 'USER_COMMAND'
CALLBACK_TEXT_DISPLAY =
CALLBACK_MOREINFO_DISPLAY =
CALLBACK_COLOR_DISPLAY =
callback_top_of_page = 'TOP_OF_PAGE'
callback_gui_status = 'S001'
CALLBACK_CONTEXT_MENU =
STATUS = 'IMPLICIT'
CHECK_DUPLICATE_NAME = '1'
COLOR_OF_NODE = '4'
COLOR_OF_MARK = '3'
COLOR_OF_LINK = '1'
COLOR_OF_MATCH = '5'
LOWER_CASE_SENSITIVE = ' '
MODIFICATION_LOG = ' '
NODE_LENGTH = 30
TEXT_LENGTH = 75
TEXT_LENGTH1 = 0
TEXT_LENGTH2 = 0
RETURN_MARKED_SUBTREE = ' '
SCREEN_START COLUMN = 0
SCREEN_START_LINE = 0
SCREEN_END_COLUMN = 0
SCREEN_END_LINE = 0
SUPPRESS_NODE_OUTPUT = ' '
LAYOUT_MODE = ' '
use_control = 'L'.
IMPORTING
F15 = .
ENDFORM. " tree_display
&----
*& Form s001
&----
text
----
FORM s001.
SET PF-STATUS 'S002'.
SET TITLEBAR 'T001'.
ENDFORM. "s001
&----
*& Form top_of_page
&----
text
----
FORM top_of_page.
WRITE : 60 'UNICODE ANALYSIS' COLOR 1 INTENSIFIED OFF,
/60 '****************',
/,/12 'Object Name' COLOR 1,
60 'Description' COLOR 1 ,
99 'Unicode' COLOR 3,
107 'Unicode' COLOR 3,
115 'Total ' COLOR 3.
WRITE : /99 'Issues ' COLOR 3,
107 'Warns ' COLOR 3,
115 'Issues' COLOR 3,
sy-uline.
ENDFORM. "top_of_page
&----
*& Form user_command
&----
text
----
FORM user_command TABLES pt_nodes STRUCTURE seucomm
USING pv_command TYPE c
CHANGING pv_exit TYPE c
pv_list_refresh TYPE c.
DATA : v_objna1(30),
v_objct1(30).
CASE sy-ucomm.
WHEN 'TRPI' OR 'UPGR'.
IF pt_nodes-tlevel EQ '05' OR pt_nodes-tlevel EQ '04'.
IF pt_nodes-nlength NE '04'.
pv_list_refresh = ' '.
CLEAR v_objna.
v_objna1 = pt_nodes-name.
v_objct1 = pt_nodes-text4.
PERFORM tree_display1 USING v_objna1 v_objct1.
ELSEIF pt_nodes-selfield EQ 'MINUS'
OR pt_nodes-selfield EQ 'PLUS'.
ELSE.
MESSAGE 'No Errors For the Selected Object'
TYPE 'I'.
ENDIF.
ELSEIF pt_nodes-selfield EQ 'MINUS'
OR pt_nodes-selfield EQ 'PLUS'
OR sy-ucomm EQ 'TREP'
OR sy-ucomm EQ 'TRCM'.
ELSE.
MESSAGE
'Please Select the Object For Further Navigation' TYPE 'I'.
SET PF-STATUS 'S002'.
ENDIF.
WHEN OTHERS.
ENDCASE.
ENDFORM. "user_command
&----
*& Form num_count
&----
FORM num_count .
DATA : v_eroi TYPE i,
v_len TYPE i.
CLEAR : v_uecount,v_uwcount.
LOOP AT it_ybstsaco WHERE
devcl EQ it_ybstsaco-devcl.
IF it_ybstsaco-impac = 'E'.
v_uecount = v_uecount + 1.
ELSE.
v_uwcount = v_uwcount + 1.
ENDIF.
ENDLOOP.
CLEAR : v_ues,v_uws.
v_ues = v_uecount.
v_uws = v_uwcount.
v_eroi = v_uwcount + v_uecount.
v_ero = v_eroi.
v_len = STRLEN( v_ues ).
v_len = 7 - v_len.
SHIFT v_ues RIGHT BY v_len PLACES.
CLEAR v_len.
v_len = STRLEN( v_uws ).
v_len = 7 - v_len.
SHIFT v_uws RIGHT BY v_len PLACES.
CLEAR v_len.
v_len = STRLEN( v_ero ).
v_len = 7 - v_len.
SHIFT v_ero RIGHT BY v_len PLACES.
CLEAR v_len.
ENDFORM. " num_count
&----
*& Form get_devdes
&----
FORM get_devdes .
SELECT SINGLE ctext FROM tdevct INTO v_devdes
WHERE devclass EQ it_ybstsaco-devcl
AND spras EQ sy-langu.
IF sy-subrc EQ 0.
IF v_devdes IS NOT INITIAL.
it_tnode-text = v_devdes.
CLEAR v_devdes.
ELSE.
CONCATENATE 'Description Missing in '
sy-langu INTO it_tnode-text.
it_tnode-text = 'Description Missing'.
CLEAR v_devdes.
ENDIF.
ELSE.
it_tnode-text = 'Description Missing'.
ENDIF.
ENDFORM. " get_devdes
&----
*& Form get_Shorttext
&----
FORM get_shorttext USING p_v_objty.
CLEAR v_objdes.
SELECT SINGLE otext
FROM ybstcobt
INTO v_objdes
WHERE objct EQ p_v_objty
AND spras EQ sy-langu.
ENDFORM. " get_Shorttext
&----
*& Form build_prognodes
&----
FORM build_prognodes .
DATA : v_categ(4).
LOOP AT it_ybstsaco WHERE devcl EQ it_ybstsaco-devcl
AND objty EQ v_objty.
IF v_categ NE it_ybstsaco-categ.
PERFORM get_zebra USING v_cl1.
v_categ = it_ybstsaco-categ.
it_tnode-name = v_categ.
it_tnode-nlength = 4.
it_tnode-color = 7.
it_tnode-tlevel = 4.
PERFORM get_shorttext USING v_categ.
PERFORM numcount_categ USING v_categ.
it_tnode-text = v_objdes.
it_tnode-tlength = 45.
it_tnode-tcolor = 2.
it_tnode-tpos = 52.
it_tnode-text1 = v_ues.
it_tnode-tlength1 = 7.
it_tnode-tcolor1 = 3.
it_tnode-tpos1 = 99.
it_tnode-text2 = v_uws.
it_tnode-tlength2 = 7.
it_tnode-tcolor2 = 3.
it_tnode-tpos2 = 107.
it_tnode-text3 = v_ero.
it_tnode-tlength3 = 7.
it_tnode-tcolor3 = 3.
it_tnode-tpos3 = 115.
APPEND it_tnode.
CLEAR it_tnode.
LOOP AT it_ybstsaco WHERE devcl EQ it_ybstsaco-devcl
AND objty EQ v_objty
AND categ EQ v_categ.
IF v_objna NE it_ybstsaco-objna.
v_objna = it_ybstsaco-objna.
it_tnode-name = it_ybstsaco-objna.
it_tnode-nlength = 30.
it_tnode-color = 7.
it_tnode-tlevel = 5.
PERFORM get_shorttext_objna USING v_objna v_objty.
PERFORM num_countobjna CHANGING v_tot.
it_tnode-text = v_objdes.
it_tnode-tlength = 45.
it_tnode-tcolor = 2.
it_tnode-tpos = 52.
it_tnode-text1 = v_ues.
it_tnode-tlength1 = 7.
it_tnode-tcolor1 = 3.
it_tnode-tpos1 = 99.
it_tnode-text2 = v_uws.
it_tnode-tlength2 = 7.
it_tnode-tcolor2 = 3.
it_tnode-tpos2 = 107.
it_tnode-text3 = v_ero.
it_tnode-tlength3 = 7.
it_tnode-tcolor3 = 3.
it_tnode-tpos3 = 115.
it_tnode-text4 = it_ybstsaco-objty.
IF v_tot EQ 0.
CLEAR it_tnode.
ELSE.
PERFORM get_zebra USING v_cl2.
APPEND it_tnode.
CLEAR it_tnode.
ENDIF.
ENDIF.
ENDLOOP.
ENDIF.
ENDLOOP.
ENDFORM. " build_prognodes
&----
*& Form build_others
&----
FORM build_others .
LOOP AT it_ybstsaco WHERE devcl EQ it_ybstsaco-devcl
AND objty EQ v_objty.
IF v_objna NE it_ybstsaco-objna.
v_objna = it_ybstsaco-objna.
it_tnode-name = it_ybstsaco-objna.
it_tnode-nlength = 30.
it_tnode-color = 7.
it_tnode-tlevel = 4.
PERFORM get_shorttext_objna USING v_objna v_objty.
PERFORM num_countobjna CHANGING v_tot.
it_tnode-text = v_objdes.
it_tnode-tlength = 45.
it_tnode-tcolor = 2.
it_tnode-tpos = 52.
it_tnode-text1 = v_ues.
it_tnode-tlength1 = 7.
it_tnode-tcolor1 = 3.
it_tnode-tpos1 = 99.
it_tnode-text2 = v_uws.
it_tnode-tlength2 = 7.
it_tnode-tcolor2 = 3.
it_tnode-tpos2 = 107.
it_tnode-text3 = v_ero.
it_tnode-tlength3 = 7.
it_tnode-tcolor3 = 3.
it_tnode-tpos3 = 115.
it_tnode-text4 = it_ybstsaco-objty.
IF v_tot EQ 0.
CLEAR it_tnode.
ELSE.
PERFORM get_zebra USING v_cl2.
APPEND it_tnode.
CLEAR it_tnode.
ENDIF.
ENDIF.
ENDLOOP.
ENDFORM. " build_others
&----
*& Form num_count_objty
&----
FORM num_count_objty .
DATA : v_len TYPE i,
v_eroi TYPE i.
CLEAR : v_uecount,v_uwcount.
LOOP AT it_ybstsaco WHERE
devcl EQ it_ybstsaco-devcl
AND objty EQ v_objty..
IF it_ybstsaco-impac = 'E'.
v_uecount = v_uecount + 1.
ELSEIF it_ybstsaco-impac = 'W'.
v_uwcount = v_uwcount + 1.
ENDIF.
ENDLOOP.
CLEAR : v_ues,v_uws.
v_ues = v_uecount.
v_uws = v_uwcount.
v_eroi = v_uwcount + v_uecount.
v_ero = v_eroi.
v_len = STRLEN( v_ues ).
v_len = 7 - v_len.
SHIFT v_ues RIGHT BY v_len PLACES.
CLEAR v_len.
v_len = STRLEN( v_uws ).
v_len = 7 - v_len.
SHIFT v_uws RIGHT BY v_len PLACES.
CLEAR v_len.
v_len = STRLEN( v_ero ).
v_len = 7 - v_len.
SHIFT v_ero RIGHT BY v_len PLACES.
CLEAR v_len.
ENDFORM. " num_count_objty
&----
*& Form numcount_categ
&----
FORM numcount_categ USING v_categ.
DATA : v_len TYPE i,
v_eroi TYPE i.
CLEAR : v_uecount,v_uwcount.
LOOP AT it_ybstsaco WHERE
devcl EQ it_ybstsaco-devcl
AND objty EQ v_objty
AND categ EQ v_categ.
IF it_ybstsaco-impac = 'E'.
v_uecount = v_uecount + 1.
ELSEIF it_ybstsaco-impac = 'W'.
v_uwcount = v_uwcount + 1.
ENDIF.
ENDLOOP.
CLEAR : v_ues,v_uws.
v_ues = v_uecount.
v_uws = v_uwcount.
v_eroi = v_uwcount + v_uecount.
v_ero = v_eroi.
v_len = STRLEN( v_ues ).
v_len = 7 - v_len.
SHIFT v_ues RIGHT BY v_len PLACES.
CLEAR v_len.
v_len = STRLEN( v_uws ).
v_len = 7 - v_len.
SHIFT v_uws RIGHT BY v_len PLACES.
CLEAR v_len.
v_len = STRLEN( v_ero ).
v_len = 7 - v_len.
SHIFT v_ero RIGHT BY v_len PLACES.
CLEAR v_len.
ENDFORM. " numcount_categ
&----
*& Form num_countobjna
&----
FORM num_countobjna CHANGING v_tot.
DATA : v_len TYPE i,
v_eroi TYPE i.
CLEAR v_tot.
CLEAR : v_uecount,v_uwcount.
LOOP AT it_ybstsaco WHERE
devcl EQ it_ybstsaco-devcl
AND objty EQ v_objty
AND objna EQ it_ybstsaco-objna.
IF it_ybstsaco-impac = 'E'.
v_uecount = v_uecount + 1.
ELSEIF it_ybstsaco-impac = 'W'.
v_uwcount = v_uwcount + 1.
ENDIF.
ENDLOOP.
CLEAR : v_ues,v_uws.
v_ues = v_uecount.
v_uws = v_uwcount.
v_eroi = v_uwcount + v_uecount.
v_ero = v_eroi.
v_tot = v_eroi.
v_len = STRLEN( v_ues ).
v_len = 7 - v_len.
SHIFT v_ues RIGHT BY v_len PLACES.
CLEAR v_len.
v_len = STRLEN( v_uws ).
v_len = 7 - v_len.
SHIFT v_uws RIGHT BY v_len PLACES.
CLEAR v_len.
v_len = STRLEN( v_ero ).
v_len = 7 - v_len.
SHIFT v_ero RIGHT BY v_len PLACES.
CLEAR v_len.
ENDFORM. " num_countobjna
&----
*& Form get_shorttext_objna
&----
FORM get_shorttext_objna USING p_v_objna v_objty.
CLEAR : v_objdes.
IF v_objty EQ 'FUNC'.
SELECT SINGLE stext
FROM v_fdirt
INTO v_objdes
WHERE funcname EQ p_v_objna
AND spras EQ sy-langu.
IF sy-subrc NE 0.
v_objdes = 'Description Not available'.
ELSE.
IF v_objdes IS INITIAL.
CONCATENATE 'Description Not available in ' sy-langu INTO v_objdes.
ENDIF.
ENDIF.
ELSE.
SELECT SINGLE text
FROM trdirt
INTO v_objdes
WHERE name EQ p_v_objna
AND sprsl EQ sy-langu.
IF sy-subrc NE 0.
v_objdes = 'Description Not available'.
ELSE.
IF v_objdes IS INITIAL.
CONCATENATE 'Description Not available in ' sy-langu INTO v_objdes.
ENDIF.
ENDIF.
ENDIF.
ENDFORM. " get_shorttext_objna
&----
*& Form tree_display1
&----
FORM tree_display1 USING p_objna
v_objc.
DATA : v_rule(5),
v_len TYPE i,
v_ruleno TYPE i.
*Internal Table for Tree Nodes
DATA icon(20).
DATA: green(20) TYPE c VALUE 'icon_green_light',
: yellow(20) TYPE c VALUE 'icon_yellow_light',
: red(20) TYPE c VALUE 'icon_red_light'.
DATA : it_tnode1 LIKE snodetext OCCURS 0 WITH HEADER LINE.
CLEAR it_tnode1.
REFRESH it_tnode1.
it_tnode1-name = 'Object Name'.
it_tnode1-nlength = 15.
it_tnode1-color = 1.
it_tnode1-tlevel = 1.
it_tnode1-text = p_objna.
it_tnode1-tlength = 15.
it_tnode1-tcolor = 1.
it_tnode1-tpos = 20.
it_tnode1-text1 =
APPEND it_tnode1.
CLEAR it_tnode1.
SORT it_ybstsaco BY analw.
LOOP AT it_ybstsaco WHERE objna EQ p_objna
AND objty EQ v_objc.
IF it_ybstsaco-upgru NE v_ruleno.
IF v_cl1 IS INITIAL.
it_tnode1-tintensiv = 'X'.
it_tnode1-tintensiv2 = 'X'.
v_cl1 = 'X'.
ELSE.
CLEAR v_cl1.
it_tnode1-tintensiv = ' '.
it_tnode1-tintensiv2 = ' '.
ENDIF.
PERFORM 2count.
v_ruleno = it_ybstsaco-upgru.
it_tnode1-text = it_ybstsaco-analw.
it_tnode1-tlength = 64.
it_tnode1-tcolor = 1.
it_tnode1-tlevel = 2.
it_tnode1-tpos = 9.
IF it_ybstsaco-impac EQ 'E'.
icon = red.
ELSE.
icon = yellow.
ENDIF.
it_tnode1-text1 = icon.
it_tnode1-kind1 = 'I'.
it_tnode1-tlength1 = 3.
it_tnode1-tcolor1 = 1.
it_tnode1-tpos1 = 74.
it_tnode1-text2 = v_ues.
it_tnode1-tlength2 = 7.
it_tnode1-tcolor2 = 3.
it_tnode1-tpos2 = 79.
APPEND it_tnode1.
CLEAR it_tnode1.
LOOP AT it_ybstsaco WHERE objna EQ it_ybstsaco-objna
AND devcl EQ it_ybstsaco-devcl
AND upgru EQ it_ybstsaco-upgru.
IF v_cl2 IS INITIAL.
it_tnode1-tintensiv4 = 'X'.
it_tnode1-tintensiv = 'X'.
v_cl2 = 'X'.
ELSE.
CLEAR v_cl2.
it_tnode1-tintensiv4 = ' '.
it_tnode1-tintensiv = ' '.
ENDIF.
CONDENSE it_ybstsaco-abapl.
it_tnode1-text4 = it_ybstsaco-abapl.
it_tnode1-tpos4 = 13.
it_tnode1-tlength4 = 72.
it_tnode1-tcolor4 = 7.
it_tnode1-tlevel = 03.
it_tnode1-text = it_ybstsaco-progl.
it_tnode1-tlength = 5.
it_tnode1-tcolor = 1.
it_tnode1-tpos = 86.
it_tnode1-text2 = it_ybstsaco-objna.
it_tnode1-text3 = it_ybstsaco-objty.
APPEND it_tnode1.
CLEAR it_tnode1.
ENDLOOP.
ENDIF.
ENDLOOP.
CALL FUNCTION 'RS_TREE_CONSTRUCT'
TABLES
nodetab = it_tnode1.
IF sy-subrc <> 0.
ENDIF.
CALL FUNCTION 'RS_TREE_LIST_DISPLAY'
EXPORTING
callback_program = sy-repid
callback_user_command = 'USER_COMMAND1'
CALLBACK_TEXT_DISPLAY =
CALLBACK_MOREINFO_DISPLAY =
CALLBACK_COLOR_DISPLAY =
callback_top_of_page = 'TOP_OF_PAGE1'
callback_gui_status = 'S002'
CALLBACK_CONTEXT_MENU =
STATUS = 'IMPLICIT'
CHECK_DUPLICATE_NAME = '1'
COLOR_OF_NODE = '4'
COLOR_OF_MARK = '3'
COLOR_OF_LINK = '1'
COLOR_OF_MATCH = '5'
LOWER_CASE_SENSITIVE = ' '
MODIFICATION_LOG = ' '
NODE_LENGTH = 30
TEXT_LENGTH = 75
TEXT_LENGTH1 = 0
TEXT_LENGTH2 = 0
RETURN_MARKED_SUBTREE = ' '
SCREEN_START_COLUMN = 0
SCREEN_START_LINE = 0
SCREEN_END_COLUMN = 0
SCREEN_END_LINE = 0
SUPPRESS_NODE_OUTPUT = ' '
LAYOUT_MODE = ' '
use_control = 'L'.
IMPORTING
F15 =
ENDFORM. " tree_display1
&----
*& Form Top_of_page1
&----
text
----
FORM top_of_page1.
DATA : v_len TYPE i.
CLEAR v_len.
v_len = STRLEN( it_ybstsaco-objna ).
WRITE : /40 'Unicode Analysis For the Object :' COLOR 1 NO-GAP,
it_ybstsaco-objna(v_len) COLOR 1 .
v_len = 33 + v_len.
WRITE : /40 sy-uline(v_len).
WRITE : /9 'Error Description' COLOR 1,
74 'Err ' COLOR 2 INTENSIFIED ON,
79 'Err ' COLOR 3,
86 'Line' COLOR 2 INTENSIFIED ON.
WRITE : /13 'Error Line' COLOR 7,
74 'TYPE' COLOR 2,
79 'Count' COLOR 3,
86 'Numb' COLOR 2.
WRITE : sy-uline.
ENDFORM. "Top_of_page1
&----
*& Form user_command1
&----
text
----
FORM user_command1 TABLES pt_nodes STRUCTURE seucomm
USING pv_command TYPE c
CHANGING pv_exit TYPE c
pv_list_refresh TYPE c.
IF sy-ucomm EQ 'DISP' OR
sy-ucomm EQ 'TRPI'.
IF pt_nodes-tlevel EQ '03' AND
( pt_nodes-selfield NE 'MINUS' OR
pt_nodes-selfield NE 'PLUS').
IF pt_nodes-text3 NE 'FUNC'.
CALL FUNCTION 'EDITOR_PROGRAM'
EXPORTING
display = 'X'
line = pt_nodes-text
program = pt_nodes-text2.
ELSEIF pt_nodes-text3 EQ 'FUNC'..
CALL FUNCTION 'RS_TOOL_ACCESS'
EXPORTING
operation = 'SHOW'
object_name = pt_nodes-text2
object_type = 'FUNC'
ENCLOSING_OBJECT =
position = pt_nodes-text
DEVCLASS =
INCLUDE =
VERSION = ' '
MONITOR_ACTIVATION = 'X'
WB_MANAGER =
IN_NEW_WINDOW =
WITH_OBJECTLIST = ' '
WITH_WORKLIST = ' '
.
IF sy-subrc <> 0.
ENDIF.
IF sy-subrc <> 0.
ENDIF.
ENDIF.
ELSEIF ( pt_nodes-selfield EQ 'MINUS' OR
pt_nodes-selfield EQ 'PLUS') OR
sy-ucomm EQ 'TREP' OR
sy-ucomm EQ 'TRCM'.
ELSE.
MESSAGE 'Click on Error Line For Further Navigation'
TYPE 'I'.
ENDIF.
ENDIF.
ENDFORM. "user_command1
&----
*& Form s002
&----
text
----
FORM s002.
SET PF-STATUS 'S2SCR'.
SET TITLEBAR 'T002'.
ENDFORM. "s002
&----
*& Form 2count
&----
FORM 2count .
DATA : v_len.
CLEAR v_uecount.
LOOP AT it_ybstsaco WHERE objna EQ it_ybstsaco-objna
AND devcl EQ it_ybstsaco-devcl
AND upgru EQ it_ybstsaco-upgru.
v_uecount = v_uecount + 1.
ENDLOOP.
CLEAR : v_len,v_ues.
v_ues = v_uecount.
v_len = STRLEN( v_ues ).
v_len = 7 - v_len.
SHIFT v_ues RIGHT BY v_len PLACES.
ENDFORM. " 2count
&----
*& Form get_zebra
&----
FORM get_zebra USING v_cl.
IF v_cl IS INITIAL.
it_tnode-tintensiv9 = 'X'.
it_tnode-intensiv = 'X'.
it_tnode-tintensiv1 = 'X'.
it_tnode-tintensiv2 = 'X'.
it_tnode-tintensiv3 = 'X'.
it_tnode-tintensiv4 = 'X'.
it_tnode-tintensiv5 = 'X'.
it_tnode-tintensiv6 = 'X'.
it_tnode-tintensiv7 = 'X'.
it_tnode-tintensiv8 = 'X'.
it_tnode-tintensiv = 'X'.
v_cl ='X'.
ELSE.
it_tnode-tintensiv9 = ' '.
it_tnode-tintensiv = ' '.
it_tnode-intensiv = ' '.
it_tnode-tintensiv1 = ' '.
it_tnode-tintensiv2 = ' '.
it_tnode-tintensiv3 = ' '.
it_tnode-tintensiv4 = ' '.
it_tnode-tintensiv5 = ' '.
it_tnode-tintensiv6 = ' '.
it_tnode-tintensiv7 = ' '.
it_tnode-tintensiv8 = ' '.
CLEAR v_cl.
ENDIF.
ENDFORM. " get_zebra
&----
*& Form get_data
&----
text
----
FORM get_data .
CLEAR it_ybstsaco.
REFRESH it_ybstsaco.
*Fetching All The Error Data From Ybstsaco Table
SELECT *
FROM ybstucck
INTO TABLE it_ybstsaco
WHERE devcl IN s_devcl
AND objna IN s_objna.
IF sy-subrc NE 0.
v_flag = 'X'.
MESSAGE 'The Package doesnot contain any Upgrade issues' TYPE 'I'.
ENDIF.
ENDFORM. " get_data
&----
*& Form get_data_rule_wise
&----
text
----
FORM get_data_rule_wise .
SELECT upgru
impac
analw
objna
objty
categ
abapl
progl
INTO TABLE it_rulesaco
FROM ybstucck
WHERE devcl IN s_devcl.
IF sy-subrc NE 0.
v_flag = 'X'.
MESSAGE 'The Package doesnot contain any Upgrade issues' TYPE 'I'.
ENDIF.
ENDFORM. " get_data_rule_wise
&----
*& Form tree_display
&----
FORM tree_display_rule_wise .
DATA : it_tnode LIKE snodetext OCCURS 0 WITH HEADER LINE,
v_cntrule1(7).
LOOP AT it_rulesaco.
SHIFT it_rulesaco-upgru LEFT DELETING LEADING '0'.
MODIFY it_rulesaco INDEX sy-tabix.
ENDLOOP.
CLEAR it_tnode.
REFRESH it_tnode.
SORT it_rulesaco BY upgru objna.
it_tnode-name = 'Rule Wise'.
it_tnode-color = 1.
it_tnode-nlength = 9.
it_tnode-tlevel = 1.
APPEND it_tnode.
CLEAR it_tnode.
LOOP AT it_rulesaco.
AT NEW upgru.
READ TABLE it_rulesaco INDEX sy-tabix.
it_tnode-name = it_rulesaco-upgru.
it_tnode-color = 1.
it_tnode-nlength = 3.
it_tnode-tlevel = 2.
it_tnode-text = it_rulesaco-analw.
it_tnode-tcolor = 1.
it_tnode-tlength = 64.
it_tnode-tpos = 13.
PERFORM get_inforule.
it_tnode-text1 = icon.
it_tnode-kind1 = 'I'.
it_tnode-tpos1 = 78.
it_tnode-tlength1 = 3.
v_cntrule1 = v_cntrule.
it_tnode-text2 = v_cntrule1.
it_tnode-tpos2 = 83.
it_tnode-tlength2 = 7.
it_tnode-tcolor2 = 3.
APPEND it_tnode.
CLEAR it_tnode.
LOOP AT it_rulesaco1.
AT NEW objna.
READ TABLE it_rulesaco1 INDEX sy-tabix.
READ TABLE it_rulesaco INDEX sy-tabix.
it_tnode-name = it_rulesaco1-objna.
it_tnode-color = 1.
it_tnode-nlength = 30.
it_tnode-tlevel = 3.
it_tnode-text = it_rulesaco1-objty.
it_tnode-tcolor = 5.
it_tnode-tlength = 4.
it_tnode-tpos = 45.
it_tnode-text1 = it_rulesaco1-categ.
it_tnode-tcolor1 = 5.
it_tnode-tlength1 = 4.
it_tnode-tpos1 = 50.
PERFORM objna_count.
v_cntrule1 = v_cntrule.
it_tnode-text2 = v_cntrule1.
it_tnode-tpos2 = 83.
it_tnode-tlength2 = 7.
it_tnode-tcolor2 = 3.
APPEND it_tnode.
CLEAR it_tnode.
LOOP AT it_rulesaco1 WHERE objna EQ it_rulesaco1-objna.
it_tnode-name = it_rulesaco1-progl.
it_tnode-color = 1.
it_tnode-nlength = 6.
it_tnode-tlevel = 4.
it_tnode-text = it_rulesaco1-abapl.
it_tnode-tcolor = 1.
it_tnode-tlength = 72.
it_tnode-tpos = 24.
it_tnode-text1 = it_rulesaco1-objna.
it_tnode-text2 = it_rulesaco1-objty.
APPEND it_tnode.
CLEAR it_tnode.
ENDLOOP.
ENDAT.
ENDLOOP.
ENDAT.
ENDLOOP.
CALL FUNCTION 'RS_TREE_CONSTRUCT'
TABLES
nodetab = it_tnode.
CALL FUNCTION 'RS_TREE_LIST_DISPLAY'
EXPORTING
callback_program = sy-repid
callback_user_command = 'USER_COMMAND_RULE'
CALLBACK_TEXT_DISPLAY =
CALLBACK_MOREINFO_DISPLAY =
CALLBACK_COLOR_DISPLAY =
callback_top_of_page = 'TOP_OF_PAGE_RULE'
callback_gui_status = 'S001_RULE'
CALLBACK_CONTEXT_MENU =
STATUS = 'IMPLICIT'
CHECK_DUPLICATE_NAME = '1'
COLOR_OF_NODE = '4'
COLOR_OF_MARK = '3'
COLOR_OF_LINK = '1'
COLOR_OF_MATCH = '5'
LOWER_CASE_SENSITIVE = ' '
MODIFICATION_LOG = ' '
NODE_LENGTH = 30
TEXT_LENGTH = 75
TEXT_LENGTH1 = 0
TEXT_LENGTH2 = 0
RETURN_MARKED_SUBTREE = ' '
SCREEN_START_COLUMN = 0
SCREEN_START_LINE = 0
SCREEN_END_COLUMN = 0
SCREEN_END_LINE = 0
SUPPRESS_NODE_OUTPUT = ' '
LAYOUT_MODE = ' '
USE_CONTROL = STREE_USE_LIST
IMPORTING
F15 =
.
ENDFORM. " tree_display
&----
*& Form user_command
&----
text
----
FORM user_command_rule TABLES pt_nodes STRUCTURE seucomm
USING pv_command TYPE c
CHANGING pv_exit TYPE c
pv_list_refresh TYPE c.
CASE sy-ucomm.
when 'OBJT'.
data : begin of it_cnt occurs 0,
objna(30),
errcnt type i,
end of it_cnt.
data : itab1 like it_cnt occurs 0 with header line.
data : itab2 like it_cnt occurs 0 with header line.
data : begin of it_optru occurs 0,
optru like ybstsaco-upgru,
errcnt type i,
end of it_optru.
select upgru
into table it_optru
from ybstsaco
where devcl in s_devcl.
sort it_optru.
loop at it_optru.
it_cnt-errcnt = it_cnt-errcnt + 1.
at end of optru.
it_cnt-objna = it_optru-optru.
append it_cnt.
clear it_cnt.
endat.
endloop.
CALL FUNCTION
'GRAPH_MATRIX_2D'
EXPORTING
SO_TITLE = 'TITLE'
TITL = 'Rules/ Number of Errors Distribution'
VALT = 'Number of Errors '
TABLES
DATA = it_cnt
OPTS = itab1
TCOL = itab2.
WHEN 'TRPI' OR 'DISP'.
IF pt_nodes-tlevel EQ '04' .
CALL FUNCTION 'RS_TOOL_ACCESS'
EXPORTING
operation = 'SHOW'
object_name = pt_nodes-text1
object_type = pt_nodes-text2
ENCLOSING_OBJECT =
position = pt_nodes-name
DEVCLASS =
INCLUDE =
VERSION = ' '
MONITOR_ACTIVATION = 'X'
WB_MANAGER =
IN_NEW_WINDOW =
WITH_OBJECTLIST = ' '
WITH_WORKLIST = ' '
IMPORTING
NEW_NAME =
WB_TODO_REQUEST =
TABLES
OBJLIST =
CHANGING
P_REQUEST = ' '
EXCEPTIONS
NOT_EXECUTED = 1
INVALID_OBJECT_TYPE = 2
OTHERS = 3
.
IF sy-subrc <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
.
ELSEIF pt_nodes-selfield EQ 'MINUS' OR pt_nodes-selfield EQ 'PLUS'.
ELSE.
MESSAGE 'Select the Error Line For Further Navigation' TYPE 'I'.
ENDIF.
WHEN OTHERS.
ENDCASE.
ENDFORM. "user_command
&----
*& Form s001
&----
text
----
FORM s001_rule.
SET PF-STATUS 'S002'.
SET TITLEBAR 'T001'.
ENDFORM. "s001
&----
*& Form get_inforule
&----
FORM get_inforule .
IF it_rulesaco-impac EQ 'W'.
icon = yellow.
ELSE.
icon = red.
ENDIF.
CLEAR it_rulesaco1.
REFRESH it_rulesaco1.
LOOP AT it_rulesaco WHERE upgru EQ it_rulesaco-upgru.
MOVE-CORRESPONDING it_rulesaco TO it_rulesaco1.
APPEND it_rulesaco1.
ENDLOOP.
CLEAR v_cntrule.
LOOP AT it_rulesaco WHERE upgru EQ it_rulesaco-upgru.
v_cntrule = v_cntrule + 1.
ENDLOOP.
ENDFORM. " get_inforule
&----
*& Form objna_count
&----
FORM objna_count .
CLEAR v_cntrule.
LOOP AT it_rulesaco1 WHERE upgru EQ it_rulesaco1-upgru
AND objna EQ it_rulesaco1-objna.
v_cntrule = v_cntrule + 1.
ENDLOOP.
ENDFORM. " objna_count
&----
*& Form top_of_page_rule
&----
text
----
FORM top_of_page_rule.
WRITE : 40(16) 'Unicode Analysis' COLOR 1,
/40(16) '****************',/,
40(16) 'Rule Wise Report'.
ENDFORM. "top_of_page_rule
Regards,
Anji
Message was edited by:
Anji Reddy Vangala
2007 Feb 23 10:40 AM
Hi,
here a short example to use a graph.
seach in se37 with graph* and find more possibilities.
DATA: BEGIN OF IGRAPH OCCURS 0,
TEXT(07),
VALUE LIKE MBEW-VERPR,
END OF IGRAPH.
*
IGRAPH-TEXT = '1. Wert'. IGRAPH-VALUE = 10. APPEND IGRAPH.
IGRAPH-TEXT = '2. Wert'. IGRAPH-VALUE = 11. APPEND IGRAPH.
IGRAPH-TEXT = '3. Wert'. IGRAPH-VALUE = 12. APPEND IGRAPH.
IGRAPH-TEXT = '4. Wert'. IGRAPH-VALUE = 13. APPEND IGRAPH.
IGRAPH-TEXT = '5. Wert'. IGRAPH-VALUE = 14. APPEND IGRAPH.
IGRAPH-TEXT = '6. Wert'. IGRAPH-VALUE = 15. APPEND IGRAPH.
IGRAPH-TEXT = '7. Wert'. IGRAPH-VALUE = 16. APPEND IGRAPH.
IGRAPH-TEXT = '8. Wert'. IGRAPH-VALUE = 17. APPEND IGRAPH.
IGRAPH-TEXT = '9. Wert'. IGRAPH-VALUE = 18. APPEND IGRAPH.
IGRAPH-TEXT = '10. Wert'. IGRAPH-VALUE = 19. APPEND IGRAPH.
IGRAPH-TEXT = '11. Wert'. IGRAPH-VALUE = 20. APPEND IGRAPH.
*
CALL FUNCTION 'GRAPH_3D'
EXPORTING
TITL = 'Muster'
VALT = 'GLD in EUR'
TABLES
DATA = IGRAPH.
Regards, Dieter
2007 Feb 23 10:49 AM
Hi,
Refer to the following code.Just copy & paste in a new program & observe the result.
DATA: BEGIN OF ITAB_DATA OCCURS 0,
DATANAME(15),
QUANTITY1 TYPE I,
QUANTITY2 TYPE I,
QUANTITY3 TYPE I,
END OF ITAB_DATA,
BEGIN OF ITAB_OPTIONS OCCURS 0,
OPTION(20),
END OF ITAB_OPTIONS.
ITAB_DATA-DATANAME = 'Electricity'.
ITAB_DATA-QUANTITY1 = 55.
ITAB_DATA-QUANTITY2 = 62.
ITAB_DATA-QUANTITY3 = 59.
APPEND ITAB_DATA.
ITAB_DATA-DATANAME = 'Gas'.
ITAB_DATA-QUANTITY1 = 35.
ITAB_DATA-QUANTITY2 = 52.
ITAB_DATA-QUANTITY3 = 44.
APPEND ITAB_DATA.
ITAB_DATA-DATANAME = 'Water'.
ITAB_DATA-QUANTITY1 = 18.
ITAB_DATA-QUANTITY2 = 22.
ITAB_DATA-QUANTITY3 = 19.
APPEND ITAB_DATA.
CALL FUNCTION 'GRAPH_MATRIX_3D'
EXPORTING
COL1 = 'Jan'
COL2 = 'Feb'
COL3 = 'Mar'
TITL = 'Utility Expenses in US$.'
TABLES
DATA = ITAB_DATA
OPTS = ITAB_OPTIONS
EXCEPTIONS
OTHERS = 1.
Hope this helps.
Reward if helpful.
Regards,
Sipra
2007 Feb 23 12:09 PM
Hi Sipra,
Your program is very helpful but ,I need Pie chart. can you send me some program of it?
Thanks & Regard.
Ankur Garg.
2007 Feb 23 1:23 PM
Hi Ankur,
Please refer this program
GFW_PROG_PIE.
This uses the controls to dicplay the pie chart.
Hope this helps you.
reward if useful.
Regards,
Saumya
| User | Count |
|---|---|
| 3 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 |