Splitter-Container in modalem Fenster nicht möglich?

Benutzeroberflächen in SAP Systemen.

Splitter-Container in modalem Fenster nicht möglich?

Postby Ines3642 » Wed Oct 07, 2009 9:31 am

Hallo zusammen,

ich habe ein Programm, das einen Splitter-Container (3x4) für eine Galerie aufbaut.

Das Programm soll zwei Möglichkeiten bieten: Anzeige im gesamten Dynpro und Anzeige in einem modalen Fenster.

Die Anzeige im gesamten Dynpro habe ich gelöst durch einen Docking-Container, den ich maximiere und der dann als Vater für den Splitter fungiert.

Für die Anzeige im modalen Fenster habe ich ein modales Dynpro angelegt. In diesem ist ein Custom-Control definiert, für das ich einen Custom-Container instanziiere. Dieser ist dann der Vater meines Splitter-Containers.

Leider aber wird der Splitter einfach nicht angezeigt!? Habe ich irgendwo ein "Splitter-Controls funktionieren nicht in modalen Fenstern" überlesen? :(
Ines3642
...
...
 
Posts: 268
Joined: Tue Jan 27, 2009 5:49 pm

Postby ewx » Wed Oct 07, 2009 11:57 am

Kein Problem!
Code: [Select all] [Expand/Collapse] [Download] (Untitled.txt)
  1. *&---------------------------------------------------------------------*
  2. *& Report  RSDEMO_DIALOGBOX_CONTROL                                    *
  3. *&---------------------------------------------------------------------*
  4.  
  5. REPORT  .
  6. DATA repid TYPE sy-repid.
  7. DATA dynnr TYPE sy-dynnr.
  8. DATA  init.
  9. DATA ok_code TYPE sy-ucomm.
  10.  
  11. * dialogbox Container
  12. DATA gr_dialogbox  TYPE REF TO cl_gui_dialogbox_container.
  13. DATA gr_splitter   TYPE REF TO cl_gui_easy_splitter_container.
  14. DATA gr_textedit   TYPE REF TO cl_gui_textedit.
  15. DATA gr_container1 TYPE REF TO cl_gui_container.
  16. DATA gr_container2 TYPE REF TO cl_gui_container.
  17.  
  18. * picture Control
  19. DATA gr_picture TYPE REF TO cl_gui_picture.
  20. * Definition of Control Framework
  21. CLASS cl_gui_cfw DEFINITION LOAD.
  22.  
  23.  
  24. CALL SCREEN 100.
  25.  
  26. *&---------------------------------------------------------------------*
  27. *&      Module  STATUS_0100  OUTPUT
  28. *&---------------------------------------------------------------------*
  29. *       text
  30. *----------------------------------------------------------------------*
  31. MODULE status_0100 OUTPUT.
  32.   SET PF-STATUS 'STATUS'.
  33. *  SET TITLEBAR 'xxx'.
  34.   IF init IS INITIAL.
  35.     repid = sy-repid.
  36.     dynnr = sy-dynnr.
  37.     CREATE OBJECT gr_dialogbox
  38.       EXPORTING
  39.         width  = 550
  40.         height = 400
  41.         top    = 50
  42.         left   = 150
  43.         repid  = repid
  44.         dynnr  = dynnr.
  45.  
  46.     CREATE OBJECT gr_splitter
  47.       EXPORTING
  48.         parent        = gr_dialogbox
  49.         orientation   = 0
  50.         sash_position = 16
  51.         with_border   = 1
  52.       EXCEPTIONS
  53.         OTHERS        = 3.
  54.  
  55.  
  56.  
  57.  
  58.     CREATE OBJECT gr_picture
  59.       EXPORTING
  60.         parent = gr_splitter->top_left_container.
  61.  
  62.     CREATE OBJECT gr_textedit
  63.       EXPORTING
  64.         parent = gr_splitter->bottom_right_container
  65.       EXCEPTIONS
  66.         OTHERS = 6.
  67.  
  68.  
  69. * Request an URL from the data provider by exporting the pic_data.
  70.     DATA url(255).
  71.     CLEAR url.
  72.     PERFORM load_pic_from_db CHANGING url.
  73.  
  74. * load picture
  75.     CALL METHOD gr_picture->load_picture_from_url
  76.       EXPORTING
  77.         url = url.
  78.     init = 'X'.
  79.  
  80.     CALL METHOD cl_gui_cfw=>flush
  81.       EXCEPTIONS
  82.         cntl_system_error = 1
  83.         cntl_error        = 2.
  84.     IF sy-subrc <> 0.
  85. * error handling
  86.     ENDIF.
  87.   ENDIF.
  88. ENDMODULE.                             " STATUS_0100  OUTPUT
  89.  
  90. *&---------------------------------------------------------------------*
  91. *&      Module  EXIT  INPUT
  92. *&---------------------------------------------------------------------*
  93. *       text
  94. *----------------------------------------------------------------------*
  95. MODULE exit INPUT.
  96.   CALL METHOD gr_dialogbox->free.
  97.   LEAVE PROGRAM.
  98. ENDMODULE.                             " EXIT  INPUT
  99. *&---------------------------------------------------------------------*
  100. *&      Form  LOAD_PIC_FROM_DB
  101. *&---------------------------------------------------------------------*
  102. *       text
  103. *----------------------------------------------------------------------*
  104. *
  105. *----------------------------------------------------------------------*
  106. FORM load_pic_from_db CHANGING url.
  107.   DATA query_table LIKE w3query OCCURS 1 WITH HEADER LINE.
  108.   DATA html_table LIKE w3html OCCURS 1.
  109.   DATA return_code LIKE  w3param-ret_code.
  110.   DATA content_type LIKE  w3param-cont_type.
  111.   DATA content_length LIKE  w3param-cont_len.
  112.   DATA pic_data LIKE w3mime OCCURS 0.
  113.   DATA pic_size TYPE i.
  114.  
  115.   REFRESH query_table.
  116.   query_table-name = '_OBJECT_ID'.
  117.   query_table-value = 'ENJOYSAP_LOGO'.
  118.   APPEND query_table.
  119.  
  120.   CALL FUNCTION 'WWW_GET_MIME_OBJECT'
  121.     TABLES
  122.       query_string        = query_table
  123.       html                = html_table
  124.       mime                = pic_data
  125.     CHANGING
  126.       return_code         = return_code
  127.       content_type        = content_type
  128.       content_length      = content_length
  129.     EXCEPTIONS
  130.       object_not_found    = 1
  131.       parameter_not_found = 2
  132.       OTHERS              = 3.
  133.   IF sy-subrc = 0.
  134.     pic_size = content_length.
  135.   ENDIF.
  136.  
  137.   CALL FUNCTION 'DP_CREATE_URL'
  138.     EXPORTING
  139.       type     = 'image'
  140.       subtype  = cndp_sap_tab_unknown
  141.       size     = pic_size
  142.       lifetime = cndp_lifetime_transaction
  143.     TABLES
  144.       data     = pic_data
  145.     CHANGING
  146.       url      = url
  147.     EXCEPTIONS
  148.       OTHERS   = 1.
  149.  
  150.  
  151. ENDFORM.                               " LOAD_PIC_FROM_DB
GeSHi ©
ewx
.....
.....
 
Posts: 2840
Joined: Mon Aug 04, 2003 9:02 pm

Postby Ines3642 » Wed Oct 07, 2009 12:15 pm

Hallo Enno!

Du erzeugst in Deinem Programm einen Dialogbox-Container und legst da den Splitter rein. Das geht auch bei mir ohne Probleme.

Ich aber habe ein Dynpro, das ich als modales Fenster angelegt habe. Dieses Dynpro besitzt auch einen Status zum Navigieren.

Das gesamte Coding steckt in einer Klasse und einer Funktionsgruppe. Die Gruppe hat einen einzigen Baustein, der die Klasse instanziiert und die Galerie anzeigt. Abhängig von einem Parameter soll dies eben in einem "normalen" Dynpro oder einem Popup angezeigt werden.

Der Baustein soll aber in einem belieibigen Programm einsetzbar sein.

Was passiert denn in dem Coding von Dir, wenn es kein Trägerdynpro für den Dialogbox-Container gibt?
Ines3642
...
...
 
Posts: 268
Joined: Tue Jan 27, 2009 5:49 pm

Postby ewx » Wed Oct 07, 2009 12:25 pm

Aaachso. Aber ein Trägerdynpro muss es doch immer geben... Du kannst es ja nicht einfach in die Luft hängen...
Vielleicht hilft dir der Parameter NO_AUTODEF_PROGID_DYNNR von cl_gui_dialogbox_container weiter?
ewx
.....
.....
 
Posts: 2840
Joined: Mon Aug 04, 2003 9:02 pm

Postby ewx » Wed Oct 07, 2009 12:37 pm

Also. Ich hab jetzt mal alles in eine Klasse gepackt und rufe im Dynpro nur noch zcltest=>call_box auf.
In der Klasse erzeuge ich die dialogbox mit
Code: [Select all] [Expand/Collapse] [Download] (Untitled.txt)
  1.   CREATE OBJECT gr_dialogbox
  2.     EXPORTING
  3.       width  = 550
  4.       height = 400
  5.       top    = 50
  6.       left   = 150
  7.       no_autodef_progid_dynnr = ''.
  8.  
GeSHi ©

Funktioniert super.
Wenn ich das jetzt allerdings im PBO von
Code: [Select all] [Expand/Collapse] [Download] (Untitled.txt)
  1. Call screen 100 starting at 4 4
GeSHi ©

mache, dann sieht's allerdings komisch aus...
Aber: die Dialogbox ist da. Mit Splitter.
ewx
.....
.....
 
Posts: 2840
Joined: Mon Aug 04, 2003 9:02 pm

Postby Ines3642 » Wed Oct 07, 2009 12:49 pm

ewx hat geschrieben:(...) Wenn ich das jetzt allerdings im PBO von
Code: [Select all] [Expand/Collapse] [Download] (Untitled.txt)
  1. Call screen 100 starting at 4 4
GeSHi ©

mache, dann sieht's allerdings komisch aus...
Aber: die Dialogbox ist da. Mit Splitter.


...ohne es jetzt zu testen: ich vermute, Du hast das Dynpro als modales Fenster, über dem die Dialogbox schwebt? Wenn ja: Genau das will ich ja verhindern...

Ich will einfach nur ein modales Fenster. :)

