20250722

ALV Básico (códigos)

*** Com container dinâmico ***


* Definições declaradas no programa principal
*----------------------------------------------------------------
*   Definições para o ALV
*----------------------------------------------------------------
DATAgt_fieldcat    TYPE lvc_t_fcat,
      wa_fieldcat    TYPE lvc_s_fcat,
      gt_exc_tools   TYPE ui_functions.

DATAwa_variant     TYPE disvariant,
      wa_layout      TYPE lvc_s_layo.

datagt_selected    TYPE lvc_t_row        .
datawa_selected    TYPE lvc_s_row        .


INCLUDE ZFIR284_C01.     "(*** código completo no final ***)
DATAlcl_alv_grid         TYPE REF TO lcl_alv_grid.


* Criar a tela 9000

* Normalmente no final do processamento chamar a rotina do ALV
perform f_alv_screen.


FORM F_ALV_SCREEN .

  PERFORMz_monta_fieldcat     using 'ZTB......',   "Estrutura / Tabela
           z_monta_layout_tools using ''  ''.        "Com Layout / Variante

  CALL SCREEN 9000.

ENDFORM.

*&---------------------------------------------------------------------*
*&      Module  STATUS_9000  OUTPUT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
MODULE STATUS_9000 OUTPUT.
  SET PF-STATUS '9000_STATUS'.
  SET TITLEBAR  '9000'.

ENDMODULE.


*&---------------------------------------------------------------------*
*&      Module  USER_COMMAND_9000  INPUT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
MODULE USER_COMMAND_9000 INPUT.

  CASE sy-ucomm.
    WHEN 'BACK' OR 'CANC' or 'EXIT'.
      LEAVE TO SCREEN 0.

    WHEN OTHERS.

  ENDCASE.

ENDMODULE.


*&---------------------------------------------------------------------*
*&      Form  Z_MONTA_FIELDCAT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM Z_MONTA_FIELDCAT USING P_STRU.

  DATAvl_tabix TYPE sy-tabix.

*  DATA:   lw_alv_fieldcat LIKE LINE OF tg_fieldcat.


  CALL FUNCTION 'LVC_FIELDCATALOG_MERGE'
    EXPORTING
      i_structure_name       p_stru
      i_internal_tabname     'GT_FINAL'
    CHANGING
      ct_fieldcat            gt_fieldcat
    EXCEPTIONS
      inconsistent_interface 1
      program_error          2
      OTHERS                 3.

  IF NOT sy-subrc IS INITIAL.
    RETURN.
  ENDIF.

* Campos 'Chaves' - Colunas Fixas
  LOOP AT gt_fieldcat INTO wa_fieldcat
       WHERE fieldname EQ 'BUKRS'
          OR fieldname EQ 'GSBER'
          OR fieldname EQ 'AZDAT'
          OR fieldname EQ 'AZIDT'
          OR fieldname EQ 'HBKID'
          OR fieldname EQ 'KUKEY'
          OR fieldname EQ 'KTONR'
          OR fieldname EQ 'VALUT'
          OR fieldname EQ 'AZNUM'.
    wa_fieldcat-KEY  'X'.
    MODIFY gt_fieldcat FROM wa_fieldcat INDEX sy-tabix .
  ENDLOOP.

* Edit
*  LOOP AT gt_fieldcat INTO wa_fieldcat WHERE fieldname EQ 'ZSTATUS'.
*    wa_fieldcat-edit    = 'X'.
*    MODIFY gt_fieldcat FROM wa_fieldcat INDEX sy-tabix .
*  ENDLOOP.

* Hotspot
*  LOOP AT gt_fieldcat INTO wa_fieldcat
*       WHERE fieldname = 'BELNR'
*          OR fieldname = 'PNOTA'
*          OR fieldname = 'LIFNR'
*          OR fieldname = 'DOCID_VIM'
*          OR fieldname = 'BELNRF'
*          OR fieldname = 'BELNRC'.
*    wa_fieldcat-HOTSPOT  = 'X'.
*    MODIFY gt_fieldcat FROM wa_fieldcat INDEX sy-tabix .
*  ENDLOOP.

* Campos escondidos
*  LOOP AT gt_fieldcat INTO wa_fieldcat.
*    if wa_fieldcat-fieldname = 'PNOTA_GJA' or
*       wa_fieldcat-fieldname = 'UPD'.
*      wa_fieldcat-no_out  = 'X'.
*    else.
*      wa_fieldcat-no_out  = ' '.
*    endif.
*    MODIFY gt_fieldcat FROM wa_fieldcat INDEX sy-tabix .
*  ENDLOOP.


