Você está na página 1de 9

************************************************************************

* TTULO
: ZXXR000
*
* TIPO PROG : REPORT
*
* TRANSAO :
*
* FUNCIONAL :
*
* AUTOR(A) : Nome Consultor - Nome Consultoria
* DATA
: __/__/____
*
* DESCRIO :
*
* HelpDesk :
*
* PACOTE
: ZXX
*
*--------------------------------------------------------------------- *
* Histrico de Alteraes:
*
*--------------------------------------------------------------------- *
* Date de Modificao :
*
* Autor
:
*
* HelpDesk :
*
* Descrio:
*
************************************************************************
REPORT zteste_mat2.
*======================================================================*
* DECLARAES
*
*======================================================================*
*----------------------------------------------------------------------*
* Includes
*
*----------------------------------------------------------------------*
INCLUDE <icon>.
*----------------------------------------------------------------------*
* Tabelas Transparentes
*
*----------------------------------------------------------------------*
TABLES: mara.
*----------------------------------------------------------------------*
* TIPOS DE REFERNCIA
*
*----------------------------------------------------------------------*
TYPE-POOLS: truxs, kkblo.
* Linha de detalhe do list view
TYPES: BEGIN OF st_saida,
matnr
LIKE mara-matnr,
maktx
LIKE makt-maktx,
peso_bruto TYPE p,
peso_liquido TYPE p,
icon
TYPE char04,
semaf
TYPE char01,
mark,
END OF st_saida.

" Semforo do status

*----------------------------------------------------------------------*
* TABELAS INTERNAS
*
*----------------------------------------------------------------------*
DATA: it_saida TYPE TABLE OF st_saida WITH HEADER LINE.
*----------------------------------------------------------------------*
* WORKAREAS
*
*----------------------------------------------------------------------*
DATA wa_saida TYPE st_saida.

*----------------------------------------------------------------------*
* FIELD-SYMBOLS
*
*----------------------------------------------------------------------*
FIELD-SYMBOLS <fs_saida> TYPE st_saida.
*----------------------------------------------------------------------*
* Variveis da ALV
*
*----------------------------------------------------------------------*
DATA: st_fieldcat
TYPE kkblo_fieldcat,
it_fieldcat
TYPE kkblo_t_fieldcat,
st_variant
TYPE disvariant,
st_layout
TYPE kkblo_layout,
st_header
TYPE kkblo_listheader,
it_fieldcat_alv TYPE slis_t_fieldcat_alv,
it_special_groups TYPE slis_t_sp_group_alv,
it_layout_alv
TYPE slis_layout_alv,
it_header
TYPE kkblo_t_listheader,
it_sort
TYPE slis_t_sortinfo_alv WITH HEADER LINE.
*----------------------------------------------------------------------*
* TELA DE SELEO
*
*----------------------------------------------------------------------*
SELECTION-SCREEN BEGIN OF BLOCK f1 WITH FRAME TITLE t01.
SELECT-OPTIONS: s_matnr FOR mara-matnr.
SELECTION-SCREEN END OF BLOCK f1.
SELECTION-SCREEN BEGIN OF BLOCK block2 WITH FRAME TITLE text-002.
PARAMETERS: p_tabela TYPE c RADIOBUTTON GROUP crg DEFAULT 'X',
p_excel TYPE c RADIOBUTTON GROUP crg.
SELECTION-SCREEN END OF BLOCK block2.
"Execuo via arquivo do Excel
SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-001.
PARAMETERS p_file TYPE rlgrap-filename.
SELECTION-SCREEN END OF BLOCK b1.
*======================================================================*
* PROCESSAMENTO PRINCIPAL
*
*======================================================================*
*----------------------------------------------------------------------*
AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_file.
*----------------------------------------------------------------------*
* Localizar arquivo de entrada
PERFORM f_buscar_arquivo_entrada.
*AT SELECTION-SCREEN ON s_matnr.
*
* IF s_matnr IS INITIAL.
*
MESSAGE e398(00) WITH 'Informe o primeiro valor'.
* ENDIF.
*----------------------------------------------------------------------*
AT SELECTION-SCREEN.
*----------------------------------------------------------------------*
IF sy-ucomm = 'ONLI'.
"Carregar os dados do Excel
PERFORM f_dados_arquivo.

