Sie sind auf Seite 1von 44

*&---------------------------------------------------------------------*

*& NOME DO PROGRAMA : ZFI_I_CONTABILIZACAO_FATURAS


*
*& TTULO DO PROGRAMA : Contabilizao de Lanamentos do Sistema VIA *
*& PROGRAMADOR
: Jos Henrique Bachour (JHBAC)
*
*& DATA
: 14/06/2010
*
*&
*
*& DESCRIO
: Interface de Contabilizao de Lanamentos
*
*&
do Sistema VIA.
*
*&---------------------------------------------------------------------*
*& LISTA DE MODIFICAES:
*
*& DATA
AUTOR
REQUEST #
DESCRIO
*
*& 14/06/2010 JHBAC
ED1K900435
Codificao inicial
*
*& 25/07/2011 ERICF
ED1K915009
Validao e Priorizao
*
*&
da busca de parceiros
*
*&---------------------------------------------------------------------*
REPORT zfi_i_contabilizacao_faturas.
TABLES: lfbw,
zfi_t_sap_leg_r.

"Interface SAP X CTB X SAP

Rastreabilidade

***********************************************************************
* TYPES
***********************************************************************
TYPES: BEGIN OF y_legado.
INCLUDE STRUCTURE zfi_e_via_sap.
TYPES: moedaux(20)
TYPE c,
END OF y_legado.
TYPES: BEGIN OF y_lfbk,
lifnr TYPE lfbk-lifnr,
bvtyp TYPE lfbk-bvtyp,
bkref TYPE lfbk-bkref,
END OF y_lfbk.
TYPES: BEGIN OF y_lfbw,
lifnr TYPE lfbw-lifnr,
bukrs TYPE lfbw-bukrs,
witht TYPE lfbw-witht,
END OF y_lfbw.
*-- Monitor - Inicio
TYPES: BEGIN OF log_direto,
*
idmsgs
TYPE zstget005-idmsgs,
tpmsgs
TYPE c,
clmsgs(15) TYPE c,
numsgs(3) TYPE c,
dummy
TYPE string,
END OF log_direto.
*-- Monitor - Fim
***********************************************************************
* TABELAS INTERNAS
***********************************************************************
DATA:
t_config
TYPE STANDARD TABLE OF zfi_t_idinterf,
t_legado_aux
TYPE TABLE OF y_legado,
t_legado
TYPE zfi_tt_via_sap,
t_t001
TYPE STANDARD TABLE OF t001,
t_lfa1
TYPE STANDARD TABLE OF lfa1,
t_kna1
TYPE STANDARD TABLE OF kna1,

t_t003
t_tbsl
t_mercado
t_conta
t_conta_aux
t_bdc
t_return
t_msg
t_lfbk
t_lfbw

TYPE
TYPE
TYPE
TYPE
TYPE
TYPE
TYPE
TYPE
TYPE
TYPE

STANDARD TABLE OF
STANDARD TABLE OF
STANDARD TABLE OF
STANDARD TABLE OF
STANDARD TABLE OF
bdcdata
OCCURS
STANDARD TABLE OF
bdcmsgcoll OCCURS
STANDARD TABLE OF
STANDARD TABLE OF

t003,
zfi_t_tbsl,
zfi_t_dadmercado,
zfi_t_depara,
zfi_t_depara,
0 WITH HEADER LINE,
bapiret1,
0 WITH HEADER LINE,
lfbk,
y_lfbw.

*-- Monitor - Inicio


DATA: t_log_direto TYPE TABLE OF log_direto WITH HEADER LINE,
t_ler_log
TYPE TABLE OF bal_s_msg,
t_log
TYPE TABLE OF bal_s_msg.
*-- Monitor - Fim
***********************************************************************
* REAS DE TRABALHO GLOBAIS
***********************************************************************
DATA:
wa_legado
TYPE zfi_e_via_sap,
wa_config
TYPE zfi_t_idinterf,
wa_legado_aux
TYPE y_legado,
wa_t001
TYPE t001,
wa_lfa1
TYPE lfa1,
wa_kna1
TYPE kna1,
wa_t003
TYPE t003,
wa_tbsl
TYPE zfi_t_tbsl,
wa_mercado
TYPE zfi_t_dadmercado,
wa_conta
TYPE zfi_t_depara,
wa_conta_aux
TYPE zfi_t_depara,
wa_return
TYPE bapiret1,
wa_interface
TYPE zbc_t_interface,
wa_lfbk
TYPE lfbk,
wa_lfbw
TYPE y_lfbw,
wa_bkpf
TYPE bkpf.
*-- Monitor - Inicio
DATA: wa_log
TYPE bal_s_msg.
*-- Monitor - Fim
***********************************************************************
* CONSTANTES
***********************************************************************
CONSTANTS:
c_only(04)
TYPE c
VALUE 'ONLI',
c_transf63
TYPE sy-tcode
VALUE 'F-63',
c_31(02)
TYPE c
VALUE '31',
c_40(02)
TYPE c
VALUE '40',
c_igual(01)
TYPE c
VALUE '=',
c_e(01)
TYPE c
VALUE 'E',
c_a(01)
TYPE c
VALUE 'A',
c_n(01)
TYPE c
VALUE 'N',
c_h(01)
TYPE c
VALUE 'H',
c_s(01)
TYPE c
VALUE 'S',
c_u(01)
TYPE c
VALUE '_',
c_x(01)
TYPE c
VALUE 'X',
c_filial(04)
TYPE c
VALUE '0001',

c_sclass
TYPE sclass
VALUE '01',
c_ab
TYPE sy-ucomm
VALUE '=AB',
c_go
TYPE sy-ucomm
VALUE '=GO',
c_bp
TYPE sy-ucomm
VALUE '=BP',
c_zk
TYPE sy-ucomm
VALUE '=ZK',
c_ent01
TYPE sy-ucomm
VALUE '/00',
c_ent02
TYPE sy-ucomm
VALUE '=ENTE',
c_ecanc
TYPE sy-ucomm
VALUE '/ECANC',
c_salva
TYPE sy-ucomm
VALUE 'BU',
c_bnde
TYPE sy-ucomm
VALUE 'BNDE',
c_repid
TYPE repid
VALUE 'ZFI_I_VIA_SAP',
c_3141
TYPE kostl
VALUE '3141',
c_34010107
TYPE kostl
VALUE '34010107',
c_3149510100
TYPE kostl
VALUE '3149510100',
c_4149162602
TYPE kostl
VALUE '4149162602',
*-Incio de Alterao - Eric Doria - 20/07/2011
c_br(2)
TYPE c
VALUE 'BR',
c_erro(4)
TYPE c
VALUE 'ERRO',
c_0001(4)
TYPE c
VALUE '0001',
c_31129999(8) TYPE c
VALUE '31129999',
c_i
TYPE c
VALUE 'I',
c_eq(2)
TYPE c
VALUE 'EQ',
c_lfa1
TYPE c
VALUE 'F',
c_kna1
TYPE c
VALUE 'C',
c_f
TYPE c
VALUE 'F',
c_c
TYPE c
VALUE 'C',
c_l2(2)
TYPE c
VALUE 'L2',
c_auto(4)
TYPE c
VALUE 'AUTO',
c_v
TYPE c
VALUE 'V',
c_null
TYPE c
VALUE ' '.
*-Fim de Alterao - Eric Doria - 20/07/2011
***********************************************************************
* VARIVEIS GLOBAIS
***********************************************************************
DATA:
vg_path
TYPE localfile,
vg_subrc
TYPE sy-subrc,
vg_sgtxt
TYPE sgtxt,
vg_texto
TYPE string,
vg_dummy
TYPE string,
vg_chave
TYPE string,
vg_valor
TYPE bseg-wrbtr,
vg_bldat(10)
TYPE c,
vg_budat(10)
TYPE c,
vg_valort(16)
TYPE c,
vg_zlspr
TYPE bseg-zlspr,
vg_zfbdt
TYPE bseg-zfbdt,
vg_kostl
TYPE kostl,
vg_newbs_deb
TYPE bschl,
vg_newbs_cre
TYPE bschl,
vg_newko_deb
TYPE newko,
vg_newko_cre
TYPE newko,
vg_bypass_cref(01) TYPE c,
vg_bypass_debf(01) TYPE c,
vg_bypass_crec(01) TYPE c,
vg_bypass_debc(01) TYPE c,
vg_idinterf
TYPE zz_de_idinterf,
vg_repid
TYPE repid,
vg_numreg
TYPE i,

vg_dtimig
vg_hrimig
vg_dtfmig
vg_hrfmig
vg_seqnz
vg_substfile
vg_timestamp
vg_bkvid
vg_prio1(4)
vg_prio2(4)
vg_prio3(4)
vg_prio4(4)
vg_prio5(4)
vg_bvtyp
vg_erro(4)
vg_dupl(1)
vg_regc(5)

TYPE
TYPE
TYPE
TYPE
TYPE
TYPE
TYPE
TYPE
TYPE
TYPE
TYPE
TYPE
TYPE
TYPE
TYPE
TYPE
TYPE

sy-datum,
sy-uzeit,
sy-datum,
sy-uzeit,
seqnz,
localfile,
char16,
bseg-bvtyp,
c,
c,
c,
c,
c,
lfbk-bvtyp,
c,
c,
c.

***********************************************************************
* RANGES
***********************************************************************
RANGES: r_lifnr FOR lfa1-lifnr,
r_kunnr FOR kna1-kunnr.
***********************************************************************
* MACROS
***********************************************************************
DEFINE select_but000.
select single partner
into &3
from but000
where partner in &1
and source eq &2.
END-OF-DEFINITION.
DEFINE prioridade.
select_but000 &1 &2 &7.
if sy-subrc ne 0.
select_but000 &1 &3 &7.
if sy-subrc ne 0.
select_but000 &1 &4 &7.
if sy-subrc ne 0.
select_but000 &1 &5 &7.
if sy-subrc ne 0.
select_but000 &1 &6 &7.
endif.
endif.
endif.
endif.
END-OF-DEFINITION.
**********************************************************************
* MONITOR DE INTERFACES
**********************************************************************
*-- Monitor - Inicio
DATA: pe_codint TYPE zstget001-codint,
pe_dthrge TYPE zstget005-dthrge,
pe_idmsgo TYPE zstget005-idmsgo,
pe_idmsgp TYPE zstget005-idmsgp,
pe_sysori TYPE zstget005-sysori.

DATA: vg_timest(15) TYPE c,


vg_datum(10) TYPE c,
vg_uzeit(8) TYPE c.
DATA: it_log TYPE tab_bdcmsgcoll.
DATA: ps_stprom TYPE zstget005-stprom.
DATA: it_legado TYPE STANDARD TABLE OF zfi_e_via_sap.
*-- Monitor - Fim
**********************************************************************
* PARMETROS
**********************************************************************
SELECTION-SCREEN BEGIN OF BLOCK 100 WITH FRAME TITLE text-700.
PARAMETERS: p_interf LIKE zfi_t_idinterf-idinterf OBLIGATORY.
SELECTION-SCREEN END OF BLOCK 100.
***********************************************************************
* INICIO DO PROGRAMA
***********************************************************************
START-OF-SELECTION.
vg_repid = p_interf.
SELECT
FROM
INTO
WHERE

SINGLE *
zfi_t_idinterf
wa_config
idinterf = p_interf.

IF sy-subrc NE 0.
MESSAGE e211(zbc001) WITH p_interf.
ENDIF.
vg_dtimig = sy-datum.
vg_hrimig = sy-uzeit.
* Recupera os dados da Interface para a montagem do LOG standard
CALL METHOD zcl_componentes_diversos=>inicializar_interface
EXPORTING
vl_interface
= vg_repid(30)
EXCEPTIONS
interface_not_found = 1
OTHERS
= 3.
IF sy-subrc IS NOT INITIAL.
MESSAGE e141(zbc001).
LEAVE LIST-PROCESSING.
ENDIF.
PERFORM upload_timestamp_servidor.
IF NOT vg_subrc IS INITIAL.
*-- Caso existam erros de arquivo / diretrio / interface,
* deve-se executar o perform finaliza_interface, para que o
* LOG SLG1 (OBJ:ZINTERFACE/SUBOBJ:CONTABFAT)
PERFORM finaliza_interface.
**---Verificar LOG: & & (transao SLG1).
*
MESSAGE e117(zbc001) WITH sy-datum sy-uzeit wa_interface-object

