<?xml version='1.0' encoding='UTF-8'?><rss xmlns:atom="http://www.w3.org/2005/Atom" xmlns:openSearch="http://a9.com/-/spec/opensearchrss/1.0/" xmlns:blogger="http://schemas.google.com/blogger/2008" xmlns:georss="http://www.georss.org/georss" xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr="http://purl.org/syndication/thread/1.0" version="2.0"><channel><atom:id>tag:blogger.com,1999:blog-7797473351477186751</atom:id><lastBuildDate>Sun, 01 Sep 2024 06:24:16 +0000</lastBuildDate><category>PeopleSoft</category><category>SQL</category><category>Oracle SQL</category><category>Oracle</category><category>System Tables</category><category>Time and Labor</category><category>Oracle System Tables</category><category>Security</category><category>How To</category><category>Rules</category><category>Blogging</category><category>PeopleCode</category><category>Process Scheduler</category><category>Time Admin</category><category>Application Engine</category><category>Component</category><category>Dates</category><category>Excel</category><category>Passwords</category><category>Payroll Interface</category><category>Processes</category><category>SQL Server</category><category>T and L</category><category>A-List</category><category>Age</category><category>Alter Session</category><category>Analyze</category><category>BWZ</category><category>Blogger</category><category>Browsers. Apple</category><category>Citizenship</category><category>Commit</category><category>Database Links</category><category>Eee PC</category><category>Feedburner</category><category>Feeds</category><category>File Layout</category><category>Functions</category><category>Issues</category><category>Load</category><category>Mass Time</category><category>Nationality</category><category>Oracle 11g</category><category>Output Directory</category><category>Override Options</category><category>PPA</category><category>Portal</category><category>Prior Period Access</category><category>Process Monitor</category><category>Prompt Table</category><category>Query Tree</category><category>RSS</category><category>Rapid Entry</category><category>Ratio</category><category>Recurrences</category><category>Report Directory</category><category>Round</category><category>Rounding</category><category>Run-Control</category><category>SQL Plus</category><category>Safari</category><category>Save</category><category>Session</category><category>Setup</category><category>Spooling</category><category>Spyware</category><category>System Tables. Security</category><category>Timeout</category><category>Trace</category><category>Troubleshooting</category><category>Upload</category><category>VBA</category><category>White Paper</category><category>Wordpress</category><category>XLAT</category><category>iGoogle</category><title>Coded Languages</title><description>Your On-Line Repository For All Things Techy</description><link>http://codedlanguages.blogspot.com/</link><managingEditor>noreply@blogger.com (George Ternent)</managingEditor><generator>Blogger</generator><openSearch:totalResults>62</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><item><guid isPermaLink="false">tag:blogger.com,1999:blog-7797473351477186751.post-683556470714026188</guid><pubDate>Tue, 04 Feb 2014 10:11:00 +0000</pubDate><atom:updated>2014-02-04T02:12:25.276-08:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Commit</category><category domain="http://www.blogger.com/atom/ns#">Component</category><category domain="http://www.blogger.com/atom/ns#">PeopleCode</category><category domain="http://www.blogger.com/atom/ns#">PeopleSoft</category><category domain="http://www.blogger.com/atom/ns#">Save</category><title>DoSaveNow() saves and SetReEdit(True) nets the rebound</title><description>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
Recently I had a problem with DoSaveNow() not doing what it said on the tin and actually saving a component. Initially this was worked around by using CommitWork() instead, but ultimately this stopped working as well.&lt;br /&gt;
&lt;br /&gt;
The solution was to use SetReEdit prior to doing the save. e.g.&lt;br /&gt;
&lt;br /&gt;
&lt;pre&gt;SetReEdit(True);
DoSaveNow();
&lt;/pre&gt;
&lt;br /&gt;
Set ReEdit switches re-edit mode on and off. When it is on, definitional edits (such as translate table and prompt table edits), as well as FieldEdit PeopleCode, are run on each editable field in the component when the component is saved.Whey the DoSaveNow failed to save without it and why it succeeded with it, I haven&#39;t got a Scooby&#39;s. But as it sorted out my save issue and stopped me swearing at the screen, I&#39;m no complaining!&lt;br /&gt;
&lt;br /&gt;
It only works.&lt;/div&gt;
</description><link>http://codedlanguages.blogspot.com/2014/02/dosavenow-saves-and-setreedittrue-nets_4.html</link><author>noreply@blogger.com (George Ternent)</author><thr:total>1</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-7797473351477186751.post-6865458191433723232</guid><pubDate>Wed, 23 Oct 2013 14:00:00 +0000</pubDate><atom:updated>2013-10-23T07:01:53.440-07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">PeopleSoft</category><category domain="http://www.blogger.com/atom/ns#">Process Scheduler</category><category domain="http://www.blogger.com/atom/ns#">Processes</category><category domain="http://www.blogger.com/atom/ns#">Recurrences</category><title>Recurrences</title><description>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
To identify the users and processes associate with a particular recurrence in PeopleSoft, you can use the following Query.
&lt;pre&gt;
select distinct MON.RECURNAME,
                MON.OPRID,
                DFN.OPRDEFNDESC,
                MON.PRCSNAME
  from PS_TY_PRCSMON_HIST MON,
       PSOPRDEFN          DFN
 where RECURNAME like &#39;%_0410&#39;
   and MON.OPRID = DFN.OPRID
 order by case
            when MON.RECURNAME = &#39;TY_WEEKLY_MON_0410&#39; then 1
            when MON.RECURNAME = &#39;TY_WEEKLY_TUE_0410&#39; then 2
            when MON.RECURNAME = &#39;TY_WEEKLY_WED_0410&#39; then 3
            when MON.RECURNAME = &#39;TY_WEEKLY_THU_0410&#39; then 4
            when MON.RECURNAME = &#39;TY_WEEKLY_FRI_0410&#39; then 5
            when MON.RECURNAME = &#39;TY_WEEKLY_SAT_0410&#39; then 6
            when MON.RECURNAME = &#39;TY_WEEKLY_SUN_0410&#39; then 7
          end,
          MON.RECURNAME,
          MON.OPRID,
          MON.PRCSNAME
&lt;/pre&gt;
Changing the &#39;like&#39; as required.
&lt;/div&gt;
</description><link>http://codedlanguages.blogspot.com/2013/10/recurrences.html</link><author>noreply@blogger.com (George Ternent)</author><thr:total>1</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-7797473351477186751.post-8474870706709145332</guid><pubDate>Wed, 19 Jun 2013 15:00:00 +0000</pubDate><atom:updated>2013-06-19T08:02:08.194-07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">File Layout</category><category domain="http://www.blogger.com/atom/ns#">Load</category><category domain="http://www.blogger.com/atom/ns#">PeopleSoft</category><category domain="http://www.blogger.com/atom/ns#">Upload</category><title>A Simple File Load</title><description>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
What follows is a simple piece of PeopleCode to upload a flat file into a table in PeopleSoft. &lt;br /&gt;
&lt;pre&gt;Local File &amp;amp;FILE;
Local Record &amp;amp;REC;
Local Rowset &amp;amp;FRS;

&amp;amp;FILE = GetFile(TY_TL_GRPLD_AET.FILENAME, &quot;R&quot;, %FilePath_Absolute);
&amp;amp;REC = CreateRecord(Record.TY_TL_GRPLD);
&amp;amp;SQL = CreateSQL(&quot;%Insert(:1)&quot;);

If Not &amp;amp;FILE.IsOpen Then
   Error (TY_TL_GRPLD_AET.FILENAME | &quot; failed file open&quot;);
