Habe mir das Beispiel Programm für Excel Inplace von Tricktresor genommen und wollte es gerne auf meine Wünsche umprogrammieren. Aber wenn ich es ausführe bekomme ich keine Daten. Er zeigt mir zwar das Excel Inplace an und auch die Farben aber die Daten nicht.
Weiß jemand wo der Fehler liegt??
Grüße und Danke
Bettina
[code]*----------------------------------------------------------------------*
* Instanz zum Custom Container anlegen
*----------------------------------------------------------------------*
CREATE OBJECT my_container
EXPORTING
* PARENT =
container_name = 'CC'
* STYLE =
* LIFETIME = lifetime_default
* REPID =
* DYNNR =
* NO_AUTODEF_PROGID_DYNNR =
EXCEPTIONS
cntl_error = 1
cntl_system_error = 2
create_error = 3
lifetime_error = 4
lifetime_dynpro_dynpro_link = 5
OTHERS = 6.
IF sy-subrc <> 0.
MESSAGE i398(00) WITH 'Fehler' sy-subrc
'beim Anlegen des Custom Container Controls'.
ENDIF.
*----------------------------------------------------------------------*
* Instanz zur zentralen Desktop Office Verwaltung erzeugen
*----------------------------------------------------------------------*
CALL METHOD c_oi_container_control_creator=>get_container_control
IMPORTING
control = obj_doi_control
error = obj_error.
* RETCODE =
IF NOT ( obj_error->has_succeeded = 'X' AND
obj_error->has_failed = ' ' ).
MESSAGE i398(00) WITH 'Fehler' obj_error->error_code
'beim Anlegen des DOI-Verwaltungsobjektes'.
ENDIF.
*----------------------------------------------------------------------*
* Zentrales Verwaltungs-Objekt an Dynpro-Container anbinden
*----------------------------------------------------------------------*
CALL METHOD obj_doi_control->init_control
EXPORTING
inplace_enabled = 'X'
no_flush = 'X'
r3_application_name = 'Flugliste'
parent = my_container
IMPORTING
error = obj_error.
IF NOT ( obj_error->has_succeeded = 'X' AND
obj_error->has_failed = ' ' ).
MESSAGE i398(00)
WITH 'Fehler' obj_error->error_code
'beim Initialisieren des DOI-Verwaltungsobjektes'.
ENDIF.
*----------------------------------------------------------------------*
* Instanz zum Excel-Dokument anlegen
*----------------------------------------------------------------------*
CALL METHOD obj_doi_control->get_document_proxy
EXPORTING
document_type = soi_doctype_excel_sheet
no_flush = 'X'
IMPORTING
document_proxy = obj_doi_document
error = obj_error.
IF NOT ( obj_error->has_succeeded = 'X' AND
obj_error->has_failed = ' ' ).
MESSAGE i398(00) WITH 'Fehler' obj_error->error_code
'beim Anlegen des XLS-Dokumentes'.
ENDIF.
*----------------------------------------------------------------------*
* Dokument (Excel-Sheet) anlegen
*----------------------------------------------------------------------*
CALL METHOD obj_doi_document->create_document
EXPORTING
document_title = 'Flugliste'
no_flush = 'X'
open_inplace = 'X'
IMPORTING
error = obj_error.
IF NOT ( obj_error->has_succeeded = 'X' AND
obj_error->has_failed = ' ' ).
MESSAGE i398(00) WITH 'Fehler' obj_error->error_code
'beim Anlegen des Excel-Sheets'.
ENDIF.
*----------------------------------------------------------------------*
* Instanz zum Spreadsheet (Excel-Schnittstelle) anlegen
*----------------------------------------------------------------------*
CALL METHOD obj_doi_document->get_spreadsheet_interface
EXPORTING
no_flush = ' '
IMPORTING
error = obj_error
sheet_interface = obj_doi_spreadsheet.
IF NOT ( obj_error->has_succeeded = 'X' AND
obj_error->has_failed = ' ' ).
MESSAGE i398(00) WITH 'Fehler' obj_error->error_code
'beim Anlegen der Excel-Schnittstelle'.
ENDIF.
DATA: t_ranges TYPE soi_range_list,
t_contents TYPE soi_generic_table.
DATA: rows TYPE i,
columns TYPE i.
* Faul sein - und Rangestabelle zurückgeben lassen
CALL METHOD obj_doi_spreadsheet->get_ranges_names
IMPORTING
error = obj_error
ranges = t_ranges.
DATA: error TYPE REF TO i_oi_error,
wa_range LIKE LINE OF t_ranges,
wa_content LIKE LINE OF t_contents.
* ACHTUNG - es müssen ALLE einträge in der Rangelist versorg werden
* und dort müssen auch ALLE Zellen ( auch wenn sie leer sind ) einmal
* auftauchen
DELETE t_ranges WHERE NOT name = 'ALL'.
CLEAR t_contents.
LOOP AT t_ranges INTO wa_range.
CASE wa_range-name.
WHEN 'ALL'.
LOOP AT wa_itab INTO itab.
CLEAR wa_content.
* Row und Column beziehen sich auf die linke obere Ecke des Bereichs
wa_content-row = sy-tabix.
wa_content-column = 1.
wa_content-value = itab-vbeln.
APPEND wa_content TO t_contents. ADD 1 TO wa_content-column.
wa_content-value = itab-inter.
APPEND wa_content TO t_contents. ADD 1 TO wa_content-column.
wa_content-value = itab-kunnr.
APPEND wa_content TO t_contents. ADD 1 TO wa_content-column.
wa_content-value = itab-anredf.
APPEND wa_content TO t_contents. ADD 1 TO wa_content-column.
wa_content-value = itab-anredh.
APPEND wa_content TO t_contents. ADD 1 TO wa_content-column.
wa_content-value = itab-name1.
APPEND wa_content TO t_contents. ADD 1 TO wa_content-column.
ENDLOOP.
WHEN OTHERS.
BREAK-POINT.STOP. " sollte nicht vorkommen, wenn korrekt
ENDCASE.
ENDLOOP.
* ACHTUNG! Formatierung VOR dem Setzen der Daten. Sonst kommt es bei
* z.B. Datumsfeldern zu seltsamen Effekten. Zum Testen die
* Formatierungsroutine mal HINTER die Datensetzenroutine setzen
* und staunen.
DATA t_cells TYPE soi_cell_table.
DATA wa_cell LIKE LINE OF t_cells.
* Und ein paar Zellen formatieren - Bereiche lassen sich mit einer
* anderen Methode schnell komplett formatieren.
CALL METHOD obj_doi_spreadsheet->cell_format
EXPORTING
no_flush = 'X'
cells = t_cells
IMPORTING
error = error.
* Und jetzt die Daten in Spreadsheet schießen
CALL METHOD obj_doi_spreadsheet->set_ranges_data
EXPORTING
ranges = t_ranges
contents = t_contents
updating = -1
no_flush = 'X'
IMPORTING
error = error.
Hi Betze,
ruf mal das Excel auf und geh mal unter Excel/Makro/Sicherheit.
Sieh mal nach, ob die Sicherheitsstufe auf Mittel steht und bei Vertrauenswürdige Herausgeber 'Zugriff auf Visual-Pasic Projekte vertrauen' und 'Allen installierten...vertrauen' angeklickt ist. Sonst werden keine Daten übertragen.
Viel Spaß noch,
Grayhound
Also diese Einstellung habe ich alle so. Es kommt bei ausführen von CALL METHOD obj_doi_spreadsheet->cell_format der Fehler "CALL_NOT_FLUSH".
Was hat es eigentlich mit diesem Flush auf sich?