‎2008 Feb 26 11:56 AM
Hi there. I've got a container and button in the screen.
After launching screen graphic (GFW_DC_PRES) is loaded into container.
Now after pressing button I'd like to change container's content. Now I'd like to put there chart with function
CALL FUNCTION 'GFW_PRES_SHOW'
EXPORTING
CONTAINER = 'C_CHART01'
PRESENTATION_TYPE = GFW_PRESTYPE_LINES
TABLES
VALUES = VALUES
COLUMN_TEXTS = COLUMN_TEXTS
EXCEPTIONS
ERROR_OCCURRED = 1
OTHERS = 2.
What should I do now to refresh container's content? Which method should I use ?
‎2008 Feb 26 12:31 PM
Hello there,
What kind of container are you using?
From the "C" prefix I take it it is a custom container perhaps?
tks
Christiaan
‎2008 Feb 26 12:31 PM
Hello there,
What kind of container are you using?
From the "C" prefix I take it it is a custom container perhaps?
tks
Christiaan
‎2008 Feb 26 2:02 PM
Christiaan Pistorius
custom_container type ref to cl_gui_custom_container .
It's name in the screen - 'C_CHART01'
And the first graphic is a chart too. I access it like:
CALL METHOD GP_INST->IF_GRAPHIC_PROXY~INIT
EXPORTING parent = custom_container
DC = DC_INST
PROD_ID = CL_GUI_GP_PRES=>CO_PROD_CHART
FORCE_PROD = GFW_TRUE
IMPORTING RETVAL = RETVAL.
That part of code I'm writing about is as below:
*&---------------------------------------------------------------------*
*& Module STATUS_1010 OUTPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE STATUS_1010 OUTPUT.
* SET PF-STATUS 'xxxxxxxx'.
* SET TITLEBAR 'xxx'.
xmatkl = stromline-matkl .
IF NOT ( xmatkl IS INITIAL ) .
PERFORM strom_select USING xmatkl .
IF ( f_chart = '1' ) .
PERFORM init_chart_1 .
ELSEIF ( f_chart = '2' ) .
PERFORM init_chart_2 .
ENDIF .
PERFORM show_grid USING xmatkl .
ENDIF .
ENDMODULE. " STATUS_1010 OUTPUT
*&---------------------------------------------------------------------*
*& Module USER_COMMAND_1010 INPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE USER_COMMAND_1010 INPUT.
OK_CODE = SY-UCOMM.
* activate event analysis of object-oriented Control Framework
CALL METHOD CL_GUI_CFW=>DISPATCH.
* handle other events
CASE OK_CODE.
WHEN 'BACK'.
CALL METHOD GP_INST->IF_GRAPHIC_PROXY~FREE
IMPORTING RETVAL = RETVAL.
LEAVE PROGRAM.
WHEN 'EXIT'.
IF NOT ( gp_inst IS INITIAL ) .
CALL METHOD GP_INST->IF_GRAPHIC_PROXY~FREE
IMPORTING RETVAL = RETVAL.
ENDIF .
LEAVE PROGRAM.
WHEN 'F_CHANGE_CHART' .
IF ( f_chart = '1' ) .
f_chart = '2' .
ELSEIF ( f_chart = '2' ) .
f_chart = '1' .
ENDIF .
ENDCASE.
IF NOT ( custom_container IS INITIAL ) .
* CALL METHOD custom_container->free .
CALL METHOD GP_INST->IF_GRAPHIC_PROXY~ACTIVATE
IMPORTING RETVAL = RETVAL .
ENDIF .
ENDMODULE. " USER_COMMAND_1010 INPUT
*&---------------------------------------------------------------------*
*& Form init_chart_1
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM init_chart_1.
RETVAL = CL_GFW=>OK.
* IF FIRSTCALL IS INITIAL.
* create, initialize and fill data container
CREATE OBJECT DC_INST.
DC_MANAGE = DC_INST.
CALL METHOD DC_MANAGE->INIT IMPORTING ID = MY_ID_AT_DC
RETVAL = RETVAL.
IF RETVAL <> CL_GFW=>OK.
CALL METHOD CL_GFW=>SHOW_MSG EXPORTING MSGNO = RETVAL.
CLEAR DC_INST.
CLEAR DC_MANAGE.
ELSE.
PERFORM FILL_DC CHANGING RETVAL.
IF RETVAL <> CL_GFW=>OK.
CALL METHOD CL_GFW=>SHOW_MSG EXPORTING MSGNO = RETVAL.
ELSE.
* create a container on the dynpro
IF ( custom_container IS INITIAL ) .
create object custom_container
exporting container_name = 'C_CHART01'.
ENDIF .
* create, initialize and activate graphics proxy
CREATE OBJECT GP_INST.
CALL METHOD GP_INST->IF_GRAPHIC_PROXY~INIT
EXPORTING parent = custom_container
DC = DC_INST
PROD_ID = CL_GUI_GP_PRES=>CO_PROD_CHART
FORCE_PROD = GFW_TRUE
IMPORTING RETVAL = RETVAL.
IF RETVAL = CL_GFW=>OK.
* set dc attributes
CALL METHOD GP_INST->SET_DC_NAMES
EXPORTING
OBJ_ID = 'OBJID'
DIM1 = 'X_VAL'
DIM2 = 'Y_VAL'
GRP_ID = 'GRPID'
IMPORTING RETVAL = RETVAL.
ENDIF. "// set dc attributes
* set customizing objects
IF RETVAL = CL_GFW=>OK.
perform set_customizing.
ENDIF.
IF RETVAL = CL_GFW=>OK.
CALL METHOD GP_INST->IF_GRAPHIC_PROXY~ACTIVATE
IMPORTING RETVAL = RETVAL.
ENDIF.
IF RETVAL <> CL_GFW=>OK.
CALL METHOD CL_GFW=>SHOW_MSG EXPORTING MSGNO = RETVAL.
ENDIF.
ENDIF. "//fill_dc ok
* FIRSTCALL = 1.
ENDIF. "//create and init dc ok
* ENDIF.
* **** distribute changes (to all subscribed graphics proxies)
IF NOT DC_MANAGE IS INITIAL.
CALL METHOD DC_MANAGE->DISTRIBUTE_CHANGES
IMPORTING RETVAL = RETVAL.
IF RETVAL <> CL_GFW=>OK.
CALL METHOD CL_GFW=>SHOW_MSG EXPORTING MSGNO = RETVAL.
ENDIF.
ENDIF.
ENDFORM. " init_chart_1
*&---------------------------------------------------------------------*
*& Form init_chart_2
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM init_chart_2.
IF NOT ( custom_container IS INITIAL ) .
CALL METHOD custom_container->free .
ENDIF .
REFRESH VALUES.
REFRESH COLUMN_TEXTS.
VALUES-ROWTXT = 'Salary'.
VALUES-VAL1 = 50000.
VALUES-VAL2 = 51000.
APPEND VALUES.
VALUES-ROWTXT = 'Life cost'.
VALUES-VAL1 = 49000.
VALUES-VAL2 = 51200.
APPEND VALUES.
COLUMN_TEXTS-COLTXT = '2003'.
APPEND COLUMN_TEXTS.
COLUMN_TEXTS-COLTXT = '2004'.
APPEND COLUMN_TEXTS.
CALL FUNCTION 'GFW_PRES_SHOW'
EXPORTING
CONTAINER = 'C_CHART01'
PRESENTATION_TYPE = GFW_PRESTYPE_LINES
TABLES
VALUES = VALUES
COLUMN_TEXTS = COLUMN_TEXTS
EXCEPTIONS
ERROR_OCCURRED = 1
OTHERS = 2.
* CALL METHOD GP_INST->IF_GRAPHIC_PROXY~ACTIVATE
* IMPORTING RETVAL = RETVAL .
ENDFORM. " init_chart_2
*&---------------------------------------------------------------------*
*& Form FILL_DC
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM FILL_DC CHANGING VALUE(RETVAL) TYPE SYMSGNO.
DATA: OBJ TYPE GFWDCPRES.
DATA: intint TYPE i .
DATA: charint(2) TYPE c .
DATA: stab01_rows TYPE i .
* fill dc with initial data
IF DC_MANAGE IS INITIAL.
RETVAL = CL_GFW=>E_GP_DCHANDLE.
EXIT.
ENDIF.
RETVAL = CL_GFW=>OK.
DESCRIBE TABLE stab01 LINES stab01_rows .
intint = 1 .
LOOP AT stab01 .
charint = intint .
obj-objid = charint .
obj-grpid = co_gfw_prog_series1 .
obj-x_val = stab01-price_l .
obj-y_val = stab01-menge .
call method dc_inst->set_obj_values
exporting id = my_id_at_dc
obj = obj
importing retval = retval.
if retval <> cl_gfw=>ok. exit. endif.
intint = intint + 1 .
ENDLOOP .
* this last points only defines the right border of the last
* histogram class (i.e. you can omit an y_val)
charint = intint .
obj-objid = charint .
obj-grpid = co_gfw_prog_series1.
obj-x_val = stab01-price_h .
clear obj-y_val.
call method dc_inst->set_obj_values
exporting id = my_id_at_dc
obj = obj
importing retval = retval.
if retval <> cl_gfw=>ok. exit. endif.
ENDFORM. " FILL_DC
*&---------------------------------------------------------------------*
*& Form SET_CUSTOMIZING
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM SET_CUSTOMIZING.
data:
BUNDLE_DRAWING TYPE REF TO CL_CU_DRAWING_AREA,
BUNDLE_SCALE1_X TYPE REF TO CL_CU_SCALE,
BUNDLE_DISPLAY TYPE REF TO CL_CU_DISPLAY_CONTEXT,
BUNDLE_VALUES1 TYPE REF TO CL_CU_VALUES,
bundle_grid type ref to cl_cu_grid.
* create default display context
CREATE OBJECT BUNDLE_DISPLAY EXPORTING INSTANCE_ID = 'GFWHI'.
* remove border line
CALL METHOD BUNDLE_DISPLAY->IF_CUSTOMIZING~SET
EXPORTING ATTR_ID = CL_CU_DISPLAY_CONTEXT=>CO_bl_STYLE
VALUE = 1. " line
* tell the proxy where to use the bundle
CALL METHOD GP_INST->IF_GRAPHIC_PROXY~ADD_CU_BUNDLE
EXPORTING PORT = IF_GRAPHIC_PROXY=>CO_PORT_DIAGRAM
BUNDLE = BUNDLE_DISPLAY
IMPORTING RETVAL = RETVAL.
* drawing area
CREATE OBJECT BUNDLE_DRAWING EXPORTING INSTANCE_ID = 'GFWHI'.
* set the title of the graphic
CALL METHOD BUNDLE_DRAWING->IF_CUSTOMIZING~SET
EXPORTING ATTR_ID = CL_CU_DRAWING_AREA=>CO_TITLE
VALUE = xmatkl.
* tell the proxy where to use the bundle
CALL METHOD GP_INST->IF_GRAPHIC_PROXY~ADD_CU_BUNDLE
EXPORTING PORT = IF_GRAPHIC_PROXY=>CO_PORT_CHART
BUNDLE = BUNDLE_DRAWING
IMPORTING RETVAL = RETVAL.
* values (group 1)
CREATE OBJECT BUNDLE_VALUES1 EXPORTING INSTANCE_ID = 'GFWHI1'.
* prepare display context for values
CREATE OBJECT BUNDLE_DISPLAY EXPORTING INSTANCE_ID = 'dummy'.
* set line style
CALL METHOD BUNDLE_DISPLAY->IF_CUSTOMIZING~SET
EXPORTING ATTR_ID = CL_CU_DISPLAY_CONTEXT=>CO_BL_style
VALUE = 2. " line
* set color of data series
CALL METHOD BUNDLE_DISPLAY->IF_CUSTOMIZING~SET
EXPORTING ATTR_ID = CL_CU_DISPLAY_CONTEXT=>CO_BG_CLR_PLT_ID
VALUE = 6. " green
* copy display context into values
CALL METHOD BUNDLE_VALUES1->IF_CUSTOMIZING~SET
EXPORTING ATTR_ID = CL_CU_VALUES=>CO_CURVE_CONTEXT
VALUE = BUNDLE_DISPLAY.
* set chart type
CALL METHOD BUNDLE_VALUES1->IF_CUSTOMIZING~SET
EXPORTING ATTR_ID = CL_CU_VALUES=>CO_STYLE
VALUE = 89. " HistogramByRectStdDev
* tell the proxy where to use the bundle
CALL METHOD GP_INST->IF_GRAPHIC_PROXY~ADD_CU_BUNDLE
EXPORTING PORT = IF_GRAPHIC_PROXY=>CO_PORT_CHART
KEY = co_gfw_prog_series1
BUNDLE = BUNDLE_VALUES1
IMPORTING RETVAL = RETVAL.
* scale of primary x-axis
CREATE OBJECT BUNDLE_SCALE1_X EXPORTING INSTANCE_ID = 'GFWHI_X1'.
* prepare display context for scale
CREATE OBJECT BUNDLE_DISPLAY EXPORTING INSTANCE_ID = 'dummy'.
* set orientation of labels
CALL METHOD BUNDLE_DISPLAY->IF_CUSTOMIZING~SET
EXPORTING ATTR_ID = CL_CU_DISPLAY_CONTEXT=>CO_TF_ORIENTATION
VALUE = 2. " label X position
* copy display context into scale
CALL METHOD BUNDLE_scale1_x->IF_CUSTOMIZING~SET
EXPORTING ATTR_ID = CL_CU_SCALE=>CO_DISPLAY_CONTEXT
VALUE = BUNDLE_DISPLAY.
* tell the proxy where to use the bundle
CALL METHOD GP_INST->IF_GRAPHIC_PROXY~ADD_CU_BUNDLE
EXPORTING PORT = IF_GRAPHIC_PROXY=>CO_PORT_CHART_X_PRIM_AXIS
BUNDLE = BUNDLE_SCALE1_X
IMPORTING RETVAL = RETVAL.
* grid lines (of primary x- and y-axis) are set to invisible
CREATE OBJECT bundle_grid EXPORTING INSTANCE_ID = 'GFWHI'.
* prepare display context for scale
CREATE OBJECT BUNDLE_DISPLAY EXPORTING INSTANCE_ID = 'dummy'.
* disable grid lines
CALL METHOD BUNDLE_DISPLAY->IF_CUSTOMIZING~SET
EXPORTING ATTR_ID = CL_CU_DISPLAY_CONTEXT=>co_visibility
VALUE = gfw_false.
* copy display context into grid (for major and minor lines)
CALL METHOD bundle_grid->IF_CUSTOMIZING~SET
EXPORTING ATTR_ID = cl_cu_grid=>co_major_context
VALUE = BUNDLE_DISPLAY.
CALL METHOD bundle_grid->IF_CUSTOMIZING~SET
EXPORTING ATTR_ID = cl_cu_grid=>co_minor_context
VALUE = BUNDLE_DISPLAY.
* tell the proxy where to use the bundle
CALL METHOD GP_INST->IF_GRAPHIC_PROXY~ADD_CU_BUNDLE
EXPORTING PORT = IF_GRAPHIC_PROXY=>CO_PORT_CHART_Y_PRIM_AXIS
BUNDLE = bundle_grid
IMPORTING RETVAL = RETVAL.
CALL METHOD GP_INST->IF_GRAPHIC_PROXY~ADD_CU_BUNDLE
EXPORTING PORT = IF_GRAPHIC_PROXY=>CO_PORT_CHART_X_PRIM_AXIS
BUNDLE = bundle_grid
IMPORTING RETVAL = RETVAL.
ENDFORM. " SET_CUSTOMIZING
Edited by: Piotr Wojciechowski on Feb 26, 2008 3:27 PM