Escolar Documentos
Profissional Documentos
Cultura Documentos
-*
*& Report ZEXER7
*&
*&--------------------------------------------------------------------
-*
*&Criado por: Lucas Guimarães Santos
*&data: 21 .dezembro .2017
*&--------------------------------------------------------------------
-*
REPORT zexer7 NO STANDARD PAGE HEADING MESSAGE-ID zsd.
INCLUDE <icon>.
INCLUDE <list>.
TYPE-POOLS: vrm,
gfw,
slis.
TABLES: ekko,
ekpo,
mara.
TYPES: BEGIN OF y_saida,
ebeln LIKE ekko-ebeln, "Nº do documento de compras
bukrs LIKE ekko-bukrs, "Empresa
bstyp LIKE ekko-bstyp, "Categoria do documento de compras
bsart LIKE ekko-bsart, "Tipo de documento de compras
statu LIKE ekko-statu, "Status do documento de compra
ernam LIKE ekko-ernam, "Nome do responsável que adicionou o ob
jeto
lifnr LIKE ekko-lifnr, "Nº conta do fornecedor
spras LIKE ekko-spras, "Código de idioma
kdate LIKE ekko-kdate, "Fim da validade~
ebelp LIKE ekpo-ebelp,
matnr LIKE ekpo-matnr, "Nº do material
werks LIKE ekpo-werks, "Centro
matkl LIKE ekpo-matkl, "Grupo de mercadorias
ktmng LIKE ekpo-ktmng, "Quantidade prevista
peinh LIKE ekpo-peinh, "Unidade de preço
ersda LIKE mara-ersda, "Data de criação
mtart LIKE mara-mtart, "Tipo de material
END OF y_saida.
TYPES: BEGIN OF y_ekko, "Cabeçalho do documento de compra
ebeln LIKE ekko-ebeln, "Nº do documento de compras
bukrs LIKE ekko-bukrs, "Empresa
bstyp LIKE ekko-bstyp, "Categoria do documento de compras
bsart LIKE ekko-bsart, "Tipo de documento de compras
statu LIKE ekko-statu, "Status do documento de compra
ernam LIKE ekko-ernam, "Nome do responsável que adicionou o ob
jeto
lifnr LIKE ekko-lifnr, "Nº conta do fornecedor
spras LIKE ekko-spras, "Código de idioma
kdate LIKE ekko-kdate, "Fim da validade
END OF y_ekko,
BEGIN OF y_ekpo,
ebeln LIKE ekpo-ebeln, "Nº do documento de compras
statu LIKE ekpo-statu, "Status da solicitação de cotação
matnr LIKE ekpo-matnr, "Nº do material
bukrs LIKE ekpo-bukrs, "Empresa
werks LIKE ekpo-werks, "Centro
matkl LIKE ekpo-matkl, "Grupo de mercadorias
ktmng LIKE ekpo-ktmng, "Quantidade prevista
peinh LIKE ekpo-peinh, "Unidade de preço
END OF y_ekpo,
BEGIN OF y_mara, "Dados gerais de material
matnr LIKE mara-matnr, "Nº do material
ersda LIKE mara-ersda, "Data de criação
ernam LIKE mara-ernam, "Nome do responsável que adicionou o ob
jeto
mtart LIKE mara-mtart, "Tipo de material
END OF y_mara.
*=========================================================
*=========================================================
DATA: t_saida TYPE TABLE OF y_saida WITH HEADER LINE,
wa_saida TYPE y_saida,
t_ekko TYPE TABLE OF y_ekko WITH HEADER LINE,
wa_ekko TYPE y_ekko,
t_ekpo TYPE TABLE OF y_ekpo WITH HEADER LINE,
wa_ekpo TYPE y_ekpo,
t_mara TYPE TABLE OF y_mara WITH HEADER LINE,
wa_mara TYPE y_mara.
DATA: t_linecolor TYPE slis_specialcol_alv OCCURS 0 WITH HEADER LINE
,
t_listheader TYPE slis_t_listheader,
t_fieldcat TYPE slis_t_fieldcat_alv WITH HEADER LINE
,
t_sort TYPE slis_sortinfo_alv OCCURS 0 WITH HEADER LINE
.
DATA: v_listheader TYPE slis_listheader,
v_layout TYPE slis_layout_alv,
v_print TYPE slis_print_alv,
v_variante TYPE disvariant.
DATA: v_repid LIKE sy-repid.
*=========================================================
*=========================================================
START-OF-SELECTION.
SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-003.
SELECT-OPTIONS: s_ebeln FOR ekko-ebeln,
s_bukrs FOR ekko-bukrs,
s_statu FOR ekko-statu,
s_ersda FOR mara-ersda,
s_ernam FOR ekko-ernam,
s_matnr FOR ekpo-matnr,
s_werks FOR ekpo-werks.
SELECTION-SCREEN END OF BLOCK b1.
SELECTION-SCREEN BEGIN OF BLOCK b2 WITH FRAME TITLE text-002.
PARAMETERS: p_data RADIOBUTTON GROUP g1,
p_nome RADIOBUTTON GROUP g1,
p_mate RADIOBUTTON GROUP g1 DEFAULT 'X'.
SELECTION-SCREEN END OF BLOCK b2.
SELECTION-SCREEN BEGIN OF BLOCK b3 WITH FRAME TITLE text-001.
PARAMETERS:" p_down AS CHECKBOX USER-COMMAND uc1,
p_file TYPE rlgrap-filename MODIF ID dld . "OBLIGATORY.
SELECTION-SCREEN END OF BLOCK b3.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_file.
PERFORM z_pesquisa_de_diretorio CHANGING p_file.
START-OF-SELECTION.
"IF p_down = 'X' AND p_file IS INITIAL.
"STOP.
"ENDIF.
PERFORM selecionar_dados.
IF t_saida[] IS NOT INITIAL.
PERFORM preencher_alv.
PERFORM ordenar_dados.
"IF p_down = 'X'.
" PERFORM download_do_arquivo.
" ENDIF.
PERFORM chamar_alv.
ELSE.
MESSAGE i012.
ENDIF.
END-OF-SELECTION.
PERFORM limpar_variaveis.
*&--------------------------------------------------------------------
-*
*& Form SELECIONAR_DADOS
*&--------------------------------------------------------------------
-*
* text
*---------------------------------------------------------------------
-*
* --> p1 text
* <-- p2 text
*---------------------------------------------------------------------
-*
FORM selecionar_dados .
SELECT ekko~ebeln ekko~bukrs ekko~bstyp ekko~bsart ekko~statu ekko~
ernam ekko~lifnr ekko~spras
ekko~kdate
ekpo~ebelp ekpo~matnr ekpo~werks ekpo~matkl ekpo~ktmng ekpo~
peinh mara~ersda mara~mtart
INTO TABLE t_saida
FROM ekko
INNER JOIN ekpo ON ekko~ebeln EQ ekpo~ebeln
INNER JOIN mara ON ekpo~matnr EQ mara~matnr
WHERE ekko~ebeln IN s_ebeln
AND ekko~bukrs IN s_bukrs
AND ekko~statu IN s_statu
AND ekko~ernam IN s_ernam
AND ekpo~matnr IN s_matnr
AND ekpo~werks IN s_werks
AND mara~ersda IN s_ersda
AND ekko~spras EQ sy-langu.
IF t_saida[] IS INITIAL.
MESSAGE i001.
ENDIF.
ENDFORM. " SELECIONAR_DADOS
*&--------------------------------------------------------------------
-*
*& Form PREENCHER_ALV
*&--------------------------------------------------------------------
-*
* text
*---------------------------------------------------------------------
-*
* --> p1 text
* <-- p2 text
*---------------------------------------------------------------------
-*
FORM preencher_alv .
PERFORM preenche_fieldcat USING: 'EBELN' '' 'Nº do documento de
compras ' 'C' '10' '' '' 'C400',
'EBELP' '' 'Item'
'C' '4' '' '' '',
'BUKRS' '' 'Empresa'
'C' '4' '' '' '',
'BSTYP' '' 'Categoria do docume
nto de compras' 'C' '1' '' '' '',
'BSART' '' 'Tipo de documento d
e compras' 'C' '4' '' '' '',
'STATU' '' 'Status do documento
de compra' 'C' '1' '' '' '',
'ERNAM' '' 'Nome do responsável
que adicionou o objeto' 'C' '12' '' '' '',
'LIFNR' '' 'Nº conta do fornece
dor' 'C' '10' '' '' '',
'SPRAS' '' 'Código de idioma'
'LANG' '1' '' '' '',
'KDATE' '' 'Fim da validade'
'DAT' '8' '' '' '',
'MATNR' '' 'Nº do material'
'' '' '' 'X' 'C300',
'WERKS' '' 'Centro'
'' '' '' '' '',
'MATKL' '' 'Grupo de mercadoria
s' '' '' '' '' '',
'KTMNG' '' 'Quantidade prevista
' '' '' '' '' '',
'PEINH' '' 'Unidade de preço'
'' '' '' '' '',
'ERSDA' '' 'Data de criação'
'' '' '' '' '',
'MTART' '' 'Tipo de material'
'' '' '' '' ''.
ENDFORM. " PREENCHER_ALV
*&--------------------------------------------------------------------
-*
*& Form PREENCHE_FILD
*&--------------------------------------------------------------------
-*
* text
*---------------------------------------------------------------------
-*
* -->P_0522 text
* -->P_0523 text
* -->P_0524 text
* -->P_0525 text
* -->P_0526 text
* -->P_0527 text
* -->P_0528 text
* -->P_0529 text
*---------------------------------------------------------------------
-*
FORM preenche_fieldcat USING
p_field
p_dict
p_text
p_type " verifica o tipo do camp
o
p_output
p_key " verifica se o campo é c
have
p_hotspot " faz de um campo um link
p_emphasize. " colocar cor em uma colu
na
CLEAR t_fieldcat.
t_fieldcat-fieldname = p_field. " Lê os campos
t_fieldcat-tabname = 'T_SAIDA'. " Nome da minha tabela
IF p_dict IS INITIAL.
t_fieldcat-reptext_ddic = p_text. " Lê o nome dos meus campos
t_fieldcat-inttype = p_type. " Lê o tipo do meu campo
t_fieldcat-outputlen = p_output. " Lê o tamanho do meu campo
ELSE.
t_fieldcat-rollname = p_dict.
ENDIF.
t_fieldcat-key(1) = p_key.
IF p_hotspot = 'X'. " Verifica se o campo do me
u fieldcat esta marcado com X
t_fieldcat-hotspot = 'X'.
ENDIF.
t_fieldcat-emphasize = p_emphasize.
APPEND t_fieldcat.
ENDFORM. " PREENCHE_FILD
*&--------------------------------------------------------------------
-*
*& Form ORDENAR_DADOS
*&--------------------------------------------------------------------
-*
* text
*---------------------------------------------------------------------
-*
* --> p1 text
* <-- p2 text
*---------------------------------------------------------------------
-*
FORM ordenar_dados .
IF p_data = 'X'.
SORT t_saida BY ersda.
ELSEIF p_nome = 'X'.
SORT t_saida BY ernam.
ELSEIF p_mate = 'X'.
SORT t_saida BY matnr.
ENDIF.
ENDFORM. " ORDENAR_DADOS
*&--------------------------------------------------------------------
-*
*& Form CHAMAR_ALV
*&--------------------------------------------------------------------
-*
* text
*---------------------------------------------------------------------
-*
* --> p1 text
* <-- p2 text
*---------------------------------------------------------------------
-*
FORM chamar_alv .
v_layout-zebra = 'X'. "Layout Zebra
v_layout-expand_all = 'X'. "Abrir subitens
v_layout-colwidth_optimize = 'X'. "Largura melhor possível
* V_LAYOUT-BOX_FIELDNAME = 'SEL'. "Coluna Selecionável
* V_LAYOUT-EDIT = ' '. "Permitir a edição
* v_print-no_print_listinfos = 'X'.
v_variante = 'TESTE'.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
i_callback_program = sy-repid "sempre colocar sy-repid
i_grid_title = 'ALV QUE O JOSÉ MANDOU FAZER COM A MA
RA' "Título do ALV
i_background_id = 'ALV_BACKGROUND'
"background do Header Line
i_callback_top_of_page = 'Z_TOP_OF_PAGE'
i_callback_pf_status_set = 'ZF_PF_STATUS' "CRIAR BOTÕES E OS EVE
NTOS DOS BOTÕES
i_callback_user_command = 'ZF_USER_COMMAND'
it_fieldcat = t_fieldcat[]
is_layout = v_layout
it_sort = t_sort[]
* I_DEFAULT = 'X'
* I_SAVE = 'A'
is_variant = v_variante
* is_print = v_print
TABLES
t_outtab = t_saida
EXCEPTIONS
program_error = 1
OTHERS = 2.
* SET PF-STATUS 'PF_STATUS1'.
ENDFORM. " CHAMAR_ALV
*&--------------------------------------------------------------------
-*
*& Form zf_user_command
*&--------------------------------------------------------------------
-*
* text
*---------------------------------------------------------------------
-*
* -->P_EVENTO_TELA text
* -->P_SELFIELD text
*---------------------------------------------------------------------
-*
FORM zf_user_command USING p_evento_tela TYPE sy-ucomm
p_selfield TYPE slis_selfield. " SY-
UCOMM É O EVENTO QUE O USUÁRIO FEZ NA TELA
IF sy-subrc = 0.
ENDIF.
DATA: vl_text TYPE ug_txtlg.
CASE p_evento_tela.
WHEN 'DOWNLOAD'.
IF p_file IS INITIAL.
MESSAGE i013.
CALL FUNCTION 'UR_CF_POPUP_TEXT_INPUT'
EXPORTING
i_title = 'Digite um nome para o arquivo!!'
i_text = ' '
IMPORTING
e_text = vl_text
EXCEPTIONS
cancelled = 1
OTHERS = 2.
IF sy-subrc <> 0.
MESSAGE: i014.
LEAVE TO SCREEN 0.
ENDIF.
p_file = vl_text.
ELSE.
PERFORM download_do_arquivo.
ENDIF.
WHEN '&IC1'. "comando stan
der para hotspot
CASE p_selfield-sel_tab_field. "compo que es
ta sendo selecionado
CHECK p_selfield-value IS NOT INITIAL. "Checar se o
campo tem valor
WHEN 'T_SAIDA-MATNR'.
SET PARAMETER ID 'MAT' FIELD p_selfield-value. "colocando aç
ão no campo
CALL TRANSACTION 'MM43'.
WHEN 'T_SAIDA-ERNAM'.
SET PARAMETER ID 'XUS' FIELD p_selfield-value.
LEAVE TO TRANSACTION 'SU01'.
ENDCASE.
WHEN 'E'.
LEAVE TO SCREEN 0.
ENDCASE.
ENDFORM. "zf_user_command
*&--------------------------------------------------------------------
-*
*& Form LIMPAR_VARIÁVEIS
*&--------------------------------------------------------------------
-*
* text
*---------------------------------------------------------------------
-*
* --> p1 text
* <-- p2 text
*---------------------------------------------------------------------
-*
*&--------------------------------------------------------------------
-*
*& Form DOWNLOAD_DO_ARQUIVO
*&--------------------------------------------------------------------
-*
* text
*---------------------------------------------------------------------
-*
* --> p1 text
* <-- p2 text
*---------------------------------------------------------------------
-*
FORM download_do_arquivo .
DATA: lv_file TYPE string.
lv_file = p_file.
CALL FUNCTION 'GUI_DOWNLOAD'
EXPORTING
* BIN_FILESIZE =
filename = lv_file
filetype = 'ASC'
* APPEND = ' '
write_field_separator = ' '
* HEADER = '00'
* TRUNC_TRAILING_BLANKS = ' '
* WRITE_LF = 'X'
* COL_SELECT = ' '
* COL_SELECT_MASK = ' '
* DAT_MODE = ' '
* CONFIRM_OVERWRITE = ' '
* NO_AUTH_CHECK = ' '
* CODEPAGE = ' '
* IGNORE_CERR = ABAP_TRUE
* REPLACEMENT = '#'
* WRITE_BOM = ' '
* TRUNC_TRAILING_BLANKS_EOL = 'X'
* WK1_N_FORMAT = ' '
* WK1_N_SIZE = ' '
* WK1_T_FORMAT = ' '
* WK1_T_SIZE = ' '
* WRITE_LF_AFTER_LAST_LINE = ABAP_TRUE
* SHOW_TRANSFER_STATUS = ABAP_TRUE
* VIRUS_SCAN_PROFILE = '/SCET/GUI_DOWNLOAD'
* IMPORTING
* FILELENGTH =
TABLES
data_tab = t_saida
* FIELDNAMES =
EXCEPTIONS
file_write_error = 1
no_batch = 2
gui_refuse_filetransfer = 3
invalid_type = 4
no_authority = 5
unknown_error = 6
header_not_allowed = 7
separator_not_allowed = 8
filesize_not_allowed = 9
header_too_long = 10
dp_error_create = 11
dp_error_send = 12
dp_error_write = 13
unknown_dp_error = 14
access_denied = 15
dp_out_of_memory = 16
disk_full = 17
dp_timeout = 18
file_not_found = 19
dataprovider_exception = 20
control_flush_error = 21
OTHERS = 22
.
ENDFORM. " DOWNLOAD_DO_ARQUIVO
*&--------------------------------------------------------------------
-*
*& Form limpar_variaveis
*&--------------------------------------------------------------------
-*
* text
*---------------------------------------------------------------------
-*
FORM limpar_variaveis .
CLEAR:t_saida[],
wa_saida,
t_ekko[],
wa_ekko ,
t_ekpo[],
wa_ekpo ,
t_mara[],
wa_mara,
t_linecolor,
t_listheader,
t_fieldcat,
t_sort,
v_listheader,
v_layout,
v_print,
v_variante,
v_repid.
ENDFORM. " LIMPAR_VARIÁVEIS
*-----------------------------------------------------------*
*& Form F_ALV_PF_vencUS
*&--------------------------------------------------------------------
-*
* text
*---------------------------------------------------------------------
-*
FORM zf_pf_status USING pi_extab TYPE kkblo_t_extab.
* SET PF-STATUS 'STATUS' EXCLUDING pi_extab.
SET PF-STATUS 'PF_STATUS'.
ENDFORM. "ZF_ALV_PF_vencUS
*&--------------------------------------------------------------------
-*
*& Form z_top_of_page
*&--------------------------------------------------------------------
-*
* text
*---------------------------------------------------------------------
-*
FORM z_top_of_page.
DATA: l_datum(17) TYPE c.
DATA: l_uzeit(17) TYPE c.
DATA: l_uname(20) TYPE c.
CLEAR t_listheader[].
CLEAR v_listheader.
v_listheader-typ = 'H'.
v_listheader-info = text-013.
APPEND v_listheader TO t_listheader.
CONCATENATE 'Data' ':' sy-datum+6(2) '.' sy-datum+4(2) '.' sy-
datum(4)
INTO l_datum.
v_listheader-typ = 'S '.
v_listheader-info = l_datum.
APPEND v_listheader TO t_listheader.
CONCATENATE 'horário' ': ' sy-uzeit(2) ':' sy-uzeit+2(2) ':' sy-
uzeit+4(2)
INTO l_uzeit.
v_listheader-typ = 'S'.
v_listheader-info = l_uzeit.
APPEND v_listheader TO t_listheader.
CONCATENATE 'Usuário: ' sy-uname INTO l_uname SEPARATED BY space.
v_listheader-typ = 'S'.
v_listheader-info = l_uname.
APPEND v_listheader TO t_listheader.
CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
EXPORTING
i_logo = 'MARISA_LOGO'
it_list_commentary = t_listheader.
ENDFORM. "Z_TOP_OF_PAGE
*&--------------------------------------------------------------------
-*
*& Form Z_PESQUISA_DE_DIRETORIO
*&--------------------------------------------------------------------
-*
* text
*---------------------------------------------------------------------
-*
* <--P_P_FILE text
*---------------------------------------------------------------------
-*
FORM z_pesquisa_de_diretorio CHANGING p_file.
CALL FUNCTION 'KD_GET_FILENAME_ON_F4'
CHANGING
file_name = p_file
EXCEPTIONS
mask_too_long = 1
other = 2.
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. " Z_PESQUISA_DE_DIRETORIO