ENDIF.
*----------------------------------------------------------------------*
START-OF-SELECTION.
*----------------------------------------------------------------------*
IF NOT p_tabela IS INITIAL.
PERFORM f_selecionar_dados.
ENDIF.
*----------------------------------------------------------------------*
END-OF-SELECTION.
*----------------------------------------------------------------------*
PERFORM f_cabecalho.
PERFORM f_catalogo.
PERFORM f_layout.
PERFORM f_relatorio.
*======================================================================*
* SUBROTINAS
*
*======================================================================*
*&---------------------------------------------------------------------*
*&
Form f_buscar_arquivo_entrada
*&---------------------------------------------------------------------*
*
HELP PRA BUSCAR O ARQUIVO NO DIRETRIO
*----------------------------------------------------------------------*
FORM f_buscar_arquivo_entrada.
CALL FUNCTION 'KD_GET_FILENAME_ON_F4'
EXPORTING
mask
= ',Arquivo Excel,*.xls*'
CHANGING
file_name = p_file.
ENDFORM.

" f_buscar_arquivo_entrada

*&---------------------------------------------------------------------*
*&
Form F_DADOS_ARQUIVO
*&---------------------------------------------------------------------*
*
Carregar os dados do Excel
*----------------------------------------------------------------------*
FORM f_dados_arquivo.
CHECK NOT p_excel IS INITIAL.
IF p_file IS INITIAL.
MESSAGE 'Informe o arquivo' TYPE 'E'.
ENDIF.
REFRESH it_saida.
DATA raw_data TYPE truxs_t_text_data.
CALL FUNCTION 'TEXT_CONVERT_XLS_TO_SAP'
EXPORTING
i_tab_raw_data
= raw_data
i_line_header
= 'X'
i_filename
= p_file

TABLES
i_tab_converted_data = it_saida
EXCEPTIONS
conversion_failed
= 1
OTHERS
= 2.
IF sy-subrc <> 0.
MESSAGE 'ERRO ao carregar o arquivo. Formatao errada ou o arquivo encontra-se
aberto em sua mquina' TYPE 'E'.
ENDIF.
ENDFORM.

" F_DADOS_ARQUIVO

*&--------------------------------------------------------------------*
*& Form f_seleciona
*&--------------------------------------------------------------------*
* Seleo dos dados
*---------------------------------------------------------------------*
FORM f_selecionar_dados.
CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR'
EXPORTING
text = 'Selecionando dados. Aguarde...'.
SELECT mara~matnr
makt~maktx
mara~brgew
mara~ntgew UP TO 20 ROWS
INTO TABLE it_saida
FROM mara
INNER JOIN makt
ON makt~matnr = mara~matnr
WHERE mara~matnr IN s_matnr
AND makt~spras = sy-langu.
* DELETE it_saida WHERE peso_bruto IS INITIAL.
SORT it_saida BY matnr ASCENDING.
LOOP AT it_saida INTO wa_saida.
wa_saida-semaf = '3'.
MODIFY it_saida FROM wa_saida INDEX sy-tabix.
ENDLOOP.
LOOP AT it_saida ASSIGNING <fs_saida>.
<fs_saida>-icon = icon_display_text.
ENDLOOP.
UNASSIGN <fs_saida>.

"'@96@'.

ENDFORM. "f_seleciona
*&--------------------------------------------------------------------*
*& Form f_cabecalho
*&--------------------------------------------------------------------*
* Formata o cabealho
*---------------------------------------------------------------------*
FORM f_cabecalho.

