SPAN {font-family: "Courier New";font-size: 10pt;color: #000000;background: #FFFFFF;}.L0S31 {font-style: italic;color: #808080;}.L0S32 {color: #3399FF;}.L0S33 {color: #4DA619;}.L0S52 {color: #0000FF;}.L0S55 {color: #800080;}.L0S70 {color: #808080;}REPORT zreuse_alv_popup_to_select.*--------------------------------------------------------------------** Fala pessoal, hoje irei mostrar algo que facilita muito escolhas de* registro em massa em um ALV, para fazer isso usarei a funcao* 'REUSE_ALV_POPUP_TO_SELECT' que ira exibir todas as opcoes de selecao* em massa.* Estarei trabalhando com um exemplo simples que trara todos os objetos* criados pelo usuario que executar o programa.* A lista de opcoes de selecao de linhas do ALV sera criada baseada nos* tipos de objetos ( TADIR-OBJECT ).* Espero que gostem desse metodo que ajudara muito na selecao de linhas* do ALV, onde alem de fazer linha por linha, sera feito conforme range* definido no PopUP.* Segue no final do codigo os prints do processo.* Valeo.* Tipos.TYPES : BEGIN OF ty_tadir, selected. INCLUDE TYPE tadir.TYPES : END OF ty_tadir.TYPES : BEGIN OF ty_popup, select, text(50), END OF ty_popup.* Tabela global.DATA : gt_popup TYPE TABLE OF ty_popup.* Variaveis referente ao ALVVDATA :* Objetos o_docking TYPE REF TO cl_gui_docking_container, o_grid TYPE REF TO cl_gui_alv_grid,* Tabelas internas gt_tadir TYPE TABLE OF ty_tadir, gt_fieldcat TYPE TABLE OF lvc_s_fcat, gt_exclude TYPE TABLE OF ui_func,* Estruturas gs_layout TYPE lvc_s_layo.* RangesDATA : r_object TYPE RANGE OF char20.* Inicio do processo.START-OF-SELECTION.* Quando criarem a tela do ALV ( 9001 ) coloquem o codigo abaixo na tela.*--------------------------------------------------------------------**PROCESS BEFORE OUTPUT.* MODULE :* status_9001,* inicialization_9001.**PROCESS AFTER INPUT.* MODULE :* user_command_9001.*--------------------------------------------------------------------** Tela ALV principal. CALL SCREEN 9001.*&---------------------------------------------------------------------**& Form POPUP_COM_MULTIPLA_ESCOLHA*&---------------------------------------------------------------------*FORM popup_com_multipla_escolha . DATA : ls_popup LIKE LINE OF gt_popup, lt_fcat_popup TYPE TABLE OF slis_fieldcat_alv, ls_fcat_popup LIKE LINE OF lt_fcat_popup, lt_excl TYPE slis_t_extab, ls_excl TYPE slis_extab, ls_object LIKE LINE OF r_object.* Catalogo de campos do PopUp de opcoes. ls_fcat_popup-tabname = 'LT_POPUP'. ls_fcat_popup-col_pos = '1'. ls_fcat_popup-fieldname = 'SELECT'. ls_fcat_popup-seltext_m = 'SELECT'. APPEND ls_fcat_popup TO lt_fcat_popup. ls_fcat_popup-col_pos = '2'. ls_fcat_popup-fieldname = 'TEXT'. ls_fcat_popup-seltext_m = 'Status'. ls_fcat_popup-outputlen = 50. APPEND ls_fcat_popup TO lt_fcat_popup.* Exclusao dos botoes padroes do ALV. ls_excl-fcode = '&ETA'. APPEND ls_excl TO lt_excl. ls_excl-fcode = '%SC'. APPEND ls_excl TO lt_excl. ls_excl-fcode = '%SC+'. APPEND ls_excl TO lt_excl. ls_excl-fcode = '&OUP'. APPEND ls_excl TO lt_excl. ls_excl-fcode = '&ODN'. APPEND ls_excl TO lt_excl. ls_excl-fcode = '&ILT'. APPEND ls_excl TO lt_excl. ls_excl-fcode = '&OL0'. APPEND ls_excl TO lt_excl. ls_excl-fcode = '&CRB'. APPEND ls_excl TO lt_excl. ls_excl-fcode = '&CRL'. APPEND ls_excl TO lt_excl. ls_excl-fcode = '&CRR'. APPEND ls_excl TO lt_excl. ls_excl-fcode = '&CRE'. APPEND ls_excl TO lt_excl. ls_excl-fcode = '&ALL'. APPEND ls_excl TO lt_excl. ls_excl-fcode = '&SAL'. APPEND ls_excl TO lt_excl. CALL FUNCTION 'REUSE_ALV_POPUP_TO_SELECT' EXPORTING i_title = 'Tipos de Objetos' i_zebra = abap_true i_screen_start_column = 1 i_screen_start_line = 1 i_checkbox_fieldname = 'SELECT' i_tabname = 'LT_POPUP' it_fieldcat = lt_fcat_popup it_excluding = lt_excl TABLES t_outtab = gt_popup EXCEPTIONS program_error = 1 OTHERS = 2. FREE r_object. IF gt_popup[] IS NOT INITIAL. LOOP AT gt_popup INTO ls_popup. IF ls_popup-select = abap_true.. ls_object-sign = 'I'. ls_object-option = 'EQ'. ls_object-low = ls_popup-text. APPEND ls_object TO r_object. ENDIF. ENDLOOP. ENDIF.ENDFORM.*&---------------------------------------------------------------------**& Module STATUS_9001 OUTPUT*&---------------------------------------------------------------------*MODULE status_9001 OUTPUT. SET PF-STATUS 'PF_9001'.ENDMODULE.*&---------------------------------------------------------------------**& Module INICIALIZATION_9001 OUTPUT*&---------------------------------------------------------------------*MODULE inicialization_9001 OUTPUT. IF o_grid IS NOT BOUND.* selecao dos objetos do usuario que esta processando o programa. SELECT * FROM