Dieser speichert die Datei nun leider aber nur in einem vorgegebenen Pfad. Nun wird aber gewünscht, dass der Pfad beim ausführen des Prorgamms 's selbst gewählt werden kann. Wie realisiere ich das?
versuch es mal mit folgender Methode:
CALL METHOD cl_gui_frontend_services=>directory_browse
EXPORTING
initial_folder =
CHANGING
selected_folder =
EXCEPTIONS
OTHERS = 4.
Diese Methode zeigt dem Benutzer die Dateihierarchie an und dort kann dann ein Pfad ausgewählt werden. "Initial_folder" gibt den Ordner an, ab dem die Hierarchie ausgeklappt sein soll, und "selected_folder" enthält dann den ausgewählten.
CLASS
zcl_mi_pm_select_file_pc DEFINITION FINAL.
*
*-->> Get filepath from local PC
PUBLIC SECTION.
METHODS:
select_file_pc
CHANGING p_first2 TYPE rlgrap-filename
EXCEPTIONS select_file_failed.
PRIVATE SECTION.
ENDCLASS. "zcl_mi_pm_select_file_pc
CLASS zcl_mi_pm_get_data DEFINITION FINAL.
*
*-->> Get filepath from local PC
PUBLIC SECTION.
METHODS:
get_data
IMPORTING p_first2 TYPE rlgrap-filename
EXCEPTIONS gui_upload.
PRIVATE SECTION.
ENDCLASS. "zcl_mi_pm_select_file_pc
CLASS zcl_mi_pm_select_file_pc IMPLEMENTATION.
METHOD select_file_pc.
*
*-->>
DATA: l_filename TYPE string,
l_title TYPE string,
li_filetable TYPE TABLE OF file_table,
l_action TYPE i,
l_rc TYPE i.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
CLEAR l_filename.
ELSE.
READ TABLE li_filetable INDEX 1 INTO p_first2.
IF sy-subrc = 0.
ENDIF.
ENDIF.
Wird nicht funktionieren:
Du mischst Anweisungen die im Applikationsserver ausgeführt werden (CLOSE DATASET) mit Anweisungen die im GUI ausgeführt werden (cl_gui_frontend_services=>file_open_dialog).
Außerdem solltest du FILE_SAVE_DIALOG verwenden, weil du ja eine Datei auf dem Client speichern möchtest und da andere Prüfungen (ist Datei schon vorhanden usw.) notwendig sind.
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.
Ich würde aber trotzdem empfehlen anstatt des FILE_OPEN_DIALOG den FILE_SAVE_DIALOG zu verwenden.
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.