‎2007 Sep 17 11:05 AM
Hi,
Is it possible to create a graphical structure format in the reports(classical and interactive)..
If possible plz say how it is possible
‎2007 Sep 17 11:08 AM
‎2007 Sep 17 11:09 AM
hi
good
report GRAPHICS_GUI_CE_DEMO.
global data
data: G_CE_CONTAINER type ref to CL_GUI_CUSTOM_CONTAINER.
data: G_CE_NEW_CONTAINER type ref to CL_GUI_CUSTOM_CONTAINER.
data: G_CE_VIEWER type ref to CL_GUI_CHART_ENGINE.
data: G_CE_VIEWER_NEW type ref to CL_GUI_CHART_ENGINE.
data: G_IXML type ref to IF_IXML.
data: G_IXML_SF type ref to IF_IXML_STREAM_FACTORY.
data: G_DESIGN_MODE type C.
data: G_VALUE_CHANGE type C.
data: G_SAVE_OKCODE like SY-UCOMM.
dynpro data
data: OKCODE like SY-UCOMM,
GT_SFLIGHT type table of SFLIGHT,
G_REPID like SY-REPID,
G_MAX type I value 100,
MYCONTAINER type SCRFNAME value 'NEW_CONTAINER',
reference to custom container: neccessary to bind ALV Control
CUSTOM_CONTAINER type ref to CL_GUI_CUSTOM_CONTAINER,
GRID1 type ref to CL_GUI_ALV_GRID.
*.........................................................
'x_save' contains a flag to control which kind of a layout the user
can save (see below).
'gs_layout' identifies a layout. It must contain
at least the report-id.
§ 1.Declare a structure of type DISVARIANT to identify a layout
and a variable to define the saving options for users.
data: X_SAVE, "for Parameter I_SAVE
GS_LAYOUT type DISVARIANT. "for parameter IS_VARIANT
event handler
class LCL_CE_VIEWER_EH definition.
public section.
methods ON_CLICK for event CLICK of CL_GUI_CHART_ENGINE
importing
ELEMENT SERIES POINT.
methods ON_VALUE_CHANGE for event VALUE_CHANGE of
CL_GUI_CHART_ENGINE
importing
SERIES POINT VALUE.
methods ON_PROPERTY_CHANGE for event PROPERTY_CHANGE of
CL_GUI_CHART_ENGINE
importing
ELEMENT NAME VALUE.
endclass. "lcl_ce_viewer_eh DEFINITION
data: G_CE_VIEWER_EH type ref to LCL_CE_VIEWER_EH.
data: G_CE_VIEWER_EH_NEW type ref to LCL_CE_VIEWER_EH.
entry point
start-of-selection.
*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
start-of-selection.
select * from SFLIGHT into table GT_SFLIGHT up to G_MAX rows.
*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
clear GS_LAYOUT.
create global objects
G_IXML = CL_IXML=>CREATE( ).
G_IXML_SF = G_IXML->CREATE_STREAM_FACTORY( ).
G_REPID = SY-REPID.
§ 2.At least field REPORT of this structure has to be filled!
GS_LAYOUT-REPORT = G_REPID.
X_SAVE = 'A'. "The user may save all types of a layout
call screen '100'.
ENDREPORT GRAPHICS_GUI_CE_DEMO.
*&----
*
*& Module STATUS_0100 OUTPUT
*&----
*
text
*----
*
module STATUS_0100 output.
data: L_IXML_DATA_DOC type ref to IF_IXML_DOCUMENT,
L_IXML_CUSTOM_DOC type ref to IF_IXML_DOCUMENT,
L_OSTREAM type ref to IF_IXML_OSTREAM,
L_XSTR type XSTRING.
set pf-status '100'.
if G_CE_CONTAINER is initial.
create object G_CE_CONTAINER
exporting
CONTAINER_NAME = 'CONTAINER'.
create object G_CE_VIEWER
exporting
PARENT = G_CE_CONTAINER.
create object G_CE_VIEWER_EH.
set handler G_CE_VIEWER_EH->ON_CLICK for G_CE_VIEWER.
set handler G_CE_VIEWER_EH->ON_VALUE_CHANGE for G_CE_VIEWER.
set handler G_CE_VIEWER_EH->ON_PROPERTY_CHANGE for G_CE_VIEWER.
perform CREATE_DATA_DEMO using L_IXML_DATA_DOC.
L_OSTREAM = G_IXML_SF->CREATE_OSTREAM_XSTRING( L_XSTR ).
call method L_IXML_DATA_DOC->RENDER
exporting
OSTREAM = L_OSTREAM.
G_CE_VIEWER->SET_DATA( XDATA = L_XSTR ).
clear L_XSTR.
perform CREATE_CUSTOM_DEMO using L_IXML_CUSTOM_DOC.
L_OSTREAM = G_IXML_SF->CREATE_OSTREAM_XSTRING( L_XSTR ).
call method L_IXML_CUSTOM_DOC->RENDER
exporting
OSTREAM = L_OSTREAM.
G_CE_VIEWER->SET_CUSTOMIZING( XDATA = L_XSTR ).
endif.
call method G_CE_VIEWER->RENDER.
if CUSTOM_CONTAINER is initial.
create a custom container control for our ALV Control
create object CUSTOM_CONTAINER
exporting
CONTAINER_NAME = MYCONTAINER
exceptions
CNTL_ERROR = 1
CNTL_SYSTEM_ERROR = 2
CREATE_ERROR = 3
LIFETIME_ERROR = 4
LIFETIME_DYNPRO_DYNPRO_LINK = 5.
if SY-SUBRC ne 0.
add your handling, for example
call function 'POPUP_TO_INFORM'
exporting
TITEL = G_REPID
TXT2 = SY-SUBRC
TXT1 = 'The control could not be created'(510).
endif.
create object GRID1
exporting I_PARENT = CUSTOM_CONTAINER.
§ 4.Transfer your structure and your variable using parameters
IS_VARIANT and I_SAVE of method set_table_for_first_display.
call method GRID1->SET_TABLE_FOR_FIRST_DISPLAY
exporting
I_STRUCTURE_NAME = 'SFLIGHT'
IS_VARIANT = GS_LAYOUT "&see below
I_SAVE = X_SAVE "&see below
I_DEFAULT = 'X'
changing
IT_OUTTAB = GT_SFLIGHT.
& If you leave out the these parameters, the menu beneath
the layout icon disappears.
endif.
endmodule. " STATUS_0100 OUTPUT
*&----
*
*& Module USER_COMMAND_0100 INPUT
*&----
*
text
*----
*
module USER_COMMAND_0100 input.
G_SAVE_OKCODE = OKCODE.
clear OKCODE.
case G_SAVE_OKCODE.
when 'DESIGN'.
perform TOGGLE_DESIGN_MODE.
when 'VALUE'.
perform TOGGLE_VALUE_CHANGE.
when 'SAVE'.
perform SAVE_CUSTOMIZING.
when 'PRINT'.
perform PRINT.
when 'EXIT'.
leave program.
when 'BACK'.
leave program.
endcase.
endmodule. " USER_COMMAND_0100 INPUT
*&----
*
*& IMPLEMENTATION
*&----
*
text
*----
*
class CL_ABAP_CHAR_UTILITIES definition load.
*&----
*
*& Form create_data_demo
*&----
*
text
*----
*
form CREATE_DATA_DEMO using P_IXML_DOC type ref to IF_IXML_DOCUMENT.
data: L_SIMPLECHARTDATA type ref to IF_IXML_ELEMENT,
L_CATEGORIES type ref to IF_IXML_ELEMENT,
L_SERIES type ref to IF_IXML_ELEMENT,
L_ELEMENT type ref to IF_IXML_ELEMENT,
L_ENCODING type ref to IF_IXML_ENCODING.
P_IXML_DOC = G_IXML->CREATE_DOCUMENT( ).
L_ENCODING = G_IXML->CREATE_ENCODING(
BYTE_ORDER = IF_IXML_ENCODING=>CO_LITTLE_ENDIAN
CHARACTER_SET = 'utf-8' ).
P_IXML_DOC->SET_ENCODING( L_ENCODING ).
L_SIMPLECHARTDATA = P_IXML_DOC->CREATE_SIMPLE_ELEMENT(
NAME = 'SimpleChartData' PARENT = P_IXML_DOC ).
L_CATEGORIES = P_IXML_DOC->CREATE_SIMPLE_ELEMENT(
NAME = 'Categories' PARENT = L_SIMPLECHARTDATA ).
L_ELEMENT = P_IXML_DOC->CREATE_SIMPLE_ELEMENT(
NAME = 'C' PARENT = L_CATEGORIES ).
L_ELEMENT->IF_IXML_NODE~SET_VALUE( '1st quarter' ).
L_ELEMENT = P_IXML_DOC->CREATE_SIMPLE_ELEMENT(
NAME = 'C' PARENT = L_CATEGORIES ).
L_ELEMENT->IF_IXML_NODE~SET_VALUE( '2nd quarter' ).
L_ELEMENT = P_IXML_DOC->CREATE_SIMPLE_ELEMENT(
NAME = 'C' PARENT = L_CATEGORIES ).
L_ELEMENT->IF_IXML_NODE~SET_VALUE( '3rd quarter' ).
L_ELEMENT = P_IXML_DOC->CREATE_SIMPLE_ELEMENT(
NAME = 'C' PARENT = L_CATEGORIES ).
L_ELEMENT->IF_IXML_NODE~SET_VALUE( '4th quarter' ).
L_SERIES = P_IXML_DOC->CREATE_SIMPLE_ELEMENT(
NAME = 'Series' PARENT = L_SIMPLECHARTDATA ).
L_SERIES->SET_ATTRIBUTE( NAME = 'label' VALUE = 'Coffee' ).
L_ELEMENT = P_IXML_DOC->CREATE_SIMPLE_ELEMENT(
NAME = 'S' PARENT = L_SERIES ).
L_ELEMENT->IF_IXML_NODE~SET_VALUE( '94' ).
L_ELEMENT = P_IXML_DOC->CREATE_SIMPLE_ELEMENT(
NAME = 'S' PARENT = L_SERIES ).
L_ELEMENT->IF_IXML_NODE~SET_VALUE( '110' ).
L_ELEMENT = P_IXML_DOC->CREATE_SIMPLE_ELEMENT(
NAME = 'S' PARENT = L_SERIES ).
L_ELEMENT->IF_IXML_NODE~SET_VALUE( '139' ).
L_ELEMENT = P_IXML_DOC->CREATE_SIMPLE_ELEMENT(
NAME = 'S' PARENT = L_SERIES ).
L_ELEMENT->IF_IXML_NODE~SET_VALUE( '192' ).
L_SERIES = P_IXML_DOC->CREATE_SIMPLE_ELEMENT(
NAME = 'Series' PARENT = L_SIMPLECHARTDATA ).
L_SERIES->SET_ATTRIBUTE( NAME = 'label' VALUE = 'Espresso' ).
L_ELEMENT = P_IXML_DOC->CREATE_SIMPLE_ELEMENT(
NAME = 'S' PARENT = L_SERIES ).
L_ELEMENT->IF_IXML_NODE~SET_VALUE( '35' ).
L_ELEMENT = P_IXML_DOC->CREATE_SIMPLE_ELEMENT(
NAME = 'S' PARENT = L_SERIES ).
L_ELEMENT->IF_IXML_NODE~SET_VALUE( '39' ).
L_ELEMENT = P_IXML_DOC->CREATE_SIMPLE_ELEMENT(
NAME = 'S' PARENT = L_SERIES ).
L_ELEMENT->IF_IXML_NODE~SET_VALUE( '38' ).
L_ELEMENT = P_IXML_DOC->CREATE_SIMPLE_ELEMENT(
NAME = 'S' PARENT = L_SERIES ).
L_ELEMENT->IF_IXML_NODE~SET_VALUE( '59' ).
endform. " create_data_demo
*&----
*
*& Form create_custom_demo
*&----
*
text
*----
*
form CREATE_CUSTOM_DEMO using P_IXML_DOC type ref to IF_IXML_DOCUMENT.
data: L_ROOT type ref to IF_IXML_ELEMENT,
L_GLOBALSETTINGS type ref to IF_IXML_ELEMENT,
L_DEFAULT type ref to IF_IXML_ELEMENT,
L_ELEMENTS type ref to IF_IXML_ELEMENT,
L_CHARTELEMENTS type ref to IF_IXML_ELEMENT,
L_TITLE type ref to IF_IXML_ELEMENT,
L_ELEMENT type ref to IF_IXML_ELEMENT,
L_ENCODING type ref to IF_IXML_ENCODING.
P_IXML_DOC = G_IXML->CREATE_DOCUMENT( ).
L_ENCODING = G_IXML->CREATE_ENCODING(
BYTE_ORDER = IF_IXML_ENCODING=>CO_LITTLE_ENDIAN
CHARACTER_SET = 'utf-8' ).
P_IXML_DOC->SET_ENCODING( L_ENCODING ).
L_ROOT = P_IXML_DOC->CREATE_SIMPLE_ELEMENT(
NAME = 'SAPChartCustomizing' PARENT = P_IXML_DOC ).
L_ROOT->SET_ATTRIBUTE( NAME = 'version' VALUE = '1.1' ).
L_GLOBALSETTINGS = P_IXML_DOC->CREATE_SIMPLE_ELEMENT(
NAME = 'GlobalSettings' PARENT = L_ROOT ).
L_ELEMENT = P_IXML_DOC->CREATE_SIMPLE_ELEMENT(
NAME = 'FileType' PARENT = L_GLOBALSETTINGS ).
L_ELEMENT->IF_IXML_NODE~SET_VALUE( 'PNG' ).
L_ELEMENT = P_IXML_DOC->CREATE_SIMPLE_ELEMENT(
NAME = 'Dimension' PARENT = L_GLOBALSETTINGS ).
L_ELEMENT->IF_IXML_NODE~SET_VALUE( 'PseudoThree' ).
L_ELEMENT = P_IXML_DOC->CREATE_SIMPLE_ELEMENT(
NAME = 'Width' PARENT = L_GLOBALSETTINGS ).
L_ELEMENT->IF_IXML_NODE~SET_VALUE( '640' ).
L_ELEMENT = P_IXML_DOC->CREATE_SIMPLE_ELEMENT(
NAME = 'Height' PARENT = L_GLOBALSETTINGS ).
L_ELEMENT->IF_IXML_NODE~SET_VALUE( '360' ).
L_DEFAULT = P_IXML_DOC->CREATE_SIMPLE_ELEMENT(
NAME = 'Defaults' PARENT = L_GLOBALSETTINGS ).
L_ELEMENT = P_IXML_DOC->CREATE_SIMPLE_ELEMENT(
NAME = 'FontFamily' PARENT = L_DEFAULT ).
L_ELEMENT->IF_IXML_NODE~SET_VALUE( 'Arial' ).
L_ELEMENTS = P_IXML_DOC->CREATE_SIMPLE_ELEMENT(
NAME = 'Elements' PARENT = L_ROOT ).
L_CHARTELEMENTS = P_IXML_DOC->CREATE_SIMPLE_ELEMENT(
NAME = 'ChartElements' PARENT = L_ELEMENTS ).
L_TITLE = P_IXML_DOC->CREATE_SIMPLE_ELEMENT(
NAME = 'Title' PARENT = L_CHARTELEMENTS ).
L_ELEMENT = P_IXML_DOC->CREATE_SIMPLE_ELEMENT(
NAME = 'Extension' PARENT = L_TITLE ).
L_ELEMENT->IF_IXML_NODE~SET_VALUE( 'href="sapevent:onclick?Title"' ).
L_ELEMENT = P_IXML_DOC->CREATE_SIMPLE_ELEMENT(
NAME = 'Caption' PARENT = L_TITLE ).
L_ELEMENT->IF_IXML_NODE~SET_VALUE( 'Caffeine Consumption' ).
endform. " create_custom_demo
*&----
*
*& Form toggle_design_mode
*&----
*
text
*----
*
form TOGGLE_DESIGN_MODE .
data: L_WIN_CHART type ref to CL_GUI_CHART_ENGINE_WIN.
catch system-exceptions MOVE_CAST_ERROR = 1.
L_WIN_CHART ?= G_CE_VIEWER->GET_CONTROL( ).
endcatch.
if SY-SUBRC is initial.
if G_DESIGN_MODE is initial.
G_DESIGN_MODE = 'X'.
else.
G_DESIGN_MODE = ' '.
endif.
L_WIN_CHART->SET_DESIGN_MODE( FLAG = G_DESIGN_MODE EVENT = 'X' ).
L_WIN_CHART->RESTRICT_CHART_TYPES( CHARTTYPES = 'Columns|Lines' ).
L_WIN_CHART->RESTRICT_PROPERTY_EVENTS( EVENTS = 'ChartType' ).
endif.
endform. " toggle_design_mode
*&----
*
*& Form toggle_value_change
*&----
*
text
*----
*
form TOGGLE_VALUE_CHANGE .
data: L_WIN_CHART type ref to CL_GUI_CHART_ENGINE_WIN.
catch system-exceptions MOVE_CAST_ERROR = 1.
L_WIN_CHART ?= G_CE_VIEWER->GET_CONTROL( ).
endcatch.
if SY-SUBRC is initial.
if G_VALUE_CHANGE is initial.
G_VALUE_CHANGE = 'X'.
L_WIN_CHART->ENABLE_VALUE_CHANGE( ).
else.
G_VALUE_CHANGE = ' '.
L_WIN_CHART->DISABLE_VALUE_CHANGE( ).
endif.
endif.
endform. " toggle_value_change
*&----
*
*& Form save_customizing
*&----
*
text
*----
*
form SAVE_CUSTOMIZING .
data: L_XML_CUSTOMIZING type W3HTMLTABTYPE,
L_WIN_CHART type ref to CL_GUI_CHART_ENGINE_WIN,
L_FILENAME type STRING,
L_FILEPATH type STRING,
L_FILESIZE type I,
L_PATH type STRING.
catch system-exceptions MOVE_CAST_ERROR = 1.
L_WIN_CHART ?= G_CE_VIEWER->GET_CONTROL( ).
endcatch.
if SY-SUBRC is initial.
L_WIN_CHART->GET_CUSTOMIZING(
importing
DATA_TABLE = L_XML_CUSTOMIZING
).
describe table L_XML_CUSTOMIZING lines L_FILESIZE.
multiply L_FILESIZE by 255.
L_FILENAME = 'customizing.xml'.
call method CL_GUI_FRONTEND_SERVICES=>FILE_SAVE_DIALOG
exporting
DEFAULT_FILE_NAME = L_FILENAME
changing
FILENAME = L_FILENAME
PATH = L_PATH
FULLPATH = L_FILEPATH.
if not L_FILEPATH is initial.
call method CL_GUI_FRONTEND_SERVICES=>GUI_DOWNLOAD
exporting
FILETYPE = 'BIN'
FILENAME = L_FILEPATH
BIN_FILESIZE = L_FILESIZE
changing
DATA_TAB = L_XML_CUSTOMIZING
exceptions
FILE_WRITE_ERROR = 1
others = 22.
endif.
endif.
endform. " save_customizing
*&----
*
*& Form print
*&----
*
text
*----
*
form PRINT .
data: L_WIN_CHART type ref to CL_GUI_CHART_ENGINE_WIN,
L_S_PRINT_PARAMETERS type PRI_PARAMS.
call function 'GET_PRINT_PARAMETERS'
exporting
DESTINATION = 'LOCL'
MODE = 'CURRENT'
NO_DIALOG = ''
importing
OUT_PARAMETERS = L_S_PRINT_PARAMETERS
VALID = L_VALID
exceptions
ARCHIVE_INFO_NOT_FOUND = 1
INVALID_PRINT_PARAMS = 2
INVALID_ARCHIVE_PARAMS = 3
others = 4.
if SY-SUBRC <> 0.
BREAK USCGXS22.
endif.
catch system-exceptions MOVE_CAST_ERROR = 1.
L_WIN_CHART ?= G_CE_VIEWER->GET_CONTROL( ).
endcatch.
if SY-SUBRC is initial.
new-page print on parameters L_S_PRINT_PARAMETERS no dialog.
L_WIN_CHART->PRINT( ).
new-page print off.
endif.
endform. " print
*&----
*
*& Clas lcl_ce_viewer_eh
*&----
*
text
*----
*
class LCL_CE_VIEWER_EH implementation.
method ON_CLICK.
data: L_MSG type STRING,
L_SERIES type STRING,
L_POINT type STRING.
L_SERIES = SERIES.
L_POINT = POINT.
concatenate 'Element clicked:'(M01) ELEMENT
'Series:'(T01) L_SERIES
'Point:'(T02) L_POINT
into L_MSG separated by SPACE.
message L_MSG type 'S'.
endmethod. "on_click
method ON_VALUE_CHANGE.
data: L_MSG type STRING,
L_SERIES type STRING,
L_POINT type STRING,
L_VALUE type STRING.
L_SERIES = SERIES.
L_POINT = POINT.
L_VALUE = VALUE.
concatenate 'Value changed:'(M02)
'Series:'(T01) L_SERIES
'Point:'(T02) L_POINT
'Value:'(T03) L_VALUE
into L_MSG separated by SPACE.
message L_MSG type 'S'.
endmethod. "on_value_change
method ON_PROPERTY_CHANGE.
data: L_MSG type STRING.
concatenate 'Property changed:'(M03)
'Element:'(T04) ELEMENT
'Name:'(T05) NAME
'Value:'(T03) VALUE
into L_MSG separated by SPACE.
message L_MSG type 'S'.
endmethod. "on_property_change
endclass. "lcl_ce_viewer_eh IMPLEMENTATION
thanks
mrutyun^
‎2007 Sep 17 11:09 AM
HI,
if you are talking about something like the layouts we create in alv reports then i dont think it is possible.....but you can still format your report using
uline,sy-vline and using colors with write statemnt.
reward if helpful
vivekanand