Bedingung für Eingabefeld in Selektion

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

Getting started ... Alles für einen gelungenen Start.
16 Beiträge • Seite 1 von 2 (current) Nächste
16 Beiträge Seite 1 von 2 (current) Nächste

Bedingung für Eingabefeld in Selektion

Beitrag von patlau (Specialist / 126 / 11 / 0 ) »
Hallo Leute habe ein Eingabefeld für den User und möchte eine Bedingung dafür aufstellen. Und zwar sollen mir nur die Objekte ausgegeben werden, bei denen ab der 3. Stelle 5 Zeichenlang der User einen Namen eingeben kann.
Dies hat durch diesen Code funktioniert:

Code: Alles auswählen.

  CASE datelemt.
   When datelemt .
      DELETE l_t_rsdiobj WHERE iobjnm+2(5) <> datelemt.
      ENDCASE.
Jedoch bekomme ich kein Objekt raus wenn man nichts in das Eingabefeld eingbt, wie kann ich das verhindern, also dass es nur gilt sobald etwas eingegeben wird und wenn nichts eingegben wird, das Eingabefeld nicht beachtet wird???

Danke im VOrraus

Grüße Patryk

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


Re: Bedingung für Eingabefeld in Selektion

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

vorweg: deine CASE anweisung ist so nicht ganz korrekt.
Schau dir die SAP-Hilfe dazu mal genauer an. Über die WHEN Bedinungen kannst du dir die beiden Fälle: 1. datelemt ist gefüllt oder 2. datelemt ist nicht gefüllt schaffen und deine anweisungen je nach Fall anpassen.
Gruß,
der Matze

Re: Bedingung für Eingabefeld in Selektion

