lunes, 26 de septiembre de 2011

SQL Genera Ruta de Acceso a Menú de Peoplesoft.

Se Crea un SQL que permite generar la Ruta de de acceso en el  menú de PeopleSoft considerando de los siguientes Objetos como filtros:
- Referencia de contenido
- Página
- Componente.

El query, inicialmente se ha realizado para BD ORACLE, pero se pretende diseñarlo para otras Base de Datos, utilizando la misma lógica.

-- Busca  Ruta de la Página dentro del menu PIA mediante filtros de :
--Referencia de Contenido, Páginas y Componente.
-- BD: Oracle
WITH PORTAL_REGISTRY AS
  (SELECT RTRIM(REVERSE(SYS_CONNECT_BY_PATH(REVERSE(CASE B.PORTAL_LABEL WHEN 'Raíz' THEN 'Menú Principal' ELSE  B.PORTAL_LABEL END),    ' >> ')),    ' >> ') RUTA_PIA,
     LEVEL NIVEL
   FROM PSPRSMDEFN A, PSPRSMDEFNLANG B
   WHERE A.PORTAL_NAME = B.PORTAL_NAME
   AND A.PORTAL_REFTYPE= B.PORTAL_REFTYPE
   AND A.PORTAL_OBJNAME = B.PORTAL_OBJNAME
   AND  B.LANGUAGE_CD = 'ESP' -- Idioma
   AND A.PORTAL_NAME = 'EMPLOYEE' -- Portal
  START WITH A.PORTAL_OBJNAME =    
            -- Filtros Búsqueda por : Referencia de Contenido
            -- Si requieres hacer una busqueda por Referencia de Contenido solo Agregar el Nombre ' Rerf _Cont'  y comentar el Sub_quey.
            
           --   Filtros Búsqueda por : Página o Componente
            --Si quieres buscar por página o componente utilizar sub_query.
             (SELECT DISTINCT(AA.PORTAL_OBJNAME)
                FROM PSPRSMDEFN AA, PSPNLGROUP BB
                WHERE  AA.PORTAL_URI_SEG2 = BB.PNLGRPNAME
                AND AA.PORTAL_URI_SEG3 = BB.MARKET
                AND AA.PORTAL_NAME = A.PORTAL_NAME
                --/ * Filtros Búsqueda - Inicio*/
               -- AND BB.PNLGRPNAME = 'USERMAINT'  -- Componente
                AND BB.PNLNAME = 'INV_RECV_HDR' -- Página
                --/* Filtros Búsqueda Fin */
                AND BB. MARKET = 'GBL') -- Mercado   
              
 CONNECT BY PRIOR A.PORTAL_PRNTOBJNAME = A.PORTAL_OBJNAME)
SELECT DISTINCT(RUTA_PIA)
FROM PORTAL_REGISTRY
WHERE NIVEL =
  (SELECT MAX(NIVEL)
   FROM PORTAL_REGISTRY);

Cualquier Observación o comentario que ayude a mejorarlo se agreadese..

No hay comentarios:

Publicar un comentario