Você está na página 1de 31

MIT072 Manual de Operao do Prottipo

Converso/Atualizao Release - Protheus Reviso 010 14/10/2013


Roteiro para converso ou atualizao de release para o produto TOTVS MICROSIGA PROTHEUS 11 ou superior

Elaborao: Fabricio Amaro Unidade TOTVS OP Bauru fabricioamaro@totvs.com.br

Colaborao: Gustavo Canela Unidade TOTVS OP Bauru gscanela@totvs.com.br


Modo de Compartilhamento das tabelas

Victor Nigro Unidade TOTVS OP Bauru jose.vasques@totvs.com.br


Copiar via linha de comando direto do Linux

Daniel Peixoto da Silva Unidade TOTVS OP S. J. Rio Preto dsilva@totvs.com.br


Collation diferentes

Evandro Galindo TOTVS SP So Paulo evandro.galindo@totvs.com.br 12/01/2012


Collation diferentes: criar uma database limpa e importar as tabelas.

Ederson Guerra TOTVS OP Bauru - edersonguerra@totvs.com.br 23/02/2012


Rotina para ajustar os campos das tabelas compartilhadas pelo SX2

Conforme orientaes do chamado SCUMQY, a converso para a verso 11 segue os mesmos procedimentos que a 10, mudando apenas o
nome da funo a ser executada.

Para deixar bem detalhado todos os procedimentos a serem executados, foi desenvolvido esse manual para que a converso saia da melhor
maneira possvel. Foi desenvolvido com base em histricos de converses na prtica, ou seja, esto relatados quase todos os possveis
problemas que podem ocasionar um erro de converso.

Observao extremamente importante: Esse documento no est OFICIALIZADO pela TOTVS matriz, portanto, dever ser seguido apenas
como um guia. Os nomes aqui citados so de pessoas que possuem grande experincia no referido assunto, mas apenas ajudaram no
complemento de informaes desse manual, portanto, no so corresponsveis pelas aplicaes dos procedimentos. Sendo assim, reforamos
a necessidade de efetuar um backup de toda a base de dados.

Sugerimos a leitura INTEGRAL desse documento, antes de iniciar a converso, inclusive os itens relacionados aos problemas ps-converso.

Os documentos oficiais da TOTVS para a converso do sistema esto nos links abaixo:

Procedimentos para converso Release 11.8:

http://tdn.totvs.com/pages/releaseview.action;jsessionid=F19DFC38D43D85795BAAFF8EA84A4C33?pageId=41354489

Erros crticos mais comuns:

http://tdn.totvs.com.br/pages/releaseview.action?pageId=41353608

MIT072_Conversao_P11.doc Pgina 1 de 31
MIT072 Manual de Operao do Prottipo
Converso/Atualizao Release - Protheus Reviso 010 14/10/2013
Antes de iniciar a converso, executar/analisar no ambiente atual do Protheus 10:

1) Espao em disco:

O espao em disco livre deve ser de aproximadamente 3 vezes o tamanho atual da pasta System somado ao tamanho do banco de dados.
Ou seja, se a sua database estiver com 4,5 GB, e a pasta system estiver com 500MB, ento, o seu espao em disco livre dever ser de
aproximadamente 15 GB.

Isso se faz necessrio devido ao fato do Protheus efetuar backups de cada tabela (ou mesmo criar tabelas) no momento da converso,
tanto no BANCO DE DADOS (se for observado, sero criadas as tabelas com _BKP, exemplo, SRA010_BKP) como tambm na pasta SYSTEM
e SYSTEMLOAD.

2) Fazer um backup da pasta Protheus_Data e do banco de dados.

3) Checar a duplicidade de registros:

a. Baixar do portal o arquivo SX2.UNQ e a patch da rotina CheckDupl, e colocar na systemload do ambiente a ser convertido.

b. Executar a rotina CheckDupl (obs. A rotina no pode ser chamada pelo FORMULAS, tem que incluir no menu do mdulo
CONFIGURADOR (sigacfg.xnu):

<MenuItem Status="Enable">
<Title lang="pt">CheckDupl</Title>
<Title lang="es">CheckDupl</Title>
<Title lang="en">CheckDupl</Title>
<Function>CHECKDUPL</Function>
<Type>1</Type>
<Access>xxxxxxxxxx</Access>
<Module>99</Module>
<Owner>13</Owner>
</MenuItem>

c. Ajustar os registros duplicados (se houver)

4) Backup e remoo dos ndices de usurios - SIX:

a. Abrir, via MPSDU, o arquivo SIXEE0.ext (EE = Empresa | ext = DBF ou DTC)
b. Filtrar pelo campo PROPRI diferente de S
c. Copiar para um arquivo de backup (o nome que desejar).
d. Apagar esses ndices. Os mesmos no podero ser utilizados na converso.

Obs.: Ser necessrio volt-los ao arquivo de ndice ao final da converso, atentando-se a seqncia informada pelo sistema. Isso quer
dizer que tambm ser necessrio corrigir esse ndice e seqncia nos rdmakes (fontes customizados) que utilizem os mesmos, e que indicam o
nmero do ndice ao invs do nickname do ndice.

MIT072_Conversao_P11.doc Pgina 2 de 31
MIT072 Manual de Operao do Prottipo
Converso/Atualizao Release - Protheus Reviso 010 14/10/2013

5) Apagar todos os arquivos de ndices das pastas do Protheus_Data.


a. Faa uma busca pela extenso. Entendem-se os arquivos de ndices: *.CDX ou *.IDX.
b. Em casos de base CTREE, so criadas pastas com o nome e extenso .idx, exemplo: sc62990a.idx. Pode apag-las.
c. Apagar o contedo das pastas ctreeint. Normalmente so 2 pastas, sendo uma no Protheus_Data e a outra na System.
d. Apagar o ndice do ARQUIVO DE EMPRESAS (arquivo SIGAMAT.IND).

6) Apagar os arquivos de LOG e TEMPORRIOS


a. Faa uma busca pela extenso *.LOG e *.TMP

7) Na pasta SYSTEMLOAD, exclua os arquivos *.DBF e *.IDX.

8) Apagar os arquivos da pasta temporria do Windows (Windows > Executar > %TEMP%). Se no apagar ir influenciar nos arquivos
temporrios do Protheus, e pode ocasionar erros.

Dica para agilizar a converso: Muitos clientes utilizam a empresa 99 para testes, e em muitos casos nem mais utilizada. A sugesto excluir
os arquivos DBF ou DTC dessa empresa, e apagar a empresa do Cadastro de Empresas (abra o arquivo SIGAMAT.EMP via MPSDU, e apague a
mesma).

Incio do Protheus 11

9) Instalar e subir os servios do Protheus 11. Atualizar com todos os pacotes mais recentes possvel.

a. RPO - Categoria: Repositrio de Objetos

b. BUILD - Categoria: Binrio TOTVSTec

c. UPDATE - Categoria: Update de Programas

d. PATCH/LIB DE PROGRAMAS - Categoria: Path de Programas

e. HELP - Categoria: Help de Campo/Pergunta

f. MENUS - Categoria: Menu de mdulo. Contempla os arquivos XNU. Esses arquivos devero substituir os da pasta SYSTEM,
porm, fazer um backup antes para, aps a converso, poder comparar e incluir os menus customizados.

g. BRA.ZIP - Categoria: Dicionrio de dados. Esse arquivo contm o arquivo SXBRA.TXT, que o dicionrio de dados padro do
Protheus

h. Descompactar o contedo da pasta ACE_8.00 na pasta bin\appserver\. Ateno: somente essa pasta!

i. Certifique-se que o servidor tenha espao em disco o suficiente para a converso. Recomenda-se, no mnimo, um espao 3 vezes
superior ao da base atual (soma da pasta SYSTEM e a base de dados). Isso se faz necessrio pois o Protheus cria arquivos
temporrios no momento da converso.

10) Descompacte os arquivos de HELP e BRA.ZIP na pasta SYSTEMLOAD da base a ser convertida. Dever substituir os arquivos
existentes.

Obs.: cuidado com os servidores do Protheus que tenham o sistema operacional LINUX, pois quando o arquivo copiado pelo programa
WinSPC (por exemplo) o arquivo pode ser corrompido. Sugesto: copiar via linha de comando diretamente do Linux.

Caso queira, utilize o programa 7-Zip (programa tipo Winrar e Winzip). Gere um arquivo tipo TAR antes de copiar para o Linux, e faa
a transferncia (cpia). Para descompactar no LINUX utilize a sintaxe: tar -xvf nomedoarquivo.tar

Como saber se deu problema? No inicio da converso, aps clicar em Avanar e apresentar a tela de progresso, o sistema ir criar na
pasta systemload os arquivos do dicionrio de dados (SX2, SX3, etc.), exibindo a mensagem:

MIT072_Conversao_P11.doc Pgina 3 de 31
MIT072 Manual de Operao do Prottipo
Converso/Atualizao Release - Protheus Reviso 010 14/10/2013

Observar nessa pasta e, caso demore a criar os arquivos ou mesmo o tamanho desses arquivos no tiverem sendo alterado (para
maior), quer dizer que o arquivo TXT est corrompido, e a converso simplesmente est parada. Sendo assim, encerrar o processo
reiniciando o Server.

Dica: Em casos dos clientes que utilizam apenas o ambiente em linguagem PORTUGUES, dos arquivos de HELP de Campo/Pergunta, deixe
apenas o arquivo HLPPOR.TXT. Dessa forma a converso ser mais rpida, pois no ir atualizar os arquivos de help de campo espanhol e
ingls.

11) Caso tenha um TOP Connect mais atualizado, tambm baixar, instalar e configurar. O mesmo dever apontar para o banco de dados a ser
convertido. No caso do Protheus 11, dever ser utilizado o TOTVS DBAccess. Se no utilizar um DBAccess atualizado, ter srios
problemas. Se quiser utilizar 2 TOPs, pode-se configur-los para compartilhar as licenas, colocando essas configuraes nos INIs dos
Servers dos TOPs:

[General]
Licenselimit=nnn

Onde nnn o limite de licenas que vai consumir do License Server.