Beitrag von patlau (Specialist / 126 / 11 / 0 ) »
das habe ich getan, und probiert diese zwei Bedingungen zu realisieren, aber es klappt nicht sorichtig...die F1 Hilfe bringt mich nur bedingt weiter?
Könntest du ein Beispiel bringen?
Habe gedacht dass es über "*" funktioniert aber ich weiss icht genau wie :(

Re: Bedingung für Eingabefeld in Selektion

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

geh mal über den Weg, Feld gefüllt oder nicht gefüllt.. also:

Code: Alles auswählen.

CASE datelemt.
  WHEN ' '. "also leer
*    hier deine Verarbeitung wenn nichts eingegeben wurde
  WHEN OTHERS. "also wenn das Feld gefüllt wurde
*    hier deine Verarbeitung wenn das Feld gepflegt wurde
  ENDCASE.
Gruß,
der Matze

Re: Bedingung für Eingabefeld in Selektion

Beitrag von patlau (Specialist / 126 / 11 / 0 ) »
* hier deine Verarbeitung wenn nichts eingegeben wurde
wenn nichts eingegeben wurde soll er andere Case Anweisungen ausführen nur eben diese nicht ??
Wie drücke ich das aus?#
also das er bei ' ' nichts weiter tun soll...ausser die Case Anweisungen die soweiso laufen?

Re: Bedingung für Eingabefeld in Selektion

Beitrag von Thanatos82 (Expert / 699 / 32 / 123 ) »
Ich versteh deine Frage nicht so ganz. Unter WHEN ' '. setzt du all die Befehle die du ausführen lassen möchtest, wenn dein datelemt leer ist. was du da anders verarbeiten lassen willst, musst du schon selbst wissen. Aber den Befehl

Code: Alles auswählen.

DELETE l_t_rsdiobj WHERE iobjnm+2(5) <> datelemt.
kannst du ja nur nutzen wenn dein Feld gepflegt wurde.
Du musst dir also überlegen: was soll ausgegben werden, wenn der User nichts in das Feld eingibt. Alles? Nichts? irgendwas ganz anders?
Gruß,
der Matze

Re: Bedingung für Eingabefeld in Selektion

Beitrag von patlau (Specialist / 126 / 11 / 0 ) »
Wenn der USer in das Feld eingibt sollen nur die Objekte erscheinen bei denen seine Eingabe im Objektnamen auftritt...
also er such zunächst ein Merkmal und eine Merkmalsart aus und kann sich diese ausgeben lassen.. also z.B.
Merkmal C (Standardmerkmal)
Merkmalsart 0 ( Objekt bereits auch im ECC vorhanden)
das sind die ersten beiden Buchstaben des NAmens und dann kommt ein 5 stelliges beliebiges Wort also zum Beispiel SPIEL
gibt der USer dies sein sollen nur diese Objekte erscheinen

praktisch also

Code: Alles auswählen.

DELETE l_t_rsdiobj WHERE iobjnm+2(5) <> 'EINGABE. 
Zuletzt geändert von patlau am 21.05.2013 11:11, insgesamt 1-mal geändert.

Re: Bedingung für Eingabefeld in Selektion

Beitrag von Thanatos82 (Expert / 699 / 32 / 123 ) »
patlau hat geschrieben:also das er bei ' ' nichts weiter tun soll...ausser die Case Anweisungen die soweiso laufen?
Na was denn nun, nichts tun oder doch was tun? :D

Gibts denn überhaupt andere CASE Anweisungen außer deinem gezeigten Löschen von Zeilen in einer Tabelle?


NACHTRAG:

Ah ok, jetzt verstehe ich.
Du willst also, dass nur die Zeilen gelöscht werden, die nicht mit dem datelemt übereinstimmen. und ansonsten soll der vorher festgelegte Select-Prozess direkt weitergegeben werden.

also so in der art:

Code: Alles auswählen.

CASE datelemt.
  WHEN ' '.
*    tue nichts.
  WHEN OTHERS.
    DELETE l_t_rsdiobj WHERE iobjnm+2(5) <> datelemt.
ENDCASE.
Zuletzt geändert von Thanatos82 am 21.05.2013 11:13, insgesamt 1-mal geändert.
Gruß,
der Matze

Re: Bedingung für Eingabefeld in Selektion

Beitrag von patlau (Specialist / 126 / 11 / 0 ) »
:D

so scheint es zu funktionieren:

Code: Alles auswählen.

CASE datelemt.
      WHEN ' '. "also leer

      WHEN OTHERS. "also wenn das Feld gefüllt wurde
       Delete l_t_rsdiobj Where iobjnm+2(5) <> datelemt.
      ENDCASE.
aber hier dei anderen Case Anweisungen:

Code: Alles auswählen.

START-OF-SELECTION.

  PERFORM infos.

  SORT l_t_rsdiobj BY iobjnm+7(2) DESCENDING.

  CASE merkmal.
    WHEN 'M01'.
      DELETE l_t_rsdiobj WHERE iobjnm(1) <> 'C' .
    WHEN 'M02'.
      DELETE l_t_rsdiobj WHERE iobjnm(1) <> 'U'.
    WHEN 'M03'.
      DELETE l_t_rsdiobj WHERE iobjnm(1) <> 'V' .
  ENDCASE.

  CASE mrkmlart.
    WHEN 'MA01' .
      DELETE l_t_rsdiobj Where iobjnm+1(1) <> '0'.
    WHEN 'MA02' .
      DELETE l_t_rsdiobj Where iobjnm+1(1) <> '5'.
  ENDCASE.

    CASE datelemt.
      WHEN ' '. "also leer

      WHEN OTHERS. "also wenn das Feld gefüllt wurde
       Delete l_t_rsdiobj Where iobjnm+2(5) <> datelemt.
      ENDCASE.

  If last_obj = 'X' and next_obj <> 'X'.
    PERFORM lastobj.
  ELSEIF  next_obj = 'X' and last_obj <> 'X'.
    PERFORM nextobj.
  ELSEIF last_obj = 'X' and next_obj = 'X'.
    PERFORM bothobj.
  ELSEIF last_obj <> 'X' and next_obj <> 'X'.
    PERFORM allobj.
  Endif.

Re: Bedingung für Eingabefeld in Selektion

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

siehe meinen vorrigen geänderten Post. genau so. :)

