Mostrando las entradas con la etiqueta cambiar. Mostrar todas las entradas
Mostrando las entradas con la etiqueta cambiar. Mostrar todas las entradas

viernes, 6 de febrero de 2015

PeopleCode - Manipuar valores de XLAT

Los valores de XLAT que se asocian al campo son definidos como parte de las propiedades del mismo campo, pero que pasa si esos valores son variables? o provienen incluso en ocasiones de tablas diferentes a donde están los valores de XLAT (PSXLATITEM)? Quizá de entrada se pensaría en cambiar el XLAT por un prompt, pero no queremos que el comportamiento sea como de un prompt, sino como un LISTBOX ?

Aquí un código que te ayudará a resolver eso:

/****************************************/

Local Rowset &XLAT, &RS;

&FLD = GetRecord(Record.MI_RECORD_EN_LA_PAGINA).GetField(Field.MI_CAMPO_CON_XLAT);

&FLD.ClearDropDownList();

/* EN LA SIGUIENTE LINEA PODRÍA USARSE CUALQUIER OTRO RECORD, EN ESTE EJEMPLO ESTOY UTILIZANDO LA MISMA TABLA DE XLAT CON CONDICIONES ESPECIFICAS */

&XLAT = CreateRowset(Record.PSXLATITEM);
&XLAT.Fill("WHERE FILL.FIELDNAME = 'MANAGER_LEVEL' AND FILL.EFF_STATUS = 'A' AND FILL.FIELDVALUE <= 5 AND FILL.EFFDT =(SELECT MAX(ED.EFFDT) FROM SYSADM.PSXLATITEM ED WHERE ED.FIELDNAME = FILL.FIELDNAME AND ED.EFF_STATUS = FILL.EFF_STATUS AND ED.EFFDT <= SYSDATE )");

For &i = 1 To &XLAT.ActiveRowCount
 /* es importante destacar que se deben asociar 2 valores: 1 -> el que servirá como clave y 2-> el que lleva la descripción */
   &id = &XLAT(&i).PSXLATITEM.FIELDVALUE.Value;
   &descr = &XLAT(&i).PSXLATITEM.XLATSHORTNAME.Value;
   &FLD.ADDDROPDOWNITEM(&id, &descr);

End-For;

/*****************************************/

Translate