12) No arquivo appserver.ini do Protheus 11, criar um ambiente que aponte para o ambiente a ser convertido. Exemplo:

[TOTVS_10_PARA_11]
SourcePath = C:\TOTVS 11\Microsiga\Protheus\APO ;tem que ser o APO da verso 11
RootPath = C:\Protheus_Data ;apontar para o ambiente OFICIAL a ser convertido
StartPath = \system\
x2_path =
RpoDb = SQL
RpoLanguage = Portuguese
RpoVersion = 110
LocalFiles = ads
Localdbextension = .dbf
PictFormat = DEFAULT
DateFormat = DEFAULT
TopDataBase = MSSQL7
TopServer = LOCALHOST
TopALIAS = TOTVS_10_11 ;nome do ALIAS criado no TOP ambiente OFICIAL
RegionalLanguage = BRA
Helpserver = localhost:8687

Obs. extremamente importante: No utilize esses espaos e ; em servidores com S.O. Linux.

13) Arquivo de Senhas.

Na converso de testes apresentaram erros no arquivo de senhas. A soluo simples:


a. Apagar o arquivo sigapss.spf da pasta SYSTEM
b. Apagar os arquivos da pasta profile do Protheus_Data

Dessa forma, a senha do Administrador a ser utilizada ser em branco.

Aps a converso, abrir o SIGACFG Configurador, cadastrar a POLTICA, no menu Senhas, e aps cadastrado, sair do CFG, ir na pasta de
backup, copiar o arquivo SIGAPSS.SFP e a pasta profile inteira, e substituir na base convertida.

O procedimento de copiar o sigapss e o profile foi passado pela TOTVS no chamado SCTXW5, e funcionou normalmente.

A dica de apagar o sigapss antes do inicio da converso foi minha, pois na converso o sistema no altera o arquivo. Achei ento mais fcil
fazer dessa forma, pois utilizando o padro era apresentado erro (mas que no impediu a converso).

Rev. 009 Uma boa dica , assim que terminar de configurar o acesso ao Protheus 11, acesse o MPSDU antes de dar inicio a converso,
dessa forma ele ir recriar a estrutura do arquivo de senhas.

MIT072_Conversao_P11.doc Pgina 4 de 31
MIT072 Manual de Operao do Prottipo
Converso/Atualizao Release - Protheus Reviso 010 14/10/2013
14) Antes de iniciar a converso, sugiro analisar os erros de converso listados no item 20 desse manual. Dessa forma j se elimina alguns
erros que sero apresentados na converso.

15) Inicio da converso.

Seguido todos esses passos corretamente, poder ser executado o smartclient.exe do Protheus 11, passando o seguinte Programa Inicial:
MP710TO110

Utilizando o arquivo de senha padro (sem apagar o sigapss.spf), ao digitar a senha, deu erro:

Porm, tentando novamente, digitei a senha, e passou.

16) Selecione de qual verso ser originada a converso.

MIT072_Conversao_P11.doc Pgina 5 de 31
MIT072 Manual de Operao do Prottipo
Converso/Atualizao Release - Protheus Reviso 010 14/10/2013
Converso: Atualizao de release:

Obs.: No foram feitos teste com a verso 8 nem com a 7, ento, no se sabe os riscos que implicariam. Vale lembrar que da verso 7 ou 8
para a 10, existem detalhes especficos a serem analisados, tais como alterao de algumas variveis:

a) ValidPerg ou cPerg: tamanho de 6 para 10 - PADR(cPerg,10)

b) cUsuario: essa varivel no mais utilizada, portanto dever ser trocada para cUserName.

Obs. Importante: Aps selecionar o tipo de converso e clicar o OK, criado o arquivo mpupd.tsk na pasta Appserver do Protheus 11.

Rev. 009 15/04/2013 Outro arquivo que gerado, s que na pasta SYTEM, o MPUPDLOG.LOG

Esse arquivo grava os passos da converso, e se, for necessrio re-iniciar a converso, o Protheus utiliza esse arquivo para dar
continuidade.

O mesmo s poder ser apagado se a converso for iniciada do ZERO.

Se a tela para seleo de qual verso ser originada a converso no aparecer, porque existe esse arquivo na pasta APPSERVER.

17) Configurao de execuo do Update: Normalmente so marcadas as opes conforme imagem abaixo, mas isso no uma regra, pode
variar conforme a necessidade de cada empresa/usurio.

18) Ser apresentada a tela com as empresas que sero convertidas:

MIT072_Conversao_P11.doc Pgina 6 de 31
MIT072 Manual de Operao do Prottipo
Converso/Atualizao Release - Protheus Reviso 010 14/10/2013

19) Ao clicar em AVANAR, a converso ter incio.

20) Se houver erros na converso ser apresentada a tela:

Emitir o relatrio para analisar os erros. Finalizar a converso.

Obs.: segue abaixo relao dos erros que foram apresentados na converso da base de testes (sem customizaes):

O gatilho AK2_CC sequencia 001 esta duplicado


O gatilho AK2_CLVLR sequencia 001 esta duplicado
O gatilho AK2_CO sequencia 001 esta duplicado
O gatilho AK2_ITCTB sequencia 001 esta duplicado
O gatilho QAA_RECUR sequencia 001 esta duplicado

MIT072_Conversao_P11.doc Pgina 7 de 31
MIT072 Manual de Operao do Prottipo
Converso/Atualizao Release - Protheus Reviso 010 14/10/2013
A chave de indice BMA ordem 2 registro 1430 esta duplicada
A chave de indice CDM ordem 5 registro 10059 esta duplicada
A chave de indice CDM ordem 6 registro 10060 esta duplicada
Chave duplicada na tabela TRX990, existem procedimentos especificos a serem adotados, consulte o HelpDesk Microsiga, mensagem
SQL Error: 1505 (23000) - RC -1 - [Microsoft][ODBC SQL Server Driver][SQL Server]A instruo CREATE UNIQUE INDEX foi
encerrada porque foi encontrada uma chave duplicada para
O tamanho no SX3 do campo VI0_LOJFOR dIferente do SXG
O tamanho no SX3 do campo VI0_LOJFOR infeiror ao limite do SXG
O tamanho no SX3 do campo AKX_CC_FIN dIferente do SXG
O tamanho no SX3 do campo RFF_CC dIferente do SXG
O do tamanho no SX3 campo EK_NUMOPER dIferente do SXG
O tamanho da pergunta 07 do grupo MTA996 dIferente do SXG
O tamanho da pergunta 10 do grupo MTA996 dIferente do SXG
A chave de indice BMA ordem 2 registro 1430 esta duplicada
O tamanho da pergunta 07 do grupo MTA996 dIferente do SXG
Erro durante atualizao da tabela AA1010 RDD TOPCONN

A sugesto que, antes do incio da converso, seja visto esses problemas.

21) Como resolver os erros de converso: abrir o MPSDU (se j iniciou a converso, abra pelo Protheus 11 mesmo. Ver um pequeno detalhe
em Observaes finais).

a. Em casos de GATILHOS com seqncia duplicada, abrir a tabela SX7EE0.ext, filtrar pelo gatilho mencionado, e apagar os que
estiverem duplicados.

b. Em casos de INDICES duplicados, abrir a tabela SIXEE0.ext, filtrar pelo ndice mencionado, e apagar os que estiverem duplicados.

c. Quando o erro referenciar a tabela SXG, significa que o campo est em desacordo com a tabela de GRUPO DE CAMPOS (SXG).
Exemplo:

O do tamanho no SX3 campo EK_NUMOPER dIferente do SXG

Nesse caso, abrir a tabela SX3 (em casos de Campos de tabelas) ou SX1 (em casos de campos de Perguntas), filtrar o campo
mencionado, e na coluna X3_GRPSXG ou X1_GRPSXG, apagar o contedo desse campo, para que o mesmo no faa mais parte desse grupo de
campos.
Obviamente, dever voltar essa informao aps a converso, e analisar os detalhes. O mais recomendado fazer essa anlise antes
da converso.

Obs.: EE = Empresa | ext = DBF ou DTC

Obs. 2: os erros de portugus so do prprio sistema.

d. Quando o erro referente a chave duplicada na tabela, quer dizer que o CHECKDUPL no foi executado. Para resolver isso, dever
saber qual o X2_UNICO da tabela, e, via banco, fazer um select nessa tabela e ver qual o registro que est duplicado.

No exemplo desse log (em destaque vermelho), foi simples resolver: abri a tabela pelo MPSDU, e apaguei os dados da mesma, pois se
tratava de uma tabela sem uso.

e. Rev. 009: Se por ventura for apresentado o erro abaixo:

Warning - TOPCONN - Create index error: -19 : COMMAND_FAILED - Error : 1408 - ORA-01408: such column list already indexed
( From tISAMFile::CreateIndex )
Thread ID [15984] User [Administrador] IO [554481] Tables [1] MaxTables [40] Comment [] Status
[] SP [ ] Traced [No] InTran [No] DBEnv [ORACLE/SIGA] DBThread [(SID: 361,52687) ] Started [22/04/2013
14:49:30] LastIO [] IP [10.50.1.3] RCV [23846642] SND [19262946] TCBuild [20120327]
CREATE INDEX STF010A ON STF010(TF_FILIAL,TF_CODBEM,TF_SERVICO,TF_INENMAN,R_E_C_N_O_,D_E_L_E_T_)

Isso indica que no momento da converso, o sistema criou os INDICES, e os mesmos acabaram ficando em duplicidade com que j
existiam. No caso acima, o que houve de fato foi que havia 2 ndices da tabela STF que estavam com o PROPRI = (branco), ento, na
converso, o sistema os manteve, e criou 2 novos iguais, e com o PROPRI = S. A soluo foi simplesmente apagar os 2 ndices de
PROPRI = (branco), e executar a converso, pois o sistema continuou de onde parou

MIT072_Conversao_P11.doc Pgina 8 de 31
MIT072 Manual de Operao do Prottipo
Converso/Atualizao Release - Protheus Reviso 010 14/10/2013

f. Rev. 009: Erro durante atualizao da tabela AA1010 RDD TOPCONN

