3 Replies Latest reply: Feb 27, 2012 4:21 PM by Tunahan ÜNAL RSS

Is it possible to display a dynpro in a container?

Hendrik Gedicke
Currently Being Moderated

Hey guys,

 

in the SAP Case Management environment SAP offers the possiblity to define customer specifc "subcomponents". A subcomponent is basically a certain part on the screen.

 

For the implementation you get a reference to a GUI container (im_container TYPE Ref To CL_GUI_SIMPLE_CONTAINER). Customers can now easily add for example an ALV table by using the defined container.

 

In my situation I want to display a dynpro with several tabstrips on it so I thought of a carrier dynpro attached to the GUI container using docking container.

 

Is this possible at all? My code looks like this:

 

  DATA lr_gui_docking TYPE REF TO cl_gui_docking_container.
  CREATE OBJECT lr_gui_docking
    EXPORTING
      parent                      = im_container
      repid                       = 'ZHG01'
      dynnr                       = '0200'
    EXCEPTIONS
      cntl_error                  = 1
      cntl_system_error           = 2
      create_error                = 3
      lifetime_error              = 4
      lifetime_dynpro_dynpro_link = 5
      OTHERS                      = 6.

 

I get a runtime exception ("CNTL_ERROR"). Debugging in system debug mode shows that the exception is thrown at the end of method "GET_FRAME_CONTAINER":

 

METHOD GET_FRAME_CONTAINER.
    DATA: PARENTID TYPE I.
*    CALL 'DY_GET_MODAL_LEVEL' ID 'MOD_LEV' FIELD PARENTID.
*    CALL 'DY_GET_MODAL_LEVEL' ID 'MOD_LEV_UI' FIELD PARENTID.
*    CALL 'DY_GET_MODAL_LEVEL' ID 'ACT_UI_MOD_LEV' FIELD PARENTID.
    IF CONTAINER IS INITIAL.
        CALL 'DY_GET_MODAL_LEVEL' ID 'ACT_UI_MOD_LEV' FIELD PARENTID.
    ELSEIF CONTAINER->H_CONTROL-SHELLID = -1.
        CALL 'DY_GET_MODAL_LEVEL' ID 'ACT_UI_MOD_LEV' FIELD PARENTID.
    ELSE.
        PARENTID = CONTAINER->H_CONTROL-SHELLID.
    ENDIF.

    IF PARENTID BETWEEN 10 AND 19.    " this are the dynpro areas
        PARENTID = PARENTID - 10.     " now its the corresponding frame
    ENDIF.

    data: new_dummy_parent_container type ref to CL_GUI_CONTAINER.

    IF PARENTID BETWEEN 0 AND 9.
    "    CREATE OBJECT DUMMY_PARENT_CONTAINER
    "        EXPORTING CLSID = SPACE.
    "    DUMMY_PARENT_CONTAINER->H_CONTROL-SHELLID = PARENTID.
    "    FRAME_CONTAINER = DUMMY_PARENT_CONTAINER.
        CREATE OBJECT NEW_DUMMY_PARENT_CONTAINER
            EXPORTING CLSID = SPACE.
        NEW_DUMMY_PARENT_CONTAINER->H_CONTROL-SHELLID = PARENTID.
        FRAME_CONTAINER = NEW_DUMMY_PARENT_CONTAINER.
    ELSEIF PARENTID = 99.
        FRAME_CONTAINER = CONTAINER.
    ELSE.
        IF CONTAINER_MUST_BE_TOPLEVEL = 0.
            FRAME_CONTAINER = CONTAINER.
        ELSE.
            RAISE CNTL_ERROR. <<<<<<<<<<<<<<<<<<<<<<<<<<<<<< "DUMP!!
       ENDIF.
    ENDIF.
ENDMETHOD.

 

I have no idea what this could mean.

 

Variables during runtime:

PARENTID is set to "181"

CONTAINER_MUST_BE_TOPLEVEL is set to "1"

 

Any ideas?

 

Thanks in advance,

Hendrik