Prüfung Checkboxen im Selektionsbildschirm

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

Prüfung Checkboxen im Selektionsbildschirm

Beitrag von woddstock99 (ForumUser / 16 / 0 / 0 ) » 22. Jan 2019 10:23

Hallo zusammen ,

ich habe 4 Checkboxen zur Auswahl . Es soll mindestens eine ausgewählt sein . Hat der User keine ausgewählt soll eine Fehlermeldung kommen und der Selektionsbildschirm wieder aufgerufen werden . Wie muss ich diese Prüfung programmieren ? Hab schon alles mögliche probiert aber bekomme es bis jetzt nicht hin den Selektionsbildschirm wieder auf zu rufen .

Die normalen Felder prüfe ich z.b. so

AT SELECTION-SCREEN on p_werk.
select single * from t001w
where werks eq p_werks.
if sy-subrc ne 0.
MESSAGE 'Werk nicht gültig' TYPE 'E'.
endif.

Aber wie prüfe ich die 4 Checkboxen ob hier eine Ausgewählt wurde ??


Sorry aber ich bin in Sachen ABAP blutiger Anfänger :( .
Würde mich über eine Beispiel von erfahrenen Entwicklern freuen

Danke .
VG


Re: Prüfung Checkboxen im Selektionsbildschirm

Beitrag von ewx (Top Expert / 3982 / 164 / 373 ) » 22. Jan 2019 10:38

1. Die Prüfung auf Werk ist überflüssig, wenn du ihn wie folgt definierst:

Code: Alles auswählen.

PARAMETERS p_werk LIKE marc-werks VALUE CHECK.
2. Wenn maximal ein Eintrag deiner vier Checkboxen auswählbar sein soll, dann nimmst du RADIOBUTTONS:

Code: Alles auswählen.

PARAMETERS p_opt1 RADIOBUTTON GROUP chk DEFAULT 'X'.
PARAMETERS p_opt2 RADIOBUTTON GROUP chk.
3. Ein aktivierter Radiobutton oder Checkbox hat den Wert 'X'.

4. Wäre schön, wenn du geschrieben hättest, was du probiert hast.

Folgende Benutzer bedankten sich beim Autor ewx für den Beitrag:
DeathAndPain


Re: Prüfung Checkboxen im Selektionsbildschirm

Beitrag von woddstock99 (ForumUser / 16 / 0 / 0 ) » 22. Jan 2019 12:27

Danke für deine Antwort .

Nein es können auch alle 4 Checkboxen angeklickt werden .

ich wollte es z.b. so lösen

START-OF-SELECTION.

*IF p_BTMA = ' ' and p_BTMB = ' ' and p_BTMC = ' ' and p_BTMD = ' '.
* MESSAGE 'Eine Betäubungsmittelkategorie muss ausgewählt werden' TYPE 'E'.

*LEAVE TO SCREEN 0
*ENDIF.

Funktioniert aber nicht . Er bringt zwar eine Fehlermeldung aber er ruft den Selektionsbildschirm nicht mehr auf :( .

Re: Prüfung Checkboxen im Selektionsbildschirm

Beitrag von ewx (Top Expert / 3982 / 164 / 373 ) » 22. Jan 2019 12:42

woddstock99 hat geschrieben: Funktioniert aber nicht . Er bringt zwar eine Fehlermeldung aber er ruft den Selektionsbildschirm nicht mehr auf :( .
Kein Wunder, bei LEAVE TO SCREEN 0... ;)

Folgende Benutzer bedankten sich beim Autor ewx für den Beitrag:
DeathAndPain


Re: Prüfung Checkboxen im Selektionsbildschirm

Beitrag von a-dead-trousers (Top Expert / 3233 / 81 / 813 ) » 22. Jan 2019 13:26

Prüfungen im Selectionscreen sollte man, meiner Meinung nach, im Ereignis AT SELECTION-SCREEN (ohne weiteren Zusatz) durchführen.
Was Fehlermeldungen im START-OF-SELECTION betrifft:
Wenn man sich die Hilfe zu Message durchließt (und dabei keine Gedankendreher bekommt) wird man feststellen, dass alle E-Meldungen, wenn sie nicht in PAI geworfen werden, zum ABBRUCH des Programms führen.
Ich verwende bei solchen Fällen immer MESSAGE ... TYPE 'S' DISPLAY LIKE 'E'. Dann klappts auch im PBO und schaut so aus wie eine Fehlermeldung.
Was die Rückkehr zum Selectionscreen betrifft:
Einfach im START-OF-SELECTION und eventuell END-OF-SELECTION nichts machen und man landet wieder am Selectionscreen.

lg ADT

EDIT: Mit nichts meine ich, nichts was einen Screenverarbeitung auslöst (CALL SCREEN, LEAVE, WRITE usw.)
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

Re: Prüfung Checkboxen im Selektionsbildschirm

Beitrag von woddstock99 (ForumUser / 16 / 0 / 0 ) » 22. Jan 2019 15:02

ich danke allen aber

@a-dead-trousers . Bist bist mein Held :) . DANKE :)

