Gleiches Control auf Dynpro UND Popup-Screen

Die Objektorientierung mit ABAP®: Vererbung, Dynamische Programmierung, GUI Controls (u.a. ALV im OO).
13 Beiträge • Seite 1 von 1
13 Beiträge Seite 1 von 1

Gleiches Control auf Dynpro UND Popup-Screen

Beitrag von ewx (Top Expert / 4849 / 313 / 642 ) »
Hallo!
ich habe ein Problem mit einem Control auf einem Dynpro... Genauer gesagt: mit einem Control auf *zwei* Dynpros... :?

Ich habe ein Dynpro mit einem Control. Die Daten aus dem Control (ALV-Grid) sollen nur angezeigt werden. Das funktioniert auch.
Nun möchte ich das gleiche Control in einem Popup anzeigen (CALL SCREEN 99 STARTING AT 9 9.). Das funktioniert nicht mehr, weil das Control unter anderem an die "Aufrufebene" gebunden wird. Da das Popup eine Aufrufebene höher ist, wird das Control nicht angezeigt. Wenn ich das gleiche in einem anderen Screen aufrufe (CALL SCREEN 99.), aber nicht als Popup, dann funktioniert's.

Hat jemand eine Idee, wie man diese Bindung umgehen/ ausschalten/ verändern/ initialisieren kann???

Ich möchte die Controls ungerne zerstören um sie dann im Popup-Screen wieder neu aufzubauen (das kann ja jeder... :D ), weil es sind ein paar mehrere...

gesponsert
Stellenangebote auf ABAPforum.com schalten
kostenfrei für Ausbildungsberufe und Werksstudenten


Beitrag von ereglam (Top Expert / 1829 / 2 / 7 ) »
Hallo ewx,

vielleicht kannst Du ja das jeweilige Parent-Control zerstören und mit Bezug zum anderen Dynpro neu aufbauen.
Gruß
Ereglam


May the Force be with your code
|| .| |.|| | .... . ..|. ||| .|. |.|. . |... . .|| .. | .... |.|| ||| ..| .|. |.|. ||| |.. .

Beitrag von ewx (Top Expert / 4849 / 313 / 642 ) »
Hi ereglam,
das kann ich sogar bestimmt. Aber das will ich nicht. Weil es ist erstens nicht nur ein Control sondern mehrere und ausserdem finde ich es unsinnig und zudem sind in dem Control auch evtl. Daten gespeichert, die aber noch nicht auf der DB stehen.
Aber wahrscheinlich geht's einfach nicht als Popup... :?

Beitrag von ereglam (Top Expert / 1829 / 2 / 7 ) »
Hallo ewx,

beim ALV-Grid und ALV-Tree sollte es problemlos funktionieren, da beim Zerstören der Parent-Container (CL_GUI_CUSTOM_CONTAINER) der eigentliche Control ja nicht mit zerstört wird, solange Du eine eigenständige Referenz darauf hast, was ja normaler Weise der Fall sein sollte.

Abgesehen davon ist es ja notwendig, den Parent-Container nicht anzulegen, wenn das Programm im Hintergrund ausgeführt wird. Trotzdem kann man das Grid-Control anlegen und (zum Drucken) benutzen.

Mir kommt gerade noch eine Idee:
Lege für jedes Dynpro einen Parent-Container an und setze den Parent des Controls durch einfache Zuweisung des benötigten Dynpro-Containers im PBO des jeweiligen Dynpro um.
Damit müsstest Du nicht einmal etwas zerstören.
Gruß
Ereglam


May the Force be with your code
|| .| |.|| | .... . ..|. ||| .|. |.|. . |... . .|| .. | .... |.|| ||| ..| .|. |.|. ||| |.. .

Beitrag von ewx (Top Expert / 4849 / 313 / 642 ) »
ereglam hat geschrieben:Mir kommt gerade noch eine Idee:
Lege für jedes Dynpro einen Parent-Container an und setze den Parent des Controls durch einfache Zuweisung des benötigten Dynpro-Containers im PBO des jeweiligen Dynpro um.
Damit müsstest Du nicht einmal etwas zerstören.
...das hört sich guuuut an. Nur: die Zuweisung zum Custom-Container mache ich doch durch

Code: Alles auswählen.

