HI!mamba hat geschrieben:Hallo,
ich möchte aus einer Tabelle den aktuellen gültigen Satz lesen.
(Anhand von 'Datum ab' und 'Datum bis'.)
Wie macht man das am Geschicktesten?
Gibt es hierfür einen eigenen Befehl?
Viele Grüße!
Code: Alles auswählen.
*-----------------------------------------------------*
*   Uhrzeit:    7     8     9    10     11     12     *
*   Eingabe:          X                  X            *
* --------------------------------------------------- *
*   Möglich 1:            X         X                 *
*   Möglich 2:            X                   X       *
*   Möglich 3:     X                X                 *
*   Möglich 4:     X                          X       *
*-----------------------------------------------------*
    SELECT  *
      FROM  db_tab
      INTO  TABLE itba
      WHERE strtdate  EQ  s_datum
        AND
            (  ( strt  >= zeit_von AND             " Für M2, M1
                 strt  <  zeit_bis     )
             OR
               ( ende  >  zeit_von AND             " Für M3, M1
                 ende  <= zeit_bis     )
             OR
               ( strt <= zeit_von  AND                 " Für M4
                 ende >= zeit_bis      )    ) .
Code: Alles auswählen.
15.07.2003 31.12.9999Code: Alles auswählen.
01.01.2005 31.03.2005
01.01.2005 31.12.9999Code: Alles auswählen.
REPORT 1.
PARAMETERS:
  p_datum TYPE dats OBLIGATORY DEFAULT sy-datum.
START-OF-SELECTION.
  PERFORM do_it USING p_datum.
*&---------------------------------------------------------------------*
*&      Form  do_it
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*      -->VALUE(I_DATUM)  text
*----------------------------------------------------------------------*
FORM do_it USING value(i_datum) TYPE dats.
  DATA:
    lv_afori TYPE afrv-afori,
    lv_afruv TYPE afrv-afruv,
    lv_counter TYPE afrv-counter.
  SELECT afori afruv counter
    INTO (lv_afori, lv_afruv, lv_counter)
    FROM afrv
    WHERE endda >= i_datum
      AND begda <= i_datum.
    WRITE:
      lv_afori, lv_afruv, lv_counter.
  ENDSELECT.
  write:
    / 'Anzahl gefundener Datensätze:',sy-dbcnt.
ENDFORM.                    "do_it