Report vor Selektion verlassen

Benutzeroberflächen in SAP®-Systemen.
5 Beiträge • Seite 1 von 1
5 Beiträge Seite 1 von 1

Report vor Selektion verlassen

Beitrag von dermannvomberg (ForumUser / 7 / 0 / 0 ) »
Hallo zusammen,

ich habe einen Report geschrieben, bei dem das Selektionsdynpro abhängig von der Wahl eines Radiobuttons dargestellt wird. Bevor die Selektion beginnt, sollen die Eingaben der User geprüft werden. Die Prüfroutinen habe ich bereits. mein Problem ist, dass ich nicht weis, an welcher Stelle ich die Prüfung vornehmen soll.

Der Report funktioniert folgendermaßen:

Radiobutton A ist default X. Wenn dieser gesetzt ist sollen die Prüfroutinen nicht durchlaufen werden (es stehen nur weitere Radiobuttons zur Selektion zur Verfügung).
Wenn Radiobutton B gewählt ist, werden Eingabefelder eingeblendet. Diese sollen überprüft werden. Überprüfe ich diese im PAI (At selection screen on...) werden die Prüfroutinen korrekt durchlaufen. Das Problem an der Sache ist aber folgendes: Wenn ich jetzt wieder auf den Radiobutton A klicke, werden die Eingabefelder wieder ausgeblendet und die Prüfroutine nicht durchlaufen (was korrekt ist), da diese in nur Abhängigkeit von Radiobutton B durchlaufen wird (if B ='X'). Wenn ich jetzt wieder auf B klicke wird die Routine wieder durchlaufen, aber bevor die Eingabefelder eingeblendet werden (ist ja schlieslich PAI). Meldet die Prüfroutine jetzt einen Fehler werden die beiden Radiobuttons grau und die Eingabefelder werden nicht eingeblendet. Ich kann meinen Falscheingabe jetzt nicht mehr korrigieren, da mir die Felder nicht zur Verfügung stehen.

Ich habe hier schon was gefunden. http://www.abapforum.com/forum/viewtopi ... sen#p48545 Damit bekomme ich am Programmende ab einen Laufzeitfehler.

Ich poste mal noch ein bisschen was von meinem Quellcode:

Code: Alles auswählen.

* Selektionsoptionen - werden immer angezeigt
selection-screen begin of block choice with frame title text-s24.
selection-screen skip.
selection-screen begin of line.
selection-screen position 1. "detailierte Selektion
parameters se_slow radiobutton group wahl user-command fst. "Button B
selection-screen comment 4(21) text-s05.
selection-screen position 26. "schnelle Selektion
parameters se_fast radiobutton group wahl default 'X'. "Button A
selection-screen comment 29(18) text-s06.
selection-screen end of line.
selection-screen end of block choice.

...

*Hier wird der Selektionsscreen dynamisch aufbereitet
at selection-screen output.
  if se_slow = 'X'.
    loop at screen.
      if screen-group1 = 'SLW'.
        screen-active = 1.
      elseif screen-group1 = 'FST'.
        screen-active = 0.
      endif.
      modify screen.
    endloop.

  elseif se_fast = 'X'.
    loop at screen.
      if screen-group1 = 'SLW'.
        screen-active = 0.
      elseif screen-group1 = 'FST'.
        screen-active = 1.
      endif.
      modify screen.
    endloop.
  endif.

*diese Prüfroutine soll durchlaufen werden
at selection-screen on se_dok.
  if se_slow = 'X'. " wenn Button B = 'X'
    clear g_result.
    if not se_dok is initial.
      loop at se_dok.
        call method zcl_report_service=>check_doc
          exporting
            im_doc_typ = se_dok-low
          importing
            ex_result  = g_result.

        if g_result = '0'.
          message e121(ng).
        endif.
        "set cursor field 'se_dok'.
        clear se_dok.
      endloop.
    endif.
  endif.
Mein Gedanke war, dass die Prüfung vor dem Programmstart (also vor start-of-selection) durchlaufen werden soll. Prüfe ich danach, komme ich nicht mehr zu meinem Selektionsbildschrim zurück.

Ich hoffe ich habe mich halbwegs verständlich ausgedrückt.
Vielen Dank...

Gruß

vomBerg

Noch eine kleine Ergänzung: Eigentlich suche ich ein Ereignis, dass vor start-of-selection statt findet. PAI ist ungeeignet, da dieser ggf. mehrfach durchlaufen wird.
Zuletzt geändert von dermannvomberg am 07.10.2010 13:28, insgesamt 1-mal geändert.

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


