martes, 30 de septiembre de 2014

Cancelando Facturas

Se puede cancelar facturas pendientes de pago, facturas aprobadas, o una factura aprobada que no tiene ningún pagos asociado. Si una factura tiene una retención que impide la contabilización, debe liberar la retención antes de cancelar la factura. No se puede cancelar una factura que ha sido seleccionado para un lote de pagos. Al cancelar una factura cancelada no aparece en los reportes de Cuentas por Pagar.

Cuando Payables cancela una factura, se establece el importe de la factura a cero, estableciendo todos los pagos programados a cero, e invierte todas las distribuciones de factura. Igualmente no asocia  ningún Orden de Compra. Para reconocer si la factura esta cancelada, el modulo actualiza el estado de la factura a Cancelado. 

Cancelando una factura
Para cancelar una factura Ubicarse en la pantalla de facturas  y  encontrar una factura  que desea cancelar.




Luego ir al botón Procesos y seleccionar la opción  Cancelar Facturas




Confirmamos la cancelación y guardamos. Al cancelar la factura el estado cambia a cancelado y el importe a cero.


Restricciones al cancelar facturas
Facturas aplicadas por Anticipos: No se puede cancelar una factura el cual esta aplicado por un anticipo. Primero debe revertir los pagos del Anticipo. 

Factura que esta asociada en forma permanente cerrado con una Orden de Compra: No se  puede cancelar una factura que se le ha asignado a una orden de compra de forma Permanente Cerrado. 

Pagos de Anticipo: No puede cancelar un Anticipo el cual se le  ha aplicado a una factura. Primero se debe desaplicar cualquier Anticipo y anular el pago del Anticipo. Con ello ya puede cancelar el documento.

lunes, 29 de septiembre de 2014

Perfiles

Un Perfil (Profile) es un conjunto de opciones variables que afectan a la forma en que su aplicación de EBS se ejecuta. El administrador del sistema puede configurar los perfiles de usuario en los diferentes niveles: 


Sucursal: Estos ajustes se aplican a todos los usuarios a una sucursal. 
Aplicación: Estos ajustes se aplican a todos los usuarios de cualquier responsabilidad asociada a una aplicación como por ejemplo  Payables. 
Responsabilidad:  Estos ajustes se aplican a todos los usuarios con acceso a cierta responsabilidad. 
Usuario: Estos ajustes se aplican a un usuario individual, identificados por su nombre de usuario de la aplicación.
Organización: Estos ajustes se aplican  a una unidad operativa

Creando Perfil
Para  crear una nueva opción de perfil y asignar un valor a la misma. Navegar a la Responsabilidad Desarrollador de Aplicaciones >> Perfil

Crearemos un perfil llamado XX_CONSULTA , el cual será un perfil de tipo accesos a reportes o transacciones  por responsabilidad. Al Crear Un Perfil Nuevo Debemos Darle Un Nombre y único. Le debemos asociar a una Aplicación normalmente el crea un perfil nuevo debemos darle a aplicación personalizada.  Le crearemos un Nombre de Perfil de Usuario único. Este es el nombre que los usuarios verán en la ventana Valores de Perfil de Sistema, 

Le podemos agregar una descripción y el tipo de Jerarquía de Seguridad. En este caso le daremos como niveles de acceso la Responsabilidad y el Usuario.


Accesos de Usuario
Visible : Determina si los usuarios finales pueden ver y consultar esta opción de perfil en sus perfiles personales. De lo contrario, no pueden consultar o actualizar los valores para esta opción.

Actualizable - Determina si los usuarios finales pueden cambiar el valor de esta opción de perfil usando la ventana de Valores de Perfil. De lo contrario, el administrador del sistema debe definir los valores de esta opción de perfil.

Validación  SQL: Puede escribir una sentencia SQL para mostrar las filas seleccionadas en la lista de valores. Si esta sección se deja en blanco, no habrá ninguna Lista de Valores sino que el usuario puede ingresar  cualquier texto como valor.

Asignar un valor al  perfil:
Ahora debemos escoger un valor al perfil creado. Para ello Navegar a la Responsabilidad Administrador de Sistema >> Perfil >>Sistema. En este caso Marcar una responsabilidad al cual le vamos a dar un valor y en el campo Perfil, escriba el nombre del perfil y dar Encontrar