REFRESH it_header.
* Ttulo do relatrio
CLEAR st_header.
st_header-typ = 'H'.
st_header-info = 'Lista de materiais'.
APPEND st_header TO it_header.
* Parmetros de seleo
CLEAR st_header.
st_header-typ = 'S'.
st_header-key = 'Cabealho'.
st_header-info = 'Texto do cabealho'.
APPEND st_header TO it_header.
* Linha informativa
CLEAR st_header.
st_header-typ = 'A'.
st_header-key = ' '.
st_header-info = 'Outra linha do cabealho'.
APPEND st_header TO it_header.
ENDFORM. "f_cabecalho
*&--------------------------------------------------------------------*
*& Form f_catalogo
*&--------------------------------------------------------------------*
* Definio das colunas
*---------------------------------------------------------------------*
FORM f_catalogo.
DATA i TYPE i.
REFRESH it_fieldcat.
i = i + 1.
CLEAR st_fieldcat.
st_fieldcat-row_pos = 1.
st_fieldcat-col_pos = i.
st_fieldcat-fieldname = 'SEMAF'.
st_fieldcat-ref_fieldname = ''.
st_fieldcat-ref_tabname = ''.
APPEND st_fieldcat TO it_fieldcat.
CLEAR st_fieldcat.
st_fieldcat-row_pos = 1.
st_fieldcat-col_pos = i.
st_fieldcat-fieldname = 'MATNR'.
st_fieldcat-ref_fieldname = 'MATNR'.
st_fieldcat-ref_tabname = 'MARA'.
APPEND st_fieldcat TO it_fieldcat.
i = i + 1.
CLEAR st_fieldcat.
st_fieldcat-row_pos = 1.
st_fieldcat-col_pos = i.
st_fieldcat-fieldname = 'MAKTX'.
st_fieldcat-ref_fieldname = 'MAKTX'.
st_fieldcat-ref_tabname = 'MAKT'.
APPEND st_fieldcat TO it_fieldcat.

i = i + 1.
CLEAR st_fieldcat.
st_fieldcat-row_pos = 1.
st_fieldcat-col_pos = i.
st_fieldcat-fieldname = 'PESO_BRUTO'.
st_fieldcat-ref_fieldname = 'BRGEW'.
st_fieldcat-ref_tabname = 'MARA'.
APPEND st_fieldcat TO it_fieldcat.
i = i + 1.
CLEAR st_fieldcat.
st_fieldcat-row_pos = 1.
st_fieldcat-col_pos = i.
st_fieldcat-fieldname = 'PESO_LIQUIDO'.
st_fieldcat-ref_fieldname = 'NTGEW'.
st_fieldcat-ref_tabname = 'MARA'.
APPEND st_fieldcat TO it_fieldcat.
i = i + 1.
CLEAR st_fieldcat.
st_fieldcat-row_pos = 1.
st_fieldcat-col_pos = i.
st_fieldcat-fieldname = 'ICON'.
st_fieldcat-icon = 'X'.
st_fieldcat-datatype = 'CHAR'.
st_fieldcat-outputlen = '4'.
APPEND st_fieldcat TO it_fieldcat.
ENDFORM. "f_catalogo
*&--------------------------------------------------------------------*
*& Form f_layout
*&--------------------------------------------------------------------*
* Layout de exibio
*---------------------------------------------------------------------*
FORM f_layout.
CLEAR st_layout.
st_layout-no_zebra = 'X'.
st_layout-lights_fieldname = 'SEMAF'.
st_layout-box_fieldname = 'MARK'.
CALL FUNCTION 'REUSE_ALV_TRANSFER_DATA_BACK'
EXPORTING
it_fieldcat
= it_fieldcat
is_layout
= st_layout
IMPORTING
et_fieldcat
= it_fieldcat_alv
es_layout
= it_layout_alv
et_special_groups = it_special_groups.
ENDFORM. "f_layout
*&--------------------------------------------------------------------*
*& Form f_relatorio
*&--------------------------------------------------------------------*
* Exibe o relatrio
*---------------------------------------------------------------------*
FORM f_relatorio.

