Вы находитесь на странице: 1из 7

REPORT ZSAFENOVO NO STANDARD PAGE HEADING MESSAGE-ID ZS.

*----------------------------------------------------------------------*
* Declaraes
*----------------------------------------------------------------------*
TABLES: j_1bnfdoc,
j_1bnflin,
ZSAFMEMORY.
TYPES : BEGIN OF TYPE_REG,
EMPRESA(4) TYPE C,
HEX1
TYPE X,
DATINI(8) TYPE C,
HEX2
TYPE X,
NOTAFISCAL(6) TYPE C,
END OF TYPE_REG.
TYPES : BEGIN OF TYPE_REG_2,
EMPRESA(4)
TYPE C,
HEX1
TYPE X,
NOTAFISCAL(8) TYPE C,
HEX2
TYPE X,
PRODUTO(10)
TYPE C,
HEX3
TYPE X,
ITEM(4)
TYPE C,
HEX4
TYPE X,
preco_liquido(17) TYPE C,
END OF TYPE_REG_2.

DATA : H_ENVIO
TYPE TYPE_REG OCCURS 100 WITH HEADER LINE,
H_ENVIO_2
TYPE TYPE_REG_2 OCCURS 100 WITH HEADER LINE,
V_PARAM(6)
TYPE C,
P_UNIX(1)
TYPE C,
P_PC(1)
TYPE C,
P_DEF(1)
TYPE C,
P_PATH(128)
TYPE C,
P_SPRAS(1)
TYPE C,
P_KTOPL(4)
TYPE C,
P_NRARQ(8)
TYPE N,
V_CONT
TYPE I,
V_ERRO(130)
TYPE C,
VNOMEARQ(12) TYPE C,
V_ICPDTI(1)
TYPE C,
V_ARQUIVO(128) TYPE C,
VFORMATO(16)
TYPE P DECIMALS 2,
b1_bukrs_low LIKE j_1bnfdoc-bukrs,
b1_bukrs_high LIKE j_1bnfdoc-bukrs,
b1_brnch_low LIKE j_1bnfdoc-branch,
b1_brnch_high LIKE j_1bnfdoc-branch,
b1_pdate_low LIKE j_1bnfdoc-pstdat,
b1_pdate_high LIKE j_1bnfdoc-pstdat,
b1_cfop_low
LIKE j_1bnflin-cfop,
v1_arquivo TYPE string.

*----------------------------------------------------------------------*
* Principal
*----------------------------------------------------------------------*
PERFORM INIT.
PERFORM PROCESS.
*----------------------------------------------------------------------*
* Forms
*----------------------------------------------------------------------*
*&---------------------------------------------------------------------*
*&
Form INIT
*&---------------------------------------------------------------------*
FORM INIT.
CLEAR ZSAFMEMORY.
REFRESH H_ENVIO.
ENDFORM.
" INIT
*&---------------------------------------------------------------------*
*&
Form PROCESS
*&---------------------------------------------------------------------*
FORM PROCESS.
PERFORM
PERFORM
PERFORM
PERFORM

IMPORTAR_DADOS.
PROCESSAR_DADOS.
GRAVAR_DADOS.
GRAVAR_DADOS_1.

ENDFORM.

" PROCESS

*&---------------------------------------------------------------------*
*&
Form IMPORTAR_DADOS
*&---------------------------------------------------------------------*
FORM IMPORTAR_DADOS.
IMPORT P_UNIX
P_PC
P_PATH
P_SPRAS
P_KTOPL
P_NRARQ
P_DEF
TO
ZSAFMEMORY-UNIX
"Unix
ZSAFMEMORY-PC
"PC
ZSAFMEMORY-PATH
"Path
ZSAFMEMORY-SPRAS
"Lingua padro
ZSAFMEMORY-KTOPL
"Plano Padrao
ZSAFMEMORY-NRARQ
"Nr.Arquivo sequencial
ZSAFMEMORY-ZDEFAULT
"campo que ser perdido na ABAP MEMORY
FROM MEMORY ID 'ID0000'.
IMPORT b1_bukrs_low
b1_bukrs_high
p_def
TO
zsafmemory-bukrs_low
"Empresa - Low
zsafmemory-bukrs_high
"Empresa - High
zsafmemory-zdefault "campo que ser perdido na ABAP MEMORY *
FROM MEMORY ID 'ID0001'.
" * a ABAP MEMORY perde o ltimo campo
IMPORT b1_brnch_low

b1_brnch_high
p_def
TO
zsafmemory-brnch_low
"Filial - Low
zsafmemory-brnch_high
"Filial - High
zsafmemory-zdefault "campo que ser perdido na ABAP MEMORY *
FROM MEMORY ID 'ID0002'.
" * a ABAP MEMORY perde o ltimo campo
IMPORT b1_pdate_low
b1_pdate_high
p_def
TO
zsafmemory-date_low
"Periodo - Low
zsafmemory-date_high
"Periodo - High
zsafmemory-zdefault "campo que ser perdido na ABAP MEMORY *
FROM MEMORY ID 'ID0003'.
" * a ABAP MEMORY perde o ltimo campo
ENDFORM.

" IMPORTAR_DADOS