wa_interface-subobject.
vg_erro = 'X'.
ENDIF.

PERFORM upload_arquivos_servidor.
IF vg_subrc IS NOT INITIAL.
PERFORM finaliza_interface.
**---Verificar LOG: & & (transao SLG1).
*
MESSAGE e117(zbc001) WITH sy-datum sy-uzeit wa_interface-object
*
wa_interface-subobject.
vg_erro = 'X'.
ELSE.
*-- Monitor - inicio
CALL METHOD zcl_componentes_diversos=>ler_log
RECEIVING
log = t_ler_log[].
LOOP AT t_ler_log INTO wa_log.
APPEND wa_log TO t_log.
ENDLOOP.
*-- Monitor - Fim
ENDIF.
*-- Monitor - Inicio
MOVE: t_legado[] TO it_legado[].
pe_codint = p_interf.
CONCATENATE sy-datum sy-uzeit INTO vg_timest.
pe_dthrge = vg_timest.
WRITE sy-datum TO vg_datum USING EDIT MASK '__.__.____'.
WRITE sy-uzeit TO vg_uzeit USING EDIT MASK '__:__:__'.
CONCATENATE p_interf '-' vg_datum '-' vg_uzeit INTO pe_idmsgo SEPARATED BY spa
ce.
CONCATENATE p_interf '-' vg_datum '-' vg_uzeit INTO pe_idmsgp SEPARATED BY spa
ce.
pe_sysori = sy-cprog.
INCLUDE zstgei001.
*-- Consiste todos os erros que ocorreram na abertura do arquivo
* alimentando o Monitor
IF vg_erro EQ 'X'.
LOOP AT t_log INTO wa_log.
PERFORM inserir_log_direto IN PROGRAM zstgei002
USING zstget005-idmsgs
wa_log-msgty
wa_log-msgid
wa_log-msgno
wa_log-msgv1
wa_log-msgv2
wa_log-msgv3
wa_log-msgv4
''.
*-- Logs de Mensagens
PERFORM f_atualiza_timestamp USING zstget005-idmsgs.
*-- Status de Mensgens

PERFORM f_atualiza_stprom USING 'E'


zstget005-idmsgs.
PERFORM enviar_email USING zstget005.
ENDLOOP. "AT t_log INTO wa_log.
EXIT.
*-- Caso no existam erros, as mensagens de inicializao da Interface
* devem ir ao monitor
ELSE.
LOOP AT t_log INTO wa_log.
PERFORM inserir_log_direto IN PROGRAM zstgei002
USING zstget005-idmsgs
wa_log-msgty
wa_log-msgid
wa_log-msgno
wa_log-msgv1
wa_log-msgv2
wa_log-msgv3
wa_log-msgv4
''.
*-- Logs de Mensagens
PERFORM f_atualiza_timestamp USING zstget005-idmsgs.
ENDLOOP. "AT t_log INTO wa_log.
ENDIF. "vg_erro EQ 'X'.
*-- Monitor - Fim
PERFORM seleciona_dados TABLES t_legado.
CLEAR: vg_erro.
WAIT UP TO 1 SECONDS.
PERFORM contabiliza_faturas TABLES t_legado
USING ' '
zstget005-idmsgs
zstget005-codint
wa_config
CHANGING ps_stprom
vg_erro.
*-- Monitor - Inicio
IF vg_erro IS INITIAL. "C = Concludo
PERFORM inserir_log_direto IN PROGRAM zstgei002
USING zstget005-idmsgs
ps_stprom
'ZBC001'
'002'
text-002
text-003
''
''
''.
*
IF NOT t_legado[] IS INITIAL.
*
IF NOT vg_dupl EQ 'W'.
ps_stprom = 'C'.
*
ELSE.
*
ps_stprom = 'P'. " Faturas duplicadas sero informadas com mensagem de
WARNING

*
*
*
or
*

ENDIF.
ELSE.
ps_stprom = 'P'.

" Arquivo sem dados deve ser mensagem WARNING no Monit

ENDIF.
ELSE.
PERFORM inserir_log_direto IN PROGRAM zstgei002
USING zstget005-idmsgs
'E'
'ZBC001'
'003'
text-004
vg_erro
text-005
''
''.
ps_stprom = 'E'.

PERFORM enviar_email USING zstget005.


ENDIF. "vg_erro is initial
*-- Logs de Mensagens
PERFORM f_atualiza_timestamp USING zstget005-idmsgs.
*-- Status de Mensgens
PERFORM f_atualiza_stprom USING ps_stprom
zstget005-idmsgs.
*-- Monitor - Fim
PERFORM finaliza_interface.
END-OF-SELECTION.
*&---------------------------------------------------------------------*
*&
Form SELECIONA_DADOS
*&---------------------------------------------------------------------*
FORM seleciona_dados TABLES t_legado STRUCTURE zfi_e_via_sap.
LOOP AT t_legado INTO wa_legado_aux.
wa_legado_aux-moedaux = wa_legado_aux-moeda.
APPEND wa_legado_aux TO t_legado_aux.
ENDLOOP.
SELECT
FROM
INTO
WHERE
AND

*
t001
TABLE t_t001 FOR ALL ENTRIES IN t_legado
zzplanoctb = t_legado-cod_plano(2)
zzempprinc = 'X'.

SELECT
FROM
INTO
WHERE
AND
AND

*
t003
TABLE t_t003 FOR ALL ENTRIES IN t_legado
zztpleg = t_legado-cod_sistema_origem
zzorctb = ' '
zzessap = space.

*--> Eric Doria - 07.02.2012


*>>> BEGIN <<<
IF sy-subrc NE 0.
*-- Monitor - Inicio
PERFORM inserir_log_direto IN PROGRAM zstgei002
USING zstget005-idmsgs

'W'
'ZBC001'
'004'
'T003'
'zzessap = space'
'IFCd. Linha 473'
''
''.
*-- Logs de Mensagens
PERFORM f_atualiza_timestamp USING zstget005-idmsgs.
*--------------------*
*-- NOVA TENTATIVA --*
*--------------------*
SELECT *
FROM t003
INTO TABLE t_t003 FOR ALL ENTRIES IN t_legado
WHERE zztpleg = t_legado-cod_sistema_origem
AND zzorctb = ' '
AND zzessap = ' '.
IF sy-subrc NE 0.
*-- Monitor - inicio
PERFORM inserir_log_direto IN PROGRAM zstgei002
USING zstget005-idmsgs
'W'
'ZBC001'
'004'
'T003'
'zzessap = '' '''
'IFCd. Linha 497'
''
''.
*-- Logs de Mensagens
PERFORM f_atualiza_timestamp USING zstget005-idmsgs.
*-- 12/03/2012 - Inicio
SELECT *
FROM t003
INTO TABLE t_t003 FOR ALL ENTRIES IN t_legado
WHERE zztpleg = t_legado-cod_sistema_origem
AND zzorctb = ' '
AND zzessap IS NULL.
IF sy-subrc NE 0.
*-- Monitor - inicio
PERFORM inserir_log_direto IN PROGRAM zstgei002
USING zstget005-idmsgs
'W'
'ZBC001'
'004'
'T003'
'zzessap = is null'
'IFCd. Linha 522'
''
''.
*-- Logs de Mensagens
PERFORM f_atualiza_timestamp USING zstget005-idmsgs.

ENDIF.
*-- 12/03/2012 - Fim
ENDIF.
ENDIF.
*>>> END <<<
SELECT
FOR
WHERE
AND
AND

* FROM zfi_t_dadmercado INTO TABLE t_mercado


ALL ENTRIES IN t_legado_aux
cdext = t_legado_aux-moedaux
stati = c_x
sclass = c_sclass.

SELECT * FROM zfi_t_tbsl INTO TABLE t_tbsl


FOR ALL ENTRIES IN t_legado
WHERE ( tipo_detalhe = t_legado-cod_tipo_det_deb OR
tipo_detalhe = t_legado-cod_tipo_det_cred )
AND ( shkzg = c_h OR shkzg = c_s ).
SELECT
FOR
WHERE
AND
AND
AND

AND
AND

* FROM zfi_t_depara INTO TABLE t_conta


ALL ENTRIES IN t_legado
planoctb
= t_legado-cod_plano
( nmconctb
= t_legado-num_conta_deb OR
nmconctb
= t_legado-num_conta_cred )
( tpdetctb
= t_legado-cod_tipo_det_deb OR
tpdetctb
= t_legado-cod_tipo_det_cred )
( nmdetctb
= t_legado-num_det_deb OR
nmdetctb
= t_legado-num_det_cred OR
nmdetctb
= '*' OR
nmdetctb
= space )
itdes EQ space
val_desde LE sy-datum.

SORT t_conta BY planoctb nmconctb tpdetctb nmdetctb bukrs saknr val_desde DESC
ENDING.
DELETE ADJACENT DUPLICATES FROM t_conta COMPARING planoctb nmconctb tpdetctb n
mdetctb bukrs saknr.
ENDFORM.

" SELECIONA_DADOS

*&---------------------------------------------------------------------*
*&
Form CONTABILIZA_FATURAS
*&---------------------------------------------------------------------*
FORM contabiliza_faturas TABLES t_legado STRUCTURE zfi_e_via_sap
USING ps_reproc
zstget005-idmsgs
zstget005-codint
wa_config STRUCTURE zfi_t_idinterf
CHANGING ps_stprom
vg_erro.
DATA: vl_saknr
vl_fstag
vl_cred
vl_deb
vl_codcred
vl_coddeb
vl_index
vl_count

LIKE
LIKE
TYPE
TYPE
TYPE
TYPE
TYPE
TYPE

skb1-saknr,
skb1-fstag,
y_legado-num_det_cred,
y_legado-num_det_deb,
y_legado-cod_tipo_det_cred,
y_legado-cod_tipo_det_deb,
sy-tabix,
i.

IF p_interf IS INITIAL.
MOVE zstget005-codint TO p_interf.
ENDIF.
CLEAR: vg_numreg, vg_erro.
LOOP AT t_legado INTO wa_legado.
ADD 1 TO vl_index.
CLEAR: vg_zlspr,
vg_zfbdt,
vg_dummy,
vg_bypass_cref,
vg_bypass_debf,
vg_bypass_crec,
vg_bypass_debc,
vl_cred,
vl_deb,
vl_codcred,
vl_coddeb,
vl_count,
t_lfbw, t_lfbw[],
vg_newko_cre,
"JCFSF - 20/03/2012
vg_newko_deb.
"JCFSF - 20/03/2012
ADD 1 TO vg_numreg.
MOVE vg_numreg TO vg_regc.
READ TABLE t_t001 INTO wa_t001
WITH KEY zzplanoctb = wa_legado-cod_plano.
IF sy-subrc IS NOT INITIAL.
MESSAGE e064(zbc001) WITH vg_numreg wa_legado-cod_plano
INTO vg_dummy.
PERFORM insere_reg_rastreamento_e USING wa_config.
PERFORM insere_log_standard.
*-- Monitor - Inicio
PERFORM inserir_log_direto IN PROGRAM zstgei002
USING zstget005-idmsgs
'E'
'ZBC001'
'064'
vg_regc
wa_legado-cod_plano
''
''
''.
*-- Logs de Mensagens
PERFORM f_atualiza_timestamp USING zstget005-idmsgs.
*-- Monitor - Fim
ps_stprom = 'E'.
ADD 1 TO vg_erro.
CONTINUE.
ENDIF.
TRANSLATE wa_legado-cod_sistema_origem TO UPPER CASE.
READ TABLE t_t003 INTO wa_t003
WITH KEY zztpleg = wa_legado-cod_sistema_origem.

