Selektieren des letzten timestamps

Getting started ... Alles für einen gelungenen Start.
1 Beitrag • Seite 1 von 1
1 Beitrag Seite 1 von 1

Selektieren des letzten timestamps

Beitrag von barbara (ForumUser / 50 / 0 / 0 ) »
Hello,

Wie kann ich aus meinem select den letzten timestamp am schnellsten selektieren?
Mit meinem select funkt. so nicht, richtig?

Code: Alles auswählen.

SELECT zzt_pkt_status~sozver zzt_pkt_status~tstmp zzt_pkt_status~zz_pkt_status
         pa0001~endda pa0001~begda pa0001~vdsk1 pa0001~pernr
         zzt_pkt_versns~sozver zzt_pkt_versns~pernr
         FROM zzt_pkt_versns INNER JOIN zzt_pkt_status
           ON zzt_pkt_versns~sozver = zzt_pkt_status~sozver
         INNER JOIN pa0001
           ON zzt_pkt_versns~pernr = pa0001~pernr
         INTO (it_status-sozver, it_status-tstmp, it_status-zz_pkt_status,
              it_pa0001-endda, it_pa0001-begda, it_pa0001-vdsk1, it_pa0001-pernr,
              it_versns-sozver, it_versns-pernr)
           WHERE pa0001~vdsk1 IN s_vdsk1
             AND zzt_pkt_status~zz_pkt_status EQ 'HVB_RECEIV'
             AND pa0001~begda <= p_tag
             AND pa0001~endda >= p_tag
*Gecancelte Daten werden nicht ausgegeben - es gelten nur gültige Nummern
             AND zzt_pkt_versns~lotim EQ '0'.
Und zwar möchte ich nur einen Datensatz ausgeben und zwar der mit dem letzten tstmp received.

Danke!!
liebe Grüsse

Mein Code sieht derzeit folgendermassen aus:

Code: Alles auswählen.

REPORT zlobtest03 LINE-SIZE 500 NO STANDARD PAGE HEADING.

*Deklaration der zu verwendeten Tabellen
*Für die Datenbanktabelle wird eine gleichnamige Struktur - der Tabellenarbeitsbereich - angelegt
*Die Struktur des Tabellenarbeitsbereichs entspricht genau der Zeilenstruktur der Datenbanktabelle
TABLES:
  zzt_pkt_status,
  pa0001,
  zzt_pkt_versns.

*Datendeklaration - Datum und Uhrzeit wird für die Konvertierung des timestamp benötigt
DATA:
  datum LIKE sy-datum,
  zeit  LIKE sy-uzeit,
  tag   LIKE sy-datum,
*Die internen Tabellen werden für das inner join - select verwendet
  it_status  TYPE TABLE OF zzt_pkt_status WITH HEADER LINE,
  it_pa0001  TYPE TABLE OF pa0001 WITH HEADER LINE,
  it_versns  TYPE TABLE OF zzt_pkt_versns WITH HEADER LINE,
*Zusätzlich wird eine workarea zum Hinzufügen eines neuen Status in die Statustab. definiert
  wa_status  TYPE zzt_pkt_status,
*Wird für die Ausgabe als Fixformat gebraucht
  wa_tstmp   LIKE zspkt_timestamp.

*Selektionsblock für die Eingabe des timestamp
SELECTION-SCREEN BEGIN OF BLOCK auswahl WITH FRAME.
*Selektionsbildschirm
SELECT-OPTIONS: s_vdsk1 FOR pa0001-vdsk1.
PARAMETERS: p_tag LIKE sy-datum.
SELECTION-SCREEN END OF BLOCK auswahl.

*Block für Dateiverarbeitung
SELECTION-SCREEN BEGIN OF BLOCK va WITH FRAME.
PARAMETERS:
  p_datei AS CHECKBOX,
*Feld zur Eingabe des Dateinamens - der Pfad wird vorgeschlagen
  p_fname(100) DEFAULT '/usr/sap/pmscp/' LOWER CASE.
SELECTION-SCREEN END OF BLOCK va.

*Hauptverarbeitung
START-OF-SELECTION.