*&---------------------------------------------------------------------*
*&
Form PROCESSAR_DADOS
*&---------------------------------------------------------------------*
FORM PROCESSAR_DADOS.
SELECT * FROM j_1bnfdoc
WHERE
bukrs BETWEEN b1_bukrs_low AND b1_bukrs_high
AND credat BETWEEN b1_pdate_low AND b1_pdate_high.
PERFORM PREENCHER_TABELA_H_ENVIO.
SELECT * FROM j_1bnflin
WHERE
DOCNUM = j_1bnfdoc-DOCNUM.
PERFORM PREENCHER_TABELA_H_ENVIO_2. " capa
ENDSELECT.
endselect.
" PROCESSAR_DADOS
ENDFORM.
*&---------------------------------------------------------------------*
*&
Form GRAVAR_DADOS
*&---------------------------------------------------------------------*
FORM GRAVAR_DADOS.
CONDENSE P_PATH NO-GAPS.
CONCATENATE P_PATH 'safxteste1.txt' INTO V_ARQUIVO.
CONDENSE V_ARQUIVO NO-GAPS.
DESCRIBE TABLE H_ENVIO LINES V_CONT.
CLEAR VNOMEARQ.
VNOMEARQ = 'safxteste1.txt'.
PERFORM GRAVA_DADOS_ZSAFX IN PROGRAM ZSAFM000 USING P_NRARQ
' ' "Emp_low
' ' "Emp_high
' ' "Filial_low
' ' "filial_high
' ' "data_low
' ' "data_high
P_PATH

VNOMEARQ
V_CONT.
IF P_PC = 'X'.
CALL FUNCTION 'WS_FILE_DELETE'
EXPORTING
FILE
= V_ARQUIVO.
v1_arquivo = v_arquivo.
CALL FUNCTION 'GUI_DOWNLOAD'
EXPORTING
filename
= v1_arquivo
TABLES
data_tab
= h_envio
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.

IF SY-SUBRC NE 0.
MESSAGE S001 WITH SPACE.
EXIT.
ENDIF.
ELSE.
OPEN DATASET V_ARQUIVO FOR OUTPUT IN TEXT MODE MESSAGE V_ERRO.
IF SY-SUBRC EQ 0.
LOOP AT H_ENVIO.
TRANSFER H_ENVIO TO V_ARQUIVO.
ENDLOOP.
ELSE.
MESSAGE S001 WITH V_ERRO.
EXIT.
ENDIF.
CLOSE DATASET V_ARQUIVO.

ENDIF.
ENDFORM.

" GRAVAR_DADOS

*&---------------------------------------------------------------------*
*&
Form GRAVAR_DADOS
*&---------------------------------------------------------------------*
FORM GRAVAR_DADOS_1.
CONDENSE P_PATH NO-GAPS.
CONCATENATE P_PATH 'safxtestenovo.txt' INTO V_ARQUIVO.
CONDENSE V_ARQUIVO NO-GAPS.
DESCRIBE TABLE H_ENVIO_2 LINES V_CONT.
CLEAR VNOMEARQ.
VNOMEARQ = 'safxtestenovo.txt'.
PERFORM GRAVA_DADOS_ZSAFX IN PROGRAM ZSAFM000 USING P_NRARQ
' ' "Emp_low
' ' "Emp_high
' ' "Filial_low
' ' "filial_high
' ' "data_low
' ' "data_high
P_PATH
VNOMEARQ
V_CONT.
IF P_PC = 'X'.
CALL FUNCTION 'WS_FILE_DELETE'
EXPORTING
FILE
= V_ARQUIVO.
v1_arquivo = v_arquivo.
CALL FUNCTION 'GUI_DOWNLOAD'
EXPORTING
filename
= v1_arquivo
TABLES
data_tab
= h_envio_2
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
dp_timeout
file_not_found
dataprovider_exception
control_flush_error
OTHERS

=
=
=
=
=
=

17
18
19
20
21
22.

IF SY-SUBRC NE 0.
MESSAGE S001 WITH SPACE.
EXIT.
ENDIF.
ELSE.
OPEN DATASET V_ARQUIVO FOR OUTPUT IN TEXT MODE MESSAGE V_ERRO.
IF SY-SUBRC EQ 0.
LOOP AT H_ENVIO.
TRANSFER H_ENVIO TO V_ARQUIVO.
ENDLOOP.
ELSE.
MESSAGE S001 WITH V_ERRO.
EXIT.
ENDIF.
CLOSE DATASET V_ARQUIVO.
ENDIF.
ENDFORM.

" GRAVAR_DADOS

*----------------------------------------------------------------------*
* form preencher_tabela_h_envio
*----------------------------------------------------------------------*
FORM PREENCHER_TABELA_H_ENVIO.
CLEAR H_ENVIO.
H_ENVIO-DATINI = j_1bnfdoc-CREDAT.
H_ENVIO-EMPRESA = j_1bnfdoc-BUKRS.
H_ENVIO-NOTAFISCAL = j_1bnfdoc-NFNUM.
H_ENVIO-HEX1
APPEND H_ENVIO.

= H_ENVIO-HEX2 = '09'.

ENDFORM.
FORM PREENCHER_TABELA_H_ENVIO_2.
CLEAR H_ENVIO_2.

H_ENVIO_2-empresa = j_1bnfdoc-bukrs.
H_ENVIO_2-notafiscal = j_1bnfdoc-nfnum.
H_ENVIO_2-produto = j_1bnflin-matnr+10.
H_ENVIO_2-item = j_1bnflin-itmnum+5.
VFORMATO = j_1bnflin-netpr * 100.
H_ENVIO_2-preco_liquido = VFORMATO * 100.
unpack VFORMATO to H_ENVIO_2-preco_liquido.

H_ENVIO_2-HEX1 = H_ENVIO_2-HEX2 = H_ENVIO_2-HEX3 = H_ENVIO_2-HEX4 = '09'


.
APPEND H_ENVIO_2.
ENDFORM.

" PREENCHER_TABELA_H_ENVIO

Вам также может понравиться