Hello,
Ich "bastle" leider noch immer an dem Eintrag eines neuen Status in die Tabelle zzt_pkt_status herum.
Nun aber die Frage: Wieso wird die Tabelle zzt_pkt_status mit dem neuen Status in das Feld zz_pkt_status nicht befüllt?
In der wa_status steht lt. debug der neue Status im Feld zz_pkt_status d'rinnen. !???
Derzeit sieht mein Code folgendermassen aus -->
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.
*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,
it_pa0001 TYPE TABLE OF pa0001 WITH HEADER LINE,
it_versns TYPE TABLE OF zzt_pkt_versns WITH HEADER LINE,
wa_status TYPE zzt_pkt_status.
*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.
SELECT * FROM zzt_pkt_versns
INTO TABLE it_versns.
IF p_tag IS INITIAL.
p_tag = sy-datum.
ENDIF.
IF s_vdsk1 IS NOT INITIAL.
p_tag = sy-datum.
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
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 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
AND zzt_pkt_status~zz_pkt_status NE 'BMLV_HVBCH'
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_status-tstmp TIME ZONE sy-zonlo INTO DATE datum TIME zeit.
wa_status-zz_pkt_status = 'BMLV_HVBCH'.
INSERT INTO zzt_pkt_status VALUES wa_status.
*Ausgabe der Sozialversicherungsnummern, timestamp und timestamp konvertiert
WRITE: / 'SV-Nummer:',it_status-sozver,',' ,'Timestamp:',it_status-tstmp,','.
WRITE: 'Timestamp konvertiert:',datum, zeit,','.
WRITE: wa_status-zz_pkt_status.
WRITE: zzt_pkt_status-zz_pkt_status.
WRITE: 'Org.schluessel:',it_pa0001-vdsk1,',' ,'Stichtag:',p_tag.
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.
END-OF-SELECTION.