*Wenn die Checkbox `Datenausgabe in einer Datei´ angeklickt wurde
  IF  p_datei =  'X'.
*Wenn der Dateiname in das Feld nicht eingetragen wurde, dann erscheint eine Meldung
    IF p_fname = '/usr/sap/pmscp/'.
      WRITE: / 'Dateiname fehlt'.
      EXIT.
    ENDIF.
*Wenn der Dateiname in das Feld nicht eingetragen wurde, dann erscheint eine Meldung
    IF p_fname IS INITIAL.
      WRITE: / 'Dateiname fehlt'.
      EXIT.
    ENDIF.
*Datei wird zum Schreiben geöffnet - Daten werden zeilenweise geschrieben
    OPEN DATASET p_fname FOR OUTPUT IN TEXT MODE.
  ENDIF.

*Wenn der Stichtag leer ist und der Organisationsschlüssel ist befüllt,
*dann wird das Datum auf das akt. Tagesdatum gesetzt
  IF p_tag IS INITIAL.
    p_tag = sy-datum.
  ENDIF.
  IF s_vdsk1 IS NOT INITIAL.
    p_tag = sy-datum.
  ENDIF.

*Die Daten werden aus der Tabelle zzt_pkt_status, pa0001 und zzt_pkt_versns selektiert,
*und mit inner join über die Sozialversicherungsnummer aus den Tabellen versns und status
*und über die Personalnummer der Tabellen versns und pa0001 verbunden.
*Es werden Daten ausgegeben, die nach dem vom User eingegebenen timestamp Daten vom HVB
*enthalten haben, und es sollen die Daten ausgegeben werden, die im Feld zz_pkt_status den
*Eintrag HVB_RECEIV haben.
  SELECT zzt_pkt_status~sozver zzt_pkt_status~tstmp zzt_pkt_status~zz_pkt_status
         pa0001~endda pa0001~begda pa0001~vdsk1 pa0001~pernr
         zzt_pkt_versns~sozver zzt_pkt_versns~pernr
         FROM zzt_pkt_versns INNER JOIN zzt_pkt_status
           ON zzt_pkt_versns~sozver = zzt_pkt_status~sozver
         INNER JOIN pa0001
           ON zzt_pkt_versns~pernr = pa0001~pernr
         INTO (it_status-sozver, it_status-tstmp, it_status-zz_pkt_status,
              it_pa0001-endda, it_pa0001-begda, it_pa0001-vdsk1, it_pa0001-pernr,
              it_versns-sozver, it_versns-pernr)
           WHERE pa0001~vdsk1 IN s_vdsk1
             AND zzt_pkt_status~zz_pkt_status EQ 'HVB_RECEIV'
             AND pa0001~begda <= p_tag
             AND pa0001~endda >= p_tag
*Gecancelte Daten werden nicht ausgegeben - es gelten nur gültige Nummern
             AND zzt_pkt_versns~lotim EQ '0'.

*Wenn Datensätze gefunden wurden
    IF sy-subrc EQ 0.
*Konvertiere den timestamp unter Berücksichtigung der Zeitzone in Datum und Zeit
      CONVERT TIME STAMP it_status-tstmp TIME ZONE sy-zonlo INTO DATE datum TIME zeit.
*Den Feldern der workarea wird der in die Tab. zzt_pkt_status neu einzutragende Status zugewiesen
*Der eingegebene timestamp des users wird ebenfalls in die Tabelle eingetragen
      wa_status-zz_pkt_status = 'BMLV_HVBCH'.
      wa_status-statusart = 'T'.
*Der neue Status wird in die Tabelle zzt_pkt_status geschrieben
      MODIFY zzt_pkt_status FROM wa_status.
*Ausgabe der Daten
      PERFORM ausgeben USING it_pa0001-pernr  CHANGING wa_tstmp-pernr.
      PERFORM ausgeben USING it_status-sozver CHANGING wa_tstmp-sozver.
      PERFORM ausgeben USING datum            CHANGING wa_tstmp-datum.
      PERFORM ausgeben USING zeit             CHANGING wa_tstmp-zeit.
      PERFORM ausgeben USING it_pa0001-vdsk1  CHANGING wa_tstmp-vdsk1.

    ENDIF.

  ENDSELECT.

**Wenn kein Datensatz gefunden wurde
  IF sy-subrc NE 0.
*Dann wird eine dementsprechende Meldung ausgegeben
    WRITE: / 'Es wurden keine Datensätze gefunden.'.
  ENDIF.

  IF p_datei = 'X'.
    PERFORM ausgabe_zeile USING wa_tstmp.
    WRITE: / 'Erzeugter Dateiname:', p_fname.
  ELSE.
    WRITE: / wa_tstmp.
  ENDIF.

*Wenn die Checkbox `Datenausgabe in einer Datei´ angeklickt wurde
  IF p_datei = 'X'.
*Schließen der Datei
    CLOSE DATASET p_fname.
  ENDIF.

END-OF-SELECTION.
*&---------------------------------------------------------------------*
*&      Form  ausgeben
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*      -->P_TEXT  text
*      <--P_AUSGSTR  text
*----------------------------------------------------------------------*
FORM ausgeben  USING    p_text
               CHANGING p_zielfeld.

*Deklaration der Var. ausgabe_temp
  DATA: ausgabe_temp(1000) TYPE c.

*Schreiben des Ausgabestrings
  WRITE: p_text TO ausgabe_temp LEFT-JUSTIFIED.

  p_zielfeld = p_text.

ENDFORM.                    " ausgeben
*&---------------------------------------------------------------------*
*&      Form  ausgabe_zeile
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*      -->P_AUSGSTR  text
*      -->P_WA_INFO  text
*----------------------------------------------------------------------*
FORM ausgabe_zeile USING p_struktur.

  IF p_datei = 'X'.
    TRANSFER p_struktur TO p_fname.
  ELSE.
    WRITE: / p_struktur.
  ENDIF.

ENDFORM.                    " ausgabe_zeile

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


Seite 1 von 1

Vergleichbare Themen

4
Antw.
3200
Views
SELECT der letzten ID
von the-FoX » 18.01.2005 18:11 • Verfasst in ABAP® Core
4
Antw.
2600
Views
Letzten Wert im Loop ausgeben
von le_fuka » 22.03.2012 22:15 • Verfasst in ABAP® für Anfänger
7
Antw.
1081
Views
Anhand des Stichtags die letzten Datensätze ermitteln
von kaim77 » 27.12.2022 17:26 • Verfasst in ABAP® Core
4
Antw.
3089
Views
Erster und letzten Datensatz eines Reports
von sacair » 25.06.2009 10:09 • Verfasst in ABAP® für Anfänger
4
Antw.
1870
Views
Analyse was der User in den letzten Tagen gemacht hat
von Kleenmex » 07.11.2006 10:24 • Verfasst in ABAP® für Anfänger

Über diesen Beitrag

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

Aktuelle Forenbeiträge

Regex in where
vor 6 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 6 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