Re: Report vor Selektion verlassen

Beitrag von casman (Specialist / 420 / 1 / 63 ) »
Hmmm, leider hab ich grad keine Zeit das mal genauer auszutesten, aber versuch doch einfach mal, dir über eine Variable zu merken, ob du die Felder für Button B auf active gesetzt hast, nur dann durchläufst du deine Prüfung. Das schließt natürlich nicht aus, dass es noch weit elegantere Möglichkeiten gibt... :)

Re: Report vor Selektion verlassen

Beitrag von dermannvomberg (ForumUser / 7 / 0 / 0 ) »
So, nach langem probieren hab ichs doch hinbekommen. Hier der Code:

Code: Alles auswählen.

* Überprüfen des Dokumenttyps
at selection-screen on se_dok.
  loop at screen.
    if se_slow = 'X'.
      if screen-group1 = 'SLW' and screen-active = 1.
        clear g_result.
        if not se_dok is initial.
          loop at se_dok.
            call method zcl_report_service=>check_doc
              exporting
                im_doc_typ = se_dok-low
              importing
                ex_result  = g_result.

            if g_result = '0'.
              message e121(ng).
            endif.
            "set cursor field 'se_dok'.
            clear se_dok.
          endloop.
        endif.
      endif.
    endif.
  endloop.
Vor beginn der Prüfung mach ich einfach einen loop über den screen. Wenn mein Radiobutton = 'X' und Wenn die Felder angezeigt werden, dann führe die Prüfung durch. Eigentlich recht einfach. Hab den Baum wohl vor lauter Wäldern nicht gesehen.

Code: Alles auswählen.

    if se_slow = 'X'.
      if screen-group1 = 'SLW' and screen-active = 1.
Das mit der Variable hat nicht funktioniert. Diese müsste ich im loop bei at selection-screen output setzen. Im loop wird die Variable dann aber irgendwann aber wieder überschreiben.

Trotzdem danke.

Gruß...

Re: Report vor Selektion verlassen

Beitrag von Prego (Specialist / 106 / 22 / 1 ) »
Wir machen so etwas immer so:

[code]
*-------------------------------------------------------------------------------*
* Start der Prüfungen der Eingaben auf dem Startbildschirm
*-------------------------------------------------------------------------------*
AT SELECTION-SCREEN.
* nur wenn der Report gestartet werden soll
CASE sscrfields-ucomm.
WHEN 'ONLI'.
*-------------------------------------------------------------------------------*
* Prüfungen bei Projektstücklisten
*-------------------------------------------------------------------------------*
IF rb_prj IS NOT INITIAL.
[/code]

wobei hier rb_prj einer der Radiobuttons ist. In dem konkreten Fall blenden wir auch bestimmte SOP's ein und aus, wenn der Benutzer die Auswahl ändert.

Ciao
Jens

Re: Report vor Selektion verlassen

Beitrag von Ratazong (Specialist / 144 / 1 / 14 ) »
Geht eigentlich ganz einfach:

Code: Alles auswählen.

PARAMETERS: px_opt01 RADIOBUTTON GROUP rad1 DEFAULT 'X' USER-COMMAND rad.
"+weitere

AT SELECTION-SCREEN.
  CHECK sy-ucomm <> 'RAD'.
  PERFORM check_parameters.
Dadurch wird nicht beim Umschlaten der Radiobuttons geprüft.

Grüße

Seite 1 von 1

Vergleichbare Themen

1
Antw.
2017
Views
subscreen verlassen
von centauro_ernst » 25.05.2016 10:52 • Verfasst in Dialogprogrammierung
1
Antw.
3049
Views
SALV-Popup verlassen
von ralf.wenzel » 13.12.2014 17:24 • Verfasst in ABAP Objects®
8
Antw.
3287
Views
ALV-Liste kurzeitig verlassen ???
von the » 19.02.2007 09:54 • Verfasst in ABAP® für Anfänger
2
Antw.
1511
Views
double_click event verlassen
von tom1986 » 20.02.2009 09:19 • Verfasst in ABAP Objects®
4
Antw.
3991
Views
TabStrip Reiter mit Mussfeldern verlassen
von Nordlicht » 14.08.2016 12:21 • Verfasst in Dialogprogrammierung

Ü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 13 Stunden von Bright4.5 1 / 269
aRFC im OO-Kontext
vor 4 Wochen von ralf.wenzel 1 / 1908
Hilfe bei SWEC/SWE2
letzen Monat von retsch 1 / 8511