Re: Prüfung Checkboxen im Selektionsbildschirm

Beitrag von DeathAndPain (Top Expert / 1064 / 123 / 232 ) » 22. Jan 2019 16:06

Also ich muss a-dead-trousers hier doch ein Stück weit widersprechen.
Prüfungen im Selectionscreen sollte man, meiner Meinung nach, im Ereignis AT SELECTION-SCREEN (ohne weiteren Zusatz) durchführen.
Nicht "ohne weiteren Zusatz", sondern mit dem Zusatz "ON". Bei einem einzelnen Feld lautet der Zusatz "ON field". Im Falle des Threaderstellers sollte dieser einen BLOCK um seine Checkboxen erstellen (kann ja ohne Rahmen, d.h. unsichtbar sein). Der Zusatz lautet dann "ON BLOCK blockname".
Wenn man sich die Hilfe zu Message durchließt (und dabei keine Gedankendreher bekommt) wird man feststellen, dass alle E-Meldungen, wenn sie nicht in PAI geworfen werden, zum ABBRUCH des Programms führen.
Ein Report hat kein PAI (jedenfalls kein explizit definiertes). Stattdessen verwendet man hier die o.g. Zusätze zum AT SELECTION-SCREEN.
Ich verwende bei solchen Fällen immer MESSAGE ... TYPE 'S' DISPLAY LIKE 'E'. Dann klappts auch im PBO und schaut so aus wie eine Fehlermeldung.
Verwendet man die o.g. Zusätze, dann braucht man diesen Trick nicht und kann einfach einen richtigen MESSAGE ... TYPE 'E' machen. Dabei wird dann auch nur genau das fehlerhafte Feld (bzw. alle Felder des fehlerhaften Blocks) wieder eingabebereit.

Und um eines zu betonen: AT SELECTION-SCREEN ist mitnichten "im PBO"! Außer wenn man AT SELECTION-SCREEN OUTPUT schreibt.

Re: Prüfung Checkboxen im Selektionsbildschirm

Beitrag von a-dead-trousers (Top Expert / 3233 / 81 / 813 ) » 22. Jan 2019 16:14

DeathAndPain hat geschrieben:Also ich muss a-dead-trousers hier doch ein Stück weit widersprechen.
Also daass wundert mich jetzt aber :shock:
DeathAndPain hat geschrieben:
a-dead-trousers hat geschrieben:Prüfungen im Selectionscreen sollte man, meiner Meinung nach, im Ereignis AT SELECTION-SCREEN (ohne weiteren Zusatz) durchführen.
Nicht "ohne weiteren Zusatz", sondern mit dem Zusatz "ON". Bei einem einzelnen Feld lautet der Zusatz "ON field". Im Falle des Threaderstellers sollte dieser einen BLOCK um seine Checkboxen erstellen (kann ja ohne Rahmen, d.h. unsichtbar sein). Der Zusatz lautet dann "ON BLOCK blockname".
Tröööt! Falsch! Lies die Hilfe! Ohne Zusatz kann man ALLE Felder prüfen. Klar mit Rahmen gehts auch, aber oft möchte man dann auch noch andere Felder korrigieren und das geht dann nicht weil sie gesperrt sind.
DeathAndPain hat geschrieben:
a-dead-trousers hat geschrieben:Wenn man sich die Hilfe zu Message durchließt (und dabei keine Gedankendreher bekommt) wird man feststellen, dass alle E-Meldungen, wenn sie nicht in PAI geworfen werden, zum ABBRUCH des Programms führen.
Ein Report hat kein PAI (jedenfalls kein explizit definiertes). Stattdessen verwendet man hier die o.g. Zusätze zum AT SELECTION-SCREEN.
Was glaubst du ist AT SELECTION-SCREEN (bis auf ON OUTPUT) "technisch"?
DeathAndPain hat geschrieben:
a-dead-trousers hat geschrieben:Ich verwende bei solchen Fällen immer MESSAGE ... TYPE 'S' DISPLAY LIKE 'E'. Dann klappts auch im PBO und schaut so aus wie eine Fehlermeldung.
Verwendet man die o.g. Zusätze, dann braucht man diesen Trick nicht und kann einfach einen richtigen MESSAGE ... TYPE 'E' machen. Dabei wird dann auch nur genau das fehlerhafte Feld (bzw. alle Felder des fehlerhaften Blocks) wieder eingabebereit.

Und um eines zu betonen: AT SELECTION-SCREEN ist mitnichten "im PBO"! Außer wenn man AT SELECTION-SCREEN OUTPUT schreibt.
Hab ich nie behauptet. Aber der START-OF_SELECTION ist im PBO. Wenn man da was prüfen möchte (z.B. ob überhaupt etwas selektiert wurde) und man es als Fehler darstellen möchte, kommt man um das DISPLAY LIKE nicht herum.