zzensap = c_x.
IF sy-subrc IS NOT INITIAL.
MESSAGE e065(zbc001) WITH vg_numreg wa_legado-cod_sistema_origem
INTO vg_dummy.
PERFORM insere_reg_rastreamento_e USING wa_config..
PERFORM insere_log_standard.
*-- Monitor - Inicio
PERFORM inserir_log_direto IN PROGRAM zstgei002
USING zstget005-idmsgs
'E'
'ZBC001'
'065'
vg_regc
wa_legado-cod_sistema_origem
''
''
''.
*-- Logs de Mensagens
PERFORM f_atualiza_timestamp USING zstget005-idmsgs.
*-- Monitor - Fim
ps_stprom = 'E'.
ADD 1 TO vg_erro.
CONTINUE.
ENDIF.
*-- Validao de duplicidade de faturas
SELECT SINGLE * FROM bkpf INTO wa_bkpf
WHERE bukrs EQ wa_t001-bukrs
AND blart EQ wa_t003-blart
AND xblnr EQ wa_legado-ide_referencia
AND ( ( stblg EQ space AND bstat EQ space ) OR
( bstat EQ c_v ) ).
IF sy-subrc EQ 0.
*-- A validao de duplicidade de faturas s deve ocorrer quando estamos gerando a int
erface
* ZFI_I_CONTABILIZACAO_FATURAS, quando estamos reprocessando o arquivo atravs d
o Monitor
* ser feita a mesma validao, porm no informar o erro, apenas seguir para o prximo
* registro do arquivo em reprocesso.
IF NOT ps_reproc EQ 'X'.
MESSAGE e117(f5) WITH wa_bkpf-bukrs wa_bkpf-belnr wa_bkpf-gjahr
INTO vg_dummy.
*
PERFORM insere_reg_rastreamento_e.
PERFORM insere_log_standard.
*-- Monitor - Inicio
CLEAR vg_dummy.
MOVE 'Fatura duplicada no gerada.' TO vg_dummy.
MESSAGE s001(zbc001) WITH vg_dummy INTO vg_dummy.
PERFORM inserir_log_direto IN PROGRAM zstgei002
USING zstget005-idmsgs
'E'
'ZBC001'
'069'
vg_regc
'ERRO'
''
''

''.
*-- Logs de Mensagens
PERFORM f_atualiza_timestamp USING zstget005-idmsgs.
PERFORM inserir_log_direto IN PROGRAM zstgei002
USING zstget005-idmsgs
'I'
'ZBC001'
'002'
vg_dummy
''
''
''
''.
*-- Logs de Mensagens
PERFORM f_atualiza_timestamp USING zstget005-idmsgs.
vg_dupl = 'W'.
*-- Monitor - Fim
ELSE.
ps_stprom = 'C'.
ENDIF. "NOT ps_reproc EQ 'X'.
CONTINUE.
ENDIF. "sy-subrc EQ 0.
READ TABLE t_mercado
WITH KEY cdext
stati
sclass

INTO wa_mercado
= wa_legado-moeda
= c_x
= c_sclass.

IF sy-subrc IS NOT INITIAL.


MESSAGE e066(zbc001) WITH vg_numreg wa_legado-moeda
INTO vg_dummy.
PERFORM insere_reg_rastreamento_e USING wa_config..
PERFORM insere_log_standard.
*-- Monitor - Inicio
PERFORM inserir_log_direto IN PROGRAM zstgei002
USING zstget005-idmsgs
'E'
'ZBC001'
'066'
vg_regc
wa_legado-moeda
''
''
''.
*-- Logs de Mensagens
PERFORM f_atualiza_timestamp USING zstget005-idmsgs.
*-- Monitor - Fim
ps_stprom = 'E'.
ADD 1 TO vg_erro.
CONTINUE.
ENDIF.
IF wa_legado-num_partida <> 1.
MESSAGE e062(zbc001) WITH vg_numreg wa_legado-num_partida
INTO vg_dummy.
PERFORM insere_reg_rastreamento_e USING wa_config..
PERFORM insere_log_standard.

*-- Monitor - Inicio


PERFORM inserir_log_direto IN PROGRAM zstgei002
USING zstget005-idmsgs
'E'
'ZBC001'
'062'
vg_regc
wa_legado-num_partida
''
''
''.
*-- Logs de Mensagens
PERFORM f_atualiza_timestamp USING zstget005-idmsgs.
*-- Monitor - Fim
ps_stprom = 'E'.
ADD 1 TO vg_erro.
CONTINUE.
ENDIF.
IF wa_config-troca_tp_det_l1 = 'X' AND vl_index = 1.
vl_cred = wa_legado-num_det_deb.
vl_deb = wa_legado-num_det_cred.
vl_codcred = wa_legado-cod_tipo_det_deb.
vl_coddeb = wa_legado-cod_tipo_det_cred.
wa_legado-num_det_deb = vl_deb.
wa_legado-num_det_cred = vl_cred.
wa_legado-cod_tipo_det_deb = vl_coddeb.
wa_legado-cod_tipo_det_cred = vl_codcred.
ELSE.
vl_cred = wa_legado-num_det_cred.
vl_deb = wa_legado-num_det_deb.
vl_codcred = wa_legado-cod_tipo_det_cred.
vl_coddeb = wa_legado-cod_tipo_det_deb.
ENDIF.
IF wa_config-troca_tp_det_l2 = 'X' AND vl_index = 2.
vl_cred = wa_legado-num_det_deb.
vl_deb = wa_legado-num_det_cred.
vl_codcred = wa_legado-cod_tipo_det_deb.
vl_coddeb = wa_legado-cod_tipo_det_cred.
wa_legado-num_det_deb = vl_deb.
wa_legado-num_det_cred = vl_cred.
wa_legado-cod_tipo_det_deb = vl_coddeb.
wa_legado-cod_tipo_det_cred = vl_codcred.
ELSEIF vl_index = 2.
vl_cred = wa_legado-num_det_cred.
vl_deb = wa_legado-num_det_deb.
vl_codcred = wa_legado-cod_tipo_det_cred.
vl_coddeb = wa_legado-cod_tipo_det_deb.
ENDIF.
IF wa_config-troca_tp_det_ln = 'X' AND vl_index > 2.
vl_cred = wa_legado-num_det_deb.
vl_deb = wa_legado-num_det_cred.
vl_codcred = wa_legado-cod_tipo_det_deb.
vl_coddeb = wa_legado-cod_tipo_det_cred.
wa_legado-num_det_deb = vl_deb.
wa_legado-num_det_cred = vl_cred.
wa_legado-cod_tipo_det_deb = vl_coddeb.

wa_legado-cod_tipo_det_cred = vl_codcred.
ELSEIF vl_index > 2.
vl_cred = wa_legado-num_det_cred.
vl_deb = wa_legado-num_det_deb.
vl_codcred = wa_legado-cod_tipo_det_cred.
vl_coddeb = wa_legado-cod_tipo_det_deb.
ENDIF.
IF wa_config-fatura_ap = 'X'.
READ TABLE t_tbsl INTO wa_tbsl
WITH KEY tipo_detalhe = vl_coddeb
shkzg
= c_s
tpfat
= 'AP'.
ELSEIF wa_config-fatura_ar = 'X' AND wa_config-fatura_ap IS INITIAL.
READ TABLE t_tbsl INTO wa_tbsl
WITH KEY tipo_detalhe = vl_coddeb
shkzg
= c_s
tpfat
= 'AR'.
ENDIF.
IF NOT sy-subrc IS INITIAL.
MESSAGE e067(zbc001) WITH vg_numreg wa_legado-cod_tipo_det_deb
INTO vg_dummy.
PERFORM insere_reg_rastreamento_e USING wa_config..
PERFORM insere_log_standard.
*-- Monitor - Inicio
PERFORM inserir_log_direto IN PROGRAM zstgei002
USING zstget005-idmsgs
'E'
'ZBC001'
'067'
vg_regc
wa_legado-cod_tipo_det_deb
''
''
''.
*-- Logs de Mensagens
PERFORM f_atualiza_timestamp USING zstget005-idmsgs.
*-- Monitor - Fim
ps_stprom = 'E'.
ADD 1 TO vg_erro.
CONTINUE.
ELSE.
vg_newbs_deb = wa_tbsl-bschl.
CASE wa_tbsl-bschl.
WHEN '21' OR '31'.
IF vl_coddeb = '03'.
*
Busca pelo CNPJ
*-Incio de Alterao - Eric Doria - 25/07/2011
*
SELECT SINGLE lifnr FROM lfa1 INTO vg_newko_deb
*
WHERE stcd1 = vl_deb.
SELECT * FROM lfa1 INTO TABLE t_lfa1 WHERE stcd1 = vl_deb.
IF sy-subrc EQ 0.
PERFORM f_busca_prioridade USING wa_config-prioridade_cnpj
c_lfa1
CHANGING vg_newko_deb.
PERFORM f_busca_bvtyp USING vg_newko_deb.

ENDIF.
*-Fim de Alterao - Eric Doria - 25/07/2011
*
SELECT SINGLE lifnr FROM lfbw INTO lfbw-lifnr
*
WHERE lifnr = vg_newko_deb
*
AND bukrs = wa_t001-bukrs.
*
*
IF sy-subrc NE 0.
*
vg_bypass_debf = 1.
*
ENDIF.
SELECT lifnr bukrs witht
FROM lfbw
INTO TABLE t_lfbw
WHERE lifnr = vg_newko_deb
AND bukrs = wa_t001-bukrs
AND wt_subjct = c_x.
IF sy-subrc EQ 0.
SELECT COUNT(*)
FROM t001wt
INTO vl_count
FOR ALL ENTRIES IN t_lfbw
WHERE bukrs = t_lfbw-bukrs
AND witht = t_lfbw-witht.
IF vl_count EQ 0.
vg_bypass_debf = 1.
ENDIF.
ELSE.
vg_bypass_debf = 1.
ENDIF.
ELSE.
*
Busca pelo CPF
*-Incio de Alterao - Eric Doria - 25/07/2011
*
SELECT SINGLE lifnr FROM lfa1 INTO vg_newko_deb
*
WHERE stcd2 = vl_deb.
SELECT * FROM lfa1 INTO TABLE t_lfa1 WHERE stcd2 = vl_deb.
IF sy-subrc EQ 0.
PERFORM f_busca_prioridade USING wa_config-prioridade_cpf
c_lfa1
CHANGING vg_newko_deb.
PERFORM f_busca_bvtyp USING vg_newko_deb.
ENDIF. "sy-subrc EQ 0
*-Fim de Alterao - Eric Doria - 25/07/2011
*
SELECT SINGLE lifnr FROM lfbw INTO lfbw-lifnr
*
WHERE lifnr = vg_newko_deb
*
AND bukrs = wa_t001-bukrs.
*
*
IF sy-subrc NE 0.
*
vg_bypass_debf = 1.
*
ENDIF.
SELECT lifnr bukrs witht
FROM lfbw
INTO TABLE t_lfbw
WHERE lifnr = vg_newko_deb

AND bukrs = wa_t001-bukrs


