Container ein und ausblenden


Getting started ... Alles für einen gelungenen Start.

Moderatoren: Jan, Steff

Container ein und ausblenden

Beitragvon Studi » 16.02.2017, 11:13

hallöchen,

ich habe ein dynpro erstellt dort sind 2 Container zu sehen und ein Button. ich möchte den einen Container per Button Click immer wieder ein und ausblenden können, sodass nur noch ein Container zu sehen ist.

Ich habe es bereits mit set_visible versucht -> Ich kann nun den Container zwar ausblenden aber bei erneutem Button Click kann ich ihn nicht wieder anzeigen.
das war mein bisheriger Code:

CASE okcode.
WHEN 'PB_GRAFIK'.
CALL METHOD g_container_graphics->set_visible
EXPORTING
visible = ' '
EXCEPTIONS
cntl_error = 1
cntl_system_error = 2.



Wäre sehr dankbar um eine Antwort:
Lg Alisa
Studi
ForumUser
 
Beiträge: 24
Registriert: 15.02.2017, 14:54
Dank erhalten: 0 mal
Ich bin: Student/in

Sponsor

Alte ABAP-Entwicklerweisheit: Weißt du weder aus noch ein, baust du einen BADI ein

Re: Container ein und ausblenden

Beitragvon Thanatos82 » 16.02.2017, 11:23

Hallo Alisa,

dein g_container_graphics hat auch die Methode GET_VISIBLE. Mit dieser kannst du dir deinen aktuellen Sichtbarkeitszustand ermitteln. Anschließend musst du dann, je nach Zustand die Sichtbarkeit setzen oder entfernen (letzteres hast du ja bereits).
Gruß,
der Matze

Für diese Nachricht hat Thanatos82 einen Dank bekommen :
Studi
Thanatos82
Expert
 
Beiträge: 670
Registriert: 13.09.2012, 13:01
Wohnort: Hagen
Dank erhalten: 119 mal
Ich bin: Entwickler/in

Re: Container ein und ausblenden

Beitragvon Studi » 16.02.2017, 11:29

Hallo Matze,

ja das habe ich mir auch gedacht und bereits probiert.Allerdings bekomme ich immer einen fehler bei

visible = ' '


hier der code:
CALL METHOD g_container_graphics->get_visible
importing
visible = ' '
EXCEPTIONS
cntl_error = 1
cntl_system_error = 2.


Lg Alisa
Studi
ForumUser
 
Beiträge: 24
Registriert: 15.02.2017, 14:54
Dank erhalten: 0 mal
Ich bin: Student/in

Re: Container ein und ausblenden

Beitragvon abuma » 16.02.2017, 11:33

Hallo Alisa,

get_visible liefert dir ja den Status zurück, also muss dieser auch in eine entsprechende Variable geschrieben werden.

Code: Alles auswählen
DATA: visible TYPE c.
CALL METHOD g_container_graphics->get_visible
importing
visible = visible
EXCEPTIONS
cntl_error = 1
cntl_system_error = 2.
 


Liebe Grüße
abuma

Für diese Nachricht hat abuma einen Dank bekommen :
Studi
abuma
ForumUser
 
Beiträge: 35
Registriert: 17.08.2016, 11:14
Dank erhalten: 4 mal
Ich bin: Entwickler/in

Re: Container ein und ausblenden

Beitragvon a-dead-trousers » 16.02.2017, 11:48

CL_GUI_CFW=>FLUSH nicht vergessen!
Vorallem bei vielen GET-Methoden ist das notwendig, sonst kommt am Ende ein Kurzdump bzw. steht nix in der Variable drinnen.
Theory is when you know something, but it doesn't work.
Practice is when something works, but you don't know why.
Programmers combine theory and practice: Nothing works and they don't know why.

ECC: 6.07
Basis: 7.40

Für diese Nachricht hat a-dead-trousers einen Dank bekommen :
Studi
a-dead-trousers
Top Expert
 
Beiträge: 2536
Registriert: 07.02.2011, 13:40
Dank erhalten: 562 mal
Ich bin: Entwickler/in

Re: Container ein und ausblenden

Beitragvon Studi » 16.02.2017, 12:18

Okay, vielen dank schon msl für die Hinweise.
Aber selbst wenn ich alle Ratschläge befolge, kann die Grafik lediglich einmal ausgeblendet werden. Ein einblenden ist nicht mehr möglich.

