Moin.
Eine gängige Methode zum Ablegen oder Verarbeiten von Daten im Hintergrund, ist das Verwenden von Clustern.
Beispiel:
- Code: [Select all] [Expand/Collapse] [Download] (Untitled.txt)
*&---------------------------------------------------------------------*
*& Report ZCREATE_CLUSTER_ZA *
*& *
*&---------------------------------------------------------------------*
*& *
*& *
*&---------------------------------------------------------------------*
DATA lt_data3
TYPE TABLE OF sflight
.
SELECT * FROM sflight
INTO TABLE lt_data3
.
*&---------------------------------------------------------------------*
*& Form CREATE_CLUSTER
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_DEST text
* <--P_BIN_ID text
*----------------------------------------------------------------------*
IF NOT lt_data3
[] IS INITIAL. DATA: indxkey
TYPE indx
-srtfd
. indxkey = sy-repid.
EXPORT lt_data3
FROM lt_data3
TO DATABASE indx
(za
) ID indxkey
.
- GeSHi ©
Die Daten werden in die Tabelle
INDX unter dem Schlüssel ZA / Reportname abgelegt.
Zurücklesen der Daten aus dem Cluster.
- Code: [Select all] [Expand/Collapse] [Download] (Untitled.txt)
*&---------------------------------------------------------------------*
*& Report ZREAD_CLUSTER_ZA *
*& *
*&---------------------------------------------------------------------*
*& *
*& *
*&---------------------------------------------------------------------*
DATA lt_data3
TYPE TABLE OF sflight
. DATA l_fn
TYPE string VALUE 'c:\temp\lt_data3.txt'.
CALL METHOD cl_gui_frontend_services=>gui_download
EXPORTING
filename = l_fn
CHANGING
data_tab = lt_data3
EXCEPTIONS
file_write_error = 1
no_batch = 2
gui_refuse_filetransfer = 3
invalid_type = 4
no_authority = 5
unknown_error = 6
header_not_allowed = 7
separator_not_allowed = 8
filesize_not_allowed = 9
header_too_long = 10
dp_error_create = 11
dp_error_send = 12
dp_error_write = 13
unknown_dp_error = 14
access_denied = 15
dp_out_of_memory = 16
disk_full = 17
dp_timeout = 18
file_not_found = 19
dataprovider_exception = 20
control_flush_error = 21
not_supported_by_gui = 22
error_no_gui = 23
OTHERS = 24.
*PERFORM delete_cluster.
*&---------------------------------------------------------------------*
*& Form READ_CLUSTER
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_DEST text
* <--P_BIN_ID text
*----------------------------------------------------------------------*
IF lt_data3
[] IS INITIAL. DATA: indxkey
TYPE indx
-srtfd
. indxkey = 'ZCREATE_CLUSTER_ZA'.
IMPORT lt_data3
TO lt_data3
FROM DATABASE indx
(za
) ID indxkey
.
*&---------------------------------------------------------------------*
*& Form DELETE_CLUSTER
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_DEST text
* <--P_BIN_ID text
*----------------------------------------------------------------------*
DATA: indxkey
TYPE indx
-srtfd
. indxkey = 'ZCREATE_CLUSTER_ZA'.
DELETE FROM DATABASE indx
(za
) ID indxkey
.
- GeSHi ©
So kann man auch im Hintergrund Daten sammeln, oder zur Hintergrundverarbeitung bereitstellen.
Mit dem 2. Report die Ergebnisse lesen downloaden (und löschen) . Dir fällt bestimmt was dazu ein.
https://wiki.scn.sap.com/wiki/display/S ... +DatabasesGruß Jens
Ps. Der Name der Internen Tabelle (e.g. LT_DATA3) darf nicht mehr als 8 Zeichen haben !!