CREATE OBJECT alv ... exporting parent = custom_container.
Und die Methode LINK des custom_containers kann ich ja nicht beibringen, wer das neue "child" ist...?
Gib mir noch mal einen Tipp mehr bitte, wie das funktionieren kann
Gruß,

Beitrag von ereglam (Top Expert / 1829 / 2 / 7 ) »
Hallo ewx,

ich stelle mir das so vor:

Code: Alles auswählen.

CREATE OBJECT go_cont_dynp1
  EXPORTING
...
    container_name = 'Name Custom-Container Dynpro 1'
...
CREATE OBJECT go_cont_dynp2
  EXPORTING
...
    container_name = 'Name Custom-Container Dynpro 2'
...
PERFORM prepare_grid
  USING    go_alv_parent
...
  CHANGING go_alv
...
FORM prepare_grid...
  USING    co_alv_parent TYPE REF TO cl_gui_custom_container
  CHANGING co_alv...
...
* CO_ALV_PARENT wird hier nicht instanziiert
 CREATE OBJECT co_alv
    EXPORTING
      ...
      parent = co_parent
...
ENDFORM.

MODULE init_dyp1 OUTPUT.
* Verbindung zum Dynpro herstellen
  go_alv_parent = go_cont_dynp1.
ENDMODULE.

MODULE init_dyp2 OUTPUT.
* Verbindung zum Dynpro herstellen
  go_alv_parent = go_cont_dynp2.
ENDMODULE.
GO_ALV_PARENT wird dabei selbst nicht aktiv instanziiert, sondern erst im PBO zugewiesen.

QED
Gruß
Ereglam


May the Force be with your code
|| .| |.|| | .... . ..|. ||| .|. |.|. . |... . .|| .. | .... |.|| ||| ..| .|. |.|. ||| |.. .

Beitrag von ewx (Top Expert / 4849 / 313 / 642 ) »
Die Idee war gut!
aber leider... Ich habe zum testen erstmal auf einem Dynpro zwei Custom-Container definiert: CC1 und CC2 und wollte dann zwischen den beiden hin- und her wechseln.
Leider wird gar nix angezeigt. Vielleicht habe ich auch noch was übersehen...?

Code: Alles auswählen.

REPORT  zztest.
TYPE-POOLS icon.
DATA gr_cc1 TYPE REF TO cl_gui_custom_container.
DATA gr_cc2 TYPE REF TO cl_gui_custom_container.
DATA gr_cpr TYPE REF TO cl_gui_custom_container. "Parent
DATA gr_pic TYPE REF TO cl_gui_picture.
DATA gv_lnk TYPE char30 VALUE 'CC1'.
DATA gv_nam TYPE char30.
DATA gs_inf TYPE cfw_link.

START-OF-SELECTION.

  CALL SCREEN 1.



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

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

  IF gr_pic IS INITIAL.

    CREATE OBJECT gr_cc1
      EXPORTING
        container_name = 'CC1'
      EXCEPTIONS
        OTHERS         = 6.

    CREATE OBJECT gr_cc2
      EXPORTING
        container_name = 'CC2'
      EXCEPTIONS
        OTHERS         = 6.

    PERFORM link USING gr_cpr
                 CHANGING gr_pic.

  ENDIF.

  CASE gv_lnk.
    WHEN 'CC1'.
      gv_lnk = 'CC2'.
      gr_cpr = gr_cc2.

    WHEN 'CC2'.
      gv_lnk = 'CC1'.
      gr_cpr = gr_cc1.
  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'.

  ENDCASE.

ENDMODULE.                 " USER_COMMAND_0100  INPUT

*&---------------------------------------------------------------------*
*&      Form  link
*&---------------------------------------------------------------------*
FORM link USING    fi_cpr TYPE REF TO cl_gui_custom_container
          CHANGING fc_pic TYPE REF TO cl_gui_picture.

  CREATE OBJECT fc_pic
    EXPORTING
      parent = fi_cpr
    EXCEPTIONS
      OTHERS = 2.

  CALL METHOD fc_pic->load_picture_from_sap_icons
    EXPORTING
      icon  = icon_delete
    EXCEPTIONS
      error = 1.
  CALL METHOD fc_pic->set_display_mode
    EXPORTING
      display_mode = fc_pic->display_mode_stretch
    EXCEPTIONS
      error        = 1.

ENDFORM.                    "link

Beitrag von ewx (Top Expert / 4849 / 313 / 642 ) »
Jippieijey, Schweinebacke...!
Now goes it!
Jetzt muss ich nur noch prüfen, ob's auch tatsächlich mit dem Popup geht...!
Danke ereglam für deine Idee und Hilfe! :lol:

Code: Alles auswählen.

*&---------------------------------------------------------------------*
*& Report  ZZENNO27
*&---------------------------------------------------------------------*

REPORT  zzenno27.
TYPE-POOLS icon.
DATA gr_cc1 TYPE REF TO cl_gui_custom_container.
DATA gr_cc2 TYPE REF TO cl_gui_custom_container.
DATA gr_cpr TYPE REF TO cl_gui_custom_container. "Parent
DATA gr_pic TYPE REF TO cl_gui_picture.
DATA gv_lnk TYPE char30 VALUE 'CC1'.
DATA gv_nam TYPE char30.
DATA gs_inf TYPE cfw_link.

FIELD-SYMBOLS <cpr> TYPE REF TO cl_gui_custom_container.

START-OF-SELECTION.

  CALL SCREEN 1.



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

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



  IF gr_pic IS INITIAL.


    CREATE OBJECT gr_cc1
      EXPORTING
        container_name = 'CC1'
      EXCEPTIONS
        OTHERS         = 6.

    CREATE OBJECT gr_cc2
      EXPORTING
        container_name = 'CC2'
      EXCEPTIONS
        OTHERS         = 6.


    ASSIGN gr_cc1 TO <cpr>.
    PERFORM link USING <cpr>
                 CHANGING gr_pic.

  ENDIF.

  CASE gv_lnk.
    WHEN 'CC1'.
      gv_lnk = 'CC2'.
      ASSIGN gr_cc1 TO <cpr>.
      CALL METHOD gr_cc1->link
        EXPORTING
          repid     = space
          dynnr     = space
          container = 'CC1'.

    WHEN 'CC2'.
      gv_lnk = 'CC1'.
      ASSIGN gr_cc2 TO <cpr>.
      CALL METHOD gr_cc1->link
        EXPORTING
          repid     = space
          dynnr     = space
          container = 'CC2'.

  ENDCASE.

  CALL METHOD cl_gui_cfw=>flush.

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'.


  ENDCASE.


ENDMODULE.                 " USER_COMMAND_0100  INPUT

*&---------------------------------------------------------------------*
*&      Form  link
*&---------------------------------------------------------------------*
FORM link USING    fi_cpr TYPE REF TO cl_gui_custom_container
          CHANGING fc_pic TYPE REF TO cl_gui_picture.

  CREATE OBJECT fc_pic
    EXPORTING
      parent = fi_cpr
    EXCEPTIONS
      OTHERS = 2.


  CALL METHOD fc_pic->load_picture_from_sap_icons
    EXPORTING
      icon  = icon_delete
    EXCEPTIONS
      error = 1.
  CALL METHOD fc_pic->set_display_mode
    EXPORTING
      display_mode = fc_pic->display_mode_stretch
    EXCEPTIONS
      error        = 1.

ENDFORM.                    "link

Beitrag von ewx (Top Expert / 4849 / 313 / 642 ) »
Tja, aber im Popup funktioniert's immer noch nicht... :cry:

Beitrag von ereglam (Top Expert / 1829 / 2 / 7 ) »
ewx hat geschrieben:Jippieijey, Schweinebacke...!
Now goes it!
Jetzt muss ich nur noch prüfen, ob's auch tatsächlich mit dem Popup geht...!
Danke ereglam für deine Idee und Hilfe! :lol:
...
gern geschehen... ;-)

PS:
die Lösung besteht also darin, dass der Parent-Container als Feld-Symbol übergeben wird.
Probehalber könnte man noch probieren, ob man mit GET REFERENCE die Referenzen umschichten kann.

PPS:
Danke auch an Dich. Die Sache mit der Link-Methode im Container war mir neu...
Gruß
Ereglam


May the Force be with your code
|| .| |.|| | .... . ..|. ||| .|. |.|. . |... . .|| .. | .... |.|| ||| ..| .|. |.|. ||| |.. .

Beitrag von ewx (Top Expert / 4849 / 313 / 642 ) »
ereglam hat geschrieben:Probehalber könnte man noch probieren, ob man mit GET REFERENCE die Referenzen umschichten kann.
Ist das in dem Fall nicht das gleiche? Der Zeiger zeigt doch schon auf genau einen Container...