Esse erro normalmente ocorre quando o sistema no conseguiu total acesso exclusivo a tabela em questo.
Nos testes que fiz, propositalmente, coloquei no TopAlias apontando para a BASE OFICIAL, mesmo que o Protheus_Data fosse a de
testes. Ao comear a converso, o sistema gerou os ndices, etc., e ao acessar a tabela para executar os ajustes, apresentou esse erro
no log (apenas no final, e no logo no comeo).

Obs.: Ao sair da tela que apresenta os erros de converso, apresentou o seguinte error.log (no caso de no ter apagado o arquivo sigapss.spf):

22) Iniciado novamente a converso - Sem apagar o arquivo MPUPDLOG.LOG da pasta appserver..

Conforme mencionado anteriormente, como se manteve o arquivo MPUPDLOG.LOG, no ser apresentado a tela de seleo da origem da
converso, conforme item 15 desse boletim.

Obs.: Se for apresentada uma tela mencionando que houve erros na converso, seguir os procedimentos mencionados na mesma, e
continuar a converso. Essa mensagem normalmente s apresentada em casos de erros crticos, tais com exemplo, ndices duplicados.

MIT072_Conversao_P11.doc Pgina 9 de 31
MIT072 Manual de Operao do Prottipo
Converso/Atualizao Release - Protheus Reviso 010 14/10/2013

Depois da converso...

23) Acessar o SIGACFG para que o sistema recrie as estruturas dos ndices. Acessar todas as empresas. Se no fizer isso poder dar erro ao
tentar acessar algum cadastro do sistema (Erro de tabela exclusiva).

24) Arquivo de ndices: conforme item 4 desse documento.

Abrir via MPSDU o novo SIX, e tambm o arquivo do backup. Filtrar os ndices e analisar quais alteraes o compatibilizador fez e quais
alteraes voc dever fazer no arquivo de backup.

Exemplo prtico. (Esse ndice s um exemplo. O mesmo no sofreu tal alterao).

Antes da converso:

MIT072_Conversao_P11.doc Pgina 10 de 31
MIT072 Manual de Operao do Prottipo
Converso/Atualizao Release - Protheus Reviso 010 14/10/2013

Conforme orientao no item 4, o ndice 6 seria copiado para uma tabela de backup e excludo dessa tabela principal.

Aps converso:

Observem que o compatibilizador criou o ndice 6, com o PROPRI = S.

Sendo assim, na tabela de backup, dever abrir a mesma e alterar a ordem do ndice, nesse exemplo, pra 7:

Aps analisar todos os ndices, poder ento dar um append na SIX principal, com os arquivos contidos no backup.

A sugesto que antes do append seja feito um backup da SIX principal.

25) Reviso dos ndices

Revise os ndices dos fontes customizados, conforme as alteraes executadas no passo 24 e indicao no item 4.

Rev. 008: Normalmente, os fontes personalizados que apontam para os ndices que foram criados pelos usurios, utilizam o DbSetOrder
ou SetOrder, e se na converso essa ordem foi alterada, dever rever/ajustar todos os fontes.

Em alguns casos/fontes utilizada a funo SetNickName, mas isso no indica que no dever ser revisado o campo NICKNAME, pois a
TOTVS no possui um padro para dar nomes em alguns ndices, consequentemente, pode conflitar com o que foi criado pelo usurio.

26) Novo controle de GRUPO DE EMPRESAS.

Rev. 009: Isso foi corrigido em atualizaes posteriores, onde o sistema acaba mantendo a UNIDADE e EMPRESA com o mesmo valor do
FILIAL.

Para atender ao novo conceito de empresas, filiais e unidades de negcio, foram inclusos 2 novos campos no arquivo SX2.

MIT072_Conversao_P11.doc Pgina 11 de 31
MIT072 Manual de Operao do Prottipo
Converso/Atualizao Release - Protheus Reviso 010 14/10/2013
Porm, observe que se trata de campos OBRIGATRIOS.

Se for necessrio dar manuteno em alguma tabela, ao tentar confirmar a alterao, devero informar esses novos campos.

Para que isso no ocorra, execute o MPSDU, abra o arquivo SX2, e execute um replace nos campos X2_MODOUN e X2_MODOEMP com
o mesmo contedo do campo X2_MODO.

Obs. Importante: Na converso o sistema no ir alterar o tamanho do campo _FILIAL das tabelas, ser mantido o padro de 2 e as
regras de empresa e filial. No necessrio fazer nenhum tipo de tratamento. Veja o exemplo do SX3 aps converso:

Rev. 008: Outro item importante que dever ser observado que a tabela SX2 no est mais exclusivamente apenas na estrutura do dicionrio
(pasta system), mas tambm est no BANCO DE DADOS, veja:

Portanto, os ajustes citados acima, tambm devero ser feitos nessa tabela SX2 do BANCO DE DADOS.

MIT072_Conversao_P11.doc Pgina 12 de 31
MIT072 Manual de Operao do Prottipo
Converso/Atualizao Release - Protheus Reviso 010 14/10/2013
Novo Grupo de Empresas: Quando for criar uma nova empresa no Configurador (GRUPO DE EMPRESAS), dever seguir os novos
padres e exigncias. Exemplo: ao se criar um novo Grupo de Empresas, e definir o tamanho 6 e seu respectivo leiaute, o campos _FILIAL
automaticamente sero criados com o tamanho 6. Veja o exemplo:

Rev. 008: No link abaixo existem alguns procedimentos explicando sobre o novo conceito de GESTO DE EMPRESAS:

http://www.totvs.byyou.com/artigos?app_ByYouSocialArticle_articleId=79501100&space=advpl

Se aps a converso voc desejar mudar a estrutura das tabelas para atender a esse novo conceito, existem procedimentos tcnicos que
precisam ser realizados com muita cautela. Vide/solicite boletim especfico para esse caso.

27) Executar os passos de criar a poltica de senhas conforme passo 13. Se necessrio, copiar do backup do Protheus_Data o arquivo
SIGAPSS.SPF e a pasta profile, e substituir o da pasta convertida.

28) Substituir os arquivos de menu da pasta system (*.XNU) pelos baixados do portal. Antes, fazer um backup para, aps a substituio,
analisar as customizaes/particularidades.

29) Folha de Pagamento Roteiro de clculo

Quando h uma converso, necessrio apagar o roteiro e fazer com que o sistema recrie o padro. Para isso:

a. No MPSDU, abra a tabela SRM, copie para um backup as linhas que no so do sistema. Para diferenciar uma linha customizada
de uma linha padro do sistema, poder filtrar, utilizando a expresso, da seguinte forma:

SUBSTR(RM_SEQ,5,1) <> "0"

Obviamente dever ser analisado com mais cautela, pois pode haver alteraes em linhas que terminem com 0. H casos onde
os analistas colocam * no campo RM_DESCRIC.

b. Aps feito o backup, deletar os registros.

c. Entrar no SIGAMDI, e acessar o mdulo GESTO DE PESSSOAL > ATUALIZAES > DEFINIES CALCULO > ROTEIROS CLCULO.
Com esse procedimento o sistema ir recriar os valores da tabela SRM, porm, no seu padro. Aproveite para acessar os demais

MIT072_Conversao_P11.doc Pgina 13 de 31
MIT072 Manual de Operao do Prottipo
Converso/Atualizao Release - Protheus Reviso 010 14/10/2013
menus do item Definies de Clculo, tais como Definio Tabela, Mnemonicos, etc, pois existem procedimentos tcnicos
internos nessas rotinas que so executados quando acessado os mesmos.

d. Em seguida, voltar ao MPSDU, e dar um append na SRM com o arquivo de backup, para aplicar as linhas customizadas do
cliente.

e. Nas linhas customizadas, alterar o campo RM_VERSAO para igual a criada pelo sistema. A verso do Protheus 11 194 at essa
data.

30) Verificar os fontes customizados

Pra quem utiliza alguns pontos de entrada que incluem novos botes em rotinas, tal como exemplo, GPE11ROT, relacionada a rotina
GESTAO FUNCIONARIO, dever ficar atento ao seguinte:

No Protheus 10, funcionava normalmente a rotina da seguinte forma:

User Function GPE11ROT()


Local aArea := GetArea()
Local aRotinas := {}
aFolProc :={{ "Lanam. p/ Verba" , "GPEA100()" , 0 , 6 },;
{ "CNAB (BB)" , "GPEM410()" , 0 , 6 },;
{ "SISPAG (ITAU)" , "GPEM450()" , 0 , 6 },;
{ "Import. Lanc. Mens." , "GPEA210()" , 0 , 6 }}
aAdd( aRotinas, { "Oi*" , "u_oi()" , 6 , , .F. } )
aAdd( aRotinas, { "Processos Folha*" , aFolProc , 6 , , .F. } )
RestArea( aArea )
Return( aRotinas )

Porm, se deixar dessa forma, e compilar o projeto, ser exibido erro no momento de entrar na rotina no Protheus 11.
Para corrigir isso, dever fazer a seguinte alterao (na linha em destaque azul):

aAdd( aRotinas, { "Oi*" , "u_oi()" , 0 , 6 , , .F. } )


aAdd( aRotinas, { "Processos Folha*" , aFolProc , 0 , 6 , , .F. } )

Analise as demais rotinas para saber se esto dessa forma.

Para efeito de testes, essa alterao tambm foi feita no Protheus 10, e compilada, e a rotina funcionou normalmente.

Orientaes conforme o chamado SCUMUO.

31) Compilar o projeto com as customizaes do cliente.

32) Aplicao de UPDATES. (Rev. 005)

A execuo da virada de verso no garante a aplicao dos updates modulares, como, por exemplo, UPDSIGAFIS, UPDCOM, UPDEST,
sendo esses 2 ltimos exemplos com controles seqenciais (UPDCOM01, UPDCOM03, etc), conforme resposta do chamado SDSFKX.

sugerida ento a execuo de todos os updates para que a base fique completamente atualizada.

Como no h como sabermos se tal update j foi executado (exceto as do RH, onde possui a rotina RHUPDMOD), mesmo que antes da
converso, teramos ento que executar TODOS os updates ou, no mnimo, os mdulos que o cliente mais utiliza.

