Einfach Daten extrahieren?

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

Einfach Daten extrahieren?

Beitrag von c0lt.seavers (ForumUser / 44 / 0 / 0 ) »
Hallo,

gibt es eine schnell einfache Möglichkeit Daten aus einer Tabelle zu extrahieren ohne ein Programm zu schreiben? Geht dies dann nur komplett oder kann man die Daten auch noch eingrenzen?

Vielen Dank
C0lt

gesponsert
Stellenangebote auf ABAPforum.com schalten
kostenfrei für Ausbildungsberufe und Werksstudenten


Beitrag von ereglam (Top Expert / 1829 / 2 / 7 ) »
Hallo C0lt,

das geht normallerweise recht einfach über die SE16, sofern man dazu die Berechtigung hat.
In manchen Fällen sind jedoch die Tabellendaten ohne weitergehende Kenntnisse recht wertlos, da sie zur Laufzeit erst noch interpretiert werden müssen.
Gruß
Ereglam


May the Force be with your code
|| .| |.|| | .... . ..|. ||| .|. |.|. . |... . .|| .. | .... |.|| ||| ..| .|. |.|. ||| |.. .

Beitrag von c0lt.seavers (ForumUser / 44 / 0 / 0 ) »
Okay, danke für die Antwort. Ist schon mal eine Idee, wobei ich bei großen Datenmengen bestimmt probleme bekommen werde...

Beitrag von c0lt.seavers (ForumUser / 44 / 0 / 0 ) »
Ich habe nun überlegt ein Programm zu schreiben, den man die Tabelle mitgibt und das Programm anschließend die Tabelle in ein Workfile extrahiert. Hier habe ich einem kleinen Prototyp geschrieben. Da ich vor einiger Zeit schon einmal wegen dynamischen internen Tabellen gefragt hatte und hier dank der SAP Version welche wir hier im Einsatz haben ein wenig hingefallen bin, wurde mir cl_alv_table_create=>create_dynamic_table ans Herz gelegt. Da wir keine OO im Unternehmen einsetzen musste ich erst einmal suchen um ein Beispiel zur Anwendung zu finden. Nun ist folgendes Programm entstanden:

Code: Alles auswählen.


*------------------------------------------------------------------
* Type Pools
*------------------------------------------------------------------
type-pools: slis.
*------------------------------------------------------------------
* Tabellen
*------------------------------------------------------------------
tables: zpfad.
*------------------------------------------------------------------
* Eingabe
*------------------------------------------------------------------
parameters: p_table             type slis_tabname.
*------------------------------------------------------------------
* Variablen
*------------------------------------------------------------------
data: it_table            type slis_t_fieldcat_alv.
data: gt_fieldcat         type slis_t_fieldcat_alv with header line.
data: gt_lvc_fieldcat     type lvc_t_fcat.
data: gp_table            type ref to data.
data: c_progname          like sy-repid.
data: c_workfile(100)     type c.

* Field Symbols
field-symbols: <gt_table> type table.
field-symbols: <tab>      type table.
*------------------------------------------------------------------
* Start
*------------------------------------------------------------------
start-of-selection.

* Datei öffnen
  select single *
  from zpfad
  where host          =  sy-host
    and zzschluessel  = 'TRANSFTP'
    and zzschluessel1 =  sy-mandt.

  concatenate zpfad-zztrans 'ERSTUEB\' p_table '.txt' into c_workfile.
  open dataset c_workfile for output in text mode.

* Fehler beim öffnen der Datei?
  if sy-subrc ne 0.
    message e169(zrb) with text-e01 c_workfile.
  endif.

* Zuordnung des Programmnamens für FB aufruf
  c_progname = sy-repid.

* Aufbau des Feldkatalogs aus Dictionarystruktur p_table
  call function 'REUSE_ALV_FIELDCATALOG_MERGE'
       exporting
            i_program_name         = c_progname
            i_structure_name       = p_table
            i_inclname             = c_progname
       changing
            ct_fieldcat            = gt_fieldcat[]
       exceptions
            inconsistent_interface = 1
            program_error          = 2
            others                 = 3.

* Fehler beim FB?
  if sy-subrc ne 0.
    message e169(zrb) with text-e02 sy-subrc.
  endif.

  call function 'LVC_TRANSFER_FROM_SLIS'
       exporting
            it_fieldcat_alv = gt_fieldcat[]
       importing
            et_fieldcat_lvc = gt_lvc_fieldcat[]
       tables
            it_data         = it_table
       exceptions
            it_data_missing = 1
            others          = 2.

* Fehler beim FB?
  if sy-subrc ne 0.
    message e169(zrb) with text-e03 sy-subrc.
  endif.

* Dynamisch interne Tabelle aufbauen und zuweisen
  call method cl_alv_table_create=>create_dynamic_table
                           exporting it_fieldcatalog = gt_lvc_fieldcat
                           importing ep_table = gp_table.

  assign gp_table->* to <gt_table>.


* Select ausführen
  select *
    from (p_table)
    into table <gt_table>.


* Datei per FB ausgeben
  call function 'WS_DOWNLOAD'
       exporting
            filename = c_workfile
            filetype = 'ASC'
            data_tab = 'DAT'
       tables
            data_tab = <gt_table>.



