Exibindo dados em Grid ou List
Exemplo mostrando dados da tabela marc em um Grid ou List, usando as funções REUSE_ALV_LIST_DISPLAY para mostrar em List e REUSE_ALV_GRID_DISPLAY para mostrar em Grid.
************************************************************************
* Programa : Exibindo dados em Grid ou List.
* Autor : Carlos sum
* Data : 15/10/2010
************************************************************************
REPORT zteste_eduardo.
TYPE-POOLS: slis.
*Criando tabela interma t_marc com header line
DATA: t_marc TYPE TABLE OF marc WITH HEADER LINE.
*criando a tabela interna de fieldcat, usada para as configuraçõe de saida
DATA: t_fcat TYPE slis_t_fieldcat_alv WITH HEADER LINE.
*Criação do filtro na tela
INITIALIZATION.
SELECTION-SCREEN BEGIN OF BLOCK 001
WITH FRAME TITLE text-001.
PARAMETERS: p_matnr TYPE marc-matnr OBLIGATORY,
p_werks TYPE marc-werks.
SELECTION-SCREEN END OF BLOCK 001.
*criação da opção de saida, o usuário escolhe LIST ou Grid
SELECTION-SCREEN BEGIN OF BLOCK 002
WITH FRAME TITLE text-002.
PARAMETERS: r_list TYPE c RADIOBUTTON GROUP 123,
r_grid TYPE c RADIOBUTTON GROUP 123.
SELECTION-SCREEN END OF BLOCK 002.
START-OF-SELECTION.
*Faz o select no banco, usei a condição OR apenas para trazer + resultados, exemplo nada usual, rssrssr
SELECT *
INTO TABLE t_marc
FROM marc
WHERE matnr EQ p_matnr OR werks EQ p_werks.
* se o select obteve sucesso o sy-subrc será igual a 0, então executa o resto do programa
IF sy-subrc = 0.
*criando a tabela de fieldcast, e a tabela de configuração de saida
t_fcat-fieldname = 'matnr'.
t_fcat-ref_fieldname = 'matnr'.
t_fcat-ref_tabname = 'marc'.
APPEND t_fcat.
CLEAR t_fcat.
t_fcat-fieldname = 'werks'.
t_fcat-ref_fieldname = 'werks'.
t_fcat-ref_tabname = 'marc'.
APPEND t_fcat.
CLEAR t_fcat.
t_fcat-fieldname = 'mmstd'.
t_fcat-ref_fieldname = 'mmstd'.
t_fcat-ref_tabname = 'marc'.
APPEND t_fcat.
CLEAR t_fcat.
* verifica se o usuario pediu LIST ou Grid
IF r_list EQ 'x'.
* executa a função para saida do LIST
CALL FUNCTION 'reuse_alv_list_display'
EXPORTING
i_callback_program = sy-cprog
it_fieldcat = t_fcat[]
TABLES
t_outtab = t_marc[].
IF sy-subrc <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
ELSE.
* executa a função para saida do GRID
CALL FUNCTION 'reuse_alv_grid_display'
EXPORTING
i_callback_program = sy-cprog
it_fieldcat = t_fcat[]
TABLES
t_outtab = t_marc[].
IF sy-subrc <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
* fecha o IF da escolha do LIST ou GRID
ENDIF.
* Fecha o IF do sy-subrc
ENDIF.
************************************************************************
* Programa : Exibindo dados em Grid ou List.
* Autor : Carlos sum
* Data : 15/10/2010
************************************************************************
REPORT zteste_eduardo.
TYPE-POOLS: slis.
*Criando tabela interma t_marc com header line
DATA: t_marc TYPE TABLE OF marc WITH HEADER LINE.
*criando a tabela interna de fieldcat, usada para as configuraçõe de saida
DATA: t_fcat TYPE slis_t_fieldcat_alv WITH HEADER LINE.
*Criação do filtro na tela
INITIALIZATION.
SELECTION-SCREEN BEGIN OF BLOCK 001
WITH FRAME TITLE text-001.
PARAMETERS: p_matnr TYPE marc-matnr OBLIGATORY,
p_werks TYPE marc-werks.
SELECTION-SCREEN END OF BLOCK 001.
*criação da opção de saida, o usuário escolhe LIST ou Grid
SELECTION-SCREEN BEGIN OF BLOCK 002
WITH FRAME TITLE text-002.
PARAMETERS: r_list TYPE c RADIOBUTTON GROUP 123,
r_grid TYPE c RADIOBUTTON GROUP 123.
SELECTION-SCREEN END OF BLOCK 002.
START-OF-SELECTION.
*Faz o select no banco, usei a condição OR apenas para trazer + resultados, exemplo nada usual, rssrssr
SELECT *
INTO TABLE t_marc
FROM marc
WHERE matnr EQ p_matnr OR werks EQ p_werks.
* se o select obteve sucesso o sy-subrc será igual a 0, então executa o resto do programa
IF sy-subrc = 0.
*criando a tabela de fieldcast, e a tabela de configuração de saida
t_fcat-fieldname = 'matnr'.
t_fcat-ref_fieldname = 'matnr'.
t_fcat-ref_tabname = 'marc'.
APPEND t_fcat.
CLEAR t_fcat.
t_fcat-fieldname = 'werks'.
t_fcat-ref_fieldname = 'werks'.
t_fcat-ref_tabname = 'marc'.
APPEND t_fcat.
CLEAR t_fcat.
t_fcat-fieldname = 'mmstd'.
t_fcat-ref_fieldname = 'mmstd'.
t_fcat-ref_tabname = 'marc'.
APPEND t_fcat.
CLEAR t_fcat.
* verifica se o usuario pediu LIST ou Grid
IF r_list EQ 'x'.
* executa a função para saida do LIST
CALL FUNCTION 'reuse_alv_list_display'
EXPORTING
i_callback_program = sy-cprog
it_fieldcat = t_fcat[]
TABLES
t_outtab = t_marc[].
IF sy-subrc <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
ELSE.
* executa a função para saida do GRID
CALL FUNCTION 'reuse_alv_grid_display'
EXPORTING
i_callback_program = sy-cprog
it_fieldcat = t_fcat[]
TABLES
t_outtab = t_marc[].
IF sy-subrc <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
* fecha o IF da escolha do LIST ou GRID
ENDIF.
* Fecha o IF do sy-subrc
ENDIF.
Gera um arquivo PDF a partir de um relatório desenvolvido em Smartforms.
************************************************************************
* Programa : Gera um arquivo PDF a partir de um relatório desenvolvido
* em Smartforms
* Autor : Carlos sum
* Data : 16/09/2010
************************************************************************
REPORT zsedu_2.
******************************************************
* Definições
******************************************************
DATA: fm_name type rs38l_fnam,
job_output_info TYPE ssfcrescl,
document_output_info TYPE ssfcrespd,
job_output_options TYPE ssfcresop,
output_options TYPE ssfcompop,
control_parameters TYPE ssfctrlop,
lt_otfdata TYPE TABLE OF itcoo.
******************************************************
* Inicialização
******************************************************
INITIALIZATION.
SELECTION-SCREEN BEGIN OF BLOCK bl01 WITH FRAME TITLE text-001.
SELECTION-SCREEN SKIP.
PARAMETERS: p_form(30) TYPE c OBLIGATORY.
SELECTION-SCREEN SKIP.
SELECTION-SCREEN END OF BLOCK bl01.
******************************************************
* Principal
******************************************************
START-OF-SELECTION.
control_parameters-device = 'PRINTER'.
control_parameters-no_dialog = 'X'.
control_parameters-preview = 'X'.
control_parameters-getotf = 'X'.
output_options-tdnoprint = 'X'.
*****************************************************
* *** chamado do formulario Smartforms
*****************************************************
CALL FUNCTION 'SSF_FUNCTION_MODULE_NAME'
EXPORTING
formname = 'ZSF_EDU'
IMPORTING
fm_name = fm_name
EXCEPTIONS
no_form = 1
no_function_module = 2
OTHERS = 3.
CALL FUNCTION fm_name
EXPORTING
output_options = output_options
control_parameters = control_parameters
user_settings = 'X'
IMPORTING
job_output_info = job_output_info
EXCEPTIONS
formating_error = 1
internal_error = 2
send_error = 3
user_canceled = 4
OTHERS = 5.
*******************************************************
* *** chamado do relatório em PDF
*******************************************************
lt_otfdata[] = job_output_info-otfdata[].
CALL FUNCTION 'SSFCOMP_PDF_PREVIEW'
EXPORTING
i_otf = lt_otfdata
EXCEPTIONS
convert_otf_to_pdf_error = 1
cntl_error = 2
OTHERS = 3.
.
DATA: l_dummy TYPE STANDARD TABLE OF tline,
pdf_data TYPE xstring,
pdf_size TYPE i.
CLEAR: pdf_data, pdf_size.
********************************************************
* convert otf to pdf
********************************************************
CALL FUNCTION 'CONVERT_OTF'
EXPORTING
format = 'PDF'
IMPORTING
bin_filesize = pdf_size
bin_file = pdf_data
TABLES
otf = lt_otfdata[]
lines = l_dummy
EXCEPTIONS
err_max_linewidth = 1
err_format = 2
err_conv_not_possible = 3
OTHERS = 4.
****************************************************Fim
Trabalhando com o Screen Painter
Screen Painter: -
Screen painter é uma ferramenta ABAP workbench dev usado para criar as telas usando o
SE51.
Na tela do pintor, você pode definir os elementos da interface a seguir com seus atributos associados.
1. Entrada / Saída de Campos
2. Nomes de campo
3. Checkboxes
4. Botões de Rádio
5. Grupo Boxes
6. Sub telas.
7. Botões com posição não fixa
e outros
PASSO-A-PASSO DEMO DE PINTOR DE TELA.
Criar um programa de Z em SE38.
Clique em Salvar. Vamos escrever o código mais adiante neste.
Ir para a transação SE51.
Digite o nome do programa criado e número da tela.
Digite uma descrição curta e clique em Salvar.
Clique na guia flowlogic.
Descomente a declaração "STATUS_0100 módulo".
Clique duas vezes no "status_0100".
A tela abaixo será exibida,
Clique em sim.
Na sequência de uma janela pop-up aparece. Selecione a opção "zdemo_screen_painter".
"Programa principal" e clique em continuar.
Clique em sim.
Tela seria apresentado da seguinte forma:
Agora volte para a transação SE51.
Selecione lógica do fluxo.
Clique no layout.
Tela da janela pintor será exibido como esta.
Aqui nós vamos projetar os campos necessários tela.
Clique no ícone do meio dicionário / janela de programa campos. Or F6. Ou F6.
Exibida a seguinte tela:
Digite o nome da tabela no nome do campo da tabela.
Clique aqui para carregar do dicionário.
Selecione os campos obrigatórios da tabela MARA do dicionário. Clique em OK ou continuar.
Depois de colocar os campos obrigatórios, você pode visualizar a tela abaixo.
Crie o botão da caixa de ferramentas
Selecione o botão, arraste e solte o botão na tela.
Crie o exigido outros botões no mesmo procedimento mencionado acima e atribuir o nome, texto e código de função para cada um.
Depois de criar a tela clique em "salvar" verificar e ativar.
fluxo de pressionar o botão lógica.
Clique na guia Lista elemento entra OK_CODE.
Cole o código abaixo no criado z programa criado anteriormente:
*&-------------------------------------------------------------------*
*& Report ZDEMO_SCREEN_PAINTER
*&
*&-------------------------------------------------------------------*
*& Demo para o pintor da tela.
*&
*&-------------------------------------------------------------------*
REPORT ZDEMO_SCREEN_PAINTER.
********************************************************
* Declarações da tabela.
********************************************************
TABLES: MARA.
********************************************************
* Declarações de dados.
********************************************************
DADOS: MATNR Type MARA - MATNR,
ERSDA TYPE MARA-ERSDA,
ERNAM TYPE MARA-ERNAM,
MTART TYPE MARA-MTART,
MATKL TYPE MARA-MATKL,
DISPLAY TYPE C,
SAVE TYPE C,
DELETE TYPE C,
CLEAR TYPE C,
EXIT TYPE C,
OK_CODE LIKE SY-UCOMM.
**************************************************
* CALLING SCREEN.
**************************************************
CALL SCREEN 100.
**************************************************
* Module STATUS_0100 OUTPUT
**************************************************
* text
**************************************************
MODULE status_0100 OUTPUT.
* SET PF-STATUS 'ZMENU'.
* SET TITLEBAR 'ZMENU_PAINTER'.
CASE sy-ucomm.
WHEN 'EXIT'.
LEAVE PROGRAM.
WHEN 'BACK'.
. LEAVE PROGRAM.
WHEN 'DISPLAY'.
SELECT SINGLE ersda ernam mtart matkl FROM mara
INTO (mara-ersda, mara-ernam, mara-mtart, mara-matkl)
WHERE matnr = mara-matnr.
WHEN 'CLEAR'.
CLEAR mara.
ENDCASE.
ENDMODULE. " STATUS_0100 OUTPUT
Saída: -
Digite Material número no material de campo. Clique no vídeo.
Relevante é mostrado abaixo:
FIM...
Espero que goste do tutorial..