Prüfung Checkboxen im Selektionsbildschirm


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

Moderatoren: Jan, Steff

Prüfung Checkboxen im Selektionsbildschirm

Beitragvon woddstock99 » 22.01.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
woddstock99
ForumUser
 
Beiträge: 16
Registriert: 22.01.2019, 09:05
Dank erhalten: 0 mal
Ich bin: Entwickler/in

Sponsor

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

Re: Prüfung Checkboxen im Selektionsbildschirm

Beitragvon ewx » 22.01.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.

Für diese Nachricht hat ewx einen Dank bekommen :
DeathAndPain
ewx
Top Expert
 
Beiträge: 3868
Registriert: 04.08.2003, 19:55
Wohnort: Schleswig-Holstein
Dank erhalten: 334 mal

Re: Prüfung Checkboxen im Selektionsbildschirm

Beitragvon woddstock99 » 22.01.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 :( .
woddstock99
ForumUser
 
Beiträge: 16
Registriert: 22.01.2019, 09:05
Dank erhalten: 0 mal
Ich bin: Entwickler/in

Re: Prüfung Checkboxen im Selektionsbildschirm

Beitragvon ewx » 22.01.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... ;)

Für diese Nachricht hat ewx einen Dank bekommen :
DeathAndPain
ewx
Top Expert
 
Beiträge: 3868
Registriert: 04.08.2003, 19:55
Wohnort: Schleswig-Holstein
Dank erhalten: 334 mal

Re: Prüfung Checkboxen im Selektionsbildschirm

Beitragvon a-dead-trousers » 22.01.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
a-dead-trousers
Top Expert
 
Beiträge: 3152
Registriert: 07.02.2011, 13:40
Dank erhalten: 778 mal
Ich bin: Entwickler/in

Re: Prüfung Checkboxen im Selektionsbildschirm

Beitragvon woddstock99 » 22.01.2019, 15:02

ich danke allen aber

@a-dead-trousers . Bist bist mein Held :) . DANKE :)
woddstock99
ForumUser
 
Beiträge: 16
Registriert: 22.01.2019, 09:05
Dank erhalten: 0 mal
Ich bin: Entwickler/in

Re: Prüfung Checkboxen im Selektionsbildschirm

Beitragvon DeathAndPain » 22.01.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.
DeathAndPain
Expert
 
Beiträge: 934
Registriert: 05.05.2006, 10:14
Dank erhalten: 218 mal
Ich bin: Entwickler/in

Re: Prüfung Checkboxen im Selektionsbildschirm

Beitragvon a-dead-trousers » 22.01.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.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.07
Basis: 7.40
a-dead-trousers
Top Expert
 
Beiträge: 3152
Registriert: 07.02.2011, 13:40
Dank erhalten: 778 mal
Ich bin: Entwickler/in

Re: Prüfung Checkboxen im Selektionsbildschirm

Beitragvon ewx » 22.01.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.
ewx
Top Expert
 
Beiträge: 3868
Registriert: 04.08.2003, 19:55
Wohnort: Schleswig-Holstein
Dank erhalten: 334 mal

Re: Prüfung Checkboxen im Selektionsbildschirm

Beitragvon DeathAndPain » 22.01.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.
DeathAndPain
Expert
 
Beiträge: 934
Registriert: 05.05.2006, 10:14
Dank erhalten: 218 mal
Ich bin: Entwickler/in

Re: Prüfung Checkboxen im Selektionsbildschirm

Beitragvon black_adept » 22.01.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.
live long and prosper
Stefan Schmöcker

email: stefan@schmoecker.de

Für diese Nachricht hat black_adept einen Dank bekommen :
DeathAndPain
black_adept
Top Expert
 
Beiträge: 3184
Registriert: 08.01.2003, 13:33
Wohnort: Lehrte ( bei Hannover )
Dank erhalten: 553 mal
Ich bin: Freiberufler/in


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

  Aktuelle Beiträge   
gelöst SALV - Layout wird nicht gezogen
vor 6 Stunden von ralf.wenzel 0 Antw.
ADRMAS-Segmente vorbefüllen
vor 10 Stunden von lausek 0 Antw.
MS Word nicht als SAPscript-Editor verwenden
vor 11 Stunden von DeathAndPain 2 Antw.
EWM: HU mit RBG anhand von Produkt-LB bewegen
Gestern von TimTo 0 Antw.
BADI Impl. cin_plug_in_to_migo deaktivieren
Gestern von zzcpak 1 Antw.

  Ähnliche Beiträge beta
Checkboxen im ALV-Grid editierbar machen???
08.03.2011, 21:51 von Kollektor 6 Antw.
gelöst Checkboxen einer ALV Grid abhängig machen
16.10.2013, 11:17 von Meti 8 Antw.
gelöst Prüfung
19.11.2013, 09:53 von 1337 0 Antw.
Prüfung ob tabelle existiert
08.02.2006, 14:32 von Gast 2 Antw.
prüfung der selektion-option.
25.07.2007, 13:47 von khb 8 Antw.

 

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder