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.
1864
Views
Datum KonvertExit ohne Jahr
von DeathGuardian » 18.04.2008 14:58 • Verfasst in Dialogprogrammierung
5
Antw.
5518
Views
Wareneingang buchen in letztes Jahr?
von zeico » 07.01.2009 13:43 • Verfasst in Material Management & Produktionsplanung
3
Antw.
2191
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.
4456
Views
Dynamische Maßnahme Feld Datum +1 Jahr
von Chris2104 » 30.03.2020 09:32 • Verfasst in Human Resources
5
Antw.
2966
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

Mahnung erstellen
vor 3 Minuten von wreichelt 2 / 7
Absprung VA02 Position
vor 2 Stunden von gs3rr4 3 / 27
OPD Druck im SPOOL
vor 3 Stunden von Manfred K. 1 / 14
Hilfe zum FB MATERIAL_MAINTAIN_DARK
Gestern von black_adept gelöst 8 / 1804

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

Mahnung erstellen
vor 3 Minuten von wreichelt 2 / 7
Absprung VA02 Position
vor 2 Stunden von gs3rr4 3 / 27
OPD Druck im SPOOL
vor 3 Stunden von Manfred K. 1 / 14
Hilfe zum FB MATERIAL_MAINTAIN_DARK
Gestern von black_adept gelöst 8 / 1804

Unbeantwortete Forenbeiträge

OPD Druck im SPOOL
vor 3 Stunden von Manfred K. 1 / 14
Export von Spools in XLSX
vor 5 Tagen von abapamateur 1 / 388
Feldberechnung ME32K
vor einer Woche von ZF_SAPler 1 / 990
MS-Word als Editor
letzen Monat von tekko 1 / 4489