prüfung der selektion-option.

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

prüfung der selektion-option.

Beitrag von seco_neu (ForumUser / 16 / 0 / 0 ) »
Hallo zusammen,
ich bin seit 1 woche mit der ABAP programmierung beschäftigt und habe folgendes Augabe zu machen.

ich habe nur eine selection-option als Eingabe field und möchte die Eingabe zuerst überpruefen, ob das eingegebene Jahr im Bereich der s_jahr liegt (von - bis -).Die überpruefung soll über eine DBTAB1 laufen. Die DBTAB1 hat 2 spalten. Eine ist DBTAB1-start und DBTAB1-ende. Wenn das eingegebene Jahr nicht im Bereich der DBTAB-start und DBTAB-ende liegt, muss eine Fehlermeldung ausgegeben werden. Wie könnte man sowas machen? Hier ist das coding.

Code: Alles auswählen.

selection-screen begin of block blk1 with frame title text-000.
select-options: s_jahr for DBTAB-jahr.
selection-screen end of blk1.
vielen Dank für die Hilfe

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


Beitrag von TWP (Specialist / 445 / 0 / 1 ) »
at selection-screen.

select single * <tab>

if jahr ...
message e208(00) with 'jahr ist falsch'.
endif.


Wenn's nicht reciht, Doku zu AT lesen.

Thomas

Beitrag von seco_neu (ForumUser / 16 / 0 / 0 ) »
Hallo zusammen,
ich habe folgendes gemacht. ich habe alle daten in der DBtab selektiert und in w_dbtab rein. habe in s_gjahr geloop, weil s_gjahr ein internal tabelle ist dann mit vergleich mit der 2 spalten in dbtab gemacht. Die frage ist, ob das richtig is.
Könnte mir verleicht jemand mir sagen wie ich besser machen könnte?
Gibt es ein funktion baustein der das besser machen könnte?

Code: Alles auswählen.

 select-options: s_gjahr  for cosp-gjahr .

select single * from dbtab
into w_dbtab.
  loop at s_gjahr.
   if not
       s_gjahr-low  <= w_dbtab-strt and
       s_gjahr-high >= w_dbtab-ende.
      message e208(00) with 'jahr ist falsch'.
      exit.
    endif.
  endloop.
Vielen Dank für alle die mir helfen könnten

Beitrag von TWP (Specialist / 445 / 0 / 1 ) »
Wenn du nur ein Jahr benötigst, tausche select-oprions durch parameters aus.

Wenn in deinem Select-Options Breiche angegeben sind, dann geht deine Prüfung so nicht.

Vorschlag nur ein Jahr nehmen (Parameters)

Parameters: p_jahr type gjahr.

AT Selection-screen. (sonst geht die Fehlermeldung im Programm los)

select single * from dbtab
into w_dbtab.

if p_jahr not between w_dbtab-strt and w_dbtab-ende.
message e...
endif.

Thomas

Beitrag von TakerOne (Specialist / 102 / 0 / 3 ) »
Moin, moin

Hier ein Beispiel, bei dem die Eingabe auch noch korrigiert werden kann, ohne daß die bereits eingegebenen Daten verloren gehen:

Code: Alles auswählen.

REPORT test
                 MESSAGE-ID  yy
                 LINE-SIZE  132.

TABLES:
  sscrfields.

PARAMETERS: pa_datum   TYPE sy-datum.


AT SELECTION-SCREEN.

* Plausiprüfung
  IF pa_datum < sy-datum.
    sscrfields-ucomm = 'FEHL'.
    MESSAGE i001. "'Falsches Datum'. nur ein Beispiel
  ENDIF.

*wenn am Ende von AT SELECTION-SCREEN
*  das Feld sscrfields-ucomm <> 'ONLI' 'BTCH' oder 'PRNT'
*  wird das Selektionsbild nicht verlassen
*  alle Eingaben bleiben erhalten und können korrigiert werden


START-OF-SELECTION.

  WRITE: 'START'.