Else
   If Not &amp;amp;FILE.SetFileLayout(FileLayout.TY_TL_GRPLD) Then
      Error (&quot;TY_TL_GRPLD: failed SetFilelayout&quot;);
   Else
      &amp;amp;FRS = &amp;amp;FILE.ReadRowset();
      If &amp;amp;FILE.IsError Then
         Error (&quot;Error reading rowset&quot;);
      End-If;
      While &amp;amp;FRS &amp;lt;&amp;gt; Null
         &amp;amp;FRS.GetRow(1).TY_TL_GRPLD.CopyFieldsTo(&amp;amp;REC);
         &amp;amp;SQL.execute(&amp;amp;REC);
         &amp;amp;FRS = &amp;amp;FILE.ReadRowset();
         If &amp;amp;FILE.IsError Then
            Error (&quot;Error reading rowset&quot;);
         End-If;
      End-While;
   End-If;
   &amp;amp;FILE.Close();
End-If;
&lt;/pre&gt;
&lt;br /&gt;
One thing to make sure you do is to set the Qualifier to optional in the File Layout Definition properties. If you fail to do so and don&#39;t encapsulate your variables with your definition qualifier, e.g. double quotes, then the process will fail with a garbage error message along the lines of &quot;cannot insert NULL into&quot;. You have been warned. &lt;/div&gt;
</description><link>http://codedlanguages.blogspot.com/2013/06/a-simple-file-load.html</link><author>noreply@blogger.com (George Ternent)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-7797473351477186751.post-5728932028922653754</guid><pubDate>Wed, 13 Feb 2013 12:11:00 +0000</pubDate><atom:updated>2013-02-13T04:12:37.817-08:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Oracle SQL</category><title>ISNUMBER</title><description>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
If you have a text field that you want to convert to a number that has a non numeric value in it, then the conversion will fail with an invalid number error. What you need is a function that determines if the string is a number, so that you can decide whether to convert or not. Sadly Oracle SQL doesn&#39;t have one.&lt;br /&gt;
&lt;br /&gt;
All is not lost however, with a cunning use of translate you can suss out if a string is a number or not.&lt;br /&gt;
&lt;br /&gt;
Let&#39;s say you wanted to convert JOBCODE in JOB into a number when it is numeric, and zero when it is not. The following SQL will do this for you quite nicely.&lt;br /&gt;
&lt;br /&gt;
&lt;pre&gt;select distinct JOBCODE,
                ( case
                    when translate(JOBCODE, &#39;_0123456789&#39;, &#39;_&#39;) is null then to_number(JOBCODE)
                    else                                                     0
                 end )
  from PS_JOB
&lt;/pre&gt;
&lt;br /&gt;&lt;/div&gt;
</description><link>http://codedlanguages.blogspot.com/2013/02/isnumber.html</link><author>noreply@blogger.com (George Ternent)</author><thr:total>3</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-7797473351477186751.post-7657582811892939035</guid><pubDate>Tue, 05 Feb 2013 12:06:00 +0000</pubDate><atom:updated>2013-02-05T04:06:48.187-08:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Age</category><category domain="http://www.blogger.com/atom/ns#">Dates</category><category domain="http://www.blogger.com/atom/ns#">PeopleSoft</category><category domain="http://www.blogger.com/atom/ns#">SQL</category><title>The Spirit Of The Age</title><description>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
The following SQL can be used to detemine an Employee&#39;s current age based on their birthdate.&lt;br /&gt;
&lt;br /&gt;
&lt;pre&gt;select PER.EMPLID,
       PER.BIRTHDATE,
       case
         when TO_CHAR(PER.BIRTHDATE,&#39;MMDD&#39;) &amp;lt;= TO_CHAR(SYSDATE,&#39;MMDD&#39;)
          then TO_NUMBER(TO_CHAR(SYSDATE,&#39;YYYY&#39;)) - TO_NUMBER(TO_CHAR(PER.BIRTHDATE,&#39;YYYY&#39;))
          else TO_NUMBER(TO_CHAR(SYSDATE,&#39;YYYY&#39;)) - TO_NUMBER(TO_CHAR(PER.BIRTHDATE,&#39;YYYY&#39;)) - 1
       end as AGE
  from PS_PERSONAL_DATA PER
&lt;/pre&gt;
Feel free to replace SYSDATE with whatever date you want to calculate the ages at. That&#39;s the spirit of the age...&lt;/div&gt;
</description><link>http://codedlanguages.blogspot.com/2013/02/the-spirit-of-age.html</link><author>noreply@blogger.com (George Ternent)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-7797473351477186751.post-3036809837716623344</guid><pubDate>Wed, 26 Dec 2012 17:26:00 +0000</pubDate><atom:updated>2012-12-26T10:24:02.658-08:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">PeopleSoft</category><category domain="http://www.blogger.com/atom/ns#">PPA</category><category domain="http://www.blogger.com/atom/ns#">Prior Period Access</category><category domain="http://www.blogger.com/atom/ns#">Rapid Entry</category><title>T&amp;L Prior Period Access (PPA)</title><description>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
I recently had an issue where group leaders couldn&#39;t modify&amp;nbsp;historic sessions, which they couldn&#39;t originally edit due to Christmas shutdown. Bah humbug!&lt;br /&gt;
&lt;br /&gt;
In PeopleSoft the ability to amend old sessions is governed by the members row security class and the T&amp;amp;L Operator Security table TL_OPR_SECURITY.&lt;br /&gt;
&lt;br /&gt;
The following SQL can be used to detemine the row security classes that operators, without unlimited access,&amp;nbsp;have to give them Prior Period Access to specified sessions.&lt;/div&gt;
&lt;pre&gt;select distinct OPD.ROWSECCLASS,
                OPS.PPA_ACCESS,
                OPS.PPA_ALLOW
  from PSROLEUSER_VW      RUSR,
       PSOPRDEFN          OPD,
       PS_TL_OPR_SECURITY OPS
 where RUSR.OPRID     in ( select distinct OPRID
                             from PS_TL_RAPID_HEADER
                            where DESCR like &#39;MF%-12-2012%&#39;)
   and RUSR.OPRID       = OPD.OPRID
   and OPD.ROWSECCLASS  = OPS.ROWSECCLASS
   and OPS.PPA_ALLOW   != 0
&lt;/pre&gt;
&lt;br /&gt;
Just change the &lt;strong&gt;DESCR like&lt;/strong&gt; statement&amp;nbsp;as per the sessions you want to check.&lt;br /&gt;
&lt;br /&gt;
If there aren&#39;t too many permission lists you could manually change them at: -&lt;br /&gt;
&lt;br /&gt;
&lt;u&gt;Home&lt;/u&gt; &amp;gt; &lt;u&gt;Setup HRMS&lt;/u&gt; &amp;gt; &lt;u&gt;Time and Labor Security&lt;/u&gt; &amp;gt; &lt;strong&gt;TL Permission List Security&lt;/strong&gt;&lt;br /&gt;
&lt;br /&gt;
Modifying the &lt;strong&gt;Days Grace Allowed&lt;/strong&gt; as required.&lt;br /&gt;
&lt;br /&gt;
Alternatively you could do so by the back end with SQL along the lines of: -&lt;/div&gt;
&lt;pre&gt;update PS_TL_OPR_SECURITY OPR
   set PPA_ALLOW = 20
 where ROWSECCLASS in ( &#39;DPG542C1&#39;,
                        &#39;DPG723A1&#39;
                        ...
                        &#39;DPE13001&#39;,
                        &#39;DPA130Z1&#39; )
&lt;/pre&gt;
&lt;br /&gt;
With the row security permission lists being the ones you identified&amp;nbsp;with the first SQL.&lt;br /&gt;
In this example I&#39;ve set the allowed days to be 20, if you want to give them unlimited access set it to zero.&lt;br /&gt;
&lt;br /&gt;
Before updating remember to dump out the original values first so you can set them back after the users have finished doing what they need to do with the sessions.&lt;/div&gt;
</description><link>http://codedlanguages.blogspot.com/2012/12/t-prior-period-access-ppa.html</link><author>noreply@blogger.com (George Ternent)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-7797473351477186751.post-1486340593503558854</guid><pubDate>Thu, 29 Nov 2012 15:37:00 +0000</pubDate><atom:updated>2012-11-29T07:38:25.529-08:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Oracle SQL</category><category domain="http://www.blogger.com/atom/ns#">Round</category><category domain="http://www.blogger.com/atom/ns#">Rounding</category><title>Rounding</title><description>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
If you want to round up or down in Oracle use one of the following: -&lt;br /&gt;
&lt;br /&gt;
&lt;pre&gt;select 3.14159,
       ROUND(3.14159,2)       as ROUNDED,
       CEIL(3.14159*100)/100  as ROUNDED_UP,
       FLOOR(3.14159*100)/100 as ROUNDED_DOWN
 from DUAL
&lt;/pre&gt;
&lt;br /&gt;
Replacing 2 in the first example with the number of decimal places you want to round to, and 100 in the other examples with 10 to the power of the&amp;nbsp; number of decimal places you want to round up or down to.&lt;/div&gt;
</description><link>http://codedlanguages.blogspot.com/2012/11/rounding.html</link><author>noreply@blogger.com (George Ternent)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-7797473351477186751.post-1336465443039340308</guid><pubDate>Fri, 10 Aug 2012 13:51:00 +0000</pubDate><atom:updated>2012-08-10T06:52:01.268-07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Application Engine</category><category domain="http://www.blogger.com/atom/ns#">Override Options</category><category domain="http://www.blogger.com/atom/ns#">PeopleSoft</category><category domain="http://www.blogger.com/atom/ns#">Processes</category><category domain="http://www.blogger.com/atom/ns#">Trace</category><title>Reccomended Application Engine Debug Settings</title><description>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
Open the PROCESS and go to the Override Options tab. Set &lt;strong&gt;Parameter List&lt;/strong&gt; to &lt;b&gt;Append&lt;/b&gt; and enter the following for it.&lt;br /&gt;
&lt;br /&gt;
&lt;pre&gt;-TRACE 3 -TOOLSTRACE 3 -TOOLSTRACEPC 2060
&lt;/pre&gt;
&lt;/div&gt;</description><link>http://codedlanguages.blogspot.com/2012/08/reccomended-application-engine-debug.html</link><author>noreply@blogger.com (George Ternent)</author><thr:total>7</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-7797473351477186751.post-7306123104474648264</guid><pubDate>Wed, 27 Jun 2012 08:14:00 +0000</pubDate><atom:updated>2012-06-27T01:14:52.802-07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">PeopleSoft</category><category domain="http://www.blogger.com/atom/ns#">SQL</category><category domain="http://www.blogger.com/atom/ns#">Time Admin</category><category domain="http://www.blogger.com/atom/ns#">Time and Labor</category><title>Finding a Time Admin Instance Number</title><description>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
SQL to find the Time Admin instance number for a particular run.
&lt;pre&gt;
-- -------------------------------------------------------
-- Get the instance number for the Time Admin temp tables
-- prompting for the process instance number.
-- -------------------------------------------------------  
  select &#39;1&#39; as INSTANCE
    from PS_TL_IPT11
   where PROCESS_INSTANCE = :PROCESS_INSTANCE
union
  select &#39;2&#39; as INSTANCE
    from PS_TL_IPT12
   where PROCESS_INSTANCE = :PROCESS_INSTANCE
union
  select &#39;3&#39; as INSTANCE
    from PS_TL_IPT13
   where PROCESS_INSTANCE = :PROCESS_INSTANCE
union
  select &#39;4&#39; as INSTANCE
    from PS_TL_IPT14
   where PROCESS_INSTANCE = :PROCESS_INSTANCE
union
  select &#39;5&#39; as INSTANCE
    from PS_TL_IPT15
   where PROCESS_INSTANCE = :PROCESS_INSTANCE
union
  select &#39;6&#39; as INSTANCE
    from PS_TL_IPT16
   where PROCESS_INSTANCE = :PROCESS_INSTANCE
union
  select &#39;7&#39; as INSTANCE
    from PS_TL_IPT17
   where PROCESS_INSTANCE = :PROCESS_INSTANCE
union
  select &#39;8&#39; as INSTANCE
    from PS_TL_IPT18
   where PROCESS_INSTANCE = :PROCESS_INSTANCE
union
  select &#39;9&#39; as INSTANCE
    from PS_TL_IPT19
   where PROCESS_INSTANCE = :PROCESS_INSTANCE
union
  select &#39;10&#39; as INSTANCE
    from PS_TL_IPT110
   where PROCESS_INSTANCE = :PROCESS_INSTANCE
union
  select &#39;11&#39; as INSTANCE
    from PS_TL_IPT111
   where PROCESS_INSTANCE = :PROCESS_INSTANCE
union
  select &#39;12&#39;
    from PS_TL_IPT112
   where PROCESS_INSTANCE = :PROCESS_INSTANCE
 union
  select &#39;13&#39; as INSTANCE
    from PS_TL_IPT113
   where PROCESS_INSTANCE = :PROCESS_INSTANCE

&lt;/pre&gt;
&lt;br /&gt;&lt;/div&gt;</description><link>http://codedlanguages.blogspot.com/2012/06/finding-time-admin-instance-number.html</link><author>noreply@blogger.com (George Ternent)</author><thr:total>5</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-7797473351477186751.post-6839308702468762967</guid><pubDate>Wed, 27 Jun 2012 07:45:00 +0000</pubDate><atom:updated>2013-06-13T05:15:03.247-07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">PeopleSoft</category><category domain="http://www.blogger.com/atom/ns#">SQL</category><category domain="http://www.blogger.com/atom/ns#">Time Admin</category><category domain="http://www.blogger.com/atom/ns#">Time and Labor</category><title>Batchman</title><description>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
SQL to determine how many members are in each of the Batches for a Time Admin run. The example shown below is for instance 7. Change this number to be the instance of the run you are interested in. &lt;br /&gt;
&lt;pre&gt;select batch_num,
           count(*)
   from PS_TL_TA_BATCH7
 group by BATCH_NUM
 order by BATCH_NUM Asc

&lt;/pre&gt;
Note that you can limit the maximum size of a batch from: -&lt;br /&gt;
&lt;br /&gt;
Home &amp;gt; Setup HRMS &amp;gt; Install &amp;gt; Product and Country Specific &amp;gt; &lt;b&gt;Time and Labor Installation&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
To see which rules are being processed for a particular batch you can use the following SQL: -&lt;br /&gt;
&lt;br /&gt;
&lt;pre&gt;select BATCH_NUM,
       RULE_PGM_ID,
       PRIORITY,
       TL_RULE_ID
  from PS_TL_RULE_MAP7
 where BATCH_NUM = :BATCH_NUM
 order by BATCH_NUM,
          PRIORITY
&lt;/pre&gt;
You can use the following SQL to work out the approximate percentage complete&amp;nbsp;of a&amp;nbsp;Time Admin run.&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;pre&gt;select ROUND( ( ( ( select SUM(BA.END_DT - BA.START_DT)
                      from PS_TL_TA_BATCH7 BA,
                           PS_TL_RULE_MAP7 RM
                    where BA.BATCH_NUM &amp;lt;= :COMPLETED_BATCHES
                      and BA.BATCH_NUM = RM.BATCH_NUM
                  ) /
                  ( select SUM(BA.END_DT - BA.START_DT)
                      from PS_TL_TA_BATCH7 BA,
                           PS_TL_RULE_MAP7 RM
                     where BA.BATCH_NUM = RM.BATCH_NUM
                  ) 
                ) * 100
              ), 2
            ) AS PERCENT_COMPLETE
  from DUAL
&lt;/pre&gt;
&lt;br /&gt;
What it does is mutiplies the number of employees in the completed batches by the number of rules for each, does the same for the total, divides one by the other, multiplies the result by a 100 and bingo! Not perfect but better than a poke in the eye with a stick to help you work out how much time you need to wait.&lt;/div&gt;
</description><link>http://codedlanguages.blogspot.com/2012/06/time-admin-batches.html</link><author>noreply@blogger.com (George Ternent)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-7797473351477186751.post-5139774478677680409</guid><pubDate>Wed, 30 Mar 2011 08:58:00 +0000</pubDate><atom:updated>2011-03-30T02:00:37.444-07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">PeopleSoft</category><category domain="http://www.blogger.com/atom/ns#">System Tables</category><title>Anatomy Of A Query</title><description>The following tables are used to construct a Query in PeopleSoft.&lt;br /&gt;&lt;br /&gt;PSQRYACCLSTAET Query Access List State Record&lt;br /&gt;PSQRYACCLSTRECS Query Access Record List&lt;br /&gt;PSQRYBIND Query Prompt&lt;br /&gt;PSQRYBINDLANG Query Prompt Alternate Lang.&lt;br /&gt;PSQRYCRITERIA Query Criteria&lt;br /&gt;PSQRYDEFN Query Definition&lt;br /&gt;PSQRYDEFNLANG Query Definition Alt. Language&lt;br /&gt;PSQRYDEL Query Definition&lt;br /&gt;PSQRYEXECLOG Query RunTime Log&lt;br /&gt;PSQRYEXPR Query Expression&lt;br /&gt;PSQRYFAVORITES Query Manager Favorites Table&lt;br /&gt;PSQRYFIELD Query Field&lt;br /&gt;PSQRYFIELDLANG Query Field Alternate Language&lt;br /&gt;PSQRYFLAGS Query Global Flags Table&lt;br /&gt;PSQRYRECORD Query Record&lt;br /&gt;PSQRYSELECT Query Select&lt;br /&gt;PSQRYSTATS Query RunTime Statistics</description><link>http://codedlanguages.blogspot.com/2011/03/anatomy-of-query.html</link><author>noreply@blogger.com (George Ternent)</author><thr:total>13</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-7797473351477186751.post-4755662796009904959</guid><pubDate>Tue, 07 Sep 2010 11:40:00 +0000</pubDate><atom:updated>2010-09-07T04:52:50.586-07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Component</category><category domain="http://www.blogger.com/atom/ns#">PeopleSoft</category><category domain="http://www.blogger.com/atom/ns#">Portal</category><title>Finding a component in the Portal</title><description>The following SQL allows you to avoid the usual dog and pony chase when trying to find where a component is located in the PeopleSoft Portal.&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;SELECT --P.PORTAL_NAME,&lt;br /&gt;       --P.PORTAL_REFTYPE,&lt;br /&gt;       --P.PORTAL_OBJNAME,&lt;br /&gt;       A.*, &lt;br /&gt;       P.PORTAL_LABEL,&lt;br /&gt;       R.PATH,&lt;br /&gt;       P.PORTAL_URLTEXT&lt;br /&gt;FROM   &lt;br /&gt;(&lt;br /&gt;SELECT DISTINCT&lt;br /&gt;       U.ROLEUSER  ,&lt;br /&gt;       C.MENUNAME  ,&lt;br /&gt;       C.PNLGRPNAME,&lt;br /&gt;       C.MARKET&lt;br /&gt;FROM   PSROLEUSER  U&lt;br /&gt;JOIN   PSROLECLASS A&lt;br /&gt;ON     A.ROLENAME = U.ROLENAME&lt;br /&gt;JOIN   PSAUTHITEM  B&lt;br /&gt;ON     B.CLASSID = A.CLASSID&lt;br /&gt;JOIN   PSMENUITEM  C&lt;br /&gt;ON     C.MENUNAME = B.MENUNAME&lt;br /&gt;AND    C.BARNAME  = B.BARNAME&lt;br /&gt;AND    C.ITEMNAME = B.BARITEMNAME &lt;br /&gt;) A&lt;br /&gt;JOIN   PSPRSMDEFN P&lt;br /&gt;ON     P.PORTAL_URI_SEG1 = A.MENUNAME&lt;br /&gt;AND    P.PORTAL_URI_SEG2 = A.PNLGRPNAME&lt;br /&gt;AND    P.PORTAL_URI_SEG3 = A.MARKET&lt;br /&gt;JOIN   &lt;br /&gt;(&lt;br /&gt;SELECT CONNECT_BY_ROOT(PORTAL_NAME)    ROOT_NAME,&lt;br /&gt;       CONNECT_BY_ROOT(PORTAL_REFTYPE) ROOT_REFTYPE,&lt;br /&gt;       CONNECT_BY_ROOT(PORTAL_OBJNAME) ROOT_OBJNAME,&lt;br /&gt;       PORTAL_OBJNAME,&lt;br /&gt;       RTRIM(REVERSE(SYS_CONNECT_BY_PATH(REVERSE(PORTAL_LABEL),&#39; &gt; &#39;)),&#39; &gt; &#39;) PATH&lt;br /&gt;FROM   PSPRSMDEFN&lt;br /&gt;CONNECT &lt;br /&gt;BY NOCYCLE PRIOR PORTAL_NAME        = PORTAL_NAME&lt;br /&gt;       AND PRIOR PORTAL_PRNTOBJNAME = PORTAL_OBJNAME&lt;br /&gt;)      R&lt;br /&gt;ON     R.ROOT_NAME    = P.PORTAL_NAME&lt;br /&gt;AND    R.ROOT_REFTYPE = P.PORTAL_REFTYPE&lt;br /&gt;AND    R.ROOT_OBJNAME = P.PORTAL_OBJNAME&lt;br /&gt;WHERE  A.ROLEUSER = &#39;&lt;span style=&quot;font-style:italic;&quot;&gt;username&lt;/span&gt;&#39;&lt;br /&gt;AND    P.PORTAL_NAME     = &#39;EMPLOYEE&#39;&lt;br /&gt;AND    P.PORTAL_REFTYPE  = &#39;C&#39;&lt;br /&gt;AND    R.PORTAL_OBJNAME  = &#39;PORTAL_ROOT_OBJECT&#39;&lt;br /&gt;AND    A.PNLGRPNAME      = &#39;&lt;span style=&quot;font-style:italic;&quot;&gt;component&lt;/span&gt;&#39;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Thanks to Rob for this one.</description><link>http://codedlanguages.blogspot.com/2010/09/finding-component-in-portal.html</link><author>noreply@blogger.com (George Ternent)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-7797473351477186751.post-8021956484211691105</guid><pubDate>Mon, 19 Jul 2010 10:52:00 +0000</pubDate><atom:updated>2010-07-19T03:55:07.605-07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Alter Session</category><category domain="http://www.blogger.com/atom/ns#">Oracle</category><category domain="http://www.blogger.com/atom/ns#">Session</category><title>Oracle Date Display Format</title><description>To change the format that a date is displayed in Oracle use the set NLS_DATE_FORMAT command. For example, if you wanted to show hours minutes and seconds with a date time stamp you could use: -&lt;br /&gt;&lt;br /&gt;alter session set NLS_DATE_FORMAT = &#39;DD-MON-YYYY HH:MI&#39;&lt;br /&gt;&lt;br /&gt;before executing your query.</description><link>http://codedlanguages.blogspot.com/2010/07/oracle-date-display-format.html</link><author>noreply@blogger.com (George Ternent)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-7797473351477186751.post-5066269368382371705</guid><pubDate>Sun, 27 Jun 2010 01:40:00 +0000</pubDate><atom:updated>2010-06-26T18:43:15.722-07:00</atom:updated><title></title><description>&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgRPAtuhYDNIye_k1-w-Ms9UPBfEHAlw3oWMlkESMrnBloOFhNX0PMfW-HOd8X4bnuYAVFkBOHwGHuWOP16RhbUasGfMdyeXiFNmeDppLNxGl4ckl_zYMBSBo1bzGB-pXFscrhx8e0OXLI/s1600/IMG_1049.JPG&quot;&gt;&lt;img style=&quot;display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 216px; height: 288px;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgRPAtuhYDNIye_k1-w-Ms9UPBfEHAlw3oWMlkESMrnBloOFhNX0PMfW-HOd8X4bnuYAVFkBOHwGHuWOP16RhbUasGfMdyeXiFNmeDppLNxGl4ckl_zYMBSBo1bzGB-pXFscrhx8e0OXLI/s200/IMG_1049.JPG&quot; border=&quot;0&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5487262718303660370&quot; /&gt;&lt;/a&gt;&lt;br /&gt;Gentleman Of Verona were amazing tonight. One of the best Belgian bands I&#39;ve heard for years. Come to think of it, one of the best bands, period, I&#39;ve heard in years.&lt;br /&gt;&lt;br /&gt;High octane music delivered with cruise missile precision, by a band who were tight as a kangeroo&#39;s khyber, with a female vocalist who kicked ass bigtime.&lt;br /&gt;&lt;br /&gt;Reminiscent of L7, Hole early Yeah, Yeah, Yeahs and Susie And The Banshees  this is a band to watch out for in the future. Their new album Brutally Honest is out now on CD and, to be brutally honest, it&#39;s bloody brilliant. Their first album is available for download from iTunes and is also of a high quality. If you like good music, buy them!</description><link>http://codedlanguages.blogspot.com/2010/06/gentleman-of-verona-were-amazing.html</link><author>noreply@blogger.com (George Ternent)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgRPAtuhYDNIye_k1-w-Ms9UPBfEHAlw3oWMlkESMrnBloOFhNX0PMfW-HOd8X4bnuYAVFkBOHwGHuWOP16RhbUasGfMdyeXiFNmeDppLNxGl4ckl_zYMBSBo1bzGB-pXFscrhx8e0OXLI/s72-c/IMG_1049.JPG" height="72" width="72"/><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-7797473351477186751.post-2704209062595882644</guid><pubDate>Wed, 09 Jun 2010 08:29:00 +0000</pubDate><atom:updated>2010-06-09T01:35:44.792-07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Oracle SQL</category><category domain="http://www.blogger.com/atom/ns#">Oracle System Tables</category><category domain="http://www.blogger.com/atom/ns#">PeopleSoft</category><category domain="http://www.blogger.com/atom/ns#">SQL</category><category domain="http://www.blogger.com/atom/ns#">System Tables</category><title>Get Table Details</title><description>Sometimes when you&#39;re documenting you need to get a list of fields, fieldnames, types and their length. This little piece of SQL marries an Oracle system table and two PeopleSoft tables to furnish this information.&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;select ATC.COLUMN_ID,&lt;br /&gt;       ATC.COLUMN_NAME,&lt;br /&gt;       LAB.LONGNAME,&lt;br /&gt;       CASE&lt;br /&gt;         WHEN FLD.FIELDTYPE = 0 THEN &#39;Character&#39;&lt;br /&gt;         WHEN FLD.FIELDTYPE = 1 THEN &#39;Long Character&#39;&lt;br /&gt;         WHEN FLD.FIELDTYPE = 2 THEN &#39;Number&#39;&lt;br /&gt;         WHEN FLD.FIELDTYPE = 3 THEN &#39;Signed Number&#39;&lt;br /&gt;         WHEN FLD.FIELDTYPE = 4 THEN &#39;Date&#39;&lt;br /&gt;         WHEN FLD.FIELDTYPE = 5 THEN &#39;Time&#39;&lt;br /&gt;         WHEN FLD.FIELDTYPE = 6 THEN &#39;Date Time&#39;&lt;br /&gt;         WHEN FLD.FIELDTYPE = 8 THEN &#39;Image or Attachment&#39;&lt;br /&gt;         WHEN FLD.FIELDTYPE = 9 THEN &#39;ImageReference&#39;&lt;br /&gt;         ELSE                        &#39;Unknown&#39;&lt;br /&gt;       END as TYPE,&lt;br /&gt;       FLD.LENGTH&lt;br /&gt;  from ALL_TAB_COLUMNS ATC,&lt;br /&gt;       PSDBFLDLABL     LAB,&lt;br /&gt;       PSDBFIELD       FLD&lt;br /&gt; where ATC.TABLE_NAME    = &#39;PS_JOB&#39;&lt;br /&gt;   and ATC.COLUMN_NAME   = LAB.FIELDNAME&lt;br /&gt;   and LAB.DEFAULT_LABEL = 1&lt;br /&gt;   and LAB.FIELDNAME     = FLD.FIELDNAME&lt;br /&gt; order by ATC.COLUMN_ID Asc&lt;br /&gt;&lt;/pre&gt;</description><link>http://codedlanguages.blogspot.com/2010/06/get-table-details.html</link><author>noreply@blogger.com (George Ternent)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-7797473351477186751.post-8834210354876574596</guid><pubDate>Tue, 08 Jun 2010 06:29:00 +0000</pubDate><atom:updated>2010-06-07T23:32:43.406-07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Rules</category><category domain="http://www.blogger.com/atom/ns#">SQL</category><category domain="http://www.blogger.com/atom/ns#">System Tables</category><category domain="http://www.blogger.com/atom/ns#">Time and Labor</category><title>SQL to Find the Rules that SQL contain a Given SQL Object</title><description>&lt;pre&gt;&lt;br /&gt;select TL_RULE_ID&lt;br /&gt; from PS_TL_RULE_STEPS&lt;br /&gt;where SQL_ID = &#39;XXX&#39;&lt;br /&gt;&lt;/pre&gt;</description><link>http://codedlanguages.blogspot.com/2010/06/sql-to-find-rules-that-sql-contain.html</link><author>noreply@blogger.com (George Ternent)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-7797473351477186751.post-641915875969650933</guid><pubDate>Wed, 05 May 2010 11:06:00 +0000</pubDate><atom:updated>2010-05-05T04:17:31.611-07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Oracle System Tables</category><title>Getting Details Of A Table&#39;s Columns</title><description>The following Oracle SQL gets the columns in a table.&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;-- -------------------&lt;br /&gt;-- Get Table&#39;s Columns&lt;br /&gt;-- -------------------&lt;br /&gt;select COLUMN_NAME,&lt;br /&gt;       DATA_TYPE&lt;br /&gt;  from ALL_TAB_COLUMNS&lt;br /&gt; where TABLE_NAME = &#39;PS_TY_TL_SDF_EVT&#39;&lt;br /&gt;&lt;/pre&gt;</description><link>http://codedlanguages.blogspot.com/2010/05/getting-details-of-tables-columns.html</link><author>noreply@blogger.com (George Ternent)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-7797473351477186751.post-6470525771730910700</guid><pubDate>Tue, 13 Apr 2010 14:33:00 +0000</pubDate><atom:updated>2010-04-13T07:43:19.232-07:00</atom:updated><title>Changing PeopleSoft Passwords by the Back End</title><description>If the same password key is used across multiple PeopleSoft environments you can set the password in one account equal to that in another by creating a database link between the two and using the following SQL: -&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;update PSOPRDEFN@HR89XXX OPXXX&lt;br /&gt;   set OPXXX.OPERPSWD = ( select OP.OPERPSWD&lt;br /&gt;                            from PSOPRDEFN OP&lt;br /&gt;                           where OPXXX.OPRID = OP.OPRID&lt;br /&gt;                        ),&lt;br /&gt;       OPXXX.ACCTLOCK = 0,&lt;br /&gt;       OPXXX.LASTPSWDCHANGE = SYSDATE&lt;br /&gt; where OPXXX.OPRID = &#39;USERNAME&#39;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Along with changing the password you also need to set the last password change date, LASTPSWDCHANGE equal to the current date. Otherwise you could change your password, but have it expire on you immediately.&lt;br /&gt;&lt;br /&gt;It also makes sense to reset the account locked flag, ACCTLOCK, in case the account has been locked.</description><link>http://codedlanguages.blogspot.com/2010/04/changing-peoplesoft-passwords-by-back.html</link><author>noreply@blogger.com (George Ternent)</author><thr:total>1</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-7797473351477186751.post-7157357582573889006</guid><pubDate>Tue, 26 Jan 2010 15:27:00 +0000</pubDate><atom:updated>2010-01-28T00:11:37.435-08:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">PeopleSoft</category><category domain="http://www.blogger.com/atom/ns#">Rules</category><category domain="http://www.blogger.com/atom/ns#">T and L</category><category domain="http://www.blogger.com/atom/ns#">Time and Labor</category><title>Last User Exit To Brooklyn</title><description>T&amp;amp;L rules can include PeopleCode steps by making them &lt;span style=&quot;font-weight: bold; font-style: italic;&quot;&gt;User Exit&lt;/span&gt; rules. To create a user exit rule, do the following.&lt;br /&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Open the &lt;span style=&quot;font-weight: bold;&quot;&gt;TL_TA_RULES&lt;/span&gt; application engine and create a new section for your rule. For this section you must check the Access Pulblic check box.&lt;/li&gt;&lt;li&gt; Add your rule steps to this section.&lt;/li&gt;&lt;li&gt;Navigate to Home &gt; Setup HRMS &gt; Product Realted &gt; Time and Labor &gt; Validation Criteria &gt; &lt;span style=&quot;font-weight: bold;&quot;&gt;AE Section Definition&lt;/span&gt; and define your newly created section. The program name is &lt;span style=&quot;font-weight: bold;&quot;&gt;TL_TA_RULES &lt;/span&gt;and theprocess type should be &lt;span style=&quot;font-weight: bold;&quot;&gt;Rule (User Exit)&lt;/span&gt;.&lt;/li&gt;&lt;li&gt;Navigate to Home &gt; Setup HRMS &gt;System Administration &gt; Utilities &gt; Build Time And Labor Rules &gt; &lt;span style=&quot;font-weight: bold;&quot;&gt;Rules&lt;/span&gt; and create a rule definition, checking the &lt;span style=&quot;font-weight: bold;&quot;&gt;User Exit&lt;/span&gt; box and entering the name of the AE section you created earlier.&lt;/li&gt;&lt;li&gt;Add the new rule to any desired rule programs.&lt;/li&gt;&lt;li&gt;In the DMS script you use to migrate your rule you will need to include the table &lt;span style=&quot;font-weight: bold;&quot;&gt;PS_TL_AE_SECTION&lt;/span&gt; which contains user exit section details. The migration project will need to contain your AE Section and any associated steps.&lt;br /&gt;&lt;/li&gt;&lt;/ol&gt;</description><link>http://codedlanguages.blogspot.com/2010/01/last-user-exit-to-brooklyn.html</link><author>noreply@blogger.com (George Ternent)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-7797473351477186751.post-2395710342802410928</guid><pubDate>Mon, 05 Oct 2009 14:15:00 +0000</pubDate><atom:updated>2009-10-05T07:23:18.793-07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">PeopleSoft</category><category domain="http://www.blogger.com/atom/ns#">System Tables</category><title>PeopleSoft Hints</title><description>The PeopleSoft password hints table, &lt;strong&gt;PSUSERATTR&lt;/strong&gt;, is not encrypted, so avoid using any hint that you use elsewhere, such as What is your Mother&#39;s Maiden name?&lt;br /&gt;&lt;br /&gt;If you are forced to use a standard question give a bogus answer not one which will compromise your personal security e.g. &lt;strong&gt;&lt;em&gt;What is your favourite Sport?&lt;/em&gt;&lt;/strong&gt; response &lt;strong&gt;&lt;em&gt;WIBBLE&lt;/em&gt;&lt;/strong&gt;.</description><link>http://codedlanguages.blogspot.com/2009/10/peoplesoft-hints.html</link><author>noreply@blogger.com (George Ternent)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-7797473351477186751.post-2617657597062540522</guid><pubDate>Mon, 24 Aug 2009 06:55:00 +0000</pubDate><atom:updated>2009-08-23T23:57:08.968-07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Oracle SQL</category><title>Getting Oracle Table Information</title><description>The following SQL gets useful information about tables in an Oracle Database, such as the tablespace used.&lt;br /&gt;&lt;br&gt;&lt;br /&gt;select TABLE_NAME,&lt;br /&gt;       OWNER,&lt;br /&gt;       INITIAL_EXTENT,&lt;br /&gt;       PCT_USED,&lt;br /&gt;       NEXT_EXTENT,&lt;br /&gt;       MIN_EXTENTS,&lt;br /&gt;       MAX_EXTENTS,&lt;br /&gt;       PCT_INCREASE,&lt;br /&gt;       TABLESPACE_NAME&lt;br /&gt;  from dba_tables&lt;br /&gt; where TABLE_NAME in ( &#39;PS_TY_TL_RAP_H_HST&#39;,&lt;br /&gt;                       &#39;PS_TY_TL_RAP_T_HST&#39;,&lt;br /&gt;                       &#39;PS_TY_TL_RPT_T_HST&#39;,&lt;br /&gt;                       &#39;PS_TY_TL_PAY_T_HST&#39;,&lt;br /&gt;                       &#39;PS_TY_SCH_AD_D_HST&#39;,&lt;br /&gt;                       &#39;PS_TY_SCH_MN_S_HST&#39;,&lt;br /&gt;                       &#39;PS_TY_TL_TR_CO_HST&#39; )&lt;br /&gt;&lt;/br&gt;</description><link>http://codedlanguages.blogspot.com/2009/08/getting-oracle-table-information.html</link><author>noreply@blogger.com (George Ternent)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-7797473351477186751.post-3643074915240830696</guid><pubDate>Tue, 26 May 2009 14:25:00 +0000</pubDate><atom:updated>2009-05-26T07:30:42.978-07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Mass Time</category><category domain="http://www.blogger.com/atom/ns#">PeopleSoft</category><category domain="http://www.blogger.com/atom/ns#">Run-Control</category><category domain="http://www.blogger.com/atom/ns#">SQL</category><category domain="http://www.blogger.com/atom/ns#">Troubleshooting</category><title>Getting the Mass Time Run Control Parameters</title><description>Getting the mass time run-control parameters is a bit tricky as it has no run-control table as such. Rather there are a number of base tables that are populated by the run page and used to run the process. The following SQL allows you to examine these tables to allow you to extrapolate what was entered.&lt;br /&gt;&lt;br /&gt;Get the process instances of the Mass time process.&lt;br /&gt;&lt;br /&gt;To get at the data you need you require the process instance numbers of the ST_LIB process. This allows you to lookup the other details you need.&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;-- -------------------------------------&lt;br /&gt;-- Get process instances for ST Lib job.&lt;br /&gt;-- -------------------------------------&lt;br /&gt;select PRCS.PRCSINSTANCE,&lt;br /&gt;       PRCS.OPRID,&lt;br /&gt;       PRCS.PRCSJOBNAME,&lt;br /&gt;       PRCS.PRCSNAME,&lt;br /&gt;       PRCS.RUNCNTLID,&lt;br /&gt;       XLAT.XLATLONGNAME,&lt;br /&gt;       to_char(PRCS.BEGINDTTM,&#39;yyyy-mm-dd-hh24.mi.ss&#39;) as Began,&lt;br /&gt;       to_char(PRCS.ENDDTTM,&#39;yyyy-mm-dd-hh24.mi.ss&#39;)   as Ended,&lt;br /&gt;       (((TO_NUMBER(TO_CHAR(PRCS.ENDDTTM, &#39;J&#39;)) - TO_NUMBER(TO_CHAR(PRCS.BEGINDTTM, &#39;J&#39;))) * 86400)+(TO_NUMBER(TO_CHAR(PRCS.ENDDTTM, &#39;SSSSS&#39;)) - TO_NUMBER(TO_CHAR(PRCS.BEGINDTTM, &#39;SSSSS&#39;)))) as DURSEC&lt;br /&gt;  from PSPRCSRQST   PRCS,&lt;br /&gt;       XLATTABLE_VW XLAT&lt;br /&gt;where PRCS.RUNSTATUS    = XLAT.FIELDVALUE&lt;br /&gt;  and PRCS.PRCSNAME     = &#39;TL_ST_LIB&#39;&lt;br /&gt;  and XLAT.FIELDNAME    = &#39;RUNSTATUS&#39;&lt;br /&gt;  and XLAT.EFFDT        = (select max(XLAT1.EFFDT)&lt;br /&gt;                             from XLATTABLE_VW XLAT1&lt;br /&gt;                            where XLAT1.FIELDNAME  = XLAT.FIELDNAME&lt;br /&gt;                              and XLAT1.FIELDVALUE = XLAT.FIELDVALUE&lt;br /&gt;                              and XLAT1.EFFDT &lt;= SYSDATE)&lt;br /&gt;  and XLAT.EFF_STATUS = &#39;A&#39;&lt;br /&gt;  and PRCS.BEGINDTTM  between to_date(&#39;2009-05-19-01.00.00&#39;,&#39;YYYY-MM-DD-HH24.MI.SS&#39;)&lt;br /&gt;                          and to_date(&#39;2009-05-19-23.59.00&#39;,&#39;YYYY-MM-DD-HH24.MI.SS&#39;)&lt;br /&gt;  and PRCS.ENDDTTM is not null&lt;br /&gt;  and (((TO_NUMBER(TO_CHAR(PRCS.ENDDTTM, &#39;J&#39;)) - TO_NUMBER(TO_CHAR(PRCS.BEGINDTTM, &#39;J&#39;))) * 86400)+(TO_NUMBER(TO_CHAR(PRCS.ENDDTTM, &#39;SSSSS&#39;)) - TO_NUMBER(TO_CHAR(PRCS.BEGINDTTM, &#39;SSSSS&#39;)))) &gt; 500&lt;br /&gt;-- order by PRCS.BEGINDTTM Desc&lt;br /&gt;order by DURSEC Desc&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Select Time Reporters&lt;br /&gt;&lt;br /&gt;Next use your newly acquired process instance number to work out what was entered on the Select Time Reporters page.&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;-- -----------------------------------------------------------------------------&lt;br /&gt;-- 1. Select Time Reporters Page&lt;br /&gt;-- -----------------------------------------------------------------------------&lt;br /&gt;-- Note that it is not possible to determine the parameters entered on this page&lt;br /&gt;-- as  the  only  thing  stored  in  PeopleSoft is the employee IDs selected who&lt;br /&gt;-- matched the criteria.&lt;br /&gt;--&lt;br /&gt;-- To  allow an educated guess to be made as to what they were the following SQL&lt;br /&gt;-- dumps  the  mebers  prompt  field  details  out, so if for example you have a &lt;br /&gt;-- number of members returned who have the same group, then it stands a good&lt;br /&gt;-- chance that this group was entered.&lt;br /&gt;-- -----------------------------------------------------------------------------&lt;br /&gt;-- Get Time Reporter(s) who were selected.&lt;br /&gt;-- ------------------------------------------&lt;br /&gt;select GDT.GROUP_ID,&lt;br /&gt;       EDT.EMPLID,&lt;br /&gt;       upper(NAM.LAST_NAME) as LAST_NAME,&lt;br /&gt;       NAM.FIRST_NAME,&lt;br /&gt;       JOB.BUSINESS_UNIT,&lt;br /&gt;       JOB.JOBCODE,&lt;br /&gt;       JOB.DEPTID,&lt;br /&gt;       JOB.TY_LOCAL_ID&lt;br /&gt;  from PS_TL_WRKGRP_TBL WRK,&lt;br /&gt;       PS_TL_EMPL_DATA  EDT,&lt;br /&gt;       PS_TL_MASS_TR    MAS,&lt;br /&gt;       PS_JOB           JOB,&lt;br /&gt;       PS_TL_GROUP_DTL  GDT,&lt;br /&gt;       PS_NAMES         NAM&lt;br /&gt; where WRK.EFFDT            = ( select max(WRK1.EFFDT)&lt;br /&gt;                                  from PS_TL_WRKGRP_TBL WRK1&lt;br /&gt;                                 where WRK.WORKGROUP = WRK1.WORKGROUP&lt;br /&gt;                                   and WRK1.EFFDT   &lt;= SYSDATE )&lt;br /&gt;   and WRK.WORKGROUP        = EDT.WORKGROUP&lt;br /&gt;   and EDT.EFFDT            = ( select max(EDT1.EFFDT)&lt;br /&gt;                                  from PS_TL_EMPL_DATA EDT1&lt;br /&gt;                                 where EDT.EMPLID   = EDT1.EMPLID&lt;br /&gt;                                   and EDT.EMPL_RCD = EDT1.EMPL_RCD&lt;br /&gt;                                   and EDT1.EFFDT  &lt;= SYSDATE )&lt;br /&gt;  and EDT.TIME_RPTG_STATUS   = &#39;A&#39;&lt;br /&gt;  and EDT.EMPLID             = MAS.EMPLID&lt;br /&gt;  and EDT.EMPL_RCD           = MAS.EMPL_RCD&lt;br /&gt;  and MAS.ST_INSTANCE        = ( select PRCS.RUNCNTLID as ST_INSTANCE&lt;br /&gt;                                   from PSPRCSRQST PRCS&lt;br /&gt;                                  where PRCS.PRCSINSTANCE = :PRCSINSTANCE )&lt;br /&gt;  and EDT.EMPLID             = JOB.EMPLID&lt;br /&gt;  and EDT.EMPL_RCD           = JOB.EMPL_RCD&lt;br /&gt;  and JOB.EFFDT              = (select max(JOB1.EFFDT)&lt;br /&gt;                                  from PS_JOB JOB1&lt;br /&gt;                                 where JOB.EMPLID   = JOB1.EMPLID&lt;br /&gt;                                   and JOB.EMPL_RCD = JOB1.EMPL_RCD&lt;br /&gt;                                   and JOB1.EFFDT  &lt;= SYSDATE)&lt;br /&gt;  and JOB.EFFSEQ             = (select max(JOB2.EFFSEQ)&lt;br /&gt;                                  from PS_JOB JOB2&lt;br /&gt;                                 where JOB.EMPLID   = JOB2.EMPLID&lt;br /&gt;                                   and JOB.EMPL_RCD = JOB2.EMPL_RCD&lt;br /&gt;                                   and JOB.EFFDT = JOB2.EFFDT)&lt;br /&gt;  and JOB.EMPLID             = GDT.EMPLID&lt;br /&gt;  and JOB.EMPL_RCD           = GDT.EMPL_RCD&lt;br /&gt;  and GDT.GROUP_ID not like &#39;%ALL&#39;&lt;br /&gt;  and GDT.GROUP_ID not like &#39;%TST&#39;&lt;br /&gt;  and GDT.GROUP_ID not like &#39;MFAL%&#39;&lt;br /&gt;  and GDT.GROUP_ID not like &#39;MFTA%&#39;&lt;br /&gt;  and GDT.GROUP_ID       &lt;&gt; &#39;MFSEE&#39;&lt;br /&gt;  and GDT.EMPLID             = NAM.EMPLID&lt;br /&gt;  and NAM.NAME_TYPE          = &#39;PRI&#39;&lt;br /&gt;  and NAM.EFFDT              = ( select max(NAM1.EFFDT)&lt;br /&gt;                                   from PS_NAMES NAM1&lt;br /&gt;                                  where NAM.EMPLID    = NAM1.EMPLID&lt;br /&gt;                                    and NAM.NAME_TYPE = NAM1.NAME_TYPE&lt;br /&gt;                                    and NAM.EFFDT    &lt;= SYSDATE )&lt;br /&gt;order by GDT.GROUP_ID,&lt;br /&gt;         JOB.DEPTID,&lt;br /&gt;         EDT.EMPLID&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Select Time Reporting Method&lt;br /&gt;&lt;br /&gt;Now get the dates entered and how the time was reported.&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;-- -----------------------------------------------------------------------------&lt;br /&gt;-- 2. Select Time Reporting Method Page&lt;br /&gt;-- -----------------------------------------------------------------------------&lt;br /&gt;-- Get  the  dates  entered, how time was reported and whether Offdays should be&lt;br /&gt;-- included in the schedule.&lt;br /&gt;--&lt;br /&gt;-- If just one date was selected then the End Date will be blank and start date&lt;br /&gt;-- will  correspond to &#39;Date:&#39;. If not then start date will be the &#39;From:&#39; date&lt;br /&gt;-- entered and end date will be the &#39;To:&#39;.&lt;br /&gt;-- ----------------------------------------------------------------------------&lt;br /&gt;select SESS.START_DATE,&lt;br /&gt;       SESS.END_DATE,&lt;br /&gt;       XLAT.XLATLONGNAME as HOW_TO_REPORT_TIME,&lt;br /&gt;       SESS.APPLY_OFFDAY_IND&lt;br /&gt;  from PS_TL_MASS_SESSION SESS,&lt;br /&gt;       XLATTABLE_VW       XLAT&lt;br /&gt; where SESS.ST_INSTANCE      = ( select PRCS.RUNCNTLID as ST_INSTANCE&lt;br /&gt;                                   from PSPRCSRQST PRCS&lt;br /&gt;                                  where PRCS.PRCSINSTANCE = :PRCSINSTANCE )&lt;br /&gt;   and SESS.MASS_USER_ACTION = XLAT.FIELDVALUE&lt;br /&gt;   and XLAT.FIELDNAME        = &#39;MASS_USER_ACTION&#39;&lt;br /&gt;   and XLAT.EFFDT            = (select max(XLAT1.EFFDT)&lt;br /&gt;                                  from XLATTABLE_VW XLAT1&lt;br /&gt;                                  where XLAT1.FIELDNAME  = XLAT.FIELDNAME&lt;br /&gt;                                    and XLAT1.FIELDVALUE = XLAT.FIELDVALUE&lt;br /&gt;                                    and XLAT1.EFFDT &lt;= SYSDATE)&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;And finally get the TRC details and Use Profile entered.&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;-- -----------------------------------------------------------------------------&lt;br /&gt;-- 3. Report Time Page&lt;br /&gt;-- -----------------------------------------------------------------------------&lt;br /&gt;&lt;br /&gt;-- -----------------&lt;br /&gt;-- 3.1 Get Taskgroup&lt;br /&gt;-- -----------------&lt;br /&gt;select MASS.TASKGROUP&lt;br /&gt;  from PS_TL_MASS_SESSION MASS&lt;br /&gt;where MASS.ST_INSTANCE = ( select PRCS.RUNCNTLID as ST_INSTANCE&lt;br /&gt;                             from PSPRCSRQST PRCS&lt;br /&gt;                            where PRCS.PRCSINSTANCE = :PRCSINSTANCE )&lt;br /&gt;&lt;br /&gt;-- --------------------------------------------------------------&lt;br /&gt;-- 3.2 Get Time Reporting Code details entered and &#39;Use Profile&#39;.&lt;br /&gt;-- --------------------------------------------------------------&lt;br /&gt;select MT.TRC,&lt;br /&gt;       MT.TL_QUANTITY,&lt;br /&gt;       MT.COUNTRY,&lt;br /&gt;       MT.CURRENCY_CD,&lt;br /&gt;       MT.STATE,&lt;br /&gt;       MT.LOCALITY,&lt;br /&gt;       MT.COMP_RATECD,&lt;br /&gt;       MT.BILLABLE_IND,&lt;br /&gt;       MT.OVERRIDE_RATE,&lt;br /&gt;       XLAT.XLATLONGNAME as PROFILE&lt;br /&gt;  from PS_TL_MASS_TRANS  MT,&lt;br /&gt;       XLATTABLE_VW      XLAT&lt;br /&gt; where MT.ST_INSTANCE       = ( select PRCS.RUNCNTLID as ST_INSTANCE&lt;br /&gt;                                  from PSPRCSRQST PRCS&lt;br /&gt;                                 where PRCS.PRCSINSTANCE = :PRCSINSTANCE )&lt;br /&gt;   and MT.USE_PROFILE_IND   = XLAT.FIELDVALUE&lt;br /&gt;   and XLAT.FIELDNAME       = &#39;USE_PROFILE_IND&#39;&lt;br /&gt;   and XLAT.EFFDT           = (select max(XLAT1.EFFDT)&lt;br /&gt;                                 from XLATTABLE_VW XLAT1&lt;br /&gt;                                where XLAT1.FIELDNAME  = XLAT.FIELDNAME&lt;br /&gt;                                  and XLAT1.FIELDVALUE = XLAT.FIELDVALUE&lt;br /&gt;                                  and XLAT1.EFFDT &lt;= SYSDATE) &lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Now if only PeopleSoft had just used a good old fashioned run control table for this process...</description><link>http://codedlanguages.blogspot.com/2009/05/getting-mass-time-run-control.html</link><author>noreply@blogger.com (George Ternent)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-7797473351477186751.post-8531988198757931097</guid><pubDate>Mon, 25 May 2009 10:27:00 +0000</pubDate><atom:updated>2009-05-25T03:28:42.714-07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Oracle System Tables</category><category domain="http://www.blogger.com/atom/ns#">PeopleSoft</category><category domain="http://www.blogger.com/atom/ns#">SQL</category><title>Listing All PeopleSoft System tables</title><description>All PeopleSoft system tables can be dumped with: -&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;select RECNAME,&lt;br /&gt;       RECDESCR&lt;br /&gt;  from PSRECDEFN&lt;br /&gt; where RECNAME like &#39;PS%&#39;&lt;br /&gt;   and RECDESCR &lt;&gt; &#39; &#39;&lt;br /&gt;&lt;/pre&gt;</description><link>http://codedlanguages.blogspot.com/2009/05/listing-all-peoplesoft-system-tables.html</link><author>noreply@blogger.com (George Ternent)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-7797473351477186751.post-3381472098025224035</guid><pubDate>Mon, 25 May 2009 10:19:00 +0000</pubDate><atom:updated>2009-05-25T03:31:37.806-07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Application Engine</category><category domain="http://www.blogger.com/atom/ns#">PeopleSoft</category><category domain="http://www.blogger.com/atom/ns#">System Tables</category><title>Dumping an Application Engine&#39;s Temp Tables List</title><description>Recently I had an issue to look at that required me to list the temporary tables used by the TL Admin application engine. To do this I used the following SQL: -&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;select *&lt;br /&gt;  from PSAEAPPLTEMPTBL&lt;br /&gt;where AE_APPLID = &#39;TL_TIMEADMIN&#39;&lt;br /&gt;&lt;/pre&gt;</description><link>http://codedlanguages.blogspot.com/2009/05/dumping-application-engines-temp-tables.html</link><author>noreply@blogger.com (George Ternent)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-7797473351477186751.post-2052983317196789740</guid><pubDate>Mon, 02 Mar 2009 15:28:00 +0000</pubDate><atom:updated>2009-03-02T07:44:33.681-08:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">BWZ</category><category domain="http://www.blogger.com/atom/ns#">Excel</category><title>Blankety blank, blankety blank...</title><description>To make a cell blank when zero in Excel you could do so via conditional formatting, setting the font colour to be the same as the background colour when it equals zero.&lt;br /&gt;&lt;br /&gt;This technique is a bit limited however, and hits problems if you need to use other conditional formatting or when the background colour varies from cell to cell.&lt;br /&gt;&lt;br /&gt;Another more flexible method is to use the following formatting string for your cell.&lt;br /&gt;Just go to &lt;strong&gt;Format &gt; Cells &gt; Custom&lt;/strong&gt; and plonk it in to the &lt;strong&gt;Type&lt;/strong&gt; box.&lt;br /&gt;&lt;pre&gt;0;-0;;@&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;The above format doesn&#39;t show a thousands delimiter. To get that in use: -&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;#,##0;-0;;@&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Why Microsoft made this expression so bloody complex I&#39;ll never know. But hey, Microsoft are Microsoft, they&#39;d make the complete works of Shakespeare out of a crisis.&lt;br /&gt;&lt;br /&gt;Have a play with varients of this for other effects.&lt;br /&gt;&lt;br /&gt;Enjoy!</description><link>http://codedlanguages.blogspot.com/2009/03/blankety-blank-blankety-blank.html</link><author>noreply@blogger.com (George Ternent)</author><thr:total>0</thr:total></item></channel></rss>