Você está na página 1de 5

***

*& Report ZP_RELATORIO_RETORNO_NF ***


*& ***
*&-------------------------------------------------------------------------***
*** W3 - PROCWORK ***
***------------------------------------------------------------------------***
*** Programa : ZP_RELATORIO_RETORNO_NF ***
*** Módulo : ***
*** Transação: ***
*** Sapscript: ***
*** Descrição: Relatório de Devolução de NF ***
*** ***
*** Autor: Júlio César Vieira ***
*** ***
***Histórico de Alterações: ***
***------------------------------------------------------------------------***
*** Data | Change # | Autor | Alteração ***
***------------------------------------------------------------------------***
*** 27/12/2006 | DEVK901631 | Júlio Vieira | Inicio Desenvolvimento ***
***
*** ***
******************************************************************************
REPORT zp_relatorio_retorno_nf.

*&---------------------------------------------------------------------*
* Tabelas
*&---------------------------------------------------------------------*
TABLES: j_1bnfdoc,
j_1bnflin.

*&---------------------------------------------------------------------*
* Tabelas Internas
*&---------------------------------------------------------------------*

DATA: BEGIN OF ti_dados OCCURS 0,

credat LIKE j_1bnfdoc-credat,


docnum LIKE j_1bnfdoc-docnum,
series LIKE j_1bnfdoc-series,
itmnum LIKE j_1bnflin-itmnum,
matnr LIKE j_1bnflin-matnr,
docref LIKE j_1bnflin-docref,
itmref LIKE j_1bnflin-itmref,
menge LIKE j_1bnflin-menge,
netpr LIKE j_1bnflin-netpr,
netwr LIKE j_1bnflin-netwr,
data_psa LIKE j_1bnfdoc-credat,

END OF ti_dados.

DATA: BEGIN OF ti_dados2 OCCURS 0,


campo1 TYPE c,
campo2(10) TYPE c,
campo3(5) TYPE c,
campo4(6) TYPE c,
campo5(2) TYPE c,
campo6(2) TYPE c,
campo7(2) TYPE c,
campo8(3) TYPE c,
campo9(3) TYPE c,
campo10(10) TYPE c,
campo11(2) TYPE c,
campo12(12) TYPE c,
campo13(6) TYPE c,
campo14(3) TYPE c,
campo15(5) TYPE c,
campo16(10) TYPE c,
campo17(12) TYPE c,
campo18(14) TYPE c,
campo19(3) TYPE c,
campo20(14) TYPE c,
campo21(3) TYPE c,
campo22(14) TYPE c,
campo23(3) TYPE c,
campo24(14) TYPE c,
campo25(3) TYPE c,
campo26(14) TYPE c,
campo27(4) TYPE c,
campo28(2) TYPE c,
campo29(6) TYPE c,
campo30(2) TYPE c,
END OF ti_dados2.

*&---------------------------------------------------------------------*
* Variáveis
*&---------------------------------------------------------------------*
DATA: v_aux1(13) TYPE p DECIMALS 2,
v_aux2(13) TYPE p DECIMALS 2,
v_aux3(13) TYPE p DECIMALS 2,
v_aux4(200) TYPE c,
v_aux5(10) TYPE c,
v_docref LIKE j_1bnfdoc-docnum.

*&---------------------------------------------------------------------*
* Constantes
*&---------------------------------------------------------------------*

*&---------------------------------------------------------------------*
* Parâmetros de Seleção
*&---------------------------------------------------------------------*
SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-001.
SELECT-OPTIONS: p_data FOR j_1bnfdoc-credat.
PARAMETERS: p_caminh LIKE rlgrap-filename.
SELECTION-SCREEN END OF BLOCK b1.

*&---------------------------------------------------------------------*
* Lógica Principal
*&---------------------------------------------------------------------*

PERFORM verifica_endereco.

PERFORM ler_dados.

PERFORM monta_tabela.
PERFORM cria_arquivo.

*&---------------------------------------------------------------------*
* FORMS
*&---------------------------------------------------------------------*
*&---------------------------------------------------------------------*
*& Form ler_dados
*&---------------------------------------------------------------------*
FORM ler_dados .

SELECT a~docnum a~credat a~series b~itmnum b~matnr b~docref b~itmref b~menge