AND wt_subjct = c_x.
IF sy-subrc EQ 0.
SELECT COUNT(*)
FROM t001wt
INTO vl_count
FOR ALL ENTRIES IN t_lfbw
WHERE bukrs = t_lfbw-bukrs
AND witht = t_lfbw-witht.
IF vl_count EQ 0.
vg_bypass_debf = 1.
ENDIF.
ELSE.
vg_bypass_debf = 1.
ENDIF.
ENDIF.
WHEN '01' OR '11'.
*-Incio de Alterao - Eric Doria - 25/07/2011
*
SELECT SINGLE kunnr FROM kna1 INTO vg_newko_deb
*
WHERE stcd1 = vl_deb.
SELECT * FROM kna1 INTO TABLE t_kna1 WHERE stcd1 = vl_deb.
IF sy-subrc EQ 0.
PERFORM f_busca_prioridade USING wa_config-prioridade_cnpj
c_kna1
CHANGING vg_newko_deb.
PERFORM f_busca_bvtyp USING vg_newko_deb.
ENDIF. "sy-subrc EQ 0
*-Fim de Alterao - Eric Doria - 25/07/2011
*
vg_bypass_debc = 1.
WHEN '40'.
PERFORM depara_conta_debito.
IF NOT vg_dummy IS INITIAL.
CONTINUE.
ENDIF.
WHEN OTHERS.
MESSAGE e067(zbc001) WITH vg_numreg vg_newbs_deb
INTO vg_dummy.
PERFORM insere_reg_rastreamento_e USING wa_config.
PERFORM insere_log_standard.
*-- Monitor - Inicio
PERFORM inserir_log_direto IN PROGRAM zstgei002
USING zstget005-idmsgs
'E'
'ZBC001'
'067'
vg_regc
vg_newbs_deb
''
''
''.
*-- Logs de Mensagens
PERFORM f_atualiza_timestamp USING zstget005-idmsgs.

*-- Monitor - Fim


ps_stprom = 'E'.
ADD 1 TO vg_erro.
CONTINUE.
ENDCASE.
ENDIF.
IF wa_config-fatura_ap = 'X'.
READ TABLE t_tbsl INTO wa_tbsl
WITH KEY tipo_detalhe = vl_codcred
shkzg
= c_h
tpfat
= 'AP'.
ELSEIF wa_config-fatura_ar = 'X' AND wa_config-fatura_ap IS INITIAL.
READ TABLE t_tbsl INTO wa_tbsl
WITH KEY tipo_detalhe = vl_codcred
shkzg
= c_h
tpfat
= 'AR'.
ENDIF.
IF sy-subrc IS NOT INITIAL.
MESSAGE e067(zbc001) WITH vg_numreg vl_codcred
INTO vg_dummy.
PERFORM insere_log_standard.
*-- Monitor - Inicio
PERFORM inserir_log_direto IN PROGRAM zstgei002
USING zstget005-idmsgs
'E'
'ZBC001'
'067'
vg_regc
vl_codcred
''
''
''.
*-- Logs de Mensagens
PERFORM f_atualiza_timestamp USING zstget005-idmsgs.
*-- Monitor - Fim
ps_stprom = 'E'.
ADD 1 TO vg_erro.
CONTINUE.
ELSE.
vg_newbs_cre = wa_tbsl-bschl.
CASE wa_tbsl-bschl.
WHEN '21' OR '31'.
IF vl_codcred = '03'.
*
Busca pelo CNPJ
*
SELECT SINGLE lifnr FROM lfa1 INTO vg_newko_cre
*
WHERE stcd1 = vl_cred.
SELECT * FROM lfa1 INTO TABLE t_lfa1 WHERE stcd1 = vl_cred.
IF sy-subrc EQ 0.
PERFORM f_busca_prioridade USING wa_config-prioridade_cnpj
c_lfa1
CHANGING vg_newko_cre.
PERFORM f_busca_bvtyp USING vg_newko_cre.
*
*
*

ENDIF.
SELECT
WHERE
AND

"sy-subrc EQ 0
SINGLE lifnr FROM lfbw INTO lfbw-lifnr
lifnr = vg_newko_cre
bukrs = wa_t001-bukrs.

*
*
*

IF sy-subrc NE 0.
vg_bypass_cref = 1.
ENDIF.
SELECT lifnr bukrs witht
FROM lfbw
INTO TABLE t_lfbw
WHERE lifnr = vg_newko_cre
AND bukrs = wa_t001-bukrs
AND wt_subjct = c_x.
IF sy-subrc EQ 0.
SELECT COUNT(*)
FROM t001wt
INTO vl_count
FOR ALL ENTRIES IN t_lfbw
WHERE bukrs = t_lfbw-bukrs
AND witht = t_lfbw-witht.
IF vl_count EQ 0.
vg_bypass_cref = 1.
ENDIF.
ELSE.
vg_bypass_cref = 1.
ENDIF.

*
*
*

ELSE.
Busca pelo CPF
SELECT SINGLE lifnr FROM lfa1 INTO vg_newko_cre
WHERE stcd2 = vl_cred.
SELECT * FROM lfa1 INTO TABLE t_lfa1 WHERE stcd2 = vl_cred.
IF sy-subrc EQ 0.
PERFORM f_busca_prioridade USING wa_config-prioridade_cpf
c_lfa1
CHANGING vg_newko_cre.
PERFORM f_busca_bvtyp USING vg_newko_cre.

*
*
*
*
*
*

ENDIF. "sy-subrc EQ 0
SELECT SINGLE lifnr FROM lfbw INTO lfbw-lifnr
WHERE lifnr = vg_newko_cre
AND bukrs = wa_t001-bukrs.
IF sy-subrc NE 0.
vg_bypass_cref = 1.
ENDIF.
SELECT lifnr bukrs witht
FROM lfbw
INTO TABLE t_lfbw
WHERE lifnr = vg_newko_cre
AND bukrs = wa_t001-bukrs
AND wt_subjct = c_x.
IF sy-subrc EQ 0.
SELECT COUNT(*)
FROM t001wt
INTO vl_count
FOR ALL ENTRIES IN t_lfbw
WHERE bukrs = t_lfbw-bukrs

AND witht = t_lfbw-witht.


IF vl_count EQ 0.
vg_bypass_cref = 1.
ENDIF.
ELSE.
vg_bypass_cref = 1.
ENDIF.

*
*

ENDIF.
WHEN '01' OR '11'.
SELECT SINGLE kunnr FROM kna1 INTO vg_newko_cre
WHERE stcd1 = vl_cred.
SELECT * FROM kna1 INTO TABLE t_kna1 WHERE stcd1 = vl_cred.
IF sy-subrc EQ 0.
PERFORM f_busca_prioridade USING wa_config-prioridade_cpf
c_kna1
CHANGING vg_newko_cre.
PERFORM f_busca_bvtyp USING vg_newko_cre.

ENDIF. "sy-subrc EQ 0
vg_bypass_crec = 1.
WHEN '50'.
PERFORM depara_conta_credito.
IF NOT vg_dummy IS INITIAL.
CONTINUE.
ENDIF.
WHEN OTHERS.
MESSAGE e067(zbc001) WITH vg_numreg vg_newbs_cre
INTO vg_dummy.
PERFORM insere_reg_rastreamento_e USING wa_config.
PERFORM insere_log_standard.
*-- Monitor - Inicio
PERFORM inserir_log_direto IN PROGRAM zstgei002
USING zstget005-idmsgs
'E'
'ZBC001'
'067'
vg_regc
vg_newbs_cre
''
''
''.
*-- Logs de Mensagens
PERFORM f_atualiza_timestamp USING zstget005-idmsgs.
*-- Monitor - Fim
ps_stprom = 'E'.
ADD 1 TO vg_erro.
CONTINUE.
ENDCASE.
ENDIF.
IF wa_legado-num_ocs IS INITIAL.
SELECT SINGLE fstag
INTO vl_fstag
FROM skb1
WHERE bukrs = wa_t001-bukrs

AND saknr = vg_newko_deb.


IF sy-subrc = 0 AND vl_fstag = 'Z090'.
MESSAGE e212(zbc001) INTO vg_dummy.
PERFORM insere_log_standard.
PERFORM insere_reg_rastreamento_e USING wa_config.
*-- Monitor - Inicio
PERFORM inserir_log_direto IN PROGRAM zstgei002
USING zstget005-idmsgs
'E'
'ZBC001'
'212'
vg_dummy
''
''
''
''.
*-- Logs de Mensagens
PERFORM f_atualiza_timestamp USING zstget005-idmsgs.
*-- Monitor - Fim
ps_stprom = 'E'.
ADD 1 TO vg_erro.
CONTINUE.
ENDIF.
ENDIF.
IF vg_newbs_deb NE '40' AND vg_newbs_deb NE '50'.
vg_zlspr = c_s.
ENDIF.
IF vg_dummy IS INITIAL.
PERFORM inicia_dados_transacao_f_63.
CASE vg_newbs_deb.
WHEN '01'.
CASE vg_newbs_cre.
WHEN '50'.
PERFORM lanca_deb01_cre50.
ENDCASE.
WHEN '21'.
CASE vg_newbs_cre.
WHEN '50'.
PERFORM lanca_deb21_cre50.
ENDCASE.
WHEN '40'.
IF vg_newko_deb(1) <> '3'.
CLEAR vg_kostl.
ENDIF.
CASE vg_newbs_cre.
WHEN '11'.
PERFORM lanca_deb40_cre11.
WHEN '31'.
PERFORM lanca_deb40_cre31.
ENDCASE.
ENDCASE.
PERFORM call_transaction USING c_transf63
zstget005-idmsgs
wa_config
CHANGING ps_stprom
vg_erro.

ENDIF.
ENDLOOP.
ENDFORM.

" CONTABILIZA_FATURAS

*&---------------------------------------------------------------------*
*&
Form depara_conta_debito
*&---------------------------------------------------------------------*
FORM depara_conta_debito .
DATA: vl_subrc TYPE sy-subrc.
REFRESH t_conta_aux.
LOOP AT t_conta INTO wa_conta_aux
WHERE planoctb = wa_legado-cod_plano
AND nmconctb = wa_legado-num_conta_deb
AND tpdetctb = wa_legado-cod_tipo_det_deb
AND nmdetctb = wa_legado-num_det_deb.
APPEND wa_conta_aux TO t_conta_aux.
ENDLOOP.
IF sy-subrc NE 0.
vl_subrc = sy-subrc.
LOOP AT t_conta INTO wa_conta_aux
WHERE planoctb = wa_legado-cod_plano
AND nmconctb = wa_legado-num_conta_deb
AND tpdetctb = wa_legado-cod_tipo_det_deb.
APPEND wa_conta_aux TO t_conta_aux.
ENDLOOP.
vl_subrc = sy-subrc.
IF sy-subrc NE 0.
SELECT SINGLE *
FROM zfi_t_depara INTO wa_conta_aux
WHERE planoctb
= wa_legado-cod_plano
AND nmconctb
= wa_legado-num_conta_deb
AND tpdetctb
= '00'.
IF sy-subrc = 0.
vl_subrc = sy-subrc.
APPEND wa_conta_aux TO t_conta_aux.
ELSE.
vl_subrc = sy-subrc.
ENDIF.
ENDIF.
ENDIF.
IF vl_subrc IS NOT INITIAL.
CONCATENATE wa_legado-cod_plano
wa_legado-num_conta_deb
wa_legado-cod_tipo_det_deb
wa_legado-num_det_deb
INTO vg_chave SEPARATED BY space.
MESSAGE e068(zbc001)
WITH vg_numreg vg_chave INTO vg_dummy.
PERFORM insere_reg_rastreamento_e USING wa_config.
PERFORM insere_log_standard.
*-- Monitor - Inicio
PERFORM inserir_log_direto IN PROGRAM zstgei002
USING zstget005-idmsgs

