Antes de dar seu OPEN DATASET, é interessante, inclusive por questões de segurança, que você utilize um Caminho Lógico.
Para criar, acesse a transação FILE.
Clique 1 vez em Logical File Path Definition, e crie uma nova entrada:
Agora marque o item que acaba de criar, e duplo clique em Assignment of Physycal Paths to Logical Path, então crie uma nova entrada:
<SYSID> no caso é seu ambiente, então seja DEV, QAS ou PRD, ele vai entender. Lembre-se de pedir para BASIS configurar este caminho nos 3 ambientes, afim de serem visualizados pela AL11 no caso.
Feito isso, agora é só utilizar o seguinte código:
REPORT ZSAPeiros.
* Local Declarations
DATA:
lv_logical_filename TYPE filename-fileintern VALUE 'ZSAPEIROS',
lv_filename TYPE rlgrap-filename VALUE 'ARQUIVO.TXT',
lv_file TYPE string,
lt_file TYPE TABLE OF char255.
* Physical File Name Using a Logical File Name
CLEAR lv_file.
CALL FUNCTION 'FILE_GET_NAME'
EXPORTING
logical_filename = lv_logical_filename
parameter_1 = lv_filename
including_dir = 'X'
IMPORTING
file_name = lv_file
EXCEPTIONS
file_not_found = 1
OTHERS = 2.
IF sy-subrc IS NOT INITIAL.
RETURN.
ENDIF.
* Physical File Name Based on a Logical Lile Name
CALL FUNCTION 'FILE_VALIDATE_NAME'
EXPORTING
logical_filename = lv_logical_filename
parameter_1 = lv_filename
CHANGING
physical_filename = lv_file
EXCEPTIONS
logical_filename_not_found = 1
validation_failed = 2
OTHERS = 3.
IF sy-subrc IS NOT INITIAL.
RETURN.
ENDIF.
* File content
CLEAR lt_file[].
APPEND INITIAL LINE TO lt_file ASSIGNING FIELD-SYMBOL(<fs_file>).
<fs_file> = 'Linha 1'.
APPEND INITIAL LINE TO lt_file ASSIGNING <fs_file>.
<fs_file> = 'Linha 2'.
* Generate file in server
OPEN DATASET lv_file FOR OUTPUT IN TEXT MODE ENCODING DEFAULT.
IF sy-subrc IS INITIAL.
LOOP AT lt_file INTO DATA(ls_file).
TRANSFER ls_file TO lv_file.
ENDLOOP.
CLOSE DATASET lv_file.
ENDIF.