Upload Local e Servidor

download Upload Local e Servidor

If you can't read please download the document

description

dfasfsdfsd

Transcript of Upload Local e Servidor

*&---------------------------------------------------------------------**& NOME DO PROGRAMA : ZFI_CARGA_BUSINESS_PARTNER **& TTULO DO PROGRAMA : Migrao Inicial de Parceiros de Negcios **& PROGRAMADOR : Bruno Santos (T0695) **& DATA : 22/03/2010 **& **& DESCRIO : Migrao Inicial de Parceiros de Negcios **&---------------------------------------------------------------------**& LISTA DE MODIFICAES: **& DATA AUTOR REQUEST # DESCRIO **& 22/03/2010 JHBAC ED1K900043 Codificao inicial **&---------------------------------------------------------------------**& 25/04/2011 BRUNO NUNES ED1K900317 Incluso de funcionalidade **& para associar BP, cliente e **& fornecedor **& Incluso dos campos BANK_REF **& e BANKDETAILID na BAPI **&---------------------------------------------------------------------**& 27/07/2011 BRUNO NUNES ED1K915158 Correo da leitura dos **& arquivos a partir do servidor**&---------------------------------------------------------------------*REPORT zfi_carga_business_partner LINE-SIZE 188 LINE-COUNT 65.************************************************************************* TABELAS DO BANCO DE DADOSTABLES:zfi_tdp_buspart,"Tabela DE x PARA - Cdigos Busines Partner Legado x ECCzfi_tctrmigracao. "Controle de Arquivos Processados em Migraes de BP************************************************************************ PROJETO AGIR PRODUTO CARGA BP INICIO* ALTERADO POR BRUNO NUNES - 26/04/2011INCLUDE bdcrecxy.* PROJETO AGIR PRODUTO CARGA BP FIM* PARMETROSSELECTION-SCREEN BEGIN OF BLOCK 100 WITH FRAME TITLE text-100.PARAMETERS:p_direl TYPE localfile DEFAULT text-002 OBLIGATORY,p_dires TYPE localfile DEFAULT text-003 OBLIGATORY,p_idtes(30) TYPE c DEFAULT 'Teste Unitrio' OBLIGATORY.SELECTION-SCREEN END OF BLOCK 100.SELECTION-SCREEN BEGIN OF BLOCK 200 WITH FRAME TITLE text-200.PARAMETER: rb_locl RADIOBUTTON GROUP rb01, "Local rb_serv RADIOBUTTON GROUP rb01 DEFAULT 'X'. "ServidorSELECTION-SCREEN END OF BLOCK 200.SELECTION-SCREEN BEGIN OF BLOCK 300 WITH FRAME TITLE text-300.SELECTION-SCREEN BEGIN OF LINE.SELECTION-SCREEN COMMENT 01(32) text-004 FOR FIELD p_exibe.SELECTION-SCREEN POSITION 33.PARAMETERS: p_exibe TYPE num5 DEFAULT 100.SELECTION-SCREEN COMMENT 40(10) text-005 FOR FIELD p_exibe.SELECTION-SCREEN END OF LINE.SELECTION-SCREEN END OF BLOCK 300.SELECTION-SCREEN BEGIN OF BLOCK 700 WITH FRAME TITLE text-700.* INSERIR TEXTO: Parmetros de Execuo:PARAMETERS:* Modo de Processamento* A = Exibir todas as telas* E = Exibir erros* N = Processar em background* P = Em background e depurvel p_pmode TYPE ctu_params-dismode DEFAULT 'N',** Modo de atualizao** L = Local** S = Sncrono** A = Assncrono p_umode TYPE ctu_params-updmode DEFAULT 'A'.** Modo CATT:** ' ' = Nenhum CATT** N = CATT sem controle de tela individual** A = CATT com controle de tela individual* p_cmode TYPE ctu_params-cattmode,** Tamanho Standard de Tela* cb_dsize AS CHECKBOX DEFAULT 'X',** Processo Completado Sem Commit* cb_rcomi AS CHECKBOX,** Processo no Sesso Batch Input* cb_binpt AS CHECKBOX,** Processo no executa em modo Batch Input* cb_biend AS CHECKBOX.SELECTION-SCREEN END OF BLOCK 700.************************************************************************ELEMENTOS DE TEXTOS:*P_DIREL Diretrio Arquivos na Rede*P_DIRES Diretrio Arquivos no Servidor*P_EXIBE Exibir Progresso a cada*P_IDTES ID do Teste de Migrao*P_PMODE Modo de Processamento*P_UMODE Modo de Atualizao*RB_LOCL Processamento Local*RB_SERV Processamento no Servidor*001 Erro Abrindo Arquivo:*002 C:\TEMP\Migraes BNDES\BP\AMOSTRA\*003 /usr/sap/migracao/TgtFiles/BP/*004 Exibir Progresso da Carga a cada*005 Registros*100 Localizao dos Arquivos*200 Local dos Arquivos de Entrada*300 Controle do Processo*700 Processamento de Telas de Batch Input************************************************************************ TIPOS***********************************************************************TYPES:BEGIN OF y_infile, linha(2000) TYPE c,END OF y_infile.TYPES:BEGIN OF y_but100, partner TYPE bu_partner, rltyp TYPE bu_partnerrole,END OF y_but100.TYPES:BEGIN OF y_roles, rltyp TYPE bu_partnerrole,END OF y_roles.TYPES:BEGIN OF y_dd03l, domname TYPE domname,END OF y_dd03l.TYPES:BEGIN OF y_dd01l, outputlen TYPE outputlen,END OF y_dd01l.TYPES:BEGIN OF y_compleguia, bukrs TYPE bukrs, rltyp TYPE bu_partnerrole,END OF y_compleguia.TYPES:BEGIN OF y_bpgravado, dataorigintype TYPE bu_source, bp_ecc TYPE bu_partner, bp_legado(12) TYPE c, seqnr(03) TYPE n, partn_grp TYPE bu_group, completo TYPE num2,END OF y_bpgravado.TYPES:BEGIN OF y_depara, dataorigintype TYPE zfi_tdp_buspart-dataorigintype, bp_legado TYPE zfi_tdp_buspart-bp_legado, bp_ecc TYPE zfi_tdp_buspart-bp_ecc,END OF y_depara.TYPES:BEGIN OF y_relat, dataorigintype TYPE bu_source, bp_legado(12) TYPE c, bp_ecc TYPE bu_partner, reproc(5) TYPE c, bastot(6) TYPE n, baserr(6) TYPE n, endtot(6) TYPE n, enderr(6) TYPE n, teltot(6) TYPE n, telerr(6) TYPE n, ematot(6) TYPE n, emaerr(6) TYPE n, faxtot(6) TYPE n, faxerr(6) TYPE n, funtot(6) TYPE n, funerr(6) TYPE n, idetot(6) TYPE n, ideerr(6) TYPE n, contot(6) TYPE n, conerr(6) TYPE n, reptot(6) TYPE n, reperr(6) TYPE n,END OF y_relat.TYPES:BEGIN OF y_funcao, dataorigintype(4) TYPE c, "Origem do Parceiro de Negcios no Legado bpartner(12) TYPE c, "Nmero do Parceiro de Negcios no Legado seqnr(3) TYPE c, "Nmero Sequencial do Parceiro Relacionado role(6) TYPE c, "Funo ParceiroEND OF y_funcao.TYPES:BEGIN OF y_timestamp, timestamp(20) TYPE c,END OF y_timestamp.*BENUN - 04/07/11 - INCIOTYPES:BEGIN OF y_file_fi, bp_ecc TYPE bu_partner, bukrs TYPE bukrs, rltyp TYPE bu_partnerrole,END OF y_file_fi.*BENUN - 04/07/11 - INCIOTYPES:BEGIN OF y_dados_fiscais, partner TYPE but020-partner, END OF y_dados_fiscais.************************************************************************ ESTRUTURAS***********************************************************************DATA:wa_infile TYPE string,wa_nomebp TYPE tline,wa_timestamp TYPE y_timestamp,wa_cabec TYPE zfi_e_buspart_basico,wa_ender TYPE zfi_e_buspart_ender,wa_tpend TYPE zfi_e_buspart_tpend,*wa_funcao TYPE y_funcao,wa_funcao_temp TYPE y_funcao,wa_funcao TYPE zfi_e_buspart_funcao,wa_telef TYPE zfi_e_buspart_telef,wa_email TYPE zfi_e_buspart_email,wa_faxes TYPE zfi_e_buspart_fax,wa_ident TYPE zfi_e_buspart_ident,wa_contas TYPE zfi_e_buspart_conta,wa_bankdetail TYPE bapibus1006_bankdetail,* PROJETO AGIR PRODUTO CARGA BP INICIO* ALTERADO POR BRUNO NUNES - 28/04/2011wa_bankid TYPE bapibus1006_head-bankdetailid,* PROJETO AGIR PRODUTO CARGA BP FIMwa_telefondata TYPE bapiadtel,wa_faxdata TYPE bapiadfax,wa_maildata TYPE bapiadsmtp,wa_addresses TYPE bapibus1006_addresses,wa_address TYPE bapibus1006_address,wa_dd03l TYPE y_dd03l,wa_dd01l TYPE y_dd01l,wa_depara TYPE y_depara,wa_relat TYPE y_relat,wa_tctrmigracao TYPE zfi_tctrmigracao,wa_bpgravado TYPE y_bpgravado,wa_tdpbuspart TYPE zfi_tdp_buspart,wa_but100 TYPE y_but100,wa_roles TYPE y_roles,wa_compleguia TYPE y_compleguia,wa_tdppaises TYPE zfi_tdp_paises,wa_return TYPE bapiret2,wa_bus020 TYPE bus020,wa_but020 TYPE but020,wa_but020_new TYPE busaddrvb,wa_but021_new TYPE busadvwvb,wa_t035t TYPE t035t,wa_agrpfunc TYPE zfi_agrupafuncao,wa_tbc001 TYPE tbc001,wa_tbd001 TYPE tbd001,wa_tcategorirf TYPE zfi_tcategor_irf,wa_centraldata TYPE bapibus1006_central,wa_centralperson TYPE bapibus1006_central_person,wa_centralorgan TYPE bapibus1006_central_organ,wa_centralgroup TYPE bapibus1006_central_group,wa_addressdata TYPE bapibus1006_address,wa_interface TYPE zbc_t_interface,wa_op000 TYPE bp000,wa_np000 TYPE bp000,wa_obp1010 TYPE bp1010,wa_nbp1010 TYPE bp1010,wa_obp1020 TYPE bp1020,wa_nbp1020 TYPE bp1020,wa_obp1030 TYPE bp1030,wa_nbp1030 TYPE bp1030,wa_obp1040 TYPE bp1040,wa_nbp1040 TYPE bp1040,wa_obp1050 TYPE bp1050,wa_nbp1050 TYPE bp1050,wa_obp1060 TYPE bp1060,wa_nbp1060 TYPE bp1060,wa_obp3000 TYPE bp3000,wa_nbp3000 TYPE bp3000,wa_file_fi TYPE y_file_fi.************************************************************************ TABELAS INTERNAS***********************************************************************DATA:t_infile TYPE STANDARD TABLE OF y_infile,t_partner TYPE TABLE OF bu_partner,t_nomebp TYPE TABLE OF tline,t_timestamp TYPE STANDARD TABLE OF y_timestamp,t_cabec_err TYPE STANDARD TABLE OF zfi_e_buspart_basico,t_ender_err TYPE STANDARD TABLE OF zfi_e_buspart_ender,t_tpend_err TYPE STANDARD TABLE OF zfi_e_buspart_tpend,t_funcao_err TYPE STANDARD TABLE OF zfi_e_buspart_funcao,t_telef_err TYPE STANDARD TABLE OF zfi_e_buspart_telef,t_email_err TYPE STANDARD TABLE OF zfi_e_buspart_email,t_faxes_err TYPE STANDARD TABLE OF zfi_e_buspart_fax,t_ident_err TYPE STANDARD TABLE OF zfi_e_buspart_ident,t_contas_err TYPE STANDARD TABLE OF zfi_e_buspart_conta,t_cabec TYPE STANDARD TABLE OF zfi_e_buspart_basico,t_ender TYPE STANDARD TABLE OF zfi_e_buspart_ender,t_tpend TYPE STANDARD TABLE OF zfi_e_buspart_tpend,t_funcao TYPE STANDARD TABLE OF zfi_e_buspart_funcao,t_telef TYPE STANDARD TABLE OF zfi_e_buspart_telef,t_email TYPE STANDARD TABLE OF zfi_e_buspart_email,t_faxes TYPE STANDARD TABLE OF zfi_e_buspart_fax,t_ident TYPE STANDARD TABLE OF zfi_e_buspart_ident,t_contas TYPE STANDARD TABLE OF zfi_e_buspart_conta,t_but100 TYPE STANDARD TABLE OF y_but100,t_roles TYPE STANDARD TABLE OF y_roles,t_compleguia TYPE STANDARD TABLE OF y_compleguia,"Registra as Funes GUIA complementadas em FI.t_tctrmigracao TYPE STANDARD TABLE OF zfi_tctrmigracao,t_addresses TYPE STANDARD TABLE OF bapibus1006_addresses,t_address TYPE STANDARD TABLE OF bapibus1006_address,t_bpgravado TYPE STANDARD TABLE OF y_bpgravado,t_dd03l TYPE STANDARD TABLE OF y_dd03l,t_dd01l TYPE STANDARD TABLE OF y_dd01l,t_depara TYPE STANDARD TABLE OF y_depara,t_tdpbuspart TYPE STANDARD TABLE OF zfi_tdp_buspart,*t_tdpbuspart TYPE STANDARD TABLE OF zfi_tdp_buspart,t_tdppaises TYPE STANDARD TABLE OF zfi_tdp_paises,t_tcategorirf TYPE STANDARD TABLE OF zfi_tcategor_irf,t_telefondata TYPE STANDARD TABLE OF bapiadtel,t_faxdata TYPE STANDARD TABLE OF bapiadfax,t_maildata TYPE STANDARD TABLE OF bapiadsmtp,t_relat TYPE STANDARD TABLE OF y_relat,t_but020 TYPE STANDARD TABLE OF but020,t_but020_new TYPE STANDARD TABLE OF busaddrvb,t_but020_old TYPE STANDARD TABLE OF busaddrvb,t_but021_new TYPE STANDARD TABLE OF busadvwvb,t_but021_old TYPE STANDARD TABLE OF busadvwvb,t_bus020 TYPE STANDARD TABLE OF bus020,t_t035t TYPE STANDARD TABLE OF t035t,t_agrpfunc TYPE STANDARD TABLE OF zfi_agrupafuncao,t_tbc001 TYPE STANDARD TABLE OF tbc001,t_tbd001 TYPE STANDARD TABLE OF tbd001,t_params TYPE STANDARD TABLE OF ctu_params WITH HEADER LINE,t_return TYPE STANDARD TABLE OF bapiret2,t_bdc TYPE bdcdata OCCURS 0 WITH HEADER LINE,t_msg TYPE bdcmsgcoll OCCURS 0 WITH HEADER LINE,t_msg_aux TYPE bdcmsgcoll OCCURS 0 WITH HEADER LINE,t_nbp011 TYPE TABLE OF dbp011,t_obp011 TYPE TABLE OF dbp011,t_nbp021 TYPE TABLE OF dbp021,t_obp021 TYPE TABLE OF dbp021,t_nbp030 TYPE TABLE OF dbp030,t_obp030 TYPE TABLE OF dbp030,t_nbp1000 TYPE TABLE OF dbp1000,t_obp1000 TYPE TABLE OF dbp1000,t_nbp2000 TYPE TABLE OF dbp2000,t_obp2000 TYPE TABLE OF dbp2000,t_file_fi TYPE STANDARD TABLE OF y_file_fi.DATA: t_dados_fiscais TYPE TABLE OF y_dados_fiscais.************************************************************************ VARIVEIS GLOBAIS***********************************************************************DATA:vg_seqnz TYPE seqnz,vg_primfunc TYPE char1,vg_bastot(6) TYPE n,vg_baserr(6) TYPE n,vg_endtot(6) TYPE n,vg_enderr(6) TYPE n,vg_teltot(6) TYPE n,vg_telerr(6) TYPE n,vg_ematot(6) TYPE n,vg_emaerr(6) TYPE n,vg_faxtot(6) TYPE n,vg_faxerr(6) TYPE n,vg_funtot(6) TYPE n,vg_funerr(6) TYPE n,vg_idetot(6) TYPE n,vg_ideerr(6) TYPE n,vg_contot(6) TYPE n,vg_conerr(6) TYPE n,vg_reptot(6) TYPE n,vg_reperr(6) TYPE n,vg_reproc(5) TYPE n,vg_substfile TYPE localfile,vg_name1 TYPE lfa1-name1,vg_subrc TYPE sy-subrc,vg_subrcpais TYPE sy-subrc,vg_subrcparcial TYPE sy-subrc,vg_msgid TYPE symsgid,vg_msgno TYPE symsgno,vg_dummy TYPE string,vg_path TYPE localfile,vg_pais TYPE zfi_e_buspart_ender-country,vg_land1 TYPE zfi_e_buspart_ender-country,vg_regio TYPE zfi_e_buspart_ender-region,vg_stras TYPE zfi_e_buspart_ender-street,vg_taxjr TYPE addr1_data-taxjurcode,vg_ort01 TYPE lfa1-ort01,vg_pstlz TYPE lfa1-pstlz,vg_cnpj TYPE lfa1-stcd1,vg_stkzn TYPE lfa1-stkzn,vg_cpf TYPE lfa1-stcd2,vg_tabix TYPE sy-tabix,vg_interfbp(25) TYPE c,vg_msg(80) TYPE c,vg_valfromx(16) TYPE c,vg_valfrom TYPE bu_addr_valid_from,vg_lifnr TYPE lfa1-lifnr,vg_kunnr TYPE kna1-kunnr,*vg_rltyp TYPE bu_partnerrole,vg_rolefiscal TYPE bu_partnerrole,vg_partner TYPE but020-partner,vg_indrelat TYPE sy-tabix,vg_zwels TYPE dzwels,vg_hbkid TYPE hbkid,vg_field(30) TYPE c,vg_idmsg(50) TYPE c,vg_completo(1) TYPE n,vg_temconta(1) TYPE c,vg_loop(2) TYPE n,vg_tablename(30) TYPE c,vg_loopx(2) TYPE c,vg_dtimig TYPE sy-datum,vg_hrimig TYPE sy-uzeit,vg_dtfmig TYPE sy-datum,vg_hrfmig TYPE sy-uzeit,vg_timestamp TYPE char16,vg_arqtimestamp TYPE localfile VALUE 'ARQUIVOS_BP_PRODUZIDOS_LEGADO.TXT'.DATA: vg_try_uzeit TYPE sy-uzeit.************************************************************************ CONSTANTES GLOBAISCONSTANTS:c_only(04) TYPE c VALUE 'ONLI',c_f2(02) TYPE c VALUE 'F2',c_r1(02) TYPE c VALUE 'R1',c_042(03) TYPE c VALUE '042',c_086(03) TYPE c VALUE '086',c_152(03) TYPE c VALUE '152',c_162(03) TYPE c VALUE '162',c_pt(02) TYPE c VALUE 'PT',c_zzz(03) TYPE c VALUE 'ZZZ',c_br1(03) TYPE c VALUE 'BR1',c_br2(03) TYPE c VALUE 'BR2',c_pv(01) TYPE c VALUE ';',c_bar(01) TYPE c VALUE '/',c_barinv(01) TYPE c VALUE '\',c_a(01) TYPE c VALUE 'A',c_c(01) TYPE c VALUE 'C',c_e(01) TYPE c VALUE 'E',c_f(01) TYPE c VALUE 'F',c_i(01) TYPE c VALUE 'I',c_n(01) TYPE c VALUE 'N',c_u(01) TYPE c VALUE '_',c_x(01) TYPE c VALUE 'X',c_xtax TYPE bus_tax_common VALUE 'X',c_2 TYPE char1 VALUE '2',c_4 TYPE char1 VALUE '4',c_5 TYPE char1 VALUE '5',c_6 TYPE char1 VALUE '6',c_xxdefault TYPE bu_adrkind VALUE 'XXDEFAULT',c_tv(2) TYPE c VALUE 'TV',c_trm(03) TYPE c VALUE 'TRM',c_zlc(03) TYPE c VALUE 'ZLC',c_zlv(03) TYPE c VALUE 'ZLV',c_bppai(03) TYPE c VALUE '000',c_02 TYPE tbz0k-aktyp VALUE '02',c_000 TYPE char03 VALUE '000',c_010 TYPE char03 VALUE '010',c_a01 TYPE vtbsta4-sgsart VALUE 'A01',c_cust TYPE vtbsta4-sabverf VALUE 'CUST.',c_zuawa TYPE dzuawa VALUE '009',c_fesp TYPE ktokk VALUE 'FESP',c_fnsb TYPE ktokk VALUE 'FNSB',c_bnde TYPE bukrs VALUE 'BNDE',c_bpar TYPE bukrs VALUE 'BPAR',c_fin TYPE bukrs VALUE 'FIN',c_zterm TYPE dzterm VALUE '0001',c_reprf TYPE reprf VALUE 'X',c_zwels_mtv TYPE dzwels VALUE 'MTV',c_zwels_m TYPE dzwels VALUE 'M',c_hbkid TYPE hbkid VALUE 'BB1PE',c_xzver TYPE xzver VALUE 'X',c_nonunic TYPE char20 VALUE 'NON-UNICODE',c_tr0150 TYPE char6 VALUE 'TR0150',c_tr0151 TYPE char6 VALUE 'TR0151',c_tr0 TYPE char3 VALUE 'TR0',c_txt(04) TYPE c VALUE '.TXT',c_coca(04) TYPE c VALUE 'COCA',c_timezero(06) TYPE c VALUE '000000',c_tstamp TYPE bu_addr_valid_to VALUE '99991231235959',c_dtfim TYPE bu_addr_valid_to VALUE '99991231',c_dtfim_text TYPE bu_addr_valid_to VALUE '31129999',c_foundationdt TYPE sy-datum VALUE '19520620',c_vw TYPE sy-ucomm VALUE '=VW',c_fd01 TYPE sy-tcode VALUE 'FD01',c_fk01 TYPE sy-tcode VALUE 'FK01',c_fk02 TYPE sy-tcode VALUE 'FK02', "PROJETO AGIR ALTERADO POR BRUNO NUNES - 26/04/2011c_paginar TYPE sy-ucomm VALUE '=P+',c_ent01 TYPE sy-ucomm VALUE '/00',c_ent02 TYPE sy-ucomm VALUE '=ENTE',c_ent03 TYPE sy-ucomm VALUE '=ENTR',c_salva1 TYPE sy-ucomm VALUE 'BU',c_salva2 TYPE sy-ucomm VALUE '=UPDA',c_migracao TYPE char8 VALUE 'MIGRACAO',c_reproc TYPE char35 VALUE 'REPRO',c_reproctot TYPE char34 VALUE 'BPs j Processados Anteriormente:',c_titul01 TYPE tline VALUE 'MIGRAO DE ENTIDADES EXTERNAS',c_titul02 TYPE tline VALUE 'BUSINESS PARTNER - PARCEIRO DE NEGCIOS',c_titul03 TYPE tline VALUE 'RELATRIO DE OCORRNCIAS - Client',c_inimig(20) TYPE c VALUE 'Processado desde:',c_fimmig(20) TYPE c VALUE 'At:',c_as(02) TYPE c VALUE 's',c_arqtimestamp TYPE localfile VALUE 'ARQUIVOS_BP_PRODUZIDOS_LEGADO.TXT',c_timestarq TYPE string VALUE 'BP_TIMESTAMPARQ.TXT',c_depara TYPE string VALUE 'BP_DEPARA_BUSPARTNER',c_cabec TYPE string VALUE 'BP_DADOS_BASICOS',c_ender TYPE string VALUE 'BP_ENDERECOS',c_tpend TYPE string VALUE 'BP_TIPOS_ENDERECOS',c_telef TYPE string VALUE 'BP_TELEFONES',c_emails TYPE string VALUE 'BP_EMAILS',c_ident TYPE string VALUE 'BP_IDENTIFICACOES',c_funcao TYPE string VALUE 'BP_FUNCOES',c_faxes TYPE string VALUE 'BP_FAXES',c_contas TYPE string VALUE 'BP_CONTAS_BANCARIAS',c_cabecer TYPE string VALUE 'BP_ERROS_DADOS_BASICOS',c_enderer TYPE string VALUE 'BP_ERROS_ENDERECOS',c_tpender TYPE string VALUE 'BP_ERROS_TIPOS_ENDERECOS',c_telefer TYPE string VALUE 'BP_ERROS_TELEFONES',c_emailser TYPE string VALUE 'BP_ERROS_EMAILS',c_identer TYPE string VALUE 'BP_ERROS_IDENTIFICACOES',c_funcaoer TYPE string VALUE 'BP_ERROS_FUNCOES',c_faxeser TYPE string VALUE 'BP_ERROS_FAXES',c_contaser TYPE string VALUE 'BP_ERROS_CONTAS_BANCARIAS',c_file_fi TYPE string VALUE 'REPLICADOS_FI',c_cabec_str TYPE strukname VALUE 'ZFI_E_BUSPART_BASICO',c_ender_str TYPE strukname VALUE 'ZFI_E_BUSPART_ENDER',c_tpend_str TYPE strukname VALUE 'ZFI_E_BUSPART_TPEND',c_telef_str TYPE strukname VALUE 'ZFI_E_BUSPART_TELEF',c_email_str TYPE strukname VALUE 'ZFI_E_BUSPART_EMAIL',c_faxes_str TYPE strukname VALUE 'ZFI_E_BUSPART_FAX',c_ident_str TYPE strukname VALUE 'ZFI_E_BUSPART_IDENT',c_contas_str TYPE strukname VALUE 'ZFI_E_BUSPART_CONTA',c_funcao_str TYPE strukname VALUE 'ZFI_E_BUSPART_FUNCAO',c_texto TYPE char50 VALUE 'BPs Processados:',c_bas(03) TYPE c VALUE 'BAS',c_end(03) TYPE c VALUE 'END',c_tel(03) TYPE c VALUE 'TEL',c_ema(03) TYPE c VALUE 'EMA',c_ide(03) TYPE c VALUE 'IDE',c_con(03) TYPE c VALUE 'CON',c_fax(03) TYPE c VALUE 'FAX',c_fun(03) TYPE c VALUE 'FUN',c_origem(04) TYPE c VALUE 'ORIG',c_bpsap(12) TYPE c VALUE 'BP GERADO',c_bpleg(12) TYPE c VALUE 'BP LEGADO',c_seqnr(06) TYPE c VALUE 'REPROC',c_basrel(14) TYPE c VALUE 'DADOS BSICOS',c_endrel(14) TYPE c VALUE ' ENDEREOS',c_telrel(14) TYPE c VALUE ' TELEFONES',c_emarel(14) TYPE c VALUE ' E-MAILS',c_faxrel(14) TYPE c VALUE ' FAXES',c_funrel(14) TYPE c VALUE ' FUNES',c_iderel(14) TYPE c VALUE 'IDENTIFICAES',c_conrel(14) TYPE c VALUE 'CONTAS BANCOS',c_reprel(14) TYPE c VALUE 'REPLICAES FI',c_total(6) TYPE c VALUE 'TOTAL',c_erros(6) TYPE c VALUE 'ERROS',c_timesttn(15) TYPE c VALUE 'T_TIMESTAMP',c_deparatn(15) TYPE c VALUE 'T_DEPARA',c_cabectn(15) TYPE c VALUE 'T_CABEC_ERR',c_endertn(15) TYPE c VALUE 'T_ENDER_ERR',c_tpendtn(15) TYPE c VALUE 'T_TPEND_ERR',c_funcaotn(15) TYPE c VALUE 'T_FUNCAO_ERR',c_teleftn(15) TYPE c VALUE 'T_TELEF_ERR',c_emailstn(15) TYPE c VALUE 'T_EMAILS_ERR',c_faxestn(15) TYPE c VALUE 'T_FAXES_ERR',c_identtn(15) TYPE c VALUE 'T_IDENT_ERR',c_contastn(15) TYPE c VALUE 'T_CONTAS_ERR',c_table_fi(15) TYPE c VALUE 'T_FILE_FI',c_testid TYPE string VALUE 'Teste Integrado 01'.************************************************************************ FIELD SYMBOLSFIELD-SYMBOLS: TYPE table.*********************************************************************************************************************************************** EVENTOS***********************************************************************TOP-OF-PAGE. DATA: wa_texto TYPE tline, tl_texto TYPE cms_tab_txt_tline, vl_line TYPE tline, vl_data TYPE char10, vl_hora TYPE char8. vl_line = c_titul01. APPEND vl_line TO tl_texto. vl_line = c_titul02. APPEND vl_line TO tl_texto. CONCATENATE c_titul03 sy-mandt INTO vl_line SEPARATED BY space. APPEND vl_line TO tl_texto. WRITE vg_dtimig TO vl_data. WRITE vg_hrimig TO vl_hora. CONCATENATE c_inimig vl_data c_as vl_hora INTO vl_line SEPARATED BY space. WRITE vg_dtfmig TO vl_data. WRITE vg_hrfmig TO vl_hora. CONCATENATE vl_line c_fimmig vl_data c_as vl_hora INTO vl_line SEPARATED BY space. APPEND vl_line TO tl_texto. IF rb_locl = c_x. CALL METHOD zcl_componentes_diversos=>cabecalho_padrao EXPORTING t_texto = tl_texto. ELSE. WRITE: /001 'PROCESSAMENTO EM BACKGROUD - Cabealho Padro Desativado'. LOOP AT tl_texto INTO wa_texto. WRITE: /001 wa_texto-tdline. ENDLOOP. ENDIF. SKIP 1. REFRESH tl_texto. WRITE sy-uline. WRITE: /001 sy-vline, 008 sy-vline, 022 sy-vline, 036 sy-vline, 044 sy-vline, 046 c_basrel, 060 sy-vline, 062 c_endrel, 076 sy-vline, 078 c_telrel, 092 sy-vline, 094 c_emarel, 108 sy-vline, 110 c_faxrel, 124 sy-vline, 126 c_funrel, 140 sy-vline, 142 c_iderel, 156 sy-vline, 158 c_conrel, 172 sy-vline, 174 c_reprel, 188 sy-vline. WRITE: /001 sy-vline, 003 c_origem, 008 sy-vline, 010 c_bpsap, 022 sy-vline, 024 c_bpleg, 036 sy-vline, 038 c_seqnr, 044 sy-vline, 045 sy-uline. WRITE: /001 sy-vline, 008 sy-vline, 022 sy-vline, 036 sy-vline, 044 sy-vline, 046 c_total, 052 sy-vline, 054 c_erros, 060 sy-vline, 062 c_total, 068 sy-vline, 070 c_erros, 076 sy-vline, 078 c_total, 084 sy-vline, 086 c_erros, 092 sy-vline, 094 c_total, 100 sy-vline, 102 c_erros, 108 sy-vline, 110 c_total, 116 sy-vline, 118 c_erros, 124 sy-vline, 126 c_total, 132 sy-vline, 134 c_erros, 140 sy-vline, 142 c_total, 148 sy-vline, 150 c_erros, 156 sy-vline, 158 c_total, 164 sy-vline, 166 c_erros, 172 sy-vline, 174 c_total, 180 sy-vline, 182 c_erros, 188 sy-vline. WRITE sy-uline.************************************************************************ INICIO DO PROGRAMA***********************************************************************START-OF-SELECTION. 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 = sy-repid(30) EXCEPTIONS interface_not_found = 1. IF sy-subrc IS NOT INITIAL. MESSAGE e141(zbc001). LEAVE LIST-PROCESSING. ENDIF. IF rb_locl = c_x. IF sy-ucomm c_only AND sy-batch space. "EST PROCESSANDO BACKGR. MESSAGE e011(zbc001). PERFORM finaliza_migracao. LEAVE LIST-PROCESSING. ELSE. PERFORM upload_timestamp_local. CHECK vg_subrc IS INITIAL.* PERFORM critica_parametros. PERFORM upload_arquivos_local. ENDIF. ELSE.* IF sy-ucomm = c_only OR sy-batch = space.* MESSAGE e012(zbc001).* PERFORM finaliza_migracao.* LEAVE LIST-PROCESSING.* ELSE. PERFORM upload_timestamp_servidor. CHECK vg_subrc IS INITIAL. PERFORM critica_parametros. PERFORM upload_arquivos_servidor.* ENDIF. ENDIF. IF vg_subrc IS NOT INITIAL. PERFORM finaliza_migracao. EXIT. ENDIF. PERFORM classifica_arquivos. SELECT * FROM zfi_agrupafuncao INTO TABLE t_agrpfunc. SELECT * FROM t035t INTO TABLE t_t035t. SELECT * FROM tbc001 INTO TABLE t_tbc001. SELECT * FROM tbd001 INTO TABLE t_tbd001. SELECT * FROM zfi_tcategor_irf INTO TABLE t_tcategorirf. SELECT * FROM zfi_tdp_paises INTO TABLE t_tdppaises. PERFORM cria_bp. PERFORM processa_funcoes_dos_bps. PERFORM finaliza_migracao.END-OF-SELECTION.*&---------------------------------------------------------------------**& Form CRITICA_PARAMETROS*&---------------------------------------------------------------------*FORM critica_parametros . DATA: vl_data(10) TYPE c, vl_hora(08) TYPE c, vl_dati TYPE sy-datum, vl_hori TYPE sy-uzeit, vl_path1 TYPE localfile, vl_path2 TYPE localfile, vl_path3 TYPE localfile, vl_path4 TYPE localfile, vl_path5 TYPE localfile, vl_path6 TYPE localfile, vl_path7 TYPE localfile, vl_path8 TYPE localfile, vl_path9 TYPE localfile. CLEAR vg_subrc. CONCATENATE p_direl c_cabec vg_timestamp c_txt INTO vl_path1. CONCATENATE p_direl c_ender vg_timestamp c_txt INTO vl_path2. CONCATENATE p_direl c_tpend vg_timestamp c_txt INTO vl_path3. CONCATENATE p_direl c_funcao vg_timestamp c_txt INTO vl_path4. CONCATENATE p_direl c_telef vg_timestamp c_txt INTO vl_path5. CONCATENATE p_direl c_emails vg_timestamp c_txt INTO vl_path6. CONCATENATE p_direl c_faxes vg_timestamp c_txt INTO vl_path7. CONCATENATE p_direl c_ident vg_timestamp c_txt INTO vl_path8. CONCATENATE p_direl c_contas vg_timestamp c_txt INTO vl_path9. SELECT * FROM zfi_tctrmigracao INTO TABLE t_tctrmigracao WHERE arquivo = vl_path1 OR arquivo = vl_path2 OR arquivo = vl_path3 OR arquivo = vl_path4 OR arquivo = vl_path5 OR arquivo = vl_path6 OR arquivo = vl_path7 OR arquivo = vl_path8 OR arquivo = vl_path9. IF sy-subrc IS INITIAL. READ TABLE t_tctrmigracao INTO wa_tctrmigracao WITH KEY arquivo = vl_path1. IF sy-subrc IS INITIAL. vg_subrc = 1. WRITE wa_tctrmigracao-datimig TO vl_data. WRITE wa_tctrmigracao-horimig TO vl_hora. MESSAGE e078(zbc001) WITH vl_path1 vl_data vl_hora.* PERFORM insere_log_standard. ENDIF. READ TABLE t_tctrmigracao INTO wa_tctrmigracao WITH KEY arquivo = vl_path2. IF sy-subrc IS INITIAL. vg_subrc = 1. WRITE wa_tctrmigracao-datimig TO vl_data. WRITE wa_tctrmigracao-horimig TO vl_hora. MESSAGE e078(zbc001) WITH vl_path2 vl_data vl_hora.* PERFORM insere_log_standard. ENDIF. READ TABLE t_tctrmigracao INTO wa_tctrmigracao WITH KEY arquivo = vl_path3. IF sy-subrc IS INITIAL. vg_subrc = 1. WRITE wa_tctrmigracao-datimig TO vl_data. WRITE wa_tctrmigracao-horimig TO vl_hora. MESSAGE e078(zbc001) WITH vl_path3 vl_data vl_hora.* PERFORM insere_log_standard. ENDIF. READ TABLE t_tctrmigracao INTO wa_tctrmigracao WITH KEY arquivo = vl_path4. IF sy-subrc IS INITIAL. vg_subrc = 1. WRITE wa_tctrmigracao-datimig TO vl_data. WRITE wa_tctrmigracao-horimig TO vl_hora. MESSAGE e078(zbc001) WITH vl_path4 vl_data vl_hora.* PERFORM insere_log_standard. ENDIF. READ TABLE t_tctrmigracao INTO wa_tctrmigracao WITH KEY arquivo = vl_path5. IF sy-subrc IS INITIAL. vg_subrc = 1. WRITE wa_tctrmigracao-datimig TO vl_data. WRITE wa_tctrmigracao-horimig TO vl_hora. MESSAGE e078(zbc001) WITH vl_path5 vl_data vl_hora.* PERFORM insere_log_standard. ENDIF. READ TABLE t_tctrmigracao INTO wa_tctrmigracao WITH KEY arquivo = vl_path6. IF sy-subrc IS INITIAL. vg_subrc = 1. WRITE wa_tctrmigracao-datimig TO vl_data. WRITE wa_tctrmigracao-horimig TO vl_hora. MESSAGE e078(zbc001) WITH vl_path6 vl_data vl_hora.* PERFORM insere_log_standard. ENDIF. READ TABLE t_tctrmigracao INTO wa_tctrmigracao WITH KEY arquivo = vl_path7. IF sy-subrc IS INITIAL. vg_subrc = 1. WRITE wa_tctrmigracao-datimig TO vl_data. WRITE wa_tctrmigracao-horimig TO vl_hora. MESSAGE e078(zbc001) WITH vl_path7 vl_data vl_hora.* PERFORM insere_log_standard. ENDIF. READ TABLE t_tctrmigracao INTO wa_tctrmigracao WITH KEY arquivo = vl_path8. IF sy-subrc IS INITIAL. vg_subrc = 1. WRITE wa_tctrmigracao-datimig TO vl_data. WRITE wa_tctrmigracao-horimig TO vl_hora. MESSAGE e078(zbc001) WITH vl_path8 vl_data vl_hora.* PERFORM insere_log_standard. ENDIF. READ TABLE t_tctrmigracao INTO wa_tctrmigracao WITH KEY arquivo = vl_path9. IF sy-subrc IS INITIAL. vg_subrc = 1. WRITE wa_tctrmigracao-datimig TO vl_data. WRITE wa_tctrmigracao-horimig TO vl_hora. MESSAGE e078(zbc001) WITH vl_path9 vl_data vl_hora.* PERFORM insere_log_standard. ENDIF. ENDIF. vl_dati = sy-datum. vl_hori = sy-uzeit. REFRESH t_tctrmigracao. wa_tctrmigracao-arquivo = vl_path1. wa_tctrmigracao-datimig = vl_dati. wa_tctrmigracao-horimig = vl_hori. wa_tctrmigracao-idteste = p_idtes. wa_tctrmigracao-direrro = p_direl. APPEND wa_tctrmigracao TO t_tctrmigracao. wa_tctrmigracao-arquivo = vl_path2. wa_tctrmigracao-datimig = vl_dati. wa_tctrmigracao-horimig = vl_hori. wa_tctrmigracao-idteste = p_idtes. wa_tctrmigracao-direrro = p_direl. APPEND wa_tctrmigracao TO t_tctrmigracao. wa_tctrmigracao-arquivo = vl_path3. wa_tctrmigracao-datimig = vl_dati. wa_tctrmigracao-horimig = vl_hori. wa_tctrmigracao-idteste = p_idtes. wa_tctrmigracao-direrro = p_direl. APPEND wa_tctrmigracao TO t_tctrmigracao. wa_tctrmigracao-arquivo = vl_path4. wa_tctrmigracao-datimig = vl_dati. wa_tctrmigracao-horimig = vl_hori. wa_tctrmigracao-idteste = p_idtes. wa_tctrmigracao-direrro = p_direl. APPEND wa_tctrmigracao TO t_tctrmigracao. wa_tctrmigracao-arquivo = vl_path5. wa_tctrmigracao-datimig = vl_dati. wa_tctrmigracao-horimig = vl_hori. wa_tctrmigracao-idteste = p_idtes. wa_tctrmigracao-direrro = p_direl. APPEND wa_tctrmigracao TO t_tctrmigracao. wa_tctrmigracao-arquivo = vl_path6. wa_tctrmigracao-datimig = vl_dati. wa_tctrmigracao-horimig = vl_hori. wa_tctrmigracao-idteste = p_idtes. wa_tctrmigracao-direrro = p_direl. APPEND wa_tctrmigracao TO t_tctrmigracao. wa_tctrmigracao-arquivo = vl_path7. wa_tctrmigracao-datimig = vl_dati. wa_tctrmigracao-horimig = vl_hori. wa_tctrmigracao-idteste = p_idtes. wa_tctrmigracao-direrro = p_direl. APPEND wa_tctrmigracao TO t_tctrmigracao. wa_tctrmigracao-arquivo = vl_path8. wa_tctrmigracao-datimig = vl_dati. wa_tctrmigracao-horimig = vl_hori. wa_tctrmigracao-idteste = p_idtes. wa_tctrmigracao-direrro = p_direl. APPEND wa_tctrmigracao TO t_tctrmigracao. wa_tctrmigracao-arquivo = vl_path9. wa_tctrmigracao-datimig = vl_dati. wa_tctrmigracao-horimig = vl_hori. wa_tctrmigracao-idteste = p_idtes. wa_tctrmigracao-direrro = p_direl. APPEND wa_tctrmigracao TO t_tctrmigracao.ENDFORM. " CRITICA_PARAMETROS*&---------------------------------------------------------------------**& Form UPLOAD_TIMESTAMP_LOCAL*&---------------------------------------------------------------------*FORM upload_timestamp_local. DATA: vl_data TYPE sy-datlo, vl_hora TYPE sy-timlo, vl_times TYPE tzonref-tstamps, vl_path TYPE localfile. CONCATENATE p_direl vg_arqtimestamp INTO vl_path. PERFORM upload USING vl_path CHANGING vl_path. IF NOT t_infile[] IS INITIAL. READ TABLE t_infile INTO wa_infile INDEX 1. IF sy-subrc IS INITIAL. WRITE wa_infile+0(8) TO vl_data. WRITE wa_infile+9(6) TO vl_hora. CALL FUNCTION 'CONVERT_INTO_TIMESTAMP' EXPORTING i_datlo = vl_data i_timlo = vl_hora* I_TZONE = SY-ZONLO IMPORTING e_timestamp = vl_times. IF vl_times IS INITIAL. MESSAGE e131(zbc001) INTO vg_dummy. PERFORM insere_log_standard. vg_subrc = 1. EXIT. ELSE. CONCATENATE c_u wa_infile INTO vg_timestamp. ENDIF. ELSE. MESSAGE e131(zbc001) INTO vg_dummy. PERFORM insere_log_standard. vg_subrc = 1. EXIT. ENDIF. ENDIF.ENDFORM. "upload_TIMESTAMP_local*&---------------------------------------------------------------------**& 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 vl_encodtype = c_nonunic IMPORTING t_data = t_infile EXCEPTIONS open_error = 1. IF sy-subrc IS INITIAL. READ TABLE t_infile INTO wa_infile INDEX 1. IF sy-subrc 0. MESSAGE e036(zbc001) WITH sy-subrc c_u vg_path INTO vg_dummy. PERFORM insere_log_standard. vg_subrc = 1. EXIT. ELSE. WRITE wa_infile+0(8) TO vl_data. WRITE wa_infile+9(6) TO vl_hora. CALL FUNCTION 'CONVERT_INTO_TIMESTAMP' EXPORTING i_datlo = vl_data i_timlo = vl_hora* I_TZONE = SY-ZONLO IMPORTING e_timestamp = vl_times. IF vl_times IS INITIAL. MESSAGE e131(zbc001) INTO vg_dummy. PERFORM insere_log_standard. vg_subrc = 1. EXIT. ELSE. CONCATENATE c_u wa_infile INTO vg_timestamp. ENDIF. ENDIF. ELSE. MESSAGE e132(zbc001) WITH sy-subrc INTO vg_dummy. PERFORM insere_log_standard. vg_subrc = 1. EXIT. ENDIF. IF sy-subrc IS NOT INITIAL. MESSAGE e132(zbc001) WITH sy-subrc INTO vg_dummy. PERFORM insere_log_standard. vg_subrc = 1. EXIT. ENDIF.ENDFORM. "upload_TIMESTAMP_SERVIDOR*&---------------------------------------------------------------------**& Form UPLOAD_ARQUIVOS_LOCAL*&---------------------------------------------------------------------*FORM upload_arquivos_local. DATA: vl_data TYPE sy-datlo, vl_hora TYPE sy-timlo, vl_times TYPE tzonref-tstamps, vl_path TYPE localfile. MESSAGE i159(zbc001) WITH vg_timestamp+1(15) INTO vg_dummy. PERFORM insere_log_standard. CONCATENATE p_direl c_cabec vg_timestamp c_txt INTO vl_path. PERFORM upload USING vl_path CHANGING vl_path. IF NOT t_infile[] IS INITIAL. t_cabec[] = t_infile[]. ENDIF. CONCATENATE p_direl c_ender vg_timestamp c_txt INTO vl_path. PERFORM upload USING vl_path CHANGING vl_path. IF NOT t_infile[] IS INITIAL. t_ender[] = t_infile[]. ENDIF. CONCATENATE p_direl c_tpend vg_timestamp c_txt INTO vl_path. PERFORM upload USING vl_path CHANGING vl_path. IF NOT t_infile[] IS INITIAL. t_tpend[] = t_infile[]. ENDIF. CONCATENATE p_direl c_funcao vg_timestamp c_txt INTO vl_path. PERFORM upload USING vl_path CHANGING vl_path. IF NOT t_infile[] IS INITIAL. t_funcao[] = t_infile[]. ENDIF. CONCATENATE p_direl c_telef vg_timestamp c_txt INTO vl_path. PERFORM upload USING vl_path CHANGING vl_path. IF NOT t_infile[] IS INITIAL. t_telef[] = t_infile[]. ENDIF. CONCATENATE p_direl c_emails vg_timestamp c_txt INTO vl_path. PERFORM upload USING vl_path CHANGING vl_path. IF NOT t_infile[] IS INITIAL. t_email[] = t_infile[]. ENDIF.* CONCATENATE p_direl c_faxes vg_timestamp c_txt INTO vl_path.* PERFORM upload USING vl_path* CHANGING vl_path.* IF NOT t_infile[] IS INITIAL.* t_faxes[] = t_infile[].* ENDIF. CONCATENATE p_direl c_ident vg_timestamp c_txt INTO vl_path. PERFORM upload USING vl_path CHANGING vl_path. IF NOT t_infile[] IS INITIAL. t_ident[] = t_infile[]. ENDIF. CONCATENATE p_direl c_contas vg_timestamp c_txt INTO vl_path. PERFORM upload USING vl_path CHANGING vl_path. IF NOT t_infile[] IS INITIAL. t_contas[] = t_infile[]. ENDIF.ENDFORM. " UPLOAD_ARQUIVOS_LOCAL*&---------------------------------------------------------------------**& 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. MESSAGE i159(zbc001) WITH vg_timestamp+1(15) INTO vg_dummy. PERFORM insere_log_standard.* Ler o arquivo de Dados Bsicos do BP 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_cabec EXCEPTIONS open_error = 1. IF sy-subrc IS NOT INITIAL. vg_subrc = sy-subrc. EXIT. ENDIF.* Ler o arquivo de Contas do BP CONCATENATE c_contas 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_contas EXCEPTIONS open_error = 1.* Ler o arquivo de Emails do BP CONCATENATE c_emails 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_email EXCEPTIONS open_error = 1.* Ler o arquivo de Endereos do BP CONCATENATE c_ender vg_timestamp c_txt INTO vg_substfile. vg_seqnz = 4. CALL METHOD zcl_componentes_diversos=>processar_interface EXPORTING vl_seqnz = vg_seqnz vl_substfile = vg_substfile vl_encodtype = c_nonunic IMPORTING t_data = t_ender EXCEPTIONS open_error = 1.* Ler o arquivo de Tipos de Endereos do BP CONCATENATE c_tpend vg_timestamp c_txt INTO vg_substfile. vg_seqnz = 5. CALL METHOD zcl_componentes_diversos=>processar_interface EXPORTING vl_seqnz = vg_seqnz vl_substfile = vg_substfile vl_encodtype = c_nonunic IMPORTING t_data = t_tpend EXCEPTIONS open_error = 1.* Ler o arquivo de Identificaes do BP CONCATENATE c_ident vg_timestamp c_txt INTO vg_substfile. vg_seqnz = 6. CALL METHOD zcl_componentes_diversos=>processar_interface EXPORTING vl_seqnz = vg_seqnz vl_substfile = vg_substfile vl_encodtype = c_nonunic IMPORTING t_data = t_ident EXCEPTIONS open_error = 1.* Ler o arquivo de Telefones do BP CONCATENATE c_telef vg_timestamp c_txt INTO vg_substfile. vg_seqnz = 7. CALL METHOD zcl_componentes_diversos=>processar_interface EXPORTING vl_seqnz = vg_seqnz vl_substfile = vg_substfile vl_encodtype = c_nonunic IMPORTING t_data = t_telef EXCEPTIONS open_error = 1.* Ler o arquivo de Funes do BP CONCATENATE c_funcao vg_timestamp c_txt INTO vg_substfile. vg_seqnz = 8. CALL METHOD zcl_componentes_diversos=>processar_interface EXPORTING vl_seqnz = vg_seqnz vl_substfile = vg_substfile vl_encodtype = c_nonunic IMPORTING t_data = t_funcao EXCEPTIONS open_error = 1.ENDFORM. " UPLOAD_ARQUIVOS_SERVIDOR*&---------------------------------------------------------------------**& Form UPLOAD*&---------------------------------------------------------------------*FORM upload USING p_path TYPE localfile CHANGING p_path2 TYPE localfile. DATA: vl_path TYPE string. vl_path = p_path. CHECK p_path IS NOT INITIAL.* CONCATENATE p_direu vl_path INTO vl_path.* Arquivo no PC Local. CALL FUNCTION 'GUI_UPLOAD' EXPORTING filename = vl_path filetype = 'ASC' 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. p_path2 = vl_path.ENDFORM. " UPLOAD*&---------------------------------------------------------------------**& Form CRIA_BP*&---------------------------------------------------------------------*FORM cria_bp. DATA: vl_taxtype TYPE bapibus1006tax-taxtype, vl_taxnumber TYPE bapibus1006tax-taxnumber, vl_texto TYPE char50, vl_contador TYPE char5, vl_resto TYPE num5, vl_tabix TYPE sy-tabix. LOOP AT t_cabec INTO wa_cabec. CLEAR: vg_subrc, vg_completo, wa_relat, vg_partner. ADD 1 TO vl_contador. vl_resto = vl_contador MOD p_exibe. IF vl_resto = 0. CONCATENATE c_texto vl_contador INTO vl_texto SEPARATED BY space. IF rb_locl = c_x. CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR' EXPORTING text = vl_texto. ELSE. WRITE /001 vl_texto. ENDIF. ENDIF. SELECT SINGLE bp_ecc completo FROM zfi_tdp_buspart INTO (vg_partner, vg_completo) WHERE dataorigintype = wa_cabec-dataorigintype AND bp_legado = wa_cabec-bpartner AND seqnr = wa_cabec-seqnr. wa_relat-dataorigintype = wa_cabec-dataorigintype. wa_relat-bp_ecc = vg_partner. wa_relat-bp_legado = wa_cabec-partnerexternal. IF vg_completo GE 8. ADD 1 TO vg_reproc. wa_relat-reproc = c_reproc. PERFORM sumariza_relatorio. CONTINUE. ELSE. wa_relat-bastot = 1. ENDIF.************************************************************************ Exporta CDIGO para que a BADI de salvar BP possa* identificar e no enviar e-mails.* INICIO ALTERAO BACHOUR - 05/07/11. vg_interfbp = c_migracao.* FIM ALTERAO BACHOUR - 05/07/11. EXPORT vg_interfbp TO MEMORY ID 'VG_INTERFBP'.*********************************************************************** PERFORM trata_dados_cabec. IF vg_subrc IS NOT INITIAL. wa_relat-baserr = 1. PERFORM gera_arquivos_erros USING wa_cabec-dataorigintype wa_cabec-bpartner wa_cabec-seqnr. PERFORM sumariza_relatorio. CONTINUE. ENDIF. IF vg_completo LT 1. IF wa_cabec-partn_cat = 2.* Processa Pessoa Jurdica CALL FUNCTION 'BAPI_BUPA_CREATE_FROM_DATA' EXPORTING partnercategory = wa_cabec-partn_cat partnergroup = wa_cabec-partn_grp centraldata = wa_centraldata centraldataorganization = wa_centralorgan addressdata = wa_addressdata IMPORTING businesspartner = vg_partner TABLES telefondata = t_telefondata faxdata = t_faxdata e_maildata = t_maildata return = t_return. ELSE. " wa_cabec-partn_cat = 1* Processa Pessoa Fsica CALL FUNCTION 'BAPI_BUPA_CREATE_FROM_DATA' EXPORTING partnercategory = wa_cabec-partn_cat partnergroup = wa_cabec-partn_grp centraldata = wa_centraldata centraldataperson = wa_centralperson addressdata = wa_addressdata IMPORTING businesspartner = vg_partner TABLES telefondata = t_telefondata faxdata = t_faxdata e_maildata = t_maildata return = t_return. ENDIF. PERFORM trata_return USING c_bas wa_cabec-filedt wa_cabec-filehr wa_cabec-filesq. IF vg_subrc IS NOT INITIAL.* Se houve erro na gerao do BP todos os dados correspondentes a* ele nos arquivos subsequentes devem ser ignorados. PERFORM gera_arquivos_erros USING wa_cabec-dataorigintype wa_cabec-bpartner wa_cabec-seqnr. wa_relat-baserr = 1. PERFORM sumariza_relatorio. CONTINUE. ENDIF.* Caso o BP no d erro ele deve ser gravado para que mesmo* a tentativa de insero dos endereos possa ser feita. CALL FUNCTION 'BAPI_TRANSACTION_COMMIT' EXPORTING wait = c_x IMPORTING return = wa_return. REFRESH t_return. APPEND wa_return TO t_return. PERFORM trata_return USING c_bas wa_cabec-filedt wa_cabec-filehr wa_cabec-filesq. IF vg_subrc IS NOT INITIAL.* Se houve eero na gerao do BP todos os dados correspondentes a* ele nos arquivos subsequentes devem ser ignorados. PERFORM gera_arquivos_erros USING wa_cabec-dataorigintype wa_cabec-bpartner wa_cabec-seqnr. wa_relat-baserr = 1. PERFORM sumariza_relatorio. CONTINUE. ELSE. IF wa_cabec-partn_cat = 1.* Se for pessoa Fsica deve acionar o FLAG que diz que ele o ,* seno no aceita a insero do CPF. CALL FUNCTION 'BUPA_TAX_COMMON_CHANGE' EXPORTING iv_partner = vg_partner iv_tax_common = c_xtax TABLES ct_return = t_return EXCEPTIONS not_found = 1 internal_error = 2 OTHERS = 3. PERFORM trata_return USING c_bas wa_cabec-filedt wa_cabec-filehr wa_cabec-filesq. IF vg_subrc IS NOT INITIAL. PERFORM gera_arquivos_erros USING wa_cabec-dataorigintype wa_cabec-bpartner wa_cabec-seqnr. wa_relat-baserr = 1. PERFORM sumariza_relatorio. CONTINUE. ELSE. CALL FUNCTION 'BAPI_TRANSACTION_COMMIT' EXPORTING wait = c_x IMPORTING return = wa_return. REFRESH t_return. APPEND wa_return TO t_return. PERFORM trata_return USING c_bas wa_cabec-filedt wa_cabec-filehr wa_cabec-filesq. IF vg_subrc IS NOT INITIAL. PERFORM gera_arquivos_erros USING wa_cabec-dataorigintype wa_cabec-bpartner wa_cabec-seqnr. wa_relat-baserr = 1. PERFORM sumariza_relatorio. CONTINUE. ENDIF. ENDIF. ENDIF.* Associa o primeiro endereo cadastrado aos seus tipos SELECT SINGLE addrnumber FROM but020 INTO wa_but020-addrnumber WHERE partner = vg_partner. IF sy-subrc IS INITIAL. REFRESH: t_but020_new, t_but020_old, t_but021_new, t_but021_old. PERFORM cadastra_tipos_endereco USING wa_but020-addrnumber. ELSE. CONCATENATE c_end c_u wa_ender-filesq INTO vg_idmsg. MESSAGE e205(zbc001) WITH vg_idmsg INTO vg_dummy. PERFORM insere_log_standard. vg_subrc = 1. ADD 1 TO wa_relat-enderr. ENDIF. ENDIF. wa_relat-bp_ecc = vg_partner. wa_tdpbuspart-dataorigintype = wa_cabec-dataorigintype. wa_tdpbuspart-bp_ecc = vg_partner. wa_tdpbuspart-bp_legado = wa_cabec-bpartner. wa_tdpbuspart-seqnr = wa_cabec-seqnr.*ESTA TABELA "Z" NECESSRIA PORQUE O BP DEVE SER GRAVADO INDEPENDENTE*DE DAR*ERRO EM ALGUNS DOS SEUS ARQUIVOS PERIFRICOS, J QUE PRA GRAVAR*ENDEREOS E AS FUNES,* NECESSRIO EXECUTAR COMMIT APS A CARGA DOS DADOS BSICOS.*ASSIM, AO TENTAR REPROCESSAR O MESMO IDE POSSVEL BYPASSAR O*CADASTRAMENTO DUPLICADO DOS DADOS BSICOS NO ECC. vg_completo = wa_tdpbuspart-completo = 1. INSERT zfi_tdp_buspart FROM wa_tdpbuspart. MOVE-CORRESPONDING wa_tdpbuspart TO wa_depara. APPEND wa_depara TO t_depara. COMMIT WORK. ENDIF.* Grava a tabela de ce controle para ao final processar as funes* de cada BP processado. APPEND wa_tdpbuspart TO t_tdpbuspart. vl_tabix = sy-tabix.*1 - Se Gravou dados bsicos*2 - Se Gravou endereo*4 - Se Gravou funcao*8 - Se Gravou tudo IF vg_completo NE 3 AND vg_completo NE 7. CLEAR vg_subrcparcial. PERFORM gera_outros_enderecos. IF vg_subrc IS INITIAL. wa_tdpbuspart-completo = vg_completo = vg_completo + 2. ELSE. CALL FUNCTION 'BAPI_TRANSACTION_COMMIT' EXPORTING wait = c_x IMPORTING return = wa_return. ENDIF. ENDIF. READ TABLE t_ident INTO wa_ident WITH KEY dataorigintype = wa_cabec-dataorigintype bpartner = wa_cabec-bpartner seqnr = wa_cabec-seqnr BINARY SEARCH. IF sy-subrc IS INITIAL.* Grava as Identificaes do Parceiro (CNPJ / CPF, etc.). LOOP AT t_ident INTO wa_ident FROM sy-tabix. IF wa_ident-dataorigintype NE wa_cabec-dataorigintype OR wa_ident-bpartner NE wa_cabec-bpartner OR wa_ident-seqnr NE wa_cabec-seqnr. EXIT. ENDIF. ADD 1 TO wa_relat-idetot. vl_taxtype = wa_ident-taxtype. vl_taxnumber = wa_ident-taxnumber. CALL FUNCTION 'BAPI_BUPA_TAX_ADD' EXPORTING businesspartner = vg_partner taxtype = vl_taxtype taxnumber = vl_taxnumber TABLES return = t_return. PERFORM trata_return USING c_ide wa_ident-filedt wa_ident-filehr wa_ident-filesq. IF vg_subrc IS NOT INITIAL. ADD 1 TO wa_relat-ideerr. ELSE. PERFORM commit_work. ENDIF. ENDLOOP. ENDIF. CLEAR vg_temconta. READ TABLE t_contas INTO wa_contas WITH KEY dataorigintype = wa_cabec-dataorigintype bpartner = wa_cabec-bpartner seqnr = wa_cabec-seqnr BINARY SEARCH. IF sy-subrc IS INITIAL.* vg_temconta = 'S'.* Grava as Contas Bancrias do BP do Parceiro. LOOP AT t_contas INTO wa_contas FROM sy-tabix. IF wa_contas-dataorigintype NE wa_cabec-dataorigintype OR wa_contas-bpartner NE wa_cabec-bpartner OR wa_contas-seqnr NE wa_cabec-seqnr. EXIT. ENDIF. ADD 1 TO wa_relat-contot. vg_pais = wa_contas-bank_ctry. PERFORM converte_pais USING wa_contas-bank_ctry CHANGING wa_contas-bank_ctry. IF vg_subrcpais IS NOT INITIAL. CONCATENATE c_con c_u wa_contas-filesq INTO vg_idmsg. MESSAGE e168(zbc001) WITH vg_idmsg vg_pais INTO vg_dummy. PERFORM insere_log_standard. vg_subrc = 1. ADD 1 TO wa_relat-conerr. ENDIF. MOVE-CORRESPONDING wa_contas TO wa_bankdetail.*BENUN - 21/09/11 - INICIO* wa_bankdetail-iban_from_date = sy-datum - 36500.* wa_bankdetail-bankdetailvalidfrom = sy-datum - 36500. IF NOT wa_cabec-foundationdate IS INITIAL. wa_bankdetail-bankdetailvalidfrom = wa_cabec-foundationdate. wa_bankdetail-iban_from_date = wa_cabec-foundationdate. ELSE. wa_bankdetail-bankdetailvalidfrom = c_foundationdt. wa_bankdetail-iban_from_date = c_foundationdt. ENDIF. IF wa_bankdetail-bankdetailvalidfrom > wa_bankdetail-bankdetailvalidto. CLEAR wa_bankdetail-bankdetailvalidto. ENDIF.*BENUN - 21/09/11 - FIM CALL FUNCTION 'BAPI_BUPA_BANKDETAIL_ADD' EXPORTING businesspartner = vg_partner* PROJETO AGIR PRODUTO CARGA BP INICIO* ALTERADO POR BRUNO NUNES - 28/04/2011* bankdetailid = wa_bankid "ID da conta bankdetailid = wa_contas-bankdetailid"ID da conta* PROJETO AGIR PRODUTO CARGA BP FIM bankdetaildata = wa_bankdetail TABLES return = t_return. PERFORM trata_return USING c_con wa_contas-filedt wa_contas-filehr wa_contas-filesq. IF vg_subrc IS NOT INITIAL. ADD 1 TO wa_relat-conerr. ELSE. PERFORM commit_work. ENDIF. ENDLOOP. ENDIF. IF vg_completo GT 1. UPDATE zfi_tdp_buspart FROM wa_tdpbuspart. MODIFY t_tdpbuspart FROM wa_tdpbuspart INDEX vl_tabix. PERFORM commit_work. ENDIF. PERFORM sumariza_relatorio.**** ESTA TABELA INTERNA NECESSRIA PARA O POSTERIOR CADASTRAMENTO DAS** FUNES E DOS DADOS DE FORNECEDOR E CLIENTE QUE DEVEM SER** COMPLETADOS ATRAVS DE SHDB.* wa_bpgravado-dataorigintype = wa_cabec-dataorigintype.* wa_bpgravado-bp_ecc = vg_partner.* wa_bpgravado-bp_legado = wa_cabec-bpartner.* wa_bpgravado-seqnr = wa_cabec-seqnr.* wa_bpgravado-partn_grp = wa_cabec-partn_grp.* wa_bpgravado-completo = vg_completo.* APPEND wa_bpgravado TO t_bpgravado. ENDLOOP.ENDFORM. " CRIA_BP*&---------------------------------------------------------------------**& Form PROCESSA_FUNCOES_DOS_BPs*&---------------------------------------------------------------------*FORM processa_funcoes_dos_bps . SORT t_relat BY dataorigintype ASCENDING bp_legado ASCENDING bp_ecc ASCENDING. LOOP AT t_tdpbuspart INTO wa_tdpbuspart. vg_partner = wa_tdpbuspart-bp_ecc. IF wa_tdpbuspart-completo NE 5 AND wa_tdpbuspart-completo NE 7. CLEAR wa_relat. PERFORM cria_funcoes. IF vg_subrc IS INITIAL. wa_tdpbuspart-completo = wa_tdpbuspart-completo + 4. ENDIF. ENDIF. IF vg_subrc IS NOT INITIAL. PERFORM gera_arquivos_erros USING wa_tdpbuspart-dataorigintype wa_tdpbuspart-bp_legado wa_tdpbuspart-seqnr.* ROLLBACK WORK. IF wa_tdpbuspart-completo EQ 3 OR wa_tdpbuspart-completo EQ 5 OR wa_tdpbuspart-completo EQ 7.* Se houve gravao de Endereos e/ou Funes salva o Status da* gravao. UPDATE zfi_tdp_buspart FROM wa_tdpbuspart. PERFORM commit_work. ENDIF. ELSE. wa_tdpbuspart-completo = 8. IF vg_subrc IS INITIAL.* Se no houve erros no restante dos dados do BP atualiza a tabela* de controle. UPDATE zfi_tdp_buspart FROM wa_tdpbuspart. PERFORM commit_work. ENDIF. ENDIF. ENDLOOP.ENDFORM. " PROCESSA_FUNCOES_DOS_BPs*&---------------------------------------------------------------------**& Form GERA_OUTROS_ENDERECOS*&---------------------------------------------------------------------*FORM gera_outros_enderecos. DATA: vl_number TYPE ad_addrnum, vl_timeini TYPE num6, vl_time TYPE num6, vl_uzeit TYPE num6, vl_countbut1 TYPE num2, vl_countbut2 TYPE num2. READ TABLE t_ender INTO wa_ender WITH KEY dataorigintype = wa_cabec-dataorigintype bpartner = wa_cabec-bpartner seqnr = wa_cabec-seqnr BINARY SEARCH. IF sy-subrc IS INITIAL.* Grava os diferentes endereos do Parceiro LOOP AT t_ender INTO wa_ender FROM sy-tabix. IF wa_ender-dataorigintype NE wa_cabec-dataorigintype OR wa_ender-bpartner NE wa_cabec-bpartner OR wa_ender-seqnr NE wa_cabec-seqnr. EXIT. ENDIF.* ADD 1 TO wa_relat-endtot. "BENUN - 20/06/2011 REFRESH: t_but020_new, t_but021_new, t_addresses, t_address. CLEAR vg_subrcparcial. vg_pais = wa_ender-pobox_ctry. PERFORM converte_pais USING wa_ender-pobox_ctry CHANGING wa_ender-pobox_ctry. IF vg_subrcpais IS NOT INITIAL. CONCATENATE c_end c_u wa_ender-filesq INTO vg_idmsg. MESSAGE e168(zbc001) WITH vg_idmsg vg_pais INTO vg_dummy. PERFORM insere_log_standard. vg_subrc = 1. ADD 1 TO wa_relat-enderr. ENDIF. vg_pais = wa_ender-country. PERFORM converte_pais USING wa_ender-country CHANGING wa_ender-country. IF vg_subrcpais IS NOT INITIAL. CONCATENATE c_end c_u wa_ender-filesq INTO vg_idmsg. MESSAGE e168(zbc001) WITH vg_idmsg vg_pais INTO vg_dummy. PERFORM insere_log_standard. vg_subrc = 1. ADD 1 TO wa_relat-enderr. ENDIF. MOVE-CORRESPONDING wa_ender TO wa_addressdata. wa_addressdata-validtodate = c_dtfim.*BENUN - 21/09/11 - INICIO* wa_addressdata-validfromdate = sy-datum. IF NOT wa_cabec-foundationdate IS INITIAL. wa_addressdata-validfromdate = wa_cabec-foundationdate. ELSE. wa_addressdata-validfromdate = c_foundationdt. ENDIF.*BENUN - 21/09/11 - FIM wa_addressdata-langu = sy-langu. "deve ser informado, seno no replica em FI. IF NOT wa_addressdata-region IS INITIAL AND NOT wa_addressdata-taxjurcode IS INITIAL."BENUN - 26/09/11 CONCATENATE wa_addressdata-region wa_addressdata-taxjurcode INTO wa_addressdata-taxjurcode SEPARATED BY space. ENDIF."BENUN - 26/09/11* Verifica se endereo j foi cadastrado em processamento anterior* devido necessidade de Commit mais abaixo. CALL FUNCTION 'BAPI_BUPA_ADDRESSES_GET' EXPORTING businesspartner = vg_partner TABLES addresses = t_addresses. LOOP AT t_addresses INTO wa_addresses. CALL FUNCTION 'BAPI_BUPA_ADDRESS_GETDETAIL' EXPORTING businesspartner = vg_partner addressguid = wa_addresses-addressguid IMPORTING addressdata = wa_address. PERFORM verifica_endereco_cadastrado. IF vg_subrcparcial IS NOT INITIAL. EXIT. ENDIF. ENDLOOP.*BENUN - 21/09/11 - INICIO* CONCATENATE sy-datum c_timezero INTO vg_valfromx.* vg_valfrom = vg_valfromx. IF NOT wa_cabec-foundationdate IS INITIAL. CONCATENATE wa_cabec-foundationdate c_timezero INTO vg_valfromx. vg_valfrom = vg_valfromx. ELSE. CONCATENATE c_foundationdt c_timezero INTO vg_valfromx. vg_valfrom = vg_valfromx. ENDIF.*BENUN - 21/09/11 - FIM* Se o endereo no foi gravado ainda, grava-o e o seus tipos. IF vg_subrcparcial IS INITIAL.* Recupera a quantidade de endereos do BP para comparar mais* abaixo. Esse procedimento visa a no utilizao de WAIT no* processo. CLEAR: vl_countbut1, vl_countbut2. REFRESH t_partner. SELECT partner FROM but020 INTO TABLE t_partner WHERE partner = vg_partner. IF sy-subrc IS INITIAL. DESCRIBE TABLE t_partner LINES vl_countbut1. ENDIF. REFRESH t_but020_new. CALL FUNCTION 'BAPI_BUPA_ADDRESS_ADD' EXPORTING businesspartner = vg_partner addressdata = wa_addressdata TABLES return = t_return. PERFORM trata_return USING c_end wa_ender-filedt wa_ender-filehr wa_ender-filesq. CALL FUNCTION 'BAPI_TRANSACTION_COMMIT' EXPORTING wait = c_x IMPORTING return = wa_return. REFRESH t_return. APPEND wa_return TO t_return. PERFORM trata_return USING c_end wa_ender-filedt wa_ender-filehr wa_ender-filesq. IF vg_subrc IS INITIAL. ADD 1 TO wa_relat-endtot. "BENUN - 20/06/2011 GET TIME. vl_timeini = sy-uzeit. WHILE vl_time LT 10. GET TIME. vl_uzeit = sy-uzeit. vl_time = vl_uzeit - vl_timeini. REFRESH t_partner. SELECT partner FROM but020 INTO TABLE t_partner WHERE partner = vg_partner. IF sy-subrc IS INITIAL. DESCRIBE TABLE t_partner LINES vl_countbut2. IF vl_countbut2 > vl_countbut1. EXIT. ENDIF. ENDIF. ENDWHILE. IF vl_countbut2 IS NOT INITIAL. CALL FUNCTION 'BUA_ADDRESS_BUT020_GET' EXPORTING iv_partner = vg_partner TABLES et_but020 = t_bus020. SORT t_bus020 BY addrnumber DESCENDING. READ TABLE t_bus020 INTO wa_bus020 INDEX 1. wa_but020_new-partner = vg_partner. wa_but020_new-addr_valid_to = c_tstamp. wa_but020_new-address_guid = wa_bus020-address_guid. wa_but020_new-addr_valid_from = vg_valfrom. wa_but020_new-addrnumber = wa_bus020-addrnumber. wa_but020_new-chngind = c_x. APPEND wa_but020_new TO t_but020_new. PERFORM cadastra_tipos_endereco USING wa_bus020-addrnumber. ELSE. CONCATENATE c_end c_u wa_ender-filesq INTO vg_idmsg. MESSAGE e205(zbc001) WITH vg_idmsg INTO vg_dummy. PERFORM insere_log_standard. vg_subrc = 1. ADD 1 TO wa_relat-enderr. ENDIF. ENDIF. ELSE.* Se o endereo j foi gravado, gera somente os Tipos dele. SELECT * FROM but020 INTO TABLE t_but020 WHERE partner = vg_partner. IF sy-subrc IS INITIAL. SORT t_but020 BY addrnumber DESCENDING. READ TABLE t_but020 INTO wa_but020 INDEX 1. PERFORM cadastra_tipos_endereco USING wa_but020-addrnumber. ELSE. CONCATENATE c_end c_u wa_ender-filesq INTO vg_idmsg. MESSAGE e205(zbc001) WITH vg_idmsg INTO vg_dummy. PERFORM insere_log_standard. vg_subrc = 1. ADD 1 TO wa_relat-enderr. ENDIF. CLEAR vg_subrcparcial. ENDIF. IF vg_subrc IS NOT INITIAL. ADD 1 TO wa_relat-enderr. ENDIF. ENDLOOP. ENDIF.ENDFORM. "GERA_OUTROS_ENDERECOS*&---------------------------------------------------------------------**& Form TRATA_DADOS_CABEC*&---------------------------------------------------------------------*FORM trata_dados_cabec. DATA: vl_tabix TYPE sy-tabix. REFRESH: t_telefondata, t_faxdata, t_maildata, t_nomebp. vg_pais = wa_cabec-namcountry. PERFORM converte_pais USING wa_cabec-namcountry CHANGING wa_cabec-namcountry. IF vg_subrcpais IS NOT INITIAL. CONCATENATE c_bas c_u wa_cabec-filesq INTO vg_idmsg. MESSAGE e168(zbc001) WITH vg_idmsg vg_pais INTO vg_dummy. PERFORM insere_log_standard. vg_subrc = 1. ADD 1 TO wa_relat-baserr. ENDIF. vg_pais = wa_cabec-countryorigin. PERFORM converte_pais USING wa_cabec-countryorigin CHANGING wa_cabec-countryorigin. IF vg_subrcpais IS NOT INITIAL. CONCATENATE c_bas c_u wa_cabec-filesq INTO vg_idmsg. MESSAGE e168(zbc001) WITH vg_idmsg vg_pais INTO vg_dummy. PERFORM insere_log_standard. vg_subrc = 1. ADD 1 TO wa_relat-baserr. ENDIF. MOVE-CORRESPONDING wa_cabec TO: wa_centraldata, wa_centralperson, wa_centralorgan, wa_centralgroup.* Formata o Nome do BP em partes de 35 caracteres para que possa* ser replicado em FI que tem esse limite CLEAR wa_nomebp. IF wa_cabec-partn_cat = 2.* Processa Pessoa Jurdica CONCATENATE wa_centralorgan-name1 wa_centralorgan-name2 wa_centralorgan-name3 wa_centralorgan-name4 INTO wa_nomebp-tdline SEPARATED BY space. APPEND wa_nomebp TO t_nomebp. CALL FUNCTION 'FORMAT_TEXTLINES' EXPORTING cursor_column = 0 cursor_line = 0 endline = 99999 formatwidth = 35 linewidth = 35 startline = 1 TABLES lines = t_nomebp. LOOP AT t_nomebp INTO wa_nomebp. IF sy-tabix = 1. wa_centralorgan-name1 = wa_nomebp-tdline. ENDIF. IF sy-tabix = 2. wa_centralorgan-name2 = wa_nomebp-tdline. ENDIF. IF sy-tabix = 3. wa_centralorgan-name3 = wa_nomebp-tdline. ENDIF. IF sy-tabix = 4. wa_centralorgan-name4 = wa_nomebp-tdline. ENDIF. ENDLOOP. ELSE.* O idioma deve ser informado, seno no replica Cliente em FI. wa_centralperson-correspondlanguage = sy-langu. ENDIF. READ TABLE t_telef INTO wa_telef WITH KEY dataorigintype = wa_cabec-dataorigintype bpartner = wa_cabec-bpartner seqnr = wa_cabec-seqnr BINARY SEARCH. IF sy-subrc IS INITIAL. LOOP AT t_telef INTO wa_telef FROM sy-tabix. IF wa_telef-dataorigintype NE wa_cabec-dataorigintype OR wa_telef-bpartner NE wa_cabec-bpartner OR wa_telef-seqnr NE wa_cabec-seqnr. EXIT. ENDIF. vg_pais = wa_telef-country. PERFORM converte_pais USING wa_telef-country CHANGING wa_telef-country. IF vg_subrcpais IS NOT INITIAL. CONCATENATE c_tel c_u wa_telef-filesq INTO vg_idmsg. MESSAGE e168(zbc001) WITH vg_idmsg vg_pais INTO vg_dummy. PERFORM insere_log_standard. vg_subrc = 1. ADD 1 TO wa_relat-telerr. ENDIF. MOVE-CORRESPONDING wa_telef TO wa_telefondata. APPEND wa_telefondata TO t_telefondata. IF vg_completo LT 1. ADD 1 TO wa_relat-teltot. ENDIF. ENDLOOP. ENDIF. READ TABLE t_faxes INTO wa_faxes WITH KEY dataorigintype = wa_cabec-dataorigintype bpartner = wa_cabec-bpartner seqnr = wa_cabec-seqnr BINARY SEARCH. IF sy-subrc IS INITIAL. LOOP AT t_faxes INTO wa_faxes FROM sy-tabix. IF wa_faxes-dataorigintype NE wa_cabec-dataorigintype OR wa_faxes-bpartner NE wa_cabec-bpartner OR wa_faxes-seqnr NE wa_cabec-seqnr. EXIT. ENDIF. vg_pais = wa_faxes-country. PERFORM converte_pais USING wa_faxes-country CHANGING wa_faxes-country. IF vg_subrcpais IS NOT INITIAL. CONCATENATE c_fax c_u wa_faxes-filesq INTO vg_idmsg. MESSAGE e168(zbc001) WITH vg_idmsg vg_pais INTO vg_dummy. PERFORM insere_log_standard. vg_subrc = 1. ADD 1 TO wa_relat-faxerr. ENDIF. MOVE-CORRESPONDING wa_faxes TO wa_faxdata. APPEND wa_faxdata TO t_faxdata. IF vg_completo LT 1. ADD 1 TO wa_relat-faxtot. ENDIF. ENDLOOP. ENDIF. READ TABLE t_email INTO wa_email WITH KEY dataorigintype = wa_cabec-dataorigintype bpartner = wa_cabec-bpartner seqnr = wa_cabec-seqnr BINARY SEARCH. IF sy-subrc IS INITIAL. LOOP AT t_email INTO wa_email FROM sy-tabix. IF wa_email-dataorigintype NE wa_cabec-dataorigintype OR wa_email-bpartner NE wa_cabec-bpartner OR wa_email-seqnr NE wa_cabec-seqnr. EXIT. ENDIF. MOVE-CORRESPONDING wa_email TO wa_maildata. APPEND wa_maildata TO t_maildata. IF vg_completo LT 1. ADD 1 TO wa_relat-ematot. ENDIF. ENDLOOP. ENDIF.* Carrega o Primeiro Endereo do BP como Standard no momento da criao* Para que os dados de telefone e e-mail possam ser cadastrados. CLEAR wa_addressdata. READ TABLE t_ender INTO wa_ender WITH KEY dataorigintype = wa_cabec-dataorigintype bpartner = wa_cabec-bpartner seqnr = wa_cabec-seqnr BINARY SEARCH. IF sy-subrc IS INITIAL.* DELETE t_ender INDEX sy-tabix. "Bruno vg_pais = wa_ender-pobox_ctry. PERFORM converte_pais USING wa_ender-pobox_ctry CHANGING wa_ender-pobox_ctry. IF vg_subrcpais IS NOT INITIAL. CONCATENATE c_end c_u wa_ender-filesq INTO vg_idmsg. MESSAGE e168(zbc001) WITH vg_idmsg vg_pais INTO vg_dummy. PERFORM insere_log_standard. vg_subrc = 1. ADD 1 TO wa_relat-enderr. ENDIF. vg_pais = wa_ender-country. PERFORM converte_pais USING wa_ender-country CHANGING wa_ender-country. IF vg_subrcpais IS NOT INITIAL. CONCATENATE c_end c_u wa_ender-filesq INTO vg_idmsg. MESSAGE e168(zbc001) WITH vg_idmsg vg_pais INTO vg_dummy. PERFORM insere_log_standard. vg_subrc = 1. ADD 1 TO wa_relat-enderr. ENDIF. MOVE-CORRESPONDING wa_ender TO wa_addressdata.* O idioma deve ser informado, seno no replica Cliente em FI. wa_addressdata-langu = sy-langu. wa_addressdata-validtodate = c_dtfim.*BENUN - 21/09/11 - INICIO* wa_addressdata-validfromdate = sy-datum. IF NOT wa_cabec-foundationdate IS INITIAL. wa_addressdata-validfromdate = wa_cabec-foundationdate. ELSE. wa_addressdata-validfromdate = c_foundationdt. ENDIF.*BENUN - 21/09/11 - FIM wa_addressdata-standardaddress = c_x. IF NOT wa_addressdata-region IS INITIAL"BENUN - 26/09/11 AND NOT wa_addressdata-taxjurcode IS INITIAL. CONCATENATE wa_addressdata-region wa_addressdata-taxjurcode INTO wa_addressdata-taxjurcode SEPARATED BY space. vg_taxjr = wa_addressdata-taxjurcode. ENDIF."BENUN - 26/09/11 vg_land1 = wa_addressdata-country. vg_regio = wa_addressdata-region. vg_stras = wa_addressdata-street. vg_ort01 = wa_addressdata-city. vg_pstlz = wa_addressdata-postl_cod1. IF vg_completo LT 1. ADD 1 TO wa_relat-endtot. ENDIF. ELSE. ADD 1 TO wa_relat-enderr. CONCATENATE c_bas c_u* wa_cabec-filedt c_u* wa_cabec-filehr c_u wa_cabec-filesq INTO vg_idmsg. MESSAGE e146(zbc001) WITH vg_idmsg c_u INTO vg_dummy. PERFORM insere_log_standard. vg_subrc = 1. EXIT. ENDIF.ENDFORM. " TRATA_DADOS_CABEC*&---------------------------------------------------------------------**& Form TRATA_RETURN*&---------------------------------------------------------------------*FORM trata_return USING p_fileid TYPE any p_filedt p_filehr p_filesq. DATA: vl_idmsg(50) TYPE c, vl_primvez(01) TYPE c VALUE 'S'. CLEAR: vg_subrcparcial, vg_msgid, vg_msgno, wa_return. LOOP AT t_return INTO wa_return WHERE type EQ 'E' OR number = 344. CONCATENATE p_fileid c_u p_filesq INTO vl_idmsg. MESSAGE e004(zbc001) WITH vl_idmsg wa_return-message(25) wa_return-message+25(25) wa_return-message+50(25) INTO vg_dummy. IF vl_primvez IS NOT INITIAL. CLEAR vl_primvez. vg_subrcparcial = 1. ENDIF. IF ( wa_return-id EQ c_f2 AND wa_return-number EQ c_042 ). vg_msgid = c_f2. vg_msgno = c_042. vg_subrc = 1. ELSEIF ( wa_return-id EQ c_r1 AND wa_return-number EQ c_086 ). vg_msgid = c_r1. vg_msgno = c_086. vg_subrc = 1. ELSE. vg_subrc = 1. PERFORM insere_log_standard. ENDIF. ENDLOOP. REFRESH t_return.ENDFORM. " TRATA_RETURN*&---------------------------------------------------------------------**& Form INSERE_LOG_STANDARD*&---------------------------------------------------------------------*FORM insere_log_standard . CALL METHOD zcl_componentes_diversos=>inserir_log.* EXPORTING* vl_idmen = wa_interface-idmen.ENDFORM. " INSERE_LOG_STANDARD*&---------------------------------------------------------------------**& Form CRIA_FUNCOES*&---------------------------------------------------------------------*FORM cria_funcoes . CLEAR: vg_subrc, vg_primfunc, vg_temconta. REFRESH: t_roles, t_compleguia.* Seleciona todas as funes j gravadas para o Parceiro em processos* anteriores. SELECT partner rltyp FROM but100 INTO TABLE t_but100 WHERE partner = vg_partner. READ TABLE t_cabec INTO wa_cabec WITH KEY dataorigintype = wa_tdpbuspart-dataorigintype bpartner = wa_tdpbuspart-bp_legado seqnr = wa_tdpbuspart-seqnr.* BINARY SEARCH."BENUN - 28/07/2011 READ TABLE t_relat INTO wa_relat WITH KEY dataorigintype = wa_cabec-dataorigintype bp_legado = wa_cabec-bpartner bp_ecc = vg_partner.* BINARY SEARCH."BENUN - 28/07/2011 vg_indrelat = sy-tabix. READ TABLE t_contas INTO wa_contas WITH KEY dataorigintype = wa_cabec-dataorigintype bpartner = wa_cabec-bpartner seqnr = wa_cabec-seqnr.* BINARY SEARCH."BENUN - 28/07/2011 IF sy-subrc IS INITIAL. vg_temconta = 'S'. ENDIF.* Reclassifica o arquivo de endereos para gerar os Dados Fiscais. SORT t_ender BY dataorigintype ASCENDING bpartner ASCENDING seqnr ASCENDING standardaddress ASCENDING. READ TABLE t_funcao INTO wa_funcao WITH KEY dataorigintype = wa_cabec-dataorigintype bpartner = wa_cabec-bpartner seqnr = wa_cabec-seqnr.* BINARY SEARCH."BENUN - 28/07/2011 IF sy-subrc IS INITIAL.* Grava as diferentes Funes do Parceiro LOOP AT t_funcao INTO wa_funcao FROM sy-tabix. IF wa_funcao-dataorigintype NE wa_cabec-dataorigintype OR wa_funcao-bpartner NE wa_cabec-bpartner OR wa_funcao-seqnr NE wa_cabec-seqnr. EXIT. ENDIF. CLEAR vg_subrc. ADD 1 TO wa_relat-funtot.* Verifica se h informao de Conta Bancria quando a* Forma de Pagamento contm "T" ou "V". IF vg_temconta IS INITIAL AND wa_funcao-zwels CA c_tv. CONCATENATE c_fun c_u wa_cabec-filesq INTO vg_idmsg. MESSAGE e189(zbc001) WITH vg_idmsg wa_funcao-role wa_cabec-partn_grp INTO vg_dummy. PERFORM insere_log_standard. ADD 1 TO wa_relat-funerr. CONTINUE. ENDIF.* Verifica se a Funo pode ser associada ao Agrupamento. CLEAR wa_agrpfunc. READ TABLE t_agrpfunc INTO wa_agrpfunc WITH KEY role = wa_funcao-role bu_group = wa_cabec-partn_grp. IF sy-subrc IS INITIAL. IF wa_agrpfunc-roleguia IS NOT INITIAL. PERFORM gera_funcao USING wa_agrpfunc-roleguia c_x. IF vg_subrc IS INITIAL. PERFORM gera_funcao USING wa_funcao-role space. ENDIF. ELSE. PERFORM gera_funcao USING wa_funcao-role c_x. ENDIF. ELSE. CONCATENATE c_fun c_u wa_cabec-filesq INTO vg_idmsg. MESSAGE e164(zbc001) WITH vg_idmsg wa_funcao-role wa_cabec-partn_grp INTO vg_dummy. PERFORM insere_log_standard. vg_subrc = 1. ADD 1 TO wa_relat-funerr. ENDIF. ENDLOOP. ADD wa_relat-funtot TO vg_funtot. ADD wa_relat-funerr TO vg_funerr. ADD wa_relat-reptot TO vg_reptot. ADD wa_relat-reperr TO vg_reperr. MODIFY t_relat FROM wa_relat INDEX vg_indrelat. ENDIF.ENDFORM. " CRIA_FUNCOES*&---------------------------------------------------------------------**& Form GERA_FUNCAO*&---------------------------------------------------------------------*FORM gera_funcao USING p_role TYPE bu_partnerrole p_guia TYPE char1.* Verifica se a Funo j foi cadastrada no BP, em processamento* anterior. READ TABLE t_but100 INTO wa_but100 WITH KEY rltyp = p_role. IF sy-subrc IS NOT INITIAL.* Verifica se a Funo j foi cadastrada no BP, neste processamento. READ TABLE t_roles INTO wa_roles WITH KEY rltyp = p_role. IF sy-subrc IS NOT INITIAL. PERFORM gera_funcao_e_replica_bp_em_fi USING p_role p_guia. ENDIF. ENDIF. IF vg_subrc IS INITIAL.* INCIO ALTERAO BACHOUR - 15/07/2011.* Para a Funo "Emitente" replica dados Fiscais* IF p_role = c_tr0150."BENUN - 22/08/11 PERFORM completa_dados_fiscais USING p_role."BENUN - 22/08/11 CHECK p_role(03) c_tr0."BENUN - 11/10/11* ENDIF.* FIM ALTERAO BACHOUR - 15/07/2011. IF p_guia IS NOT INITIAL. READ TABLE t_compleguia INTO wa_compleguia WITH KEY bukrs = wa_funcao-bukrs rltyp = p_role. IF sy-subrc IS NOT INITIAL.* A Funo GUIA j foi complementada em FI neste* processamento. ADD 1 TO wa_relat-reptot.*BENUN - 04/07/11 - INICIO* Armazena o registro gravado em FI para gerar no arquivo de saida PERFORM f_grava_arq_fi USING vg_partner wa_funcao-bukrs p_role.*BENUN - 04/07/11 - FIM DO 1000 TIMES.* Insiste na tentativa de complementao at que o registro* seja liberado em FI pelo processamento da funo anterior. PERFORM desbloqueia_em_fi.* WAIT UP TO 1 SECONDS. PERFORM completa_dados_em_fi USING p_role. IF NOT vg_subrc IS INITIAL. EXIT. ENDIF. IF p_role+0(03) EQ c_zlc. " Cliente SELECT SINGLE kunnr INTO vg_partner FROM knb1 WHERE kunnr = vg_partner AND bukrs = wa_funcao-bukrs. IF sy-subrc IS INITIAL. EXIT. ENDIF. ELSEIF p_role+0(03) EQ c_zlv. " Fornecedor SELECT SINGLE lifnr INTO vg_partner FROM lfb1 WHERE lifnr = vg_partner AND bukrs = wa_funcao-bukrs. IF sy-subrc IS INITIAL. EXIT. ENDIF. ELSE.* Se no for Cliente nem Fornecedor no complementa em FI EXIT. ENDIF. PERFORM desbloqueia_em_fi. ENDDO. IF p_role+0(03) EQ c_zlc. " Cliente SELECT SINGLE kunnr INTO vg_partner FROM knb1 WHERE kunnr = vg_partner AND bukrs = wa_funcao-bukrs. IF sy-subrc IS NOT INITIAL. CONCATENATE c_fun c_u wa_funcao-filesq INTO vg_idmsg. MESSAGE e207(zbc001) WITH vg_idmsg c_u INTO vg_dummy. PERFORM insere_log_standard. vg_subrc = 1. ADD 1 TO wa_relat-reperr. ENDIF. ELSEIF p_role+0(03) EQ c_zlv. " Fornecedor SELECT SINGLE lifnr INTO vg_partner FROM lfb1 WHERE lifnr = vg_partner AND bukrs = wa_funcao-bukrs. IF sy-subrc IS NOT INITIAL. CONCATENATE c_fun c_u wa_funcao-filesq INTO vg_idmsg. MESSAGE e208(zbc001) WITH vg_idmsg c_u INTO vg_dummy. PERFORM insere_log_standard. vg_subrc = 1. ADD 1 TO wa_relat-reperr. ENDIF. ENDIF.* Se a Replicao em FI foi feita com Sucesso, deve fazer* Commit na Funo do BP para garantir a equalizao dos dados IF vg_subrc IS NOT INITIAL. ADD 1 TO wa_relat-reperr. ELSE. wa_compleguia-bukrs = wa_funcao-bukrs. wa_compleguia-rltyp = p_role. APPEND wa_compleguia TO t_compleguia. PERFORM commit_work. ENDIF. ENDIF. ENDIF. ENDIF.ENDFORM. "gera_funcao*&---------------------------------------------------------------------**& Form GERA_FUNCAO_E_REPLICA_BP_EM_FI*&---------------------------------------------------------------------*FORM gera_funcao_e_replica_bp_em_fi USING p_role TYPE bu_partnerrole p_guia TYPE char1. DATA: t_seq TYPE TABLE OF seqg3, vl_number TYPE sy-tabix, wa_seqg3 TYPE seqg3. DATA: vl_validfrom TYPE bapibus1006_bprole_validity-bprolevalidfrom. DATA: vl_time LIKE sy-uzeit.*ATENO: para que haja a replicao automtica em FI (criao de* fornecedor ou cliente) durante a criao da Funo para o* Parceiro pela BAPI abaixo, necessrio:* 1) Que todos os campos das transaes (FK01 ou FD01) sejam* colocados como no-obrigatrios pois ele s podero ser* informados pela entrada via SHDB em ponto mais adiante na* lgica deste programa.* 2) Que a Funo definida como GUIA seja informada na* replicao. Mas, como tanto a Funo normal quanto a GUIA* devem ser geradas para o BP, a Function abaixo deve ser* acionada para ambas. DO 1000000 TIMES.************************************************************************** O DO Necessrio devido gerao da segunda ou mais funes que** retornam erro de bloqueio da chave do BP pelo uso na gravao** anterior************************************************************************ PERFORM desbloqueia_em_fi.* BENUN - 21/09/11 - INICIO IF NOT wa_cabec-foundationdate IS INITIAL. vl_validfrom = wa_cabec-foundationdate. ELSE. vl_validfrom = c_foundationdt. ENDIF.* BENUN - 21/09/11 - FIM CALL FUNCTION 'BAPI_BUPA_ROLE_ADD_2' EXPORTING businesspartner = vg_partner businesspartnerrole = p_role* BENUN - 21/09/11 - INICIO validfromdate = vl_validfrom validuntildate = '99991231'* BENUN - 21/09/11 - FIM TABLES return = t_return. PERFORM trata_return USING c_fun wa_funcao-filedt wa_funcao-filehr wa_funcao-filesq. IF ( vg_msgid EQ c_f2 AND vg_msgno EQ c_042 ) OR ( vg_msgid EQ c_r1 AND vg_msgno EQ c_086 ) .*Se a Mensagem for de BP Bloqueado, aguarda o desbloqueio*F2 - 042 - A conta &1 est sendo atualmente processada pelo usurio &2*R1 - 086 - O parceiro de negcios &1 est sendo bloqueado atualmente pelo usurio WAIT UP TO 1 SECONDS. vg_subrc = 1. ELSE. CLEAR vg_subrc. EXIT. ENDIF. ENDDO. IF vg_subrc IS NOT INITIAL. ADD 1 TO wa_relat-funerr. EXIT. ELSE. CALL FUNCTION 'BAPI_TRANSACTION_COMMIT' IMPORTING return = wa_return. REFRESH t_return. APPEND wa_return TO t_return. PERFORM trata_return USING c_fun wa_funcao-filedt wa_funcao-filehr wa_funcao-filesq. IF vg_subrc IS NOT INITIAL. ADD 1 TO wa_relat-funerr. EXIT. ELSE.* SE No deu erro na gerao da funo grava na tabela de controle wa_roles-rltyp = p_role. APPEND wa_roles TO t_roles. ENDIF. ENDIF.* WAIT UP TO 2 SECONDS.** Se a funo gerada uma GUIA, deve verificar se houve a** replicao em FI IF p_guia IS NOT INITIAL.* Seja FORNECEDOR ou CLIENTE, verificar se a replicao na empresa* foi feita com sucesso para a Funo GUIA e, se no foi,* emite erro. GET TIME. vl_time = sy-uzeit + 4. DO. IF wa_funcao-role+0(03) EQ c_zlc. " Cliente SELECT SINGLE kunnr INTO vg_partner FROM kna1