* Descrição de campos
*  LOOP AT gt_fieldcat INTO wa_fieldcat.
*    CASE wa_fieldcat-fieldname.
*      WHEN 'BELNRF'.
*        wa_fieldcat-REPTEXT  = 'Nº Docto Fatur.'.
*      WHEN 'BELNRC'.
*        wa_fieldcat-REPTEXT  = 'Nº Doc.Contábil'.
*      WHEN 'GJAHRF'.
*        wa_fieldcat-REPTEXT  = 'Exercício'.
*      WHEN 'GJAHRC'.
*        wa_fieldcat-REPTEXT  = 'Exercício'.
*      WHEN 'MOTIVO_OPE'.
*        wa_fieldcat-REPTEXT  = 'Motivo operação'.
*      WHEN 'EMAIL_SOLIC'.
*        wa_fieldcat-REPTEXT  = 'Endereço de e-mail solicitante'.
*    ENDCASE.
*    MODIFY gt_fieldcat FROM wa_fieldcat INDEX sy-tabix .
*  ENDLOOP.


ENDFORM.


*&---------------------------------------------------------------------*
*&      Form  Z_MONTA_LAYOUT_TOOLS
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM Z_MONTA_LAYOUT_TOOLS using p_layout p_varia.

  CLEARwa_layoutwa_variant.
  FREE gt_exc_tools.

  APPENDcl_gui_alv_grid=>mc_fc_loc_delete_row    TO gt_exc_tools,
          cl_gui_alv_grid=>mc_fc_loc_insert_row    TO gt_exc_tools,
          cl_gui_alv_grid=>mc_fc_loc_undo          TO gt_exc_tools,
          cl_gui_alv_grid=>mc_fc_loc_append_row    TO gt_exc_tools,
          cl_gui_alv_grid=>mc_fc_loc_copy          TO gt_exc_tools,
          cl_gui_alv_grid=>mc_fc_loc_copy_row      TO gt_exc_tools,
          cl_gui_alv_grid=>mc_fc_loc_move_row      TO gt_exc_tools,
          cl_gui_alv_grid=>mc_fc_loc_paste         TO gt_exc_tools,
          cl_gui_alv_grid=>mc_fc_loc_paste_new_row TO gt_exc_tools,
          cl_gui_alv_grid=>mc_fc_loc_cut           TO gt_exc_tools,
          cl_gui_alv_grid=>mc_fc_refresh           TO gt_exc_tools.

  wa_layout-zebra      'X'.
  wa_layout-no_rowmark ' '.
  wa_layout-sel_mode   'A'.
  wa_layout-cwidth_opt 'X'.
  wa_layout-col_opt    'X'.
  wa_layout-stylefname 'FIELD_STYLE'.

  wa_variant-report    sy-repid.
  if p_layout 'X'.
    wa_variant-variant   p_varia.
  endif.

ENDFORM.


*&---------------------------------------------------------------------*
*&      Module  MONTA_TELA  OUTPUT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
MODULE MONTA_TELA OUTPUT.

  IF sy-batch IS INITIAL.
    IF NOT go_alv IS INITIAL.
      CALL METHOD go_alv->free.
      CALL METHOD go_container->free.
    ENDIF.


* Cria o Container para a tela do ALV
    CREATE OBJECT go_docking
      EXPORTING
        side      cl_gui_docking_container=>dock_at_top
        repid     sy-repid
        dynnr     '9000'
        extension 9000
      EXCEPTIONS
        OTHERS    6.

* Casting para o tipo genério
    go_parent go_docking.


* Cria o objeto do ALV
    CREATE OBJECT go_alv
      EXPORTING
        i_parent go_parent.


