Escolar Documentos
Profissional Documentos
Cultura Documentos
TYPE c,
*&---------------------------------------------------------------------*
*& Definio de variveis
*&---------------------------------------------------------------------*
DATA: vg_dummy TYPE string.
" Varivel para mensagem
*&---------------------------------------------------------------------*
*& Definio de tabelas internas
*&---------------------------------------------------------------------*
DATA:
t_tctrmigracao TYPE STANDARD TABLE OF zfi_tctrmigracao,
t_infile
TYPE STANDARD TABLE OF y_infile,
t_infileer
t_dadmercado
t_interfaces
t_periodo
t_deparaanb
t_vtb_market
TYPE
TYPE
TYPE
TYPE
TYPE
TYPE
STANDARD
TABLE OF
TABLE OF
TABLE OF
TABLE OF
TABLE OF
TABLE OF y_infile,
zfi_t_dadmercado,
y_interfaces,
y_interfaces,
y_deparaanb,
vtb_market.
*&---------------------------------------------------------------------*
*& Definio de work areas
*&---------------------------------------------------------------------*
DATA:
wa_tctrmigracao TYPE zfi_tctrmigracao,
wa_infile
TYPE string,
wa_serieser
TYPE string,
wa_interfaces
TYPE y_interfaces,
wa_periodo
TYPE y_interfaces,
wa_interface
TYPE zbc_t_interface,
wa_deparaanb
TYPE y_deparaanb,
wa_vtb_market
TYPE vtb_market.
*&---------------------------------------------------------------------*
*& Definio de ranges
*&---------------------------------------------------------------------*
DATA rg_ftdad TYPE RANGE OF zfi_t_dadmercado-ftdad.
*&---------------------------------------------------------------------*
*& Definio variveis globais
*&---------------------------------------------------------------------*
DATA:
vg_seqnz
TYPE seqnz,
vg_path
TYPE localfile,
vg_timestamp
TYPE char16,
vg_substfile
TYPE localfile,
vg_subrc
TYPE sy-subrc,
vg_indnegativo TYPE c.
*&---------------------------------------------------------------------*
*& Definio de constantes
*&---------------------------------------------------------------------*
CONSTANTS:
c_txt(04)
TYPE c
VALUE '.TXT',
c_serieser
TYPE string
VALUE 'ERROS_SERIES',
c_series
TYPE string
VALUE 'SERIES',
c_only(04)
TYPE c
VALUE 'ONLI',
c_bar(01)
TYPE c
VALUE '/',
c_u(01)
TYPE c
VALUE '_',
c_x(01)
TYPE c
VALUE 'X',
c_menos
TYPE c
VALUE '-',
c_01
TYPE vtb_market-sclass VALUE '01',
c_03
TYPE vtb_market-sclass VALUE '03'.
*&---------------------------------------------------------------------*
*& Declarao de Telas de Seleo
*&---------------------------------------------------------------------*
*&---------------------------------------------------------------------*
*& Definio de parmetros
*&---------------------------------------------------------------------*
***********************************************************************
* PARMETROS
SELECTION-SCREEN BEGIN OF BLOCK list WITH FRAME TITLE text-sel.
PARAMETERS: p_buk TYPE t001-bukrs OBLIGATORY.
PARAMETERS: "rb_tds RADIOBUTTON GROUP g001 DEFAULT 'X', " Todos os sistemas
rb_ser RADIOBUTTON GROUP g001 DEFAULT 'X', " Sistema Series
rb_blm RADIOBUTTON GROUP g001,
" Sistema Bloomberg
rb_anb RADIOBUTTON GROUP g001,
" Sistema Ambima
rb_bmf RADIOBUTTON GROUP g001.
" Sistema BM&FBOVESPA
PARAMETERS: p_idmem TYPE char20 NO-DISPLAY.
SELECTION-SCREEN END OF BLOCK list.
SELECTION-SCREEN BEGIN OF BLOCK 100 WITH FRAME TITLE text-100.
PARAMETERS:
p_pathl
TYPE localfile DEFAULT text-002 OBLIGATORY,
p_direl
TYPE localfile DEFAULT text-002 OBLIGATORY,
p_dires
TYPE localfile DEFAULT text-003 OBLIGATORY.
*Bruno
*p_idtes(30) TYPE c
*
DEFAULT 'Teste Integrado 01' OBLIGATORY.
SELECTION-SCREEN END OF BLOCK 100.
SELECTION-SCREEN BEGIN OF BLOCK 200 WITH FRAME TITLE text-200.
PARAMETER: rb_locl RADIOBUTTON GROUP rb01 DEFAULT 'X', "Local
rb_serv RADIOBUTTON GROUP rb01.
"Servidor
SELECTION-SCREEN END OF BLOCK 200.
*&---------------------------------------------------------------------*
* Evento INITIALIZATION
*&---------------------------------------------------------------------*
INITIALIZATION.
DATA: vl_interface TYPE zz_de_interface VALUE sy-repid.
REFRESH: t_interfaces, t_periodo.
CLEAR: wa_interface.
SELECT domvalue_l ddtext
INTO TABLE t_interfaces
FROM dd07t
WHERE domname
EQ 'ZZDO_FTDAD'
AND ddlanguage EQ sy-langu.
SELECT domvalue_l ddtext
INTO TABLE t_periodo
FROM dd07t
WHERE domname
EQ 'ZZDO_PERIODIC' "BENUN - 02/08/11
*
WHERE domname
EQ 'ZZDO_FTDAD'
"BENUN - 02/08/11
AND ddlanguage EQ sy-langu.
*&---------------------------------------------------------------------*
* Eventos
*&---------------------------------------------------------------------*
AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_pathl.
DATA: vl_path TYPE rlgrap-filename.
CALL FUNCTION 'KD_GET_FILENAME_ON_F4'
EXPORTING
mask
= ',*.*,*.*.'
CHANGING
file_name = vl_path.
p_pathl = vg_path = vl_path.
* BENUN - 02/08/11 - INICIO
*AT SELECTION-SCREEN OUTPUT.
* PROGRAMA HABILIDO PARA FUNCIONAR COM QUALQUER FONTE
* CHECK rb_anb IS INITIAL
* AND rb_bmf IS INITIAL.
*
**** Determinando que as opes para as interfaces do ANBIMA e BM&F
**** sejam invisivis ao usurio, pois sero chamadas somente atravs de RFC
* LOOP AT SCREEN.
*
IF screen-name CS 'RB_ANB'
*
OR screen-name CS 'RB_BMF'.
*
screen-output
= 0.
*
screen-invisible = 1.
*
ENDIF.
*
MODIFY SCREEN.
* ENDLOOP.
* BENUN - 02/08/11 - FIM
AT SELECTION-SCREEN.
*** Determinando os sistemas de interface para a tabela De-Para (ZFI_T_DADMERCAD
O)
DATA: lwa_ftdad LIKE LINE OF rg_ftdad.
FREE: rg_ftdad.
lwa_ftdad-sign = 'I'.
lwa_ftdad-option = 'EQ'.
CASE 'X'.
*
WHEN rb_tds.
** BENUN - 02/08/2011 - INICIO
**
DO sy-dbcnt TIMES.
**
lwa_ftdad-low = sy-index.
**
APPEND lwa_ftdad TO rg_ftdad.
**
ENDDO.
*
CLEAR: lwa_ftdad.
*
lwa_ftdad-sign = 'I'.
*
lwa_ftdad-option = 'BT'.
*
lwa_ftdad-low = '1'.
*
lwa_ftdad-high = '4'.
*
APPEND lwa_ftdad TO rg_ftdad.
* BENUN - 02/08/2011 - FIM
WHEN rb_ser.
lwa_ftdad-low = '1'.
APPEND lwa_ftdad TO rg_ftdad.
WHEN rb_blm.
lwa_ftdad-low = '2'.
APPEND lwa_ftdad TO rg_ftdad.
WHEN rb_anb.
lwa_ftdad-low = '3'.
APPEND lwa_ftdad TO rg_ftdad.
WHEN rb_bmf.
lwa_ftdad-low = '4'.
*
*
LEAVE LIST-PROCESSING.
ELSE.
CHECK vg_subrc IS INITIAL.
PERFORM critica_parametros.
PERFORM upload_arquivos_servidor.
*
ENDIF.
ENDIF.
* Busca Dados de Controle
PERFORM f_busca_ddctrl.
* Solicita dados aos Sistemas Legados
PERFORM f_soldd_sisleg.
* Gravao dos dados
PERFORM f_grava_dados.
PERFORM finaliza_migracao.
*&---------------------------------------------------------------------*
*&
Form F_BUSCA_DDCTRL
*&---------------------------------------------------------------------*
*
Busca Dados de Controle
*----------------------------------------------------------------------*
FORM f_busca_ddctrl .
*** Busca os dados de De-Para
PERFORM f_busca_depara.
ENDFORM.
" F_BUSCA_DDCTRL
LEAVE LIST-PROCESSING.
ENDIF.
ENDFORM.
" F_BUSCA_DEPARA
*&---------------------------------------------------------------------*
*&
Form F_SOLDD_SISLEG
*&---------------------------------------------------------------------*
*
Solicita dados aos Sistemas Legados
*----------------------------------------------------------------------*
FORM f_soldd_sisleg .
*&---------------------------------------------------------------------*
*& Definio de constantes
*&---------------------------------------------------------------------*
DATA: tl_series_sap
TYPE TABLE OF zfi_e_carga_series,
tl_series_sap_aux TYPE TABLE OF zfi_e_carga_series.
DATA: vl_arqmonit TYPE string,
vl_msg
TYPE string VALUE 'OK'.
FREE: t_vtb_market.
tl_series_sap[] = t_infile[].
SORT t_dadmercado BY cdext ASCENDING
ftdad ASCENDING
*--> Eric Doria - 19.11.2011
*>>> BEGIN <<<
*
stati DESCENDING "BENUN - 14/07/11
stati DESCENDING "ERIC - 19/11/11
*>>> END <<<
tpval ASCENDING.
* Preparar os dados para a incluso dos dados no SAP
PERFORM f_prepara_ddsap TABLES tl_series_sap
t_vtb_market
USING wa_interfaces.
ENDFORM.
" F_SOLDD_SISLEG
*&---------------------------------------------------------------------*
*&
Form F_INSERE_LOG_STANDARD
*&---------------------------------------------------------------------*
FORM f_insere_log_standard .
CALL METHOD zcl_componentes_diversos=>inserir_log
EXPORTING
vl_idmen = wa_interface-idmen.
ENDFORM.
" F_INSERE_LOG_STANDARD
*&---------------------------------------------------------------------*
*&
Form F_PREPARA_DDSAP
*&---------------------------------------------------------------------*
*
Preparar os dados para a incluso dos dados no SAP
*----------------------------------------------------------------------*
*
-->P_SERIES_SAP
Tabela com os dados do sistema legado
*
-->P_VTB_MARKET
Tabela para os dados a serem cadastrados
*
-->P_INTERFACE
Interface Executada
*----------------------------------------------------------------------*
FORM f_prepara_ddsap TABLES p_series_sap STRUCTURE zfi_e_carga_series
p_vtb_market STRUCTURE vtb_market
USING
p_interface STRUCTURE wa_interfaces.
*&---------------------------------------------------------------------*
*& Definio de work areas
*&---------------------------------------------------------------------*
DATA: wa_series_sap TYPE zfi_e_carga_series.
DATA: lv_tpval LIKE zfi_t_dadmercado-tpval.
REFRESH: t_deparaanb.
SORT p_series_sap BY ideserie ASCENDING.
LOOP AT p_series_sap INTO wa_series_sap.
*** Registrando valores de Fechamento
PERFORM f_registra_dados TABLES p_vtb_market
USING wa_series_sap
p_interface
*
'F'.
"BENUN - 02/08/11
CHANGING lv_tpval."BENUN - 02/08/11
* BENUN - 02/08/11 - INICIO
*** Registrando valores Mdios
*
PERFORM f_registra_dados TABLES p_vtb_market
*
USING wa_series_sap
*
p_interface
*
'M'.
* BENUN - 02/08/11 - FIM
ENDLOOP.
ENDFORM.
" F_PREPARA_DDSAP
*&---------------------------------------------------------------------*
*&
Form F_VER_PERIOD
*&---------------------------------------------------------------------*
*
Verifica a periodicidade de execuo
*----------------------------------------------------------------------*
*
-->P_DDMERC Dados de De-Para para Dados de Mercado
*
<--P_GRAVA Grava Registro
*----------------------------------------------------------------------*
FORM f_ver_period USING
p_ddmerc STRUCTURE zfi_t_dadmercado
CHANGING p_grava.
CLEAR: p_grava.
*** Verificando o intervalo para a periodicidade
CASE p_ddmerc-perio.
WHEN 1. "Dirio
PERFORM f_ver_intervalo USING
zfi_t_dadmercado-dtmoe
p_ddmerc-perio
1
CHANGING p_grava.
WHEN 2. "Semanal
PERFORM f_ver_intervalo USING
zfi_t_dadmercado-dtmoe
p_ddmerc-perio
7
CHANGING p_grava.
WHEN 3. "Mensal
PERFORM f_ver_intervalo USING
zfi_t_dadmercado-dtmoe
p_ddmerc-perio
1
CHANGING p_grava.
WHEN 4. "Trimestral
PERFORM f_ver_intervalo USING
zfi_t_dadmercado-dtmoe
p_ddmerc-perio
3
CHANGING p_grava.
WHEN 5. "Semestral
PERFORM f_ver_intervalo USING
zfi_t_dadmercado-dtmoe
p_ddmerc-perio
6
CHANGING p_grava.
WHEN 6. "Anual
PERFORM f_ver_intervalo USING
zfi_t_dadmercado-dtmoe
p_ddmerc-perio
1
CHANGING p_grava.
WHEN OTHERS.
ENDCASE.
ENDFORM.
" F_VER_PERIOD
*&---------------------------------------------------------------------*
*&
Form F_VER_INTERVALO
*&---------------------------------------------------------------------*
*
Verificando o intervalo para a periodicidade
*----------------------------------------------------------------------*
*
-->P_DATA
Data da ltima execuo
*
-->P_PERIO
Periodicidade
*
-->P_INTERVALO Valor do Intervalo
*
<--P_GRAVA
Grava Registro
*----------------------------------------------------------------------*
FORM f_ver_intervalo USING
p_data
p_perio
p_intervalo
CHANGING p_grava.
*&---------------------------------------------------------------------*
*& Definio de variveis
*&---------------------------------------------------------------------*
DATA: vl_intervalo TYPE i,
" Intervalo entre datas
vl_interdia TYPE i,
" Intervalo em dias
vl_intermes TYPE i,
" Intervalo em mes
vl_interano TYPE i,
" Intervalo em ano
vl_dtmoe
TYPE zfi_t_dadmercado-dtmoe.
CLEAR: p_grava, vl_intervalo, vl_dtmoe.
vl_dtmoe = p_data.
IF vl_dtmoe IS INITIAL.
vl_dtmoe = '19000101'.
ENDIF.
CALL FUNCTION 'FIMA_DAYS_AND_MONTHS_AND_YEARS'
EXPORTING
i_date_from
= vl_dtmoe
i_date_to
= sy-datum
i_flg_separate = 'X'
IMPORTING
e_days
= vl_interdia
e_months
= vl_intermes
e_years
= vl_interano.
CASE p_perio.
WHEN '1'. "Se dirio = 1 dia
*
*
ENDFORM.
" F_VER_INTERVALO
*&---------------------------------------------------------------------*
*&
Form F_GRAVA_DADOS
*&---------------------------------------------------------------------*
*
Gravao dos dados
*----------------------------------------------------------------------*
FORM f_grava_dados.
* BENUN - 02/08/11 - INICIO
IF t_vtb_market[] IS INITIAL
AND vg_indnegativo IS INITIAL.
* IF t_vtb_market[] IS INITIAL.
CLEAR: vg_dummy.
MESSAGE e137(bp) INTO vg_dummy.
PERFORM f_insere_log_standard.
EXIT.
ELSEIF t_vtb_market[] IS INITIAL.
EXIT.
ENDIF.
* BENUN - 02/08/11 - INICIO
SORT: t_vtb_market BY sclass ASCENDING
rkey1 ASCENDING
ddate ASCENDING.
CALL FUNCTION 'MESSAGES_INITIALIZE' .
CALL FUNCTION 'TB_DATAFEED_R3TABLES_UPDATE'
EXPORTING
message_collect = 'X'
TABLES
sap_answer
= t_vtb_market
EXCEPTIONS
update_error
= 1.
IF sy-subrc <> 0.
CLEAR: vg_dummy.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4 INTO vg_dummy.
PERFORM f_insere_log_standard.
ENDIF.
SORT: t_vtb_market BY rdone
sclass
rkey1
ddate
t_dadmercado BY cdsap
ASCENDING
ASCENDING
ASCENDING
ASCENDING,
ASCENDING.
*
*
*
*
*
*
*
WITH KEY
rkey1 = wa_vtb_market-rkey1.
READ TABLE t_dadmercado INTO zfi_t_dadmercado
WITH KEY
cdsap = wa_deparaanb-ideserie
BINARY SEARCH.
ENDIF.
READ TABLE t_dadmercado INTO zfi_t_dadmercado
WITH KEY
cdsap = wa_vtb_market-rkey1
BINARY SEARCH.
*BENUN - 03/08/11 - FIM
IF sy-subrc IS INITIAL.
zfi_t_dadmercado-dtmoe = sy-datum.
MODIFY t_dadmercado FROM zfi_t_dadmercado INDEX sy-tabix
TRANSPORTING dtmoe.
UPDATE zfi_t_dadmercado
*
SET dtmoe = sy-datum "BENUN - 22/06/2011
SET dtmoe = wa_vtb_market-ddate
aenam = sy-uname "BENUN - 06/07/2011
aedat = sy-datum "BENUN - 06/07/2011
aezet = sy-uzeit "BENUN - 06/07/2011
WHERE cdsap = zfi_t_dadmercado-cdsap.
*
WHERE cdsap = wa_vtb_market-rkey1.
IF sy-subrc IS INITIAL.
COMMIT WORK.
CLEAR: vg_dummy.
MESSAGE s000(zfi)
WITH wa_vtb_market-sclass wa_vtb_market-rkey1
text-suc
INTO vg_dummy.
PERFORM f_insere_log_standard.
ELSE.
CLEAR: vg_dummy.
MESSAGE e000(zfi)
WITH wa_vtb_market-sclass wa_vtb_market-rkey1
text-e02
INTO vg_dummy.
PERFORM f_insere_log_standard.
ENDIF.
ENDIF.
ELSE.
CLEAR: vg_dummy.
*
MESSAGE s000(zfi)
MESSAGE e000(zfi)
WITH wa_vtb_market-sclass wa_vtb_market-rkey1
wa_vtb_market-error
INTO vg_dummy.
PERFORM f_insere_log_standard.
ENDIF.
ENDLOOP.
ENDFORM.
" F_GRAVA_DADOS
*&---------------------------------------------------------------------*
*&
Form F_REGISTRA_DADOS
*&---------------------------------------------------------------------*
*
Registrando valores de Fechamento
*----------------------------------------------------------------------*
*
-->P_SERIES_SAP Registro legado
*
-->P_INTERFACE Registro de tipo de interface
*
-->P_TPVAL
Tipo de valor do registro
*
F - Valor Fechamento
*
M - Valor Mdio
*----------------------------------------------------------------------*
FORM f_registra_dados TABLES p_vtb_market STRUCTURE vtb_market
USING p_series_sap STRUCTURE zfi_e_carga_series
p_interface STRUCTURE wa_interfaces
CHANGING
p_tpval
TYPE zfi_t_dadmercado-tpval.
*&---------------------------------------------------------------------*
*& Definio de variveis
*&---------------------------------------------------------------------*
DATA: vl_tabix
TYPE sy-tabix,
" varivel de ndice de tabela
vl_grava
TYPE xfeld,
" Determina gravao do registr
o
vl_dtint
TYPE sy-datum,
" Data convertida
vl_valorobsf TYPE zfi_e_series_sap-valorobs, " Valor Fechamento
vl_valorobsm TYPE zfi_e_series_sap-valorobs, " Valor Mdio
vl_msg
TYPE sy-msgv1,
" Item de mensagem
vl_ideserie TYPE zfi_e_series_sap-ideserie, " Cdigo Externo
vl_rkey1
TYPE vtb_market-rkey1,
" Cdigo SAP
v_ranl
TYPE vwpbono-ranl,
vl_mask
TYPE sy-datum, "BENUN - 22/06/11
vl_strlen
TYPE i.
" Tamanho do valor
CLEAR: vl_valorobsf, vl_valorobsm, wa_deparaanb.
*
*
*
*
*
vl_valorobsf = p_series_sap-valorobs.
SEARCH vl_valorobsf FOR '@'.
IF sy-subrc IS INITIAL.
SPLIT vl_valorobsf AT '@' INTO vl_valorobsf vl_valorobsm.
ENDIF.
BENUN - 02/08/2011 - INCIO
IF
p_tpval EQ 'F'
" Se for registro de fechamento
AND NOT vl_valorobsm IS INITIAL. " E tiver valor Mdio
EXIT.
" Ignora registro
ENDIF.
* IF p_tpval EQ 'M'.
" Se for registro de Valor Mdio
*
SEARCH p_series_sap-valorobs FOR '@'.
*
IF NOT sy-subrc IS INITIAL.
" E no tiver valor mdio
*
EXIT.
" Ignora registro
*
ENDIF.
*
vl_msg = text-med.
* ENDIF.
* BENUN - 02/08/2011 - FIM
vl_msg = text-fec.
vl_ideserie = p_series_sap-ideserie.
* IF NOT rb_anb IS INITIAL."BENUN - 03/08/11
PERFORM f_trata_titulo CHANGING vl_ideserie
vl_mask
vl_rkey1
p_idmem.
* ENDIF.
"BENUN - 03/08/11
READ TABLE t_dadmercado INTO zfi_t_dadmercado
WITH KEY
cdext = vl_ideserie.
*
*
*
ftdad = 1
"BENUN - 02/08/11
tpval = p_tpval."BENUN - 15/07/11
BINARY SEARCH. "BENUN - 15/07/11
IF zfi_t_dadmercado-cdext NE vl_ideserie
OR zfi_t_dadmercado-ftdad NE 1 "BENUN - 02/08/11
OR zfi_t_dadmercado-stati NE 'X'.
EXIT.
ENDIF.
*
IF zfi_t_dadmercado-dtmoe GT p_series_sap-dataobscompl.
*
CLEAR: vg_dummy.
** BENUN - 14/06/11 - INCIO
**
MESSAGE e000(zfi) WITH text-w01 p_series_sap-dataobscompl '<' zfi_t_dadm
ercado-dtmoe INTO vg_dummy.
*
MESSAGE w000(zfi) WITH text-w01 zfi_t_dadmercado-cdsap p_series_sap-datao
bscompl INTO vg_dummy.
** BENUN - 14/06/11 - FIM
*
PERFORM f_insere_log_standard.
*
CONTINUE.
*
ENDIF.
*--> Eric Doria - 19.11.2011
*>>> BEGIN <<<
*** Verifica a periodicidade de execuo
*
PERFORM f_ver_period USING
zfi_t_dadmercado
*
CHANGING vl_grava.
*>>> END <<<
******************************************************************
* RETIRAR APS TESTES
vl_grava = 'X'.
******************************************************************
IF vl_grava IS INITIAL.
READ TABLE t_periodo INTO wa_periodo
WITH KEY
domvalue_l = zfi_t_dadmercado-perio.
CLEAR: vg_dummy.
MESSAGE e000(zfi) WITH text-w02 zfi_t_dadmercado-cdsap p_series_sap-dataob
scompl
INTO vg_dummy.
PERFORM f_insere_log_standard.
CONTINUE.
ENDIF.
CLEAR: wa_vtb_market.
wa_vtb_market-mandt
= sy-mandt.
wa_vtb_market-sclass
= zfi_t_dadmercado-sclass.
wa_vtb_market-rkey1
= zfi_t_dadmercado-cdsap.
* Ambima somente ser processada atravs de rfc
IF NOT rb_anb IS INITIAL.
wa_deparaanb-ideserie = wa_vtb_market-rkey1.
IF NOT vl_rkey1 IS INITIAL.
vl_strlen = STRLEN( vl_rkey1 ).
REPLACE '&' WITH vl_rkey1(vl_strlen) INTO wa_vtb_market-rkey1.
*
wa_deparaanb-rkey1 = wa_vtb_market-rkey1.
MOVE wa_vtb_market-rkey1 TO v_ranl.
PERFORM f_check_titulo USING '2'
v_ranl
'ANBIMA'
CHANGING vl_grava.
CHECK NOT vl_grava IS INITIAL.
ENDIF.
wa_deparaanb-rkey1 = wa_vtb_market-rkey1.
ENDIF.
CASE wa_vtb_market-sclass.
WHEN '01'.
wa_vtb_market-rkey2
= t001-waers.
WHEN '02' OR '03'.
wa_vtb_market-rkey2
= p_interface-ddtext.
WHEN OTHERS.
ENDCASE.
wa_vtb_market-sinstrumnt = zfi_t_dadmercado-sinstrumnt.
wa_vtb_market-rfeedname = p_interface-ddtext.
wa_vtb_market-rupdhist = 'X'.
wa_vtb_market-ddate
= p_series_sap-dataobscompl.
IF vl_valorobsf(01) = '+'.
wa_vtb_market-value
= vl_valorobsf+1(20).
ELSE.
wa_vtb_market-value
= vl_valorobsf.
ENDIF.
IF p_tpval EQ 'M'.
IF vl_valorobsm(01) = '+'.
wa_vtb_market-value
= vl_valorobsm+1(20).
ELSE.
wa_vtb_market-value
= vl_valorobsm.
ENDIF.
ENDIF.
wa_vtb_market-uname
= sy-uname.
*BENUN - 22/06/11 - INCIO
*
IF wa_vtb_market-value CO '0 .,'."BENUN - 03/08/11
IF wa_vtb_market-value CO '0 .,' "BENUN - 03/08/11
AND wa_vtb_market-sclass <> c_03. "BENUN - 03/08/11
CLEAR: vg_dummy.
MESSAGE w000(zfi) WITH text-w03
wa_vtb_market-value wa_vtb_market-rkey1
wa_vtb_market-ddate INTO vg_dummy.
PERFORM f_insere_log_standard.
CONTINUE.
ENDIF.
*BENUN - 22/06/11 - FIM
*
*
" F_REGISTRA_DADOS
*&---------------------------------------------------------------------*
*&
Form FINALIZA_MIGRACAO
*&---------------------------------------------------------------------*
FORM finaliza_migracao .
PERFORM fecha_controle_migracoes.
CALL METHOD zcl_componentes_diversos=>resumo_interface.
PERFORM download_arquivos_erros.
ENDFORM.
" FINALIZA_MIGRACAO
*&---------------------------------------------------------------------*
*&
Form CRITICA_PARAMETROS
*&---------------------------------------------------------------------*
FORM critica_parametros .
DATA: vl_data(10)
vl_hora(08)
vl_dati
vl_hori
vl_path
TYPE
TYPE
TYPE
TYPE
TYPE
c,
c,
sy-datum,
sy-uzeit,
localfile.
CLEAR vg_subrc.
IF vg_path IS INITIAL.
vg_path = p_pathl.
ENDIF.
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
ENDFORM.
= vg_path.
= vl_dati.
= vl_hori.
= p_idtes.
= p_direl.
t_tctrmigracao.
" CRITICA_PARAMETROS
*&---------------------------------------------------------------------*
*&
Form UPLOAD_ARQUIVOS_LOCAL
*&---------------------------------------------------------------------*
FORM upload_arquivos_local .
DATA:
vl_path
TYPE string.
vl_path = vg_path.
CHECK vl_path IS NOT INITIAL.
*
Arquivo no PC Local.
CALL FUNCTION 'GUI_UPLOAD'
EXPORTING
filename
= vl_path
filetype
TABLES
data_tab
EXCEPTIONS
file_open_error
file_read_error
no_batch
gui_refuse_filetransfer
invalid_type
no_authority
unknown_error
bad_data_format
header_not_allowed
separator_not_allowed
header_too_long
unknown_dp_error
access_denied
dp_out_of_memory
disk_full
dp_timeout
OTHERS
= 'ASC'
= t_infile
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17.
IF sy-subrc <> 0.
MESSAGE e035(zbc001) WITH sy-subrc c_u vl_path INTO vg_dummy.
PERFORM insere_log_standard.
ENDIF.
ENDFORM.
" UPLOAD_ARQUIVOS_LOCAL
*&---------------------------------------------------------------------*
*&
Form UPLOAD_ARQUIVOS_SERVIDOR
*&---------------------------------------------------------------------*
FORM upload_arquivos_servidor .
DATA: vl_data
vl_hora
vl_times
vl_path
vl_pathname
vl_filename
vl_strname
tl_infile
vl_infile
TYPE
TYPE
TYPE
TYPE
TYPE
TYPE
TYPE
TYPE
LIKE
char10,
char8,
tzonref-tstamps,
localfile,
zz_de_pathextern,
fileextern,
strukname,
STANDARD TABLE OF zfi_e_carga_series,
LINE OF t_infile.
vg_subrc = sy-subrc.
EXIT.
ENDIF.
LOOP AT tl_infile INTO zfi_e_carga_series.
vl_infile = zfi_e_carga_series.
APPEND vl_infile TO t_infile.
ENDLOOP.
ENDFORM.
" UPLOAD_ARQUIVOS_SERVIDOR
*&---------------------------------------------------------------------*
*&
Form DOWNLOAD_ARQUIVOS_ERROS
*&---------------------------------------------------------------------*
FORM download_arquivos_erros .
IF rb_locl = c_x.
PERFORM download_local.
ELSE.
PERFORM download_servidor.
ENDIF.
ENDFORM.
" DOWNLOAD_ARQUIVOS_ERROS
*&---------------------------------------------------------------------*
*&
Form DOWNLOAD_LOCAL
*&---------------------------------------------------------------------*
FORM download_local.
DATA:
vl_path
t_infileer
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
disk_full
= 17
dp_timeout
= 18
file_not_found
= 19
dataprovider_exception = 20
control_flush_error
= 21
OTHERS
= 22.
IF sy-subrc <> 0.
MESSAGE e037(zbc001) WITH sy-subrc vg_path INTO vg_dummy.
PERFORM insere_log_standard.
ENDIF.
ENDIF.
ENDFORM.
" DOWNLOAD_LOCAL
*&---------------------------------------------------------------------*
*&
Form DOWNLOAD_SERVIDOR
*&---------------------------------------------------------------------*
FORM download_servidor .
DATA: vl_data
vl_hora
TYPE sy-datum,
TYPE sy-uzeit.
vl_data = sy-datum.
vl_hora = sy-uzeit.
IF t_infileer[] IS NOT INITIAL.
CONCATENATE p_dires c_bar c_serieser c_u vg_timestamp c_txt
INTO vg_path.
OPEN DATASET: vg_path FOR OUTPUT IN TEXT MODE ENCODING DEFAULT.
IF sy-subrc <> 0.
MESSAGE e039(zbc001) WITH sy-subrc vg_path INTO vg_dummy.
PERFORM insere_log_standard.
ENDIF.
LOOP AT t_infileer INTO wa_infile.
TRANSFER wa_infile TO vg_path LENGTH 36.
IF sy-subrc <> 0.
MESSAGE e038(zbc001) WITH sy-subrc vg_path INTO vg_dummy.
PERFORM insere_log_standard.
ENDIF.
ENDLOOP.
ENDIF.
ENDFORM.
" DOWNLOAD_SERVIDOR
*&---------------------------------------------------------------------*
*&
Form FECHA_CONTROLE_MIGRACOES
*&---------------------------------------------------------------------*
FORM fecha_controle_migracoes .
DATA: vl_datf
vl_horf
TYPE sy-datum,
TYPE sy-uzeit.
vl_datf = sy-datum.
vl_horf = sy-uzeit.
LOOP AT t_tctrmigracao INTO zfi_tctrmigracao.
zfi_tctrmigracao-datfmig = vl_datf.
zfi_tctrmigracao-horfmig = vl_horf.
INSERT zfi_tctrmigracao.
ENDLOOP.
ENDFORM.
" FECHA_CONTROLE_MIGRACOES
*&---------------------------------------------------------------------*
*&
Form INSERE_LOG_STANDARD
*&---------------------------------------------------------------------*
FORM insere_log_standard .
*
*
ENDFORM.
" INSERE_LOG_STANDARD
*&---------------------------------------------------------------------*
*&
Form F_FATOR_CONVERSAO
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
*
-->P_WA_VTB_MARKET text
*----------------------------------------------------------------------*
FORM f_fator_conversao CHANGING p_wa_vtb_market TYPE vtb_market
p_grava.
DATA: vl_rate_type
vl_fcurr
vl_tcurr
vl_reciprocal
wa_tcurf
TYPE
TYPE
TYPE
TYPE
TYPE
tcurf-kurst,
tcurf-fcurr,
tcurf-tcurr,
bvald-bvald,
tcurf .
ENDFORM.
" F_FATOR_CONVERSAO
*&---------------------------------------------------------------------*
*&
Form F_CHECK_DECIMALS_SIZE
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
*
-->P_WA_VTB_MARKET_VALUE text
*----------------------------------------------------------------------*
FORM f_check_decimals_size USING p_value TYPE vtb_market-value
p_moeda TYPE zfi_t_dadmercado-cdsap
p_sclass TYPE vtb_market-sclass
CHANGING p_grava.
CHECK p_sclass = c_01.
DATA: vl_str1 TYPE string,
vl_str2 TYPE string,
vl_size TYPE i.
SPLIT p_value AT '.' INTO vl_str1 vl_str2.
vl_size = STRLEN( vl_str2 ).
IF vl_size > 5.
CLEAR: vg_dummy.
MESSAGE e000(zfi) WITH text-e05 p_moeda INTO vg_dummy.
PERFORM f_insere_log_standard.
CLEAR: p_grava.
ELSE.
p_grava = c_x.
ENDIF.
ENDFORM.
" F_CHECK_DECIMALS_SIZE
*&---------------------------------------------------------------------*
*&
Form F_TRATA_TITULO
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
* --> p1
text
* <-- p2
text
*----------------------------------------------------------------------*
FORM f_trata_titulo CHANGING p_ideserie
p_mask
p_rkey1
p_idmem.
SEARCH p_ideserie FOR '_'.
IF sy-subrc IS INITIAL.
* Verifica se ttulo ou seja, o nome da cotaco est no padro XXX_AAAADDMM
* BENUN - 22/06/11 - INCIO
SPLIT p_ideserie AT '_' INTO p_ideserie p_mask.
WRITE p_mask TO p_rkey1 DDMMYY. "converte data vinda de tit.publico
* BENUN - 22/06/11 - FIM
"no formato AAAAMMDD para DDMMAA
ENDIF.
ENDFORM.
" F_TRATA_TITULO
*&---------------------------------------------------------------------*
*&
Form F_TRATA_MOEDA_DERIVADA
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
* --> p1
text
* <-- p2
text
*----------------------------------------------------------------------*
FORM f_trata_moeda_derivada USING p_cdder TYPE zfi_t_dadmercado-cdder
p_dias TYPE zfi_t_dadmercado-dias
p_calendario TYPE zfi_t_dadmercado-calendar
*
p_domvalue TYPE y_interfaces-domvalue_l
*
p_tpval TYPE zfi_t_dadmercado-tpval
CHANGING p_ddate TYPE vtb_market-ddate
p_rkey1 TYPE vtb_market-rkey1.
CALL FUNCTION
EXPORTING
date
days
months
signum
years
IMPORTING
calc_date
'RP_CALC_DATE_IN_INTERVAL'
=
=
=
=
=
p_ddate
p_dias
'00'
'-'
'00'
= p_ddate.
SELECT SINGLE
WHERE
AND
AND
AND
* FROM
mandt
rantyp
ranl
rhandpl
" F_CHECK_TITULO