'E'
'ZBC001'
'068'
vg_dummy
''
''
''
''.
*-- Logs de Mensagens
PERFORM f_atualiza_timestamp USING zstget005-idmsgs.
*-- Status de Mensgens
PERFORM f_atualiza_stprom USING 'E'
zstget005-idmsgs.
*-- Monitor - Fim
ELSE.
SORT t_conta_aux BY val_desde DESCENDING.
READ TABLE t_conta_aux INTO wa_conta_aux INDEX 1.
IF wa_conta_aux-val_desde > sy-datum.
CONCATENATE wa_legado-cod_plano
wa_legado-num_conta_deb
wa_legado-cod_tipo_det_deb
wa_legado-num_det_deb
INTO vg_chave SEPARATED BY space.
MESSAGE e068(zbc001)
WITH vg_numreg vg_chave INTO vg_dummy.
PERFORM insere_reg_rastreamento_e USING wa_config.
PERFORM insere_log_standard.
*-- Monitor - Inicio
PERFORM inserir_log_direto IN PROGRAM zstgei002
USING zstget005-idmsgs
'E'
'ZBC001'
'068'
vg_dummy
''
''
''
''.
*-- Logs de Mensagens
PERFORM f_atualiza_timestamp USING zstget005-idmsgs.
*-- Status de Mensgens
PERFORM f_atualiza_stprom USING 'E'
zstget005-idmsgs.
*-- Monitor - Fim
ELSE.
vg_newko_deb = wa_conta_aux-saknr.
ENDIF.
ENDIF.
ENDFORM.

" depara_conta_debito

*&---------------------------------------------------------------------*
*&
Form depara_conta_credito
*&---------------------------------------------------------------------*
FORM depara_conta_credito .
DATA: vl_subrc TYPE sy-subrc.

REFRESH t_conta_aux.
LOOP AT t_conta INTO wa_conta_aux
WHERE planoctb = wa_legado-cod_plano
AND nmconctb = wa_legado-num_conta_cred
AND tpdetctb = wa_legado-cod_tipo_det_cred.
APPEND wa_conta_aux TO t_conta_aux.
ENDLOOP.
IF sy-subrc NE 0.
vl_subrc = sy-subrc.
LOOP AT t_conta INTO wa_conta_aux
WHERE planoctb = wa_legado-cod_plano
AND nmconctb = wa_legado-num_conta_deb
AND tpdetctb = wa_legado-cod_tipo_det_deb.
APPEND wa_conta_aux TO t_conta_aux.
ENDLOOP.
vl_subrc = sy-subrc.
IF sy-subrc NE 0.
SELECT SINGLE *
FROM zfi_t_depara INTO wa_conta_aux
WHERE planoctb
= wa_legado-cod_plano
AND nmconctb
= wa_legado-num_conta_deb
AND tpdetctb
= '00'.
IF sy-subrc = 0.
vl_subrc = sy-subrc.
APPEND wa_conta_aux TO t_conta_aux.
ELSE.
vl_subrc = sy-subrc.
ENDIF.
ENDIF.
ENDIF.
IF vl_subrc IS NOT INITIAL.
CONCATENATE wa_legado-cod_plano
wa_legado-num_conta_cred
wa_legado-cod_tipo_det_cred
wa_legado-num_det_cred
INTO vg_chave SEPARATED BY space.
MESSAGE e068(zbc001)
WITH vg_numreg vg_chave INTO vg_dummy.
PERFORM insere_reg_rastreamento_e USING wa_config.
PERFORM insere_log_standard.
*-- Monitor - Inicio
PERFORM inserir_log_direto IN PROGRAM zstgei002
USING zstget005-idmsgs
'E'
'ZBC001'
'068'
vg_dummy
''
''
''
''.
*-- Logs de Mensagens
PERFORM f_atualiza_timestamp USING zstget005-idmsgs.
*-- Status de Mensgens

PERFORM f_atualiza_stprom USING 'E'


zstget005-idmsgs.
*-- Monitor - Fim
ELSE.
SORT t_conta_aux BY val_desde DESCENDING.
READ TABLE t_conta_aux INTO wa_conta_aux INDEX 1.
IF wa_conta_aux-val_desde > sy-datum.
CONCATENATE wa_legado-cod_plano
wa_legado-num_conta_cred
wa_legado-cod_tipo_det_cred
wa_legado-num_det_cred
INTO vg_chave SEPARATED BY space.
MESSAGE e068(zbc001)
WITH vg_numreg vg_chave INTO vg_dummy.
PERFORM insere_reg_rastreamento_e USING wa_config.
PERFORM insere_log_standard.
*-- Monitor - Inicio
PERFORM inserir_log_direto IN PROGRAM zstgei002
USING zstget005-idmsgs
'E'
'ZBC001'
'068'
vg_dummy
''
''
''
''.
*-- Logs de Mensagens
PERFORM f_atualiza_timestamp USING zstget005-idmsgs.
*-- Status de Mensgens
PERFORM f_atualiza_stprom USING 'E'
zstget005-idmsgs.
*-- Monitor - Fim
ELSE.
vg_newko_cre = wa_conta_aux-saknr.
ENDIF.
ENDIF.
ENDFORM.
" depara_conta_credito
*&---------------------------------------------------------------------*
*&
Form inicia_dados_transacao_f_63
*&---------------------------------------------------------------------*
FORM inicia_dados_transacao_f_63 .
CONCATENATE sy-datum+6(2)
sy-datum+4(2)
sy-datum+0(4)
INTO vg_bldat.
* CONCATENATE wa_legado-dat_valoriz+6(2)
*
wa_legado-dat_valoriz+4(2)
*
wa_legado-dat_valoriz+0(4)
*
INTO vg_budat.
CONCATENATE sy-datum+6(2)
sy-datum+4(2)
sy-datum+0(4)
INTO vg_budat.

* vg_zfbdt = vg_bldat.
CONCATENATE wa_legado-dat_contab+6(2)
wa_legado-dat_contab+4(2)
wa_legado-dat_contab+0(4)
INTO vg_zfbdt.
CONCATENATE c_igual wa_legado-num_historico
INTO vg_sgtxt.
vg_valor = wa_legado-val_lancamento / 100.
WRITE vg_valor TO vg_valort CURRENCY 'BRL'.
CLEAR vg_kostl.
SHIFT vg_newko_cre LEFT DELETING LEADING space.
SHIFT vg_newko_deb LEFT DELETING LEADING space.
IF vg_newko_cre+0(04) = c_3141 OR
vg_newko_cre+0(08) = c_34010107 OR
vg_newko_cre+0(10) = c_3149510100 OR
vg_newko_cre+0(10) = c_4149162602.
vg_kostl = wa_legado-cod_unorc.
ENDIF.
ENDFORM.

" inicia_dados_transacao_f_63

*&---------------------------------------------------------------------*
*&
Form LANCA_DEB01_CRE50
*&---------------------------------------------------------------------*
FORM lanca_deb01_cre50.
PERFORM insert_item USING:
'X'
' '
' '
' '
' '
' '
' '
' '
' '
' '
' '
' '
'X'
' '
' '
' '
' '
' '
****
' '
' '
' '

'SAPLF040'
'BDC_OKCODE'
'BKPF-BLDAT'
'BKPF-BUDAT'
'BKPF-BLART'
'BKPF-BUKRS'
'BKPF-MONAT'
'BKPF-BKTXT'
'BKPF-XBLNR'
'BKPF-WAERS'
'RF05V-NEWBS'
'RF05V-NEWKO'
'SAPLF040'
'BDC_OKCODE'
'BSEG-ZFBDT'
'BSEG-WRBTR'
'RF05V-NEWBS'
'RF05V-NEWKO'
' ' 'BSEG-ZLSPR'
'BSEG-SGTXT'
'BSEG-ZUONR'
'BSEG-BUPLA'

'0100',
c_ent01,
vg_bldat,
vg_budat,
wa_t003-blart,
wa_t001-bukrs,
wa_legado-dat_contab+4(2),
wa_legado-des_referencia,
wa_legado-ide_referencia,
wa_mercado-cdsap,
vg_newbs_deb,
vg_newko_deb,
'0301',
c_ent01,
vg_zfbdt,
vg_valort,
vg_newbs_cre,
vg_newko_cre,
vg_zlspr,
vg_sgtxt,
wa_legado-num_ocs,
c_filial,

'X'
' '
' '
' '
' '
' '
' '

'SAPLF040'
'BSEG-SGTXT'
'BSEG-ZUONR'
'BSEG-WRBTR'
'BSEG-BUPLA'
'BSEG-VALUT'
'BDC_OKCODE'

'0300',
vg_sgtxt,
wa_legado-num_ocs,
vg_valort,
c_filial,
vg_budat,
c_ent01,

'X' 'SAPLKACB'
' ' 'BDC_OKCODE'

'0002',
c_ent02,

'X' 'SAPLF040'
' ' 'BDC_OKCODE'

'0300',
c_bp,

'X' 'SAPLKACB'
' ' 'BDC_OKCODE'

'0002',
c_ent02.

ENDFORM.

" LANCA_DEB01_CRE50

*&---------------------------------------------------------------------*
*&
Form LANCA_DEB21_CRE50
*&---------------------------------------------------------------------*
FORM lanca_deb21_cre50 .
PERFORM insert_item USING:
'X'
' '
' '
' '
' '
' '
' '
' '
' '
' '
' '
' '
'X'
' '
' '
' '
' '
' '
* ' '
' '
' '
' '

'SAPLF040'
'BDC_OKCODE'
'BKPF-BLDAT'
'BKPF-BUDAT'
'BKPF-BLART'
'BKPF-BUKRS'
'BKPF-MONAT'
'BKPF-BKTXT'
'BKPF-XBLNR'
'BKPF-WAERS'
'RF05V-NEWBS'
'RF05V-NEWKO'

'0100',
c_ent01,
vg_bldat,
vg_budat,
wa_t003-blart,
wa_t001-bukrs,
wa_legado-dat_contab+4(2),
wa_legado-des_referencia,
wa_legado-ide_referencia,
wa_mercado-cdsap,
vg_newbs_deb,
vg_newko_deb,

'SAPLF040'
'BDC_OKCODE'
'BSEG-ZFBDT'
'BSEG-WRBTR'
'RF05V-NEWBS'
'RF05V-NEWKO'
'BSEG-ZLSPR'
'BSEG-SGTXT'
'BSEG-ZUONR'
'BSEG-BUPLA'

'0302',
c_ent01,
vg_zfbdt,
vg_valort,
vg_newbs_cre,
vg_newko_cre,
vg_zlspr,
vg_sgtxt,
wa_legado-num_ocs,
c_filial.

IF vg_bypass_cref IS INITIAL AND


vg_bypass_debf IS INITIAL.
PERFORM insert_item USING:
'X' 'SAPLFWTD'
'0100',
' ' 'BDC_OKCODE'
c_go.
ENDIF.
PERFORM insert_item USING:
'X' 'SAPLF040'
'0300',
' ' 'BSEG-SGTXT'
vg_sgtxt,

'
'
'
'
'

'
'
'
'
'

'BSEG-ZUONR'
'BSEG-WRBTR'
'BSEG-BUPLA'
'BSEG-VALUT'
'BDC_OKCODE'

wa_legado-num_ocs,
vg_valort,
c_filial,
vg_budat,
c_ent01,

'X' 'SAPLKACB'
' ' 'BDC_OKCODE'

'0002',
c_ent02,

'X' 'SAPLF040'
' ' 'BDC_OKCODE'

'0300',
c_bp,

'X' 'SAPLKACB'
' ' 'BDC_OKCODE'

'0002',
c_ent02.

ENDFORM.

" LANCA_DEB21_CRE50

*&---------------------------------------------------------------------*
*&
Form LANCA_DEB40_CRE11
*&---------------------------------------------------------------------*
FORM lanca_deb40_cre11 .
PERFORM insert_item USING:
'X' 'SAPLF040'
'0100',
' ' 'BDC_OKCODE'
c_ent01,
' ' 'BKPF-BLDAT'
vg_bldat,
' ' 'BKPF-BUDAT'
vg_budat,
' ' 'BKPF-BLART'
wa_t003-blart,
' ' 'BKPF-BUKRS'
wa_t001-bukrs,
' ' 'BKPF-MONAT'
wa_legado-dat_contab+4(2),
' ' 'BKPF-BKTXT'
wa_legado-des_referencia,
' ' 'BKPF-XBLNR'
wa_legado-ide_referencia,
' ' 'BKPF-WAERS'
wa_mercado-cdsap,
' ' 'RF05V-NEWBS'
vg_newbs_deb,
' ' 'RF05V-NEWKO'
vg_newko_deb,
'X'
' '
' '
' '
' '
' '
' '
' '
' '