Ingresar el valor que desea asignar al perfil y guardar.


Pagos Programados


La primera vez que se graba la cabecera  de la factura, Payables automáticamente genera un Pago Programado(Payment Schedules) para cada factura en base a las condiciones y términos de Pago. Payables  utiliza la definición de Términos de pago para calcular la Fecha de Vencimiento, Fecha Plazos, y la cantidad descontada por cada Pago Programado. Por ejemplo, si tiene una factura de pago a 30 días. Cuentas por Pagar calcula la fecha de vencimiento hasta 30 días después de la Fecha Plazos. En caso fuera al Contado calculara la misma fecha en ambos casos.

Opciones de Cuentas por Pagar
Puede asignar Términos de pago por defecto  a un proveedor. Si se habilita la opción de Factura ,Recalcular Pago Programado (Configuración >> Opciones >> Cuentas a Pagar), cuentas por pagar también a calcula los  pagos programados durante la validación de Factura. Este cálculo se basa en los términos de pago disponibles más favorables y las fechas de inicio.


Si se habilita la opción de Pago,  Excluir Impuesto de Calculo Descuento y la factura tiene cambios en la cantidad de impuestos después de guardar la factura, la Validación recalculará automáticamente las  cantidades descontadas y recreará  los pagos programados para reflejar el nuevo importe con el descuento. Puede consultar la factura para ver el nuevo importe den el campo  Importe Desc Restante en la pestaña pagos programados.


Base Fecha Plazos al Proveedor


El campo Fecha  Plazos puede ser por defecto seleccionado en base al proveedor de los cuales tenemos:

Sistema: La fecha del sistema en el día de ingreso de la factura
Recepción de Mercadería: .La fecha en que recibe la mercadería para las facturas que coincidan con las órdenes de compra.
Factura: En base a la  Fecha de la factura.
Recepción de Facturas: Fecha en que recibe una factura.

viernes, 26 de septiembre de 2014

Error Single row subquery returns more than one row en Discoverer Plus


El error ORA-01427 nos indica que al obtener un valor este esta devolviendo mas de uno y no lo puede procesar. Este error es muy común al utilizar funciones o subqueries donde no se especifican bien los filtros y se da el caso de traer mas del valor que se necesita.

En Discoverer Plus cuando un usuario esta consultando Libros de Trabajo y le devuelve este mensaje de error el reporte no se ejecuta mostrando las celdas en blanco. Para revisar y contrarrestar este error podemos ir a Herramientas >>Mostra SQL.



Normalmente un Libro de trabajo contiene varias Hojas de Trabajo que pueden venir de uno o varias Carpetas. Con el Inspector SQL solo basta con copiar la sentencia  y replicar el caso en Base de Datos. Cada consultar de cada carpeta  estará en paréntesis con lo cual podremos localizar  fácilmente el origen del problema.


jueves, 25 de septiembre de 2014

Tablas del Modulo de Inventarios

En el modulo de Inventarios podemos encontrar las siguientes tablas:

MTL_SYSTEM_ITEMS_B 

 Esta tabla contiene las definiciones de los artículos de inventarios, de ingeniería, y de compra. La clave principal de un artículo es el inventory_item_id y su organization_id. 

MTL_ITEM_STATUS 
Esta es la tabla de definición de los códigos de estado de articulos. El código de estado es un atributo principal de un articulo. Indica el estado de un artiuclo, es decir, Activo, Espera, Obsoleto. 

MTL_UNITS_OF_MEASURE_TL 
Esta es la tabla se definen las Unidades de Medida. La columna base_uom_flag indica si la unidad de medida es la unidad de medida principal para la columna uom_class. Oracle Inventory utiliza esta tabla para llevar un registro de las unidades de medida que se utilizan para transaccionar los articulos. 

MTL_ITEM_LOCATIONS 
Esta es la tabla de los Localizadores de cada subinventario. Los atributos asociados que describen al subinventario pertenecen  a cada localizador.

MTL_ITEM_CATEGORIES 
Esta tabla almacena las categorías dentro de un juego de categorías de los artículos. 

MTL_CATEGORIES_B 
Esta  tabla contiene las combinaciones de códigos para las categorías de artículos. 

MTL_CATEGORIES_B, MTL_CATEGORIES_TL
Estas tablas contiene información  de  las Categorías.