Generell: Weniger einmischen und mehr nachdenken! Danke!
Zuletzt geändert von a-dead-trousers am 22. Jan 2019 16:19, insgesamt 2-mal geändert.
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

Re: Prüfung Checkboxen im Selektionsbildschirm

Beitrag von ewx (Top Expert / 3982 / 164 / 373 ) » 22. Jan 2019 16:18

Das mit dem BLOCK-Zusatz ist ein super Hinweis!
DeathAndPain hat geschrieben: Ein Report hat kein PAI (jedenfalls kein explizit definiertes). Stattdessen verwendet man hier die o.g. Zusätze zum AT SELECTION-SCREEN.
Doch. Ein Report hat ein PBO (Process Before Output) und ein PAI (Process After Input).
PBO = AT SELECTION-SCREEN OUTPUT
PAI = AT SELECTION-SCREEN.
Nur weil sie anders heißen, ist es trotzdem genau das: PBO und PAI.

Re: Prüfung Checkboxen im Selektionsbildschirm

Beitrag von DeathAndPain (Top Expert / 1064 / 123 / 232 ) » 22. Jan 2019 17:09

Was denkst Du, weshalb ich "(jedenfalls kein explizit definiertes)" geschrieben habe? :wink:

Na klar wird da ein Dynpro 1000 generiert, das ein PBO und ein PAI hat, aber die sind nicht als solche im Report deklariert, sondern nur indirekt über AT SELECTION-SCREEN zu beeinflussen. Die 1:1-Zuordnung, die Du geschrieben hast, haut so auch nicht hin. So liegt AT SELECTION-SCREEN zwar im PAI-Teil des generierten Dynpros, aber es ist nicht der PAI-Teil des generierten Dynpros. In dem liegt auch (automatisch generierte) Logik etwa zum Start von per FUNCTION KEY deklarierten Drucktasten oder zum Start des START-OF-SELECTION-Blocks (den man selbst letztlich auch zum PAI rechnen kann).
adt hat geschrieben:Aber der START-OF_SELECTION ist im PBO. Wenn man da was prüfen möchte (z.B. ob überhaupt etwas selektiert wurde) und man es als Fehler darstellen möchte, kommt man um das DISPLAY LIKE nicht herum.
Also das halte ich beides für ein Gerücht. Der START-OF-SELECTION findet doch nach der Benutzereingabe statt. Damit kann er niemals im PBO sein, sondern ist zwingend im PAI! Na klar, wenn man im START-OF-SELECTION noch eine Prüfung machen möchte (die dort eigentlich nicht hingehört), dann muss man tricksen. Es gibt aber keinen Grund, die vom Threadersteller gewünschte Prüfung im START-OF-SELECTION zu platzieren.

Ein MESSAGE ... TYPE 'E' führt halt auch im PAI zu einem Hängenbleiber, wenn man es nicht in einem Verarbeitungsblock bringt, der einem bestimmten Feld oder einer CHAIN aus Feldern zugeordnet ist. Bei Reports bewerkstelligt man dies halt durch den ON-Zusatz des AT SELECTION-SCREEN.

Re: Prüfung Checkboxen im Selektionsbildschirm

Beitrag von black_adept (Top Expert / 3254 / 54 / 573 ) » 22. Jan 2019 18:10

Irgendwie fehlt mir jetzt Ralfs Hinweis darauf, dass DYNPROs und MESSAGEs sowieso nicht verwendet werden sollen und stinken. Und wenn man sie doch verwendet sollten Sie in irgend ein völlig überdimensioniertes Designpattern gestopft und nur noch per Interface angesprochen werden.

Folgende Benutzer bedankten sich beim Autor black_adept für den Beitrag:
DeathAndPain

live long and prosper
Stefan Schmöcker

email: stefan@schmoecker.de

Seite 1 von 1

Aktuelle Forenbeiträge

Datenquelle einer Query ändern
vor 20 Stunden von Level83 3 / 64
Spaltennummer-Umwandlung Excel.
Gestern von il.ost 7 / 168
Black out im Bereich Objekterzeugung bei Vererbung gelöst
Gestern von Thomas R. 4 / 101

Unbeantwortete Forenbeiträge

Transaktion VL06 Verteilung ausgehender Lieferungen
vor 2 Tagen von SAP_ENTWICKLER 1 / 53
FuBa EXIT_SAPLVEDC_003 S/4 1809
vor 4 Tagen von SAP_ENTWICKLER 1 / 87
CDS VIEW mit BOPF Framework update
vor einer Woche von Abapanfänger 1 / 84
SAP Document Builder: Dokumenterzeugung
vor einer Woche von robin.heidrich 1 / 201
Lohnsteuerbescheinigung
vor einer Woche von kaim77 1 / 120