Para que possa haver esse controle, foi desenvolvida uma rotina especfica que gera alguns arquivos de LOG, e quando for executado os
updates, essa rotina verifica se o mesmo j foi executado ou no.

Os detalhes da rotina esto no anexo 3.

33) Finalizando: Acessar o SIGAMDI ou ADV, e fazer todos os testes possveis.

MIT072_Conversao_P11.doc Pgina 14 de 31
MIT072 Manual de Operao do Prottipo
Converso/Atualizao Release - Protheus Reviso 010 14/10/2013
Observaes finais.

A. MPSDU

No estranhar se voc abrir o MPSDU e no encontrar o MENU. O mesmo estar no canto superior DIREITO:

Novo menu: Menu padro:

Isso acontece pois o tema est configurado para CLASSIC. Para voltar ao padro, abra o SIGACFG e no menu Miscelanea, Configurao de
Tema, mude para STANDARD e confirme. Abra novamente o MPSDU.

Dica: No Protheus 11, quando se digita o usurio ou a senha errado, o mesmo fechado por completo aps o OK. Anteriormente, a tela de
login se mantinha. J existe um chamado com FNC em aberto - SDEVH3.

B. Folders (pastas) X3_FOLDER (rev. 007)

Aps insistentes testes de atualizao para o release 11.5, foi encontrado um pequeno problema que, apesar de no ser to grave, causa
um desconforto. O sistema no respeita o X3_FOLDER.

Antes da atualizao: Aps atualizao MP710TO110:

Foram feitos outros testes tambm sobre as demais informaes do campo (tamanho, valid. Usurio, etc, etc) e nesse caso ele manteve o
legado (menos mal). Portanto, sempre faam um backup e posteriormente ajustem o X3_FOLDER.

Conforme resposta do chamado TEPJK1, esse procedimento padro e no ser resolvido.

MIT072_Conversao_P11.doc Pgina 15 de 31
MIT072 Manual de Operao do Prottipo
Converso/Atualizao Release - Protheus Reviso 010 14/10/2013
Rev. 008 - Rotina que ajusta o X3_FOLDER com base no backup:

#INCLUDE 'PROTHEUS.CH'
#include "rwmake.ch"
#include "topconn.ch"

User Function AjFolder()


Local nCpo := 0
Local xArqCorr := "SX3990_BKP" //ARQUIVO SX3 QUE EST CORRETO
//OBS: DEVER SER CRIADO O INDICE 1 PARA O X3_CAMPO PARA ESSA TABELA - PODE SER UTILIZADO O MPSDU, CRIANDO UM INDICE PERMANENTE

Private cEOL := CHR(13)+CHR(10)

Private cLog := "ARQUIVO DE LOG DE AJUSTE DOS CAMPOS DA SX3 - X3_FOLDER "+cEOL+cEOL

If MsgYesNo( "Iniciar o Processamento de ajuste da SX3 - X3_FOLDER?", "Confirma?" )

SX3->( dbSetOrder(1) )
SX3->( dbGoTop() )
While !SX3->( Eof() )

//VERIFICA A TABELA ORIGINAL


dbUseArea( .T.,, xArqCorr ,"X3SA", .T., .F. )
X3SA->( dbSetOrder(1) )
If X3SA->( dbSeek( SX3->X3_CAMPO ) )
If SX3->X3_FOLDER <> X3SA->X3_FOLDER //SE FOREM DIFERENTES, ALTERA PARA O QUE ESTAVA NO ARQUIVO CORRETO
RecLock("SX3",.F.) //ALTERAR
Replace X3_FOLDER With X3SA->X3_FOLDER
SX3->( MsUnlock() )
//ARMAZENA OS CAMPOS QUE ESTO SENDO AJUSTADOS
cLog += X3SA->X3_ARQUIVO + " - " + X3SA->X3_CAMPO + " - " + X3SA->X3_FOLDER + cEOL
EndIf
End
X3SA->( dbCloseArea() )
SX3->( dbSkip() )
EndDo
SX3->( dbCloseArea() )

cArq := "C:\LOG_SX3_X3_FOLDER_"+xArqCorr+".TXT"
Memowrite(cArq,cLOG)

MsgStop("Concludo. Foi gerado o arquivo de LOG: "+cArq,"(AjFolder)")


EndIf
Return .T.

Esse problema est sendo tratado pelo chamado TEPJK1.

C. Colletion diferentes entre a DataBase e a Tabela. Reforando: a TOTVS homologa somente o collation LATIN1_GENERAL_BIN

Aps a concluso da converso, e dado inicio ao uso do sistema, pode ocorrer o seguinte erro (como exemplo):

ERRO THREAD (Lancer, LANCER-PC) 19/01/2011 10:31:25


: Error : 468 (37000) - RC -1 - [Microsoft][SQL Server Native Client 10.0][SQL Server]Cannot resolve the collation conflict between "SQL_Latin1_General_CP437_BIN" and
"Latin1_General_BIN" in the equal to operation. ( From tMSSQLConnection::GetQueryFile )
Thread ID [2580] User [Danilo ] IO [7529] Tables [45] MaxTables [45] Comment [FINA050 - TCPIP] Status [] SP [ ] Traced [No] DBEnv
[MSSQL/dbBotti10Homolog] DBThread [(SPID: 152) ] Started [19/01/2011 10:13:51] IP [192.168.1.105]
SELECT SE2.R_E_C_N_O_ RECTIT,E2_FILIAL,FQ_FILDES FROM SE2010 SE2 , SFQ010 SFQ WHERE E2_PREFIXO = FQ_PREFDES AND E2_NUM = FQ_NUMDES AND E2_PARCELA =
FQ_PARCDES AND E2_TIPO = FQ_TIPODES AND E2_FORNECE = FQ_CFDES AND E2_LOJA = FQ_LOJADES AND SE2.D_E_L_E_T_ = ' ' AND FQ_FILIAL = '01' AND FQ_ENTORI = 'SE2' AND
FQ_PREFORI = ' ' AND FQ_NUMORI = ' ' AND FQ_PARCORI = ' ' AND FQ_TIPOORI = ' ' AND FQ_CFORI = ' ' AND FQ_LOJAORI = ' ' AND SFQ.D_E_L_E_T_ = ' ' on
FIMPEXCTIT(FINXAPI.PRX) 04/08/2010 15:28:02 line : 6898

Isso acontece pois a tabela est com um collation diferente da database:

Para resolver isso, poder ser feito o seguinte:

i) Criar uma nova database no banco, com o collation correto. Criar as conexes ODBC e no DBAccess para apontarem para essa nova
database. Abrir o MPSDU, e Importar (CTRL + T) as tabelas da database antiga para a database nova. Dependendo do volume de
informaes, esse processo pode demorar significativamente. Pode-se utilizar o conceito de Multi-Processo (at 10 jobs), e tambm
desativar o Set Deleted antes de iniciar a importao. Dica do Evandro TOTVS Matriz.

MIT072_Conversao_P11.doc Pgina 16 de 31
MIT072 Manual de Operao do Prottipo
Converso/Atualizao Release - Protheus Reviso 010 14/10/2013

ii) Utilizar a rotina do Anexo 2.

iii) Abra a tabela via MPSDU, copie os dados para uma tabela de backup, droppe, recrie (entrando no sistema), e append. Verifique
no banco que os campos ficaram com o mesmo collation da Database. Caso isso no funcione, faa o passo ii.

iv) Abra o SQL. Localize a tabela citada no error.log. Clique com o boto direito e escolha a opo Design:

Em cada campo (isso mesmo, em cada campo) na opo Table Designer, troque o collation para <database default>:

Feito isso, salve a alterao da tabela, e pode usar o sistema normalmente.

Uma dica simples para saber se o collation do banco est errado, efetuar uma pesquisa em algum browser (por exemplo, Nome no Cad.
Funcionrios), e se o sistema permitir/encontrar alguma informao escrevendo em minsculo, indica que est errado. Isso porque o collation
LATIN1_GERENAL_BIN case sensitive, portanto, no encontra valores que no sejam exatamente eles.

Cuidado: se for ajustado o collation do banco, fique atento as rotinas customizadas que utilizem comandos SQL, pois, se estiverem em sintaxe
errada, poder ocorrer erros nas rotinas. Veja exemplo abaixo:

cQuery := "SELECT NULL AS TAB FROM SYSOBJECTS WHERE ID = OBJECT_ID('"+cTab+"') "


TCQUERY cQuery NEW ALIAS "QTEMTAB"

Essa sintaxe acima funciona pois o banco est no collation errado.

No collation correto, a sintaxe SYSOBJETCS dever estar escrito em minsculo:

cQuery := "SELECT NULL AS TAB FROM sysobjects WHERE ID = OBJECT_ID('"+cTab+"') "


TCQUERY cQuery NEW ALIAS "QTEMTAB"

D. Erro de estrutura no existente.

No momento em que o compatibilizador estiver sendo executado, pode ser que acontea o seguinte erro:

A estrutura do arquivo \data\LF2010 nao existe no SX3

Nesse caso o sistema no encontrou os campos na tabela SX3 da tabela citada no erro.

Voc pode contornar esse problema de 2 formas:

1) Solicite a algum os campos da tabela e coloca no seu SX3


2) Apagar essa tabela do SX2 (no aconselhvel).

Aps essa deciso tomada, reinicie a converso.

MIT072_Conversao_P11.doc Pgina 17 de 31
MIT072 Manual de Operao do Prottipo
Converso/Atualizao Release - Protheus Reviso 010 14/10/2013

E. Tabelas compartilhadas via SX2 (rev. 008)

Aps executar o U_UPDCTB em um cliente, observamos que o sistema literalmente sumiu com um campo da tabela somente no BANCO
DE DADOS, mas ainda existia no SX3.

Aps vrias analises, conclumos o seguinte:

1) Problema: Quando tentamos acessar o cadastro de Classe de Valor, o sistema exibe o erro de que no existe o campo
CTH_X_NAT.

2) Causa do problema: tabela compartilhada pelo SX2, mas a estrutura da SX3 esto diferentes.

Detalhes tcnicos:

SX2010 = CTH = Arquivo = CTH010


SX3010 = CTH = Campo = CTH_X_NAT = Ordem 25 <= OK

