Vorhandene Excel erweitern

Alles rund um die Sprache ABAP®: Funktionsbausteine, Listen, ALV
5 Beiträge • Seite 1 von 1
5 Beiträge Seite 1 von 1

Vorhandene Excel erweitern

Beitrag von Thomas17 (Specialist / 157 / 17 / 14 ) »
Hallo Zusammen,

ich schreibe mit ABAB2xlsx eine Excel auf einen logischen Pfad mit Open Datatset - for output in binary mode.

Alles bestens - nun möchte ich die Daten mit opdendataset - for appending in binary mode um X zeilen ergänzen.
wenn ich jetzt die datei öffnen möchte, sagt mir excel, dass die datei defekt ist und repariert wird.
nach der reparatur zeitgt mir excel nur noch die daten, die ich zuvor mit for output in die datei geschrieben haben.

es sieht so aus, als ob das schreiben mit append in dem fall nicht funktioniert - ich vermute es liegt daran, wie ich die excel erstelle...- kann mir jemand weiterhelfen?

So schreibe ich die datei:

Code: Alles auswählen.

DATA: lo_excel                TYPE REF TO zcl_excel,
      lo_excel_writer         TYPE REF TO zif_excel_writer,
      lo_worksheet            TYPE REF TO zcl_excel_worksheet,
      lo_style_conditional2   TYPE REF TO zcl_excel_style_conditional,
      column_dimension        TYPE REF TO zcl_excel_worksheet_columndime.

DATA: lt_field_catalog        TYPE zexcel_t_fieldcatalog,
      ls_table_settings       TYPE zexcel_s_table_settings,
      ls_iconset              TYPE zexcel_conditional_iconset.

DATA: lv_file                 TYPE xstring,
      lv_bytecount            TYPE i,
      lt_file_tab             TYPE solix_tab,
      lv_title                TYPE zexcel_sheet_title.

 " Creates active sheet
  CREATE OBJECT lo_excel.

  " Get active sheet
  lo_worksheet = lo_excel->get_active_worksheet( ).
  lo_worksheet->set_title( lv_title ).

  "Tabellen Einstellungen:
  ls_table_settings-top_left_column = 'A'.
  ls_table_settings-top_left_row = '1'.
  "ls_table_settings-table_style  = zcl_excel_table=>builtinstyle_medium5.
lt_field_catalog = zcl_excel_common=>get_fieldcatalog( ip_table = lt_info001 ).

      PERFORM set_display_fieldcatalog.

      lo_worksheet->bind_table( ip_table        = lt_info001
                              is_table_settings = ls_table_settings
                              it_field_catalog  = lt_field_catalog ).
  CREATE OBJECT lo_excel_writer TYPE zcl_excel_writer_2007.
  lv_file = lo_excel_writer->write_file( lo_excel ).
IF cb_app IS NOT INITIAL.
      OPEN DATASET lv_default_file_name FOR APPENDING IN BINARY MODE.
    ELSE.
      OPEN DATASET lv_default_file_name FOR OUTPUT IN BINARY MODE.
    ENDIF.
    TRANSFER lv_file  TO lv_default_file_name.
    CLOSE DATASET lv_default_file_name.

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


Re: Vorhandene Excel erweitern

Beitrag von a-dead-trousers (Top Expert / 4483 / 231 / 1205 ) »
hi!

OPEN DATASET FOR APPENDING hängt die Daten wie der Name schon vermuten lässt AM ENDE der Datei an.
Ein Excel-Dokument lässt sich auf diesem Wege jedoch leider nicht erweitern, da das Ende der Datei nicht gleich bedeutend mit dem Ende des Inhalts ist.
Vorallem wenn man sich Beispielhaft eine XML-Datei anschaut wird ein Tag mit <...> begonnen und mit </...> beendet. Die Daten stehen jetzt genau zwsichen diesen Tags und diese wiederum in anderen Tags die eine Zeile/Arbeitsblatt/Dokument usw repräsentieren. Also kann man nicht einfach am Ende der Datei weitere Tags anfügen weil der umgebende Kontext dann fehlt.

Du musst also deine Excel-Datei entweder jedes Mal neu erstellen oder mit den Funktionen aus ABAP2XSLX erweitern. Über OPEN DATASET funktioniert es nicht.
Alternativ zu ABAP2XSLX könntest du eine CSV Datei verwenden. Die lassen sich problemlos "erweitern", da sie nur eine flache Struktur besitzten.

lg ADT
Theory is when you know something, but it doesn't work.
Practice is when something works, but you don't know why.
Programmers combine theory and practice: Nothing works and they don't know why.

ECC: 6.18
Basis: 7.50

Re: Vorhandene Excel erweitern

