Nur das Jahr im Select vergleichen

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

Nur das Jahr im Select vergleichen

Beitrag von PseudoReal (ForumUser / 15 / 0 / 0 ) »
Hi Leute,

ich habe in einer Tabelle den Eintrag begda 20050801
und endda 20060731.
und der nächste satz wäre dann begda 20060801, usw.
Jetzt hat der user die Möglichkeit das Jahr als Parameter anzugeben.
Nun möchte ich wenn der User das Jahr 2005 angibt, den Satz auslesen der ab 20050801 anfängt.

Code: Alles auswählen.


TABLES: pernr,
        pa9024,
        hrp1000.
        
DATA: stat TYPE i VALUE 2.


DATA:  BEGIN OF ausgabe OCCURS 0,

          stats LIKE   pa9024-stats,
          vorna LIKE   pa0002-vorna,
          nachn LIKE   pa0002-nachn,
          pernr LIKE   pa0002-pernr,
          begda LIKE   pa9024-begda,
          endda LIKE   pa9024-endda,

         END OF ausgabe.

DATA: wa_ausgabe LIKE LINE OF ausgabe.

SELECTION-SCREEN BEGIN OF BLOCK block1 WITH FRAME TITLE text-001.

* Starting EE
PARAMETERS: p_start TYPE persno.
PARAMETERS: p_year TYPE zp_pyear OBLIGATORY.
PARAMETERS: p_status TYPE pa9024-stats DEFAULT 2.
SELECTION-SCREEN END OF BLOCK block1.

START-OF-SELECTION.



  SELECT *
    FROM pa9024
      INNER JOIN pa0002 ON pa9024~pernr = pa0002~pernr
    INTO CORRESPONDING FIELDS OF TABLE AUSGABE
    WHERE pa9024~stats = p_status
    AND pa9024~begda(4) = p_year.


  LOOP AT ausgabe INTO wa_ausgabe.
    WRITE: /
             wa_ausgabe-pernr,
             wa_ausgabe-vorna,
             wa_ausgabe-nachn,
             wa_ausgabe-stats.


  ENDLOOP.
Leider will er pa9024~begda(4) als field nicht annehmen.

Gruss und Danke

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


Beitrag von Haubi (Expert / 625 / 20 / 30 ) »
Moinsen.

Teilfelder abfragen ist bei SAP im SELECT nich.

Da Du Datumsfelder hast kannst Du aber BETWEEN nehmen (zwischen 1.1. und 31.12.).

Gruss,
Haubi
Das ABAP Kochbuch ab sofort bei Amazon...

I'd rather write code that writes code than write code...

Beitrag von PseudoReal (ForumUser / 15 / 0 / 0 ) »
hmmm kannst du mir nen code schnipsel zeigen. mir ist das nicht so klar mit dem between?

Beitrag von ereglam (Top Expert / 1829 / 2 / 7 ) »
mir fallen dazu folgende Möglichkeiten ein:

Code: Alles auswählen.

CONCATENATE 
  p_year
  '%' "Wildcard für SQL
  INTO l_begda.

  SELECT * 
    FROM pa9024 
      INNER JOIN pa0002 ON pa9024~pernr = pa0002~pernr 
    INTO CORRESPONDING FIELDS OF TABLE AUSGABE 
    WHERE pa9024~stats = p_status 
    AND pa9024~begda LIKE l_begda. "SQL-Pattern-Vergleich
oder:

Code: Alles auswählen.

DATA:
  lr_begda TYPE RANGE OF begda.
FIELD-SYMBOLS:
  <lr_begda> LIKE LINE OF lr_begda.

* leere Zeile in Range-Tabelle einfügen und Feldsymbol darauf setzen
INSERT INITIAL LINE INTO TABLE lr_begda
                    ASSIGNING <lr_begda>.
* Daten vervollständigen
<lr_begda>-sign   = 'I'.
<lr_begda>-option = 'CP'.
CONCATENATE 
  p_year
  '*' "Wildcard für SQL
  INTO <lr_begda>-low.

  SELECT * 
    FROM pa9024 
      INNER JOIN pa0002 ON pa9024~pernr = pa0002~pernr 
    INTO CORRESPONDING FIELDS OF TABLE AUSGABE 
    WHERE pa9024~stats = p_status 
    AND pa9024~begda IN lr_begda. "ACHTUNG: IN-Operator
Gruß
Ereglam


May the Force be with your code
|| .| |.|| | .... . ..|. ||| .|. |.|. . |... . .|| .. | .... |.|| ||| ..| .|. |.|. ||| |.. .

Beitrag von Haubi (Expert / 625 / 20 / 30 ) »
Moinsen.

Mit der Annahme, dass P_JAHR das Jahr ist, dass der Benutzer eingegeben hat:

Code: Alles auswählen.

DATA
    : g_0101 TYPE d
    , g_3112 TYPE d
    .
  g_0101 = p_jahr & '0101'.
  g_3112 = p_jahr & '1231'.
  
  SELECT
     (...)
     WHERE begda BETWEEN g_0101 AND g_3112.
Ist ungetestet, sollte aber funzen.

Gruss,
Haubi
Das ABAP Kochbuch ab sofort bei Amazon...

I'd rather write code that writes code than write code...

Beitrag von PseudoReal (ForumUser / 15 / 0 / 0 ) »
danke aber mit dem concatenate hats auch geklappt :)

Seite 1 von 1

Vergleichbare Themen

0
Antw.
1824
Views
Datum KonvertExit ohne Jahr
von DeathGuardian » 18.04.2008 14:58 • Verfasst in Dialogprogrammierung
5
Antw.
5273
Views
Wareneingang buchen in letztes Jahr?
von zeico » 07.01.2009 13:43 • Verfasst in Material Management & Produktionsplanung
3
Antw.
2134
Views
Summe pro jahr summieren und vertikal ausgaben
von Rico_neu » 19.10.2007 13:18 • Verfasst in ABAP® für Anfänger
3
Antw.
3785
Views
Dynamische Maßnahme Feld Datum +1 Jahr
von Chris2104 » 30.03.2020 09:32 • Verfasst in Human Resources
5
Antw.
2576
Views
neue Abwesenheitsart mit maximal 5 Tagen pro Jahr
von ArjenR » 04.03.2020 09:20 • Verfasst in Human Resources

Über diesen Beitrag


Unterstütze die Community und teile den Beitrag für mehr Leser und Austausch

Aktuelle Forenbeiträge

Regex in where
vor 5 Stunden von tar 8 / 184
Daten an Tabelle binden
Gestern von Bright4.5 3 / 1489

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.

Aktuelle Forenbeiträge

Regex in where
vor 5 Stunden von tar 8 / 184
Daten an Tabelle binden
Gestern von Bright4.5 3 / 1489

Unbeantwortete Forenbeiträge

aRFC im OO-Kontext
vor 5 Wochen von ralf.wenzel 1 / 3261
Hilfe bei SWEC/SWE2
September 2024 von retsch 1 / 9822