CASE okcode.
DATA: visible TYPE c.

WHEN 'PB_GRAFIK'.
CALL METHOD g_container_graphics->set_visible
EXPORTING
visible = visible
EXCEPTIONS
cntl_error = 1
cntl_system_error = 2.


CALL METHOD g_container_graphics->get_visible
IMPORTING
visible = visible
EXCEPTIONS
cntl_error = 1
cntl_system_error = 2.


CALL METHOD cl_gui_cfw=>flush EXCEPTIONS CNTL_SYSTEM_ERROR = 1 CNTL_ERROR = 2.
Studi
ForumUser
 
Beiträge: 24
Registriert: 15.02.2017, 14:54
Dank erhalten: 0 mal
Ich bin: Student/in

Re: Container ein und ausblenden

Beitragvon Thanatos82 » 16.02.2017, 12:25

Hallo Alisa,

was du da versuchst ist ja die Zuweisung des vorhandenen Zustandes. ;)

Korrekterweise sollte es so aussehen:
Code: Alles auswählen
CASE okcode.
DATA: visible TYPE c.

WHEN 'PB_GRAFIK'.
* aktuellen Zustand ermitteln
CALL METHOD g_container_graphics->get_visible
EXPORTING
visible = visible
EXCEPTIONS
cntl_error = 1
cntl_system_error = 2.

* Wenn der Container sichtbar ist, dann ...
IF visible = 'X'.
* ...Container auf invisible setzen
CALL METHOD g_container_graphics->set_visible
IMPORTING
visible = ' '
EXCEPTIONS
cntl_error = 1
cntl_system_error = 2.

* Wenn der Container nicht sichtbar ist, dann ...
ELSE.
* ...Container auf visible setzen
CALL METHOD g_container_graphics->set_visible
IMPORTING
visible = 'X'
EXCEPTIONS
cntl_error = 1
cntl_system_error = 2.

ENDIF.

CALL METHOD cl_gui_cfw=>flush EXCEPTIONS CNTL_SYSTEM_ERROR = 1 CNTL_ERROR = 2.
Gruß,
der Matze
Thanatos82
Expert
 
Beiträge: 670
Registriert: 13.09.2012, 13:01
Wohnort: Hagen
Dank erhalten: 119 mal
Ich bin: Entwickler/in

Re: Container ein und ausblenden

Beitragvon Studi » 16.02.2017, 12:34

Leider funktioniert es nicht. jetzt kann man den Container nicht einmal mehr ausblenden.
Studi
ForumUser
 
Beiträge: 24
Registriert: 15.02.2017, 14:54
Dank erhalten: 0 mal
Ich bin: Student/in

Re: Container ein und ausblenden

Beitragvon Thanatos82 » 16.02.2017, 12:46

Hast du mein Coding kopiert oder es nur bei dir angepasst? Falls zweiteres: hast du gesehen das ich GET und SET geändert habe?
Sehe aktuell nicht, warum es nicht funktionieren sollte..
Setz doch mal einen Break-Point an deine CASE-Anweisung und schau wie das Feld visible besetzt ist nach jeder Anweisung. Vielleicht erkennst du ja dann einen Fehler.
Gruß,
der Matze
Thanatos82
Expert
 
Beiträge: 670
Registriert: 13.09.2012, 13:01
Wohnort: Hagen
Dank erhalten: 119 mal
Ich bin: Entwickler/in

Re: Container ein und ausblenden

Beitragvon Studi » 16.02.2017, 12:53

Ja zuerst habe ich dein Coding genommen. Allerdings hast du die Importparameter bei set und dies wird mir als fehler angezigt weil es ja ein exportparameter besitzen muss. Ja bin grad am Debugging dran :)
Dankeeee
Studi
ForumUser
 
Beiträge: 24
Registriert: 15.02.2017, 14:54
Dank erhalten: 0 mal
Ich bin: Student/in

Re: Container ein und ausblenden

Beitragvon ewx » 16.02.2017, 13:13

Und tue dir und denen, die nach dir deinen Code bearbeiten müssen, den Gefallen und benutze die funktionale Schreibweise:
Code: Alles auswählen
g_container_graphics->set_visible( visible = abap_true ).

