ABAP - SAP - Como tratar linha selecionada em uma table control?




              Para sabermos qual linha está marcada na table control, precisamos passar esta informação para a tabela interna onde a Table Control exibe os dados.

Este é um dos motivos particulares que sempre utilizo uma estrutura criada na SE11.

Utilizei a estrutura yfox_wspfli que tem um include interno da tabela SPFLI:



No final adicionei o campo MARK que será marcado quando selecionarmos uma linha (ou várias).

Minha Table control utiliza uma tabela interna com referência a esta estrutura:



O Flow da tela utilizando esta tabela interna:



Vamos Colocar na SCREEN PAINTER que a table control vai ter um campo MARK dessa estrutura:



OBS: Eu não utilizei SPFLI-MARK, mas sim YFOX_WSPFLI-MARK ( O campo é pequeno e só exibiu o final)

E coloquei Multiple no Line Sel



Agora é fazer com que o FLOW da tela (PAI) atualize nossa tabelinha interna com o 'X' do campo MARK:

 Colocamos um CHAIN....ENDCHAIN para quando o valor mudar, ele cair no module mark_mark.

Quando temos um campo na screen-painter marcado para fazer essa função, quando selecionamos uma linha ele automaticamente coloca 'X' nesse campo. Mas se dermos um Enter, ele vai perder este valor quando entrar em PBO, porque não foi atualizado a tabela interna. Dessa forma precisamos, se este campo MARK for alterado, ser atualizado.



E dentro deste module, ele atualiza o valor do campo MARK para a tabelinha interna. Agora se você der um ENTER, vai perceber que as linhas marcadas permanecem, ou seja, a atualização foi feita com sucesso.



A partir daí é facil processar, por exemplo os campos marcados com X no campo MARK da sua tabelinha interna, ou deletar ou fazer qualquer outro processamento.

O Projetinho está no GIT para consulta:



Gostou da publicação? Então clica na raposinha e curta nossa fanpage \o/


Quer aprender ABAP definitivamente, sem precisar sair de casa?

Acessewww.abapfox.org


2 comentários:

Copyright © 2013 ABAP SAP - AbapFox! Aprenda ABAP Definitivamente