* Habilita os eventos
    CREATE OBJECT lcl_alv_grid.
    SET HANDLER lcl_alv_grid->handler_data_changed FOR go_alv.
    SET HANDLER lcl_alv_grid->handle_toolbar       FOR go_alv.
    SET HANDLER lcl_alv_grid->handle_user_command  FOR go_alv.
    SET HANDLER lcl_alv_grid->handle_hotspot_click FOR go_alv.

    CALL METHOD go_alv->set_ready_for_input
      EXPORTING
        i_ready_for_input 1.

    CALL METHOD go_alv->register_edit_event
      EXPORTING
        i_event_id cl_gui_alv_grid=>mc_evt_enter.

    CALL METHOD go_alv->register_edit_event
      EXPORTING
        i_event_id cl_gui_alv_grid=>mc_evt_modified.

    CALL METHOD go_alv->set_table_for_first_display
      EXPORTING
        is_variant           wa_variant
        i_save               'A'
        is_layout            wa_layout
        it_toolbar_excluding gt_exc_tools[]
      CHANGING
        it_outtab            gt_saida[]
        it_fieldcatalog      gt_fieldcat[].


* Background 
  ELSE.
    CREATE OBJECT go_alv
      EXPORTING
        i_parent go_DOCKING.  "go_parent.

    CALL METHOD go_alv->set_table_for_first_display
      EXPORTING
        is_variant      wa_variant
        i_save          'A'
        is_layout       wa_layout
      CHANGING
        it_outtab       gt_saida[]
        it_fieldcatalog gt_fieldcat[].

  ENDIF.

ENDMODULE.

*** Código do include ***
*&---------------------------------------------------------------------*
*&  Include           ZFIR282_C01
*&---------------------------------------------------------------------*

*----------------------------------------------------------------------*
* Objetos & Containers                                                           *
*----------------------------------------------------------------------*
DATAgv_repid       TYPE syst-repid,
      go_container   TYPE REF TO cl_gui_custom_container,
      go_docking     TYPE REF TO cl_gui_docking_container,
      go_parent      TYPE REF TO cl_gui_container,
      go_splitter    TYPE REF TO cl_gui_splitter_container,
      go_alv         TYPE REF TO cl_gui_alv_grid.

*----------------------------------------------------------------------*
* Classes Locais                                                       *
*----------------------------------------------------------------------*
*----------------------------------------------------------------------*
*       CLASS lcl_alv_grid DEFINITION
*----------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
CLASS lcl_alv_grid DEFINITION.
  PUBLIC SECTION.
    METHODS:
      handler_data_changed FOR EVENT data_changed OF cl_gui_alv_grid
                           IMPORTING er_data_changed,

      handle_toolbar FOR EVENT toolbar OF cl_gui_alv_grid
                     IMPORTING e_object,

      handle_user_command FOR EVENT user_command OF cl_gui_alv_grid
                          IMPORTING e_ucomm,

      handle_hotspot_click FOR EVENT hotspot_click OF cl_gui_alv_grid
                           IMPORTING e_row_id e_column_id es_row_no.

ENDCLASS.                    "lcl_alv_grid DEFINITION


*----------------------------------------------------------------------*
*       CLASS lcl_alv_grid IMPLEMENTATION
*----------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
CLASS lcl_alv_grid IMPLEMENTATION.
  METHOD handler_data_changed.
    PERFORM z_data_changed CHANGING er_data_changed.
  ENDMETHOD.                    "handler_data_changed

  METHOD handle_toolbar.
    PERFORM z_toolbar CHANGING e_object.
  ENDMETHOD.                    "handle_toolbar

  METHOD handle_user_command.
    PERFORM z_user_command USING e_ucomm.
  ENDMETHOD.                    "handle_user_command

  METHOD handle_hotspot_click.
    PERFORM z_hotspot_click USING es_row_no-row_id
                                 e_column_id-fieldname.
  ENDMETHOD.                    "HANDLE_HOTSPOT_CLICK
ENDCLASS.                    "lcl_alv_grid IMPLEMENTATION



*&---------------------------------------------------------------------*
*&      Form  Z_DATA_CHANGED
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
FORM z_data_changed  CHANGING p_data_changed TYPE REF TO cl_alv_changed_data_protocol.
  DATAvl_erro   TYPE c.

  DATAw_saida   TYPE ty_saida,  
        vl_tabix  TYPE sy-tabix,
        vl_status type LENGTH 128.

  DATAtl_modi  TYPE TABLE OF lvc_s_modi,
        sl_modi  TYPE lvc_s_modi.

  freetl_modi.
  tl_modi[] p_data_changed->mt_good_cells[].

  LOOP AT tl_modi INTO sl_modi.

    vl_tabix sy-tabix.

    CASE sl_modi-fieldname.

