Escolar Documentos
Profissional Documentos
Cultura Documentos
Arquitetura Protheus
Arquitetura Protheus
Índice
I) Arquitetura
II) Estruturas de Dados e Metadados
III) O que é o AdvPL (Noções)
IV) Criação de um Ambiente ( Prática )
2
Arquitetura
Arquitetura Protheus
Arquitetura
4
Arquitetura Protheus
Arquitetura
Application Server
RPO (TTTP110.RPO)
Windows (AppServer.exe)
Application
Linux Monitor
Unix (Monitor.exe) Server
DBF/CTREE DBAccess
Windows
Linux Database
Unix Server
5
Arquitetura Protheus
Arquitetura
Programa-fonte APPLICATION
SERVER SMARTCLIENT
MATA010
. . .
dbSelectArea(“SB1”)
RecLock(“SB1”, .T.) Compilação
SB1->B1_COD := “000001”
APO
MATA010
SB1->B1_DESC := “Produto A”
MSUnlock()
. . . Cad.Produtos
RPO Executa
Execuç
ão MATA010
MATA010
Executa
MATA410 MATA410
Ped.Vendas
CTBR040
Executa
CTBR040
Balancete Cont.
6
Arquitetura Protheus
Arquitetura
Executáveis
7
Arquitetura Protheus
Arquitetura
T T x x 110.RPO
P – Português, S – Spanish, E – English
D – DBF, A – ADS, C – CTree, T – DBAccess (TopConnect)
Arquitetura
\TDE\ADVPL
ERP11
APO (RPO)
BIN
APPSERVER (executáveis)
SMARTCLIENT (executáveis)
INCLUDE (arquivos .CH)
PROTHEUS_DATA
DATA (versão ISAM - .DBF e .CDX)
SPOOL (relatórios impressos em disco)
SYSTEM (Dic.Dados, Menus, ...)
SYSTEMLOAD (arq. de carga inicial)
MY PROJECTS (fontes de customizações)
9
Arquitetura Protheus
Aplication Server
Smart Client
Destino: c:\tde\advpl\erp110\bin\smartclient\SmartClient.exe
Iniciar em: c:\tde\advpl\erp110\bin\smartclient
Ambiente
Localização • RPO
dos arquivos • Arqs. do Sistema
• Arqs. Dados do Usuário
• DBF
• ADS
Base de Dados • CTree
• SQL
• Português
Língua • Spanish
• English
Comunicação
• TCP-IP
Tipo de Comunicação • Endereço do Servidor
• Porta
12
Arquitetura Protheus
Arquitetura
APPSERVER.INI
ERP110
[Environment]
SourcePath=C:\ERP101\APO APO TTTP110.RPO
RootPath=C:\ERP101\Protheus_Data BIN
StartPath=\system\
RpoDb=TOP APPSERVER
RpoLanguage=portuguese SMARTCLIENT
RpoVersion=110
LocalFiles=ads INCLUDE
localdbextension=.dbf
PictFormat=DEFAULT (ou AMERICAN)
PROTHEUS_DATA
DateFormat=DEFAULT (ou AMERICAN) DATA
[DBACCESS] SPOOL
SERVER=127.0.0.1
SYSTEM
PORT=7890
DATABASE=POSTGRES SYSTEMLOAD
ALIAS=ADVPL
MY PROJECTS
[Drivers]
Active=TCP
[TCP]
TYPE=TCPIP
Port=1234
13
AdvPL usando Queries e Procedures
APPSERVER.INI
Application Server
[Environment]
SourcePath=C:\ERP110\APO Protheus
RootPath=C:\ERP110\Protheus_Data IP 192.16.0.1
Porta 1234
StartPath=\system\
RpoDb=TOP
RpoLanguage=portuguese
RpoVersion=110
LocalFiles=ads
localdbextension=.dbf
PictFormat=DEFAULT (ou AMERICAN) DataBase Server
DateFormat=DEFAULT (ou AMERICAN)
DbAccess
[TOTVSDBACCESS] IP 192.16.0.2
SERVER=192.16.0.2 Porta 7890
PORT=7890
DATABASE=POSTGRES
ALIAS=ADVPL
MEMOMEGA=1
[Drivers]
Active=TCP
[TCP]
TYPE=TCPIP
Port=1234
14
AdvPL usando Queries e Procedures
APPSERVER.INI
Application Server
[Environment]
SourcePath=C:\ERP110\APO Protheus
RootPath=C:\ERP110\Protheus_Data IP 192.16.0.1
Porta 1234
StartPath=\system\
RpoDb=TOP
RpoLanguage=portuguese
RpoVersion=101
LocalFiles=ads
localdbextension=.dbf
PictFormat=DEFAULT (ou AMERICAN) DataBase Server
DateFormat=DEFAULT (ou AMERICAN)
TopSERVER=192.16.0.2 DbAccess
TopPORT=7890 IP 192.16.0.2
TopDATABASE=POSTGRES Porta 7890
TopALIAS=ADVPL
TopMEMOMEGA=1
[TOTVSDBACCESS]
SERVER=192.16.0.2
PORT=7890
DATABASE=POSTGRES
ALIAS=ADVPL
MEMOMEGA=1
15
Arquitetura Protheus
Arquitetura
APPSERVER.INI
Usuário Brasileiro [EnvPOR]
SourcePath=C:\ERP110\APO
RootPath=C:\ERP110\Protheus_Data ERP110
EnvPOR StartPath=\system\ TTTP110.RPO
RpoDb=TOP
APO TTTS110.RPO
RpoLanguage=portuguese BIN
RpoVersion=110
LocalFiles=ads APPSERVER
localdbextension=.dbf SMARTCLIENT
Usuário Argentino PictFormat=DEFAULT
DateFormat=DEFAULT INCLUDE
EnvSPA PROTHEUS_DATA
[EnvSPA]
SourcePath=C:\ERP110\APO DATA
RootPath=C:\ERP110\Protheus_Data
StartPath=\system\ SPOOL
RpoDb=TOP SYSTEM
RpoLanguage=spanish
RpoVersion=110 SYSTEMLOAD
LocalFiles=ads
MY PROJECTS
localdbextension=.dbf
PictFormat=DEFAULT
DateFormat=DEFAULT
16
Arquitetura Protheus
Arquitetura
SMARTCLIENT.INI
[Config]
LastMainProg=sigamdi
[Drivers]
Active=TCP
[TCP]
Server=localhost
Port=1234
17
Arquitetura Protheus
Arquitetura
Application Server
ou
Application Server
Smart Client
18
Arquitetura Protheus
Arquitetura Simplificada
SmartClient Application
Server
License
Server
Banco de
DBAccess Dados
19
Arquitetura Protheus
Banco de
DBAccess Dados
20
Estruturas de Dados e
Metadados
Arquitetura Protheus
Todo arquivo, exceto SM2 (Moedas), tem um campo que identifica a Filial nos
registros.
25
Arquitetura Protheus
Nomenclatura de Campos
26
Arquitetura Protheus
Modo de Acesso
Modo de Acesso
Compartilhado à registros compartilhados entre as filiais
Campo Filial: em branco
Exclusivo à cada Filial tem seus os próprios registros
Campo Filial: código da Filial (variável cFilAnt)
O usuário pode SA1 (Cad.Clientes) - Compartilhado
selecionar apenas 1 A1_FILIAL A1_COD A1_NOME
Empresa e 1 Filial 000015 FABRICA DE TINTAS E VERINIZES LTDA
por vez 000016
000001
TEX MALHAS E CONFECCOES S.A
CLIENTE PADRAO
000020 ARMANDO JOSE FLORES
000007 COMERCIO SOM DO MUNDO
Empresa 01
SC5 (Pedidos de Venda) - Exclusivo
Filiais 01 C5_FILIAL C5_NUM C5_EMISSAO C5_CLIENTE C5_PROD C5_VALOR
01 000001 01/01/04 000002 1111014 15.000,00
02 01 000005 01/01/04 000023 1313000 5.600,00
01 000007 20/01/04 000016 1515140 5.600,00
02 000001 01/01/04 000002 1111014 15.000,00
03 02 000005 01/01/04 000023 1313000 5.600,00
02 000007 20/01/04 000016 1515140 5.600,00
03 000001 01/01/04 000002 1111014 15.000,00
03 000005 01/01/04 000023 1313000 5.600,00
03 000007 20/01/04 000016 1515140 5.600,00
27
Arquitetura Protheus
Modo de Acesso
“ ” ou “01” ou
Preenchimento do campo Filial: “02”...
A1_FILIAL := ??
28
Arquitetura Protheus
Índice
Índice
1 2
FILIAL+CODIGO RECNO FILIAL+NOME RECNO RECNO A1_FILIAL
RECNO A1_COD A1_NOME A1_NOME
A1_COD
Variáveis de Memória
Cadastro
Nome: José
Memória
Nome
José
Valor
1000
A1_NOME
José
D2_VALOR ICMS = Valor * 18 / 100
1000
CPU
32
Arquitetura Protheus
Notação Húngara
33
Arquitetura Protheus
Tipagem da Variável
n X := 1 nX
X éénumérico
numérico
c X := “José” X agora
cX é caracter
é caracter
n X := n X + 1 Operação
ERRO
matemática
!
34
Arquitetura Protheus
Exemplo:
cNome := “Jose” ValType(cNome) à “C”
nValor := 1000 ValType(nValor) à “N”
dData := CtoD(“25/10/08”) ValType(dData) à “D”
x := Nil ValType(x) à “U”
35
Arquitetura Protheus
Array
aNomes[1] 1º 2º 3º 4º
aNomes[2] elemento elemento elemento elemento
aNomes[3]
aNomes[4]
36
Arquitetura Protheus
O que é o AdvPL ?
Variáveis
Array
Armário
37
Arquitetura Protheus
O que é o AdvPL ?
aMatriz[1]
aMatriz[1][1]
aMatriz[1][2]
aMatriz[1][3]
aMatriz[2]
aMatriz[2][1]
aMatriz[2][2]
aMatriz[2][3]
O que é o AdvPL ?
2 25 2 18 2 40 2 33
3 T 3 F 3 T 3 F
39
Arquitetura Protheus
O que é o AdvPL ?
aNomes := {“Joao”,
{}
{“Joao”} “Alberto”} “Pedro”,
“Alberto”, “Pedro”} “Maria”}
AAdd(aNomes, “Joao”)
AAdd(aNomes, “Alberto”)
AAdd(aNomes, “Pedro”)
AAdd(aNomes, “Maria”)
AAdd(aMatriz, {“Joao”,25,.T.})
AAdd(aMatriz, {“Alberto”,18,.F.})
AAdd(aMatriz, {“Pedro”,40,.T.})
AAdd(aMatriz, {“Maria”,33,.F.})
O que é o AdvPL ?
aPessoa := Array(3)
aPessoa à {Nil, Nil, Nil}
41
Arquitetura Protheus
O que é o AdvPL ?
42
Arquitetura Protheus
O que é o AdvPL ?
Function
PRW
Function
Local Private Public Static
Function
Function
43
Arquitetura Protheus
O que é o AdvPL ?
Local
Visível somente na função em que foi criada.
Private
Visível na função em que foi criada e nas funções seguintes.
Public
Visível em todas as funções, a partir do momento em que foi criada.
Static
-Visível somente no programa (PRW);
-Pode ser declarada fora da função;
-É criada na chamada de qualquer função dentro do PRW.
44
Arquitetura Protheus
O que é o AdvPL ?
Return
u_Func3()
Return
PUBLIC Conteúdo
User Function Func3()
cVar2 := “ABC"
Return
45
Arquitetura Protheus
O que é o AdvPL ?
u_Func3()
Return
PUBLIC Conteúdo
User Function Func3()
cVar2 := “ABC"
Return
Arquitetura Protheus
O que é o AdvPL ?
Return
PUBLIC Conteúdo
User Function Func3()
cVar3 Public Func2
cVar2 := “ABC"
Return
47
Arquitetura Protheus
O que é o AdvPL ?
Return
Return
PUBLIC Conteúdo
User Function Func3()
cVar3 Public Func2
cVar2 := “ABC"
Return
48
Arquitetura Protheus
O que é o AdvPL ?
Return
PUBLIC Conteúdo
User Function Func3()
cVar3 Public Func2
cVar2 := “ABC"
Return
49
Arquitetura Protheus
O que é o AdvPL ?
u_Func3()
Return
PUBLIC Conteúdo
User Function Func3()
cVar3 Public Func2
cVar2 := “ABC"
Return
50
Arquitetura Protheus
Funções
Programa.PRW
User Function Soma()
RPO
Local nX := 5
Local nY := 10
u_Soma
MsgAlert(nX + nY)
Return
51
Arquitetura Protheus
Funções
Comandos Comandos
If CGC(cCGC) Comandos
continua Comandos
Else If CGC(cCGC)
abandona continua
EndIf Else
r
do
CG
Comandos abandona
ce
Cd
ne
Comandos EndIf
oC
or
oF
lie
Comandos Comandos
Cd
nt
e
CG
Return Return
Function CGC(cCGC)
If cCGC OK
.T. ou .F.
.T. ou .F.
lOK := .T.
Else
lOK := .F.
EndIf
Return lOK
52
Arquitetura Protheus
Funções
Return Return
CAD3.PRW
Static Function Grava() Static Function Grava() User Function CadXXX()
... ...
...
Return Return
X Grava()
Return
Function à desenvolvimento Totvs
User Function à desenvolvimento Usuário podem estar em qualquer .PRW
Static Function à desenvolvimento Totvs/Usuário somente no próprio .PRW
53
Arquitetura Protheus
Funções
Return
São criadas
User Function ICMS(cRegiao, nValor)
“NE” 1000 variáveis
LOCAIS
If cRegiao == “SE”
nICMS := nValor * 18 / 100
ElseIf cRegiao == “NE”
nICMS := nValor * 7 / 100
Else
nICMS := nValor * 12 / 100
EndIf
Return nICMS
54
Arquitetura Protheus
Funções
MsgInfo(nAliquota) à
ia
DEST
c
ên el
Return fer riáv
Re va
“NOR
If cReg == "NORDESTE“
nAliq := 7
EndIf
Bloco de Código
dbSelectArea("SB1")
dbGoTop()
While !SB1->(Eof()) Fórmula fixada no
RecLock("SB1") código-fonte
SB1->B1_Prv1 := SB1->B1_Prv1 * 1.25
MSUnlock()
SB1->(dbSkip())
End
MsgInfo("Terminou!")
Return
56
Arquitetura Protheus
Bloco de Código
Bloco de Código
nResult := EVal(bBloco)
nResult = 20
bBloco := {|x| x * 2}
bBloco := {|x,y| x * y}
58
Arquitetura Protheus
Bloco de Código
DBEval()
59
Arquitetura Protheus
Bloco de Código
.T.
.F.
60
Arquitetura Protheus
Bloco de Código
aMatriz := { {“Pedro
{“Joao ”,10}
”,15} , {“Joao
{“Pedro ”,15}
”,10} ,{“Alberto”,20}, {“Maria ”,30} }
.T.
.F.
61
Arquitetura Protheus
Bloco de Código
.T.
62
Arquitetura Protheus
Semáforo
Semáforo
Exemplo:
GetSXENum
ConfirmSX8 GetSXENum
ConfirmSX8 GetSXENum
RollBackSX8 GetSXENum
RollBackSX8 GetSXENum
ConfirmSX8
001 002 003 004 005
003 004 006 007 008
Pastas
• Repositório D-1: Repositório com as ultimas versões dos fontes aprovados pelo SQA
• \\ 172.16.103.229\d-1
• Pasta Temp: Pasta com o último dicionário gerado pelo ATUSX. Somente serão
gerados campos aprovados pelo DBA e pelo líder do desenvolvimento
• \\SSIMSLV-03\temp
• Espelho do Portal: Pasta de rede com os arquivos que estão no portal do cliente
• \\ 172.16.103.229\espelho-portal
65
Arquitetura Protheus
66
Título da Apresentação
Questões
Palestrante
Desenvolvimento - Inovação
demetrio.fontes@totvs.com.br
67