* 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.
* 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.