FUNCTION Z_LT_PC_APPL_EXECUTE . *"---------------------------------------------------------------------- *"*"Lokale Schnittstelle: *" IMPORTING *" VALUE(DATEIENAME) TYPE LOCALFILE OPTIONAL *" EXCEPTIONS *" FAILURE *"---------------------------------------------------------------------- DATA: L_IN_FILE LIKE RLGRAP-FILENAME , FILE_NAME LIKE RLGRAP-FILENAME, L_OUT_FILE LIKE RLGRAP-FILENAME, PROG_PATH LIKE SOXPC-PATH, SAV_PATH LIKE RLGRAP-FILENAME . DATA : FILE_TYPE LIKE SOOD-FILE_EXT. DATA: LT_LIST TYPE SLIST_LISTLINE OCCURS 1 WITH HEADER LINE. DATA: LT_FMBS TYPE SLIST_FMBSLINE OCCURS 1 WITH HEADER LINE. DATA: LT_FMBX TYPE SLIST_FMBSLINE OCCURS 1 WITH HEADER LINE. DATA: LT_FSEL TYPE SLIST_FSELLINE OCCURS 1 WITH HEADER LINE. * ---------------------------------------------------------------------- * SCHRITT 1 - Daten aus der Listenbearbeitung holen * ---------------------------------------------------------------------- LT_LIST[] = %_LIST[]. LT_FMBS[] = %_FMBS[]. LT_FMBX[] = %_FMBX[]. LT_FSEL[] = %_FSEL[]. * ---------------------------------------------------------------------- * SCHRITT 2 - Dateiennamen und Dateiennamenerweiterung * ---------------------------------------------------------------------- IF NOT DATEIENAME IS INITIAL . FILE_NAME = DATEIENAME . ELSE . FILE_NAME = 'SAP_DATEN'. ENDIF . FILE_TYPE = 'DOC'. * ---------------------------------------------------------------------- * SCHRITT 3 - Ordner des MS-Words * ---------------------------------------------------------------------- CALL FUNCTION 'SO_PROGNAME_GET_WITH_PATH' EXPORTING DOCTYPE = FILE_TYPE IMPORTING PATHNAME = PROG_PATH EXCEPTIONS PATH_NOT_FOUND = 03 PROGRAM_NOT_FOUND = 03 NO_BATCH = 01 X_ERROR = 01. IF SY-SUBRC <> 0. MESSAGE E200 WITH 'WORD' RAISING FAILURE. ELSE. MESSAGE S201 WITH PROG_PATH. ENDIF. * ---------------------------------------------------------------------- * SCHRITT 4 - Pfad TEMP * ---------------------------------------------------------------------- DATA L_TEMP_DIR TYPE STRING. CLEAR L_TEMP_DIR . PERFORM GET_TEMP_DIRECTORY CHANGING L_TEMP_DIR . SAV_PATH = L_TEMP_DIR . CONCATENATE SAV_PATH FILE_NAME INTO L_IN_FILE . * ---------------------------------------------------------------------- * SCHRITT 5 - Word-Dateie anlegen * ---------------------------------------------------------------------- CALL FUNCTION 'LIST_CONVERT_TO_RTF' EXPORTING FONTSIZE_IN_HALFPOINTS = 20 DEFAULT_FILENAME = L_IN_FILE NO_COLORS = ' ' NO_DIALOG = 'X' IMPORTING ACTUAL_FILENAME = L_OUT_FILE TABLES LIST = LT_LIST FMBS = LT_FMBS FMBX = LT_FMBX FSEL = LT_FSEL * FPOS = EXCEPTIONS DOWNLOAD_FILE_WRITE_ERROR = 1 DOWNLOAD_NO_BATCH = 2 DOWNLOAD_UNKNOWN_ERROR = 3 OTHERS = 4. IF SY-SUBRC <> 0. *TEXT-W01 Warnung *TEXT-W02 Die MS-Word-Datei konnte nicht angelegt werden. *TEXT-W03 Bitte das MS-Word mit der Datei schließen, *TEXT-W04 falls schon in Bearbeitung. CALL FUNCTION 'POPUP_TO_INFORM' EXPORTING TITEL = TEXT-W01 TXT1 = TEXT-W02 TXT2 = TEXT-W03 TXT3 = TEXT-W04 * TXT4 = ' ' . SY-SUBRC = 3 . ENDIF. * ---------------------------------------------------------------------- * SCHRITT 6 - MS-Word mit der anlegten Dateie starten * ---------------------------------------------------------------------- IF SY-SUBRC EQ 0 . CALL FUNCTION 'WS_EXECUTE' EXPORTING COMMANDLINE = L_OUT_FILE PROGRAM = PROG_PATH EXCEPTIONS FRONTEND_ERROR = 1 NO_BATCH = 2 PROG_NOT_FOUND = 3 ILLEGAL_OPTION = 4 GUI_REFUSE_EXECUTE = 5 OTHERS = 6. IF SY-SUBRC <> 0. MESSAGE W203 WITH 'WORD'. ENDIF. ENDIF . ENDFUNCTION. *&---------------------------------------------------------------------* *& Form GET_TEMP_DIRECTORY *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* * -->TEMP_DIR text * -->C_FILE_SEPARATOR text *----------------------------------------------------------------------* FORM GET_TEMP_DIRECTORY CHANGING TEMP_DIR TYPE STRING . DATA L_FILE_SEPARATOR TYPE C . DATA L_LEN TYPE I. CL_GUI_FRONTEND_SERVICES=>GET_TEMP_DIRECTORY( CHANGING TEMP_DIR = TEMP_DIR ). CL_GUI_FRONTEND_SERVICES=>GET_FILE_SEPARATOR( CHANGING FILE_SEPARATOR = L_FILE_SEPARATOR ). L_LEN = STRLEN( TEMP_DIR ). IF L_LEN > 200 OR TEMP_DIR IS INITIAL. CONCATENATE 'C:' L_FILE_SEPARATOR 'Temp' INTO TEMP_DIR. ENDIF. CONCATENATE TEMP_DIR L_FILE_SEPARATOR INTO TEMP_DIR. ENDFORM . "GET_TEMP_DIRECTORY