Wenn man die Exceptions eh nicht abfragt, braucht man sie auch gar nicht erst anzugeben... (Bei GUI-Controls!!)
Bei den Exceptions bei den GUI-Controls kommt es dann zu einem Kurzdump. Was anderes als
Code: Alles auswählen
if sy-subrc <> 0. message a123(xy). endif.

kannst du dann eh kaum machen.
ewx
Top Expert
 
Beiträge: 3287
Registriert: 04.08.2003, 19:55
Wohnort: Schleswig-Holstein
Dank erhalten: 178 mal

Re: Container ein und ausblenden

Beitragvon Thanatos82 » 16.02.2017, 13:32

Studi hat geschrieben:Ja zuerst habe ich dein Coding genommen. Allerdings hast du die Importparameter bei set und dies wird mir als fehler angezigt weil es ja ein exportparameter besitzen muss. Ja bin grad am Debugging dran :)
Dankeeee


Na dann pass die Aufrufe so an, dass es passt. Hatte nur die Worte GET und SET getauscht und nicht weiter drauf geschaut. Dann sollte es funktionieren
Gruß,
der Matze
Thanatos82
Expert
 
Beiträge: 670
Registriert: 13.09.2012, 13:01
Wohnort: Hagen
Dank erhalten: 119 mal
Ich bin: Entwickler/in

Re: Container ein und ausblenden

Beitragvon abuma » 16.02.2017, 13:49

Also so funktioniert es bei mir prima:
Code: Alles auswählen
      o_container->get_visible( IMPORTING visible = visible ).
      o_container->set_visible( visible = visible ).

      CALL METHOD cl_gui_cfw=>flush.
 

Der Inhalt von Visible steht entweder auf 1 oder ist initial, daher kann die Abfrage mit:
Code: Alles auswählen
IF visible = 'X'.
 

denke ich nicht funktionieren.

Liebe Grüße
abuma
abuma
ForumUser
 
Beiträge: 35
Registriert: 17.08.2016, 11:14
Dank erhalten: 4 mal
Ich bin: Entwickler/in

Re: Container ein und ausblenden

Beitragvon Studi » 16.02.2017, 14:05

Das gibt es nicht, wenn ich dein Code @abuma ausprobiere. Dann funktioniert es, ABER er verdoppelt sämtliche Spalten in meinem ALV. Arghh

Lg Alisa
Studi
ForumUser
 
Beiträge: 24
Registriert: 15.02.2017, 14:54
Dank erhalten: 0 mal
Ich bin: Student/in

Re: Container ein und ausblenden

Beitragvon abuma » 16.02.2017, 14:12

Wie sieht dein Coding denn derzeit aus?

Liebe Grüße
abuma
abuma
ForumUser
 
Beiträge: 35
Registriert: 17.08.2016, 11:14
Dank erhalten: 4 mal
Ich bin: Entwickler/in

Nächste

Zurück zu ABAP® für Anfänger

  Aktuelle Beiträge   
Rätselecke ^^
vor 11 Minuten von gtoXX 0 Antw.
Dropdown Liste Debuggen
vor 24 Minuten von ralf.wenzel 1 Antw.
eingabebereiter ALV - Daten aus Dynpro übertragen
vor 54 Minuten von JHM 1 Antw.
Online-Doku bei Eclipse
vor 2 Stunden von ralf.wenzel 0 Antw.
Deklarationen: Tabellarisch oder nicht?
vor 12 Minuten von ewx 37 Antw.

  Ähnliche Beiträge beta
gelöst Scrollbalken bei ALV-Container
12.10.2016, 12:41 von Barney 2 Antw.
Container Splitter und Tabstrip
27.01.2017, 09:53 von ewx 1 Antw.
Html Container in ALV-Grid ausgeben
07.08.2007, 14:33 von MarkusW 1 Antw.
gelöst Container auswerten und in Struktur schreiben
04.02.2015, 16:15 von Kenny 2 Antw.
Spalte ausblenden
03.02.2006, 10:11 von DeathGuardian 7 Antw.

 

Wer ist online?

Mitglieder in diesem Forum: Exabot [Bot], Google Adsense [Bot]

Feedback ...?

Was können wir verbessern? Hinterlasse deine Kontaktdaten, wenn du eine direkte Antwort möchtest.

... Absenden!