Natürlich brauche ich immer ein Dynpro. Das modale Fenster soll in diesem Fall eben jenes sein - der Dialogbox-Container wäre eine Ebene zu viel.
Ines3642
...
...
 
Posts: 268
Joined: Tue Jan 27, 2009 5:49 pm

Postby ewx » Wed Oct 07, 2009 1:01 pm

So, nu hab ich's auch gerafft... :lol:
Aber: Auch das funktioniert bei mir. Also zumindest im Programm, ohne dass der Container extern befüllt wird.
Aber das sollte eigentlich auch kein Problem sein...
ewx
.....
.....
 
Posts: 2840
Joined: Mon Aug 04, 2003 9:02 pm

Postby Ines3642 » Wed Oct 07, 2009 1:10 pm

Vielleicht hatte ich es auch ein wenig mißverständlich formuliert... ;)

Also, so baue ich es aktuell auf:

- es gibt ein Dynpro mit der Nummer 5000, das als modales Fenster definiert ist
- zu dem Dynpro gibt es einen Status, mit dem ich später "blättern" will
- in diesem Dynpro liegt ein Custom-Control namens "CR"
- in meiner Klasse erzeuge ich einen Custom-Container namens "CR" mit DYNNR = 5000 und REPID = Rahmenprogramm des Funktionsbausteins
- nun erzeuge ich einen Splitter-Container, dessen PARENT der Custom-Container ist