'SAPLF040'
'BSEG-SGTXT'
'BSEG-ZUONR'
'BSEG-WRBTR'
'BSEG-BUPLA'
'BSEG-VALUT'
'RF05V-NEWBS'
'RF05V-NEWKO'
'BDC_OKCODE'

'X' 'SAPLKACB'
' ' 'BDC_OKCODE'
'X'
' '
' '
' '
* ' '
' '
' '
' '

'SAPLF040'
'BDC_OKCODE'
'BSEG-ZFBDT'
'BSEG-WRBTR'
'BSEG-ZLSPR'
'BSEG-SGTXT'
'BSEG-ZUONR'
'BSEG-BUPLA'

'X' 'SAPLF040'
' ' 'BDC_OKCODE'

'0300',
vg_sgtxt,
wa_legado-num_ocs,
vg_valort,
c_filial,
vg_budat,
vg_newbs_cre,
vg_newko_cre,
c_ent01,
'0002',
c_ent02,
'0301',
c_ent01,
vg_zfbdt,
vg_valort,
vg_zlspr,
vg_sgtxt,
wa_legado-num_ocs,
c_filial,
'0301',
c_bp.

ENDFORM.

" LANCA_DEB40_CRE11

*&---------------------------------------------------------------------*
*&
Form LANCA_DEB40_CRE31
*&---------------------------------------------------------------------*
FORM lanca_deb40_cre31 .
PERFORM insert_item USING:
'X'
' '
' '
' '
' '
' '
' '
' '
' '
' '
' '
' '

'SAPLF040'
'BDC_OKCODE'
'BKPF-BLDAT'
'BKPF-BUDAT'
'BKPF-BLART'
'BKPF-BUKRS'
'BKPF-MONAT'
'BKPF-BKTXT'
'BKPF-XBLNR'
'BKPF-WAERS'
'RF05V-NEWBS'
'RF05V-NEWKO'

'0100',
c_ent01,
vg_bldat,
vg_budat,
wa_t003-blart,
wa_t001-bukrs,
wa_legado-dat_contab+4(2),
wa_legado-des_referencia,
wa_legado-ide_referencia,
wa_mercado-cdsap,
vg_newbs_deb,
vg_newko_deb,

'X'
' '
' '
' '
' '
' '
' '
' '
' '

'SAPLF040'
'BSEG-SGTXT'
'BSEG-ZUONR'
'BSEG-WRBTR'
'BSEG-BUPLA'
'BSEG-VALUT'
'RF05V-NEWBS'
'RF05V-NEWKO'
'BDC_OKCODE'

'0300',
vg_sgtxt,
wa_legado-num_ocs,
vg_valort,
c_filial,
vg_budat,
vg_newbs_cre,
vg_newko_cre,
c_ent01,

'X' 'SAPLKACB'
' ' 'BDC_OKCODE'

'0002',
c_ent02,

'X'
' '
' '
' '
' '
' '
' '
' '
' '
' '
' '

'0302',
'=ZK',
vg_zfbdt,
vg_valort,
vg_newbs_cre,
vg_newko_cre,
'Q',
vg_sgtxt,
wa_legado-num_ocs,
vg_valort,
c_filial.

'SAPLF040'
'BDC_OKCODE'
'BSEG-ZFBDT'
'BSEG-WRBTR'
'RF05V-NEWBS'
'RF05V-NEWKO'
'BSEG-ZLSPR'
'BSEG-SGTXT'
'BSEG-ZUONR'
'BSEG-WRBTR'
'BSEG-BUPLA'

IF vg_bypass_cref IS INITIAL AND


vg_bypass_debf IS INITIAL.
PERFORM insert_item USING:
'X' 'SAPLFWTD'
'0100',
' ' 'BDC_OKCODE'
c_go.
ENDIF.
PERFORM insert_item USING:
'X' 'SAPLF040'
'0332',
' ' 'BDC_OKCODE'
'=AB',
*-Incio de Alterao - Eric Doria - 25/07/2011
* ' ' 'BSEG-BVTYP'
'NP01'.

' ' 'BSEG-BVTYP'


vg_bvtyp.
*-Fim de Alterao - Eric Doria - 25/07/2011
PERFORM insert_item USING:
'X' 'SAPLF040'
'0302',
' ' 'BDC_OKCODE'
c_bp.
ENDFORM.
" LANCA_DEB40_CRE31
*----------------------------------------------------------------------*
FORM insert_item USING p_tipo TYPE c p_nome TYPE c p_valor TYPE any.
*----------------------------------------------------------------------*
CLEAR t_bdc.
CASE p_tipo.
WHEN 'X'.
t_bdc-dynbegin
t_bdc-program
t_bdc-dynpro
WHEN ' '.
t_bdc-dynbegin
t_bdc-fnam
t_bdc-fval
ENDCASE.
APPEND t_bdc.

= 'X'.
= p_nome.
= p_valor.
= ' '.
= p_nome.
= p_valor.

ENDFORM.

"INSERT_ITEM

*&---------------------------------------------------------------------*
*&
Form CALL_TRANSACTION
*&---------------------------------------------------------------------*
FORM call_transaction USING p_trans TYPE sy-tcode
zstget005-idmsgs
wa_config STRUCTURE zfi_t_idinterf
CHANGING ps_stprom
vg_erro.
REFRESH t_msg.
DATA: vl_msg(15) TYPE c,
vl_mode TYPE c,
vl_lines TYPE i.
MOVE: c_n TO vl_mode.
CALL TRANSACTION p_trans USING t_bdc
MODE vl_mode
MESSAGES INTO t_msg.
COMMIT WORK.
*-- Mensagem de Sucesso da criao dos documentos pr-editados na F-63
* mensagem nica que garante a gravao correta da tabela ZFI_T_SAP_LEG_R
READ TABLE t_msg WITH KEY msgtyp = 'S'
msgid = 'FP'
msgnr = '001'.
IF sy-subrc EQ 0.
*-- Executa a insero da mensagem / 01 na ZFI_T_SAP_LEG_R
CLEAR: wa_return, vg_dummy.

PERFORM return_error USING t_msg-msgtyp t_msg-msgid t_msg-msgnr


t_msg-msgv1 t_msg-msgv2 t_msg-msgv3
t_msg-msgv4
CHANGING wa_return.
MESSAGE s002(zbc001)
WITH vg_numreg wa_return-message INTO vg_dummy.
PERFORM insere_reg_rastreamento_s USING wa_config.
*-- Monitor - Inicio
CONCATENATE 'Registro:' vg_regc '-' INTO vg_dummy.
PERFORM inserir_log_direto IN PROGRAM zstgei002
USING zstget005-idmsgs
'S'
'ZBC001'
'002'
vg_dummy
wa_return-message
''
''
''.
*-- Logs de Mensagens
PERFORM f_atualiza_timestamp USING zstget005-idmsgs.
*-- Monitor - Fim
ps_stprom = 'C'.
ELSE.
*-- Quando no for encontrada a mensagem S:FP:001, significa que no foi gerado o do
cumento
* porm no necessariamente o batch da F-63 retornar uma msg de erro, portanto deve
mos
* identificar se existe mensagem de ERRO.
*-- Busca mensagem de ERRO da execuo
READ TABLE t_msg WITH KEY msgtyp = 'E'.
IF sy-subrc EQ 0.
CLEAR: wa_return, vg_dummy.
PERFORM return_error USING t_msg-msgtyp t_msg-msgid t_msg-msgnr
t_msg-msgv1 t_msg-msgv2 t_msg-msgv3
t_msg-msgv4
CHANGING wa_return.
MESSAGE e069(zbc001)
WITH vg_numreg wa_return-message INTO vg_dummy.
PERFORM
PERFORM
*-- Monitor PERFORM

insere_reg_rastreamento_e USING wa_config.


insere_log_standard.
Inicio
inserir_log_direto IN PROGRAM zstgei002
USING zstget005-idmsgs
'E'
'ZBC001'
'069'
vg_regc
'ERRO'
''
''
''.

*-- Logs de Mensagens


PERFORM f_atualiza_timestamp USING zstget005-idmsgs.
PERFORM inserir_log_direto IN PROGRAM zstgei002
USING zstget005-idmsgs
t_msg-msgtyp
t_msg-msgid
t_msg-msgnr
t_msg-msgv1
t_msg-msgv2
t_msg-msgv3
t_msg-msgv4
''.
*-- Logs de Mensagens
PERFORM f_atualiza_timestamp USING zstget005-idmsgs.
*-- Monitor - Fim
ps_stprom = 'E'.
ADD 1 TO vg_erro.
ELSE.
*-- Para casos que no exista mensagem de ERRO e no exista a mensagem S:FP:001, no f
oi
* gerado documento pr-editado e portanto assumiremos a primeira mensagem como a
de erro
*

DESCRIBE TABLE t_msg LINES vl_lines.


READ TABLE t_msg INDEX 1.
CLEAR: wa_return, vg_dummy.
PERFORM return_error USING t_msg-msgtyp t_msg-msgid t_msg-msgnr
t_msg-msgv1 t_msg-msgv2 t_msg-msgv3
t_msg-msgv4
CHANGING wa_return.
MESSAGE e069(zbc001)
WITH vg_numreg wa_return-message INTO vg_dummy.
CONCATENATE '(' t_msg-msgid ':' t_msg-msgnr ')' INTO vl_msg.
CONCATENATE vg_dummy vl_msg INTO vg_dummy SEPARATED BY space.

PERFORM
PERFORM
*-- Monitor PERFORM

insere_reg_rastreamento_e USING wa_config.


insere_log_standard.
Inicio
inserir_log_direto IN PROGRAM zstgei002
USING zstget005-idmsgs
'E'
'ZBC001'
'069'
vg_regc
'ERRO'
''
''
''.
*-- Logs de Mensagens
PERFORM f_atualiza_timestamp USING zstget005-idmsgs.
PERFORM inserir_log_direto IN PROGRAM zstgei002
USING zstget005-idmsgs
t_msg-msgtyp
t_msg-msgid
t_msg-msgnr

t_msg-msgv1
t_msg-msgv2
t_msg-msgv3
t_msg-msgv4
''.
*-- Logs de Mensagens
PERFORM f_atualiza_timestamp USING zstget005-idmsgs.
*-- Monitor - Fim
ps_stprom = 'E'.
ADD 1 TO vg_erro.
ENDIF. "sy-subrc EQ 0.
ENDIF. "sy-subrc EQ 0.
REFRESH t_bdc.
ENDFORM.

" CALL_TRANSACTION

*&---------------------------------------------------------------------*
*&
Form RETURN_ERROR
*&---------------------------------------------------------------------*
FORM return_error USING
p_msgty
p_msgid
p_msgnr
p_msgv1
p_msgv2
p_msgv3
p_msgv4
CHANGING p_return TYPE bapiret1.
DATA: v_msgno
v_msgv1
v_msgv2
v_msgv3
v_msgv4
MOVE: p_msgnr
p_msgv1
p_msgv2
p_msgv3
p_msgv4

TYPE sy-msgno,
TYPE sy-msgv1,
TYPE sy-msgv2,
TYPE sy-msgv3,
TYPE sy-msgv4.
TO v_msgno,
TO v_msgv1,
TO v_msgv2,
TO v_msgv3,
TO v_msgv4.

CALL FUNCTION 'BALW_BAPIRETURN_GET1'


EXPORTING
type
= p_msgty
cl
= p_msgid
number
= v_msgno
par1
= v_msgv1
par2
= v_msgv2
par3
= v_msgv3
par4
= v_msgv4
IMPORTING
bapireturn = p_return
EXCEPTIONS
OTHERS
= 9.
ENDFORM.
" RETURN_ERROR
*&---------------------------------------------------------------------*
*&
Form UPLOAD_TIMESTAMP_SERVIDOR
*&---------------------------------------------------------------------*
FORM upload_timestamp_servidor.