b~netpr b~netwr
INTO (ti_dados-docnum, ti_dados-credat, ti_dados-series, ti_dados-itmnum,
ti_dados-matnr,
ti_dados-docref, ti_dados-itmref, ti_dados-menge, ti_dados-netpr, ti_dados-
netwr)
FROM j_1bnfdoc AS a
INNER JOIN j_1bnflin AS b
ON a~docnum EQ b~docnum
WHERE a~nftype = 'E4'
AND a~credat IN p_data.
APPEND ti_dados.
ENDSELECT.

IF NOT sy-subrc IS INITIAL.

MESSAGE 'Não foram encontrados dados com a data informada!' TYPE 'I'.
STOP.

ENDIF.

ENDFORM. " ler_dados

*&---------------------------------------------------------------------*
*& Form monta_tabela
*&---------------------------------------------------------------------*
FORM monta_tabela .

LOOP AT ti_dados.

CLEAR: v_aux1, v_aux2, v_aux3, ti_dados2.

v_docref = ti_dados-docref.

SELECT SINGLE credat FROM j_1bnfdoc


INTO ti_dados-data_psa
WHERE docnum EQ v_docref.

ti_dados2-campo1 = ''.
WRITE ti_dados-credat TO ti_dados2-campo2 DD/MM/YYYY.
REPLACE '.' WITH '/' INTO ti_dados2-campo2.
REPLACE '.' WITH '/' INTO ti_dados2-campo2.
ti_dados2-campo3 = ''.
ti_dados2-campo4 = ti_dados-docnum+4(6).
ti_dados2-campo5 = ''.
ti_dados2-campo6 = ti_dados-series+1(2).
ti_dados2-campo7 = ''.
ti_dados2-campo8 = ti_dados-itmnum+3(3).
ti_dados2-campo9 = ''.
ti_dados2-campo10 = ti_dados-data_psa.
ti_dados2-campo11 = ''.
ti_dados2-campo12 = ti_dados-docref.
ti_dados2-campo13 = ''.
ti_dados2-campo14 = ti_dados-itmref+3(3).
ti_dados2-campo15 = ''.
ti_dados2-campo16 = ti_dados-matnr+8(10).
ti_dados2-campo17 = ''.

v_aux1 = ti_dados-menge.
ti_dados2-campo18 = v_aux1.
REPLACE '.' WITH ',' INTO ti_dados2-campo18.

ti_dados2-campo19 = ''.

v_aux2 = ti_dados-netpr.
ti_dados2-campo20 = v_aux2.
REPLACE '.' WITH ',' INTO ti_dados2-campo20.

ti_dados2-campo21 = ''.

v_aux3 = ti_dados-netwr.
ti_dados2-campo22 = v_aux3.
REPLACE '.' WITH ',' INTO ti_dados2-campo22.

ti_dados2-campo23 = ''.
ti_dados2-campo24 = ',00'.
ti_dados2-campo25 = ''.
ti_dados2-campo26 = ',00'.
ti_dados2-campo27 = ''.
ti_dados2-campo28 = '00'.
ti_dados2-campo29 = ''.
ti_dados2-campo30 = '00'.
*
APPEND ti_dados2.

ENDLOOP.

ENDFORM. " monta_tabela

*&---------------------------------------------------------------------*
*& Form cria_arquivo
*&---------------------------------------------------------------------*
FORM cria_arquivo .

CALL FUNCTION 'WS_DOWNLOAD'


EXPORTING
filename = p_caminh
filetype = 'ASC'
TABLES
data_tab = ti_dados2
EXCEPTIONS
file_open_error = 1
file_write_error = 2
invalid_filesize = 3
invalid_type = 4
no_batch = 5
unknown_error = 6
invalid_table_width = 7
gui_refuse_filetransfer = 8
customer_error = 9
no_authority = 10
OTHERS = 11.
.
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. " cria_arquivo


*&---------------------------------------------------------------------*
*& Form verifica_endereco
*&---------------------------------------------------------------------*
FORM verifica_endereco .

DATA text TYPE string.


text = `1,000,000.00`.
TRANSLATE text USING '.,,.'.

IF p_caminh IS INITIAL.

MESSAGE 'Digitar o caminho e nome do arquivo texto!' TYPE 'I'.


STOP.
ELSE.

TRANSLATE p_caminh TO UPPER CASE .

SPLIT p_caminh AT '.' INTO v_aux4 v_aux5.

IF v_aux5 <> 'TXT'.

MESSAGE 'Tipo de aquivo diferente de TXT' TYPE 'I'.


STOP.

ENDIF.

ENDIF.

ENDFORM. " verifica_endereco

Você também pode gostar