Beitrag von Thomas17 (Specialist / 157 / 17 / 14 ) »
hi adt,

danke dass du meine Vermutung bestätigt hast.
Gibt es irgendwelche Tipps und Tricks für das Erzeugen der CSV? Beispielprogramme oder nützliche Bausteine?

Grüße

Re: Vorhandene Excel erweitern

Beitrag von a-dead-trousers (Top Expert / 4483 / 231 / 1205 ) »
pfuuh... sicher... irgendwo... ;)

Ne, eine CSV Datei ist eigentlich GANZ simpel aufgebaut.
Jede Zeile repräsentiert einen Datensatz.
Die Felder eines Datensatzes sind durch ; getrennt.
Sollte ein Feld ein " oder ein ; enthält müssen diese Zeichen maskiert werden und der Inhalt unter " angegeben werden.
Am Besten du speicherst eine Excel-Datei als CSV und schaust dir das Ergebnis an.

Bausteine die direkt in CSV umwandeln gibt es auch, aber von denen hab ich bislang noch keinen eingesetzt, weil die immer irgendeine Einschränkung bzgl. Datenlänge usw haben.

Ich mach es meist in der Art

Code: Alles auswählen.

data:
  lt_data type standard table of ... with default key,
  lt_csv type stringtab,
  lt_line type stringtab,
  ld_csv type string.
field-symbols:
  <ld_csv> type string,
  <la_data> type any,
  <la_line> type string,
  <la_field> type any.
loop at lt_data assigning <la_data>.
  clear ld_index.
  refresh lt_line.
  do.
    add 1 to ld_index.
    assign component ld_index of structure <la_data> to <la_field>.
    if sy-subrc ne 0.
      exit. "from do.
    endif.
    append initial line to lt_line assigning <la_line>.
    <la_line> = <la_field>. "<-- Hier muss man die Daten evtl. umwandeln.
  enddo.
  append initial line to lt_csv assigning <ld_csv>.
  concatenate lines of lt_line into <ld_csv> separated by ';'.
endloop.
concatenate lines of lt_csv into ld_csv separated by cl_abap_char_utilities=>cr_lf.
In LD_CSV stehen jetzt die ganzen Daten drinnen die man nun entweder in eine neue Datei schreiben kann oder mittels APPENDING an eine bestehenden anfügen kann.

lg ADT

Folgende Benutzer bedankten sich beim Autor a-dead-trousers für den Beitrag:
Thomas17

Theory is when you know something, but it doesn't work.
Practice is when something works, but you don't know why.
Programmers combine theory and practice: Nothing works and they don't know why.

ECC: 6.18
Basis: 7.50

Re: Vorhandene Excel erweitern

Beitrag von Thomas17 (Specialist / 157 / 17 / 14 ) »
Hi ADT,

vielen Dank für den Input!

Funktioniert!
Gruss

Seite 1 von 1

Vergleichbare Themen

3
Antw.
2416
Views
Vorhandene Textarten anzeigen?
von b0rsti » 08.05.2008 09:37 • Verfasst in ABAP® Core
1
Antw.
1651
Views
Wie binde ich eine vorhandene Suchhilfe in einen Report ein?
von b0rsti » 20.02.2008 13:10 • Verfasst in ABAP® für Anfänger
0
Antw.
3290
Views
Excel Upload ohne Excel aber OpenOffice
von MarkusW » 23.01.2008 17:07 • Verfasst in ABAP® Core
2
Antw.
5494
Views
EXCEL Export aus SAP mit Excel 2003 / 2007
von hfahrian » 03.02.2014 11:34 • Verfasst in ABAP Objects®
2
Antw.
4993
Views
BSEG erweitern
von penguin13 » 16.08.2006 11:04 • Verfasst in ABAP® Core

Über diesen Beitrag


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

Aktuelle Forenbeiträge

Ermittlung der Arbeitstage (Mosid)
vor 16 Stunden von DeathAndPain 3 / 44198
LSMW-Problem
vor 17 Stunden von DeathAndPain gelöst 6 / 2040
SFP (Adobe Forms) QR-Code wird nicht angezeigt
vor 19 Stunden von Sebastian82 gelöst 4 / 603
ATC Finding in Smartforms
vor einer Woche von sap_enthusiast 2 / 2077

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.

Aktuelle Forenbeiträge

Ermittlung der Arbeitstage (Mosid)
vor 16 Stunden von DeathAndPain 3 / 44198
LSMW-Problem
vor 17 Stunden von DeathAndPain gelöst 6 / 2040
SFP (Adobe Forms) QR-Code wird nicht angezeigt
vor 19 Stunden von Sebastian82 gelöst 4 / 603
ATC Finding in Smartforms
vor einer Woche von sap_enthusiast 2 / 2077