Ausgabe nach Selektionsbildschirm

Die Frage ist als "gelöst" markiert. Den entsprechend Beitrag findest du hier.

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

Ausgabe nach Selektionsbildschirm

Beitrag von Dyrdek (Specialist / 306 / 30 / 0 ) »
Guten Morgen,

Ich arbeite gerade an einer einfachen ALV-Ausgabe.
Der Selektionsbildschirm steht soweit. Da ich mich da aber überhaupt nicht auskenne würde mich interessieren wie ich eine Tabelle nun mit den erhaltenen Kriterien filtere und ausgebe.
Wenn ich im Folgenden eine einfache "SELECT"-Anweisung mit WHERE etc. mache, bspw. mit einer Personalnummer, dann habe ich das Problem dass ich überhaupt kein Ergebnis erhalte im Falle, dass keine Personalnummer angegeben wurde.

Bisher habe ich nur Tutorials gefunden die das Erstellen eines Selektionsbildschirms beschreiben. Ich benötige jedoch die Auswertung und anschließende Ausgabe.

Wie wird dies allgemein bei Selektionsbildschirmen abgewickelt?

Danke schonmal im Voraus!


Grüße

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


Re: Ausgabe nach Selektionsbildschirm

Beitrag von Thanatos82 (Expert / 699 / 32 / 123 ) »
Moin,

als was ist denn deine Personalnummer im Selektionsbild deklariert?
Bei Parameter-Angabe muss ein Inhalt vorhanden sein und im SELECT muss der Wert in der DB Tabelle EQ Parameter sein.
Bei einer Select-Option muss kein Inhalt vorhanden sein, wenn im SELECT der Wert der DB-Tabelle IN select-option liegt.
Im Coding sieht das etwa so aus:

Code: Alles auswählen.

SELECT * FROM mara INTO TABLE lt_mara WHERE matnr IN s_matnr.
s_matnr ist hierbei eine Select-Option. Schau dir hierzu mal an was es mit Range-Tabellen auf sich hat, sofern du damit noch nichts anfangen kannst. :)
Gruß,
der Matze

Re: Ausgabe nach Selektionsbildschirm

Beitrag von Dyrdek (Specialist / 306 / 30 / 0 ) »
Ok danke. Müssen Parameter somit immer ausgefüllt werden?
Die Personalnummer ist ein NUMC der Länge 8. Das ist durch eine Datenbanktabelle mit der ich arbeite so vorgegeben worden.
Müsste ich nun alle Kriterien in Select-Options umwandeln um es zu ermöglichen, dass keine Eingabe erfolgen muss? Und habe ich dann nicht das Problem, dass ich immer zwei Input-Felder habe für "Von" - "Bis" quasi?

Ok Rangetabellen werde ich mir dann heute auch noch anschauen :)

Re: Ausgabe nach Selektionsbildschirm

Beitrag von Thanatos82 (Expert / 699 / 32 / 123 ) »
Hi,

wenn du flexible Selektionen ermöglichen willst, sind Select-Options schon die bessere Wahl, da du eben etwas eingeben kannst aber nicht musst. Und wenn nichts eingegeben wird, dann wird eben alles selektiert was da ist.
Für Parameter kannst du schauen ob exakt der von dir eingegebene Wert einem Feld in der DB-Tabelle entspricht. Da wird es dann schon kompliziert mit *-Suche. Dies wiederum geht bei Select-Options.

Die Intervalle, also von bis, lässt sich über den Zusatz NO-INTERVALLS hinter deiner Select-Option erreichen. Wenn du auch die Mehrfachauswahl unterbinden möchtest musst du auch noch den Zusatz NO EXTENSIONS hinzufügen.
Dann sieht dein Feld wieder aus wie ein Parameterfeld, hat aber die Vorteile einer Select-Option. :)
Aber nicht vergessen: der eingegeben Wert in der Select-Option steht dann in der Rangetabelle im Feld LOW. Aber das liest du dann ja wenn du dich damit beschäftigst.

Viel Erfolg!

Folgende Benutzer bedankten sich beim Autor Thanatos82 für den Beitrag:
Dyrdek

Gruß,
der Matze

Re: Ausgabe nach Selektionsbildschirm

Beitrag von Dyrdek (Specialist / 306 / 30 / 0 ) »
Ok danke dir! :)

Ich habe nun ein weiteres kleines Problem. Ich poste es mal hier falls du mir da auch direkt weiterhelfen kannst.
Und zwar gibt es das Attribut "Status" in der Tabelle. Bspw. kann dieser "STARTED" "APPROVED" etc. sein.
Diese sollen auch selektiert werden können und zwar über Checkboxes. Nun bin ich grad etwas überfragt, wie ich das nun reinbringe ohne meine alte Selektion zu überschreiben.
Vor allem muss ich prüfen welche Checkboxen gewählt wurden und die Abfrage entsprechend anpassen. Ich möchte das aber ohne stumpfe " IF Checkbox = 'X' [...] SELECT [...] " beispielsweise lösen. Vor allem, würde ich das so machen und müsste mehrere Checkboxes abfragen würde ich mit jeder IF ... SELECT - Abfrage meine Selektion überschreiben.

