terça-feira, 21 de maio de 2013

Initialization / Start-of-Selection


*  Bom dia, tava trabalhando e perguntaram pra mim qual a diferença entre
* o comando 'INITIALIZATION' e 'START-OF-SELECTION', bem, pra sanar a dúvidas
* fiz este post simples pra tentar mostrar pra vocês de forma prática a
* diferença entre os mesmos, logo após ambos os comandos coloquei o mesmo
* perform, na verdade, não faz muito sentido fazer isso, mas assim vocês
* vão ver um pouco mais nítido a diferença entre eles, reparem os dados
* na tabela interna 'IT_SCARR' e no parametro de seleção 'S_CARRID', durante
* os dois momentos diferentes.

REPORT z_initi_x_start.

* Declaração de tabelas transparentes
TABLES :
  scarr.

* Tabelas Internas e estruturas
DATA:
  it_scarr 
TYPE TABLE OF scarr,
  st_scarr 
TYPE scarr.

* Tela de seleção
SELECTION-
SCREEN BEGIN OF BLOCK b1 WITH FRAME.
SELECT-OPTIONS :
  s_carrid 
FOR scarr-carrid obligatory.
SELECTION-
SCREEN END OF BLOCK   b1.


*  INITIALIZATION - Esse comando força a execução de processos antes mesmo de
* mostrar a tela de seleção, funciona como o PBO de um Module Pool.
* Remember
* http://abapjuniores.blogspot.com.br/2011/04/module-pool-basico.html
INITIALIZATION.

  BREAK-POINT.

  
PERFORM z_seleciona_carrid.

*  START-OF-SELECTION - processo normal de um programa, após alimentar os dados
* na tela de seleção, os mesmos servirão como condição para as seleções de dados
* do programa e outras tratativas convenientes.
START-OF-SELECTION.

  BREAK-POINT.

  
PERFORM z_seleciona_carrid.


*&---------------------------------------------------------------------*
*&      Form  Z_SELECIONA_CARRID
*&---------------------------------------------------------------------*
FORM z_seleciona_carrid .

*  Seleção de dados na tabela 'SCARR' baseada no carrid da tela de seleção
*  Após 'INITIALIZATION'  : S_CARRID  = SPACE e todos os dados da SCARR na
* Tabela Interna.
*  Após 'START-OF-SELECT' : S_CARRID <> SPACE e dados da tabela conforme
* condição.

  
SELECT *
    
FROM scarr
    
INTO TABLE it_scarr
    
WHERE carrid in s_carrid.

ENDFORM.                    " Z_SELECIONA_CARRID


*  Obs. Como eu mesmo disse, o 'INITIALIZATION' é executado antes de mostrar
* a tela, portanto quando fizer o processo normal 'START-OF-SELECTION', depois
* de tudo irá voltar ao comando 'INITIALIZATION' porque no final do processo
* será mostrado denovo a tela, como eu disse tb, esse programa não faz muito
* sentido, mas eu executei dois perform iguais em momentos diferentes do
* programa pra vocês verem os dados alimentados de forma diferente só por
* causa do momento.
*  Esse processo é usado mais na alimentação de tabelas auxiliares de Match Code
* de tela, tratativas de campos para condição de seleção, Ranges, autority Check...
* Bons estudos.
Comentários
0 Comentários

Nenhum comentário:

Postar um comentário