SX2020 = CTH = Arquivo = CTH010


SX3020 = CTH = Campo = CTH_X_NAT <= Esse campo no existe na SX3 da empresa 02

Isso ocorre quando o compartilhamento feito manualmente depois que o campo est criado somente em uma nica SXs.

Na atualizao (U_UPDCTB, por exemplo), o sistema efetua um alter table com base no SX3 quando existem novos campos.

Quando rodou o upd, o que ocorreu:

Empresa 01
- O sistema alterou a tabela CTH010 com base no SX3010

Empresa 02:
- O sistema alterou a tabela CTH010 novamente (devido ao compartilhamento na SX2020) com base no SX3020 <= Aqui que
houve o problema, pois na SX3 da 02 no tem o campo CTH_X_NAT.

3) Soluo:

a) Solicitar para o usurio acessar o cadastro de Classe de Valor e preencher manualmente esse campo (invivel)

b) Correta: abrir a tabela CTH010 do backup, e copiar para DBF ou CTREE. Passos:

I. No MPSDU da base OFICIAL, abrir a CTH010


II. Droppar (nesse momento ningum poder utilizar o sistema)
III. Acessar o sistema na Contabilidade Gerencial, e abrir esse cadastro para o sistema recriar a tabela CTH com o
campo correto. Nesse momento essa tabela estar em branco.
IV. Abrir novamente o MPSDU, abrir a tabela CTH010, e dar um append com a tabela do CTH010 do backup.

O que importante relatar que, quando se cria um campo em uma tabela que j estava compartilhada pelo SX2, o sistema no cria
automaticamente na SX3 da outra empresa, sendo necessrio cria-lo tambm nas outras empresas.

Abaixo evidencia dos testes:

1) Tabela SP1 compartilhada entre empresas

MIT072_Conversao_P11.doc Pgina 18 de 31
MIT072 Manual de Operao do Prottipo
Converso/Atualizao Release - Protheus Reviso 010 14/10/2013

2) Campos atuais na SP1 de ambos SX3s.

3) Criando campo na empresa 01:

MIT072_Conversao_P11.doc Pgina 19 de 31
MIT072 Manual de Operao do Prottipo
Converso/Atualizao Release - Protheus Reviso 010 14/10/2013
Obs.: Apesar do sistema indicar que est verificando as tabelas compartilhadas, ele no criou o campo nos demais SX3.

4) Comprovao:

Conclumos que, com isso, numa atualizao que venha a criar novos campos nessa tabela, sem duvidas ir ocorrer do sistema apagar esse
campo P1_X_TESTE no BANCO DE DADOS.

Soluo:

1) Manual:

Analisar no SX2 quais so as tabelas que esto compartilhadas, exemplo do filtro abaixo:

Seguindo o exemplo, o que poderia ser feito:

A. Abrir a SX3020, filtrar os campos das tabelas que esto compartilhadas.

B. Apagar esses campos;

C. Appendar os campos da SX3010, claro, filtrando somente os das tabelas que esto compartilhadas.

2) Rotina para ajuste automtico:

Essa rotina foi enviada pelo colaborador Ederson, mas quem a desenvolveu foi um cliente.

Basta informar os parmetros de qual empresa dever ser copiada a estrutura.

MIT072_Conversao_P11.doc Pgina 20 de 31
MIT072 Manual de Operao do Prottipo
Converso/Atualizao Release - Protheus Reviso 010 14/10/2013

Aps concluda a rotina, os campos ficam corretos na SX3. Seguindo o exemplo da tabela SP1, veja o LOG:

#INCLUDE 'PROTHEUS.CH'
#include "rwmake.ch"
#include "topconn.ch"

//ROTINA QUE VERIFICA O SX3 que seria o padro (no caso o SX3010)
//com o SX3 que estaria desatualizado (SX3020) e cria os campos necessrios no mesmo.
//Faz isso somente das tabelas que esto compartilhadas entre as empresas.
//NO MOMENTO DE EXECUTAR A ROTINA, DEVER ESTAR POSICIONADO NA EMPRESA QUE POSSIVELMENTE ESTARIA ERRADO, NO EXEMPLO ACIMA, 02
User Function ValSX3()
Local aTabelas := {}
Local aCampos := {}
Local nAux := 0
Local cCpo := ""
Local nCpo := 0
Local xcEmpCor := "01" //EMPRESA COM O SX3 CORRETO
Local xcEmpAju := "02" //EMPRESA A SER AJUSTADA

Private cEOL := CHR(13)+CHR(10)

Private cLog := "ARQUIVO DE LOG DE AJUSTE DOS CAMPOS DA SX3 - EMPRESA ORIGEM (CORRETA): "+xcEmpCor+ " - EMPRESA AJUSTADA: "+xcEmpAju+cEOL+cEOL

If cEmpAnt <> xcEmpAju


MsgStop("Empresa Incorreta.","(ValSX3)")
Return .F.
EndIf
If MsgYesNo( "Iniciar o Processamento do SX3?", "Confirma?" )
SX2->( dbGoTop() )
//PRIMEIRO ARMAZENA SOMENTE AS TABELAS QUE REALMENTE SERO ALTERADAS NA VARIAVEL aTabelas
//DA EMPRESA QUE TEORICAMENTE EST ERRADA
While !SX2->( Eof() )
If SubStr( SX2->X2_ARQUIVO, 4, 3 ) == (xcEmpCor+"0")
aadd( aTabelas, { SX2->X2_CHAVE, .F. } )
Endif
SX2->( dbSkip() )
End

//AGORA PESQUISA O SX3 DA EMPRESA QUE EST CORRETO


dbUseArea( .T.,, "SX3"+xcEmpCor+"0","X3SA", .T., .F. )
X3SA->( dbSetOrder(1) )

For nAux := 1 to Len( aTabelas )


SX3->( dbSetOrder(2) )
X3SA->( dbSeek( aTabelas[nAux,1] ) )

While !X3SA->( Eof() ) .And. X3SA->X3_ARQUIVO = aTabelas[nAux,1]

If SX3->( dbSeek( X3SA->X3_CAMPO ) )


RecLock("SX3",.F.)
Else
//MsgStop( X3SA->X3_ARQUIVO + " " + X3SA->X3_CAMPO, "Add Campo" )
//ARMAZENA OS CAMPOS QUE ESTO SENDO CRIADOS
cLog += X3SA->X3_ARQUIVO + " - " + X3SA->X3_CAMPO + cEOL
RecLock("SX3",.T.)
aTabelas[nAux,2] := .T.
aadd( aCampos, X3SA->X3_CAMPO )
EndIf
For nCpo := 1 to SX3->( FCount() )
cCpo := SX3->( FieldName( nCpo ) )
SX3->&( cCpo ) := X3SA->&( cCpo )
Next
SX3->( MsUnlock() )
X3SA->( dbSkip() )
End
Next
X3SA->( dbCloseArea() )
cArq := "C:\LOG_SX3_"+xcEmpCor+"_"+xcEmpAju+".TXT"
Memowrite(cArq,cLOG)

MsgStop("Concludo. Foi gerado o arquivo de LOG: "+cArq,"(ValSX3)")


EndIf
Return .T.

Esse problema est sendo tratado pelo chamado TEPJJT.

F. Campos numricos alterados aps a converso (rev. 008)

Aps efetua a converso, foi observado que o sistema alterou o tamanho de alguns campos padres, o que poder ocasionar em erros bem
complexos para serem ajustados. Abaixo segue evidencia dos testes:

1) O campo B1_PPIS est bloqueado para alterao (no padro):

MIT072_Conversao_P11.doc Pgina 21 de 31
MIT072 Manual de Operao do Prottipo
Converso/Atualizao Release - Protheus Reviso 010 14/10/2013

Porm, como sabemos, podemos ir no MPSDU, abrir o SX3, e mudar o X3_RESERV:

Com isso, podemos agora alterar o tamanho do campo:

2) Foi efetuada a mesma alterao no campo FT_ALIQPIS.

3) Foi alterado tambm o tamanho do campo B1_QTMIDIA, porm, tal campo no estava bloqueado para alterao, portanto, no foi
necessria a interveno manual no SX3.

4) Resultado dos campos alterados na base antes da converso.

MIT072_Conversao_P11.doc Pgina 22 de 31
MIT072 Manual de Operao do Prottipo
Converso/Atualizao Release - Protheus Reviso 010 14/10/2013

5) Aps a Converso/atualizao de release (MP710TO110), o campo B1_PPIS e FT_ALIQPIS foram alterados:

6) Possveis perguntas e respostas:

Quais problemas teremos com isso?


R: Muitos, por exemplo, para os SPEDs foi necessrio alterar o tamanho de muitos campos.

Como fazer para ajustar?


R: Somente com um programa que primeiro compare o tamanho do campo da tabela antiga, e posteriormente ajuste, e pegue o valor
do backup. Quem tiver esse programa, por favor, compartilhem.

E o termo do Protheus relacionado ao respeito ao legado?


R: No podemos dizer que o sistema no respeitou, pois o campo B1_QTMIDIA foi mantido a alterao que fizemos, o sistema
somente ajustou para o padro os campos que tiveram interveno manual.

Esse problema est sendo tratado pelo chamado TEPJJQ, mas no acredito que sejam resolvidos to cedo.

G. Tabela SX5

Muitos clientes costumam aproveitar a estrutura/conceito da tabela SX5, para criar tabelas especficas, como a do exemplo abaixo:

No Protheus 10:

MIT072_Conversao_P11.doc Pgina 23 de 31
MIT072 Manual de Operao do Prottipo
Converso/Atualizao Release - Protheus Reviso 010 14/10/2013

Acontece que a TOTVS no respeita o mesmo conceito das tabelas customizadas, e acaba criando tabelas tambm com a chave Z.
Veja as tabelas criadas pelo sistema aps a converso para o P11 (sobrepondo as tabelas criadas acima).

Para esse caso no h soluo a no ser revisar quais foram as tabelas que o cliente criou, e refaz-las com outra chave.

