Zurück Button muss 2 mal betätigt werden

Getting started ... Alles für einen gelungenen Start.
8 Beiträge • Seite 1 von 1
8 Beiträge Seite 1 von 1

Zurück Button muss 2 mal betätigt werden

Beitrag von scotthall (ForumUser / 6 / 0 / 0 ) »
Hallo Zusammen,

ich arbeite momentan als Oberflächeneinsteiger an einer Reportübersicht in welcher Reports durch das Anklicken von Buttons direkt aufgerufen werden sollen. Da die Reports zahlenmäßig recht viele sein werden, müssen diese in unterschiedliche Kategorien eingeteilt werden, welche ich gerne durch verschiedene REITER umgesetzt hätte.

Im Internet habe ich 2 Codebeispiele gefunden. Einmal um ein schönes Buttonmenü zu erstellen und einmal um die Reiternavigation mit Subscreens zu realisieren. Beide Beispiele konnte ich auch kombinieren und nutzbar machen jedoch tritt dabei ein kleiner Schönheitsfehler auf.

Problem:
Wenn ich nun einen der Reports durch Knopfdruck aufrufe und von dem Report zurück in die Übersicht springen will, tut sich beim ersten Klicken des "zurück Buttons" gar nichts. Erst nach 2 maligem Klicken, lande ich wieder in der Übersicht. Warum genau weis ich nicht, da ich sehr wenig Erfahrung mit Screens habe vermute ich mal, dass es an dem Aufruf in Kombination mit den Subscreens liegt.

Hat hier jemand schonmal ein ähnliches Problem gehabt oder findet vielleicht den Fehler im Programm?

Danke schonmal für die Hilfe!

Code: Alles auswählen.

*&---------------------------------------------------------------------*
*& Report  ZTW_ZPTR_V2_REPORTLISTE
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*

REPORT  ztw_zptr_v2_reportliste LINE-SIZE 400.

TYPE-POOLS: icon.

*-- Datendeklaration
DATA:          var(30).
FIELD-SYMBOLS: <rep>, <skip>.

*** MAKRO FÜR DRUCKKNOPF ***
DEFINE _buttona_.
*-- Druckknopf zum Start des Reports
  selection-screen pushbutton 1(51) pb&1 user-command pb&1.
*-- Druckknopf für Doku
  selection-screen pushbutton 54(4) in&1 user-command in&1.
*-- Variablendeklaration
  data rp&1 type syrepid.
  data im&1 type c.
END-OF-DEFINITION.

DEFINE _buttonb_.
*-- Druckknopf für Doku
  selection-screen pushbutton 60(4) in&1 user-command in&1.
*-- Druckknopf zum Start des Reports
  selection-screen pushbutton 64(50) pb&1 user-command pb&1.
*-- Variablendeklaration
  data rp&1 type syrepid.
  data im&1 type c.
END-OF-DEFINITION.

*** MAKRO ZUR TEXTZUWEISUNG ***
DEFINE _text_.
*-- Variablenzuweisung
  concatenate &2 &3 into pb&1.
  rp&1 = &4.
  in&1 = '@0S@Info'.
  im&1 = &5.

END-OF-DEFINITION.


*-- Reiter-Seite 1
SELECTION-SCREEN BEGIN OF SCREEN 101 AS SUBSCREEN.

* Beginn Block 1
* -----------------------------------------------------------------------------
SELECTION-SCREEN BEGIN OF BLOCK 1 WITH FRAME TITLE box1_1.
SELECTION-SCREEN SKIP 1.
SELECTION-SCREEN BEGIN OF LINE.
_buttona_: a1.
_buttonb_: a2.
SELECTION-SCREEN END   OF LINE.
SELECTION-SCREEN SKIP 1.
SELECTION-SCREEN BEGIN OF LINE.
_buttona_: a3.
_buttonb_: a4.
SELECTION-SCREEN END   OF LINE.
SELECTION-SCREEN SKIP 1.
SELECTION-SCREEN BEGIN OF LINE.
_buttona_: a5.
_buttonb_: a6.
SELECTION-SCREEN END   OF LINE.
SELECTION-SCREEN SKIP 1.
SELECTION-SCREEN BEGIN OF LINE.
_buttona_: a7.
_buttonb_: a8.
SELECTION-SCREEN END   OF LINE.
SELECTION-SCREEN SKIP 1.
SELECTION-SCREEN BEGIN OF LINE.
_buttona_: a9.
_buttonb_: a10.
SELECTION-SCREEN END   OF LINE.
SELECTION-SCREEN END   OF BLOCK 1.
* -----------------------------------------------------------------------------
* Ende Block 1

