Eine XLS Datei ins SAP einlesen und anschliessend in eine Transparente Tabelle schreiben

  1. Transparente Tabelle erstellen (zxls)
  2. Zeile für die Transparente Tabelle deklarieren (gs_zxls)
  3. Struktur anlegen für die interne Tabelle und Zeile (gty_data)
  4. interne Tabelle und Zeile deklarieren (gs_data, gt_data)
  5. Typ und Variable truxs_t_text_data deklarieren für die Konvertierung.
  6. Dann baut man die Methode cl_gui_frontend_services => file_open_dialog ein, damit man im Selektionsbildschirm über einen Dialogbildschirm das File auswählen kann, welches man hochladen will.
  7. Dann kann man mit dem Funktionsbaustein TEXT_CONVERT_XLS_TO_SAP das File konvertieren und z.B. in die interne Tabelle gt_data schreiben.
  8. Struktur der internen Tabelle muss gleich sein wie der Aufbau des EXCELS
  9. Mit einem LOOP kann man jeden einzelnen Zeile einer internen Tabelle lesen und anschliessend innerhalb des LOOP's bearbeiten.
  10. Mit MOVE-CORRESPONDING kann man bei ungleicher Anordnung der Struktur der internen Tabelle und der Struktur der Transparenten Tabelle die richtigen Werte in die richtigen Felder schreiben.
  11. Anschliessend kann man mit MODIFY die Werte in eine Tabelle schreiben.

Bild zur Methode file_open_dialog

Demo Programm

REPORT  z_xls_einlesen_in_itab.

"Transparente Tabelle
TABLESzxls.

"Zeile der Tabelle
DATAgs_zxls TYPE zxls.

"Aufbau eines Excel files mit Zwei Zeilen.
TYPES :
 
BEGIN OF gty_data,
    name
(40TYPE c,
    nummer
(10TYPE c,
 
END OF gty_data.

"Tabeldata
TYPES:   truxs_t_text_data(4096TYPE c OCCURS 0.
DATA:    g_raw_data TYPE truxs_t_text_data,
         gs_data 
TYPE gty_data,
         gt_data 
TYPE TABLE OF gty_data.

"Hier kann man das XLS eingeben
PARAMETERSpa_file TYPE rlgrap-filename DEFAULT 'C:\xXx\XLSEINSPIELEN.xls'.

AT SELECTION-SCREEN ON VALUE-REQUEST FOR pa_file.

  
"XLS aufruf ermöglichen
  
PERFORM selectfile.

START-OF-SELECTION.

  
"XLS in ITAB gt_data laden (holt Daten aus Excel und füllt gt_data ab)
  
"XLS kann nur glesen werden wenn es nicht im Excel geöffnet ist
  
PERFORM uploadexcel.

  
"Daten in Transparente Tabelle schreiben.
  
PERFORM add_data.

*&---------------------------------------------------------------------*
*&      Form  ADD_DATA
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM add_data .

  
LOOP AT gt_data INTO gs_data.
    
gs_data-nummer gs_data-nummer + 1.
    
MOVE-CORRESPONDING gs_data TO gs_zxls.
    
MODIFY zxls FROM gs_zxls.
  
ENDLOOP.

ENDFORM.                    " ADD_DATA
*&---------------------------------------------------------------------*
*&      Form  SELECTFILE
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM selectfile .

  
DATA :
    lv_subrc 
LIKE sy-subrc,
    lt_it_tab 
TYPE filetable.

  
" Anzeeigen des File im Open Dialog control/screen
  
CALL METHOD cl_gui_frontend_services=>file_open_dialog
    
EXPORTING
      window_title     
'Select Source Excel File'
      default_filename 
'*.xls'
      multiselection   
' '
    
CHANGING
      file_table       
lt_it_tab
      rc               
lv_subrc.

  
" Schreibe den PFAD in die das Inputfeld
  
LOOP AT lt_it_tab INTO pa_file.
  
ENDLOOP.

ENDFORM.                    " SELECTFILE
*&---------------------------------------------------------------------*
*&      Form  UPLOADEXCEL
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM uploadexcel .

  
CALL FUNCTION 'TEXT_CONVERT_XLS_TO_SAP'
    
EXPORTING
      i_line_header        
'X'
      i_tab_raw_data       
g_raw_data
      i_filename           
pa_file
    
TABLES
      i_tab_converted_data 
gt_data[] " Data
    
EXCEPTIONS
      conversion_failed    
1
      
OTHERS               2.

ENDFORM.                    " UPLOADEXCEL
" ADD_DATA

 

        search this website

Regotz Michel