Container umhängen

Bei der Erzeugung eines Controls bindet man dieses in der Regel an einen Custom-Container. Soll es an einen anderen Container gebunden werden, so muss das Control umgehängt werden. Dies geht aber nur mit bestimmten Vorbereitungen. Wir zeigen Ihnen anhand eines Beispielprogramms, wie es geht.

Beschreibung

Das Programm erzeugt ein Icon auf einem Customcontainer. Nach jedem “Enter” wechselt das Icon in den jeweils anderen Container.

So sieht’s aus

Vorbereitungen

Zum folgenden Coding muss das Dynpro 1 angelegt werden. Auf dem Dynpro müssen die beiden CustomerContainer CC1 und CC2 angelegt werden.

Auf der Elementliste muss zum OK_CODE das Feld SY-OKCODE eingetragen werden.

Ablauflogik zum Dynpro 1

PROCESS BEFORE OUTPUT.
  MODULE status_0001.
*
PROCESS AFTER INPUT.
  MODULE user_command_0001.

Coding

*&---------------------------------------------------------------------*
*& Report  ZZLink
*&---------------------------------------------------------------------*
REPORT  zzlink.
TYPE-POOLS icon.
DATA gr_cc TYPE REF TO cl_gui_custom_container.
DATA gr_pic TYPE REF TO cl_gui_picture.
DATA gv_lnk TYPE char30 VALUE 'CC1'.

START-OF-SELECTION.

  CALL SCREEN 1.

*----------------------------------------------------------------------*
*  MODULE status_0001 OUTPUT
*----------------------------------------------------------------------*
MODULE status_0001 OUTPUT.

  SET PF-STATUS 'STLI' OF PROGRAM 'SAPMSSY0'.

  IF gr_cc IS INITIAL.
*** Custom Container erzeugen
    CREATE OBJECT gr_cc
      EXPORTING
        container_name = 'CC1'
      EXCEPTIONS
        OTHERS         = 6.
  ENDIF.

  IF gr_pic IS INITIAL.
*** Picture Control erzeugen
    CREATE OBJECT gr_pic
      EXPORTING
        parent = gr_cc
      EXCEPTIONS
        OTHERS = 2.

*** Icon "Mülleimer" laden
    CALL METHOD gr_pic->load_picture_from_sap_icons
      EXPORTING
        icon  = icon_delete
      EXCEPTIONS
        error = 1.

*** Icon strecken
    CALL METHOD gr_pic->set_display_mode
      EXPORTING
        display_mode = gr_pic->display_mode_stretch
      EXCEPTIONS
        error        = 1.

  ENDIF.

  CASE gv_lnk.
*** Nach "Enter" wechselt das Icon von einem zum anderen Container
    WHEN 'CC1'.
      gv_lnk = 'CC2'.
      CALL METHOD gr_cc->link
        EXPORTING
          repid     = space
          dynnr     = space
          container = 'CC1'.

    WHEN 'CC2'.
      gv_lnk = 'CC1'.
      CALL METHOD gr_cc->link
        EXPORTING
          repid     = space
          dynnr     = space
          container = 'CC2'.

  ENDCASE.

ENDMODULE.                 " STATUS_0100  OUTPUT

*----------------------------------------------------------------------*
*  MODULE user_command_0001 INPUT
*----------------------------------------------------------------------*
MODULE user_command_0001 INPUT.

  CASE sy-ucomm.
    WHEN 'BACK' OR '%EX' OR 'RW'.
      SET SCREEN 0.
      LEAVE SCREEN.
    WHEN '%PRI'.
      CALL SCREEN 2 STARTING AT 5 5.

  ENDCASE.

ENDMODULE.                 " USER_COMMAND_0100  INPUT
Enno Wulff
Letzte Artikel von Enno Wulff (Alle anzeigen)

Leave a Comment