* Beginn Block 2
* -----------------------------------------------------------------------------
SELECTION-SCREEN BEGIN OF BLOCK 2 WITH FRAME TITLE box1_2.
SELECTION-SCREEN SKIP 1.
SELECTION-SCREEN BEGIN OF LINE.
_buttona_: a11.
_buttonb_: a12.
SELECTION-SCREEN END   OF LINE.
SELECTION-SCREEN SKIP 1.
SELECTION-SCREEN BEGIN OF LINE.
_buttona_: a13.
SELECTION-SCREEN END   OF LINE.
SELECTION-SCREEN SKIP 1.
SELECTION-SCREEN END   OF BLOCK 2.
* -----------------------------------------------------------------------------
* Ende Block 2

* Beginn Block 3
* -----------------------------------------------------------------------------
SELECTION-SCREEN BEGIN OF BLOCK 3 WITH FRAME TITLE box1_3.
SELECTION-SCREEN SKIP 1.
SELECTION-SCREEN BEGIN OF LINE.
_buttona_: a14.
_buttonb_: a15.
SELECTION-SCREEN END   OF LINE.
SELECTION-SCREEN SKIP 1.
SELECTION-SCREEN BEGIN OF LINE.
_buttona_: a16.
_buttonb_: a17.
SELECTION-SCREEN END   OF LINE.
SELECTION-SCREEN SKIP 1.
SELECTION-SCREEN BEGIN OF LINE.
_buttona_: a18.
_buttonb_: a19.
SELECTION-SCREEN END   OF LINE.
SELECTION-SCREEN SKIP 1.
SELECTION-SCREEN BEGIN OF LINE.
_buttona_: a20.
_buttonb_: a21.
SELECTION-SCREEN END   OF LINE.
SELECTION-SCREEN SKIP 1.
SELECTION-SCREEN BEGIN OF LINE.
_buttona_: a22.
_buttonb_: a23.
SELECTION-SCREEN END   OF LINE.
SELECTION-SCREEN SKIP 1.
SELECTION-SCREEN BEGIN OF LINE.
_buttona_: a24.
SELECTION-SCREEN END   OF LINE.
SELECTION-SCREEN END   OF BLOCK 3.
* -----------------------------------------------------------------------------
* Ende Block 3
SELECTION-SCREEN SKIP 1.

*SELECTION-SCREEN BEGIN OF BLOCK 4 WITH FRAME.
*SELECTION-SCREEN BEGIN OF LINE.
*SELECTION-SCREEN COMMENT 1(5) lv_icon1.
*SELECTION-SCREEN COMMENT 6(77) lv_text1.
*SELECTION-SCREEN END   OF LINE.
*SELECTION-SCREEN BEGIN OF LINE.
*SELECTION-SCREEN COMMENT 1(5) lv_icon2.
*SELECTION-SCREEN COMMENT 6(77) lv_text2.
*SELECTION-SCREEN END   OF LINE.
*SELECTION-SCREEN BEGIN OF LINE.
*SELECTION-SCREEN COMMENT 1(5) lv_icon3.
*SELECTION-SCREEN COMMENT 6(77) lv_text3.
*SELECTION-SCREEN END   OF LINE.
*SELECTION-SCREEN END   OF BLOCK 4.
SELECTION-SCREEN END OF SCREEN 101.
***************************************************************************

*-- Reiter-Seite 2
SELECTION-SCREEN BEGIN OF SCREEN 102 AS SUBSCREEN.
SELECTION-SCREEN BEGIN OF BLOCK 9 WITH FRAME TITLE box2_1.
SELECTION-SCREEN SKIP 1.
SELECTION-SCREEN BEGIN OF LINE.
_buttona_: b1.
SELECTION-SCREEN END   OF LINE.
SELECTION-SCREEN END   OF BLOCK 9.
SELECTION-SCREEN END OF SCREEN 102.
****************************************************************************


*-- Tab Block
SELECTION-SCREEN BEGIN OF TABBED BLOCK uno FOR 35 LINES.
SELECTION-SCREEN TAB (20) reiter1 USER-COMMAND ucomm1
DEFAULT SCREEN 101.
SELECTION-SCREEN TAB (20) reiter2 USER-COMMAND ucomm2
DEFAULT SCREEN 102.
SELECTION-SCREEN END OF BLOCK uno.
****************************************************************************


INITIALIZATION.
reiter1 = 'Fehlersuchreports'.
reiter2 = 'Auswertungsreports'.

box1_1 = 'Diverse'.
box1_2 = 'Dienstreisen'.
box1_3 = 'Kurzarbeit'.

