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 ) »
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

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


Re: Prüfung Checkboxen im Selektionsbildschirm

Beitrag von ewx (Top Expert / 4849 / 313 / 642 ) »
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 ) »
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 / 4849 / 313 / 642 ) »
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 / 4399 / 223 / 1182 ) »
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.18
Basis: 7.50

Re: Prüfung Checkboxen im Selektionsbildschirm

Beitrag von woddstock99 (ForumUser / 16 / 0 / 0 ) »
ich danke allen aber

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

Re: Prüfung Checkboxen im Selektionsbildschirm

Beitrag von DeathAndPain (Top Expert / 1952 / 259 / 413 ) »
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 / 4399 / 223 / 1182 ) »
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.01.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.18
Basis: 7.50

Re: Prüfung Checkboxen im Selektionsbildschirm

Beitrag von ewx (Top Expert / 4849 / 313 / 642 ) »
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 / 1952 / 259 / 413 ) »
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 / 4099 / 128 / 941 ) »
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

Vergleichbare Themen

0
Antw.
1354
Views
Checkboxen im ALV-Tree
von Ratazong » 05.07.2006 18:17 • Verfasst in ABAP Objects®
4
Antw.
2761
Views
CL_SALV_TREE - Performance der Checkboxen
von sapperlot22 » 10.06.2013 13:53 • Verfasst in ABAP Objects®
3
Antw.
2563
Views
Anlegen von Checkboxen und Eingabefeldern
von Lehmo » 09.01.2007 15:54 • Verfasst in ABAP Objects®
1
Antw.
1378
Views
Checkboxen in FuBa POPUP_GET_VALUES_USER_HELP
von Nordlicht » 15.12.2014 08:24 • Verfasst in ABAP® Core
6
Antw.
3027
Views
Checkboxen dynamisch erstellen
von mareikemei92 » 14.11.2018 10:57 • Verfasst in ABAP® Core

Aktuelle Forenbeiträge

Regex in where
vor 9 Stunden von edwin 7 / 166
Daten an Tabelle binden
vor 22 Stunden von Bright4.5 3 / 1487

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.

Aktuelle Forenbeiträge

Regex in where
vor 9 Stunden von edwin 7 / 166
Daten an Tabelle binden
vor 22 Stunden von Bright4.5 3 / 1487

Unbeantwortete Forenbeiträge

aRFC im OO-Kontext
vor 5 Wochen von ralf.wenzel 1 / 3261
Hilfe bei SWEC/SWE2
September 2024 von retsch 1 / 9822