*      WHEN 'ZSTATUS'.
*        vl_status = sl_modi-value.
*
*        READ TABLE gt_saida INTO wa_saida INDEX sl_modi-row_id.
*        IF sy-subrc IS INITIAL.
*          wa_saida-zstatus = sl_modi-value.
*          wa_saida-upd     = 'X'.
*          modify gt_saida from wa_saida index sl_modi-row_id.
*        ENDIF.

    ENDCASE.
  ENDLOOP.
ENDFORM.                    " Z_DATA_CHANGED



*&---------------------------------------------------------------------*
*&      Form  Z_TOOLBAR
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
FORM z_toolbar  CHANGING p_object TYPE REF TO cl_alv_event_toolbar_set.
  DATAsl_toolbar TYPE stb_button.

*  CLEAR: sl_toolbar.
*  MOVE 3 TO sl_toolbar-butn_type.
*  APPEND sl_toolbar TO p_object->mt_toolbar.
*
*  CLEAR sl_toolbar.
**  sl_toolbar-icon      = ICON_SAVE_AS_TEMPLATE   .   "icon_set_state.
*  sl_toolbar-icon      = ICON_DOCUMENT_MODEL_SPACE   .   "icon_set_state.
*  sl_toolbar-function  = 'LIBERAR'.
*  sl_toolbar-text      = text-t05.
*  sl_toolbar-quickinfo = text-t06.
*  sl_toolbar-disabled  = space.
*  APPEND sl_toolbar TO p_object->mt_toolbar.
*
*  CLEAR: sl_toolbar.
*  MOVE 3 TO sl_toolbar-butn_type.
*  APPEND sl_toolbar TO p_object->mt_toolbar.


ENDFORM.                    " Z_TOOLBAR


*&---------------------------------------------------------------------*
*&      Form  Z_USER_COMMAND
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
FORM z_user_command  USING    p_ucomm TYPE sy-ucomm.

*  CASE p_ucomm.
**    WHEN 'GRAVAR'.
**      PERFORM: z_grava_dados.
*
*    WHEN 'LIBERAR'.
*      PERFORM: f_liberar using p_ucomm.
*
*    WHEN ''.
*
*  ENDCASE.

**  IF p_ucomm NE 'APLICAR'.
**    PERFORM:
**      f_inicialization,
**      f_seleciona_dados,
**      f_monta_saida.
**  ENDIF.

  CALL METHOD go_alv->refresh_table_display.

ENDFORM.                    " Z_USER_COMMAND


*&---------------------------------------------------------------------*
*&      Form  Z_HOTSPOT_CLICK
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*      -->P_ES_ROW_NO_ROW_ID  text
*      -->P_E_COLUMN_ID_FIELDNAME  text
*----------------------------------------------------------------------*
FORM Z_HOTSPOT_CLICK  USING    P_INDEX
                               P_FIELD.


  READ TABLE gt_saida INTO wa_saida INDEX p_index.
  IF NOT sy-subrc IS INITIAL.
    RETURN.
  ENDIF.

  CASE p_field.

    WHEN 'BELNR' .
*      IF wa_saida-belnr IS INITIAL.
*        RETURN.
*      ENDIF.
*      SET PARAMETER ID 'BLN' FIELD wa_saida-belnr.
*      SET PARAMETER ID 'BUK' FIELD wa_saida-bukrs.
*      SET PARAMETER ID 'GJR' FIELD wa_saida-gjahr.
*      CALL TRANSACTION 'FB03' AND SKIP FIRST SCREEN.

    WHEN 'BELNRC'.                                          
*      IF wa_saida-belnrc IS INITIAL.                       
*        RETURN.                                           
*      ENDIF.                                              
*      SET PARAMETER ID 'BLN' FIELD wa_saida-belnrc.       
*      SET PARAMETER ID 'BUK' FIELD wa_saida-bukrs.        
*      SET PARAMETER ID 'GJR' FIELD wa_saida-gjahrc.       
*      CALL TRANSACTION 'FB03' AND SKIP FIRST SCREEN.      

    WHEN 'BELNRF'.                                            
*      IF swa_saida-belnrf IS INITIAL.                          
*        RETURN.                                               
*      ENDIF.                                                  
*      SET PARAMETER ID 'RBN' FIELD wa_saida-belnrf.           
*      SET PARAMETER ID 'GJR' FIELD wa_saida-gjahrf.           
*      CALL TRANSACTION 'MIR4' AND SKIP FIRST SCREEN.     

    WHEN 'PNOTA'.