Ich weis nicht ob mein Problem richtig rübergekommen ist. Aber ich weis aktuell nicht genau wie ich die Checkboxen abfrage und die Tabelle entsprechend filtere ohne meine Selektion ständig zu überschreiben.


Danke schonmal!

Re: Ausgabe nach Selektionsbildschirm

Beitrag von a-dead-trousers (Top Expert / 4395 / 223 / 1182 ) »

Code: Alles auswählen.

DATA range_status TYPE RANGE OF dbtable-status.
FIELD-SYMBOLS <range_status> LIKE LINE OF range_status.

CLEAR range_status.

IF checkbox01 EQ abap_true.
  APPEND initial line TO range_status ASSIGNING <range_status>.
  <range_status>-low = 'APPROVED'.
  <range_status>-sign = 'I'.
  <range_status>-option = 'EQ'.
ENDIF.
IF checkbox02 EQ abap_true.
  APPEND initial line TO range_status ASSIGNING <range_status>.
  <range_status>-low = 'STARTED'.
  <range_status>-sign = 'I'.
  <range_status>-option = 'EQ'.
ENDIF.
* usw.

SELECT ...
  FROM dbtable
  INTO ...
  WHERE status IN range_status.
lg ADT

Folgende Benutzer bedankten sich beim Autor a-dead-trousers für den Beitrag:
Dyrdek

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: Ausgabe nach Selektionsbildschirm

Beitrag von Dyrdek (Specialist / 306 / 30 / 0 ) »
Hervorragend! Danke euch beiden Experten :) Beide Lösungen haben ich so eingebaut und funktionieren bisher auch perfekt.

Vielen Dank nochmal und noch einen schönen Mittwoch! ;)

Re: Ausgabe nach Selektionsbildschirm

Beitrag von ralf.wenzel (Top Expert / 3921 / 200 / 280 ) »
Thanatos82 hat geschrieben:Die Intervalle, also von bis, lässt sich über den Zusatz NO-INTERVALLS hinter deiner Select-Option erreichen. Wenn du auch die Mehrfachauswahl unterbinden möchtest musst du auch noch den Zusatz NO EXTENSIONS hinzufügen.
Dann sieht dein Feld wieder aus wie ein Parameterfeld, hat aber die Vorteile einer Select-Option. :)
So kann man die Eingabe von Intervallen nicht zuverlässig verhindern, weil man das Popup zur Mehrfacheingabe/Intervalleingabe nicht unterbinden kann. Vor kurzer Zeit habe ich noch einen Programmfehler korrigiert, bei dem der Entwickler davon ausging, dass dort nur ein Wert stehen kann -- der Anwender lehrte ihn, dass er trotzdem Intervalle eingeben konnte ;)

Ralf
Bild
Ralf Wenzel Heuristika SAP-Development
25 Jahre SAP-Entwickler • 20 Jahre Freiberufler
PublikationenUngarische NotationXing

Re: Ausgabe nach Selektionsbildschirm

Beitrag von Unit605 (Expert / 975 / 37 / 93 ) »
Thanatos82 hat geschrieben:Die Intervalle, also von bis, lässt sich über den Zusatz NO-INTERVALLS hinter deiner Select-Option erreichen. Wenn du auch die Mehrfachauswahl unterbinden möchtest musst du auch noch den Zusatz NO EXTENSIONS hinzufügen.
Dann sieht dein Feld wieder aus wie ein Parameterfeld, hat aber die Vorteile einer Select-Option. :)
Damit dann jeder zufrieden ist:

Code: Alles auswählen.

CALL FUNCTION 'SELECT_OPTIONS_RESTRICT'
        EXPORTING
          restriction            = restrict.
Hier ein kleines Beispielprogramm:

Code: Alles auswählen.

REPORT  Z_SELECT_OPTION_RESTRICT.

    SELECT-OPTIONS: s_uname FOR sy-uname NO INTERVALS.
    SELECT-OPTIONS: s_msgty FOR sy-msgty.

    INITIALIZATION.
      PERFORM single_values.

*---------------------------------------------------------------------*
*      Form  single_values
*---------------------------------------------------------------------*
    FORM single_values .
      DATA: restrict     TYPE sscr_restrict,
            opt_list     TYPE sscr_opt_list,
            ass          TYPE sscr_ass.
      opt_list-name       = 'EQ_ONLY'.  " Nur EQ zulassen
      opt_list-options-eq = 'X'.
      APPEND opt_list TO restrict-opt_list_tab.

      ass-kind    = 'S'.
      ass-name    = 'S_UNAME'.
      ass-sg_main = 'I'.
      ass-sg_addy = ' '.
      ass-op_main = 'EQ_ONLY'.
      ass-op_addy = 'EQ_ONLY'.
      APPEND ass TO restrict-ass_tab.

      ass-name    = 'S_MSGTY'.
      APPEND ass TO restrict-ass_tab.

      CALL FUNCTION 'SELECT_OPTIONS_RESTRICT'
        EXPORTING
          restriction            = restrict.

    ENDFORM.                    " single_values

Re: Ausgabe nach Selektionsbildschirm