MTL_CATEGORY_SETS_B 
Contiene la definición de los Juegos de de categorías. 

MTL_DEMAND 
Esta tabla almacena información de la demanda y la información de las reservas disponibles para prometer, planificar y otras funciones de Manufactura.

MTL_SECONDARY_INVENTORIES 
Esta es la tabla que contiene la información de los subinvetarios 

MTL_ONHAND_QUANTITIES 
Esta tabla almacena la cantidad en  mano en base a la ubicación de cada articulo.

MTL_TRANSACTION_TYPES 
Contiene los tipos de transacciones del sistema y los definidos por el usuario. 

MTL_MATERIAL_TRANSACTIONS 
Esta tabla almacena un registro de cada transacción  de material realizado en Inventarios. 

MTL_TRANSACTIONS_ACCOUNTS
Esta tabla almacena las distribuciones de cada transacción de material realizado en Inventarios. 

MTL_ITEM_ATTRIBUTES 
Esta tabla almacena información sobre los atributos de los Articulos. 

MTL_ITEM_CATALOG_GROUPS_B 
Esta es la tabla que almacena las combinaciones de códigos para los grupos de catálogo de cada artículo. 

MTL_ITEM_REVISIONS_B 
Almacena los niveles de revisión de un artículo de inventarios. 

MTL_CUSTOMER_ITEMS 
Almacena información de cada artículo del cliente.

MTL_SYSTEM_ITEMS_INTERFACE 
Tabla temporal que almacena la información de  artículos antes de cargar en Oracle Inventory. 

MTL_TRANSACTIONS_INTERFACE 
Permite registrar transacciones de materiales al Oracle. 

MTL_ITEM_REVISIONS_INTERFACE 
Almacena temporalmente los niveles de revisión de un artículo de inventarios antes de cargar esta información en Oracle Inventory. 

MTL_ITEM_CATEGORIES_INTERFACE 
Esta tabla almacena temporalmente los datos de los juegos  de categorías antes de cargar esta información en Oracle Inventory. 

MTL_INTERFACE_ERRORS 
Almacena los errores que se producen durante el proceso de Importación a  Oracle Inventory. 

MTL_PARAMETERS 
Almacena la información de cada organización definida en Oracle Inventory. 

miércoles, 24 de septiembre de 2014

Parametros de EAM

Cuando se  ha establece una organización para EAM, es necesario configurar los Parámetros de Enterprise Asset Management, que determina los valores predeterminados a nivel de la  organización con las transacciones ingresada en el modulo. En esta pantalla se establece la seguridad de la información, tales como la generación Automática de Números de Activos, Los costos por defecto, Solicitud de trabajo, y la información de los Pedidos de Trabajo.


Pasos para configurar  los parámetros de EAM 
Para configurar ir a una Responsabilidad de EAM >>Configuración >>Parámetros. Para comenzar a trabajar en el modulo de EAM es necesario configurar la pantalla de Parámetros la cual tiene las siguientes regiones:

Numero de Activo por Defecto
Esta Región opcional nos permite generar automáticamente en el  sistema los números de activos dentro de los grupos de activos individuales. Se puede especificar el número de serie que comienza dentro de la ventana Parámetros Organización o en la ventana de Artículos  Principales al definir el Grupos de Activos. Si se define el número de serie a partir del Grupo de activos, esta definición sobrescribirá el número de serie que comienza dentro de los parámetros de la Organización. 

Costo por Defecto
Esta región  representa la información de costo predeterminados para futuros Pedidos de trabajo, Debe seleccionar un Elemento de Costos para indicar la forma de capturar los gastos generales de costos, así como los costes de recursos diversos. Los valores válidos son Equipment, Labor y  Material



Luego debe seleccionar una Categoría de Costo como el valor predeterminado para los departamentos que no tienen una categoría de costos definido. Los costos del Departamento son luego enviados a los Elementos de costos correspondientes. Los valores válidos son de Mantenimiento, Operaciones, Contrato, y cualquier otro valor que puedes haber agregado en el Lookup de Categoría de Costos.


Mantenimiento Preventivo
Esta región permite Implementar la fecha de Inicio Horizonte del mantenimiento preventivo. 

