‎2008 Mar 18 12:50 PM
Hi there. I'm really confused about ABAP charts so maybe You could help me in that topic. I've got a code as below. Problem is that when I want to make a test ( PERFORM refresh_chart . - just to change 1 bar height) when I call
CALL METHOD wGP_INST->IF_GRAPHIC_PROXY~ACTIVATE
IMPORTING RETVAL = RETVAL .
the chart content is disappearing Please give me some tip what could be wrong? Greetings.
*&---------------------------------------------------------------------*
*& Module STATUS_1020 OUTPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE STATUS_1020 OUTPUT.
PERFORM draw_chart .
ENDMODULE. " STATUS_1020 OUTPUT
*&---------------------------------------------------------------------*
*& Module USER_COMMAND_1020 INPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
PERFORM refresh_chart .
ENDMODULE. " USER_COMMAND_1020 INPUT
*&---------------------------------------------------------------------*
*& Form draw_chart
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM draw_chart.
IF ( wcustom_container IS INITIAL ) .
RETVAL = CL_GFW=>OK.
* IF FIRSTCALL IS INITIAL.
* create, initialize and fill data container
CREATE OBJECT wDC_INST.
wDC_MANAGE = wDC_INST.
CALL METHOD wDC_MANAGE->INIT IMPORTING ID = wMY_ID_AT_DC
RETVAL = RETVAL.
IF RETVAL <> CL_GFW=>OK.
CALL METHOD CL_GFW=>SHOW_MSG EXPORTING MSGNO = RETVAL.
CLEAR wDC_INST.
CLEAR wDC_MANAGE.
ELSE.
PERFORM wFILL_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 ( wcustom_container IS INITIAL ) .
create object wcustom_container
exporting container_name = 'C_WCHART01'.
ENDIF .
* create, initialize and activate graphics proxy
CREATE OBJECT wGP_INST.
CALL METHOD wGP_INST->IF_GRAPHIC_PROXY~INIT
EXPORTING parent = wcustom_container
DC = wDC_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 wGP_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 wset_customizing.
ENDIF.
IF RETVAL = CL_GFW=>OK.
CALL METHOD wGP_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 wDC_MANAGE IS INITIAL.
CALL METHOD wDC_MANAGE->DISTRIBUTE_CHANGES
IMPORTING RETVAL = RETVAL.
IF RETVAL <> CL_GFW=>OK.
CALL METHOD CL_GFW=>SHOW_MSG EXPORTING MSGNO = RETVAL.
ENDIF.
ENDIF.
ELSE .
PERFORM refresh_chart .
ENDIF .
ENDFORM. " draw_chart
*&---------------------------------------------------------------------*
*& Form wFILL_DC
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* <--P_RETVAL text
*----------------------------------------------------------------------*
FORM wFILL_DC CHANGING P_RETVAL.
DATA: OBJ TYPE GFWDCPRES.
DATA: intint TYPE i .
DATA: charint(2) TYPE c .
DATA: stab01_rows TYPE i .
DATA: wpitab_ LIKE LINE OF wpitab .
DATA: idx_ LIKE sy-tabix .
DATA: dev TYPE i .
* fill dc with initial data
IF wDC_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 wpitab .
idx_ = sy-tabix + 1 .
READ TABLE wpitab INDEX idx_ INTO wpitab_ .
charint = intint .
obj-objid = charint .
obj-grpid = co_gfw_prog_series1 .
obj-x_val = wpitab-price_l .
obj-y_val = wpitab-fmenge .
call method wDC_INST->set_obj_values
exporting id = wMY_ID_AT_DC
obj = obj
importing retval = retval.
if retval <> cl_gfw=>ok. exit. endif.
dev = wpitab_-price_l - wpitab-price_h .
IF ( dev > 1 ) .
intint = intint + 1 .
charint = intint .
obj-objid = charint .
obj-grpid = co_gfw_prog_series1 .
obj-x_val = wpitab-price_h .
obj-y_val = 0 .
call method wDC_INST->set_obj_values
exporting id = wMY_ID_AT_DC
obj = obj
importing retval = retval.
if retval <> cl_gfw=>ok. exit. endif.
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 = wpitab-price_h .
clear obj-y_val.
call method wdc_inst->set_obj_values
exporting id = wmy_id_at_dc
obj = obj
importing retval = retval.
if retval <> cl_gfw=>ok. exit. endif.
ENDFORM. " wFILL_DC
*&---------------------------------------------------------------------*
*& Form wset_customizing
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM wset_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 wGP_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
DATA: tmp_text LIKE t023t-wgbez60 .
DATA: desc LIKE t023t-wgbez60 .
CLEAR tmp_text . CLEAR desc .
SELECT SINGLE wgbez60 FROM t023t INTO tmp_text WHERE matkl = xmatkl .
CONCATENATE xmatkl '-' tmp_text INTO desc SEPARATED BY SPACE .
CALL METHOD BUNDLE_DRAWING->IF_CUSTOMIZING~SET
EXPORTING ATTR_ID = CL_CU_DRAWING_AREA=>CO_TITLE
VALUE = desc .
* tell the proxy where to use the bundle
CALL METHOD wGP_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 wGP_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 wGP_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 wGP_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 wGP_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. " wset_customizing
*&---------------------------------------------------------------------*
*& Form refresh_chart
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM refresh_chart.
DATA: OBJ TYPE GFWDCPRES.
* DATA: widx TYPE i .
* DATA: wstr(2) TYPE c .
CALL METHOD CL_GUI_CFW=>DISPATCH .
IF NOT wGP_INST IS INITIAL .
* LOOP AT wpitab .
* OBJ-OBJID = wpitab-graphid .
* OBJ-GRPID = co_gfw_prog_series1 .
* OBJ-X_VAL = wpitab-price_l .
* OBJ-Y_VAL = wpitab-fmenge .
OBJ-OBJID = '1' .
OBJ-GRPID = co_gfw_prog_series1 .
OBJ-X_VAL = 0 .
OBJ-Y_VAL = 100 .
CALL METHOD DC_INST->SET_OBJ_VALUES
EXPORTING ID = wMY_ID_AT_DC
KEY_VALUE = OBJ-OBJID
OBJ = OBJ .
CALL METHOD wGP_INST->IF_GRAPHIC_PROXY~ACTIVATE
IMPORTING RETVAL = RETVAL .
* ENDLOOP .
ENDIF .
* IF NOT wDC_MANAGE IS INITIAL.
* CALL METHOD wDC_MANAGE->DISTRIBUTE_CHANGES
* IMPORTING RETVAL = RETVAL.
* IF RETVAL <> CL_GFW=>OK.
* CALL METHOD CL_GFW=>SHOW_MSG EXPORTING MSGNO = RETVAL.
* ENDIF.
* ENDIF.
ENDFORM. " refresh_chart
‎2008 Mar 18 12:56 PM
Hi,
[This might help you|https://www.sdn.sap.com/irj/sdn/weblogs?blog=/pub/wlg/2967] [original link is broken] [original link is broken] [original link is broken];
Regards,
Dhruv Shah
‎2008 Mar 18 12:56 PM
Hi,
[This might help you|https://www.sdn.sap.com/irj/sdn/weblogs?blog=/pub/wlg/2967] [original link is broken] [original link is broken] [original link is broken];
Regards,
Dhruv Shah
‎2008 Mar 21 10:55 AM
‎2008 Mar 18 1:15 PM
Hi Piotr,
Kindly have the program GFW_DEMO_PRES as a reference ..
Also please mail me ur entire code to my MAIL ID : <REMOVED BY MODERATOR>
I will try my best from my side.
Regards
Rose
Edited by: Alvaro Tejada Galindo on Mar 18, 2008 6:32 PM
‎2023 Aug 31 5:34 AM
ur issue is resolved or not i also have change the color of bar ? kindly show output in screenshot .
kindly its urgent .
‎2023 Aug 31 7:48 AM
Hello Haya,
While we're happy that you've come to SAP Community to get an answer to your question, you posted your question as an answer in an old thread. Posting in older threads is not the best way to get guidance.
If you're looking for help, you should ask a new question: https://answers.sap.com/questions/ask.html.
Kind regards,
Anne