¡Caminando hacia el éxito!

Aprende en Comunidad

Avalados por :

ABAP

  • Creado 14/02/2025
  • Modificado 14/02/2025
  • 123 Vistas
0
Cargando...

Como faço para colocar no inicio do relatório ALV pequenos blocos que possibilitam selecionar linhas inteiras no relatório. Estou usando a função REUSE_ALV_GRID_DISPLAY.



Bruno Silva
Se unió el 14/02/2025
Facebook
Twitter
Pinterest
Telegram
Linkedin
Whatsapp

1 Respuestas

0
Cargando...

Para adicionar pequenos blocos de seleção no início do relatório ALV utilizando a função REUSE_ALV_GRID_DISPLAY, você deve seguir os seguintes passos:

Passos para adicionar seleção de linha no ALV

1. Definir um campo de marcação (checkbox) na estrutura de saída.

• Esse campo será responsável por permitir a seleção das linhas no ALV.

2. Configurar os campos do catálogo para indicar que o campo é um marcador de seleção.

3. Passar as configurações adequadas para REUSE_ALV_GRID_DISPLAY.

Exemplo de código ABAP


REPORT z_alv_com_selecao.

INCLUDE <icon>. " Para utilizar ícones SAP

DATA: gt_spfli TYPE TABLE OF spfli,
gs_layout TYPE slis_layout_alv,
gt_fieldcat TYPE slis_t_fieldcat_alv,
gs_fieldcat TYPE slis_fieldcat_alv.

DATA: gt_events TYPE slis_t_event,
gs_event TYPE slis_alv_event.

DATA: gt_outtab TYPE TABLE OF zspfli, " Estrutura com o campo de seleção
gs_outtab TYPE zspfli.

* Definição da estrutura de saída (deve incluir o campo de seleção)
TYPES: BEGIN OF zspfli,
mark TYPE char1, " Campo para seleção
carrid TYPE spfli-carrid,
connid TYPE spfli-connid,
cityfrom TYPE spfli-cityfrom,
cityto TYPE spfli-cityto,
END OF zspfli.

START-OF-SELECTION.

* Buscar dados da tabela SPFLI
SELECT * FROM spfli INTO TABLE gt_spfli.

* Preencher a tabela de saída com os dados e inicializar o campo de marcação
LOOP AT gt_spfli INTO DATA(ls_spfli).
CLEAR gs_outtab.
gs_outtab-mark = space. " Inicializa a seleção desmarcada
gs_outtab-carrid = ls_spfli-carrid.
gs_outtab-connid = ls_spfli-connid.
gs_outtab-cityfrom = ls_spfli-cityfrom.
gs_outtab-cityto = ls_spfli-cityto.
APPEND gs_outtab TO gt_outtab.
ENDLOOP.

* Configuração do Layout
gs_layout-box_fieldname = 'MARK'. " Define o campo que será checkbox

* Criar o catálogo de campos do ALV
CLEAR gs_fieldcat.
gs_fieldcat-fieldname = 'MARK'.
gs_fieldcat-seltext_m = 'Sel'. " Texto do cabeçalho
gs_fieldcat-checkbox = 'X'. " Define como checkbox
gs_fieldcat-outputlen = 3. " Largura da coluna
APPEND gs_fieldcat TO gt_fieldcat.

CLEAR gs_fieldcat.
gs_fieldcat-fieldname = 'CARRID'.
gs_fieldcat-seltext_m = 'Companhia'.
APPEND gs_fieldcat TO gt_fieldcat.

CLEAR gs_fieldcat.
gs_fieldcat-fieldname = 'CONNID'.
gs_fieldcat-seltext_m = 'Voo'.
APPEND gs_fieldcat TO gt_fieldcat.

CLEAR gs_fieldcat.
gs_fieldcat-fieldname = 'CITYFROM'.
gs_fieldcat-seltext_m = 'Origem'.
APPEND gs_fieldcat TO gt_fieldcat.

CLEAR gs_fieldcat.
gs_fieldcat-fieldname = 'CITYTO'.
gs_fieldcat-seltext_m = 'Destino'.
APPEND gs_fieldcat TO gt_fieldcat.

* Chamar o ALV com a função REUSE_ALV_GRID_DISPLAY
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
i_callback_program = sy-repid
is_layout = gs_layout
it_fieldcat = gt_fieldcat
TABLES
t_outtab = gt_outtab.


Explicação do Código

1. Criação do campo MARK

• Esse campo é do tipo CHAR1 e servirá como o checkbox.

• Ele é incluído na estrutura de saída (zspfli).

2. Definição do gs_layout-box_fieldname

• Configuramos gs_layout-box_fieldname = 'MARK' para dizer ao ALV que este campo é um marcador de seleção.

3. Definição do Catálogo de Campos (gt_fieldcat)

• No campo MARK, ativamos checkbox = 'X' para torná-lo uma caixa de seleção.

4. Chamando REUSE_ALV_GRID_DISPLAY

• O ALV exibe a tabela gt_outtab, onde cada linha tem um checkbox no início.

Como Funciona na Prática

• Ao executar o relatório, as primeiras colunas do ALV conterão check-boxes.

• O usuário poderá selecionar/desmarcar as linhas.

• Após a execução, você pode capturar as linhas selecionadas para processamento adicional.

Se precisar de mais alguma funcionalidade, como capturar as linhas selecionadas, me avise!


Respondido el 24/02/2025
LUCIANO RIOJA GHIOTTO
Se unió el 13/07/2019

contacto@primeinstitute.com

(+51) 1641 9379
(+57) 1489 6964

© 2025 Copyright. Todos los derechos reservados.

Desarrollado por Prime Institute

Hola ¿Puedo ayudarte?