select falsch?

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

select falsch?

Beitrag von barbara (ForumUser / 50 / 0 / 0 ) »
Hallo,
Ich möchte Daten über mehrere Tabellen (mittels INNER JOIN ?) selektieren und ausgeben.
(siehe code)
Nur derzeit ist es so, dass ich immer eine leere Ausgabe habe, bzw. keine Datensätze gefunden werden.
--> Ist mein select falsch?
--> Oder liegt es an der internen Tab. it_data?

thx
lg

REPORT zlobtest03 LINE-SIZE 500 NO STANDARD PAGE HEADING MESSAGE-ID zpkt.

*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.

DATA: BEGIN OF it_data OCCURS 0,

sozver LIKE zzt_pkt_versns-sozver,

pernr LIKE zzt_pkt_versns-pernr,

tstmp LIKE zzt_pkt_status-tstmp,

zz_pkt_status LIKE zzt_pkt_status-zz_pkt_status,

endda LIKE pa0001-endda,

begda LIKE pa0001-begda,

vdsk1 LIKE pa0001-vdsk1,

END OF it_data.

*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.

* it_status TYPE TABLE OF zzt_pkt_status WITH HEADER LINE,

* wa_status TYPE zzt_pkt_status,

* it_pa0001 TYPE TABLE OF pa0001 WITH HEADER LINE,

* wa_pa0001 TYPE pa0001.

*Selektionsblock für die Eingabe des timestamp

SELECTION-SCREEN BEGIN OF BLOCK auswahl WITH FRAME.

*Selektionsbildschirm

PARAMETERS: p_tstmp LIKE zzt_pkt_status-tstmp.

SELECT-OPTIONS: s_vdsk1 FOR pa0001-vdsk1.

PARAMETERS: p_tag LIKE sy-datum.

SELECTION-SCREEN END OF BLOCK auswahl.

*Hauptverarbeitung

START-OF-SELECTION.

* SELECT * FROM zzt_pkt_status

* INTO TABLE it_status.

*

* SELECT * FROM pa0001

* INTO TABLE it_pa0001.

IF p_tag IS INITIAL.

p_tag = sy-datum.

ENDIF.

IF s_vdsk1 IS NOT INITIAL.

p_tag = sy-datum.

ENDIF.

* zzt_pkt_status-zz_pkt_status = 'BMLV-HVBCH'.

* INSERT 'BMLV-HVBCHECK' INTO zzt_pkt_status VALUES wa_status.

* wa_status-zz_pkt_status = 'BMLV-HVBCHECK'.

* INSERT INTO zzt_pkt_status VALUES wa_status.

IF sy-subrc NE 0.

WRITE: / 'Der technische Status konnte nicht eingefügt werden.'.

ENDIF.

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

* INTO (it_status-sozver, it_status-tstmp,

* it_pa0001-endda, it_pa0001-begda, it_pa0001-vdsk1)

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 CORRESPONDING FIELDS OF TABLE it_data

WHERE zzt_pkt_status~tstmp >= p_tstmp

AND zzt_pkt_status~zz_pkt_status EQ 'HVB_RECEIV'

AND pa0001~vdsk1 IN s_vdsk1

AND pa0001~begda <= p_tag

AND pa0001~endda >= p_tag

ORDER BY zzt_pkt_status~tstmp.

*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_data-tstmp TIME ZONE sy-zonlo INTO DATE datum TIME zeit.

*Ausgabe der Sozialversicherungsnummern, timestamp und timestamp konvertiert

WRITE: / 'SV-Nummer:',it_data-sozver,',' ,'Timestamp:',it_data-tstmp,','.

WRITE: 'Timestamp konvertiert:',datum, zeit,','.

WRITE: 'Org.schluessel:',it_data-vdsk1,',' ,'Stichtag:',p_tag.

ENDIF.

*Wenn kein Datensatz gefunden wurde

IF sy-subrc NE 0.

*Dann wird eine dementsprechende Meldung ausgegeben

WRITE: / 'Es wurden keine Datensätze gefunden.'.

ENDIF.

**Funktionsbaustein zum reinschreiben des technischen Status

* CALL FUNCTION 'Z_PKT_WRITE_TECH_STATUS'

**Unter EXPORTING werden Felder, Feldleisten oder interne Tabellen an den Funktionsbaustein übergeben

* EXPORTING

* sozver = zzt_pkt_status-sozver

**Der techn. Status wurde mit dem Namen HVB_RECEIV angelegt

* status = 'HVB-RECEIV'

** TEXT1 =

** TEXT2 =

** TIMESTAMP =

** WRITE_TO_DB = 'X'

**Unter EXCEPTIONS werden die Ausnahmen aufgeführt, die das Programm behandeln möchte

* EXCEPTIONS

* invalid_sozvers = 1

* invalid_status = 2

**Mit OTHERS kann auf alle verbleibenden Ausnahmen Bezug genommen werden

* OTHERS = 3

* .

**Tritt eine der aufgeführten Ausnahmen ein, wird SY-SUBRC auf den zugeordneten Wert rc gesetzt

**SY-SUBRC wird im Falle der Ausnahme auf einen Wert ungleich 0 gesetzt

* IF sy-subrc <> 0.

* MESSAGE x000 WITH 'Z_PKT_WRITE_TECH_STATUS' sy-subrc.

* ENDIF.

END-OF-SELECTION.


SELECT Falsch?

Beitrag von Nordlicht (Specialist / 285 / 8 / 2 ) »
Hallo,

nur ein Tip: Du solltest den Select mal probeweise ohne WHERE Klauseln durchführen. Da wird vielleicht klarer, ob es wirklich am JOIN liegt.

Ciao

Nordlicht
;-)

Seite 1 von 1

Über diesen Beitrag


ABAP & SAP eBook Flatrate von Espresso Tutorials Sponsorlink
Unterstütze die Community und teile den Beitrag für mehr Leser und Austausch

Aktuelle Forenbeiträge

ABAP-Liste in modalem Fenster
vor einer Stunde von Tron 4 / 37
Zugriff auf Eingabeparameter in Methode
vor 4 Stunden von Margolwes gelöst 7 / 208
BATCH INPUT MAPPE
vor 20 Stunden von Juri gelöst 18 / 305

Vergleichbare Themen

Ausgabe falsch
von PseudoReal » 10.06.2005 16:08
RCPDIRO1 falsch, was tun ?
von sapler » 12.10.2005 15:36
falsch gesetztes CLEAR !?
von BabsiCSC » 30.06.2008 12:09
RowID im ALV-Grid ist falsch
von smidi » 09.05.2006 10:56
„INTO CORRESPONDING FIELDS OF TABLE“ <--was ist falsch ?
von K0RN » 17.01.2012 16:18