Solicitud Trabajo
En esta región indican si las solicitudes de trabajo se aprueban automáticamente durante la creación al seleccionar Aprob Auto, Si elige la casilla de Conexión extendida, el sistema mantendrá un registro de auditoría de los registros, al definir o actualizar las solicitudes de trabajo. Las demás casillas están por defecto los cuales indican los requisitos para las solicitudes como el Número de Activo Obligatorio o el Activo P/Defecto desde la dirección del empleado.

Pedido de Trabajo por Defecto
En esta región debe seleccionar una Clase Contable de WIP para asegurar que los pedidos de trabajo que se generen en EAM tengan  una estructura de cuenta . Las clase contables disponibles en la lista de valores serán de tipo Mantenimiento. Si una clase contable WIP de tipo de mantenimiento no existe, se puede definir una nueva. 

Opcionalmente, puede ingresar  un Prefijo al pedido de trabajo . Un prefijo permite a su organización identificar las órdenes de trabajo, Ej: PT-001. También puede  seleccionar un Departamento por Defecto. Oracle recomienda que se seleccione un departamento por defecto. Este departamento por defecto se ingresara a los pedidos de trabajo cada vez que se crean para poder liberarlos posteriormente.

Si selecciona la casilla Confirmar Auto Despacho, las fechas en el pedido de trabajo no pueden ser re-programados automáticamente. Puede seleccionar Activar Solicitudes  Emisión de Materiales. Si marca que los artículos sean  facturables tener en cuenta que el artículo necesita ser facturable y la casilla  tipo de facturación necesita ser seleccionado. 

Cuenta por Defecto
Dentro de esta región, debe seleccionar  una cuenta de compensación de mantenimiento. Se  puede crear o cambiar la relación que existe entre los padres de un número de activo y un Reacondicionable. 

martes, 23 de septiembre de 2014

Organizaciones de Inventario


Una Organización de Inventarios(Inventory Organization) es un lugar de  inventario con su propio listado de artículos. Una organización puede ser una empresa, subsidiaria, o un almacén. Esta organización  representa un lugar de fabricación o distribución. Las Organizaciones de inventario se utilizan para dar seguimiento al stock o Cantidad en Mano, de los bienes y de sus ingresos y salidas. Una organización de inventarios es la entidad de nivel más bajo para el acceso de artículos al sistema. 

Sólo una única dirección puede ser asignada a una Organización de inventario. Una organización de inventario se le asigna un juego de libros que determina el plan de cuentas, calendario fiscal, y la moneda base para todas las actividades financieras y de valor agregado que se produzcan dentro de la organización. 

Una ejemplo de Organización es la Organización Maestra o la Maestra de Articulos. En general,  se crea una sola organización inventario y se designa a una organización principal. Los productos que se definen por primera vez en la organización principal pueden habilitarse en las demás organizaciones. 

Tipos de cambio Diario

En oracle puede ingresar diversos Tipos de Cambio Diarios(Daily Rates)  colocando la moneda extranjera, la fecha ,el tipo  conversión y la cantidad de conversión. Cuando se ingresa un asiento en moneda extranjera, General Ledger muestra automáticamente el tipo de cambio basado en la moneda, tipo de Conversión, y la fecha de conversión que se haya ingresado.  Para ingresar tipos de Cambio ir a Responsabilidad de General Ledger >> Divisas >> Tipos de Cambio >> Diario.


Tipos de Cambio
General Ledger  ofrece los siguientes Tipos de Cambio predefinidos: 

Spot: Un tipo de cambio al que se ingresa para realizar la conversión basado en la tasa en una fecha específica. Se aplica a la entrega inmediata de una moneda. 

Corporate: Un tipo de cambio que se define para estandarizar las tipos de cambio para su empresa. Esta tipo es generalmente un tipo de cambio  estándar determinado por la empresa para su uso en toda la organización. 

User: Un tipo de cambio que especifica el usuario al momento de trabajar con una moneda extranjera. 

Puede utilizar estos tipos de cambio predefinidos para  ingresar  tipos de cambio, o puede definir nuevos tipos de cambio adicionales(Ejemplo : Compra). Para agregar otro tipos ir General Ledger >> Divisas >> Tipos de Cambio >> Tipos.


lunes, 22 de septiembre de 2014

Visión General Order Management

El modulo  Order Management  le permite capturar los pedidos de múltiples canales, órdenes, los precios y comprobar la disponibilidad del producto, seguimiento de los envíos y entregas. 






