* Programmname DATA: lv_prg_name TYPE sy-repid VALUE 'ZREPORT1'. * Compilerausgaben DATA: lv_msg TYPE string. DATA: lv_line TYPE string. DATA: lv_word TYPE string. DATA: lv_off TYPE string. * iTab mit Quellcode DATA: it_src TYPE STANDARD TABLE OF char1024. * Codezeilen zu iTab hinzufügen APPEND |REPORT { lv_prg_name }.| TO it_src. APPEND |WRITE: / 'Hallo Welt!'.| TO it_src. * ausführbares Programm (TYPE '1') anlegen, es wird persistent auf der Datenbank gespeichert, * aber keinem Paket zugeordnet und ist global verfügbar INSERT REPORT lv_prg_name FROM it_src PROGRAM TYPE '1' UNICODE ENABLING 'X'. * Programmcode compilieren, existierender Programmcode wird überschrieben GENERATE REPORT lv_prg_name MESSAGE lv_msg LINE lv_line WORD lv_word OFFSET lv_off. IF sy-subrc = 0. * wenn Compilierung ok: Code ausführen SUBMIT (lv_prg_name) AND RETURN. ELSE. * Im Fehlerfall: Fehlerausgabe WRITE: / 'Error during generation in line: ', lv_line. IF lines( it_src ) > 0. WRITE: it_src[ lv_line ]. ENDIF. WRITE: / lv_msg. WRITE: / 'Word: ', lv_word. WRITE: / 'Offset: ', lv_off. ENDIF. * aktives Programm wieder aus der DB löschen DELETE REPORT lv_prg_name. CASE sy-subrc. WHEN 0. WRITE: / |{ lv_prg_name } gelöscht.|. WHEN 4. WRITE: / |{ lv_prg_name } nicht vorhanden.|. WHEN OTHERS. WRITE: / |Anderer Fehler.|. ENDCASE.
Weiterführende Infos: Link