14 de diciembre de 2012

Oracle eBs: Código para esperar a que termine una solicitud (concurrent) - Oracle eBS apps


Algunas cando realizamos desarrollos Oracle en e-Business Suite veces en nuestros programas necesitamos lanzar alguna solicitud pero es necesario esperar para ver como termina.

Aquí os adjuntamos un código para solucionarlo.

BEGIN
   fnd_file.put_line (fnd_file.output,
                      '*** Call The XXXX Import Program  ***');
   fnd_global.apps_initialize (
      user_id             => fnd_profile.VALUE ('USER_ID'),
      resp_id             => fnd_profile.VALUE ('RESP_ID'),
      resp_appl_id        => fnd_profile.VALUE ('RESP_APPL_ID'),
      security_group_id   => 0);
   fnd_file.put_line (fnd_file.LOG, 'Batch ID:' || ln_group_id);
   ln_req_id :=
      fnd_request.submit_request ('--',              -- Sustituir por el codigo de la aplicacion
                                  '----',---Sustituir por SHORT CODE de nuestro programa
                                  NULL,
                                  SYSDATE,
                                  FALSE,
                                  'BATCH',
                                  ln_group_id);
   COMMIT;

   IF ln_req_id = 0
   THEN
      fnd_file.put_line (
         fnd_file.LOG,
         'Error al ejecutar "' || fnd_message.get || '".');
   ELSE
      fnd_file.put_line (
         fnd_file.LOG,
         'El programa se generó correctamente. Solicitud id :' || ln_req_id);
   END IF;

   IF ln_req_id > 0
   THEN
      LOOP
         lv_req_return_status :=
            fnd_concurrent.wait_for_request (ln_req_id,
                                             60,
                                             0,
                                             lv_req_phase,
                                             lv_req_status,
                                             lv_req_dev_phase,
                                             lv_req_dev_status,
                                             lv_req_message);
         EXIT WHEN UPPER (lv_req_phase) = 'COMPLETED'
                   OR UPPER (lv_req_status) IN
                         ('CANCELLED', 'ERROR', 'TERMINATED');
      END LOOP;

      IF UPPER (lv_req_phase) = 'COMPLETED'
         AND UPPER (lv_req_status) = 'ERROR'
      THEN
         fnd_file.put_line (
            fnd_file.LOG,
            'El programa termino con error. Ver el log para el request_id');
         fnd_file.put_line (fnd_file.LOG, SQLERRM);
      ELSIF UPPER (lv_req_phase) = 'COMPLETED'
            AND UPPER (lv_req_status) = 'NORMAL'
      THEN
         Fnd_File.PUT_LINE (
            Fnd_File.LOG,
            'El programa terminó correctamente. Id de la solicitud: '
            || ln_req_id);
      ELSE
         Fnd_File.PUT_LINE (
            Fnd_File.LOG,
            'Error en el programa ');
         Fnd_File.PUT_LINE (Fnd_File.LOG, SQLERRM);
      END IF;
   END IF;
EXCEPTION
   WHEN OTHERS
   THEN
      fnd_file.put_line (
         fnd_file.LOG,
         'WHEN OTHERS ERROR: '
         || SQLERRM);
END;


13 de diciembre de 2012

Conector QlikView - Oracle e-Business Suite apps

Como saben los desarrolladores de QlikView, el proceso de extracción de datos es uno de los que lleva más tiempo a la hora de crear nuestros cuadros de mando en QlikView.

El modelo de datos de la eBS requiere de conocimiento para la extraccion ya que es un modelo complejo.

Cualquier necesidad de ayuda en la ETL de datos para QlikView puede ser solucionado rápidamente por el equipo de insiemeIT que tienen una amplía experiencia en desarrollos tanto con QlikView como con Oracle e-Business Suite en sus versiones 11.5.9, 11,5,10, 12.x.

Para más información:  www.insiemeit.es


Tablas de personalizaciones de forms - Forms personalizations

Estas son algunas tablas que contienen los datos de nuestras personalizaciones de Oracle apps.
En esta primera es donde nos muestra la función asociada a la personalizacion
FND_FORM_CUSTOM_RULES

Esto es válido cuando nuestro proyecto tiene demasiadas pantallas personalizadas y es difícil de controlar pases a producción,....


FND_FORM_CUSTOM_SCOPES
FND_FORM_CUSTOM_ACTIONS
FND_FORM_CUSTOM_PARAMS
FND_FORM_CUSTOM_PROP_VALUES
FND_FORM_CUSTOM_PROP_LIST

Aquí disponéis de una select para poder obtener el nombre de la pantalla y el nombre de usuario.



SELECT DISTINCT FNDF.FUNCTION_NAME , FNDF.USER_FUNCTION_NAME , FNDR.CONDITION
 FROM FND_FORM_FUNCTIONS_VL FNDF ,
      FND_FORM_CUSTOM_RULES FNDR    
WHERE FNDF.FUNCTION_NAME = FNDR.FUNCTION_NAME
ORDER BY 1 ASC

www.insiemeit.es