*      IF wa_saida-pnota IS INITIAL.
*        RETURN.
*      ENDIF.
*      SET PARAMETER ID 'BLN' FIELD wa_saida-pnota.
*      SET PARAMETER ID 'BUK' FIELD wa_saida-bukrs.
*      SET PARAMETER ID 'GJR' FIELD wa_saida-gjahr.
*      CALL TRANSACTION 'FB03' AND SKIP FIRST SCREEN.

    WHEN 'DOCID_VIM'.
*      IF wa_saida-docid_vim IS INITIAL.
*        RETURN.
*      ENDIF.
*      CALL FUNCTION '/OPT/VIM_DISPLAY_DOCUMENT'
*        EXPORTING
*          docid            = w_saida-docid_vim
*        EXCEPTIONS
*          invalid_document = 1
*          OTHERS           = 2.
*
*    WHEN 'LIFNR'.
*      IF wa_saida-lifnr IS INITIAL.
*        RETURN.
*      ENDIF.
*      SET PARAMETER ID 'LIF' FIELD wa_saida-lifnr.
*      SET PARAMETER ID 'BUK' FIELD wa_saida-bukrs.
*      CALL TRANSACTION 'XK03' AND SKIP FIRST SCREEN.

  ENDCASE.

ENDFORM.


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