MIT072_Conversao_P11.doc Pgina 24 de 31
MIT072 Manual de Operao do Prottipo
Converso/Atualizao Release - Protheus Reviso 010 14/10/2013
ANEXO 1: Roteiro de converso: Protheus 7 para 8, Protheus 8 para 10 e Protheus 10 R1 para R3

Segue roteiro de uma verso antiga, para possveis consultas:


Passos para a converso da verso 7.10 para 8.11

1. Copiar a pasta \ap7\ para uma pasta a ser convertida.

2. Atualizar esta verso 7.10 completamente e baixar o programa e o documento que vai explicar como rodar a rotina que vai eliminar os registros duplicados da base da verso 7.10 antes de iniciar o processo de
converso. (o ftp que segue vai trazer um patch e um documento explicativo sobre como atualizar o sistema e criar um programa no configurador que execute a rotina de compatibilizaco. ->
ftp://ftp.microsiga.com.br/sistemas/CheckUnique/)

3. Aps rodar essa rotina no banco da verso 7.10, instalar a verso 8.11 e atualiza-la completamente.

4. Instalar e atualizar o topconnect verso 4.0 ( e verificar se o seu mp8srv.ini indica que esta usando a dll da verso 4.0).

5. Criar um ambiente no topconnect que aponte para a sua base da verso 7.10 e testar esta conexo dentro do prprio topmonitor.

6. Criar um ambiente na verso 8.11 que aponte para a pasta da verso 7.10 como o exemplo:

[Base710]
SourcePath=c:\Protheus8\apo
RootPath=c:\ap7
StartPath=\sigaadv\
RpoDb=Top
RpoLanguage=portuguese
RpoVersion=811
LocalFiles=ads
localdbextenGsion=.dbf
PictFormat=DEFAULT
DateFormat=DEFAULT
TopDataBase=MSSQL
TopServer=Saturno
TopALIAS=dbDatabase
helpserver=192.168.1.1

Obs: Pode-se sim criar uma pasta na verso 7.10 chamada System e copiar os dados da pasta \SIGAADV\ para ela.. porem para fazer isso ser necessrio entrar nos arquivos SX2 de cada empresa e mudar o path de SIGAADV
para SYSTEM, e fazer a mesma coisa com o arquivo de parmetros, alem de deixar o StartPath=\SYSTEM\
Porem, prefiro fazer a converso usando a pasta original sem realizar esta substituio, deixando para realiza-la aps a converso para a verso 8.11.

7. Copiar para a pasta da verso 7.10 a pasta \systemload\ da verso 8.11 (essa pasta contem o arquivo SXSBRA.TXT que o dicionrio de dados que ser utilizado para descompactar as tabelas na pasta \sigaadv\ da
verso 7.10.

8. Remover do arquivo de ndices, todos os ndices criados pelo usurio, e copia-los num arquivo a parte, pois ser necessrio volta-los ao arquivo de ndice ao final da converso, atentando-se a seqncia informada pelo
sistema.. isso quer dizer que tambm ser necessrio corrigir esse ndice e seqncia nos rdmakes que utilizam ndices criados pelo usurio e que indicam o numero do indice ao invs do nick do ndice.

9. Seguidos estes passos, entre na verso 8.11, digite no programa inicial: mp710to811 e no ambiente o ambiente que foi criado acima (apontando para a base da verso 710).

10. O sistema vai informar que esta verso atualizada permite atualiza o protheus 7.10 para a verso 8.11 R2 (Segundo release) ou ento de uma verso 8.11 para o 8.11 R2, escolha apenas primeira opo.

11. em seguida a tela que segue solicita a criao de sindex exclusivo, selecione esta opo.

12. A prxima tela informa quais empresas passaro pelo processo de converso, verifique se constam todas as empresas. (apenas a empresa matriz aparece, as filiais apesar de no aparecerem sero convertidas tambm
pois pertencem a mesma famlia de arquivos.)

13. Escolha ento na prxima tela as opes de converso, ou seja, marque Warning Error, Remover arquivos de backup aps atualizao,substituir arquivo de log existente e Corrigir erros automaticamente. (no
selecione permitir interromper processo de converso, pois esta opo faz com que cada um dos passos da converso solicite interao do usurio para passar para o prximo passo.)

14. Pronto, deixe a converso seguir sozinha.

15. Aps a converso:


Volte os ndices criados pelo usurio
Copie o contedo da pasta \sigaadv\ da verso 7.10 para a pasta \system\ da verso 8.11.
Copie o contedo da pasta \profile\ da verso 7.10 para a pasta \profile\ da verso 8.11.
Verifique o path do arquivo sx2 se estah correto e apontando para a pasta \SYSTEM\ ao invs de \SIGAADV\ (o mesmo vale para o aquivo de parmetros)
Copie o contedo da pasta \RDMAKE\ da verso 710 para a pasta \my projects\ da verso 8.11 e revise os rdmakes que utilizam esses ndices.
Abrir os Menus do systemload da internet na pasta /SYSTEM/
Apagar o roteiro da folha (SRM010)
Entrar no cadastro de roteiro para ele criar o padro
Voltar o roteiro dos usurios e corrigir a seqncia baseada na seqncia da versao anterior

Possveis erros:

1) Arquivos da contabilidade so diferentes dos informados em seus dicionrios.


R: Verifique se o arquivo de grupos contbeis contem o tamanha correto dos arquivos, esse arquivo contem o tamanho mnimo e o tamanho maximo destes arquivos, se necessrio corrija o tamanho do campo de cdigo contbil
no sx3, mate a tabela e a appende.

2) Arquivos insistem em derrubar a converso, dando erros inesperados. (Comum para tabelas SQ da qualidade.)
R: Renomeie este arquivo e reinicie a converso, e aps a converso, appende este arquivo apagado com o contedo do renomeado, ou copie a tabela pra outra e drope para depois appenda-la a partir desta copia.

3) Sistema trava durante a converso de arquivos muito extensos.


R: Derrube a conexo e inicie novamente a converso. Pode haver perda de sincronismo entre server e remote, mas no apague os .log, nem os .tsk, apenas os .cdx devem ser apagados.

4) Algum erro que precise comear tudo novamente.


R: Apague os arquivos com extenso .tsk (arquivo de lista de tarefas da converso, que serve para saber quais os passos que foram feitos pelo sistema durante a converso).
Obs: Eis a a necessidade da copia antes da converso.. tanto da pasta AP7 quanto do banco, pois se precisar comear tudo novamente prefervel voltar o backup do que uma converso j iniciada.

5) Erro em append por conta de ndices.


R: Verifique os ndices criados, podem ter sido duplicados acidentalmente, ou ento no constam do arquivo de ndices.

6) sistema no entra mais por causa de senha errada, mesmo informando a senha do administrador. (erro corrigido na verso 8.11.009)
R: comece apagando o arquivo de extenso .spf pois este arquivo pode ter sido corrompido durante a converso. Se ainda assim der errado, apague a pasta \PROFILE\ pois as configuraes de usurios podem estar erradas.(
claro que precisa de uma copia desta pasta a parte.)

Obs: para a converso de menus de usurios o sistema deixa a desejar na converso do caminho destes menus, ou seja, nas configuraes de usurios os menus de usurios continuaro apontando para a pasta \sigaadv\ ao
invs da nova pasta \system\ criada na verso 8.11.. .para isso existem duas opes: Criar uma pasta \sigaadv\ na verso 8.11 que contenha somente os menus de usurios, ou ento entrar via configurador no arquivo de
usurios, e mudar um a um os caminhos de cada um dos menus.

MIT072_Conversao_P11.doc Pgina 25 de 31
MIT072 Manual de Operao do Prottipo
Converso/Atualizao Release - Protheus Reviso 010 14/10/2013

CHAMADO TCNICO N.o ABXAFL

It. rea Ocorr. Descrio Cons. Externo An. Alocado Dt. Ocorr.

Boa Tarde, Fabrcio.

Segue abaixo os procedimentos para atualizao de release:

Passos para Migrao de Release P10 (R1) para P10 (R1.1)

Preparando para a atualizao

1. Atualize a Build e o RPO do sistema


Site: http://portaldocliente.microsiga.com.br
Link: Atualizaes do Produto

- RPO
Palavra: Protheus10
Categoria: Repositrio de Objetos

- BUILD
Palavra: Protheus10
Categoria: Binrio TOTVSTec

- UPDATE
Palavra: Protheus10
Categoria: Update de Programas

- PATCH/LIB DE PROGRAMAS
Palavra: Protheus10
Categoria: Path de Programas

2. Atualize o diretrio Systemload do sistema

a. Descompacte: Help_de_Campo_Pergunta.zip TBR047-FABRICIO DA


002 N1-FRAMEW2 FeedBack TI3205 DANIEL 04/07/08 13:50
SI
- HELP
Palavra: Protheus10
Categoria: Help de Campo/Pergunta

b. Descompacte: Menu_de_Mdulo.zip e Dicionrio_de_Dados.zip

- MENUS
Palavra: Protheus10
Categoria: Menu de mdulo

- BRA.ZIP
Palavra: Protheus10
Categoria: Dicionrio de dados

3. Exclua os arquivos *.DBF do diretrio SYSTEMLOAD


4. Exclua os arquivos *.IDX do diretrio SYSTEMLOAD
5. Exclua o arquivo *.TSK do diretrio APPSERVER do sistema
6. Exclua o arquivo *.LOG do diretrio SYSTEM

Atualizao da Base de Dados.

OBS.: Para bases TopConnect/DBAccess necessrio executar a rotina CheckDupl.


Para maiores detalhes, entre em contato com o Suporte Help Desk e pea orientaes para a execuo da
mesma.

1. Execute o SmartClient
2. No campo Programa Inicial digite: MP710TO101

Att,
Daniel.

Reviso 010 14/10/2013: Links complementares

Procedimentos para converso Release 11.8:

http://tdn.totvs.com/pages/releaseview.action;jsessionid=F19DFC38D43D85795BAAFF8EA84A4C33?pageId=41354489

Erros crticos mais comuns:

http://tdn.totvs.com.br/pages/releaseview.action?pageId=41353608

Problemas com ORACLE:

1442 - ORA-01442: column to be modified to NOT NULL is already NOT NULL


ALTER TABLE SRX030 MODIFY(R_E_C_N_O_ NOT NULL)

