Masz wiele opcji, aby to zrobić.
Jeśli korzystasz z SAP BW, istnieje wiele standardowych narzędzi, które pomagają wykonywać ekstrakcje i automatyzować procesy.
W przeciwnym razie można napisać prosty program ABAP (typ 1), aby odczytać dane z tabel i umieścić je w płaskim pliku.
W przeciwnym razie można napisać moduł funkcji zdalnego dostępu (RFC) i wywołać go za pomocą biblioteki RFC SAP.
Można również zawinąć funkcję RFC w usługę internetową i wywołać ją za pośrednictwem protokołu SOAP/HTTP.
Wreszcie, jeśli masz dostęp do bazy danych, możesz nawet napisać skrypt, aby wyodrębnić potrzebne dane.
Prostym przykładem programu, aby wyodrębnić coś z tabeli DB:
report ZEXTRACT_EXAMPLE.
data: lt_t001 type table of t001.
data: ls_t001 type t001.
data: lv_filename type string value '/tmp/outfile.txt'.
select * from t001 into table lt_t001.
open dataset lv_filename for output in text mode encoding default.
loop at lt_t001 into ls_t001.
transfer ls_t001-bukrs to lv_filename.
endloop.
close dataset lv_filename.
Jest to bardzo prymitywne, ale masz pomysł. Wybiera dane z tabeli DB do wewnętrznej tabeli (w pamięci) i zapisuje ją do pliku o nazwie /tmp/outfile.txt
na serwerze, skąd można go pobrać. (Będziesz musiał zmienić wynik, aby był w wymaganym formacie).
Następnie można zaplanować program z SM36, aby działał okresowo jako zadanie w tle.
Dzięki. Spróbuję tego. – Joshua1729
@mydoghasworms: Cóż, ten program nie będzie działał, jeśli tabela ma na przykład 10 milionów rekordów. Należy raczej używać instrukcji 'OPEN CURSOR' do wybierania danych, a następnie zapisywać je kolejno do pliku. – Jagger
@mydoghasworms: Jeszcze jedno ... jeśli tabela zawiera pola, które nie są znakami, otrzymasz inną długość, na przykład w postaci liczb całkowitych lub dziesiętnych w pliku tekstowym. – Jagger