Carga Derivada (Excel)

download Carga Derivada (Excel)

If you can't read please download the document

description

fafsdfsdf

Transcript of Carga Derivada (Excel)

*&---------------------------------------------------------------------**& NOME DO PROGRAMA : ZFI_CARGA_DERIVADA_SALDOS **& TTULO DO PROGRAMA : Migrao Derivada de Saldos **& PROGRAMADOR : Jos Caetano F. Salles Filho (JCFSF) **& DATA : 20/06/2011 **& **& DESCRIO : Executa a Migrao Derivada de Saldos **&---------------------------------------------------------------------**& LISTA DE MODIFICAES: **& DATA AUTOR REQUEST # DESCRIO **& 20/06/2011 JCFSF ED1K912876 Codificao inicial **&---------------------------------------------------------------------*REPORT zfi_carga_derivada_saldos LINE-SIZE 188 LINE-COUNT 65.************************************************************************ TABELAS***********************************************************************TABLES: zfi_t_derivada_l, zfi_t_derivada_i, zfi_t_derivada_o.************************************************************************ TIPOS***********************************************************************TYPES:BEGIN OF y_infile, linha(1000) TYPE c,END OF y_infile,BEGIN OF y_assunto, cod_assunto LIKE zfi_t_assunto-cod_assunto,END OF y_assunto,BEGIN OF y_empresas, bukrs LIKE t001-bukrs,END OF y_empresas.************************************************************************ ESTRUTURAS***********************************************************************DATA: wa_infile TYPE y_infile, wa_derivada_l TYPE zfi_e_derivada_l, wa_derivada_i TYPE zfi_e_derivada_i, wa_derivada_o TYPE zfi_e_derivada_o.************************************************************************ TABELAS INTERNAS***********************************************************************DATA: t_infile TYPE STANDARD TABLE OF y_infile, t_assunto TYPE HASHED TABLE OF y_assunto WITH UNIQUE KEY cod_assunto, t_derivada_l TYPE TABLE OF zfi_e_derivada_l, t_derivada_i TYPE TABLE OF zfi_e_derivada_i, t_derivada_o TYPE TABLE OF zfi_e_derivada_o, t_empresas TYPE TABLE OF y_empresas.************************************************************************ VARIVEIS GLOBAIS***********************************************************************DATA: vg_seqnz TYPE seqnz, vg_substfile TYPE localfile, vg_dummy TYPE string, vg_subrc TYPE sy-subrc.************************************************************************ CONSTANTES GLOBAIS***********************************************************************CONSTANTS: c_nonunic TYPE char20 VALUE 'NON-UNICODE', c_only(04) TYPE c VALUE 'ONLI', c_u(01) TYPE c VALUE '_', c_x(01) TYPE c VALUE 'X', c_separador(1) TYPE c VALUE ';'.RANGES: r_assunto_l FOR zfi_t_derivada_l-cod_assunto, r_assunto_i FOR zfi_t_derivada_i-cod_assunto, r_assunto_o FOR zfi_t_derivada_o-cod_assunto.DATA: vl_islocked.************************************************************************ PARMETROS DE SELEO***********************************************************************SELECTION-SCREEN BEGIN OF BLOCK 100 WITH FRAME TITLE text-100.PARAMETERS: p_deri_l TYPE localfile, p_deri_i TYPE localfile, p_deri_o TYPE localfile.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. "ServidorSELECTION-SCREEN END OF BLOCK 200.SELECTION-SCREEN BEGIN OF BLOCK 300 WITH FRAME TITLE text-300.PARAMETER: cb_clean AS CHECKBOX.SELECTION-SCREEN END OF BLOCK 300.************************************************************************ EVENTOS***********************************************************************AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_deri_l. CALL FUNCTION 'KD_GET_FILENAME_ON_F4' EXPORTING mask = ',*.*,*.*.' CHANGING file_name = p_deri_l.AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_deri_i. CALL FUNCTION 'KD_GET_FILENAME_ON_F4' EXPORTING mask = ',*.*,*.*.' CHANGING file_name = p_deri_i.AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_deri_o. CALL FUNCTION 'KD_GET_FILENAME_ON_F4' EXPORTING mask = ',*.*,*.*.' CHANGING file_name = p_deri_o.************************************************************************ INICIO DO PROGRAMA***********************************************************************START-OF-SELECTION.* Recupera os dados da Interface para a montagem do LOG standard CALL METHOD zcl_componentes_diversos=>inicializar_interface EXPORTING vl_interface = sy-repid(30) EXCEPTIONS interface_not_found = 1. IF sy-subrc IS NOT INITIAL. MESSAGE e141(zbc001). LEAVE LIST-PROCESSING. ENDIF.*--> WMR - checando se as tabelas onde sero carregados os dados esto bloqueadas - 20.03.2012 CLEAR vl_islocked. PERFORM f_check_table_lock CHANGING vl_islocked. IF vl_islocked IS INITIAL.*resumo_interface.END-OF-SELECTION.*&---------------------------------------------------------------------**& Form UPLOAD_ARQUIVOS_LOCAL*&---------------------------------------------------------------------*FORM upload_arquivos_local CHANGING p_subrc. REFRESH t_infile. PERFORM upload USING p_deri_l. IF NOT t_infile[] IS INITIAL. PERFORM split_data TABLES t_infile t_derivada_l USING 'L'. ENDIF. REFRESH t_infile. PERFORM upload USING p_deri_i. IF NOT t_infile[] IS INITIAL. PERFORM split_data TABLES t_infile t_derivada_i USING 'I'. ENDIF. REFRESH t_infile. PERFORM upload USING p_deri_o. IF NOT t_infile[] IS INITIAL. PERFORM split_data TABLES t_infile t_derivada_o USING 'O'. ENDIF. FREE t_infile. PERFORM verifica_tabelas CHANGING p_subrc.ENDFORM. " UPLOAD_ARQUIVOS_LOCAL*&---------------------------------------------------------------------**& Form UPLOAD*&---------------------------------------------------------------------*FORM upload USING p_path TYPE localfile. DATA: vl_path TYPE string. vl_path = p_path. CHECK p_path IS NOT INITIAL.* Arquivo no PC Local. CALL FUNCTION 'GUI_UPLOAD' EXPORTING filename = vl_path filetype = 'ASC' has_field_separator = ';' TABLES data_tab = t_infile EXCEPTIONS file_open_error = 1 file_read_error = 2 no_batch = 3 gui_refuse_filetransfer = 4 invalid_type = 5 no_authority = 6 unknown_error = 7 bad_data_format = 8 header_not_allowed = 9 separator_not_allowed = 10 header_too_long = 11 unknown_dp_error = 12 access_denied = 13 dp_out_of_memory = 14 disk_full = 15 dp_timeout = 16 OTHERS = 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*&---------------------------------------------------------------------**& Form UPLOAD_ARQUIVOS_SERVIDOR*&---------------------------------------------------------------------*FORM upload_arquivos_servidor CHANGING p_subrc.* Ler o arquivo de Dados Bsicos* CONCATENATE c_cabec vg_timestamp c_txt INTO vg_substfile. vg_seqnz = 1. CALL METHOD zcl_componentes_diversos=>processar_interface EXPORTING vl_seqnz = vg_seqnz* vl_substfile = vg_substfile vl_encodtype = c_nonunic IMPORTING t_data = t_derivada_l EXCEPTIONS open_error = 1.* Ler o arquivo de Dados Condies* CONCATENATE c_cabec vg_timestamp c_txt INTO vg_substfile. vg_seqnz = 2. CALL METHOD zcl_componentes_diversos=>processar_interface EXPORTING vl_seqnz = vg_seqnz* vl_substfile = vg_substfile vl_encodtype = c_nonunic IMPORTING t_data = t_derivada_i EXCEPTIONS open_error = 1.* Ler o arquivo de Dados Bsicos* CONCATENATE c_cabec vg_timestamp c_txt INTO vg_substfile. vg_seqnz = 3. CALL METHOD zcl_componentes_diversos=>processar_interface EXPORTING vl_seqnz = vg_seqnz* vl_substfile = vg_substfile vl_encodtype = c_nonunic IMPORTING t_data = t_derivada_o EXCEPTIONS open_error = 1. PERFORM verifica_tabelas CHANGING p_subrc.ENDFORM. " UPLOAD_ARQUIVOS_SERVIDOR*&---------------------------------------------------------------------**& Form INSERE_LOG_STANDARD*&---------------------------------------------------------------------*FORM insere_log_standard . CALL METHOD zcl_componentes_diversos=>inserir_log.* CALL METHOD zcl_componentes_diversos=>inserir_log* EXPORTING* vl_idmen = wa_interface-idmen.ENDFORM. " INSERE_LOG_STANDARD*&---------------------------------------------------------------------**& Form SPLIT_DATA*&---------------------------------------------------------------------*FORM split_data TABLES p_t_infile p_t_derivada USING p_tipo. CASE p_tipo. WHEN 'L'. LOOP AT p_t_infile INTO wa_infile. SPLIT wa_infile AT c_separador INTO wa_derivada_l-cod_assunto wa_derivada_l-cod_lancto wa_derivada_l-histo wa_derivada_l-comhisto. APPEND wa_derivada_l TO p_t_derivada. ENDLOOP. WHEN 'I'. LOOP AT p_t_infile INTO wa_infile. SPLIT wa_infile AT c_separador INTO wa_derivada_i-cod_assunto wa_derivada_i-cod_lancto wa_derivada_i-seq_lancto wa_derivada_i-bukrs wa_derivada_i-hkont_deb_pos wa_derivada_i-hkont_cre_pos wa_derivada_i-hkont_deb_neg wa_derivada_i-hkont_cre_neg wa_derivada_i-vlr_limite wa_derivada_i-ind_ativo. APPEND wa_derivada_i TO p_t_derivada. ENDLOOP. WHEN 'O'. LOOP AT p_t_infile INTO wa_infile. SPLIT wa_infile AT c_separador INTO wa_derivada_o-cod_assunto wa_derivada_o-cod_lancto wa_derivada_o-bukrs wa_derivada_o-saknr wa_derivada_o-saknr_a wa_derivada_o-percentual wa_derivada_o-sinal_sld_deb wa_derivada_o-sinal_sld_cre wa_derivada_o-ind_difer_sld. APPEND wa_derivada_o TO p_t_derivada. ENDLOOP. ENDCASE.ENDFORM. " SPLIT_DATA*&---------------------------------------------------------------------**& Form PROCESSA_MIGRACAO*&---------------------------------------------------------------------*FORM processa_migracao . DATA: vl_subrc LIKE sy-subrc. CLEAR vl_subrc.* Lanamentos X Assunto PERFORM processa_derivada_l CHANGING vl_subrc. CHECK vl_subrc IS INITIAL.* Item de Lanamentos X Assunto PERFORM processa_derivada_i CHANGING vl_subrc. CHECK vl_subrc IS INITIAL.* Conta origem do lanamento X Assunto PERFORM processa_derivada_o CHANGING vl_subrc. CHECK vl_subrc IS INITIAL.* Ou grava TUDO ou NADA!! LOOP AT t_derivada_l INTO wa_derivada_l. MOVE-CORRESPONDING wa_derivada_l TO zfi_t_derivada_l. MODIFY zfi_t_derivada_l. ENDLOOP. LOOP AT t_derivada_i INTO wa_derivada_i. MOVE-CORRESPONDING wa_derivada_i TO zfi_t_derivada_i. MODIFY zfi_t_derivada_i. ENDLOOP. LOOP AT t_derivada_o INTO wa_derivada_o. MOVE-CORRESPONDING wa_derivada_o TO zfi_t_derivada_o. MODIFY zfi_t_derivada_o. ENDLOOP. FREE: t_derivada_l, t_derivada_i, t_derivada_o.ENDFORM. " PROCESSA_MIGRACAO*&---------------------------------------------------------------------**& Form VERIFICA_TABELAS*&---------------------------------------------------------------------*FORM verifica_tabelas CHANGING p_subrc. CLEAR p_subrc. IF t_derivada_l[] IS INITIAL. MESSAGE e004(zbc001) WITH text-t01 text-e02 INTO vg_dummy.* Inserir LOG CALL METHOD zcl_componentes_diversos=>inserir_log. p_subrc = 4. ENDIF. IF t_derivada_i[] IS INITIAL. MESSAGE e004(zbc001) WITH text-t02 text-e02 INTO vg_dummy.* Inserir LOG CALL METHOD zcl_componentes_diversos=>inserir_log. p_subrc = 4. ENDIF. IF t_derivada_o[] IS INITIAL. MESSAGE e004(zbc001) WITH text-t03 text-e02 INTO vg_dummy.* Inserir LOG CALL METHOD zcl_componentes_diversos=>inserir_log. p_subrc = 4. ENDIF.ENDFORM. " VERIFICA_TABELAS*&---------------------------------------------------------------------**& Form PROCESSA_DERIVADA_L*&---------------------------------------------------------------------*FORM processa_derivada_l CHANGING vl_subrc.* Tratamento de Campos LOOP AT t_derivada_l INTO wa_derivada_l. UNPACK wa_derivada_l-cod_assunto TO wa_derivada_l-cod_assunto. UNPACK wa_derivada_l-cod_lancto TO wa_derivada_l-cod_lancto. MODIFY t_derivada_l FROM wa_derivada_l. ENDLOOP.* Leitura de Assuntos vlidos SELECT cod_assunto INTO TABLE t_assunto FROM zfi_t_assunto FOR ALL ENTRIES IN t_derivada_l WHERE cod_assunto = t_derivada_l-cod_assunto. LOOP AT t_derivada_l INTO wa_derivada_l. READ TABLE t_assunto WITH KEY cod_assunto = wa_derivada_l-cod_assunto TRANSPORTING NO FIELDS. IF sy-subrc 0. MESSAGE e004(zbc001) WITH text-t01 text-ass wa_derivada_l-cod_assunto text-e05 INTO vg_dummy. vl_subrc = 4.* Inserir LOG CALL METHOD zcl_componentes_diversos=>inserir_log. CONTINUE. ENDIF. MODIFY t_derivada_l FROM wa_derivada_l. ENDLOOP.ENDFORM. " PROCESSA_DERIVADA_L*&---------------------------------------------------------------------**& Form PROCESSA_DERIVADA_I*&---------------------------------------------------------------------*FORM processa_derivada_i CHANGING vl_subrc.* Tratamento de Campos LOOP AT t_derivada_i INTO wa_derivada_i. UNPACK wa_derivada_i-cod_assunto TO wa_derivada_i-cod_assunto. UNPACK wa_derivada_i-cod_lancto TO wa_derivada_i-cod_lancto. UNPACK wa_derivada_i-seq_lancto TO wa_derivada_i-seq_lancto.* INCIO ALTERAO BACHOUR - 24/05/2012 SET LOCALE LANGUAGE sy-langu.* FIM ALTERAO BACHOUR - 24/05/2012 TRANSLATE wa_derivada_i-bukrs TO UPPER CASE. TRANSLATE wa_derivada_i-vlr_limite USING ',.'. MODIFY t_derivada_i FROM wa_derivada_i. ENDLOOP.* Leitura de Assuntos vlidos SELECT cod_assunto INTO TABLE t_assunto FROM zfi_t_assunto FOR ALL ENTRIES IN t_derivada_i WHERE cod_assunto = t_derivada_i-cod_assunto.* Leitura de Empresas vlidas SELECT bukrs INTO TABLE t_empresas FROM t001 FOR ALL ENTRIES IN t_derivada_i WHERE bukrs = t_derivada_i-bukrs. LOOP AT t_derivada_i INTO wa_derivada_i. READ TABLE t_assunto WITH KEY cod_assunto = wa_derivada_i-cod_assunto TRANSPORTING NO FIELDS. IF sy-subrc 0. MESSAGE e004(zbc001) WITH text-t02 text-ass wa_derivada_i-cod_assunto text-e05 INTO vg_dummy. vl_subrc = 4.* Inserir LOG CALL METHOD zcl_componentes_diversos=>inserir_log. CONTINUE. ENDIF.*--> WMR - caso a empresa esteja vazia, no fazer a critica - 05.10.2010 IF NOT wa_derivada_i-bukrs IS INITIAL. READ TABLE t_empresas WITH KEY bukrs = wa_derivada_i-bukrs TRANSPORTING NO FIELDS. IF sy-subrc 0. MESSAGE e004(zbc001) WITH text-t02 text-buk wa_derivada_i-bukrs text-e01 INTO vg_dummy. vl_subrc = 4.* Inserir LOG CALL METHOD zcl_componentes_diversos=>inserir_log. CONTINUE. ENDIF. ENDIF.*inserir_log. CONTINUE. ENDIF. MODIFY t_derivada_i FROM wa_derivada_i. ENDLOOP.ENDFORM. " PROCESSA_DERIVADA_I*&---------------------------------------------------------------------**& Form PROCESSA_DERIVADA_O*&---------------------------------------------------------------------*FORM processa_derivada_o CHANGING vl_subrc.* Tratamento de Campos LOOP AT t_derivada_o INTO wa_derivada_o. UNPACK wa_derivada_o-cod_assunto TO wa_derivada_o-cod_assunto. UNPACK wa_derivada_o-cod_lancto TO wa_derivada_o-cod_lancto.* INCIO ALTERAO BACHOUR - 24/05/2012 SET LOCALE LANGUAGE sy-langu.* FIM ALTERAO BACHOUR - 24/05/2012 TRANSLATE wa_derivada_o-percentual USING ',.'. TRANSLATE wa_derivada_o-bukrs TO UPPER CASE. MODIFY t_derivada_o FROM wa_derivada_o. ENDLOOP.* Leitura de Assuntos vlidos SELECT cod_assunto INTO TABLE t_assunto FROM zfi_t_assunto FOR ALL ENTRIES IN t_derivada_o WHERE cod_assunto = t_derivada_o-cod_assunto.* Leitura de Empresas vlidas SELECT bukrs INTO TABLE t_empresas FROM t001 FOR ALL ENTRIES IN t_derivada_o WHERE bukrs = t_derivada_o-bukrs. LOOP AT t_derivada_o INTO wa_derivada_o. READ TABLE t_assunto WITH KEY cod_assunto = wa_derivada_o-cod_assunto TRANSPORTING NO FIELDS. IF sy-subrc 0. MESSAGE e004(zbc001) WITH text-t03 text-ass wa_derivada_o-cod_assunto text-e05 INTO vg_dummy. vl_subrc = 4.* Inserir LOG CALL METHOD zcl_componentes_diversos=>inserir_log. CONTINUE. ENDIF.*--> WMR - caso a empresa esteja vazia, no fazer a critica - 05.10.2010 IF NOT wa_derivada_o-bukrs IS INITIAL. READ TABLE t_empresas WITH KEY bukrs = wa_derivada_o-bukrs TRANSPORTING NO FIELDS. IF sy-subrc 0. MESSAGE e004(zbc001) WITH text-t03 text-buk wa_derivada_o-bukrs text-e01 INTO vg_dummy. vl_subrc = 4.* Inserir LOG CALL METHOD zcl_componentes_diversos=>inserir_log. CONTINUE. ENDIF. ENDIF.*inserir_log. CONTINUE. ENDIF. MODIFY t_derivada_o FROM wa_derivada_o. ENDLOOP.ENDFORM. " PROCESSA_DERIVADA_O*&---------------------------------------------------------------------**& Form F_LIMPA_TABELAS*&---------------------------------------------------------------------** text*----------------------------------------------------------------------** --> p1 text*