https://totvs.byyou.com/post?app_ByYouTimeline_p=868261985&space=ntecnologia

MIT072_Conversao_P11.doc Pgina 26 de 31
MIT072 Manual de Operao do Prottipo
Converso/Atualizao Release - Protheus Reviso 010 14/10/2013
ANEXO 2: Rotina para ajuste das tabelas:

Essa rotina xAjTab() - dever ser chamado via MENU em algum mdulo, e pelo SIGAMDI, pois via Configurador ela no executada, e via
SIGAADV ele carrega as tabelas no inicio do programa, tirando ento a exclusividade das mesmas.
#INCLUDE "PROTHEUS.CH"
#INCLUDE "TOPCONN.CH"
#INCLUDE "RWMAKE.CH"

//ROTINA DESENVOLVIDA POR MARCO SMANIOTO E AJUSTADA POR FABRICIO AMARO


//OBJETIVO - RECRIAR AS TABELAS DO BANCO
//EXEMPLO DE USO: EM ALGUNS CASOS, O COLETTION DA TABELA ESTO DIFERENTES DA DATABASE, SENDO NECESSRIO "DROPPAR" E "APPENDAR" A TABELA. COMO
// DIFICIL SABER QUAIS TABELAS ESTO DESSA FORMA, EXECUTA ESSA ROTINA PARA AS TABELAS QUE DESEJAR

//AS TABELAS DE BACKUP NO SO APAGADAS POR QUESTES DE SEGURANA, CASO SEJA NECESSRIO RECUPERAR OS DADOS

//SE EXECUTAR 2 VEZES ESSA ROTINA SEM MUDAR O PARAMETRO 'EXTENSAO DA TABELA', SER EXIBIDO O ERRO (NO TOPCONNECT) DE CHAVE DUPLICADA
//NO INSERT DA TABELA OFICIAL E DE BACKUP QUANDO FOR COPIADA DO BACKUP
//NA TABELA DE BACKUP

//SUGESTO: ANTES DE EXECUTAR ESSA ROTINA, ABRA O TOPCONNECT E FAA O ACOMPANHAMENTO NA ABA MENSAGENS

//Montagem da tela para passagem dos parametros


User Function xAjTab()

Local aSays := {}
Local aButtons := {}

Private cPerg := "XAJTAB1"


Private cCadastro := OemToAnsi( "* Ajusta Tabelas do Banco" )

ValidPerg()
//Apresenta os parametros logo na entrada da rotina
Pergunte(cPerg,.t.)

AADD(aSays,OemToAnsi( " Este programa ira ajustar as tabelas do sistema, fazendo um backup," ) )
AADD(aSays,OemToAnsi( " apagando, recriando e recuperando os dados." ) )
AADD(aSays,OemToAnsi( " Obs.: Executar em modo exclusivo!" ) )

AADD(aButtons, { 5,.T.,{|| Pergunte(cPerg,.T. ) } } )


AADD(aButtons, { 1,.T.,{|o| yAjTab() }} )
AADD(aButtons, { 2,.T.,{|o| FechaBatch() }} ) //FechaBatch padro para fechar a tela
FormBatch( cCadastro, aSays, aButtons )

Return

//ROTINA QUE FAZ BACKUP, APAGA, RECRIA E RESTAURA OS ARQUIVOS


USER FUNCTION AJUSTABANCO(cTabela)
//POR GARANTIA, APAGA A TABELA

//FABRICIO - MELHOR NO APAGAR A TABELA PARA NO TER PROBLEMAS


//EM ALGUNS CASOS PODE DAR ERRO DE INSERT APOS RECRIAR A TABELA ORIGINAL E TENTAR COPIAR DA TABELA DO BACKUP (ACOMPANHAR PELO TOPCONNECT)
//TcDelFile(RetSqlName(cTabela)+"_"+cExt)
cExt := ALLTRIM(MV_PAR03)
cCampos := ""
//PRIMEIRO APAGA OS REGISTROS DELETADOS
cQuery := " DELETE FROM "+RetSqlName(cTabela)+" WHERE D_E_L_E_T_ = '*' "
TCSQLEXEC(cQuery)

//ANALISA QUAIS OS CAMPOS DA TABELA


dbSelectArea("SX3")
dbSetOrder(1)
dbGoTop()
While !SX3->(Eof())
If SX3->X3_ARQUIVO == cTabela .AND. SX3->X3_CONTEXT <> "V"
cCampos += SX3->X3_CAMPO + ","
EndIf
DbSelectArea("SX3")
dbSkip()
EndDo
cCampos += " R_E_C_N_O_ "

//SELECIONA OS REGISTROS PARA BACKUP


cQuery := " SELECT * INTO "+RetSqlName(cTabela)+"_"+cExt+" FROM " + RetSqlName(cTabela)
TCSQLEXEC(cQuery)

//APAGA A TABELA OFICIAL


TCDelFile(RetSqlName(cTabela))

//RECRIA A TABELA ORIGINAL COM BASE NO SX3 DA EMPRESA POSICIONADA


DbSelectArea(cTabela)
dbSetOrder(1)

//RECUPERA OS DADOS DA TABELA DE BACKUP


cQuery := "INSERT INTO " + RetSqlName(cTabela) + " (" + cCampos + ") SELECT "+ cCampos +" FROM "+RetSqlName(cTabela)+"_"+cExt+" "
TCSQLEXEC(cQuery)

//APAGA A TABELA DE BACKUP


//TcDelFile(RetSqlName(cTabela)+"_"+cExt)
Return

Static Function yAjTab()


If MsgBox("Ser iniciado agora o processo de ajustes das tabelas do banco. Deseja continuar?","Continua?","YESNO")
Processa({|| zAjTab() },"Processando...")
EndIf
FechaBatch()
Return

Static Function zAjTab()


cAlias := "SX2"
DbSelectArea(cAlias)
dbSetOrder(1)
dbGoTop()
ProcRegua(RecCount()) // Numero de registros a processar

While !SX2->(Eof())
If SX2->X2_CHAVE >= MV_PAR01 .AND. SX2->X2_CHAVE <= MV_PAR02
IncProc("Tabela :" + SX2->X2_CHAVE + " - " + SX2->X2_NOME)
U_AJUSTABANCO(SX2->X2_CHAVE)
EndIf
DbSelectArea(cAlias)
dbSkip()
EndDo
MsgBox("Tabelas ajustadas com sucesso!","Ok","INFO")
Return

Static Function ValidPerg()


_sAlias:= Alias()
aRegs:= {}
dbSelectArea("SX1")
dbSetOrder(1)
cPerg:= PADR(cPerg,10)
// Grupo/Ordem/Pergunta/Perg.Esp/Perg.Ingl/Variavel/Tipo/Tam/Dec/Presel/GSC/Valid/Var01/Def01/Cnt01/Var02/Def02/Cnt02/Var03/Def03/Cnt03/Var04/Def04/Cnt04/Var05/Def05/Cnt05
aAdd(aRegs,{cPerg,"01","Tabela De ?","","","mv_ch1","C",03,00,00,"G","","mv_par01","","","","","","","","","","","","","","","","","","","","","","","","","HSPSX2","","","",""})
aAdd(aRegs,{cPerg,"02","Tabela Ate ?","","","mv_ch2","C",03,00,00,"G","","mv_par02","","","","","","","","","","","","","","","","","","","","","","","","","HSPSX2","","","",""})
aAdd(aRegs,{cPerg,"03","Extenso Tabelas Bkp","","","mv_ch3","C",03,00,00,"G","","mv_par03","","","","","","","","","","","","","","","","","","","","","","","","","","","","",""})
For i:=1 to Len(aRegs)
If !dbSeek(cPerg+aRegs[i,2])
RecLock("SX1",.T.)
For j:=1 to FCount()
If j <= Len(aRegs[i])
FieldPut(j,aRegs[i,j])
Endif
Next
MsUnlock()
Endif
Next
dbSelectArea(_sAlias)
Return

MIT072_Conversao_P11.doc Pgina 27 de 31
MIT072 Manual de Operao do Prottipo
Converso/Atualizao Release - Protheus Reviso 010 14/10/2013
ANEXO 3: Rotina para execuo e controle dos updates modulares
#include "rwmake.ch"
#include "topconn.ch"
#INCLUDE "PROTHEUS.CH"
#INCLUDE "TBICONN.CH"

/*
FABRICIO AMARO - 06/06/2011
ROTINA PARA REGISTRAR A APLICAO DOS UPDATES
RESUMO: PARA CADA UPDATE O SISTEMA IR GRAVAR UM ARQUIVO COM O MESMO NOME DO UPDATE MAIS (+) A DATA DO FONTE DESSE UPDATE
SE NA PROXIMA APLICACAO O SISTEMA VERIFICAR QUE A DATA DIFERENTE, IRA APLICAR NOVAMENTE
OBS.: SE CLICADO EM SIM PARA EXECUTAR O UPDATE, E DEPOIS CANCELAR O UPDATE (ROTINA PADRAO) FICAR GRAVADO NESSE LOG QUE ELE J FOI EXECUTADO,
PORTANTO, PARA ESSE CASO, IR NA PASTA DO LOG E APAGAR O ARQUIVO PARA QUE ELE POSSA SER EXECUTADO NOVAMENTE.
*/
User Function MeusUpds()

Private oGera2