box2_1 = 'Allgemein'.
****************************************************************************

*  lv_icon1 = icon_businav_objects.
*  lv_icon2 = icon_businav_objects_outdate.
*  lv_icon3 = icon_businav_objects_orphan.
*lv_icon4 = ICON_LED_YELLOW.
*lv_icon5 = ICON_LED_RED.
*
*  lv_text1 = 'Auswertung mit geringem Einfluss auf die Abrechnung'.
*  lv_text2 = 'Abrechnungskritische Auswertung zum Grundlohn'.
*  lv_text3 = 'Abrechnungskritische Auswertung zur Restabrechnung'.
****************************************************************************

*-- Reiter-Seite 1
  _text_ a1 icon_businav_objects_outdate
            'Fehlender Pausenabzug'
            'ZPTR_V2_XYZA' space.
  _text_ a2 icon_businav_objects
            'Stempelzeit ausreisser'
            'ZPTR_V2_XYZB' space.
ALLE BUTTONS werden (Code gekürzt)
  ****************************************************************************

*-- Reiter-Seite 2
  _text_ b1 icon_display
            'gelöschte Mehrarbeitsanträge'
            'ZPS_GELOESCHTE_MEHRARBEIT' space.
****************************************************************************


AT SELECTION-SCREEN.
*-- Drucktasten auswerten
  CASE sy-ucomm(2).
*-- Report aufrufen
    WHEN 'PB'.
*-- Reportnamen ermitteln
      CONCATENATE 'RP' sy-ucomm+2(4) INTO var.
      ASSIGN (var) TO <rep>.
*-- Soll der Report sofort ausgeführt werden?
      CONCATENATE 'IM' sy-ucomm+2(4) INTO var.
      ASSIGN (var) TO <skip>.

      IF <skip> = space.
*-- Aufruf über Selektionsbild
*        SUBMIT (<rep>) VIA SELECTION-SCREEN AND RETURN.
         SUBMIT (<rep>) VIA SELECTION-SCREEN AND RETURN.
      ELSE.
*-- Sofortige Ausführung
        SUBMIT (<rep>) AND RETURN.
      ENDIF.

    WHEN 'IN'.
*-- Dokumentation zum Report aufrufen
      CONCATENATE 'RP' sy-ucomm+2(4) INTO var.
      ASSIGN (var) TO <rep>.
      CALL FUNCTION 'RS_TOOL_ACCESS'
        EXPORTING
          operation           = 'DOCS'
          object_name         = <rep>
          object_type         = 'PROG'
        EXCEPTIONS
          invalid_object_type = 1
          OTHERS              = 2.

  ENDCASE.

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


Re: Zurück Button muss 2 mal betätigt werden

Beitrag von scotthall (ForumUser / 6 / 0 / 0 ) »
Hab mittlerweile eine Lösung des Problems.

Nach dem Submit rufe ich einen angefügten Screen 100 auf, den ich zuvor um die komplette Seite gelegt habe.

Über einen zusätzlichen Parameter bei Sumbit würde das ganze sauberer gehen?

Re: Zurück Button muss 2 mal betätigt werden

Beitrag von scotthall (ForumUser / 6 / 0 / 0 ) »
Mittlerweile habe ich also zum Einstieg:

Code: Alles auswählen.

SELECTION-SCREEN BEGIN OF SCREEN 100.
SELECTION-SCREEN BEGIN OF TABBED BLOCK uno FOR 35 LINES.
SELECTION-SCREEN TAB (20) reiter1 USER-COMMAND ucomm1
DEFAULT SCREEN 101.
SELECTION-SCREEN TAB (20) reiter2 USER-COMMAND ucomm2
DEFAULT SCREEN 102.
SELECTION-SCREEN END OF BLOCK uno.
SELECTION-SCREEN END OF SCREEN 100.
Nach Submit habe ich nun unterschiedliche weitere Wege versucht:

Code: Alles auswählen.

SUBMIT ('ZTW_ZPTR_V2_REPORTLISTE') VIA SELECTION-SCREEN.
Damit funktioniert die SAP interne Navigation sauber, aber natürlich lande ich immer in Reiter 1 der Übersicht.

Code: Alles auswählen.

CALL SELECTION-SCREEN 100.
Damit komme ich mit 1 maligem Klicken des Zurück Buttons zur Übersicht und lande auch im richtigen Reiter.
ABER: Ein weiteres mal zurück klicken bringt mich natürlich wieder zu dem zuvor aufgerufenem Report und nicht zum Beispiel zurück ins SA38.

Alle Versuche über LEAVE SCREEN oder ähnliches geben Fehler aus, dass diese in Subscreens nicht erlaubt sind.


