You are on page 1of 22

PeopleCode

Luigi R. Romero Sifuentes


Fases del Desarrollo
Definimos el Plan de Aplicacin.
Definimos el diseo de la data.
Definimos el look and field de la aplicacin.
Testeo.
Vista General

Evento PeopleCode en un campo de un


Registro.

Acceso al cdigo con


doble clic
Acceso desde la Definicin del Registro
Estar en negrita si posse algn evento PeopleCode.
Boton derecho View PoeplCode.
Acceso desde la Definicin del Registro
Desde la barra de botones:
El aspa indica que campos en que eventos existe PeopleCode.
- FDe: FieldDefault - SEd: SaveEdit
- FEd: FieldEdit - SPr: SavePreChange
- FCh: FieldChange - SPo: SavePostChange
- FFo: FieldFormula - SrI: SearchInit
- RIn: RowInit - SrS: SearchSave
- RIs: RowInsert - Wrk: WorkFlow
- RDe: RowDelete - PPr: PrePop
- RSe: RowSelect
Acceso desde la Definicin del Componente
1. A eventos de Registros del Componente.
2. A eventos de Campos de Registros del Componente.

2
Sentencias, Variables, Operadores, Funciones
Comentarios
REM Esto es un ejemplo de comentario en PeopleCode;
/* ----- Logic for Compensation Change ----- */
/* Recalculate compensation change for next row. */
calc_next_compchg(&OLDDT, EFFSEQ, 0);
/* Recalculate compensation change for current row and next row. Next row is
based on new value of EFFDT. */
<* Comentario extenso *>

Operador de Concatenacin
Error ("This course starts on " | PSU_CRS_SESSN.START_DATE | " and ends on
" | PSU_CRS_SESSN.END_DATE | ". Please make the start date earlier than the
end date.");

Sentencias Condicionales
If condition Then
[statement_list_1]
Else
[statement_list_2]]
End-if;

Sentencias Evaluacin
evaluate &USE_FREQUENCY
when = "never"
PROD_USE_FREQ = 0;
Break;
when = "sometimes"
PROD_USE_FREQ = 1;
Break;
when = "frequently"
PROD_USE_FREQ = 2;
Break;
when-other
Error "Unexpected value assigned to &USE_FREQUENCY."
end-evaluate;

Sentencias Repetitivas
For count = expression1 to expression2
[Step i];
statement_list
End-for;

Repeat
statement_list
Until logical_expression;

While logical_expression
statement_list
End-while;
Tipos de Variables
Global, vlida para toda la sesin. No se recomienda su uso.
Global String &Mi_Cadena;
Componente, vlida en el componente.
Componente Boolean &Flag;
Local, vlida para el programa PeopleCode.
Local Number &Mi_Numero;

Tipos de Datos
ANY
BOOLEAN
DATE
DATETIME
NUMBER
OBJECT
STRING
TIME
Arrays, el tipo del primer parmetro determina el tipo de arreglo que se
construye.
Local Array of Array of Number &AAN;
Local Array of Number &AN;
&AAN = CreateArray(CreateArray(1, 2), CreateArray(3, 4),5);
&AN = CreateArray(6, &AAN[1]);
Tipos de Variables
Global, vlida para toda la sesin. No se recomienda su uso.
Global String &Mi_Cadena;
Componente, vlida en el componente.
Componente Boolean &Flag;
Local, vlida para el programa PeopleCode.
Local Number &Mi_Numero;

Tipos de Datos
ANY
BOOLEAN
DATE
DATETIME
NUMBER
OBJECT
STRING
TIME
Arrays, el tipo del primer parmetro determina el tipo de arreglo que se
construye.
Local Array of Array of Number &AAN;
Local Array of Number &AN;
&AAN = CreateArray(CreateArray(1, 2), CreateArray(3, 4),5);
&AN = CreateArray(6, &AAN[1]);
Funciones en People, se pueden definir en cualquier programa
peoplecode.
Declare Function SumaValores PeopleCode LVF_CUSTOM.IMPORT_AMT
FieldFormula;
Las funciones se pueden llamar desde cualquier lugar, tambin pueden
retornar valores, sintaxis:
SumaValores()
Se escriben de la siguiente forma:
function SumaValores ()
statment1;
statment2;
statmentn;
return &Total;
End-Function;
Operadores Matematicos
+ Suma
- Resta
* Multiplicacin
/ Divisin

Operadores Lgicos

