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

Accessing chart values

Former Member
0 Likes
473

Hi. I've got a huge problems with ABAP charts. There's a demo programm GFW_PROG_GET_CU_BUNDLE of which copy I made. There's a button change_customizing in the screen.

When You click that colors of chart bars will be changed. The chart label is changing too. The subprogram that stands behind that action is CHANGE_CUSTOMIZING


*&---------------------------------------------------------------------*
*&      Form  CHANGE_CUSTOMIZING
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM CHANGE_CUSTOMIZING.
  DATA: cuobj          TYPE REF TO IF_CUSTOMIZING,
        BUNDLE_DISPLAY TYPE REF TO CL_CU_DISPLAY_CONTEXT,
        title          TYPE GFWLABEL,
        color          TYPE I.

* get customizing object for drawing area
  CALL METHOD GP_INST->IF_GRAPHIC_PROXY~GET_CU_BUNDLE
    EXPORTING PORT        = IF_GRAPHIC_PROXY=>CO_PORT_CHART
              BUNDLE_TYPE = CL_CU=>CO_CLSID_DRAWING_AREA
    IMPORTING BUNDLE      = cuobj.
* toggle title
  if not cuobj is initial.
*   get current title
    CALL METHOD cuobj->GET
      EXPORTING ATTR_ID = CL_CU_DRAWING_AREA=>CO_TITLE
      IMPORTING VALUE   = title.
    if title = CO_GFW_PROG_TITLE1.
      title = CO_GFW_PROG_TITLE2.
    else.
      title = CO_GFW_PROG_TITLE1.
    endif.
*   set new title
    CALL METHOD cuobj->SET
      EXPORTING ATTR_ID = CL_CU_DRAWING_AREA=>CO_TITLE
                VALUE   = title.
  endif.

* get customizing object for value
  CALL METHOD GP_INST->IF_GRAPHIC_PROXY~GET_CU_BUNDLE
    EXPORTING PORT        = IF_GRAPHIC_PROXY=>CO_PORT_CHART
              KEY         = co_gfw_prog_series1
              BUNDLE_TYPE = CL_CU=>CO_CLSID_VALUES
    IMPORTING BUNDLE      = cuobj.
  if not cuobj is initial.
*   get display context
    CALL METHOD cuobj->GET
      EXPORTING ATTR_ID = CL_CU_VALUES=>CO_CURVE_CONTEXT
      IMPORTING VALUE   = bundle_display.
*   toggle color
    if not bundle_display is initial.
*     get current color
      call method bundle_display->if_customizing~get
        EXPORTING ATTR_ID = CL_CU_DISPLAY_CONTEXT=>co_bg_clr_plt_id
        IMPORTING VALUE   = color.
      if color = 5.
        color = 8.
      else.
        color = 5.
      endif.
*     set new color
      call method bundle_display->if_customizing~set
        EXPORTING ATTR_ID = CL_CU_DISPLAY_CONTEXT=>co_bg_clr_plt_id
                  VALUE   = color.
      call method cuobj->set
       EXPORTING ATTR_ID = CL_CU_VALUES=>CO_CURVE_CONTEXT
                 VALUE    = bundle_display.
    endif.
  endif.

ENDFORM.                    " CHANGE_CUSTOMIZING

And now my problem is: how should I modify that Form to change bar's height too (that is update source data for that chart). I see accessing to chart component is done like that:


*     set new color
      call method bundle_display->if_customizing~set
        EXPORTING ATTR_ID = CL_CU_DISPLAY_CONTEXT=>co_bg_clr_plt_id
                  VALUE   = color.

and what should I do to have access to the Y dimension value of each chart bar?

I just want to achieve such effect when user change some values in the screen - the chart will fit new data automatically .

I'd be very thankful for help . Greetings . P

1 ACCEPTED SOLUTION
Read only

kai_gutenkunst
Product and Topic Expert
Product and Topic Expert
0 Likes
397

Hi,

changing the customizing is definitely the wrong direction to go.

You have to change the content of the data container instead!

Run the demo report GFW_DEMO_PRES and push the graphics button on the right hand side to enable the chart. Then change a number within the table and press return. In debugging mode you will see that the modified table cell is written to the GFW data container (see MODIFIED_TAB_DC_100 INPUT).

Regards, Kai

1 REPLY 1
Read only

kai_gutenkunst
Product and Topic Expert
Product and Topic Expert
0 Likes
398

Hi,

changing the customizing is definitely the wrong direction to go.

You have to change the content of the data container instead!

Run the demo report GFW_DEMO_PRES and push the graphics button on the right hand side to enable the chart. Then change a number within the table and press return. In debugging mode you will see that the modified table cell is written to the GFW data container (see MODIFIED_TAB_DC_100 INPUT).

Regards, Kai