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

Refresh chart content

Former Member
0 Likes
1,328

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

1 ACCEPTED SOLUTION
Read only

dhruv_shah3
Active Contributor
0 Likes
1,146

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

5 REPLIES 5
Read only

dhruv_shah3
Active Contributor
0 Likes
1,147

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

Read only

0 Likes
1,146

Dhruv Shah

grat tool, but unfortunately we have 4.6C

Read only

Former Member
0 Likes
1,146

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

Read only

former_member770121
Participant
0 Likes
1,146

ur issue is resolved or not i also have change the color of bar ? kindly show output in screenshot .

kindly its urgent .

Read only

AnnePetteroe
Community Manager
Community Manager
1,146

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