Beitrag von ralf.wenzel (Top Expert / 3921 / 200 / 280 ) »
Du wirst lachen: Den kannte ich noch nicht.

Ralf
Bild
Ralf Wenzel Heuristika SAP-Development
25 Jahre SAP-Entwickler • 20 Jahre Freiberufler
PublikationenUngarische NotationXing

Re: Ausgabe nach Selektionsbildschirm

Beitrag von Thanatos82 (Expert / 699 / 32 / 123 ) »
ralf.wenzel hat geschrieben:
Thanatos82 hat geschrieben:Die Intervalle, also von bis, lässt sich über den Zusatz NO-INTERVALLS hinter deiner Select-Option erreichen. Wenn du auch die Mehrfachauswahl unterbinden möchtest musst du auch noch den Zusatz NO EXTENSIONS hinzufügen.
Dann sieht dein Feld wieder aus wie ein Parameterfeld, hat aber die Vorteile einer Select-Option. :)
So kann man die Eingabe von Intervallen nicht zuverlässig verhindern, weil man das Popup zur Mehrfacheingabe/Intervalleingabe nicht unterbinden kann. Vor kurzer Zeit habe ich noch einen Programmfehler korrigiert, bei dem der Entwickler davon ausging, dass dort nur ein Wert stehen kann -- der Anwender lehrte ihn, dass er trotzdem Intervalle eingeben konnte ;)

Ralf
Wie man mit NO-INTERVALS in Verbindung mit NO EXTENSIONS noch Intervalle eingeben kann musst du mir mal zeigen. Das glaube ich sonst nicht. :shock:

@Unit605
Nett. das werde ich mir mal direkt sichern! Danke! :)
Gruß,
der Matze

Re: Ausgabe nach Selektionsbildschirm

Beitrag von ralf.wenzel (Top Expert / 3921 / 200 / 280 ) »
Thanatos82 hat geschrieben:Wie man mit NO-INTERVALS in Verbindung mit NO EXTENSIONS noch Intervalle eingeben kann musst du mir mal zeigen. Das glaube ich sonst nicht. :shock:
Ist "von Null bis 500" kein Intervall? Dann brauche ich nur "kleiner gleich" anzugeben. Richtig ist, dass man das Popup zur Detaileingabe nicht mehr öffnen kann, aber "NO INTERVALS" verhindert halt nicht die Eingabe von Intervallen ;)


Ralf
Bild
Ralf Wenzel Heuristika SAP-Development
25 Jahre SAP-Entwickler • 20 Jahre Freiberufler
PublikationenUngarische NotationXing

Re: Ausgabe nach Selektionsbildschirm

Beitrag von Thanatos82 (Expert / 699 / 32 / 123 ) »
ralf.wenzel hat geschrieben:
Thanatos82 hat geschrieben:Wie man mit NO-INTERVALS in Verbindung mit NO EXTENSIONS noch Intervalle eingeben kann musst du mir mal zeigen. Das glaube ich sonst nicht. :shock:
Ist "von Null bis 500" kein Intervall? Dann brauche ich nur "kleiner gleich" anzugeben. Richtig ist, dass man das Popup zur Detaileingabe nicht mehr öffnen kann, aber "NO INTERVALS" verhindert halt nicht die Eingabe von Intervallen ;)


Ralf
... deswegen der Nachsatz mit dem Hinweis auf NO EXTENSIONS ... ;)
Gruß,
der Matze

Re: Ausgabe nach Selektionsbildschirm

Beitrag von ralf.wenzel (Top Expert / 3921 / 200 / 280 ) »
...der die Selektion einer Ergebnismenge > 1 nicht verhindert, darauf wollte ich ja hinaus.


Ralf
Bild
Ralf Wenzel Heuristika SAP-Development
25 Jahre SAP-Entwickler • 20 Jahre Freiberufler
PublikationenUngarische NotationXing

Seite 1 von 1

Vergleichbare Themen

7
Antw.
3238
Views
Selektionsbildschirm
von henri » 15.06.2015 18:25 • Verfasst in ABAP® für Anfänger
5
Antw.
3980
Views
F4-Button auf Selektionsbildschirm
von chatty » 25.07.2005 09:15 • Verfasst in ABAP® Core
4
Antw.
2991
Views
Selektionsbildschirm als Reiter
von Gast » 15.02.2005 18:14 • Verfasst in ABAP® für Anfänger
7
Antw.
2683
Views
Optionsauswahl im Selektionsbildschirm?
von Kaiser » 08.08.2005 09:41 • Verfasst in Dialogprogrammierung
10
Antw.
1856
Views
Prüfung Checkboxen im Selektionsbildschirm
von woddstock99 » 22.01.2019 10:23 • Verfasst in ABAP® für Anfänger

Über diesen Beitrag


Die Frage ist als "gelöst" markiert. Den entsprechend Beitrag findest du hier.

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 19 Stunden von Bright4.5 1 / 411
aRFC im OO-Kontext
vor 4 Wochen von ralf.wenzel 1 / 2059
Hilfe bei SWEC/SWE2
letzen Monat von retsch 1 / 8655