Was nun noch innerhalb dieses Splitters geschieht, sollte eh keine Rolle spielen, oder?

Das System erzeugt mir brav alle Objekte und zeigt auch das Dynpro mit dem Status an. Der Splitter-Container ist aber leider nicht da, zumindest nicht sichtbar. :(
Ines3642
...
...
 
Posts: 268
Joined: Tue Jan 27, 2009 5:49 pm

Postby ewx » Wed Oct 07, 2009 1:18 pm

1. Wie übergibst du denn den Container? Hoffentlich mit TYPE REF TO...
2. Lass doch mal REPID und DYNNR komplett weg
ewx
.....
.....
 
Posts: 2840
Joined: Mon Aug 04, 2003 9:02 pm

Postby Ines3642 » Wed Oct 07, 2009 1:28 pm

Die Übergabe ist korrekt... und die Angaben zum Dynpro benötigt der Docking-Container auf jeden Fall.

Allerdings hast Du mich damit auf den Fehler gestoßen: ich erzeuge den Custom-Container bevor das Dynpro gerufen wird. Dadurch, dass ich nun die Objekt-Erzeugung in das PBO geschoben habe, funktioniert es.

Danke! :D
Ines3642
...
...
 
Posts: 268
Joined: Tue Jan 27, 2009 5:49 pm

Next

Return to Dialogprogrammierung

Who is online

Users browsing this forum: No registered users and 13 guests