La implementación de  Order Management  implica varias fases, incluyendo la creación de otras aplicaciones integradas, que incluyen Oracle General Ledger, Oracle Receivables, y Oracle Inventory. Algunos pasos de configuración son opcionales, dependiendo de cómo tiene la integración de sus módulos y que funciones se vana usar. Por ejemplo, si su negocio es compatible con envíos directos, también debe configurar Oracle Purchasing.

El flujo del proceso Order to Cash(Proceso del Pedido al Cobro) comienza con la introducción del pedido de un artículo en el sistema. Al crear un pedido, se valida el articulo con el inventario, el precio se calcula para los artículos utilizando el Motor de Precios; la disponibilidad de los artículos se comprueban y se reservan. Una vez que todos los campos requeridos se introducen tanto en la cabecera y las líneas, se puede reservar el pedido.

Cada pedido pasan a un Despacho donde se moverán los artículos del almacén al área de de transición, El siguiente paso es enviar a confirmar, para indicar que los artículos se cargan en el vehículo para su envió. Al ejecutar Confirmar Envió, el sistema actualiza el pedido de Venta. Esta información se transfiere a través de la contabilización Automática en Cuentas por Cobrar para su facturación.

viernes, 19 de septiembre de 2014

Introducción al FNDLOAD


El Generic Loader (FNDLOAD) es un programa concurrente que puede transferir datos de entidades de Oracle Application entre base de datos y archivo de textos. El cargador lee un archivo de configuración para determinar a qué entidad acceder. En palabras sencillas FNDLOAD se utiliza para transferir datos de entidad de un ambiente a otro. Por ejemplo, si desea mover un programa concurrente,menú o juego de valores desarrollados en una instancia de Desarrollo a la instancia de producción puede utilizar este comando.

FNDLOAD funciona de dos modos: descargar o cargar. En el modo de descarga, los datos se descargan de la base de datos a un archivo de texto. En el modo de carga, los datos se cargan desde un archivo de texto en la base de datos. Tanto la descarga y la carga, la estructura de los datos en cuestión es descrito por el archivo de configuración (Archivo lct). El mismo archivo Ldt se utiliza tanto para la carga y descarga.

El ejecutable FNDLOAD se puede encontrar en $FND_TOP/ bin y los archivos Ldt asociados se encuentran en $FND_TOP/admin/import/ o $FND_TOP/patch/115/import de la versión más actual. Recuerde, los parches o actualizaciones de aplicaciones de Oracle pueden ofrecer nuevas versiones del ejecutable FNDLOAD y/o archivos Lct, lo que potencialmente puede cambiar el comportamiento del programa FNDLOAD. Cada ejecución de descarga FNDLOAD creará archivos .ldt y .log 

Dependiendo de la entidad, FNDLOAD utiliza un  diferente archivo de configuración Lct. La siguiente tabla muestra algunas de las entidades más comunes que se pueden descargar  o cargar:

Como Descargar y Cargar archivos Ldt
Supongamos que creamos un programa concurrente en un ambiente de pruebas o desarrollo.
Conectarse  a un ambiente de Unix(Se recomienda usar Putty) , ubicarse en una ruta y ejecutar el siguiente comando para descargar el archivo .ldt 


FNDLOAD apps/apps O Y DOWNLOAD $FND_TOP/patch/115/import/afcpprog.lct XX_PROG_TEST.ldt  PROGRAM APPLICATION_SHORT_NAME="XX_AP" CONCURRENT_PROGRAM_NAME="XX_PROG_TEST"



Se creará el archivo Ldt, ahora mover el archivo al nuevo ambiente(Usar FTP). Conectarse  al Putty  ubicarse en una ruta y ejecutar el siguiente comando para subir el archivo .ldt 


FNDLOAD apps/apps 0 Y UPLOAD $FND_TOP/patch/115/import/afcpprog.lct XX_PROG_TEST.ldt

Comandos DOWNLOAD  y UPLOAD :
A continuación se muestra los comandos de  DOWNLOAD  mas comunes del FNDLOAD:

MENU:
FNDLOAD apps/apps O Y DOWNLOAD $FND_TOP/patch/115/import/afsload.lct  XX_MENU.ldt MENU MENU_NAME="XX_MENU"

