/* POPUP INI */
/* POPUP FIM */

Conteúdo

Caminho Lógico / Logical Path

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.
/* POPUP INI */ /* POPUP FIM */