Contabilização de Faturas

download Contabilização de Faturas

of 44

description

sdgasdgdsgsgdsgasdg

Transcript of Contabilização de Faturas

*&---------------------------------------------------------------------**& 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 - InicioTYPES: 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 TYPE STANDARD TABLE OF t003,t_tbsl TYPE STANDARD TABLE OF zfi_t_tbsl,t_mercado TYPE STANDARD TABLE OF zfi_t_dadmercado,t_conta TYPE STANDARD TABLE OF zfi_t_depara,t_conta_aux TYPE STANDARD TABLE OF zfi_t_depara,t_bdc TYPE bdcdata OCCURS 0 WITH HEADER LINE,t_return TYPE STANDARD TABLE OF bapiret1,t_msg TYPE bdcmsgcoll OCCURS 0 WITH HEADER LINE,t_lfbk TYPE STANDARD TABLE OF lfbk,t_lfbw TYPE STANDARD TABLE OF y_lfbw.*-- Monitor - InicioDATA: 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 - InicioDATA: 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/2011c_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 TYPE sy-datum,vg_hrimig TYPE sy-uzeit,vg_dtfmig TYPE sy-datum,vg_hrfmig TYPE sy-uzeit,vg_seqnz TYPE seqnz,vg_substfile TYPE localfile,vg_timestamp TYPE char16,vg_bkvid TYPE bseg-bvtyp,vg_prio1(4) TYPE c,vg_prio2(4) TYPE c,vg_prio3(4) TYPE c,vg_prio4(4) TYPE c,vg_prio5(4) TYPE c,vg_bvtyp TYPE lfbk-bvtyp,vg_erro(4) TYPE c,vg_dupl(1) TYPE c,vg_regc(5) TYPE 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 - InicioDATA: 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 SINGLE * FROM zfi_t_idinterf INTO wa_config WHERE 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 space. CONCATENATE p_interf '-' vg_datum '-' vg_uzeit INTO pe_idmsgp SEPARATED BY space. 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* ENDIF.* ELSE.* ps_stprom = 'P'. " Arquivo sem dados deve ser mensagem WARNING no Monitor* 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 t001 INTO TABLE t_t001 FOR ALL ENTRIES IN t_legado WHERE zzplanoctb = t_legado-cod_plano(2) AND zzempprinc = 'X'. SELECT * FROM t003 INTO TABLE t_t003 FOR ALL ENTRIES IN t_legado WHERE zztpleg = t_legado-cod_sistema_origem AND zzorctb = ' ' AND zzessap = space.*--> Eric Doria - 07.02.2012*>>> BEGIN > END 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' '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' '0301', ' ' 'BDC_OKCODE' c_ent01, ' ' 'BSEG-ZFBDT' vg_zfbdt, ' ' 'BSEG-WRBTR' vg_valort, ' ' 'RF05V-NEWBS' vg_newbs_cre, ' ' 'RF05V-NEWKO' vg_newko_cre,**** ' ' 'BSEG-ZLSPR' vg_zlspr, ' ' 'BSEG-SGTXT' vg_sgtxt, ' ' 'BSEG-ZUONR' wa_legado-num_ocs, ' ' 'BSEG-BUPLA' c_filial, 'X' 'SAPLF040' '0300', ' ' 'BSEG-SGTXT' vg_sgtxt, ' ' 'BSEG-ZUONR' wa_legado-num_ocs, ' ' 'BSEG-WRBTR' vg_valort, ' ' 'BSEG-BUPLA' c_filial, ' ' 'BSEG-VALUT' vg_budat, ' ' 'BDC_OKCODE' c_ent01, 'X' 'SAPLKACB' '0002', ' ' 'BDC_OKCODE' c_ent02, 'X' 'SAPLF040' '0300', ' ' 'BDC_OKCODE' c_bp, 'X' 'SAPLKACB' '0002', ' ' 'BDC_OKCODE' c_ent02.ENDFORM. " LANCA_DEB01_CRE50*&---------------------------------------------------------------------**& Form LANCA_DEB21_CRE50*&---------------------------------------------------------------------*FORM lanca_deb21_cre50 . 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' '0302', ' ' 'BDC_OKCODE' c_ent01, ' ' 'BSEG-ZFBDT' vg_zfbdt, ' ' 'BSEG-WRBTR' vg_valort, ' ' 'RF05V-NEWBS' vg_newbs_cre, ' ' 'RF05V-NEWKO' vg_newko_cre,* ' ' 'BSEG-ZLSPR' vg_zlspr, ' ' 'BSEG-SGTXT' vg_sgtxt, ' ' 'BSEG-ZUONR' wa_legado-num_ocs, ' ' 'BSEG-BUPLA' 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' wa_legado-num_ocs, ' ' 'BSEG-WRBTR' vg_valort, ' ' 'BSEG-BUPLA' c_filial, ' ' 'BSEG-VALUT' vg_budat, ' ' 'BDC_OKCODE' c_ent01, 'X' 'SAPLKACB' '0002', ' ' 'BDC_OKCODE' c_ent02, 'X' 'SAPLF040' '0300', ' ' 'BDC_OKCODE' c_bp, 'X' 'SAPLKACB' '0002', ' ' 'BDC_OKCODE' 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' '0300', ' ' 'BSEG-SGTXT' vg_sgtxt, ' ' 'BSEG-ZUONR' wa_legado-num_ocs, ' ' 'BSEG-WRBTR' vg_valort, ' ' 'BSEG-BUPLA' c_filial, ' ' 'BSEG-VALUT' vg_budat, ' ' 'RF05V-NEWBS' vg_newbs_cre, ' ' 'RF05V-NEWKO' vg_newko_cre, ' ' 'BDC_OKCODE' c_ent01, 'X' 'SAPLKACB' '0002', ' ' 'BDC_OKCODE' c_ent02, 'X' 'SAPLF040' '0301', ' ' 'BDC_OKCODE' c_ent01, ' ' 'BSEG-ZFBDT' vg_zfbdt, ' ' 'BSEG-WRBTR' vg_valort,* ' ' 'BSEG-ZLSPR' vg_zlspr, ' ' 'BSEG-SGTXT' vg_sgtxt, ' ' 'BSEG-ZUONR' wa_legado-num_ocs, ' ' 'BSEG-BUPLA' c_filial, 'X' 'SAPLF040' '0301', ' ' 'BDC_OKCODE' c_bp.ENDFORM. " LANCA_DEB40_CRE11*&---------------------------------------------------------------------**& Form LANCA_DEB40_CRE31*&---------------------------------------------------------------------*FORM lanca_deb40_cre31 . 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' '0300', ' ' 'BSEG-SGTXT' vg_sgtxt, ' ' 'BSEG-ZUONR' wa_legado-num_ocs, ' ' 'BSEG-WRBTR' vg_valort, ' ' 'BSEG-BUPLA' c_filial, ' ' 'BSEG-VALUT' vg_budat, ' ' 'RF05V-NEWBS' vg_newbs_cre, ' ' 'RF05V-NEWKO' vg_newko_cre, ' ' 'BDC_OKCODE' c_ent01, 'X' 'SAPLKACB' '0002', ' ' 'BDC_OKCODE' c_ent02, 'X' 'SAPLF040' '0302', ' ' 'BDC_OKCODE' '=ZK', ' ' 'BSEG-ZFBDT' vg_zfbdt, ' ' 'BSEG-WRBTR' vg_valort, ' ' 'RF05V-NEWBS' vg_newbs_cre, ' ' 'RF05V-NEWKO' vg_newko_cre, ' ' 'BSEG-ZLSPR' 'Q', ' ' 'BSEG-SGTXT' vg_sgtxt, ' ' 'BSEG-ZUONR' wa_legado-num_ocs, ' ' 'BSEG-WRBTR' vg_valort, ' ' 'BSEG-BUPLA' 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' '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 = 'X'. t_bdc-program = p_nome. t_bdc-dynpro = p_valor. WHEN ' '. t_bdc-dynbegin = ' '. t_bdc-fnam = p_nome. t_bdc-fval = p_valor. ENDCASE. APPEND t_bdc.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 documento* porm no necessariamente o batch da F-63 retornar uma msg de erro, portanto devemos* 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 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' '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 foi* 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 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' '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 TYPE sy-msgno, v_msgv1 TYPE sy-msgv1, v_msgv2 TYPE sy-msgv2, v_msgv3 TYPE sy-msgv3, v_msgv4 TYPE sy-msgv4. MOVE: p_msgnr TO v_msgno, p_msgv1 TO v_msgv1, p_msgv2 TO v_msgv2, p_msgv3 TO v_msgv3, p_msgv4 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 TYPE sy-datlo, vl_hora TYPE sy-timlo, vl_times TYPE tzonref-tstamps, vl_path TYPE localfile, vl_pathname TYPE zz_de_pathextern, vl_filename TYPE fileextern, vl_strname TYPE 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 TYPE char10, vl_hora TYPE char8, vl_times TYPE tzonref-tstamps, vl_path TYPE localfile, vl_pathname TYPE zz_de_pathextern, vl_filename TYPE fileextern, vl_strname TYPE 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 SINGLE * FROM zfi_t_sap_leg_r INTO zfi_t_sap_leg_r WHERE idinterf = p_interf AND ide_referencia = wa_legado-ide_referencia AND gjahr = l_toyear AND statussap = '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*