Application Development and Automation Discussions
Join the discussions or start your own on all things application development, including tools and APIs, programming models, and keeping your skills sharp.
cancel
Showing results for 
Search instead for 
Did you mean: 
Read only

Reports

Former Member
0 Likes
570

Hi,

Is it possible to create a graphical structure format in the reports(classical and interactive)..

If possible plz say how it is possible

3 REPLIES 3
Read only

Former Member
0 Likes
482

Hi!

Maybe this is what you are looking for.

Regards

Tamá

Read only

Former Member
0 Likes
482

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^

Read only

Former Member
0 Likes
482

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