" Vou mostra agora como trabalhar com uma função muito interessante, na
" verdade ela ajuda muito pois vai mostrar a tela já alimentada pela
" variante de tela informada, pra deixar um pouco mais legal estarei fazendo
" um programa que verifica a ultima variante de tela criada para o programa
" mostrar.
" Não Lembra sobre Variante de Tela, acesse :
http://abapjuniores.blogspot.com/2012/01/variante-da-tela.html
REPORT zmjrs_support_selections.
" Tipos.
TYPES :
BEGIN OF ty_maior,
report TYPE varid-report,
variant TYPE varid-variant,
date TYPE varid-aedat,
time TYPE varid-etime,
END OF ty_maior
.
" Tabela Interna
DATA : it_varid TYPE TABLE OF varid,
it_maior TYPE TABLE OF ty_maior
.
" Estrutura
DATA : st_varid TYPE varid,
st_maior TYPE ty_maior
.
" Tela de seleção
SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME.
PARAMETERS :
p_par1 TYPE matnr,
p_par2 TYPE matnr
.
SELECTION-SCREEN END OF BLOCK b1.
INITIALIZATION.
PERFORM : zf_busca_ultima_variante.
*&---------------------------------------------------------------------*
*& Form ZF_BUSCA_ULTIMA_VARIANTE
*&---------------------------------------------------------------------*
FORM zf_busca_ultima_variante .
" Busca na tabela VARID todas as variantes do programa em execução
SELECT *
FROM varid
INTO TABLE it_varid
WHERE report = sy-repid.
" Se não veio nenhum dado.
IF it_varid[] IS INITIAL.
" Cai fora
EXIT.
ELSE.
" Se a quantidade de linhas na tabela for = a 1.
IF lines( it_varid ) = 1.
" Lê o primeiro ( e único ) e executa a função.
READ TABLE it_varid INTO st_varid
INDEX 1.
PERFORM zf_rs_support_selections USING : st_varid-report
st_varid-variant
.
" Se a quantidade de linhas na tabela for <> de 1.
ELSE.
LOOP AT it_varid INTO st_varid.
MOVE : st_varid-report TO st_maior-report,
st_varid-variant TO st_maior-variant
.
" Se for a primeira versão ou o campo aename for vazio.
IF st_varid-version = 1
OR st_varid-aename IS INITIAL.
MOVE : st_varid-edat TO st_maior-date,
st_varid-etime TO st_maior-time
.
" Adiciona o registro na tabela interna
APPEND st_maior TO it_maior.
" Se não for a primeira versão ou o campo aename não for vazio.
ELSE.
MOVE : st_varid-aedat TO st_maior-date,
st_varid-aetime TO st_maior-time
.
" Adiciona o registrp na tabela interna
APPEND st_maior TO it_maior.
ENDIF.
ENDLOOP.
" Ordena a tabela de forma decrescente pelos campos informados.
SORT it_maior BY date DESCENDING
time DESCENDING
.
" Lê o primeiro registro e executa a função.
READ TABLE it_maior INTO st_maior
INDEX 1.
PERFORM zf_rs_support_selections USING : st_maior-report
st_maior-variant
.
ENDIF.
ENDIF.
ENDFORM. " ZF_BUSCA_ULTIMA_VARIANTE
*&---------------------------------------------------------------------*
*& Form ZF_RS_SUPPORT_SELECTIONS
*&---------------------------------------------------------------------*
FORM zf_rs_support_selections USING report
variant.
CALL FUNCTION 'RS_SUPPORT_SELECTIONS'
EXPORTING
report = report " Programa em execução
variant = variant " Variante a ser mostrado na tela
EXCEPTIONS
variant_not_existent = 1
variant_obsolete = 2
OTHERS = 3.
ENDFORM. " ZF_RS_SUPPORT_SELECTIONS