Gruß TakerOne
Ich bin eigentlich ein sehr netter Mensch.
Wenn ich Freunde hätte, könnten diese es bestätigen. :-)

Beitrag von seco_neu (ForumUser / 16 / 0 / 0 ) »
Vielen Dank Thomas,
aber in meinem select-options müssen Bereich so wie oben gegeben werden. Das Jahr wird von..... bis..... eingegeben dann soll in einem Dbtab geprüft werden, ob der eingegebenen Jahren zw. dbtab-start und dbtab-ende liegen. Nur dann kann weiter selektiert werden. Wenn nicht dann soll eine Meldung ausgegeben werden. Das heisst die Jahre müssen so in einem select-option.

Wie könnte dann die prüfung mit select-option aussehen? Ich habe fast überall durchgelesen aber ich finde keine Antwort.

Code: Alles auswählen.

RANGES: r_date FOR o_gjahr.

  r_date-sign   = 'I'.
  r_date-option = 'BT'.
  r_date-low    = 'start'.
  r_date-high   = 'ende'.
  APPEND r_date.

  select single * from dbtab
  into w_dbtab
  where start in r_date
and ende       in r_date.
  if sy-subrc ne 0.
    message.
    exit.
  endif.
Ich bin für jede Hilfe sehr Dankbar.

Nina

Beitrag von khb (Specialist / 184 / 7 / 1 ) »
Hallo Nina,

mal kurz so auf die Schnelle (ohne System im Hintergrund):

Code: Alles auswählen.

select-options: s_date for o_gjahr obligatory.


At selection-screen on s_date.
* Startdatum
select single * from dbtab into w_dbtab
  where start in s_date.
if sy-subrc > 0.
  message 1.
endif.
* Endedatum
select single * from dbtab into w_dbtab
  where ende in s_date.
if sy-subrc > 0.
  message 2.
endif.



Gruß
khb

Beitrag von TWP (Specialist / 445 / 0 / 1 ) »
Wenn du eine von bis Selektion benötigst, würde ich trotzdem auf select-Options verzichten, da hier Mehrfachselektionen, Bereiche, ausschlüsse ... möglich sind. Mit 2 Paramtern besteht das Problem nicht mehr.

Übrigens:
TakerOne hat nicht ganz recht, auch bei E-Meldungen bleiben die Eingabedaten erhalten.

sonst folgende Vorschlag:

at seelction-screen
select single * from dbtab
into w_dbtab
where ( start >= p_dat1
and ende <= p_dat1 )
or ( start >= p_dat2
and ende <= p_dat2 )

if sy-subrc <> 0.
message e208(00) with 'datum prüfen, nicht in zulässigen Zeitraum'.
endif.

Alternativ kannst du die dbtab zum Zeitpunkt INITIALIZATION lesen und die Datumsgrenzen schon vorschlagen (parameters ... default dbtab-dat)

Thomas

Beitrag von khb (Specialist / 184 / 7 / 1 ) »
Mehrfachselektionen können bei select-options ausgeschlossen werden: no-extension (s. F1-Hilfe).

Und wenn man das Start- und Enddatum einzeln abfragt (jeweils mit getrennter message) kann man die Fehlermeldung auch genauer ausgeben (Startdatum unzulässig bzw. Endedatum unzulässig.

khb

Seite 1 von 1

Vergleichbare Themen

4
Antw.
2819
Views
Selektion Selection-Option Beschreibung anzeigen
von kaim77 » 08.06.2012 14:56 • Verfasst in ABAP® Core
2
Antw.
1541
Views
Option
von kai1 » 02.06.2004 15:43 • Verfasst in ABAP® Core
1
Antw.
1060
Views
SELECT-OPTION
von SAP_ENTWICKLER » 21.09.2017 14:13 • Verfasst in ABAP® Core
10
Antw.
506
Views
SELECT-OPTION
von ABAPLover » 09.08.2023 09:53 • Verfasst in ABAP® für Anfänger
10
Antw.
3242
Views
Selektion
von christof » 30.10.2014 08:32 • Verfasst in ABAP® für Anfänger

Über diesen Beitrag


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.