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 container's content

Former Member
0 Likes
1,857

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 ?

1 ACCEPTED SOLUTION
Read only

Former Member
0 Likes
797

Hello there,

What kind of container are you using?

From the "C" prefix I take it it is a custom container perhaps?

tks

Christiaan

2 REPLIES 2
Read only

Former Member
0 Likes
798

Hello there,

What kind of container are you using?

From the "C" prefix I take it it is a custom container perhaps?

tks

Christiaan

Read only

0 Likes
797

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