*  FREE: t_selected.
*
*  CALL METHOD cl_alv_grid->get_selected_rows
*    IMPORTING
*      et_index_rows = t_selected.
*
*  IF t_selected[] IS INITIAL.
**    MESSAGE s022(zfi001) DISPLAY LIKE c_e.
**    LEAVE LIST-PROCESSING.
*  ENDIF.

  datal_cont     type i.

  LOOP AT gt_saida INTO wa_saida" where upd = 'X'.
    add to l_cont.
    exit.
  ENDLOOP.


  if l_cont is initial.
    message s398(00with 'Não há dados para atualização' '' '' ''.

  else.
*    LOOP AT gt_saida into wa_saida where upd = 'X'.
*
*      clear w_ztb.......
*      w_ztb......-BUKRS      = wa_saida-BUKRS  .
*      w_ztb......-GSBER      = wa_saida-GSBER  .
*      w_ztb......-AZDAT      = wa_saida-AZDAT  .
*      w_ztb......-HBKID      = wa_saida-HBKID  .
*      w_ztb......-AZNUM      = wa_saida-AZNUM  .
*      w_ztb......-AZIDT      = wa_saida-AZIDT  .
*      w_ztb......-KTONR      = wa_saida-KTONR  .
*      w_ztb......-PNOTA      = wa_saida-PNOTA  .
*      w_ztb......-ZSTATUS    = wa_saida-ZSTATUS.
*      w_ztb......-USUARIO    = sy-uname.
*      w_ztb......-DATA       = sy-datum  .
*      w_ztb......-HORA       = sy-uzeit  .
*      modify ztb------ from w_ztb------ .
*
*    ENDLOOP.

  endif.

ENDFORM.



*&---------------------------------------------------------------------*
*&      Form  Z_MONTA_FIELDCAT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM Z_MONTA_FIELDCAT USING P_STRU.

  DATAvl_tabix TYPE sy-tabix.

*  DATA:   lw_alv_fieldcat LIKE LINE OF tg_fieldcat.


  CALL FUNCTION 'LVC_FIELDCATALOG_MERGE'
    EXPORTING
      i_structure_name       p_stru
      i_internal_tabname     'GT_FINAL'
    CHANGING
      ct_fieldcat            gt_fieldcat
    EXCEPTIONS
      inconsistent_interface 1
      program_error          2
      OTHERS                 3.

  IF NOT sy-subrc IS INITIAL.
    RETURN.
  ENDIF.

* Campos 'Chaves' - Colunas Fixas
  LOOP AT gt_fieldcat INTO wa_fieldcat
       WHERE fieldname EQ 'BUKRS'
          OR fieldname EQ 'GSBER'
          OR fieldname EQ 'AZDAT'
          OR fieldname EQ 'AZIDT'
          OR fieldname EQ 'HBKID'
          OR fieldname EQ 'KUKEY'
          OR fieldname EQ 'KTONR'
          OR fieldname EQ 'VALUT'
          OR fieldname EQ 'AZNUM'.
    wa_fieldcat-KEY  'X'.
    MODIFY gt_fieldcat FROM wa_fieldcat INDEX sy-tabix .
  ENDLOOP.

* Edit
*  LOOP AT gt_fieldcat INTO wa_fieldcat WHERE fieldname EQ 'ZSTATUS'.
*    wa_fieldcat-edit    = 'X'.
*    MODIFY gt_fieldcat FROM wa_fieldcat INDEX sy-tabix .
*  ENDLOOP.

* Hotspot
*  LOOP AT gt_fieldcat INTO wa_fieldcat
*       WHERE fieldname = 'BELNR'
*          OR fieldname = 'PNOTA'
*          OR fieldname = 'LIFNR'
*          OR fieldname = 'DOCID_VIM'
*          OR fieldname = 'BELNRF'
*          OR fieldname = 'BELNRC'.
*    wa_fieldcat-HOTSPOT  = 'X'.
*    MODIFY gt_fieldcat FROM wa_fieldcat INDEX sy-tabix .
*  ENDLOOP.

* Campos escondidos
*  LOOP AT gt_fieldcat INTO wa_fieldcat.
*    if wa_fieldcat-fieldname = 'PNOTA_GJA' or
*       wa_fieldcat-fieldname = 'UPD'.
*      wa_fieldcat-no_out  = 'X'.
*    else.
*      wa_fieldcat-no_out  = ' '.
*    endif.
*    MODIFY gt_fieldcat FROM wa_fieldcat INDEX sy-tabix .
*  ENDLOOP.


* Descrição de campos
*  LOOP AT gt_fieldcat INTO wa_fieldcat.
*    CASE wa_fieldcat-fieldname.
*      WHEN 'BELNRF'.
*        wa_fieldcat-REPTEXT  = 'Nº Docto Fatur.'.
*      WHEN 'BELNRC'.
*        wa_fieldcat-REPTEXT  = 'Nº Doc.Contábil'.
*      WHEN 'GJAHRF'.
*        wa_fieldcat-REPTEXT  = 'Exercício'.
*      WHEN 'GJAHRC'.
*        wa_fieldcat-REPTEXT  = 'Exercício'.
*      WHEN 'MOTIVO_OPE'.
*        wa_fieldcat-REPTEXT  = 'Motivo operação'.
*      WHEN 'EMAIL_SOLIC'.
*        wa_fieldcat-REPTEXT  = 'Endereço de e-mail solicitante'.
*    ENDCASE.
*    MODIFY gt_fieldcat FROM wa_fieldcat INDEX sy-tabix .
*  ENDLOOP.


ENDFORM.


*&---------------------------------------------------------------------*
*&      Form  Z_MONTA_LAYOUT_TOOLS
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM Z_MONTA_LAYOUT_TOOLS using p_layout p_varia.

  CLEARwa_layoutwa_variant.
  FREE gt_exc_tools.

  APPENDcl_gui_alv_grid=>mc_fc_loc_delete_row    TO gt_exc_tools,
          cl_gui_alv_grid=>mc_fc_loc_insert_row    TO gt_exc_tools,
          cl_gui_alv_grid=>mc_fc_loc_undo          TO gt_exc_tools,
          cl_gui_alv_grid=>mc_fc_loc_append_row    TO gt_exc_tools,
          cl_gui_alv_grid=>mc_fc_loc_copy          TO gt_exc_tools,
          cl_gui_alv_grid=>mc_fc_loc_copy_row      TO gt_exc_tools,
          cl_gui_alv_grid=>mc_fc_loc_move_row      TO gt_exc_tools,
          cl_gui_alv_grid=>mc_fc_loc_paste         TO gt_exc_tools,
          cl_gui_alv_grid=>mc_fc_loc_paste_new_row TO gt_exc_tools,
          cl_gui_alv_grid=>mc_fc_loc_cut           TO gt_exc_tools,
          cl_gui_alv_grid=>mc_fc_refresh           TO gt_exc_tools.

  wa_layout-zebra      'X'.
  wa_layout-no_rowmark ' '.
  wa_layout-sel_mode   'A'.
  wa_layout-cwidth_opt 'X'.
  wa_layout-col_opt    'X'.
  wa_layout-stylefname 'FIELD_STYLE'.

  wa_variant-report    sy-repid.
  if p_layout 'X'.
    wa_variant-variant   p_varia.
  endif.

ENDFORM.