Der Fehler ist also weiterhin nicht zufriedenstellend gelöst.

Re: Zurück Button muss 2 mal betätigt werden

Beitrag von ewx (Top Expert / 4843 / 311 / 638 ) »
Ich mag das zwar selber nicht, wenn mir jemand auf mein Problem mit einem "Mach es doch anders" antwortet, aber ich machs trotzdem... ;)
Schau dir doch mal die SE43 an!
Da kannst du ein schickes Menü bauen.
Es ist auch wesentlich flexibler als das Button-Menu.
Wenn nämlich ein Report rausfällt, dann hast du entweder ein Lücke in dem Button-Menü oder du musst wieder umständlich alle anderen Buttons wieder neu einpassen.
Alternativ wäre es wahrscheinlich auch geschickter, selbst einen Tree zu bauen:
http://tricktresor.de/content/index.php ... 27&aID=340
http://tricktresor.de/content/index.php ... 20&aID=174
Hilft dir bei deinem Problem zwar auch nicht weiter, löst es aber trotzdem... 8)

Re: Zurück Button muss 2 mal betätigt werden

Beitrag von scotthall (ForumUser / 6 / 0 / 0 ) »
Hallo ewx,

danke erstmal für deine Antwort, denn grundsätzlich habe ich gegen "mach es doch anders" Vorschläge nichts.

In diesem konkreten Fall würde ich jedoch gerne bei der Buttonliste und den Reitern bleiben, kann daher mit einer Baumstruktur eher weniger anfangen.

Den Vorschlag mit SE43 würde ich als mögliche Notlösung in Betracht ziehen, aber auch hier wäre ich mit einer Problemlösung von oben natürlich zufriedener.

Vielleicht findet sich ja noch jemand, der helfen könnte.

Re: Zurück Button muss 2 mal betätigt werden

Beitrag von Unit605 (Expert / 975 / 37 / 93 ) »
Nur so als Tip/Hinweis:

Wenn Du mit Tabreiter/Subscreen arbeitest, wird das Ereignis "At Selection-Screen" zweimal ( oder auch mindestens zweimal) durchlaufen. Im Report für den Subscreen und den Standardscreen 1000.

Evtl. musst Du also auch die Dynpro-Nr. (SY-DYNNR) abfragen.

Re: Zurück Button muss 2 mal betätigt werden

Beitrag von scotthall (ForumUser / 6 / 0 / 0 ) »
Unit605 hat geschrieben:Nur so als Tip/Hinweis:

Wenn Du mit Tabreiter/Subscreen arbeitest, wird das Ereignis "At Selection-Screen" zweimal ( oder auch mindestens zweimal) durchlaufen. Im Report für den Subscreen und den Standardscreen 1000.

Evtl. musst Du also auch die Dynpro-Nr. (SY-DYNNR) abfragen.
Mein GOTT!!!
Genau das löst das Problem.

Hab nun eine Abfrage auf SY-DYNNR drin nach dem Screen 100 in meinem Fall und alles funktioniert problemlos.

Danke für die Hilfe!

Re: Zurück Button muss 2 mal betätigt werden

Beitrag von Unit605 (Expert / 975 / 37 / 93 ) »
Freut mich, daß wir Dein/dieses Problem lösen konnten. :D

Vor allen Dingen freue ich mich über die Rückmeldung :up:

Seite 1 von 1

Vergleichbare Themen

1
Antw.
1950
Views
Button für onInputprocessing wird nicht bei Return betätigt.
von sapfuns » 28.02.2006 14:00 • Verfasst in Web-Dynpro, BSP + BHTML
3
Antw.
2479
Views
Zurück-Button einblenden
von dennsen » 14.06.2007 12:36 • Verfasst in ABAP® für Anfänger
3
Antw.
2968
Views
Leave to Transaction und der Zurück-Button
von Shugg » 01.07.2020 15:02 • Verfasst in Dialogprogrammierung
1
Antw.
272
Views
statt Button F8 Button Close setzen
von HH_ABAP » 18.05.2023 21:16 • Verfasst in ABAP® für Anfänger
5
Antw.
4480
Views
Per Button klick ein symbol in den Button einfügen
von alex1986 » 03.08.2011 15:57 • Verfasst in ABAP® für Anfänger

Über diesen Beitrag


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

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.

Unbeantwortete Forenbeiträge

Daten an Tabelle binden
vor 4 Stunden von Bright4.5 1 / 71
aRFC im OO-Kontext
vor 4 Wochen von ralf.wenzel 1 / 1718
Hilfe bei SWEC/SWE2
letzen Monat von retsch 1 / 8323