Beitrag von ewx (Top Expert / 4849 / 313 / 642 ) »
Es entwickelt sich alles vom Primitiven über das Komplizierte bis hin zum Einfachen...
Der ASSIGN ist nun gar nicht nötig, der Container kann mit LINK einfach umgehängt werden. ...Wenn man sich dann damit abgefunden hat, dass es eben mit Popup nicht funktioniert... :?

Code: Alles auswählen.

REPORT  zz.
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.
    CREATE OBJECT gr_cc
      EXPORTING
        container_name = 'CC1'
      EXCEPTIONS
        OTHERS         = 6.
  ENDIF.
  IF gr_pic IS INITIAL.

    CREATE OBJECT gr_pic
      EXPORTING
        parent = gr_cc
      EXCEPTIONS
        OTHERS = 2.

    CALL METHOD gr_pic->load_picture_from_sap_icons
      EXPORTING
        icon  = icon_delete
      EXCEPTIONS
        error = 1.
    CALL METHOD gr_pic->set_display_mode
      EXPORTING
        display_mode = gr_pic->display_mode_stretch
      EXCEPTIONS
        error        = 1.

  ENDIF.

  CASE gv_lnk.
    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

Beitrag von ereglam (Top Expert / 1829 / 2 / 7 ) »
ok, danke. Gut zu wissen.

PS:
habe nochmal in der Hilfe geschaut:
GET REFERENCE ist nur für Datenreferenzen, nicht aber für Klassenreferenzen benutzbar.
Gruß
Ereglam


May the Force be with your code
|| .| |.|| | .... . ..|. ||| .|. |.|. . |... . .|| .. | .... |.|| ||| ..| .|. |.|. ||| |.. .

Seite 1 von 1

Vergleichbare Themen

2
Antw.
2058
Views
Dynpro: Dropdown werte übergabe von Screen 1 auf Screen 2
von erzoo24 » 28.02.2017 15:25 • Verfasst in ABAP® für Anfänger
7
Antw.
4295
Views
Popup Screen
von stony007_de » 21.08.2015 15:51 • Verfasst in ABAP® für Anfänger
2
Antw.
4801
Views
dynpro als popup aufrufen
von crustycheesewithextrachee » 22.08.2007 14:38 • Verfasst in ABAP Objects®
3
Antw.
6951
Views
Popup-Dynpro schließen
von chatty » 05.01.2006 12:58 • Verfasst in ABAP® Core
14
Antw.
6001
Views
Dynpro-Popup (Textausgabe)
von Chilledkroete » 11.04.2013 11:20 • Verfasst in ABAP® für Anfänger

Über diesen Beitrag


Unterstütze die Community und teile den Beitrag für mehr Leser und Austausch

Aktuelle Forenbeiträge

Regex in where
vor 3 Stunden von black_adept 2 / 55
Programm anlegen mit Vorlage
vor 10 Stunden von DeathAndPain 2 / 110
IT0024 Qualifikationen CP-ID
vor 10 Stunden von DeathAndPain 2 / 351
BUSOBJEKT zu CMIS PHIO ermitteln
vor 12 Stunden von snooga87 1 / 84

Newsletter Anmeldung

Keine Beiträge verpassen! Wöchentlich versenden wir lesenwerte Beiträge aus unserer Community.
Die letzte Ausgabe findest du hier.
Details zum Versandverfahren und zu Ihren Widerrufsmöglichkeiten findest du in unserer Datenschutzerklärung.

Aktuelle Forenbeiträge

Regex in where
vor 3 Stunden von black_adept 2 / 55
Programm anlegen mit Vorlage
vor 10 Stunden von DeathAndPain 2 / 110
IT0024 Qualifikationen CP-ID
vor 10 Stunden von DeathAndPain 2 / 351
BUSOBJEKT zu CMIS PHIO ermitteln
vor 12 Stunden von snooga87 1 / 84

Unbeantwortete Forenbeiträge

BUSOBJEKT zu CMIS PHIO ermitteln
vor 12 Stunden von snooga87 1 / 84
aRFC im OO-Kontext
vor 5 Wochen von ralf.wenzel 1 / 3260
Hilfe bei SWEC/SWE2
September 2024 von retsch 1 / 9821