20260410

Botão - Planilha Modelo


* Tables
TABLESsscrfields.

Declaração do Botão
SELECTION-SCREENFUNCTION KEY 1.


* Initialization
INITIALIZATION.
  perform f_cria_botao.

* Manipualação do Botão
*----------------------
AT SELECTION-SCREEN.
 IF sy-ucomm 'FC01'.
   perform f_gera_planilha.
 ENDIF.


*&---------------------------------------------------------------------*
*&      Form  F_CRIA_BOTAO
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM F_CRIA_BOTAO .

*  Estrutura para descrever o botão
 DATAwa_button TYPE smp_dyntxt.

*  Nome do Botão
 wa_button-text      'Planilha'.

*  Ícone do Botão
 wa_button-icon_id   ICON_SET_COPY_IN_B.

*  Texto que aparecerá ao lado do ícone (pode ser vazio)
 wa_button-icon_text 'Planilha modelo'.

*  Quickinfo (aparece quando o user passar o mouse sobre o botao)
 wa_button-quickinfo 'Planilha para preenchimento'.

*  Associa essas propriedades com a função 1
 sscrfields-functxt_01 wa_button.


ENDFORM.


*&---------------------------------------------------------------------*
*&      Form  F_GERA_PLANILHA
*----------------------------------------------------------------------*
FORM F_GERA_PLANILHA .

  FIELD-SYMBOLS<fs_tab>   type ANY TABLE,
                 <wa_tab>   type any.
  datalv_file      type string.

  datalo_obj    TYPE REF TO zcl_util.
  CREATE OBJECT lo_obj.

* XXXXXX --> Nome da estrutura com os campos (coluna)
  DATAw_dref TYPE REF TO data.
  CREATE DATA w_dref TYPE TABLE OF ('XXXXXX').
  ASSIGN w_dref->TO <fs_tab>.

  CALL METHOD LO_OBJ->MATCHCODE_FOLDER_LOCAL
    RECEIVING
      R_FOLDER lv_file .

* YYYYYY --> Nome do arquivo da planilha
  if lv_file is not initial.
    concatenate lv_file '\' 'YYYYYY.xlsx' into lv_file.
  endif.

  CALL METHOD LO_OBJ->SAVE_FILE_EXCEL
    EXPORTING
      I_PATH   lv_file
      I_LOCAL  'X'
      I_STRUC  'XXXXXX'
      DATA_TAB <fs_tab>  .

  MESSAGE s398(00with 'Planilha gerada com sucesso'.

ENDFORM.