DATA: vl_data
vl_hora
vl_times
vl_path
vl_pathname
vl_filename
vl_strname

TYPE
TYPE
TYPE
TYPE
TYPE
TYPE
TYPE

sy-datlo,
sy-timlo,
tzonref-tstamps,
localfile,
zz_de_pathextern,
fileextern,
strukname.

*-Inicializar interface
*-Esta opo executa tambm duas operaes:
*=> ler o arquivo para processamento ou lista arquivos de um diretrio
*=> Testar acesso ao arquivo para gravao
vg_seqnz = 0.
CLEAR vg_substfile.
CALL METHOD zcl_componentes_diversos=>processar_interface
EXPORTING
vl_seqnz
= vg_seqnz
vl_substfile = vg_substfile
IMPORTING
t_data
= t_legado
EXCEPTIONS
open_error = 1.
IF sy-subrc IS INITIAL.
READ TABLE t_legado INTO wa_legado INDEX 1.
IF sy-subrc <> 0.
*
MESSAGE e036(zbc001) WITH sy-subrc c_u vg_path INTO vg_dummy.
MESSAGE e001(zbc001) WITH 'Arquivo sem dados.' INTO vg_dummy.
PERFORM insere_log_standard.
*-- Monitor - Inicio
MOVE: 'E'
TO t_log_direto-tpmsgs,
'ZBC001' TO t_log_direto-clmsgs,
'001'
TO t_log_direto-numsgs,
vg_dummy TO t_log_direto-dummy.
APPEND t_log_direto.
*-- Monitor - Fim
*
vg_subrc = 1.
*
EXIT.
ENDIF.
ELSE.
MESSAGE e132(zbc001) WITH sy-subrc INTO vg_dummy.
PERFORM insere_log_standard.
*-- Monitor - Inicio
MOVE: 'E'
TO t_log_direto-tpmsgs,
'ZBC001' TO t_log_direto-clmsgs,
'132'
TO t_log_direto-numsgs,
vg_dummy TO t_log_direto-dummy.
APPEND t_log_direto.
*-- Monitor - Fim
vg_subrc = 1.
EXIT.
ENDIF.
IF sy-subrc IS NOT INITIAL.
MESSAGE e132(zbc001) WITH sy-subrc INTO vg_dummy.
PERFORM insere_log_standard.
*-- Monitor - Inicio
MOVE: 'E'
TO t_log_direto-tpmsgs,

'ZBC001' TO t_log_direto-clmsgs,
'132'
TO t_log_direto-numsgs,
vg_dummy TO t_log_direto-dummy.
APPEND t_log_direto.
*-- Monitor - Fim
vg_subrc = 1.
EXIT.
ENDIF.
ENDFORM.
"upload_TIMESTAMP_SERVIDOR
*&---------------------------------------------------------------------*
*&
Form UPLOAD_ARQUIVOS_SERVIDOR
*&---------------------------------------------------------------------*
FORM upload_arquivos_servidor.
DATA: vl_data
vl_hora
vl_times
vl_path
vl_pathname
vl_filename
vl_strname

TYPE
TYPE
TYPE
TYPE
TYPE
TYPE
TYPE

char10,
char8,
tzonref-tstamps,
localfile,
zz_de_pathextern,
fileextern,
strukname.

CALL METHOD zcl_componentes_diversos=>processar_interface


EXPORTING
vl_seqnz
= vg_seqnz
vl_substfile = vg_substfile
IMPORTING
t_data
= t_legado
EXCEPTIONS
open_error = 1.
IF sy-subrc IS NOT INITIAL.
vg_subrc = sy-subrc.
EXIT.
ENDIF.
ENDFORM.
" UPLOAD_ARQUIVOS_SERVIDOR
*&---------------------------------------------------------------------*
*&
Form FINALIZA_MIGRACAO
*&---------------------------------------------------------------------*
FORM finaliza_migracao .
GET TIME.
vg_dtfmig = sy-datum.
vg_hrfmig = sy-uzeit.
CALL METHOD zcl_componentes_diversos=>resumo_interface.
ENDFORM.
" FINALIZA_MIGRACAO
*&---------------------------------------------------------------------*
*&
Form INSERE_LOG_STANDARD
*&---------------------------------------------------------------------*
FORM insere_log_standard .
CALL METHOD zcl_componentes_diversos=>inserir_log.
ENDFORM.
" INSERE_LOG_STANDARD
*&---------------------------------------------------------------------*
*&
Form FINALIZA_INTERFACE

*&---------------------------------------------------------------------*
FORM finaliza_interface .
*-- Monitor - Inicio
CALL METHOD zcl_componentes_diversos=>ler_log
RECEIVING
log = t_ler_log[].
LOOP AT t_ler_log INTO wa_log.
APPEND wa_log TO t_log.
ENDLOOP.
*-- Monitor - Fim
CALL METHOD zcl_componentes_diversos=>gravar_log.
ENDFORM.
" FINALIZA_INTERFACE
*&---------------------------------------------------------------------*
*&
Form INSERE_REG_RASTREAMENTO_E
*&---------------------------------------------------------------------*
FORM insere_reg_rastreamento_e USING wa_config STRUCTURE zfi_t_idinterf.
DATA: l_toyear TYPE gjahr.
CHECK wa_config-ret_ger EQ c_x.
l_toyear = sy-datum(4).
SELECT
FROM
INTO
WHERE
AND
AND
AND

SINGLE *
zfi_t_sap_leg_r
zfi_t_sap_leg_r
idinterf
=
ide_referencia =
gjahr
=
statussap
=

p_interf
wa_legado-ide_referencia
l_toyear
'00'.

IF sy-subrc = 0 AND zfi_t_sap_leg_r-flag_enviose = 'X'.


CLEAR zfi_t_sap_leg_r.

CALL FUNCTION 'NUMBER_GET_NEXT'


EXPORTING
nr_range_nr = '01'
object
= 'ZNR_MSGINT'
quantity
= '1'
toyear
= l_toyear " Alterao RANGE DE NUMERAO
IMPORTING
number
= zfi_t_sap_leg_r-msgnr.
zfi_t_sap_leg_r-idinterf
= p_interf.
zfi_t_sap_leg_r-cod_sistema_orig = wa_legado-cod_sistema_origem.
zfi_t_sap_leg_r-ide_referencia = wa_legado-ide_referencia.
zfi_t_sap_leg_r-des_referencia = wa_legado-des_referencia.
zfi_t_sap_leg_r-cod_plano_contas = wa_legado-cod_plano.
zfi_t_sap_leg_r-bukrs
= wa_t001-bukrs.
zfi_t_sap_leg_r-gjahr
= l_toyear.
zfi_t_sap_leg_r-blart
= wa_t003-blart.
zfi_t_sap_leg_r-data_registro
= sy-datum.
zfi_t_sap_leg_r-statussap
= '00'.
zfi_t_sap_leg_r-des_msg_sap
= vg_dummy.
INSERT zfi_t_sap_leg_r FROM zfi_t_sap_leg_r.
COMMIT WORK.

ELSEIF sy-subrc = 4.
CALL FUNCTION 'NUMBER_GET_NEXT'
EXPORTING
nr_range_nr = '01'
object
= 'ZNR_MSGINT'
quantity
= '1'
*
toyear
= l_toyear " Alterao RANGE DE NUMERAO
IMPORTING
number
= zfi_t_sap_leg_r-msgnr.
zfi_t_sap_leg_r-idinterf
= p_interf.
zfi_t_sap_leg_r-cod_sistema_orig = wa_legado-cod_sistema_origem.
zfi_t_sap_leg_r-ide_referencia = wa_legado-ide_referencia.
zfi_t_sap_leg_r-des_referencia = wa_legado-des_referencia.
zfi_t_sap_leg_r-cod_plano_contas = wa_legado-cod_plano.
zfi_t_sap_leg_r-bukrs
= wa_t001-bukrs.
zfi_t_sap_leg_r-gjahr
= l_toyear.
zfi_t_sap_leg_r-blart
= wa_t003-blart.
zfi_t_sap_leg_r-data_registro
= sy-datum.
zfi_t_sap_leg_r-statussap
= '00'.
zfi_t_sap_leg_r-des_msg_sap
= vg_dummy.
INSERT zfi_t_sap_leg_r FROM zfi_t_sap_leg_r.
COMMIT WORK.
ENDIF.
ENDFORM.
" INSERE_REG_RASTREAMENTO_E
*&---------------------------------------------------------------------*
*&
Form INSERE_REG_RASTREAMENTO_S
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
* --> p1
text
* <-- p2
text
*----------------------------------------------------------------------*
FORM insere_reg_rastreamento_s USING wa_config STRUCTURE zfi_t_idinterf.
DATA: l_toyear TYPE gjahr.
CHECK wa_config-ret_ger EQ c_x.
l_toyear = sy-datum(4).
CLEAR zfi_t_sap_leg_r.
CALL FUNCTION 'NUMBER_GET_NEXT'
EXPORTING
nr_range_nr = '01'
object
= 'ZNR_MSGINT'
quantity
= '1'
*
toyear
= l_toyear " Alterao RANGE DE NUMERAO
IMPORTING
number
= zfi_t_sap_leg_r-msgnr.
zfi_t_sap_leg_r-idinterf
zfi_t_sap_leg_r-cod_sistema_orig
zfi_t_sap_leg_r-ide_referencia
zfi_t_sap_leg_r-des_referencia
zfi_t_sap_leg_r-cod_plano_contas
zfi_t_sap_leg_r-bukrs

=
=
=
=
=
=

p_interf.
wa_legado-cod_sistema_origem.
wa_legado-ide_referencia.
wa_legado-des_referencia.
wa_legado-cod_plano.
wa_t001-bukrs.

zfi_t_sap_leg_r-gjahr
= l_toyear.
zfi_t_sap_leg_r-belnr
= t_msg-msgv1.
zfi_t_sap_leg_r-blart
= wa_t003-blart.
zfi_t_sap_leg_r-data_registro
= sy-datum.
zfi_t_sap_leg_r-statussap
= '01'.
zfi_t_sap_leg_r-des_msg_sap
= vg_dummy.
INSERT zfi_t_sap_leg_r FROM zfi_t_sap_leg_r.
COMMIT WORK.
ENDFORM.
" INSERE_REG_RASTREAMENTO_S
*&---------------------------------------------------------------------*
*&
Form F_BUSCA_PRIORIDADE
*&---------------------------------------------------------------------*
*
Buscando prioridade cadastrada
*----------------------------------------------------------------------*
FORM f_busca_prioridade USING p_config_prioridade
p_range
CHANGING p_newko.
CLEAR: r_lifnr, r_lifnr[], r_kunnr, r_kunnr[],
vg_prio1, vg_prio2, vg_prio3, vg_prio4,
vg_prio5.
*-- Range de Fornecedores/Clientes encontrados
CASE p_range.
WHEN c_f. "Fornecedor
LOOP AT t_lfa1 INTO wa_lfa1.
MOVE: c_i TO r_lifnr-sign,
c_eq TO r_lifnr-option,
wa_lfa1-lifnr TO r_lifnr-low.
APPEND r_lifnr.
ENDLOOP.
*-- Config de campos tabela ZFI_T_IDINTERF
SPLIT p_config_prioridade AT ';'
INTO vg_prio1 vg_prio2 vg_prio3
vg_prio4 vg_prio5.
IF sy-subrc EQ 0.
*-- Niveis de Prioridade
prioridade r_lifnr vg_prio1 vg_prio2
vg_prio3 vg_prio4 vg_prio5
p_newko.
ENDIF.
WHEN c_c. "Cliente
LOOP AT t_kna1 INTO wa_kna1.
MOVE: c_i TO r_kunnr-sign,
c_eq TO r_kunnr-option,
wa_kna1-kunnr TO r_kunnr-low.
APPEND r_kunnr.
ENDLOOP.
*-- Config de campos tabela ZFI_T_IDINTERF
SPLIT p_config_prioridade AT ';'
INTO vg_prio1 vg_prio2 vg_prio3
vg_prio4 vg_prio5.
IF sy-subrc EQ 0.
*-- Niveis de Prioridade
prioridade r_kunnr vg_prio1 vg_prio2