Bei dem FB WS_DOWNLOAD verunstaltet er jedoch Umlaute und CURR Felder?. wie kann ich das noch umgehen? Ist mein Programm zu umständlich oder passt das grob so?


Vielen Dank
c0lt

Beitrag von Krueger ( / / 0 / 3 ) »
Warum schreibst Du nun so ein Programm???

Warum nimmst Du nicht einfach die SE16??

Bei größeren Datenmengen, wirst Du mit Deinem ALV, evtl. sowieso an Grenzen stossen.

In der SE16 hast Du die Wahl, der Liste, des ALV-Fuba oder ALV-Grid.

Beitrag von c0lt.seavers (ForumUser / 44 / 0 / 0 ) »
Aus einigen Tabellen sollen in naher Zukunft Daten gelöscht/archiviert werden. Bevor dies geschieht sollen diese als Datendatei extrahiert werden um einen nachgelagerten System noch einfach zugänglich zu machen. Wenn ich das über die SE16 mache, habe ich in der Datei sämtliche Rahmen etc. mit dabei welche nur stören würden. Bevor ich nun für jede Tabelle ein kleines Programm schreibe, habe ich über die dynamische Lösung nachgedacht, aber wenn dies auch keine Lösung ist muss ich wohl viele kleine Programme schreiben.

Über eure Tipps wäre ich dankbar!
C0lt

Beitrag von Krueger ( / / 0 / 3 ) »
Das Ganze ist von der Größe des zusichernden Datenbestandes abhänging:

Ich würde solche Daten (die evtl. doch sehr gross sein können) immer erst mit "Transfer" auf den SAP-Server sichern.

ALV und solchen Schnickschnack komplett weglassen.

Einfach nur die benötigten Daten lesen und mit "Transfer" abspeichern.

Man sollte dabei darauf achten, wieviele Daten man "per Block" oder alle einliest, da die interene Tabelle auch so gross werden kann, dass es dort zu Problemen kommen kann.

Das Ganze läuft dann jedenfalls ohne Probleme auch im Hintergrund.



Bei "kleinen" Datenbeständen, kannst Du machen was Du willst... naja, fast :wink:

Beitrag von brinam (Specialist / 111 / 0 / 0 ) »
Ich würde auch lieber die Variante eines Z-Programms als der SE16 wählen. Die paar unnötigen Striche wegzubekommenm, ist da sicher noch das kleinere Problem.

Bei großen Datenbeständen (und die habt Ihr sicher, wenn Ihr löschen/archivieren wollt), kommst Du mit der SE16 online auch nicht weit, musst die Daten also in den Hintergrund schicken. Bei breiten Tabellen (z.B. MARA, wo Dich vielleicht nur 30 von den über 100 Feldern der Tabelle interessieren), kannst Du online die Feldauswahl für die Listaufbereitung einschränken. Wenn Du die Daten in den Hintergrund schickst, dann interessiert diese Feldauswahl nicht mehr, und es werden nur so viele Spalten ausgegeben, wie gerade in den spool passen (z.B. X_65_132). Da fehlt dann also die Hälfte an Informationen.
Viele Grüße
Britta

Beitrag von c0lt.seavers (ForumUser / 44 / 0 / 0 ) »
Vielen Dank,

es wird wohl auf Z-Programm hinauslaufen. Es handelt sich schon um Datensätze m Millionenbereich. Ich muss leider alle Spalten auslesen und ausgeben. Als Blockgröße werde ich es mal mit 50.000 probieren. Leider können die ganzen FB die ich keine keine interne Tabelle in eine Datei schreiben, wenn das Programm im Hintergrund läuft, daher wird es wohl auch einen TRANSFER im Loop hinauslaufen

Seite 1 von 1

Vergleichbare Themen

0
Antw.
1222
Views
Extrahieren von Hierarchien
von hsallmann » 12.04.2007 15:23 • Verfasst in Sonstige Module
2
Antw.
1995
Views
Extrahieren von Anlagen
von Bumbel » 18.04.2011 14:31 • Verfasst in ABAP Objects®
3
Antw.
4700
Views
Extrahieren der Zahlen aus einem String und Ablage in eine T
von JürgenFFM » 12.06.2006 11:58 • Verfasst in ABAP® Core
4
Antw.
2741
Views
ALV-liste-Daten mit der DB-Tabelle-Daten vergleichen
von Nadine_2706 » 31.08.2011 11:57 • Verfasst in ABAP® für Anfänger
9
Antw.
4754
Views
Daten aus 2 Tabellen + Vergleich von Daten
von dv88 » 06.10.2009 12:26 • Verfasst in ABAP® für Anfänger

Über diesen Beitrag


Unterstütze die Community und teile den Beitrag für mehr Leser und Austausch

Newsletter Anmeldung

Keine Beiträge verpassen! Wöchentlich versenden wir lesenwerte Beiträge aus unserer Community.
Die letzte Ausgabe findest du hier.
Details zum Versandverfahren und zu Ihren Widerrufsmöglichkeiten findest du in unserer Datenschutzerklärung.