Professional Documents
Culture Documents
*& Include
ZXDTAU01
*&---------------------------------------------------------------------*
*----------------------------------------------------------------------*
* Empresa..: Sonda ProcWork
*
* Tipo.....: User Exit
*
* Mdulo...: FI
*
* Descrio: Pagamento de Concessionrias e outras guias
*
* Autor....: Alex Tech (Ajustes)
*
* Data.....: 16/12/2010
*
* -------------------------------------------------------------------- *
* Histrico das modificaes
* -------------------------------------------------------------------- *
* | Autor | Data
| Request
| Comentrio
* -------------------------------------------------------------------- *
* -------------------------------------------------------------------- *
*------------------------------------------------------------------*
* Declarao de Tipos
*------------------------------------------------------------------*
TYPE-POOLS: pbr99.
TYPES : BEGIN OF ty_reguh,
laufd LIKE reguh-laufd,
rzawe LIKE reguh-rzawe,
vblnr LIKE reguh-vblnr,
zbukr LIKE reguh-zbukr,
rbetr LIKE reguh-rbetr,
name1 LIKE reguh-name1,
END OF ty_reguh,
BEGIN OF ty_regup,
zbukr LIKE regup-zbukr,
vblnr LIKE regup-vblnr,
belnr LIKE regup-belnr,
zfbdt LIKE regup-zfbdt,
zbd1t LIKE regup-zbd1t,
esrnr LIKE regup-esrnr,
esrre LIKE regup-esrre,
laufd LIKE regup-laufd,
gjahr LIKE regup-gjahr,
lifnr LIKE reguh-lifnr,
END OF ty_regup.
TYPES: BEGIN OF ty_line.
INCLUDE STRUCTURE tline.
TYPES: END OF ty_line.
TYPES: BEGIN OF ty_bseg,
bukrs LIKE bseg-bukrs,
belnr LIKE bseg-belnr,
gjahr LIKE bseg-gjahr,
sgtxt LIKE bseg-sgtxt,
zbd1t LIKE bseg-zbd1t,
zfbdt LIKE bseg-zfbdt,
END OF ty_bseg.
*------------------------------------------------------------------*
* Declarao de Tabelas
*------------------------------------------------------------------*
DATA: t_arq(1000)
TYPE c
OCCURS 0 WITH HEADER LINE,
t_itau_detail(10000) TYPE c
OCCURS 0 WITH HEADER LINE,
t_rodape(10000)
TYPE c
OCCURS 0 WITH HEADER LINE,
t_regup
TYPE ty_regup OCCURS 0 WITH HEADER LINE,
t_reguh
TYPE ty_reguh OCCURS 0 WITH HEADER LINE,
t_line
TYPE ty_line OCCURS 0 WITH HEADER LINE,
t_bseg
TYPE ty_bseg OCCURS 0 WITH HEADER LINE.
*------------------------------------------------------------------*
* Declarao de Variveis
*------------------------------------------------------------------*
DATA: w_arq(10000)
TYPE c,
w_inicio(1000)
TYPE c,
w_cabecalho(1000) TYPE c,
w_rodape(1000)
TYPE c,
w_fim(1000)
TYPE c,
v_filename
TYPE string,
v_rbetr
LIKE reguh-rbetr,
v_vblnr
LIKE regup-vblnr,
v_gjahr
LIKE bseg-gjahr,
v_zfbdt
LIKE bseg-zfbdt,
v_tabix
LIKE sy-tabix,
v_rbetr_c(13)
TYPE c,
v_lenght
TYPE i,
v_peri
TYPE c LENGTH 2,
v_tdname
LIKE thead-tdname,
v_tdid
TYPE thead-tdid,
v_tdspras
TYPE thead-tdspras,
v_tdobject
TYPE thead-tdobject,
v_sgtxt(14)
TYPE c,
v_name1
LIKE lfa1-name1,
v_cnpj
TYPE pbr99_cgc,
v_dv
TYPE pbr99_dig,
v_bukrs
LIKE t001-bukrs,
v_adrnr
LIKE t001-adrnr.
*------------------------------------------------------------------*
* Processamento
*------------------------------------------------------------------*
v_tdid
= '0001'.
v_tdspras = 'P'.
v_tdobject = 'DOC_ITEM'.
SELECT laufd rzawe vblnr zbukr rbetr name1
FROM reguh INTO TABLE t_reguh
WHERE laufi = t_regut-laufi
AND laufd = t_regut-laufd
AND zbukr = t_regut-zbukr
AND xvorl = space.
IF sy-subrc EQ 0.
SELECT zbukr vblnr belnr zfbdt zbd1t esrnr esrre laufd gjahr lifnr
FROM regup INTO TABLE t_regup
FOR ALL ENTRIES IN t_reguh
WHERE laufi = t_regut-laufi
AND laufd = t_regut-laufd
AND zbukr = t_regut-zbukr
v_gjahr = t_regup-laufd(4).
v_gjahr = t_regup-gjahr.
READ TABLE t_bseg WITH KEY bukrs = t_regup-zbukr
belnr = t_regup-belnr
gjahr = v_gjahr BINARY SEARCH.
CONCATENATE t_regut-zbukr t_regup-belnr v_gjahr
'001' INTO v_tdname.
CALL FUNCTION 'READ_TEXT'
EXPORTING
id
= v_tdid
language = v_tdspras
name
= v_tdname
object = v_tdobject
TABLES
lines
= t_line.
READ TABLE t_line INDEX 1.
v_lenght = STRLEN( t_line-tdline ).
t_itau_detail+13(1)
= 'O'.
UNPACK '0' TO t_itau_detail+14(3).
= t_reguh-name1.
v_vblnr = t_regup-vblnr.
v_gjahr = t_regup-laufd(4).
t_itau_detail+95(2)
t_itau_detail+97(2)
t_itau_detail+99(4)
t_itau_detail+103(3)
=
=
=
=
t_reguh-laufd+6(2).
t_reguh-laufd+4(2).
t_reguh-laufd(4).
'REA'.
CLEAR t_itau_detail+106(15).
MOVE t_reguh-rbetr
UNPACK v_rbetr_c
TO v_rbetr_c.
TO t_itau_detail+121(15).
v_zfbdt
t_itau_detail+136(2)
t_itau_detail+138(2)
t_itau_detail+140(4)
UNPACK v_rbetr_c
=
=
=
=
t_bseg-zfbdt + t_bseg-zbd1t.
v_zfbdt+6(2).
v_zfbdt+4(2).
v_zfbdt(4).
TO t_itau_detail+144(15).
CLEAR t_itau_detail+159(15).
UNPACK t_regup-vblnr
TO t_itau_detail+174(20).
UNPACK '0'
TO t_itau_detail+195(45).
MODIFY t_itau_detail
INDEX v_tabix.
ENDLOOP.
*----------------------------------------** Rodap
*----------------------------------------w_rodape+41(18)
= w_rodape+23(18).
UNPACK '0'
TO w_rodape+59(181).
*----------------------------------------** Fim
*----------------------------------------UNPACK '0'
TO w_fim+35(205).
*----------------------------------------** Monta arquivo
*----------------------------------------CLEAR t_arq.
REFRESH t_arq.
MOVE w_inicio
APPEND t_arq.
CLEAR t_arq.
TO t_arq.
EXPORTING
filename = v_filename
filetype = 'ASC'
TABLES
data_tab = t_arq.
*----------------------------------------------------------------------*
Pagamento GPS
*----------------------------------------------------------------------ELSEIF t_reguh-rzawe = 'G'.
CLEAR: w_inicio, w_cabecalho, t_itau_detail, w_rodape, w_fim.
REFRESH t_itau_detail.
v_filename = i_filename.
CALL FUNCTION 'GUI_UPLOAD'
EXPORTING
filename = v_filename
filetype = 'ASC'
TABLES
data_tab = t_arq.
LOOP AT t_arq INTO w_arq.
CASE w_arq(8).
WHEN '34100000'.
MOVE w_arq
TO w_inicio.
WHEN '34100011'.
MOVE w_arq
TO w_cabecalho.
WHEN '34100013'.
MOVE w_arq
TO t_itau_detail.
APPEND t_itau_detail.
CLEAR t_itau_detail.
WHEN '34100015'.
MOVE w_arq
TO w_rodape.
WHEN '34199999'.
MOVE w_arq
TO w_fim.
ENDCASE.
ENDLOOP.
*----------------------------------------** Incio
*----------------------------------------UNPACK '0' TO w_inicio+201(39).
*----------------------------------------** Cabealho
*----------------------------------------w_cabecalho+9(7) = '2217030'.
UNPACK '0' TO w_cabecalho+222(18).
*----------------------------------------** Detalhes
*----------------------------------------LOOP AT t_itau_detail.
CLEAR v_tabix.
v_tabix = sy-tabix.
v_gjahr = t_regup-laufd(4).
v_gjahr = t_regup-gjahr.
READ TABLE t_bseg WITH KEY bukrs = t_regup-zbukr
belnr = t_regup-belnr
gjahr = v_gjahr BINARY SEARCH.
t_itau_detail+13(1)
Tributo (2)
t_itau_detail+17(2)
= 'N'.
= '01'.
Competencia (6)
t_itau_detail+23(2) = t_line-tdline+44(2).
t_itau_detail+25(4) = t_line-tdline+40(4).
v_gjahr = t_reguh-laufd(4).
Identificador (14)
t_itau_detail+29(10) = t_line-tdline+25(10).
t_itau_detail+39(4) = t_line-tdline+36(4).
*
*
=
=
=
=
t_bseg-zfbdt + t_bseg-zbd1t.
v_zfbdt+6(2).
v_zfbdt+4(2).
v_zfbdt(4).
*
*
*
*
Brancos (8)
Uso empresa (50)
CLEAR t_itau_detail+107(58).
IF t_itau_detail+29(3) <> '000'.
CNPJ empresa
SELECT SINGLE bukrs
FROM t001z
INTO v_bukrs
WHERE party = 'J_1BCG' AND
paval = t_itau_detail+29(8).
IF sy-subrc = 0.
SELECT SINGLE adrnr
FROM t001
INTO v_adrnr
WHERE bukrs = v_bukrs.
IF sy-subrc = 0.
SELECT SINGLE name1
FROM adrc
INTO v_name1
WHERE addrnumber = v_adrnr.
IF sy-subrc = 0 .
t_itau_detail+165(30) = v_name1.
ELSE.
CLEAR t_itau_detail+165(30).
UNPACK '0' TO t_itau_detail+29(14).
ENDIF.
ELSE.
CLEAR t_itau_detail+165(30).
UNPACK '0' TO t_itau_detail+29(14).
ENDIF.
ELSE.
CNPJ fornecedor
SELECT SINGLE name1
FROM lfa1
INTO v_name1
WHERE stcd1 = t_itau_detail+29(14).
IF sy-subrc = 0.
Contribuinte (30)
t_itau_detail+165(30) = v_name1.
ELSE.
CLEAR t_itau_detail+165(30).
UNPACK '0' TO t_itau_detail+29(14).
ENDIF.
ENDIF.
ELSE.
PIS
Contribuinte (30)
t_itau_detail+165(30) = t_bseg-sgtxt(30).
ENDIF.
UNPACK t_regup-vblnr TO t_itau_detail+195(20).
UNPACK '0'
TO t_itau_detail+215(25).
MODIFY t_itau_detail INDEX v_tabix.
ENDLOOP.
*----------------------------------------** Rodap
*----------------------------------------CLEAR v_rbetr_c.
LOOP AT t_reguh.
v_rbetr
= v_rbetr + t_reguh-rbetr.
ENDLOOP.
MOVE v_rbetr
UNPACK v_rbetr_c
UNPACK '0'
UNPACK v_rbetr_c
UNPACK '0'
TO
TO
TO
TO
TO
v_rbetr_c.
w_rodape+23(14).
w_rodape+37(29).
w_rodape+65(14).
w_rodape+79(161).
*----------------------------------------** Fim
*----------------------------------------UNPACK '0'
TO w_fim+35(205).
*----------------------------------------** Monta arquivo
*----------------------------------------CLEAR t_arq.
REFRESH t_arq.
MOVE w_inicio
APPEND t_arq.
CLEAR t_arq.
TO t_arq.
MOVE w_cabecalho
APPEND t_arq.
CLEAR t_arq.
TO t_arq.
LOOP AT t_itau_detail.
MOVE t_itau_detail TO t_arq.
APPEND t_arq.
CLEAR t_arq.
ENDLOOP.
MOVE w_rodape
APPEND t_arq.
CLEAR t_arq.
TO t_arq.
MOVE w_fim
APPEND t_arq.
CLEAR t_arq.
TO t_arq.
APPEND t_arq.
CALL FUNCTION 'GUI_DOWNLOAD'
EXPORTING
filename = v_filename
filetype = 'ASC'
TABLES
data_tab = t_arq.
*----------------------------------------------------------------------*
DARF
*----------------------------------------------------------------------ELSEIF t_reguh-rzawe = 'P'.
v_gjahr = t_regup-laufd(4).
v_gjahr = t_regup-gjahr.
READ TABLE t_bseg WITH KEY bukrs = t_regup-zbukr
belnr = t_regup-belnr
gjahr = v_gjahr BINARY SEARCH.
t_itau_detail+13(1)
Tributo (2)
= 'N'.
t_itau_detail+17(2)
= '02'.
Receita (4)
t_itau_detail+19(4) = t_line-tdline+39(4).
CONCATENATE t_line-tdline+26(9)
t_line-tdline+36(3)
INTO v_cnpj.
*
*
Periodo (8)
t_itau_detail+38(2) = t_bseg-zfbdt+6(2).
t_itau_detail+40(2) = t_bseg-zfbdt+4(2).
t_itau_detail+42(4) = t_bseg-zfbdt(4).
Referencia (17)
UNPACK '0' TO t_itau_detail+46(17).
*
*
Multa(14)
Juros/Encargos (14)
UNPACK '0' TO t_itau_detail+77(28).
v_zfbdt
t_itau_detail+119(2)
t_itau_detail+121(2)
t_itau_detail+123(4)
=
=
=
=
t_bseg-zfbdt + t_bseg-zbd1t.
v_zfbdt+6(2).
v_zfbdt+4(2).
v_zfbdt(4).
Brancos (30)
CLEAR t_itau_detail+135(30).
CNPJ empresa
SELECT SINGLE bukrs
FROM t001z
INTO v_bukrs
WHERE party = 'J_1BCG' AND
paval = t_itau_detail+24(8).
IF sy-subrc = 0.
SELECT SINGLE adrnr
FROM t001
INTO v_adrnr
WHERE bukrs = v_bukrs.
IF sy-subrc = 0.
SELECT SINGLE name1
FROM adrc
INTO v_name1
WHERE addrnumber = v_adrnr.
IF sy-subrc = 0 .
t_itau_detail+165(30) = v_name1.
ELSE.
CLEAR t_itau_detail+165(30).
UNPACK '0' TO t_itau_detail+24(14).
ENDIF.
ELSE.
CLEAR t_itau_detail+165(30).
UNPACK '0' TO t_itau_detail+24(14).
ENDIF.
ELSE.
CNPJ fornecedor
SELECT SINGLE name1
FROM lfa1
INTO v_name1
WHERE stcd1 = t_itau_detail+24(14).
IF sy-subrc = 0.
Contribuinte (30)
t_itau_detail+165(30) = v_name1.
ELSE.
CLEAR t_itau_detail+165(30).
UNPACK '0' TO t_itau_detail+24(14).
ENDIF.
ENDIF.
*----------------------------------------** Rodap
*----------------------------------------CLEAR v_rbetr_c.
LOOP AT t_reguh.
v_rbetr
= v_rbetr + t_reguh-rbetr.
ENDLOOP.
MOVE v_rbetr
UNPACK v_rbetr_c
UNPACK '0'
UNPACK v_rbetr_c
UNPACK '0'
TO
TO
TO
TO
TO
v_rbetr_c.
w_rodape+23(14).
w_rodape+37(29).
w_rodape+65(14).
w_rodape+79(161).
*----------------------------------------** Fim
*----------------------------------------UNPACK '0'
TO w_fim+35(205).
*----------------------------------------** Monta arquivo
*----------------------------------------CLEAR t_arq.
REFRESH t_arq.
MOVE w_inicio
APPEND t_arq.
CLEAR t_arq.
TO t_arq.
MOVE w_cabecalho
APPEND t_arq.
CLEAR t_arq.
TO t_arq.
LOOP AT t_itau_detail.
MOVE t_itau_detail TO t_arq.
APPEND t_arq.
CLEAR t_arq.
ENDLOOP.
MOVE w_rodape
APPEND t_arq.
CLEAR t_arq.
TO t_arq.
MOVE w_fim
APPEND t_arq.
CLEAR t_arq.
TO t_arq.
APPEND t_arq.
CALL FUNCTION 'GUI_DOWNLOAD'
EXPORTING
filename = v_filename
filetype = 'ASC'
TABLES
data_tab = t_arq.
ENDIF.