vg_prio3 vg_prio4 vg_prio5


p_newko.
ENDIF.
ENDCASE.
ENDFORM.
" F_BUSCA_PRIORIDADE
*&---------------------------------------------------------------------*
*&
Form F_BUSCA_BVTYP
*&---------------------------------------------------------------------*
*
Buscando BVTYP - Tipo de banco do parceiro
*----------------------------------------------------------------------*
FORM f_busca_bvtyp USING p_newko.
DATA: vl_lines TYPE i.
CLEAR vg_bvtyp.
IF wa_t003-blart EQ c_l2.
SELECT lifnr bvtyp bkref
FROM lfbk
INTO TABLE t_lfbk
WHERE lifnr EQ p_newko
AND bkref EQ c_auto.
IF sy-subrc EQ 0.
DESCRIBE TABLE t_lfbk LINES vl_lines.
IF vl_lines GT 1.
MOVE: space TO vg_bvtyp.
ELSE.
READ TABLE t_lfbk INTO wa_lfbk INDEX 1.
MOVE: wa_lfbk-bvtyp TO vg_bvtyp.
ENDIF.
ELSE.
MOVE: space TO vg_bvtyp.
ENDIF.
ELSE.
SELECT SINGLE bvtyp
FROM lfbk
INTO vg_bvtyp
WHERE lifnr EQ p_newko
AND bkref EQ c_auto.
IF sy-subrc NE 0.
MOVE: space TO vg_bvtyp.
ENDIF.
ENDIF.
ENDFORM.
" F_BUSCA_BVTYP
*---------------------------------------------------------------------*
*
Form F_ATUALIZA_TIMESTAMP
*---------------------------------------------------------------------*
*
Atualizao do Timestamp da tabela ZSTGET009
*
Cadastro de mensagens de LOG do Monitor de interfaces
*---------------------------------------------------------------------*
FORM f_atualiza_timestamp USING p_idmsgs.
DATA: vl_dthrlg(16) TYPE c,
vl_numlog TYPE zstget009-numlog,
vl_cprog(40) TYPE c.

CONCATENATE sy-datum sy-uzeit INTO vl_dthrlg.


SELECT MAX( numlog ) INTO vl_numlog
FROM zstget009
WHERE idmsgs = p_idmsgs.
IF sy-subrc EQ 0.
IF sy-cprog NE 'ZFI_I_CONTABILIZACAO_FATURAS'.
MOVE 'ZFI_F_INTERFACE_EXEC_BATCH' TO vl_cprog.
ELSE.
MOVE sy-cprog TO vl_cprog.
ENDIF.
UPDATE zstget009 SET dthrlg
tcode
WHERE idmsgs
AND numlog

=
=
=
=

vl_dthrlg
vl_cprog
p_idmsgs
vl_numlog.

IF sy-subrc EQ 0.
COMMIT WORK AND WAIT.
ENDIF.
ENDIF.
ENDFORM.
" F_ATUALIZA_TIMESTAMP
*---------------------------------------------------------------------*
*
Form F_ATUALIZA_STPROM
*---------------------------------------------------------------------*
*
Atualiza status da mensagem na tabela de controle do monitor
*---------------------------------------------------------------------*
FORM f_atualiza_stprom USING p_stprom
p_idmsgs.
UPDATE zstget005 SET stprom = p_stprom
WHERE idmsgs = p_idmsgs.
IF sy-subrc EQ 0.
COMMIT WORK AND WAIT.
ENDIF.
ENDFORM.

" F_ATUALIZA_STPROM

*&---------------------------------------------------------------------*
*&
Form enviar_email
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
FORM enviar_email USING st_zstget005 STRUCTURE zstget005.
TYPES:
BEGIN OF ty_dados,
data
TYPE
hora
TYPE
tcode
TYPE
msgtyp
TYPE
msgid
TYPE
msgnr
TYPE
texto
TYPE
END OF ty_dados.

sy-datum,
sy-uzeit,
zstget009-tcode,
zstget009-msgtyp,
zstget009-msgid,
zstget009-msgnr,
bapiret2-message,

DATA: it_zstget002
it_zstget009
it_dados
it_email
it_body

TYPE
TYPE
TYPE
TYPE
TYPE

STANDARD TABLE OF zstget002,


STANDARD TABLE OF zstget009,
STANDARD TABLE OF ty_dados,
somlreci1_t,
ccrctt_text_tab.

DATA: st_zstget002
st_zstget009
st_dados
st_email
st_body
st_param

TYPE
TYPE
TYPE
TYPE
TYPE
TYPE

zstget002,
zstget009,
ty_dados,
somlreci1,
solisti1,
zstparam_email.

DATA: l_timezone
l_data_c(10)
l_hora_c(8)
l_status(5)
l_persnumber

TYPE
TYPE
TYPE
TYPE
TYPE

timezone,
c,
c,
c,
usr21-persnumber.

DATA: g_timezone
* Buscar
SELECT
FROM
WHERE
AND

TYPE timezone VALUE 'UTC'.

destinatrios interface
* INTO TABLE it_zstget002
zstget002
codint = st_zstget005-codint
staler = ps_stprom.

CHECK sy-subrc EQ 0.
LOOP AT it_zstget002
st_email-receiver
st_email-rec_type
APPEND st_email TO
ENDLOOP.

INTO st_zstget002.
= st_zstget002-email.
= 'U'.
it_email.

* Buscar e-mail do usurio do legado se opo marcada


IF st_zstget002-envleg = 'X'.
*-- Buscar
SELECT
FROM
WHERE

PERSNUMBER
SINGLE persnumber INTO l_persnumber
usr21
bname = st_zstget005-nomusu.

IF sy-subrc EQ 0.
CLEAR st_email.
*---- Buscar e-mail
SELECT smtp_addr INTO st_email-receiver
FROM adr6
WHERE persnumber = l_persnumber.
ENDSELECT.
IF NOT st_email-receiver IS INITIAL.
st_email-rec_type = 'U'.
APPEND st_email TO it_email.
ENDIF.
ENDIF.

ENDIF.
* Selecionar LOG j gravados
SELECT * INTO TABLE it_zstget009
FROM zstget009
WHERE idmsgs = st_zstget005-idmsgs.
SORT it_zstget009 BY dthrlg numlog.
* Montar dados do corpo do e-mail
LOOP AT it_zstget009 INTO st_zstget009.
MOVE-CORRESPONDING st_zstget009 TO st_dados.
CONVERT TIME STAMP st_zstget009-dthrlg TIME ZONE g_timezone
INTO DATE st_dados-data
TIME st_dados-hora.
CALL FUNCTION 'MASS_MESSAGE_GET'
EXPORTING
arbgb
= st_zstget009-msgid
msgnr
= st_zstget009-msgnr
msgv1
= st_zstget009-msgv1
msgv2
= st_zstget009-msgv2
msgv3
= st_zstget009-msgv3
msgv4
= st_zstget009-msgv4
IMPORTING
msgtext
= st_dados-texto
EXCEPTIONS
message_not_found = 1
OTHERS
= 2.
APPEND st_dados TO it_dados.
ENDLOOP.
IF ps_stprom = 'E'.
l_status = 'Erro'.
ELSE.
l_status = 'Falha'.
ENDIF.
* Montar cabealho
st_body-line = '<HTML>'.
APPEND st_body TO it_body.
st_body-line = '<BODY>'.
APPEND st_body TO it_body.
st_body-line = '<font FACE=Verdana>'.
APPEND st_body TO it_body.
CONCATENATE '<p><h2>' 'Log de execuo de interface' '</h2></p>'
INTO st_body-line.
APPEND st_body TO it_body.
CONCATENATE '<p><b>' 'Cdigo Interface:' '</b>'
st_zstget005-codint '</b></p>' INTO st_body-line.
APPEND st_body TO it_body.
CONCATENATE '<p><b>' 'ID Mensagem SAP:' '</b>'

st_zstget005-idmsgs '</p>' INTO st_body-line.


APPEND st_body TO it_body.
CONCATENATE '<p><b>' 'Status:' '</b>' l_status '</b></p>'
INTO st_body-line.
APPEND st_body TO it_body.
st_body-line = '</font>'.
APPEND st_body TO it_body.
CONCATENATE '<table border = "1" cellspacing="0" cellpadding="3"'
'style="font-family: Arial, Verdana;font-weight: normal;'
'font-size: 12pt; border-style:solid;'
'border-color:#F0FFFF;">'
INTO st_body-line SEPARATED BY ' '.
APPEND st_body TO it_body.
st_body-line = '<tr bgcolor=#C9C9C9 style="color:black">'.
APPEND st_body TO it_body.
st_body-line = '<td align="center"><font size=4>Data</font></td>'.
APPEND st_body TO it_body.
st_body-line = '<td align="center"><font size=4>Hora</font></td>'.
APPEND st_body TO it_body.
CONCATENATE '<td align="center"><font size=4>' 'Transao'
'</font></td>' INTO st_body-line.
APPEND st_body TO it_body.
st_body-line = '<td align="center"><font size=4>Tp.Msg.</font></td>'.
APPEND st_body TO it_body.
st_body-line =
'<td align="center"><font size=4>ID Mensagem</font></td>'.
APPEND st_body TO it_body.
st_body-line =
'<td align="center"><font size=4>N. Mensagem</font></td>'.
APPEND st_body TO it_body.
st_body-line =
'<td align="center"><font size=4>Texto Mensagem</font></td>'.
APPEND st_body TO it_body.
st_body-line = '</tr>'.
APPEND st_body TO it_body.
LOOP AT it_dados INTO st_dados.
WRITE st_dados-data TO l_data_c.
WRITE st_dados-hora TO l_hora_c.
st_body-line = '<tr>'.
APPEND st_body TO it_body.
CONCATENATE '<td align="center">'
INTO st_body-line.
APPEND st_body TO it_body.
CONCATENATE '<td align="center">'
INTO st_body-line.
APPEND st_body TO it_body.
CONCATENATE '<td align="center">'
INTO st_body-line.
APPEND st_body TO it_body.
CONCATENATE '<td align="center">'
INTO st_body-line.
APPEND st_body TO it_body.
CONCATENATE '<td align="center">'
INTO st_body-line.

l_data_c '</td>'
l_hora_c '</td>'
st_dados-tcode '</td>'
st_dados-msgtyp '</td>'
st_dados-msgid '</td>'

APPEND st_body TO it_body.


CONCATENATE '<td align="center">' st_dados-msgnr '</td>'
INTO st_body-line.
APPEND st_body TO it_body.
CONCATENATE '<td align="left">' st_dados-texto '</td>'
INTO st_body-line.
APPEND st_body TO it_body.
st_body-line = '</tr>'.
APPEND st_body TO it_body.
ENDLOOP.
st_body-line = '</table>'.
APPEND st_body TO it_body.
st_body-line = '</BODY>'.
APPEND st_body TO it_body.
st_body-line = '</HTML>'.
APPEND st_body TO it_body.
CONCATENATE 'Log de execuo da interface:' st_zstget005-codint
INTO st_param-titulo.
st_param-tpcorp = 'HTM'.
CALL FUNCTION 'Z_ENVIAR_EMAIL'
EXPORTING
st_param
= st_param
it_email
= it_email
it_body
= it_body
pe_submit
= 'X'
EXCEPTIONS
erro_ao_enviar_email = 1
OTHERS
= 2.
ENDFORM.

" enviar_email

Das könnte Ihnen auch gefallen