PERFORM f_ajusta_fieldcat TABLES it_fieldcat_alv.


IF p_file IS INITIAL.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
i_callback_program
= sy-cprog "'ZTESTE_MAT2'
is_layout
= it_layout_alv
it_fieldcat
= it_fieldcat_alv
i_callback_top_of_page = 'TOP_OF_PAGE'
i_callback_pf_status_set = 'F_PF_STATUS_SET'
i_callback_user_command = 'F_USER_COMMAND'
TABLES
t_outtab
= it_saida[]
EXCEPTIONS
program_error
= 1
OTHERS
= 2.
ELSE.
CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'
EXPORTING
i_callback_program
= sy-cprog
is_layout
= it_layout_alv
it_fieldcat
= it_fieldcat_alv "Config. dos campos
i_callback_pf_status_set = 'F_PF_STATUS_SET'
i_callback_user_command = 'F_USER_COMMAND'
TABLES
t_outtab
= it_saida
EXCEPTIONS
program_error
= 1
OTHERS
= 2.
ENDIF.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
ENDFORM. "f_relatorio
*---------------------------------------------------------------------*
*
Form F_USER_COMMAND
*---------------------------------------------------------------------*
*
Controlar aes efetuados pelo usurio
*---------------------------------------------------------------------*
FORM f_user_command USING ucomm
TYPE sy-ucomm
selfield TYPE kkblo_selfield.
"#EC *
CASE ucomm.
WHEN '&IC1'.
"Buscar o contedo da linha
READ TABLE it_saida INTO wa_saida INDEX selfield-tabindex.
CHECK sy-subrc IS INITIAL.

IF selfield-fieldname = 'MATNR'.
SET PARAMETER ID 'MAT' FIELD wa_saida-matnr.
CALL TRANSACTION 'MM03' AND SKIP FIRST SCREEN.
ENDIF.
WHEN 'SHOW'.
MESSAGE 'Teste' TYPE 'S'.
WHEN OTHERS.
ENDCASE.
ENDFORM.

"f_user_command

*&------------------------------------------------------------------*&
Form F_PF_STATUS_SET
*&------------------------------------------------------------------FORM f_pf_status_set USING rt_extab TYPE slis_t_extab.
SET PF-STATUS 'STANDARD_FULLSCREEN'.
ENDFORM.

"F_STATUS_SET

*&---------------------------------------------------------------------*
*&
Form f_ajusta_fieldcat
*&---------------------------------------------------------------------*
*
Ajusta Fieldcat
*----------------------------------------------------------------------*
FORM f_ajusta_fieldcat TABLES t_fieldcat TYPE slis_t_fieldcat_alv.
DATA: lc_texto_l TYPE scrtext_l.
FIELD-SYMBOLS: <lfs_fieldcat> TYPE slis_fieldcat_alv.
LOOP AT t_fieldcat ASSIGNING <lfs_fieldcat>.
CASE <lfs_fieldcat>-fieldname.
WHEN 'ICON'.
<lfs_fieldcat>-seltext_s = <lfs_fieldcat>-seltext_m
=
<lfs_fieldcat>-seltext_l = <lfs_fieldcat>-reptext_ddic = 'cone'.
<lfs_fieldcat>-hotspot = 'X'.
WHEN 'MATNR'.
<lfs_fieldcat>-key
= 'X'.
<lfs_fieldcat>-hotspot = 'X'.
<lfs_fieldcat>-no_zero = 'X'.
ENDCASE.
ENDLOOP.
ENDFORM.

"f_ajusta_fieldcat

*&---------------------------------------------------------------------*
*& Form top_of_page
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM top_of_page.
CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'

EXPORTING
i_logo = 'ENJOYSAP_LOGO' "Transao: 0FPM002
i_logo = 'ZTESTE_LOGO'
it_list_commentary = it_header.

ENDFORM. "top_of_page

Você também pode gostar