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 ) » 2. Aug 2006 15:10

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


Seite 1 von 1

Aktuelle Forenbeiträge

Langtext zur Exception
vor einer Stunde von a-dead-trousers 11 / 99
Welche Entwicklertools?
vor 18 Stunden von LostDarkness 2 / 924
Werksspezifische Konfiguration kopieren
vor 20 Stunden von eleve 2 / 49
Removal of left space - next to a docking container
vor 20 Stunden von Haemma83 16 / 115

Unbeantwortete Forenbeiträge

BAPI_PO_CREATE1 und Einkaufsinfosatz
vor 3 Tagen von SweetRuedi 1 / 81
WCOCO: Gruppe für Betragsfelder 0S01
vor 5 Tagen von SAP_ENTWICKLER 1 / 52
CAS-Nr.: Chemical Abstracs Service
vor einer Woche von SAP_ENTWICKLER 1 / 92
Interaktives Skript, Rolle IC-Manager
vor 3 Wochen von erubadhron86 1 / 129