When a process name is known:
SELECT DISTINCT
PRCS.PRCSTYPE,
PRCS.PRCSNAME,
PRCS.DESCR,
PAGE.PNLGRPNAME as Component,
‘Home > ‘ || RTRIM(M.MENUGROUP) || ‘ > ‘ || RTRIM(M.MENULABEL) || ‘ > ‘ || RTRIM(ITEM.BARLABEL) || ‘ > ‘ || ITEM.ITEMLABEL as Location
FROM PSMENUDEFN M,
PSMENUITEM ITEM,
PS_PRCSDEFNPNL PAGE,
PS_PRCSDEFN PRCS
WHERE M.MENUNAME = ITEM.MENUNAME
AND ITEM.PNLGRPNAME = PAGE.PNLGRPNAME
AND PAGE.PRCSTYPE = PRCS.PRCSTYPE
AND PAGE.PRCSNAME = PRCS.PRCSNAME
AND PRCS.PRCSNAME = ‘process-name‘
When a component name is known:
SELECT DISTINCT PRCS.PRCSTYPE , PRCS.PRCSNAME , PRCS.DESCR ,
PAGE.PNLGRPNAME as Component , ‘Home > ‘ || RTRIM(MENU.MENUGROUP) || ‘ > ‘ ||
RTRIM(MENU.MENULABEL) || ‘ > ‘ || RTRIM(ITEM.BARLABEL) || ‘ > ‘ || ITEM.ITEMLABEL as MenuPath
FROM PSMENUDEFN MENU , PSMENUITEM ITEM , PS_PRCSDEFNPNL PAGE , PS_PRCSDEFN PRCS
WHERE MENU.MENUNAME = ITEM.MENUNAMEAND ITEM.PNLGRPNAME = PAGE.PNLGRPNAME
AND PAGE.PRCSTYPE = PRCS.PRCSTYPE
AND PAGE.PRCSNAME = PRCS.PRCSNAME
AND PAGE.PNLGRPNAME = ‘component-name‘
When a record name is known:
SELECT DISTINCT PFLD.RECNAME ,
PFLD.PNLNAME as Page , ‘Home > ‘ || RTRIM(MENU.MENUGROUP) || ‘ > ‘ ||
RTRIM(MENU.MENULABEL) || ‘ > ‘ || RTRIM(ITEM.BARLABEL) || ‘ > ‘ || ITEM.ITEMLABEL as MenuPath
FROM PSMENUDEFN MENU , PSMENUITEM ITEM , PSPNLGROUP COMP , PSPNLFIELD PFLD
WHERE MENU.MENUNAME = ITEM.MENUNAME
AND ITEM.PNLGRPNAME = COMP.PNLGRPNAME
AND COMP.PNLNAME = PFLD.PNLNAME
AND PFLD.RECNAME = ‘record-name‘
When a page name is known:
SELECT DISTINCT COMP.PNLNAME as Page , ‘Home > ‘ ||
RTRIM(MENU.MENUGROUP) || ‘ > ‘ || RTRIM(MENU.MENULABEL) || ‘ > ‘ ||
RTRIM(ITEM.BARLABEL) || ‘ > ‘ || ITEM.ITEMLABEL as MenuPath
FROM PSMENUDEFN MENU , PSMENUITEM ITEM , PSPNLGROUP COMP
WHERE MENU.MENUNAME = ITEM.MENUNAME
AND ITEM.PNLGRPNAME = COMP.PNLGRPNAME
AND COMP.PNLNAME = ‘page-name‘
Source: http://jmcmahon33.blogspot.com/2007/12/finding-menu-path.html