Friday, March 29, 2019

Missing images/icons after PeopleTools or PUM upgrade




After we did an upgrade, some of the buttons in the Peoplesoft page aren't showing. For example, the collapse/expand button for grid isn't showing but we are able to click it and still does collapse or expand the grid (hide/unhide the fields inside the group box).

From the page (PIA), using a chrome browser, what we did was to view source (right-click and select View Source). We identified that the image for that collapse/expand button is missing.

Open the application designer and ensure that the image is there. If you can't find the image, you need to copy it from another environment where it is working (PUM image will be the best option). If you confirmed that image is there, then it is just a web caching issue.

When you do view source from PIA or browser, you can see which stylesheet the page used. If you are using PS 9.2, the default stylesheet will be PSSTYLEDEF_TANGERINE, if you are working on PS 9.1, the default will be PSSTYLEDEF_SWAN and if you are working on PS 9.0 or lower or PTools 8.53 and lower, the default is PSSTYLEDEF.

So in this case, we only need to re-build the cache of this stylesheet in the system. One thing you can do to rebuild it is if you modify and save the stylesheet. Open the stylesheet in the Application Designer, click property and just add blank space in the description. We only want to re-saved this stylesheet so that it will re-build the cache.

Once you already saved it, you may now test if buttons are now showing.

If this didn't work, and if you still see that image is still missing when you do View Source even if exists in the app designer, then you need to do the following:

1.      Stop the web server, delete all cache files, and restart the web server.
2.      Stop the application server, delete all cache files, and restart the application server.

Wednesday, March 20, 2019

Peoplesoft Query to Find Records in Component



One of the common request to us, developers, is to identify the tables under a component. This is commonly requested when we need to do Data Mover Script (DMS) for a configuration/set-up page. 

I know we already have the Data Migration Workbench in place but many of us are still using DMS to migrate these set-up/configuration to higher environment (test or Prod).

I've wrote a simple SQL to easily identify which are the tables or records used in a Peoplesoft Component.


SELECT DISTINCT B.RECNAME--A.PNLNAME, B.RECNAME, B.FIELDNAME, B.LBLTEXT, D.RECTYPE 
FROM            PSPNLGROUP A , 
                PSPNLFIELD B , 
                PSRECFIELD C , 
                PSRECDEFN D 
WHERE           (A.PNLNAME = B.PNLNAME 
                 OR A.PNLNAME = B.SUBPNLNAME) 
AND             B.RECNAME = C.RECNAME 
AND             C.RECNAME = D.RECNAME 
AND             PNLGRPNAME = 'JOB_DATA' --COMPONENT NAME 
AND             D.RECTYPE = 0;                 --(0 - SQL Table, 1 - SQL View) 


You can modify this SQL depending on your needs. For example, if you want to see SQL Views from the result, just add RECTYPE = 1. Same as the details you want, like what are the RECORD.FIELD used in a page or component.

Friday, March 15, 2019

Find the Navigation of a Peoplesoft Component or a Process



Here's an SQL that will help you find the navigation path of a component. The parameter needed is the Component Name.

SELECT DISTINCT REVERSE(LTRIM(SYS_CONNECT_BY_PATH (REVERSE(PORTAL_LABEL), ' >- '), ' >- ')) AS NAVIGATION_PATH
FROM   PSPRSMDEFN P 
WHERE  PORTAL_OBJNAME = 'PORTAL_ROOT_OBJECT' 
START WITH PORTAL_URI_SEG2 = 'COMPONENT_NAME' 
CONNECT BY PRIOR PORTAL_PRNTOBJNAME = PORTAL_OBJNAME 
                 AND PORTAL_NAME = PRIOR PORTAL_NAME 
                                         AND PORTAL_REFTYPE = 'F'; 


And if you are looking for the run control page of a specific process (e.g. application engine, SQR, etc.), here's the SQL that you can use. This SQL can accept process name or component name.

SELECT E.PRCSTYPE, 
       E.PRCSNAME, 
       F.DESCR, 
       DECODE(H.PORTAL_LABEL, ' ', '', 
                              '', '', 
                              'Root', 'Root ', 
                              'Root > ' 
                              || H.PORTAL_LABEL) 
       || ' > ' 
       || G.PORTAL_LABEL 
       || ' > ' 
       || C.PORTAL_LABEL 
       || ' > ' 
       || B.PORTAL_LABEL 
       || ' > ' 
       || A.PORTAL_LABEL 
       || ' > ' 
       || D.PORTAL_LABEL, 
       D.DESCR254, 
       E.PNLGRPNAME, 
       D.PORTAL_NAME, 
       D.PORTAL_REFTYPE, 
       D.PORTAL_OBJNAME, 
       F.PRCSTYPE, 
       F.PRCSNAME 
FROM   PSPRSMDEFN D, 
       PS_PRCSDEFNPNL E, 
       PS_PRCSDEFN F, 
       PSPRSMDEFN A, 
       PSPRSMDEFN B, 
       PSPRSMDEFN C, 
       PSPRSMDEFN G, 
       PSPRSMDEFN H 
WHERE  E.PNLGRPNAME = D.PORTAL_URI_SEG2 
       AND E.PRCSTYPE = F.PRCSTYPE 
       AND E.PRCSNAME = F.PRCSNAME 
       AND D.PORTAL_NAME = 'EMPLOYEE' 
       AND D.PORTAL_REFTYPE = 'C' 
       AND E.PNLGRPNAME > ' ' 
       AND A.PORTAL_NAME = 'EMPLOYEE' 
       AND A.PORTAL_OBJNAME = D.PORTAL_PRNTOBJNAME 
       AND B.PORTAL_NAME = 'EMPLOYEE' 
       AND B.PORTAL_OBJNAME = A.PORTAL_PRNTOBJNAME 
       AND C.PORTAL_NAME (+) = 'EMPLOYEE' 
       AND C.PORTAL_OBJNAME(+) = B.PORTAL_PRNTOBJNAME 
       AND G.PORTAL_NAME(+) = 'EMPLOYEE' 
       AND G.PORTAL_OBJNAME(+) = C.PORTAL_PRNTOBJNAME 
       AND H.PORTAL_NAME(+) = 'EMPLOYEE' 
       AND H.PORTAL_OBJNAME(+) = G.PORTAL_PRNTOBJNAME 
       AND E.PRCSNAME = 'PROCESS_NAME' 
       --AND  E.pnlgrpname = 'MCM_CC_PAY_REG' 
ORDER  BY 1, 
          2, 
          4;