wobei du in diesem Spezialfall auch einfach sagen könntest:

Code: Alles auswählen.

IF datelemt IS NOT INITIAL.
  DELETE l_t_rsdiobj WHERE iobjnm+2(5) <> datelemt.
ENDIF.

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

Gruß,
der Matze

Re: Bedingung für Eingabefeld in Selektion

Beitrag von patlau (Specialist / 126 / 11 / 0 ) »
Klasse funktioniert :)

habe noch eine andere Frage, wie kann ich dafür sorgen , dass der User 5 Zeichen eingeben muss und nicht nur 4 oder 3 eingibt ?

Re: Bedingung für Eingabefeld in Selektion

Beitrag von Thanatos82 (Expert / 699 / 32 / 123 ) »
Beim Ausführen Stringlänge ermitteln (STRLEN) und bei <5 eine Error-Message ausgeben und die Verarbeitung abbrechen. ;)
Gruß,
der Matze

Re: Bedingung für Eingabefeld in Selektion

Beitrag von patlau (Specialist / 126 / 11 / 0 ) »
ohje.. hört sich wirklich gut an aber wie mache ich das :D?

Sorry für meine Ahnungslosigkeit

Re: Bedingung für Eingabefeld in Selektion

Beitrag von Thanatos82 (Expert / 699 / 32 / 123 ) »
Ermittle beim START OF SELECTION die Stringlänger:

Code: Alles auswählen.

DATA: lv_strlen TYPE i.

lv_strlen = STRLEN( datelemt ).

IF lv_strlen = 0 OR lv_strlen = 5.
*  ignorieren und weiterverabeiten.
ELSE.
MESSAGE 'Geben Sie ein 5 stelliges Datenobjekt an.' TYPE 'S' DISPLAY LIKE 'E'.
EXIT. "ggf. RETURN, da bin ich mir grad nicht sicher, musst du testen
ENDIF.
Gruß,
der Matze

Re: Bedingung für Eingabefeld in Selektion

Beitrag von JHM (Top Expert / 1221 / 2 / 204 ) »
Thanatos82 hat geschrieben:Ermittle beim START OF SELECTION die Stringlänger
Da der User die Eingabe auf dem SelScreen macht, könnte man diese doch auch dort prüfen:

Code: Alles auswählen.

PARAMETERS: feld TYPE char05.

AT SELECTION-SCREEN ON feld.
lv_strlen = STRLEN( datelemt ).

IF lv_strlen < 5 OR lv_strlen > 0.
MESSAGE 'Geben Sie ein 5 stelliges Datenobjekt an.' TYPE 'E'.
ENDIF.
Dann wird nur das Feld auf dem SelScreen eingabebereit und der User muss sofort seinen Fehler bereinigen.

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

Gruß Hendrik

Vergleichbare Themen

1
Antw.
2005
Views
Eingabefeld in ALV-Toolbar?
von ralf.wenzel » 29.11.2013 14:54 • Verfasst in ABAP Objects®
5
Antw.
7316
Views
Negativer Wert im Eingabefeld
von marietta » 13.03.2006 11:21 • Verfasst in Dialogprogrammierung
2
Antw.
3029
Views
Eingabefeld inaktiv setzen
von Senshi » 25.04.2008 15:28 • Verfasst in ABAP® für Anfänger
11
Antw.
6635
Views
von bis eingabefeld mit dictionary bezug
von kirmuh » 11.04.2008 10:31 • Verfasst in Dialogprogrammierung
20
Antw.
5619
Views
Bezeichnung neben Eingabefeld
von cschmoel » 23.08.2012 11:51 • 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

Benutzerdefinierte Felder PSP
vor 4 Wochen von Rabea1103 1 / 46212
Spool vereinen OTF und PDF
letzen Monat von anna2205 1 / 62560
XSLT und Loipro05 Transformation
December 2025 von Torsten1965 1 / 70069
VOLL Artikel in einem Display Typ 12
November 2025 von ThomasM84 1 / 87030