for
Dummies
by Luiz Alencar
(Peopletools v8.4x e acima)
março/2018
Páá giná: 1 de 11
Índice
Introduçáã o....................................................................................................................................................................... 3
Entendendo Applicátion Páckáge.......................................................................................................................... 4
Entendendo Applicátion Cláss................................................................................................................................ 5
Linhás 1 e 2.......................................................................................................................................................... 6
Linhás 4 á 7.......................................................................................................................................................... 7
Linhá 9................................................................................................................................................................... 7
Linhás 10 á 12..................................................................................................................................................... 8
Linhás 15 á 27..................................................................................................................................................... 8
Linhá 45................................................................................................................................................................ 9
Convençoã es............................................................................................................................................................. 10
Páá giná: 2 de 11
Introdução
Sinceramente,
Luii S. Alencar
Páá giná: 3 de 11
Entendendo Application Package
Páá giná: 4 de 11
Entendendo Application Class
Métidi Fuoctio
method AddNumbers Local number &c;
/+ &a as Number, +/
/+ &b as Number +/ Function AddNumbers(&a As
/+ Returns Number +/ number, &b As number) Returns
number
Local number &c;
&c = &a + &b;
&c = &a + &b;
Messagebox(0,"", 0, 0,"My Result
MessageBox(0,"",0,0,"My Result is: "| &c);
is: " | &c);
Return &c;
Return &c;
End-Function;
end-method;
1 REM Este Package foi produzido para ser acionado por peoplecode em um Application
2 Engine;
3
4 import DPSP_IFO_SAP_PKG:UTL:Arquivo;
5 import DPSP_IFO_SAP_PKG:UTL:Formato;
6 import DPSP_IFO_SAP_PKG:UTL:Registro;
7 import DPSP_IFO_SAP_PKG:UTL:Log;
8
9 class ImportarFornecedor
10 method ImportarFornecedor(&ProcInst As number, &RunControlName As string,
11 &OperatorId As string);
12 method Importar() Returns boolean;
13
14 private
15 instance number &ProcessInstance;
16 instance number &HeaderId;
17 instance number &Seq_Nbr;
18 instance string &RunCntlName;
19 instance string &Operator;
20 instance string &FilePathBase;
21 instance string &FilePath;
22 instance Rowset &RS;
23 instance string &ArquivosCSV;
Páá giná: 5 de 11
24 instance string &DiretorioExclusivo;
25 instance File &ArquivoCSV;
26 instance DPSP_IFO_SAP_PKG:UTL:Log &oLog;
27 instance array of string &ArrayCSV;
28 method getSetup() Returns boolean;
29 method moveArquivos() Returns boolean;
30 method convertString(&sLinha As string out);
31 method insereTipoOperacao(&sLinha As string out);
32 method loopArrayCSV() Returns boolean;
33 method loopArrayCSV2() Returns boolean;
34 method loopConteudoArquivo();
35 method gravaLinha(&aLinha As array of string, &sRegistro As string) Returns
36 boolean;
37 method aplicarFormato(&aValoresString As array of string, &rcRegistro As Record)
38 Returns array of any;
39 method temTodasColunas(&aColunas As array of string) Returns boolean;
40 method EditRecord(&REC As Record) Returns boolean;
41 method ImportSegment(&RS2 As Rowset, &RSParent As Rowset, &nHeader As number);
42 method codigoLancamento(&sRegistro As string) Returns string;
43 end-class;
44
45 Declare Function GetDirSeparator PeopleCode PSXPFUNCLIB.FUNCLIB FieldFormula;
46
47 /* Construtor da Classe */
48 method ImportarFornecedor
49 /+ &ProcInst as Number, +/
50 /+ &RunControlName as String, +/
51 /+ &OperatorId as String +/
52 Local string &URL_ID;
53 Local DPSP_IFO_SAP_PKG:UTL:Arquivo &oArquivo = create
54 DPSP_IFO_SAP_PKG:UTL:Arquivo();
55
56 &ProcessInstance = &ProcInst;
57 &RunCntlName = &RunControlName;
58 &Operator = &OperatorId;
59 &ArquivosCSV = "IFO*.CSV";
60
61 rem Recupera os parametros do arquivo de run control;
62 %This.DiretorioExclusivo = &oArquivo.getDiretorioExclusivo(&ProcInst,
63 &RunControlName, &OperatorId, "");
64 %This.FilePathBase = &oArquivo.getDiretorioBase(&RunControlName, &OperatorId);
65 &oArquivo = Null;
66 rem Recupera os parametros do arquivo de run control;
67 &oLog = create DPSP_IFO_SAP_PKG:UTL:Log();
68 &oLog.Open(%This.DiretorioExclusivo | GetDirSeparator() |
69 "ImportarFornecedor.LOG", "W");
70 &oLog.LogInstance = &ProcInst;
71 &oLog.LogProcName = "INTFCFORNSAP";
72 &oLog.LogFileName = "ImportarFornecedor.LOG";
73
74 end-method;
Linhas 1 e 2
O comentário eaprime um aviio importante. Ele indica que a claiie de aplicação
foi criada para trabalhar iob chamadai de applicaton engine, ou ieja, o ciotexti
em que a claiie vai trabalhar é o eicopo criado pela eaecução de um aplicaton
engine. O ciotexti onde uma claiie de aplicação vai operar, é de eatrema
importância e deve eitar preiente nai preocupaçõei do deienvolvedor no initante
do deienvolvimento. Por qual raião? A raião é o uio de initruçõei diiponíveii
Páá giná: 6 de 11
dentro de tal ciotexti. Eaemplo: Uio de pricess_iostaoce que eitará carregada no
ciotexti de um applicaton engine, mai não eitará no ciotexti de um component.
Linhas 4 a 7
A palavra reiervada impirt é a forma como ie trai funcionalidadei de outrai
claiiei de aplicação, tal qual o #ioclude de um SQR ou o declare fuoctio... que trai
o uio de funçõei diiponíveii em evento de tabela. Doii pontoi “:” tem a função de
ieparar o caminho na hierarquia dentro de um aplicaton package, até chegar na
claiie de aplicação. Tomemoi como eaemplo: import
DPSP_IFO_SAP_PKG:UTL:Arquivi;
Linha 9
class ImportarFornecedor
method ImportarFornecedor(&ProcInst As number, &RunControlName As string, &OperatorId As
string);
end-class
Páá giná: 7 de 11
ImpirtarFiroecedir deverá receber 3 (trêi) parâmetroi no initante em que a claiie
de aplicação for initanciada. Veja como a claiie acima é initanciada num evento
peoplecode qualquer:
1 import DPSP_IFO_SAP_PKG:INTFC:ImportarFornecedor;
2
3 Local DPSP_IFO_SAP_PKG:INTFC:ImportarFornecedor &oImportar;
4
5 &oImportar = create DPSP_IFO_SAP_PKG:INTFC:ImportarFornecedor(1000,”ALENCAR”,
6 %OperatorId);
Linhas 10 a 12
Apenai doii métodoi eitão aceiiíveii numa initância da claiie de aplicação
ImportarFornecedor: o método conitrutor ImpirtarFiroecedir() e o método
Impirtar(). Todo o reitante, abaiao da declaração PRIVATE é coniiderado de uio
interno da claiie. Para melhor entendimento veja o eaemplo a ieguir:
1 import DPSP_IFO_SAP_PKG:INTFC:ImportarFornecedor;
2
3 Local DPSP_IFO_SAP_PKG:INTFC:ImportarFornecedor &oImportar;
4
5 &oImportar = create DPSP_IFO_SAP_PKG:INTFC:ImportarFornecedor(1000,”ALENCAR”,
6 %OperatorId);
7
8 &oImportar.Importar(); (executa normalmente)
9 &oImportar.getSetup(); (erro, metodo não acessível)
Linhas 15 a 27
O que ie vê em todo eite trecho, é o uio da palavra reiervada iostaoce. O que
Páá giná: 8 de 11
ela fai é criar variáveii que pertencerão a initância da claiie de aplicação, quando
eita for criada. Meimo que a initância ieja criada por maii de uma vei, com o uio
da palavra reiervada create, eitai variáveii de initância contnuarão a ier eacluiivai
de cada uma delai. Iito quer diier que valorei carregadoi neitai variáveii, ie
manterão durante o tempo de vida da reipectva initância de claiie. Por eaemplo,
na eaigência de paiiagem de parâmetroi do conitrutor da claiie
ImpirtarFiroecedir, todoi oi parâmetroi ierão guardadoi em variáveii de
initância, ai quaii, ierão uiadai peloi métodoi privadoi da claiie de aplicação
(liohas 28 a 42). Nai liohas 56 a 59 é poiiível ver atribuição de informação para
algumai variáveii de initância; uma forma diferente para atribuir poderia ier aiiim:
%this.ProcessInstance = &ProcInst;
%this.RunCntlName = &RunControlName;
%this.Operator = &OperatorId;
%this.ArquivosCSV = "IFO*.CSV";
Linha 45
Uma evidência que funçõei criadai ainda podem ier referenciadai e uiadai
dentro de uma claiie de aplicação. É claro que converter taii funçõei para a forma
de aplicaton package é o recomendado, porém, não uma obrigação enquanto
funcionarem. Neite trecho de código é referenciada a função GetDirSeparator(), que
pertence a um pacote de funçõei que acompanha o peopletooli 8.4a, criada por
Judi Doolitle (arquiteta de ioluçõei da oracle), e que foi utliiada na lioha 68. A
função verifca em que plataforma de iiitema operacional (ciotexti iperaciioal) o
código eitá iendo eaecutado, retornando uma barra ieparadora de caminho de
paita: “\” ie tindoti ou “/” unia/linua.
Páá giná: 9 de 11
Convenções
Tipi Cioveoçãi
Array A variável começa com &a
Striog A variável começa com &s
Numeric A variável começa com &n
Date A variável começa com &dt
DateTime A variável começa com &dtm
Biileao A variável começa com &b
Classe A variável começa com &o
Recird A variável começa com &rc
RiwSet A variável começa com &rw
SQL A variável começa com &sql
File A variável começa com &f ou &o
Objetoi criadoi com baie na API do peopletooli, geralmente terão como prefao &i.
Páá giná: 10 de 11
O pacote principal, o que ierá lido na eitrutura do projeto peopleiof, deve ier
todo em letrai maiúsculas, iendo o iufao como “_PKG”. Oi iupackagei, também
em letrai maiúsculas, com atenção em não uiar nomei longoi. Já, oi nomei dai
claiiei de aplicação, devem paiiar a ideia do ieu objetvo, mantendo a eitrutura do
nome, quando em compoiição de nome, na forma “capitaliiada” iem “eipaçoi”.
Eaemplo: Cadaitro de Fornecedor, que pode ier eicrito como: CadaitroFornecedor.
A imagem a ieguir repreienta em iua eitrutura ai convençõei que utliio para
nomear oi packagei e claiiei.
Páá giná: 11 de 11