FUNCION:
FNDLOAD apps/apps O Y DOWNLOAD $FND_TOP/patch/115/import/afsload.lct
XX_FUNCTION.ldt FUNCTION FUNCTION_NAME="XX_FUNCTION"

FORM:
FNDLOAD apps/apps O Y DOWNLOAD $FND_TOP/patch/115/import/afsload.lct XX_FORM.ldt FORM FORM_NAME="XX_FORM"

PERSONALIZACIÓN:
FNDLOAD apps/apps O Y DOWNLOAD $FND_TOP/patch/115/import/affrmcus.lct
XX_PERSONALIZER.ldt FND_FORM_CUSTOM_RULES function_name="XX_PERSONALIZER"

IMPRESORA:
FNDLOAD apps/apps O Y DOWNLOAD $FND_TOP/patch/115/import/afcppstl.lct
XX_PRINTER.ldt STYLE PRINTER_STYLE_NAME="XX_PRINTER"

CONCURRENTE:
FNDLOAD apps/apps 0 Y DOWNLOAD $FND_TOP/patch/115/import/afcpprog.lct
XX_PROG.ldt  PROGRAM APPLICATION_SHORT_NAME=”XX_AP” CONCURRENT_PROGRAM_NAME=”XX_PROG

LOOKUP:
FNDLOAD apps/apps O Y DOWNLOAD $FND_TOP/patch/115/import/aflvmlu.lct
XX_LOOKUP.ldt FND_LOOKUP_TYPE APPLICATION_SHORT_NAME="XX_FND"
LOOKUP_TYPE="XX_LOOKUP"

RESPONSIBILIDAD:
FNDLOAD apps/apps O Y DOWNLOAD $FND_TOP/admin/import/afscursp.lct
XX_RESP.ldt FND_RESPONSIBILITY RESP_KEY="XX_RESP"

FLEXFIELDS DESCRIPTIVOS:
FNDLOAD apps/apps O Y DOWNLOAD $FND_TOP/patch/115/import/afffload.lct
XX_FLEX.ldt DESC_FLEX DESCRIPTIVE_FLEXFIELD_NAME="XX_FLEX"

JUEGO DE VALORES:
FNDLOAD apps/apps O Y DOWNLOAD $FND_TOP/patch/115/import/afffload.lct
XX_VALUESET.ldt VALUE_SET FLEX_VALUE_SET_NAME="XX_VALUESET"

PERFIL:
FNDLOAD apps/apps O Y DOWNLOAD $FND_TOP/patch/115/import/afscprof.lct
XX_PROFILE.ldt PROFILE PROFILE_NAME="XX_PROFILE"

MENSAJE:
FNDLOAD apps/apps O Y DOWNLOAD $FND_TOP/patch/115/import/afmdmsg.lct
XX_MESSAGE.ldt FND_NEW_MESSAGES MESSAGE_NAME="XX_MESSAGE"

GRUPO SOLICITUD:
FNDLOAD apps/apps O Y DOWNLOAD $FND_TOP/patch/115/import/afcpreqg.lct
XX_REQGROUP.ldt REQUEST_GROUP REQUEST_GROUP_NAME="XX_REQGROUP"

JUEGO SOLICITUD:
FNDLOAD apps/apps O Y DOWNLOAD $FND_TOP/patch/115/import/afcprset.lct
XX_REQSET.ldt REQ_SET APPLICATION_SHORT_NAME="XX_FND"
REQUEST_SET_NAME="XX_REQSET"

DEFINICION DE DATOS y PLANTILLAS:
FNDLOAD apps/apps 0 Y DOWNLOAD $XDO_TOP/patch/115/import/xdotmpl.lct 
XX_DEFDATOS.ldt XDO_DS_DEFINITIONS APPLICATION_SHORT_NAME='XX_FND' DATA_SOURCE_CODE='XX_DEFDATOS'

Para el comando UPLOAD es igual para todos, savo debemos cambiar el archivo .lct y no pasar  ningún parámetro como el siguiente comando:


FNDLOAD apps/apps 0 Y UPLOAD $FND_TOP/patch/115/import/<lct file> XX_FILE.ldt

jueves, 18 de septiembre de 2014

Tipos de Columnas en Report Buider

En Report Builder el modelo de datos se compone de objetos que se utilizan para definir la parte de datos de un informe. Dentro de estos objetos se encuentran las columnas que representan las columnas de la fuente de datos que se seleccionan por la consulta. También podemos definir columnas especiales: Place Holder,Formula y Summary Colummn.