Operador Descripcin
= equal
!= not equal
<> not equal
< less than
<= less than or equal to
> greater than
>= greater than or equal to
Sentencias SQL en PeopleCode, se utiliza la funcion SQLEXEC para ejecutar
SQL desde un programa PeopleCode pasando una cadena de comandos
SQL, el comando interacta directamente con el servidor de BD. Sintaxis:
DSQLEXEC(UPDATE TABLA1 SET FIELD=VAL WHERE FIELD1=:1 AND
FIELD2=:2,RECORD.FIELD1,RECORD.FIELD2);
Tenemos las siguientes funciones:
Open()
FetchSQL
CreateSQL
GetSQL
StoreSQL
Eventos PeopleCode
SearchInit, es utilizado por los records que estn definidos como records de bsqueda en el
componente, si el record no es definido como tal (record de bsqueda), PS nunca disparar el
evento. Generalmente se usa para setear valores por defectos de las preferencias del usuario.
Ejemplo:
SetSearchEdit(BUSINESS_UNIT);
SetSearchDefault(BUSINESS_UNIT);
SearchSave, es utilizado para validar que todos los campos en la pgina de bsqueda sean
llenados correctamente (ac no se puede especificar que campos son requeridos o no).
Ejemplo:
If None(BUSINESS_UNIT) Then
Error MsgGet(9000, 3, "Business Unit is a required field.");
End-If;
RowInit, corre cada vez que una fila nueva se carga en la pagina. El cdigo se ejecuta para
cada nivel y cada fila de dato. Tambin se ejecuta despus de ejecutar un Select, SelectAll o
ScrollSelect y del evento RowInsert. Ejemplo:
If INSTALLATION.PO = "Y" Then
DERIVED.EDITTABLE13 = "ITM_PURCH_FS";
End-If;
FieldDefault, en este evento se pueden codificar los valores por defecto, generalmente se
usa cuando la lgica para cargar valores por defecto es muy compleja para usarse en la
definicin del record.
If None(ITM_SETID) Then
ITM_SETID = GetSetId("BUSINESS_UNIT", BUSINESS_UNIT, "MASTER_ITEM_TBL", "");
End-If;
FieldChange, este evento se ejecuta bajo 2 circunstancias: cuando el valor del campo
cambia, o cuando un botn (asociado al campo) es presionado. En el primera caso se ejecuta
siempre y cuando el valor real del campo es diferente al original, el usuario debe moverse del
campo o guardar la pgina. En el segundo caso desde un botn se puede ejecutar casi
cualquier cosa, trasladarse a otro componente, cargar data en la misma pgina en base algn
criterio, correr procesos, etc. Ejemplo:
&RQSTAP = CreateProcessRequest();
&RQSTAP.RunControlID = LVF_CBR_VNT_HDR.SF_REGISTER.Value | %OperatorId;
&RQSTAP.ProcessType = "SQR Report";
&RQSTAP.ProcessName = "LVFCJ004";
&RQSTAP.OutDestType = "WINDOW";
&RQSTAP.OutDestFormat = "PDF";
&RQSTAP.Schedule();
FieldEdit, se utilizar mayormente para la validacin de la informacin del campo, se puede
validar utilizando diferentes campos y condiciones, tambin permite ejecutar mensajes Pcode
que no generarn error de ejecucin, para advertir o detener el proceso dentro de la pgina.
Adecuado cuando se desea validaciones que no permitan abandonar el campo sin ejecutarse
un criterio especfico. Cuidado con el problema de bucle que puede presentarse.
FieldFormula, reservado para ubicar las funciones creadas por el desarrollador. Es
evento se ejecuta en todos los eventos por lo que solo se debe colocar definicin
de funciones propias. Ejemplo:
Function update_sched() &CHANGED_SCHED = "N";
UpdateValue(LINE_NBR, &LINE, PO_LINE_SHIP.UNIT_PRC_TOL, &SCHED, &UNIT_PRC_TOL);
RowSelect, utilizado para filtrar datos cargados en un scroll.
RowDelete, este evento se activa cada vez que se realiza al borrar datos de una fila. El
propsito de este evento es evitar borrar data sin un criterio especfico. El manejo de mensjae
es similar a como se realiza en el evento FieldEdit.
RowInsert, se ejecuta cada vez que se insertan filas nuevas , esta data se valida en el evento
RowInsert. Tener en cuenta que el evento RowInit se ejecuta justo despus de un RowInsert.
SaveEdit, cdigo que se utiliza para validar al guardar. Es usado para validacin final. Ac
podemos validar interactuando varios campos. Este evento tambin puede ser utilizado para
incluir las validaciones puestas en el FieldEdit (en caso que no se haya corrido porque no se
produjo un evento FieldChange en el mismo).
SavePreChange, ac se puede actualizar o cambiar los valores de tablas antes que se realice el
commit a la BD.
Caso Prctico
El proceso de desarrollo expuesto ser ilustrado
mediante un caso prctico:
Se desea tener un registro de los empleados de una empresa
(cdigo, nombre, tipo cliente) y sus cuentas bancarias (ID y N
de cuenta, banco, tipo y estado de la cuenta). Asimismo, se
desea tener un registro de los bancos en que los empleados
tienen sus cuentas y un registro de las transacciones realizadas
por los clientes, las cuales incluyen retiros, depsitos,
transferencias entre cuentas.
Desarrollar una aplicacin PeopleSoft que permita el registro de
la informacin mencionada.
Diseo de la Aplicacin
Empleado Cuenta HistoricoCuenta
ID Empleado Unidad Negocio ID Empleado
Tipo Empleado ID Empleado Nro Secuencia
Nombre Nro Secuencia Fecha Efectiva
ID Banco Estado F.E
Tipo Cuenta Nombre Cuenta
Banco Nro Cuenta Descripcion
ID Banco Moneda
Nombre

Transacciones
Unidad Negocio
ID Empleado
Cod. Transaccion
Tipo Operacion
Cuenta Origen
Bco. Origen
Cuenta Destino
Bco. Destino
Monto
Operador
Fecha Operacion
Diseo de la Aplicacin
Diseo de la Aplicacin
Unidad de Negocio: UCIK
Transacciones Bancarias
transacciones
Id. Empleado:
Cod. Trans.:
Saldo:
Tipo Operacion: Monto:
Banco Origen: Banco Destino:
Cuenta Origen: Cuenta Destino:
Comentario:

UCIK_TRANSACTION_TBL
Si la operacion es Deposito, seleccionar la cuenta
Origen
Si la operacion es Transferencia, seleccionar la cuenta
Origen y cuenta destino
Si la operacion es Retiro, seleccionar la cuenta origen

You might also like