p11 := .T.
cLocUpd := "UPDS\" //PASTA NA SYSTEM QUE FICAR GUARDADO O LOG DOS UPDATES - SUGESTO: CRIE ESSA PASTA
cUpd := SPACE(15)
If p11
cLocSystem := "C:\TOTVS 11\Microsiga\Treinamento\system\" //CAMINHO COMPLETO DA PASTA SYSTEM
cLocSmart := "C:\TOTVS 11\Microsiga\Protheus\bin\smartclient\" //CAMINHO COMPLETO DA PASTA SMARTCLIENT
cTCP := "TCP" //COMUNICAO TCP COM O SERVIDOR
cAmbiente := "TOTVS_10_PARA_11" //AMBIENTE
cProgCli := "SmartClient.exe" //NOME DO PROGRAMA DO SMARTCLIENT (PROTHEUS10 = TOTVSSMARTCLIENT.EXE | PROTHEUS 11 = SMARTCLIENT.EXE)
Else
cLocSystem := "A:\Protheus10\Treinamento\system\" //CAMINHO COMPLETO DA PASTA SYSTEM
cLocSmart := "A:\Protheus10\bin\smartclient\" //CAMINHO COMPLETO DA PASTA SMARTCLIENT
cTCP := "TCP" //COMUNICAO TCP COM O SERVIDOR
cAmbiente := "Treinamento" //AMBIENTE
cProgCli := "TotvsSmartClient.exe" //NOME DO PROGRAMA DO SMARTCLIENT (PROTHEUS10 = TOTVSSMARTCLIENT.EXE | PROTHEUS 11 = SMARTCLIENT.EXE)
EndIf
cLog := ""
cLog2 := ""
nCont1 := 0

//VARIAVEIS ESPECIFICAS PARA A PESQUISA DAS FUNES NO RPO


aType := {}
aFile := {}
aLine := {}
aDate := {}
aTime := {}

//MONTAGEM DA TELA PARA PASSAGEM DOS PARAMETROS


@ 200,1 TO 400,400 DIALOG oGera2 TITLE OemToAnsi("Aplicao dos Updates")
@ 10,018 Say "INFORME AS INICIAIS DO UPDATE - EXEMPLO: UPDCOM | UPDEST" PIXEL OF oGera2
@ 70,018 MSGET oVar VAR cUpd Picture "@!" SIZE 040,10 PIXEL OF oGera2
@ 80,170 BMPBUTTON TYPE 01 ACTION {Close(oGera2)}
Activate Dialog oGera2 Centered

cUpd := Alltrim(cUpd)

IF Alltrim(cUpd) == ""
Alert("No foi informado nenhum UPDATE!")
Return
EndIf
If MsgBox("Ser iniado a execuo dos UPDs. Deseja continuar?","Ateno","YESNO")

cNomFunc := "U_"+cUpd+"*" //O * SERVE PRA PESQUISAR O RESTANTE DA STRING

//PESQUISA AS FUNES NO RPO


aRet := GetFuncArray(cNomFunc, @aType, @aFile, @aLine, @aDate, @aTime)

For nCont := 1 To Len(aRet)


//PRIMEIRO VERIFICA SE ESSE ARQUIVO J EXISTE NA PASTA \SYSTEM\UPDS OU NO CAMINHO ESPECIFICADO
cArqUpd := aRet[nCont] +"_"+ StrTran(dtoc(aDate[nCont]),"/","_")
cArqUpd := cLocSystem + cLocUpd + cArqUpd + ".UPDATE"
cTemArq := FOPEN(cArqUpd)

//SE O ARQUIVO J EXISTIR


If !(cTemArq <= 0)
cLog2 += aRet[nCont] +";"
Else
nCont1++
If MsgBox("Executa "+aRet[nCont]+"?","Ateno","YESNO")
//EXECUTA O SMARTCLIENT COM OS PARAMETROS DO UPDATE
WinExec(cLocSmart+cPROgCli+" -P="+aRet[nCont]+" -C="+cTCP+" -E="+cAmbiente+" -M")
//ARMAZENA O LOG GERAL
cLog += aRet[nCont] +";"
//CRIA NA PASTA SYSTEM O UPDATE PARA DIZER QUE ELE J FOI EXECUTADO
MemoWrite(cArqUpd,cArqUpd)
EndIf
EndIf

Next
cArq := cLocSystem + cLocUpd + cUpd + ".TXT"
MemoWrite(cArq,cLog)

If nCont1 > 0
cMsg := "Compatibilizadores executado com sucesso! Foi gravado os LOG's na pasta SYSTEM"
Else
cMsg := "No foi executado nenhum compatibilizador!"
EndIf
MsgBox(cMsg,"Acabou","INFO")

If MsgBox("Deseja executar novamente a rotina MeusUpd's?","Meus Upds","YESNO")


U_MEUSUPDS()
EndIf

EndIf
Return

MIT072_Conversao_P11.doc Pgina 28 de 31
MIT072 Manual de Operao do Prottipo
Converso/Atualizao Release - Protheus Reviso 010 14/10/2013
ANEXO 4: Procedimentos de restaurar BACKUP quando o banco Oracle Rev. 010

Em cliente que aps a migrao a maioria dos campos de tipo data ficam em branco. Aps algumas anlies acreditamos ter descoberto a causa
e a soluo para o problema.

O problema foi detectado em base teste com Oracle e Protheus ainda na verso 10. Ou seja, acessamos o Protheus 10 antes de realizar a
migrao para o Protheus 11.5.

No ambiente de produo o DbAccess conecta no Oracle com o usurio protheus:

No ambiente de teste o DbAccess conecta no Oracle com o usurio teste:

Ao acessar o Protheus 10 no ambiente de teste solicitado gravar a moeda para o dia:

MIT072_Conversao_P11.doc Pgina 29 de 31
MIT072 Manual de Operao do Prottipo
Converso/Atualizao Release - Protheus Reviso 010 14/10/2013

Ao clicar no OK exibido o erro:

Invalid date type on (M2_DATA)...

O erro acontece porque o backup na base teste do Oracle foi restaurado (import) com o usurio teste, assim todas as tabelas ficaram com o
owner (proprietrio) teste. Porm, o campo FIELD_TABLE da tabela TOP_FIELD na base teste continua com o owner PROTHEUS.

Campos da tabela SM2010 na TOP_FIELD da base teste:

Desta forma o Protheus no localiza o campo M2_DATA da tabela TESTE.SM2010 na TOP_FIELD e gera o erro. Na rotina de migrao o Protheus
ir criar novas tabelas e em seguida realizar a insero dos dados baseado nos dados da tabela antiga. Porm, a rotina de migrao no gera o
erro ao no conseguir ler os dados e grava os campos data em branco.

Existem duas solues:

Soluo 1: restaurar o backup da base teste do Oracle usando o mesmo nome de usurio da base de produo. No cliente que estamos
preferimos no usar essa soluo porque teriamos que restaurar novamente o backup.

Soluo 2: parar o servio do DBAccess (precisa parar porque o DbAccess carrega em memria as tabelas TOP_FIELD no momento que
colocado no ar) e realizar via banco de dados a troca do nome do usurio no campo FIELD_TABLE na tabela TOP_FIELD da base teste. Por
exemplo:

UPDATE TOP_FIELD SET FIELD_TABLE = REPLACE(FIELD_TABLE,'PROTHEUS.','TESTE.')

Aps executar a trocar a tabela TOP_FIELD ficar da seguinte forma:

MIT072_Conversao_P11.doc Pgina 30 de 31
MIT072 Manual de Operao do Prottipo
Converso/Atualizao Release - Protheus Reviso 010 14/10/2013

Tambm necessrio analisar se as tabelas TOP_IDXSTATS, TOP_PARAM, TOP_SP e TOP_VIRTUALIDX contm dados e se necessrio efetuar a
troca do usurio nessas tabelas.

Para finalizar basta colocar o servio do DbAccess no ar para carregar em memria as alteraes efetuadas na(s) tabela(s) comeando com
TOP_.

Caso j tenha executado a restaurao do Backup, pode utilizar a rotina abaixo para ajustar as datas. Ela no aconselhvel pois demora muito,
mas uma outra forma de ajuste.

//Rotina que ajusta o campo DATA da base TESTE convertida


User Function AjCpoDt()
Processa({|| xProc() },"Processando...")
Return
Static Function xProc()
Private cTab := SPACE(3)
cBcTESTE := "TESTE"
cBcOFICIAL := "SIGA"

ProcRegua(0) // Numero de registros a processar

//MONTAGEM DA TELA PARA PASSAGEM DOS PARAMETROS


@ 200,1 TO 400,400 DIALOG oGera2 TITLE OemToAnsi("Ajuste de Tabelas")
@ 10,018 Say "INFORME A TABELA (BRANCO = TODAS)" PIXEL OF oGera2
@ 70,018 MSGET oVar VAR CTAB Picture "@!" SIZE 040,10 PIXEL OF oGera2
@ 80,170 BMPBUTTON TYPE 01 ACTION {Close(oGera2)}
Activate Dialog oGera2 Centered

If MsgYesNo( "Iniciar o Processamento de ajuste dos campos DATA?", "Confirma?" )

dbSelectArea("SX3")
dbSetOrder(1)
If !Empty(cTab)
dbSeek(cTab)
cTabI := cTab
Else
cTabI := ""
cTab := "ZZZ"
EndIf
While !Eof() .AND. (SX3->X3_ARQUIVO >= cTabI .AND. SX3->X3_ARQUIVO <= cTab)

IncProc(SX3->X3_ARQUIVO + " - " + SX3->X3_CAMPO)

If SX3->X3_TIPO == "D" .AND. !(SX3->X3_CONTEXT == "V") //CAMPO DATA E NO VIRTUAL

dbSelectArea("SX2")
dbSetOrder(1)
dbSeek(SX3->X3_ARQUIVO)

cSql := " UPDATE "+cBcTESTE+"." + ALLTRIM(SX2->X2_ARQUIVO) +" " + SX3->X3_ARQUIVO +"_TESTE SET " + ALLTRIM(SX3-
>X3_CAMPO) + " = "
cSql += " (SELECT "+ALLTRIM(SX3->X3_CAMPO)+" FROM "+cBcOFICIAL+"." + ALLTRIM(SX2->X2_ARQUIVO) +" " + SX3->X3_ARQUIVO
+"_SIGA "
cSql += " WHERE "+SX3->X3_ARQUIVO+"_TESTE.R_E_C_N_O_ = "+SX3->X3_ARQUIVO+"_SIGA.R_E_C_N_O_) "

TcSqlExec(cSql)

EndIf
SX3->( dbSkip() )

EndDo
//SX3->( dbCloseArea() )

//cArq := "C:\LOG_SX3_X3_FOLDER_"+xArqCorr+".TXT"
//Memowrite(cArq,cLOG)

MsgStop("Concludo!")
EndIf
Return .T.

MIT072_Conversao_P11.doc Pgina 31 de 31