Summary Columns
Un Summary Column realiza un cálculo en los datos de otra columna. Con esta columna puede  crear suma, promedios, recuento, mínimo, máximo, porcentajes, porcentaje de totales. También puede crear una columna de resumen manualmente en la vista de modelo de datos, y utilizar el inspector de propiedades para crear los siguientes sumarios adicionales: primero, último Desviación Estándar, Varianza.




Formula  Columns
Un Formula Column  realiza un cálculo definido por el usuario en los datos de uno o más columna(s), incluidas las columnas Place Holder. Por ejemplo: Element_01 * 0.07 es una fórmula que lleva a cabo un cálculo en una columna, mientras que :SAL + :COMM realiza un cálculo utilizando dos columnas de un registro. Puede crear fórmulas en PL / SQL utilizando el Editor PL / SQL.



Placeholder  Columns
Un PlaceHolder Column se establece como un  tipo de datos o  valor en PL / SQL. Estas columnas son útiles cuando se desea establecer selectivamente el valor de una columna (por ejemplo, cada vez que el enésimo registro es recuperada, o cada vez que un registro contiene un valor específico ,entre otros). Puede establecer el valor de una C olumna PlaceHolder en los siguientes lugares: 

  • En el Trigger Before Report, si la columna PlaceHolder es una columna a  nivel del informe.
  • Dentro de un Formula Column, si la columna  PlaceHolder es una columna a  nivel del informe.
  • Una fórmula dentro de la columna  PlaceHolder o un grupo por debajo de la columna (el valor se establece  una vez para cada registro del grupo).


Bucles

En programación, un Bucle es un tipo de estructura de control que permite repetir una o más sentencias múltiples veces. Todos los bucles se ejecutan mientras se cumpla una determinada condición , mientras esa condición sea verdadera, el bucle seguirá ejecutándose.

En PL/SQL tenemos a nuestra disposición los siguientes  bucles:
  • LOOP
  • WHILE
  • FOR

LOOP
El bucle LOOP, se repite tantas veces como sea necesario hasta que se fuerza su salida con la instrucción EXIT. Las sentencias dentro del bucle se ejecutarán durante un número indefinido de veces. Este tipo de bucle se denomina bucle incondicional.

LOOP
    -- Instrucciones
      IF (expresion) THEN
    -- Instrucciones
    EXIT;
      END IF;
   END LOOP;


WHILE
Un tipo de bucle más común son los bucles condicionales.  El bucle WHILE, se repite mientras  que se cumpla cierta condición.

WHILE (condicion) LOOP
      -- Instrucciones
  END LOOP;

FOR
El bucle FOR, se repite tanta veces como le indiquemos en  las variables de contador. Este contador deberá ser una variable de tipo numérico que sea capaz de contener los valores comprendidos entre limite_inferior y limite_superior, los cuales deberán ser expresiones numéricas, ya sean constantes (1,10…) o funciones (ROUND(max,0), ASCII(‘A’)…) .

FOR contador IN [REVERSE] inicio..final LOOP
       -- Instrucciones
 END LOOP;

En el caso de especificar REVERSE el bucle se recorre en sentido inverso.

LOOPS en 11G
En la versión 11g  podemos cancelar la iteración del loop actual y pasar a la siguiente, sin abortar el loop. Puede usarse simplemente CONTINUE o CONTINUE WHEN. En este último caso podremos evitar el uso de la sentencia IF para controlar la condición de salida de la iteración.

BEGIN
   LOOP
     ...
    CONTINUE WHEN condicion;  --vuelve al comienzo del loop
    -- si condicion=true, esta parte no se ejecuta
    ...
   END LOOP;
 END;

La ventaja de de usar este código  es que cualquier sentencia que se encuentre dentro del bucle entre el CONTINUE y el END LOOP no será ejecutada. Al no validar un caso termina el registro y pasa al siguiente registro del contador. Así facilitamos código y mejoramos el tiempo de lecturas. 

LOOP
  EXIT WHEN condicion;
  i:=i+1;
 
  var1 := getdata(i);
  CONTINUE WHEN NOT var1;

  var2 := convertdata(i);
  CONTINUE WHEN NOT var2;
  ....
  procesoRegistro(i);
 
END LOOP;