<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-2388698495725806936</id><updated>2012-01-25T14:28:41.630-08:00</updated><category term='Grid and Sate Record in PeopleSoft'/><category term='Code to print a image in SQR'/><category term='average and grade'/><category term='PeopleSoft Base Benefits Tables'/><category term='Inserting a New Scroll Row from within the Same Scroll'/><category term='To find all the records in a given component. Below is the query which takes component name as input and the list of all records in that component as output.'/><category term='Reasons why PeopleSoft  does not recomd SQLEXEC()'/><category term='Steps for creating Run Control ID in PeopleSoft'/><category term='select any check box in the Grid  then the remaning check boxes in the same column should hide automatically'/><category term='PEOPLESOFT  HOT KEY&apos;S'/><category term='Domodal component'/><category term='People Code for calucating the student marks'/><category term='domodalcomponent steps'/><category term='PepleCode'/><category term='Auto creation of user profiles'/><category term='Component and Menu in PeopleSoft'/><category term='runcontrol parameters in Application Engine'/><category term='To overwrite search record on component by using peoplecode'/><category term='Sub Page and Secondary Page In PeopleSoft'/><category term='To display the long name from translate table and display it output in SQR'/><category term='Steps to Run the Appilaction Engine Program (Inbound/OutBound) Program through thr Process Scheduler'/><category term='SQR Optimisation Techniques'/><category term='How to delete process definition'/><category term='SQR output and Fonts'/><category term='Inserting the data into 3 levels (0'/><category term='To get the OprID for the Current Session'/><category term='Row Number'/><category term='Fill color in grid Cell'/><category term='2 level rowset code for Language selection'/><category term='PeopleTools Tables'/><category term='Record'/><category term='Running an SQR from within your PeopleCode program'/><category term='process output location in SQR'/><category term='3 levels) into database from flat file using Application Engine'/><category term='HRMS Setups and adding the Benefits to the Employee setuup'/><category term='Page'/><category term='PeopleSoft Query Security Navigations'/><category term='Transfer Exact'/><category term='Application Data Security'/><category term='PeopleSoft Finance Tables'/><category term='SQR Migration Strategies'/><category term='Steps for creating a Sub Record'/><category term='2'/><category term='Set ID and Business Unit'/><category term='Application Engine'/><category term='XML navigations Creating the data Source through PS QUERY (Reporting Tools) in PeopleSoft'/><category term='Month difference PeopleCode'/><category term='People Payroll Tables'/><category term='Peoplesoft Hot Keys'/><category term='Dynamic Views as Prompt Tables'/><category term='For getting the current DAteTime when ever we change or edit any field i'/><category term='GOTO ROW'/><category term='To write Images along with HTML text into a file created in an App Engine in PeopleSoft'/><category term='Creating the User Profiles and assigning the Roles and Permissions In PeopleSoft'/><category term='Difference between Transcation Tables and Control Tables'/><category term='Item name&apos;s to use in Transfer'/><category term='To know the Run Status when running through the Process Scheduler'/><category term='The Structure of PS_HOME'/><category term='Page Start to Display in ADD mode (or) component in ADD mode'/><category term='Date display format on Page'/><category term='Date related calucations using rowsets'/><category term='Complete PeopleSoft Tables'/><category term='Search Process of a component in Update mode'/><category term='Gray out an entire page except one field  using Peplecode'/><category term='Sample People Code for getting the DEPT ID based on the ORG ID'/><category term='how to find out which tables contain a certain SETID value.'/><category term='String to Date conversion (30-dec-2009 to 12/30/2009) in PeopleCode'/><category term='Steps for creating Field'/><category term='1'/><category term='Bar'/><category term='PeopleSoft HR Tables'/><category term='Creating Component Interface in Application Designer and giving permissions to Component Interface in PeopleSoft'/><category term='To know the Menu'/><category term='Date related calucations'/><category term='Stand alone RowSet'/><category term='Component Build Processing or Page build process in Update/Update Displayall mode'/><category term='Steps for creating Secondary page with Push Button'/><category term='Structured Querry Report'/><category term='Scheduling SQR report through the Process Scheduler'/><category term='Process Definition'/><category term='PeopleSoft WorkFlow Navigations'/><category term='Time Clock code in PEopleSoft'/><category term='You are not authorized for this page error in PeopleSoft'/><category term='File operations using DOS commands in SQR'/><category term='Steps to replace DropDownbox in place of Prompt table and Inserting a static Image into a page in PeopleSoft'/><category term='Difference between Writeline and WriteString in AppEngine PeopleCode'/><title type='text'>PeopleSoft  World</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://harshachowdaryworld.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2388698495725806936/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://harshachowdaryworld.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Sri Harsha</name><uri>http://www.blogger.com/profile/07055600374301477821</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://2.bp.blogspot.com/_cv2CfEeLpVU/Sl7x0ilfPHI/AAAAAAAAAgE/e3fgUdRlTv8/S220/tin.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>74</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-2388698495725806936.post-7954281144577824294</id><published>2010-05-19T02:53:00.000-07:00</published><updated>2010-05-19T02:53:04.187-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Page Start to Display in ADD mode (or) component in ADD mode'/><title type='text'>Page Start to Display in ADD mode (or) component in ADD mode</title><content type='html'>When we click on the component portal in menu then (the page with ADD button display) Then the following below PeopleCode Events will fire.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;u&gt;&lt;b&gt;Search Processibg in Add Mode:&lt;/b&gt;&lt;/u&gt; &lt;br /&gt;Record Field&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; FieldDefault&lt;br /&gt;ComponentRecordField&amp;nbsp;&amp;nbsp; FieldDefault&amp;nbsp; &lt;br /&gt;&amp;nbsp;Record Field&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; FieldFormula&amp;nbsp; &lt;br /&gt;Record Field&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; RowInit&amp;nbsp; &lt;br /&gt;Record Field&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; SearchInit&amp;nbsp; &lt;br /&gt;ComponentRecordlevel&amp;nbsp; &amp;nbsp; SearchInit&amp;nbsp; &lt;br /&gt;&lt;b&gt;--&amp;gt;Enter the Employee and click on Add&lt;/b&gt;&lt;br /&gt;Record Field&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; FeildEdit&amp;nbsp;&amp;nbsp; &lt;br /&gt;ComponentRecordField &amp;nbsp; &amp;nbsp; FeildEdit&amp;nbsp;&amp;nbsp; &lt;br /&gt;Record Field&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; FieldChange&amp;nbsp;&amp;nbsp; &lt;br /&gt;ComponentRecordField&amp;nbsp; &amp;nbsp; &amp;nbsp; FieldChange&amp;nbsp;&amp;nbsp; &lt;br /&gt;Record Field&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Field Formula&amp;nbsp;&amp;nbsp; &lt;br /&gt;Record Field&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; SaveEdit&amp;nbsp;&amp;nbsp; &lt;br /&gt;Record Field&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; SearchSave&amp;nbsp; &lt;br /&gt;ComponentRecordlevel&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; SearchSave&amp;nbsp; &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&lt;u&gt;&lt;b&gt;Page Dispaly (or)Component Build Process in ADD Mode:&lt;/b&gt;&lt;/u&gt;&lt;br /&gt;Component Level&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Prebuild&amp;nbsp; &lt;br /&gt;Record Field&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; FieldFormula&amp;nbsp;&amp;nbsp; &lt;br /&gt;Record Field&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; RowInit&amp;nbsp; &lt;br /&gt;ComponentRecord&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; RowInit&amp;nbsp; &lt;br /&gt;Component Level&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; PostBuild&amp;nbsp; &lt;br /&gt;&lt;b&gt;Page Activate fires and displays the page&lt;/b&gt;&amp;nbsp; &lt;b&gt;&lt;br /&gt;&lt;br /&gt;Save Processing:&lt;/b&gt;&lt;br /&gt;Record Field&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; SaveEdit&amp;nbsp; &lt;br /&gt;ComponentRecord&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; SaveEdit&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;Record Field&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; SavePrechange&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;ComponentRecord&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; SavePrechange&amp;nbsp;&amp;nbsp; &lt;br /&gt;ComponentLevel&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; SavePrechange&amp;nbsp; &lt;br /&gt;Record Field&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Workflow&amp;nbsp;&amp;nbsp; &lt;br /&gt;ComponentLevel&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Workflow&amp;nbsp;&amp;nbsp; &lt;br /&gt;Record Field&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; SavePostchange&amp;nbsp;&amp;nbsp; &lt;br /&gt;ComponentRecordlevel&amp;nbsp; SavePostchange&amp;nbsp;&amp;nbsp; &lt;br /&gt;Component Level&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; SavePostchange&amp;nbsp;&amp;nbsp;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2388698495725806936-7954281144577824294?l=harshachowdaryworld.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://harshachowdaryworld.blogspot.com/feeds/7954281144577824294/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2388698495725806936&amp;postID=7954281144577824294' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2388698495725806936/posts/default/7954281144577824294'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2388698495725806936/posts/default/7954281144577824294'/><link rel='alternate' type='text/html' href='http://harshachowdaryworld.blogspot.com/2010/05/page-start-to-display-in-add-mode-or.html' title='Page Start to Display in ADD mode (or) component in ADD mode'/><author><name>Sri Harsha</name><uri>http://www.blogger.com/profile/07055600374301477821</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://2.bp.blogspot.com/_cv2CfEeLpVU/Sl7x0ilfPHI/AAAAAAAAAgE/e3fgUdRlTv8/S220/tin.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2388698495725806936.post-6679474507127943973</id><published>2010-05-19T02:45:00.000-07:00</published><updated>2010-05-19T02:45:05.719-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Search Process of a component in Update mode'/><category scheme='http://www.blogger.com/atom/ns#' term='Component Build Processing or Page build process in Update/Update Displayall mode'/><title type='text'>Search Process of a component in Update mode (UpdateDisplay/UpdateDisplayall) and Component Build Processing or Page build process in Update/Update Displayallmode</title><content type='html'>When we click on the component portal in menu then&amp;nbsp; the following below PeopleCode events will fire&lt;br /&gt;&lt;br /&gt;&lt;u&gt;&lt;b&gt;Search Process&lt;/b&gt;&lt;/u&gt; &lt;br /&gt;Record Field&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; SearchInit &lt;br /&gt;ComponentRecord&amp;nbsp; SearchInit&lt;br /&gt;&lt;br /&gt;&lt;b&gt;--&amp;gt;Click on Search&lt;/b&gt;&lt;br /&gt;Record Field&amp;nbsp;&amp;nbsp;&amp;nbsp; SearchSave&lt;br /&gt;ComponentRecord SearchSave&lt;br /&gt;&lt;br /&gt;&lt;u&gt;&lt;b&gt;Component Build Process or Page Build processing in Updatedisplay/UpdateDisplayall mode&lt;/b&gt;&lt;/u&gt;&lt;br /&gt;&lt;b&gt;--&amp;gt;Select the Employee ID from the list then &lt;/b&gt;&lt;br /&gt;Record Field&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; RowSelect &lt;br /&gt;ComponentRecord&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; RowSelect &lt;br /&gt;Component Level &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; Prebuild &lt;br /&gt;Record Field&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; FieldFormula &lt;br /&gt;Record Field&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; RowInit &lt;br /&gt;ComponentRecord&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; RowInit &lt;br /&gt;Component level &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Postbuild&lt;br /&gt;&lt;b&gt;Page Activate fires and displays the page&lt;/b&gt;&amp;nbsp; &lt;br /&gt;&lt;br /&gt;When we edit the field (Employee ID) then the following below PeopleCode Events will fire&lt;br /&gt;--&amp;gt;Edit the field (Employee ID) and hit on save then the following peoplecode events will fire&lt;br /&gt;Record Field&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; FieldEdit &lt;br /&gt;ComponentRecordField&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; FieldEdit &lt;br /&gt;Record Field&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; FieldChange&lt;br /&gt;ComponentRecordField&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; FieldChange &lt;br /&gt;Record Field&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; FieldFormula &lt;br /&gt;&lt;br /&gt;&lt;b&gt;Save Processing PeopleCode Events:&lt;/b&gt;&lt;br /&gt;Record Field&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; SaveEdit &lt;br /&gt;ComponentRecord&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; SaveEdit&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;Record Field&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; SavePrechange&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;ComponentRecordField&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; SavePrechange &lt;br /&gt;ComponentLevel&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; SavePrechange &lt;br /&gt;Record Field&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Workflow&amp;nbsp; &lt;br /&gt;ComponentLevel&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Workflow&amp;nbsp; &lt;br /&gt;Record Field&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; SavePostchange &lt;br /&gt;ComponentRecordlevel&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; SavePostchange &lt;br /&gt;Component Level&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; SavePostchange&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2388698495725806936-6679474507127943973?l=harshachowdaryworld.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://harshachowdaryworld.blogspot.com/feeds/6679474507127943973/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2388698495725806936&amp;postID=6679474507127943973' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2388698495725806936/posts/default/6679474507127943973'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2388698495725806936/posts/default/6679474507127943973'/><link rel='alternate' type='text/html' href='http://harshachowdaryworld.blogspot.com/2010/05/search-process-of-component-in-update.html' title='Search Process of a component in Update mode (UpdateDisplay/UpdateDisplayall) and Component Build Processing or Page build process in Update/Update Displayallmode'/><author><name>Sri Harsha</name><uri>http://www.blogger.com/profile/07055600374301477821</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://2.bp.blogspot.com/_cv2CfEeLpVU/Sl7x0ilfPHI/AAAAAAAAAgE/e3fgUdRlTv8/S220/tin.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2388698495725806936.post-3890323557623030719</id><published>2010-05-03T05:03:00.000-07:00</published><updated>2010-05-04T22:31:42.317-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Inserting the data into 3 levels (0'/><category scheme='http://www.blogger.com/atom/ns#' term='3 levels) into database from flat file using Application Engine'/><category scheme='http://www.blogger.com/atom/ns#' term='1'/><category scheme='http://www.blogger.com/atom/ns#' term='2'/><title type='text'>Inserting the data into 3 levels (0,1,2,3 levels) into database from flat file using Application Engine</title><content type='html'>Inserting the data into 3 levels (0,1,2,3 levels) into database from flat file using Application Engine Below is the sample code (Ive used 2 fields in all the 3 levels)&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Level0 &lt;/b&gt;-&amp;gt; Organisational ID, Organisational Name&lt;br /&gt;&lt;b&gt;Level1&lt;/b&gt; -&amp;gt; College ID, College Name&lt;br /&gt;&lt;b&gt;Level2 &lt;/b&gt;-&amp;gt; Department ID, Department Name&lt;br /&gt;&lt;b&gt;Level3&lt;/b&gt; -&amp;gt; Employee ID, Employee Name, Age&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Local Record &amp;amp;R0, &amp;amp;R1, &amp;amp;R2, &amp;amp;R3;&lt;br /&gt;&lt;br /&gt;&amp;amp;R0 = CreateRecord(Record.A_ORG_TBL);&lt;br /&gt;&amp;amp;R1 = CreateRecord(Record.A_COL_TBL);&lt;br /&gt;&amp;amp;R2 = CreateRecord(Record.A_DEPT_TBL);&lt;br /&gt;&amp;amp;R3 = CreateRecord(Record.A_EMPL_TBL);&lt;br /&gt;&lt;br /&gt;&amp;amp;myfile = GetFile("C:\temp\harsha.txt", "R", %FilePath_Absolute);&lt;br /&gt;&amp;amp;myfile1 = GetFile("C:\temp\har.txt", "W", "A", %FilePath_Absolute);&lt;br /&gt;&amp;amp;myfile1.writeline("empty array creation");&lt;br /&gt;&amp;amp;myarray = CreateArrayRept("", 0);&lt;br /&gt;&lt;br /&gt;If &amp;amp;myfile.Isopen Then&lt;br /&gt;&amp;nbsp;&amp;nbsp; While &amp;amp;myfile.Readline(&amp;amp;str);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;myfile1.WRITELINE("FILE OPENED");&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;myfile1.WRITELINE("string value is " | &amp;amp;str);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;myarray = Split(&amp;amp;str, ",");&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; SQLExec("SELECT A_ORGID FROM PS_A_ORG_TBL WHERE A_ORGID = :1", &amp;amp;myarray [1], &amp;amp;ORGID);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;myfile1.WRITELINE("array value of orgid is " | &amp;amp;ORGID);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;myfile1.WRITELINE(" A_ORGID VALUE IS " | &amp;amp;ORGID);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; SQLExec("SELECT A_ORGID,A_COLID FROM PS_A_COL_TBL WHERE A_ORGID = :1", &amp;amp;myarray [1], &amp;amp;ORGID1, &amp;amp;COLID1);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; SQLExec("SELECT A_ORGID,A_COLID,A_DEPTID FROM PS_A_DEPT_TBL WHERE A_ORGID = :1", &amp;amp;myarray [1], &amp;amp;ORGID2, &amp;amp;COLID2, &amp;amp;DEPTID);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; SQLExec("SELECT A_ORGID,A_COLID,A_DEPTID FROM PS_A_DEPT_TBL WHERE A_ORGID = :1", &amp;amp;myarray [1], &amp;amp;ORGID2, &amp;amp;COLID2, &amp;amp;DEPTID);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; SQLExec("SELECT A_ORGID,A_COLID,A_DEPTID,A_EMPLID FROM PS_A_EMPL_TBL WHERE A_ORGID = :1", &amp;amp;myarray [1], &amp;amp;ORGID3, &amp;amp;COLID3, &amp;amp;DEPTID3, &amp;amp;EID3);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; If &amp;amp;myarray [1] = &amp;amp;ORGID Then&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;R1.A_ORGID.Value = &amp;amp;myarray [1];&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;R1.A_COLID.Value = &amp;amp;myarray [2];&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;R1.A_COLNAME.Value = &amp;amp;myarray [3];&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;R1.Insert();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;myfile1.WRITELINE("values inserted at level 1 ");&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; rem End-If;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; rem SQLExec("SELECT A_ORGID,A_COLID,A_DEPTID FROM PS_A_DEPT_TBL WHERE A_ORGID = :1", &amp;amp;myarray [1], &amp;amp;ORGID2, &amp;amp;COLID2, &amp;amp;DEPTID);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Else&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;R0.A_ORGID.Value = &amp;amp;myarray [1];&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;R0.A_ORGNAME.Value = &amp;amp;myarray [2];&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;R0.Insert();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;myfile1.WRITELINE("values inserted at level 0 ");&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; End-If;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; If &amp;amp;myarray [1] = &amp;amp;ORGID1 And&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;myarray [2] = &amp;amp;COLID1 Then&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;R2.A_ORGID.Value = &amp;amp;myarray [1];&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;R2.A_COLID.Value = &amp;amp;myarray [2];&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;R2.A_DEPTID.Value = &amp;amp;myarray [3];&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;R2.A_DEPTNAME.Value = &amp;amp;myarray [4];&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;R2.Insert();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;myfile1.WRITELINE("values inserted at level 2 ");&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; End-If;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; If &amp;amp;myarray [1] = &amp;amp;ORGID2 And&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;myarray [2] = &amp;amp;COLID2 And&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;myarray [3] = &amp;amp;DEPTID Then&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;R3.A_ORGID.Value = &amp;amp;myarray [1];&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;R3.A_COLID.Value = &amp;amp;myarray [2];&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;R3.A_DEPTID.Value = &amp;amp;myarray [3];&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;R3.A_EMPLID.Value = &amp;amp;myarray [4];&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;R3.A_EMPNAME.Value = &amp;amp;myarray [5];&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;R3.A_EMPLAGE.Value = &amp;amp;myarray [6];&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;R3.Insert();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;myfile1.WRITELINE("values inserted at level 3 ");&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; End-If;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp; End-While;&lt;br /&gt;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;amp;myfile.Close();&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;amp;myfile1.Close();&lt;br /&gt;End-If;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2388698495725806936-3890323557623030719?l=harshachowdaryworld.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://harshachowdaryworld.blogspot.com/feeds/3890323557623030719/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2388698495725806936&amp;postID=3890323557623030719' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2388698495725806936/posts/default/3890323557623030719'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2388698495725806936/posts/default/3890323557623030719'/><link rel='alternate' type='text/html' href='http://harshachowdaryworld.blogspot.com/2010/05/3-level-rowset-code-to-insert-data-into.html' title='Inserting the data into 3 levels (0,1,2,3 levels) into database from flat file using Application Engine'/><author><name>Sri Harsha</name><uri>http://www.blogger.com/profile/07055600374301477821</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://2.bp.blogspot.com/_cv2CfEeLpVU/Sl7x0ilfPHI/AAAAAAAAAgE/e3fgUdRlTv8/S220/tin.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2388698495725806936.post-66367928243548042</id><published>2010-01-06T01:21:00.000-08:00</published><updated>2010-01-06T01:23:09.747-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='GOTO ROW'/><title type='text'>Steps for creating a GOTO ROW</title><content type='html'>STEPS FOR CREATING GOTO ROW&lt;br /&gt;===========================&lt;br /&gt;1.Create a new Field (TIN1_GOTOROW)&lt;br /&gt;2.Create a new record (TIN1_GOWTO_WRK) and select the radio button Derived/Work.&lt;br /&gt;Write the following below people code in the Field change in the Field level in TIN1_GOWTO_WRK table.&lt;br /&gt;==============================================================================&lt;br /&gt;&amp;tinku = DoModal(Page.TIN1_GTROW_PNL, "Secondary Page ", - 1, - 1);&lt;br /&gt;&lt;br /&gt;If (&amp;tinku = 1) Then&lt;br /&gt;   &amp;rowentered = GetRecord(Record.TIN1_GOWTO_WRK).GetField(Field.TIN1_GOTOROW).Value;&lt;br /&gt;   rem WinMessage("hai", 64);&lt;br /&gt;   &lt;br /&gt;   If All(&amp;rowentered) Then&lt;br /&gt;      &amp;currentrow = GetRowset();&lt;br /&gt;      &lt;br /&gt;      If (1 &lt;= &amp;rowentered And&lt;br /&gt;            &amp;rowentered &lt;= &amp;currentrow.activerowcount) Then&lt;br /&gt;         REM IN THE BAOVE THE HIGHEST VALUE WILL BE PERSENT;&lt;br /&gt;         &amp;reqrow = GetRowset()(&amp;rowentered);&lt;br /&gt;         &amp;field = &amp;reqrow.getrecord(1).getfield(1);&lt;br /&gt;         &amp;field.SetCursorPos(%Page);&lt;br /&gt;      Else&lt;br /&gt;         WinMessage("THE ROW IS WITH IN THE TABLE ", 64);&lt;br /&gt;         &lt;br /&gt;      End-If;&lt;br /&gt;      &lt;br /&gt;   End-If;&lt;br /&gt;End-If;&lt;br /&gt;&lt;br /&gt;=============================================================================&lt;br /&gt;3.Create a new secondary page (TIN1_GTROW_PNL)&lt;br /&gt;4.Drag and drop the WRK record in to the page.&lt;br /&gt;5.Save it.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2388698495725806936-66367928243548042?l=harshachowdaryworld.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://harshachowdaryworld.blogspot.com/feeds/66367928243548042/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2388698495725806936&amp;postID=66367928243548042' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2388698495725806936/posts/default/66367928243548042'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2388698495725806936/posts/default/66367928243548042'/><link rel='alternate' type='text/html' href='http://harshachowdaryworld.blogspot.com/2010/01/steps-for-creating-goto-row.html' title='Steps for creating a GOTO ROW'/><author><name>Sri Harsha</name><uri>http://www.blogger.com/profile/07055600374301477821</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://2.bp.blogspot.com/_cv2CfEeLpVU/Sl7x0ilfPHI/AAAAAAAAAgE/e3fgUdRlTv8/S220/tin.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2388698495725806936.post-728628187828184860</id><published>2010-01-05T22:17:00.000-08:00</published><updated>2010-01-05T22:18:53.580-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Application Data Security'/><title type='text'>Application Data Security</title><content type='html'>Defnition security is a form of data security.We use it to control access to particular rows of data (object definitions) in PeopleTools tables.&lt;br /&gt;&lt;br /&gt;PeopleSoft  also provides other methods to control the application data that a user is allowed to access in the PeopleSoft system. This task is also known as setting data permissions.With application data security, you can set data permissions at the following levels:&lt;br /&gt;&lt;br /&gt;1.Table Level(Querry Security)&lt;br /&gt;2.Row Level (SQL View)&lt;br /&gt;3.Feild Level (People Code)&lt;br /&gt;&lt;br /&gt;Table Level Security:&lt;br /&gt;Table level security is implemented by using Querry security.&lt;br /&gt;We can restrict the permissions to the users in  accessing the tables while running and building the componenets&lt;br /&gt;&lt;br /&gt;We can do this by creating querry acess group in PeopleSoft Tree manager and then assinning the users to those groups with PeopleSoft querry security.&lt;br /&gt;&lt;br /&gt;PeopleSoft Query security is enforced only when usingPeopleSoft Query because it doesn’t control runtime page access to table data.&lt;br /&gt;&lt;br /&gt;Row Level Security:&lt;br /&gt;It can be implementd using SQL view's.&lt;br /&gt;It controls the access to individual rows of data stored within application database tables&lt;br /&gt;It enables the data of a particular user is permitted to access.&lt;br /&gt;&lt;br /&gt;Field security:&lt;br /&gt;Field level can be implemented using People Code.&lt;br /&gt;Field security use people code to restrict access to particular fields or columns within application tables.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2388698495725806936-728628187828184860?l=harshachowdaryworld.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://harshachowdaryworld.blogspot.com/feeds/728628187828184860/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2388698495725806936&amp;postID=728628187828184860' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2388698495725806936/posts/default/728628187828184860'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2388698495725806936/posts/default/728628187828184860'/><link rel='alternate' type='text/html' href='http://harshachowdaryworld.blogspot.com/2010/01/application-data-security.html' title='Application Data Security'/><author><name>Sri Harsha</name><uri>http://www.blogger.com/profile/07055600374301477821</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://2.bp.blogspot.com/_cv2CfEeLpVU/Sl7x0ilfPHI/AAAAAAAAAgE/e3fgUdRlTv8/S220/tin.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2388698495725806936.post-5794209905017729257</id><published>2010-01-05T21:44:00.000-08:00</published><updated>2010-01-05T21:45:43.725-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='domodalcomponent steps'/><title type='text'>domodalcomponent steps</title><content type='html'>Drag and drop the 2 fields STUID,NAME from the work record in all the pages&lt;br /&gt;&lt;br /&gt;1.Create the required fields and place them in  to the record PS_SRI_STUMOD_TBL(*place the Student id and name in to the record*)&lt;br /&gt;2.Create a Derived/Work record with 2 fields (stuid,name from grid) and save it with _WRK.&lt;br /&gt;3.Place a hyperlink/ push button in the grid.In the hyperlink /pushbutton properties select the Destination as PeoplecodeCommand,record name:SRI_STU1_TBL and field name:SRI_STUABC_INFO and select the check button set component changed.&lt;br /&gt;&lt;br /&gt;4.IN component level record field level assign the values to the Derived/Work record.&lt;br /&gt;Local Rowset &amp;RS0, &amp;RS1, &amp;RS2, &amp;RS3;&lt;br /&gt;&amp;RS0 = GetLevel0();&lt;br /&gt;&amp;RS1 = &amp;RS0(1).GetRowset(Scroll.SRI_ORG1_TBL);&lt;br /&gt;For &amp;I = 1 To &amp;RS1.ActiveRowCount&lt;br /&gt;   &amp;RS2 = &amp;RS1(&amp;I).GetRowset(Scroll.SRI_DEPT1_TBL);&lt;br /&gt;   For &amp;J = 1 To &amp;RS2.ActiveRowCount&lt;br /&gt;      &amp;RS3 = &amp;RS2(&amp;J).GetRowset(Scroll.SRI_STU1_TBL);&lt;br /&gt;      For &amp;K = 1 To &amp;RS3.ActiveRowCount;&lt;br /&gt;         &amp;SID = GetRecord(Record.SRI_STU1_TBL).GetField(Field.SRI_STU1_ID).Value;&lt;br /&gt;         &amp;SNAME = GetRecord(Record.SRI_STU1_TBL).GetField(Field.SRI_STU1_NAME).Value;&lt;br /&gt;         SRI_STUAB_WRK.SRI_STU1_ID.Value = &amp;SID;&lt;br /&gt;         SRI_STUAB_WRK.SRI_STU1_NAME.Value = &amp;SNAME;   &lt;br /&gt;      End-For;&lt;br /&gt;   End-For;&lt;br /&gt;End-For;&lt;br /&gt;DoModalComponent(MenuName.SRI_UNV_MNU, BarName.SRI_UNV_MNU, ItemName.SRI_STUABS_CMP, Page.SRI_STUABS_PNL, "A", Record.SRI_STUAB_WRK);&lt;br /&gt;5.Call the other page /component using the  DoModalComponent function.&lt;br /&gt;DoModalComponent(MenuName.SRI_UNV_MNU, BarName.SRI_UNV_MNU, ItemName.SRI_STUABS_CMP, Page.SRI_STUABS_PNL, "A", Record.SRI_STUAB_WRK);&lt;br /&gt;6.Create a View for the STUDENTID and NAME (SRI_STUAB_VW)&lt;br /&gt;7.For STUDENTID in the table PS_SRI_STUMOD_TBL give the view (this makes the scroll change when we select different student id's)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2388698495725806936-5794209905017729257?l=harshachowdaryworld.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://harshachowdaryworld.blogspot.com/feeds/5794209905017729257/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2388698495725806936&amp;postID=5794209905017729257' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2388698495725806936/posts/default/5794209905017729257'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2388698495725806936/posts/default/5794209905017729257'/><link rel='alternate' type='text/html' href='http://harshachowdaryworld.blogspot.com/2010/01/domodalcomponent-steps.html' title='domodalcomponent steps'/><author><name>Sri Harsha</name><uri>http://www.blogger.com/profile/07055600374301477821</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://2.bp.blogspot.com/_cv2CfEeLpVU/Sl7x0ilfPHI/AAAAAAAAAgE/e3fgUdRlTv8/S220/tin.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2388698495725806936.post-1320730842197436903</id><published>2010-01-05T21:30:00.000-08:00</published><updated>2010-01-05T21:39:39.556-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Set ID and Business Unit'/><title type='text'>Set ID and Business Unit</title><content type='html'>&lt;span style="font-weight:bold;"&gt;SetID&lt;/span&gt;&lt;br /&gt;An identification code that represents a set of control table information or table sets. Set Ids  enable the sharing of a set of control table information across two or more Business  Units.&lt;br /&gt;&lt;br /&gt;Table sets  enable you to share control table information and processing options among business units. The goal is to minimize redundant data and system maintenance tasks. When you assign a setID to a record group in a business unit, you indicate that all of the tables in the record group are shared between that business unit and any other business unit that also assigns that setID to&lt;br /&gt;that record group. For example, you can define a group of common job codes that are shared between several business units. Each business unit that shares the job codes is assigned the same setID for that record group."&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Business Unit&lt;/span&gt;&lt;br /&gt;An identification code that represents a high-level organization of business  information. You can use a business unit to define regional or departmental units  within a larger organization.&lt;br /&gt;                    &lt;br /&gt;                            Business Unit organizes your company or your organization, SetIDs help you organize your data within the system. The HRMS system uses tables (Control Tables or Prompt Tables) that use a high-level key that enables you to identify and retrieve data from the system. A secondary high-level key, referred to as a SetID, has also been added on various tables. SetIDs are simply the labels used to identify a TableSet. Business Unit and SetID functionality in PeopleSoft HRMS also provides you with a higher business level for reporting purposes and other business data roll-up.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2388698495725806936-1320730842197436903?l=harshachowdaryworld.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://harshachowdaryworld.blogspot.com/feeds/1320730842197436903/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2388698495725806936&amp;postID=1320730842197436903' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2388698495725806936/posts/default/1320730842197436903'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2388698495725806936/posts/default/1320730842197436903'/><link rel='alternate' type='text/html' href='http://harshachowdaryworld.blogspot.com/2010/01/set-id-and-business-unit.html' title='Set ID and Business Unit'/><author><name>Sri Harsha</name><uri>http://www.blogger.com/profile/07055600374301477821</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://2.bp.blogspot.com/_cv2CfEeLpVU/Sl7x0ilfPHI/AAAAAAAAAgE/e3fgUdRlTv8/S220/tin.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2388698495725806936.post-7816612137234696796</id><published>2010-01-05T21:09:00.000-08:00</published><updated>2010-01-05T21:17:32.364-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Difference between Transcation Tables and Control Tables'/><title type='text'>Difference between Transcation Tables and Control Tables</title><content type='html'>&lt;span style="font-weight:bold;"&gt;Transaction tables&lt;/span&gt; store data about day-to-day activities. Because of this, these tables are updated frequently and can be quite large. The type of transaction varies, such as invoices, paychecks, employee names and addresses, job history, benefits data.&lt;br /&gt;&lt;br /&gt;Information in transaction tables is organized and stored by &lt;span style="font-weight:bold;"&gt;Business Unit.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Control tables&lt;/span&gt; store information that define the accounting structure and processing rules that are used when transactions are entered into your PeopleSoft applications. Control tables include master lists such as customers, vendors, products, country and location tables. It is important to note that Control tables are static, meaning they only change when you perform specific maintenance on them.&lt;br /&gt;&lt;br /&gt;Control table information is organized and stored by a set identifier, commonly called a &lt;span style="font-weight:bold;"&gt;SetID.&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2388698495725806936-7816612137234696796?l=harshachowdaryworld.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://harshachowdaryworld.blogspot.com/feeds/7816612137234696796/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2388698495725806936&amp;postID=7816612137234696796' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2388698495725806936/posts/default/7816612137234696796'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2388698495725806936/posts/default/7816612137234696796'/><link rel='alternate' type='text/html' href='http://harshachowdaryworld.blogspot.com/2010/01/difference-between-transcation-tables.html' title='Difference between Transcation Tables and Control Tables'/><author><name>Sri Harsha</name><uri>http://www.blogger.com/profile/07055600374301477821</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://2.bp.blogspot.com/_cv2CfEeLpVU/Sl7x0ilfPHI/AAAAAAAAAgE/e3fgUdRlTv8/S220/tin.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2388698495725806936.post-7609515564830058711</id><published>2010-01-05T21:03:00.000-08:00</published><updated>2010-01-05T21:07:27.169-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Stand alone RowSet'/><title type='text'>Stand alone RowSet</title><content type='html'>&lt;span style="font-weight:bold;"&gt;STAND ALONE ROWSET&lt;/span&gt;&lt;br /&gt;In PeopleCode a standalone rowset is an independent rowset object not associated with the component buffer. They allow you to work with data outside of the buffer by getting whatever additional data you need form the database. In this sense they replace the functionality of derived records which were once used as place holders to store data not directly associated with the component. Because a standalone rowset is standalone, there is no automatic action by the component processor on it. This means that if a standalone rowset is used to manipulate data (inserts/updates), code will need to be added to manually save the changes. &lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Code to create a standalone rowset object&lt;/span&gt;&lt;br /&gt;Local Rowset &amp;rsExample;         &lt;br /&gt;&amp;rsExample = CreateRowset(Record.REC1);&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Filling a standalone rowset&lt;/span&gt;&lt;br /&gt;The Fill method in the Rowset class is used to populate the rowset. This parameters to the fill method are a Where clause and bind values.               &amp;rExample.Fill("where FIELD1 = :1", REC2.FIELD2);&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;&lt;br /&gt;The following example writes a file using a file layout that contains parent-child records:&lt;/span&gt;&lt;br /&gt;Local File &amp;MYFILE; &lt;br /&gt;Local Rowset &amp;rsBusExp, &amp;rsBusExpPer, &amp;rsBusExpDtl; &lt;br /&gt;Local Record &amp;rBusExp, &amp;rBusExpPer, &amp;rBusExpDtl; &lt;br /&gt;Local SQL &amp;SQL1, &amp;SQL2, &amp;SQL3; &lt;br /&gt;&amp;rBusExp = CreateRecord(Record.PERSONAL_DATA); &lt;br /&gt;&amp;rBusExpPer = CreateRecord(Record.BUS_EXPENSE_PER); &lt;br /&gt;&amp;rBusExpDtl = CreateRecord(Record.BUS_EXPENSE_DTL); &lt;br /&gt; &lt;br /&gt;&amp;rsBusExp = CreateRowset(Record.PERSONAL_DATA, &lt;br /&gt;CreateRowset(Record.BUS_EXPENSE_PER, &lt;br /&gt;CreateRowset(Record.BUS_EXPENSE_DTL))); &lt;br /&gt;&amp;rsBusExpPer = &amp;rsBusExp.GetRow(1).GetRowset(1); &lt;br /&gt; &lt;br /&gt;&amp;MYFILE = GetFile("c:\temp\BUS_EXP.out", "W", %FilePath_Absolute); &lt;br /&gt;&amp;MYFILE.SetFileLayout(FileLayout.BUS_EXP_OUT); &lt;br /&gt;&amp;EMPLID = "8001"; &lt;br /&gt; &lt;br /&gt;&amp;SQL1 = CreateSQL("%selectall(:1) where EMPLID = :2", &amp;rBusExp, &amp;EMPLID); &lt;br /&gt;&amp;SQL2 = CreateSQL("%selectall(:1) where EMPLID = :2", &amp;rBusExpPer, &amp;EMPLID); &lt;br /&gt; &lt;br /&gt;While &amp;SQL1.Fetch(&amp;rBusExp) &lt;br /&gt;   &amp;rBusExp.CopyFieldsTo(&amp;rsBusExp.GetRow(1).PERSONAL_DATA); &lt;br /&gt;   &amp;I = 1; &lt;br /&gt;   While &amp;SQL2.Fetch(&amp;rBusExpPer) &lt;br /&gt;      &amp;rBusExpPer.CopyFieldsTo(&amp;rsBusExpPer(&amp;I).BUS_EXPENSE_PER); &lt;br /&gt;      &amp;J = 1; &lt;br /&gt;      &amp;SQL3 = CreateSQL("%selectall(:1) where EMPLID = :2 &lt;br /&gt;and EXPENSE_PERIOD_DT = :3", &amp;rBusExpDtl, &amp;EMPLID, &lt;br /&gt;&amp;rsBusExpPer(&amp;I).BUS_EXPENSE_PER.EXPENSE_PERIOD_DT.Value); &lt;br /&gt;      &amp;rsBusExpDtl = &amp;rsBusExpPer.GetRow(&amp;I).GetRowset(1); &lt;br /&gt;      While &amp;SQL3.Fetch(&amp;rBusExpDtl) &lt;br /&gt;         &amp;rBusExpDtl.CopyFieldsTo(&amp;rsBusExpDtl(&amp;J).BUS_EXPENSE_DTL); &lt;br /&gt;         &amp;rsBusExpDtl.InsertRow(&amp;J); &lt;br /&gt;         &amp;J = &amp;J + 1; &lt;br /&gt;      End-While; &lt;br /&gt; &lt;br /&gt;      &amp;rsBusExpPer.InsertRow(&amp;I); &lt;br /&gt;      &amp;I = &amp;I + 1; &lt;br /&gt;   End-While; &lt;br /&gt;   &amp;MYFILE.WriteRowset(&amp;rsBusExp); &lt;br /&gt;End-While; &lt;br /&gt;&amp;MYFILE.Close();&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;&lt;br /&gt;Out Put for the above program&lt;/span&gt;&lt;br /&gt;CC8001       03/01/199802/15/1998011200                USDConference          00001 &lt;br /&gt;CC8001       03/01/199802/16/19980220000               JPYConference          00001&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;The following code shows an example of reading in a file and inserting the rows into the database:&lt;/span&gt;&lt;br /&gt;Local File &amp;MYFILE; &lt;br /&gt;Local Rowset &amp;rsBusExp, &amp;rsBusExpPer, &amp;rsBusExpDtl; &lt;br /&gt;Local Record &amp;rBusExp, &amp;rBusExpPer, &amp;rBusExpDtl; &lt;br /&gt;Local SQL &amp;SQL1; &lt;br /&gt;&lt;br /&gt;&amp;rBusExp = CreateRecord(Record.PERSONAL_DATA); &lt;br /&gt;&amp;rBusExpPer = CreateRecord(Record.BUS_EXPENSE_PER); &lt;br /&gt;&amp;rBusExpDtl = CreateRecord(Record.BUS_EXPENSE_DTL); &lt;br /&gt; &lt;br /&gt;&amp;rsBusExp = CreateRowset(Record.PERSONAL_DATA, &lt;br /&gt;CreateRowset(Record.BUS_EXPENSE_PER, &lt;br /&gt;CreateRowset(Record.BUS_EXPENSE_DTL))); &lt;br /&gt; &lt;br /&gt;&amp;MYFILE = GetFile("c:\temp\BUS_EXP.out", "R", %FilePath_Absolute); &lt;br /&gt;&amp;MYFILE.SetFileLayout(FileLayout.BUS_EXP_OUT); &lt;br /&gt; &lt;br /&gt;&amp;SQL1 = CreateSQL("%Insert(:1)"); &lt;br /&gt; &lt;br /&gt;&amp;rsBusExp = &amp;MYFILE.ReadRowset(); &lt;br /&gt;While &amp;rsBusExp &lt;&gt; Null; &lt;br /&gt;   &amp;rsBusExp.GetRow(1).PERSONAL_DATA.CopyFieldsTo(&amp;rBusExp); &lt;br /&gt;   &amp;rsBusExpPer = &amp;rsBusExp.GetRow(1).GetRowset(1); &lt;br /&gt;   For &amp;I = 1 To &amp;rsBusExpPer.ActiveRowCount &lt;br /&gt;      &amp;rsBusExpPer(&amp;I).BUS_EXPENSE_PER.CopyFieldsTo(&amp;rBusExpPer); &lt;br /&gt;      &amp;rBusExpPer.ExecuteEdits(%Edit_Required); &lt;br /&gt;      If &amp;rBusExpPer.IsEditError Then &lt;br /&gt;         For &amp;K = 1 To &amp;rBusExpPer.FieldCount &lt;br /&gt;            &amp;MYFIELD = &amp;rBusExpPer.GetField(&amp;K); &lt;br /&gt;            If &amp;MYFIELD.EditError Then &lt;br /&gt;               &amp;MSGNUM = &amp;MYFIELD.MessageNumber; &lt;br /&gt;               &amp;MSGSET = &amp;MYFIELD.MessageSetNumber; &lt;br /&gt;            End-If; &lt;br /&gt;         End-For; &lt;br /&gt;      Else &lt;br /&gt;         &amp;SQL1.Execute(&amp;rBusExpPer); &lt;br /&gt;         &amp;rsBusExpDtl = &amp;rsBusExpPer.GetRow(&amp;I).GetRowset(1); &lt;br /&gt;         For &amp;J = 1 To &amp;rsBusExpDtl.ActiveRowCount &lt;br /&gt;            &amp;rsBusExpDtl(&amp;J).BUS_EXPENSE_DTL.CopyFieldsTo(&amp;rBusExpDtl); &lt;br /&gt;            &amp;rBusExpDtl.ExecuteEdits(%Edit_Required); &lt;br /&gt;            If &amp;rBusExpDtl.IsEditError Then &lt;br /&gt;               For &amp;K = 1 To &amp;rBusExpDtl.FieldCount &lt;br /&gt;                  &amp;MYFIELD = &amp;rBusExpDtl.GetField(&amp;K); &lt;br /&gt;                  If &amp;MYFIELD.EditError Then &lt;br /&gt;                     &amp;MSGNUM = &amp;MYFIELD.MessageNumber; &lt;br /&gt;                     &amp;MSGSET = &amp;MYFIELD.MessageSetNumber; &lt;br /&gt;                  End-If; &lt;br /&gt;               End-For; &lt;br /&gt;            Else &lt;br /&gt;               &amp;SQL1.Execute(&amp;rBusExpDtl); &lt;br /&gt;            End-If; &lt;br /&gt;         End-For; &lt;br /&gt;      End-If; &lt;br /&gt;   End-For; &lt;br /&gt;   &amp;rsBusExp = &amp;MYFILE.ReadRowset(); &lt;br /&gt;End-While; &lt;br /&gt;&amp;MYFILE.Close();&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2388698495725806936-7609515564830058711?l=harshachowdaryworld.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://harshachowdaryworld.blogspot.com/feeds/7609515564830058711/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2388698495725806936&amp;postID=7609515564830058711' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2388698495725806936/posts/default/7609515564830058711'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2388698495725806936/posts/default/7609515564830058711'/><link rel='alternate' type='text/html' href='http://harshachowdaryworld.blogspot.com/2010/01/stand-alone-rowset.html' title='Stand alone RowSet'/><author><name>Sri Harsha</name><uri>http://www.blogger.com/profile/07055600374301477821</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://2.bp.blogspot.com/_cv2CfEeLpVU/Sl7x0ilfPHI/AAAAAAAAAgE/e3fgUdRlTv8/S220/tin.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2388698495725806936.post-6691589987169020736</id><published>2010-01-05T20:55:00.000-08:00</published><updated>2010-01-05T21:02:50.121-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='HRMS Setups and adding the Benefits to the Employee setuup'/><title type='text'>Basic HRMS Setup's and adding the Benefits to the Employee Setup</title><content type='html'>Create SETID&lt;br /&gt;Navigation:&lt;br /&gt;Main Menu -&gt;PeopleTools -&gt;Utilities -&gt;Administration -&gt;TablesetID's&lt;br /&gt;&lt;br /&gt;Create Business Unit&lt;br /&gt;Navigation:&lt;br /&gt;Main Menu -&gt;Setup HRMS -&gt;Foundation Tables -&gt;Organisation -&gt;Business Unit&lt;br /&gt;&lt;br /&gt;Setup Location:&lt;br /&gt;Navigation:&lt;br /&gt;Main Menu -&gt;Setup HRMS -&gt;Foundation Tables -&gt;Organisation -&gt;Location&lt;br /&gt;&lt;br /&gt;Add a company&lt;br /&gt;Navigation:&lt;br /&gt;Main Menu -&gt;Setup HRMS -&gt;Foundation Tables -&gt;Organisation -&gt;Company&lt;br /&gt;&lt;br /&gt;Create an Establishment ID&lt;br /&gt;Navigation:&lt;br /&gt;Main Menu -&gt;Setup HRMS -&gt;Foundation Tables -&gt;Organisation -&gt;Establishment&lt;br /&gt;&lt;br /&gt;Create Departments&lt;br /&gt;Navigation:&lt;br /&gt;Main Menu -&gt;Setup HRMS -&gt;Foundation Tables -&gt;Organisation -&gt;Departments&lt;br /&gt;&lt;br /&gt;Setting the Business Unit options default&lt;br /&gt;Navigation:&lt;br /&gt;Main Menu -&gt;Setup HRMS -&gt;Foundation Tables -&gt;Organisation -&gt;Business Unit options default (Enter the company and Country details)&lt;br /&gt;&lt;br /&gt;Create a pay Group Table:&lt;br /&gt;Navigation:&lt;br /&gt;Main Menu -&gt;Setup HRMS -&gt;Product Related -&gt;Pay Roll -&gt;Pay Group Table&lt;br /&gt;&lt;br /&gt;Create a Job Code&lt;br /&gt;Navigation:&lt;br /&gt;Main Menu -&gt;Setup HRMS -&gt;Foundation Tables -&gt;Job Attributes -&gt;Job Code Table&lt;br /&gt;&lt;br /&gt;Setting Org Defaults permission lists&lt;br /&gt;Navigation:&lt;br /&gt;Main Menu -&gt;Setup HRMS -&gt;Foundation Tables -&gt;Organisation -&gt;Org Defaults by permission Lists (Enter the Organisation related&lt;br /&gt;data here)&lt;br /&gt;&lt;br /&gt;Tree Manager:&lt;br /&gt;Navigation:&lt;br /&gt;Main Menu -&gt;Tree Manager-&gt;Tree Utilites -&gt;Tree Manager&lt;br /&gt;-&gt;Create a new tree  with the name DEPT_SECURITY&lt;br /&gt;-&gt;Select the structure ID as DEPARTMENT&lt;br /&gt;-&gt;Select the category as HR&lt;br /&gt;-&gt;Click on ADD LEVEL and add the following below levels&lt;br /&gt;1.Corporate&lt;br /&gt;2.Business&lt;br /&gt;3.Region&lt;br /&gt;4.Company&lt;br /&gt;5.Department&lt;br /&gt;6.Division&lt;br /&gt;7.Group&lt;br /&gt;8.Unit&lt;br /&gt;-&gt;Select the root node&lt;br /&gt;-&gt;save it.&lt;br /&gt;Note: In Business Options Default enter the details.&lt;br /&gt;&lt;br /&gt;Security:&lt;br /&gt;Navigation:&lt;br /&gt;Main Menu -&gt;Security -&gt;Core Row Level Security -&gt;Security by Permission Lists&lt;br /&gt;-&gt;Select HCDPALL.Add ur business uint it and select the 011 as Security acess type.&lt;br /&gt;&lt;br /&gt;Security by Dept Tree:&lt;br /&gt;Navigation:&lt;br /&gt;Setup HRMS -&gt;Security -&gt;Core Row level Security -&gt;Security by Dept Tree&lt;br /&gt;-&gt;Select HCDPALL.Add your SETID and Department ID in it.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Running the Process:&lt;br /&gt;Navigation:&lt;br /&gt;Setup HRMS -&gt;Security -&gt;Core Row Level Security-&gt;Refresh SJT Class ALL / Refresh Trans SJT Tables / Refresh SJT OPR class&lt;br /&gt;&lt;br /&gt;Run all the above process&lt;br /&gt;&lt;br /&gt;Buzz the Application&lt;br /&gt;Navigation:&lt;br /&gt;Setup HRMS -&gt;Install -&gt; Installation Table&lt;br /&gt;-&gt;Change the SETID and Campany Name.&lt;br /&gt;-&gt;Restart the services.&lt;br /&gt;&lt;br /&gt;Adding a Person:&lt;br /&gt;Navigation:&lt;br /&gt;Main Menu -&gt;Workforce Administration -&gt; Personal Information -&gt;Add a Person.&lt;br /&gt;&lt;br /&gt;Adding the Benfits to the existing Employee:&lt;br /&gt;===================================&lt;br /&gt;Base Benfits:&lt;br /&gt;Adding a Health Plan  to an Existing Employee:&lt;br /&gt;&lt;br /&gt;Provider / Vendor Tables:&lt;br /&gt;Navigation:&lt;br /&gt;Main Menu -&gt;Setup HRMS -&gt;Product Related -&gt;Base Benfits -&gt;Plans and Providers -&gt;Provider/ Vendor Tables -&gt;Vendor ID&lt;br /&gt;&lt;br /&gt;Benfit Plan Type:&lt;br /&gt;Navigation:&lt;br /&gt;Main Menu -&gt;Setup HRMS -&gt;Product Related -&gt;Base Benfits -&gt;Plans and Providers -&gt;Provider/ Vendor Tables -&gt;Benfit Plan Type&lt;br /&gt;&lt;br /&gt;Health Plan Table:&lt;br /&gt;Navigation:&lt;br /&gt;Main Menu -&gt;Setup HRMS -&gt;Product Related -&gt;Plan Attributes -&gt;Health Plan Table&lt;br /&gt;&lt;br /&gt;Health Coverage Codes:&lt;br /&gt;Navigation:&lt;br /&gt;Main Menu -&gt;Setup HRMS -&gt;Product Related -&gt;Plan Attributes -&gt;Health Coverage Codes&lt;br /&gt;&lt;br /&gt;Rates and Rules:&lt;br /&gt;Navigation:&lt;br /&gt;Main Menu -&gt;Setup HRMS -&gt;Product Related -&gt;Base Benfits -&gt;Rates and Rules -&gt;Benfit Rates.&lt;br /&gt;&lt;br /&gt;Deduction Code:&lt;br /&gt;Navigation:&lt;br /&gt;Main Menu -&gt;Setup HRMS -&gt;Product Related -&gt;Payroll Interface -&gt;Deductions -&gt;Deduction Tables.&lt;br /&gt;&lt;br /&gt;Cloning the Benfit Program Utility:&lt;br /&gt;Navigation:&lt;br /&gt;Main Menu -&gt;Setup HRMS -&gt;Product Related -&gt;Base Benfits -&gt;Program Structure -&gt;Benfit Program clone Utility.&lt;br /&gt;&lt;br /&gt;-&gt;Select required Basic benfits and clone it.&lt;br /&gt;&lt;br /&gt;Benfit Program Table:&lt;br /&gt;Navigation:&lt;br /&gt;Main Menu -&gt;Setup HRMS -&gt;Product Related -&gt;Base Benfits -&gt;Program Structure -&gt;Benfit Program Table.&lt;br /&gt;&lt;br /&gt;Adding the Benfit to the Employee:&lt;br /&gt;Navigation:&lt;br /&gt;Main Menu -&gt;Workforce Administration -&gt;Job Data -&gt;Select the EMPLID -&gt;Click on the Benfit program participation link -&gt;Add the benfit program.&lt;br /&gt;&lt;br /&gt;Check it in Benfits&lt;br /&gt;Navigation:&lt;br /&gt;Main Menu -&gt;Benfits -&gt;Enroll in Benfits -&gt;Assign to Benefit Program -&gt;Select the EMPLID and check for Benfits.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2388698495725806936-6691589987169020736?l=harshachowdaryworld.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://harshachowdaryworld.blogspot.com/feeds/6691589987169020736/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2388698495725806936&amp;postID=6691589987169020736' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2388698495725806936/posts/default/6691589987169020736'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2388698495725806936/posts/default/6691589987169020736'/><link rel='alternate' type='text/html' href='http://harshachowdaryworld.blogspot.com/2010/01/basic-hrms-setups-and-adding-benefits.html' title='Basic HRMS Setup&apos;s and adding the Benefits to the Employee Setup'/><author><name>Sri Harsha</name><uri>http://www.blogger.com/profile/07055600374301477821</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://2.bp.blogspot.com/_cv2CfEeLpVU/Sl7x0ilfPHI/AAAAAAAAAgE/e3fgUdRlTv8/S220/tin.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2388698495725806936.post-7701065018369287582</id><published>2009-12-23T01:21:00.000-08:00</published><updated>2009-12-23T01:33:12.457-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='PeopleSoft Finance Tables'/><title type='text'>PeopleSoft Finance Tables with Detail Description XLS sheet</title><content type='html'>Hi Please find the PeopleSoft Finance Tables with Detail Description XLS sheet in the below link&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;  &lt;span style="font-weight:bold;"&gt; http://www.ziddu.com/download/7856877/PT_501.xls.html&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2388698495725806936-7701065018369287582?l=harshachowdaryworld.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://harshachowdaryworld.blogspot.com/feeds/7701065018369287582/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2388698495725806936&amp;postID=7701065018369287582' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2388698495725806936/posts/default/7701065018369287582'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2388698495725806936/posts/default/7701065018369287582'/><link rel='alternate' type='text/html' href='http://harshachowdaryworld.blogspot.com/2009/12/peoplesoft-finance-tables-with-detail.html' title='PeopleSoft Finance Tables with Detail Description XLS sheet'/><author><name>Sri Harsha</name><uri>http://www.blogger.com/profile/07055600374301477821</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://2.bp.blogspot.com/_cv2CfEeLpVU/Sl7x0ilfPHI/AAAAAAAAAgE/e3fgUdRlTv8/S220/tin.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2388698495725806936.post-6190617046021280641</id><published>2009-10-07T03:45:00.000-07:00</published><updated>2009-10-07T03:52:27.638-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='how to find out which tables contain a certain SETID value.'/><title type='text'>how tofind out which tables contain a certain SETID value.</title><content type='html'>This post is to share another alternative on how to find out which tables contain a certain SETID value.&lt;br /&gt;Navigate to &lt;span style="font-weight:bold;"&gt;PeopleTools &gt; Archive Data &gt; Find Data&lt;/span&gt;&lt;br /&gt;On the "&lt;span style="font-weight:bold;"&gt;Field Name&lt;/span&gt;" field enter "&lt;span style="font-weight:bold;"&gt;SETID&lt;/span&gt;", on the "&lt;span style="font-weight:bold;"&gt;Value to Match&lt;/span&gt;" field enter the value you are looking for.&lt;br /&gt;The system will give a list of each and every table that has the requested value on the requested field.&lt;br /&gt;this can be used for any other table/value, not only SETID.&lt;br /&gt;&lt;br /&gt;Another way to find in &lt;span style="font-weight:bold;"&gt;Oracle database&lt;/span&gt; is to run the below 2 SQL statements&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;&lt;br /&gt;SELECT TABLE_NAME&lt;br /&gt;FROM DBA_TAB_COLUMNS&lt;br /&gt;WHERE COLUMN_NAME='SETID'&lt;br /&gt;&lt;br /&gt;SELECT TABLE_NAME&lt;br /&gt;FROM DBA_TAB_COLUMNS&lt;br /&gt;WHERE COLUMN_NAME='BUSINESS_UNIT'&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2388698495725806936-6190617046021280641?l=harshachowdaryworld.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://harshachowdaryworld.blogspot.com/feeds/6190617046021280641/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2388698495725806936&amp;postID=6190617046021280641' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2388698495725806936/posts/default/6190617046021280641'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2388698495725806936/posts/default/6190617046021280641'/><link rel='alternate' type='text/html' href='http://harshachowdaryworld.blogspot.com/2009/10/how-tofind-out-which-tables-contain.html' title='how tofind out which tables contain a certain SETID value.'/><author><name>Sri Harsha</name><uri>http://www.blogger.com/profile/07055600374301477821</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://2.bp.blogspot.com/_cv2CfEeLpVU/Sl7x0ilfPHI/AAAAAAAAAgE/e3fgUdRlTv8/S220/tin.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2388698495725806936.post-4962965950460054362</id><published>2009-10-01T05:14:00.000-07:00</published><updated>2009-10-01T05:15:06.081-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='To find all the records in a given component. Below is the query which takes component name as input and the list of all records in that component as output.'/><title type='text'>To find all the records in a given component. Below is the query which takes component name as input and the list of all records in that component as</title><content type='html'>To find all the records in a given component. Below is the query which takes component name as input and the list of all records in that component as output.&lt;br /&gt;&lt;br /&gt;SELECT   recname&lt;br /&gt;    FROM pspnlgroup a, pspnlfield b&lt;br /&gt;   WHERE (a.pnlname = b.pnlname OR a.pnlname = b.subpnlname)&lt;br /&gt;     AND a.pnlgrpname = :component_name&lt;br /&gt;GROUP BY recname&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2388698495725806936-4962965950460054362?l=harshachowdaryworld.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://harshachowdaryworld.blogspot.com/feeds/4962965950460054362/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2388698495725806936&amp;postID=4962965950460054362' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2388698495725806936/posts/default/4962965950460054362'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2388698495725806936/posts/default/4962965950460054362'/><link rel='alternate' type='text/html' href='http://harshachowdaryworld.blogspot.com/2009/10/to-find-all-records-in-given-component.html' title='To find all the records in a given component. Below is the query which takes component name as input and the list of all records in that component as'/><author><name>Sri Harsha</name><uri>http://www.blogger.com/profile/07055600374301477821</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://2.bp.blogspot.com/_cv2CfEeLpVU/Sl7x0ilfPHI/AAAAAAAAAgE/e3fgUdRlTv8/S220/tin.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2388698495725806936.post-6865200267800589444</id><published>2009-09-29T04:11:00.000-07:00</published><updated>2009-09-29T04:12:25.212-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='PeopleSoft HR Tables'/><title type='text'>PeopleSoft HR Tables</title><content type='html'>&lt;span style="font-weight:bold;"&gt;PeopleSoft HR Tables&lt;span style="font-style:italic;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;PS_EMPLOYEES&lt;br /&gt; PS_EMPLOYEES_LNG&lt;br /&gt; PS_EMPLOYMENT&lt;br /&gt; PS_EMPLOYMENT_LNG&lt;br /&gt; PS_EMPLOYMENT_LNG1&lt;br /&gt; PS_EMPLOYMENT_LNG2&lt;br /&gt; PS_EMPLOYMENT_LNG3&lt;br /&gt; PS_HS_EMPLOYMENT&lt;br /&gt; PS_HS_EMPL_REL_CAN&lt;br /&gt; PS_HS_EMPL_REL_LNG&lt;br /&gt; PS_HS_EMPL_SUB_CAN&lt;br /&gt; PS_HS_EMPL_SUB_LNG&lt;br /&gt; PS_INJ_CLMADDR_CAN&lt;br /&gt; PS_JOB&lt;br /&gt; PS_PERSONAL_DATA&lt;br /&gt; PS_PERSONL_DTA_LNG&lt;br /&gt; PS_PERS_DATA_AET&lt;br /&gt; PS_PERS_DATA_EFFDT&lt;br /&gt; PS_PERS_DTAEFF_LNG&lt;br /&gt; PS_PERS_NID&lt;br /&gt; PS_JOB_EARNS_DIST&lt;br /&gt; PS_JOB_APPROVALS&lt;br /&gt; PS_BEN_PROG_PARTIC&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2388698495725806936-6865200267800589444?l=harshachowdaryworld.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://harshachowdaryworld.blogspot.com/feeds/6865200267800589444/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2388698495725806936&amp;postID=6865200267800589444' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2388698495725806936/posts/default/6865200267800589444'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2388698495725806936/posts/default/6865200267800589444'/><link rel='alternate' type='text/html' href='http://harshachowdaryworld.blogspot.com/2009/09/peoplesoft-hr-tables.html' title='PeopleSoft HR Tables'/><author><name>Sri Harsha</name><uri>http://www.blogger.com/profile/07055600374301477821</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://2.bp.blogspot.com/_cv2CfEeLpVU/Sl7x0ilfPHI/AAAAAAAAAgE/e3fgUdRlTv8/S220/tin.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2388698495725806936.post-990140230363641791</id><published>2009-09-29T04:10:00.000-07:00</published><updated>2009-09-29T04:11:41.721-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Complete PeopleSoft Tables'/><title type='text'>Complete PeopleSoft Tables</title><content type='html'>&lt;span style="font-style:italic;"&gt;&lt;span style="font-weight:bold;"&gt;Complete PeopleSoft Tables&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;PS_EMPLOYEES&lt;br /&gt;PS_EMPLOYEES_LNG&lt;br /&gt;PS_EMPLOYMENT&lt;br /&gt;PS_EMPLOYMENT_LNG&lt;br /&gt;PS_EMPLOYMENT_LNG1&lt;br /&gt;PS_EMPLOYMENT_LNG2&lt;br /&gt;PS_EMPLOYMENT_LNG3&lt;br /&gt;PS_HS_EMPLOYMENT&lt;br /&gt;PS_HS_EMPL_REL_CAN&lt;br /&gt;PS_HS_EMPL_REL_LNG&lt;br /&gt;PS_HS_EMPL_SUB_CAN&lt;br /&gt;PS_HS_EMPL_SUB_LNG&lt;br /&gt; PS_INJ_CLMADDR_CAN&lt;br /&gt;PS_JOB, PS_PERSONAL_DATA&lt;br /&gt;PS_PERSONL_DTA_LNG&lt;br /&gt;PS_PERS_DATA_AET&lt;br /&gt;PS_PERS_DATA_EFFDT&lt;br /&gt;PS_PERS_DTAEFF_LNG&lt;br /&gt; PS_PERS_NID&lt;br /&gt;PS_JOB_EARNS_DIST&lt;br /&gt;PS_JOB_APPROVALS&lt;br /&gt;PS_STATE_TAX_DATA&lt;br /&gt;PS_GENL_DEDUCTION&lt;br /&gt;PS_BAL_ADJ_UI_CAN&lt;br /&gt; PS_CAN_CHECK_YTD&lt;br /&gt;PS_CAN_DED_BALANCE&lt;br /&gt; PS_CAN_ERN_BALANCE&lt;br /&gt;PS_CAN_TAX_BALANCE&lt;br /&gt; PS_CAN_TAX_DATA&lt;br /&gt; PS_CHECK_YTD&lt;br /&gt;PS_DEDUCTION_BAL&lt;br /&gt; PS_EARNINGS_BAL&lt;br /&gt; PS_FED_TAX_DATA&lt;br /&gt; PS_TAX_BALANCE&lt;br /&gt; PS_LOCAL_TAX_DATA&lt;br /&gt; PS_BAL_ADJ_ARR&lt;br /&gt; PS_BAL_ADJ_CHK&lt;br /&gt; PS_BAL_ADJ_CN_CHK&lt;br /&gt; PS_BAL_ADJ_CN_DED&lt;br /&gt; PS_BAL_ADJ_CN_ERN&lt;br /&gt; PS_BAL_ADJ_CN_TAX&lt;br /&gt; PS_BAL_ADJ_DED&lt;br /&gt; PS_BAL_ADJ_ERN&lt;br /&gt; PS_BAL_ADJ_GRN&lt;br /&gt; PS_BAL_ADJ_TAX&lt;br /&gt; PS_DED_ARREARS&lt;br /&gt; PS_GARN_RULE&lt;br /&gt; PS_GARN_SCHED&lt;br /&gt; PS_GARN_SPEC&lt;br /&gt; PS_GENL_DED_CD&lt;br /&gt; PS_BAS_PARTIC&lt;br /&gt; PS_BAS_PARTIC_COST&lt;br /&gt; PS_BAS_PARTIC_DPND&lt;br /&gt; PS_BAS_PARTIC_INVT&lt;br /&gt; PS_BAS_PARTIC_OPTN&lt;br /&gt; PS_BAS_PARTIC_PLAN&lt;br /&gt; PS_BENEF_COMMENT&lt;br /&gt; PS_BEN_PROG_PARTIC&lt;br /&gt; PS_DEPENDENT_BENEF&lt;br /&gt; PS_DISABILITY_BEN&lt;br /&gt; PS_FSA_BENEFIT&lt;br /&gt; PS_FSA_PAYMENT&lt;br /&gt; PS_HEALTH_BENEFIT&lt;br /&gt; PS_HEALTH_DEPENDNT&lt;br /&gt; PS_LEAVE_ACCRUAL&lt;br /&gt; PS_LEAVE_PLAN&lt;br /&gt; PS_LIFE_ADD_BEN&lt;br /&gt; PS_LIFE_ADD_BENEFC&lt;br /&gt; PS_PENSION_BENEFC&lt;br /&gt; PS_PENSION_PLAN&lt;br /&gt; PS_RTRMNT_PLAN&lt;br /&gt; PS_SAVINGS_BENEFIC&lt;br /&gt; PS_SAVINGS_INVEST&lt;br /&gt; PS_SAVINGS_PLAN&lt;br /&gt; PS_VACATION_BEN&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2388698495725806936-990140230363641791?l=harshachowdaryworld.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://harshachowdaryworld.blogspot.com/feeds/990140230363641791/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2388698495725806936&amp;postID=990140230363641791' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2388698495725806936/posts/default/990140230363641791'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2388698495725806936/posts/default/990140230363641791'/><link rel='alternate' type='text/html' href='http://harshachowdaryworld.blogspot.com/2009/09/complete-peoplesoft-tables.html' title='Complete PeopleSoft Tables'/><author><name>Sri Harsha</name><uri>http://www.blogger.com/profile/07055600374301477821</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://2.bp.blogspot.com/_cv2CfEeLpVU/Sl7x0ilfPHI/AAAAAAAAAgE/e3fgUdRlTv8/S220/tin.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2388698495725806936.post-1143488411784262722</id><published>2009-09-29T04:01:00.000-07:00</published><updated>2009-09-29T04:10:28.672-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='PeopleSoft Base Benefits Tables'/><title type='text'>PeopleSoft Base Benefits Tables</title><content type='html'>&lt;span style="font-style:italic;"&gt;&lt;span style="font-weight:bold;"&gt;Base Benefits Tables&lt;br /&gt;====================&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;PS_BAS_PARTIC&lt;br /&gt;PS_BAS_PARTIC_COST&lt;br /&gt;PS_BAS_PARTIC_DPND&lt;br /&gt;PS_BAS_PARTIC_INVT&lt;br /&gt;PS_BAS_PARTIC_OPTN&lt;br /&gt;PS_BAS_PARTIC_PLAN&lt;br /&gt;PS_BENEF_COMMENT&lt;br /&gt;PS_BEN_PROG_PARTIC&lt;br /&gt;PS_DEPENDENT_BENEF&lt;br /&gt;PS_DISABILITY_BEN&lt;br /&gt;PS_FSA_BENEFIT&lt;br /&gt;PS_FSA_PAYMENT&lt;br /&gt;PS_HEALTH_BENEFIT&lt;br /&gt;PS_HEALTH_DEPENDNT&lt;br /&gt;PS_LEAVE_ACCRUAL&lt;br /&gt;PS_LEAVE_PLAN&lt;br /&gt;PS_LIFE_ADD_BEN&lt;br /&gt;PS_LIFE_ADD_BENEFC&lt;br /&gt;PS_PENSION_BENEFC&lt;br /&gt;PS_PENSION_PLAN&lt;br /&gt;PS_RTRMNT_PLAN&lt;br /&gt;PS_SAVINGS_BENEFIC&lt;br /&gt;PS_SAVINGS_INVEST&lt;br /&gt;PS_SAVINGS_PLAN&lt;br /&gt;PS_VACATION_BEN&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2388698495725806936-1143488411784262722?l=harshachowdaryworld.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://harshachowdaryworld.blogspot.com/feeds/1143488411784262722/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2388698495725806936&amp;postID=1143488411784262722' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2388698495725806936/posts/default/1143488411784262722'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2388698495725806936/posts/default/1143488411784262722'/><link rel='alternate' type='text/html' href='http://harshachowdaryworld.blogspot.com/2009/09/peoplesoft-base-benefits-tables.html' title='PeopleSoft Base Benefits Tables'/><author><name>Sri Harsha</name><uri>http://www.blogger.com/profile/07055600374301477821</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://2.bp.blogspot.com/_cv2CfEeLpVU/Sl7x0ilfPHI/AAAAAAAAAgE/e3fgUdRlTv8/S220/tin.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2388698495725806936.post-6266904256969557615</id><published>2009-09-29T03:51:00.000-07:00</published><updated>2009-09-29T03:56:34.521-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='People Payroll Tables'/><title type='text'>People Payroll Tables</title><content type='html'>&lt;span style="font-weight:bold;"&gt;Payroll Tables&lt;br /&gt;==============&lt;span style="font-style:italic;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;PS_STATE_TAX_DATA&lt;br /&gt;PS_GENL_DEDUCTION&lt;br /&gt;PS_BAL_ADJ_UI_CAN&lt;br /&gt;PS_CAN_CHECK_YTDPS_CAN_DED_BALANCE&lt;br /&gt;PS_CAN_ERN_BALANCE&lt;br /&gt;PS_CAN_TAX_BALANCE&lt;br /&gt;PS_CAN_TAX_DATA&lt;br /&gt;PS_CHECK_YTDPS_DEDUCTION_BAL&lt;br /&gt;PS_EARNINGS_BAL&lt;br /&gt;PS_FED_TAX_DATA&lt;br /&gt;PS_TAX_BALANCE&lt;br /&gt;PS_LOCAL_TAX_DATAPS_BAL_ADJ_ARR&lt;br /&gt;PS_BAL_ADJ_CHK&lt;br /&gt;PS_BAL_ADJ_CN_CHK&lt;br /&gt;PS_BAL_ADJ_CN_DED&lt;br /&gt;PS_BAL_ADJ_CN_ERN PS_BAL_ADJ_CN_TAX&lt;br /&gt;PS_BAL_ADJ_DED&lt;br /&gt;PS_BAL_ADJ_ERN&lt;br /&gt;PS_BAL_ADJ_GRN&lt;br /&gt;PS_BAL_ADJ_TAXPS_DED_ARREARS&lt;br /&gt;PS_GARN_RULE&lt;br /&gt;PS_GARN_SCHED&lt;br /&gt;PS_GARN_SPEC&lt;br /&gt;PS_GENL_DED_CD&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2388698495725806936-6266904256969557615?l=harshachowdaryworld.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://harshachowdaryworld.blogspot.com/feeds/6266904256969557615/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2388698495725806936&amp;postID=6266904256969557615' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2388698495725806936/posts/default/6266904256969557615'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2388698495725806936/posts/default/6266904256969557615'/><link rel='alternate' type='text/html' href='http://harshachowdaryworld.blogspot.com/2009/09/people-payroll-tables.html' title='People Payroll Tables'/><author><name>Sri Harsha</name><uri>http://www.blogger.com/profile/07055600374301477821</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://2.bp.blogspot.com/_cv2CfEeLpVU/Sl7x0ilfPHI/AAAAAAAAAgE/e3fgUdRlTv8/S220/tin.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2388698495725806936.post-7140605823901597337</id><published>2009-09-08T01:46:00.001-07:00</published><updated>2009-09-08T01:48:09.216-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='process output location in SQR'/><title type='text'>To get the process output location in SQR</title><content type='html'>To get the process output location in SQR&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;select PRCSOUTPUTDIR&lt;br /&gt;from PSPRCSPARMS &lt;br /&gt;where PRCSINSTANCE = '123456789'&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2388698495725806936-7140605823901597337?l=harshachowdaryworld.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://harshachowdaryworld.blogspot.com/feeds/7140605823901597337/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2388698495725806936&amp;postID=7140605823901597337' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2388698495725806936/posts/default/7140605823901597337'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2388698495725806936/posts/default/7140605823901597337'/><link rel='alternate' type='text/html' href='http://harshachowdaryworld.blogspot.com/2009/09/to-get-process-output-location-in-sqr.html' title='To get the process output location in SQR'/><author><name>Sri Harsha</name><uri>http://www.blogger.com/profile/07055600374301477821</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://2.bp.blogspot.com/_cv2CfEeLpVU/Sl7x0ilfPHI/AAAAAAAAAgE/e3fgUdRlTv8/S220/tin.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2388698495725806936.post-6284927252101529788</id><published>2009-09-08T01:33:00.000-07:00</published><updated>2009-09-08T01:37:57.887-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='To know the Run Status when running through the Process Scheduler'/><title type='text'>To know the Run Status when running through the Process Scheduler</title><content type='html'>To know the Run Status while running through the Process Scheduler &lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;select FIELDVALUE, XLATLONGNAME &lt;br /&gt;from PSXLATITEM &lt;br /&gt;where FIELDNAME = 'RUNSTATUS'&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;The summary of the run status translates (from PeopleTools 8.49). Note that not all of these are active.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Value  Status&lt;br /&gt;=====   =======&lt;br /&gt;1  Cancel&lt;br /&gt;2  Delete&lt;br /&gt;3  Error&lt;br /&gt;4  Hold&lt;br /&gt;5  Queued&lt;br /&gt;6  Initiated&lt;br /&gt;7  Processing&lt;br /&gt;8  Cancelled&lt;br /&gt;9  Success&lt;br /&gt;10  Not Successful&lt;br /&gt;11  Posted&lt;br /&gt;12  Unable to Post&lt;br /&gt;13  resend&lt;br /&gt;14  Posting&lt;br /&gt;15  Content Generated&lt;br /&gt;16  Pending&lt;br /&gt;17  Success with Warning&lt;br /&gt;18  Blocked&lt;br /&gt;19  Restart&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;The following below query will give us the summary of the process run statuses in your process request table&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;select     &lt;br /&gt;    RUNSTATUS,&lt;br /&gt;    (&lt;br /&gt;        select  XLATSHORTNAME&lt;br /&gt;        from    PSXLATITEM&lt;br /&gt;        where   FIELDNAME = 'RUNSTATUS'&lt;br /&gt;        and     FIELDVALUE = RUNSTATUS&lt;br /&gt;    ) as RUNSTATUS_DESCR,&lt;br /&gt;    count(PRCSINSTANCE)&lt;br /&gt;from  &lt;br /&gt;    PSPRCSRQST&lt;br /&gt;group by &lt;br /&gt;    RUNSTATUS&lt;br /&gt;order by &lt;br /&gt;    RUNSTATUS;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2388698495725806936-6284927252101529788?l=harshachowdaryworld.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://harshachowdaryworld.blogspot.com/feeds/6284927252101529788/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2388698495725806936&amp;postID=6284927252101529788' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2388698495725806936/posts/default/6284927252101529788'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2388698495725806936/posts/default/6284927252101529788'/><link rel='alternate' type='text/html' href='http://harshachowdaryworld.blogspot.com/2009/09/to-know-run-status-when-running-through.html' title='To know the Run Status when running through the Process Scheduler'/><author><name>Sri Harsha</name><uri>http://www.blogger.com/profile/07055600374301477821</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://2.bp.blogspot.com/_cv2CfEeLpVU/Sl7x0ilfPHI/AAAAAAAAAgE/e3fgUdRlTv8/S220/tin.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2388698495725806936.post-3128456401348742461</id><published>2009-09-08T00:19:00.000-07:00</published><updated>2009-09-08T00:23:29.067-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Row Number'/><title type='text'>For getting a particular row number from a table</title><content type='html'>SELECT * FROM ( SELECT *, ROW_NUMBER() OVER (ORDER BY name) as row FROM sys.databases ) a WHERE row &gt; 5 and row &lt;= 10&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;The query above returns rows 6 through 10 from sys.databases as ordered by the "name" column.  ROW_NUMBER() is the key function we're using here.  It's one of a set of ranking functions introduced in 2005.  Note that it's always accompanied by an OVER clause that specifies the ordering that the row_number should be based on.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;U can find the above query in the blow link&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;http://blogs.msdn.com/sqlserver/archive/2006/10/25/limit-in-sql-server.aspx&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2388698495725806936-3128456401348742461?l=harshachowdaryworld.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://harshachowdaryworld.blogspot.com/feeds/3128456401348742461/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2388698495725806936&amp;postID=3128456401348742461' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2388698495725806936/posts/default/3128456401348742461'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2388698495725806936/posts/default/3128456401348742461'/><link rel='alternate' type='text/html' href='http://harshachowdaryworld.blogspot.com/2009/09/for-getting-particular-row-number-from.html' title='For getting a particular row number from a table'/><author><name>Sri Harsha</name><uri>http://www.blogger.com/profile/07055600374301477821</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://2.bp.blogspot.com/_cv2CfEeLpVU/Sl7x0ilfPHI/AAAAAAAAAgE/e3fgUdRlTv8/S220/tin.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2388698495725806936.post-5078361453281264954</id><published>2009-09-07T03:02:00.001-07:00</published><updated>2009-09-07T03:02:40.298-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Peoplesoft Hot Keys'/><title type='text'>Peoplesoft Hot Keys</title><content type='html'>&lt;span style="font-weight:bold;"&gt;We all probably know that “CTRL J” hot key gives us the system information. But did you know that there are a lot more available. But you do not have to trouble your brain to remember them, simply press navigate to a search or transaction page and invoke hot key “CTRL K” to get all the information. Below are the results from PeopleSoft “CTRL K”.&lt;br /&gt; �&lt;br /&gt;Accessing your application using the keyboard&lt;br /&gt;Keyboard navigation is controlled by Hot keys and Access keys .&lt;br /&gt;�&lt;br /&gt;List of Hot Keys&lt;br /&gt;Alt 1 — Executes different buttons depending on the page type&lt;br /&gt;                    &gt; Save button on the Toolbar in a page&lt;br /&gt;                    &gt; OK button on a secondary page&lt;br /&gt;                    &gt; Search or Add button on a Search or Lookup page&lt;br /&gt;Alt 2 — Return to Search&lt;br /&gt;Alt 3 — Next in List&lt;br /&gt;Alt 4 — Previous in List&lt;br /&gt;Alt 5 — Valid Lookup Values&lt;br /&gt;Alt 6 — Related Links&lt;br /&gt;Alt 7 — Insert Row in grid or scroll area&lt;br /&gt;Alt 8 — Delete Row in grid or scroll area&lt;br /&gt;Alt 0 — Refreshes the page by invoking the Refresh button on the Toolbar&lt;br /&gt;Alt . — Next set of rows in grid or scroll area [e.g., Alt period]&lt;br /&gt;Alt , — Previous set of rows in grid or scroll area [e.g., Alt comma]&lt;br /&gt;Alt / — Find in grid or scroll area [e.g., Alt forward slash]&lt;br /&gt;Alt ‘ — View All in grid or scroll area [e.g., Alt prime]&lt;br /&gt;Alt \ — Toggle between Add and Update on the Search page [e.g., Alt backslash]&lt;br /&gt;Ctrl J — System Information&lt;br /&gt;Ctrl K — Keyboard Information&lt;br /&gt;Ctrl Y — Toggle menu between collapse and expand.&lt;br /&gt;Ctrl Tab — Toggles focus through the frame set&lt;br /&gt;Enter — Invokes the following buttons where present: OK, Search, Lookup&lt;br /&gt;Esc — Cancel&lt;br /&gt;�&lt;br /&gt;List of Access Keys&lt;br /&gt;Alt 9 — Takes you to the Help line&lt;br /&gt;Alt \ — Takes you to the Toolbar [e.g., Alt backslash Enter]&lt;br /&gt;Ctrl Z — Takes you to the Search box of the Menu&lt;br /&gt;�&lt;br /&gt;Menu Access Keys&lt;br /&gt;The Ctrl Z combination will focus your cursor onto the menuing system. From there, you can use your tab key (or shift-tab to reverse direction) to navigate through the menu hierarchy.&lt;br /&gt;�&lt;br /&gt;About Access keys and Hot keys&lt;br /&gt;&gt; An Access Key is an Alt key combination that moves focus to a specified field on the current page.&lt;br /&gt;For example, Alt \ moves focus to first button on the Toolbar. Then pressing the Enter key would invoke that action. Or, you may use the Tab key to move you to the next Toolbar button.&lt;br /&gt;&gt; A Hot Key performs an immediate action. For example, when focus is in a field that has lookup processing, Alt 5 invokes the Lookup page without having to press the Enter key.&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2388698495725806936-5078361453281264954?l=harshachowdaryworld.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://harshachowdaryworld.blogspot.com/feeds/5078361453281264954/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2388698495725806936&amp;postID=5078361453281264954' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2388698495725806936/posts/default/5078361453281264954'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2388698495725806936/posts/default/5078361453281264954'/><link rel='alternate' type='text/html' href='http://harshachowdaryworld.blogspot.com/2009/09/peoplesoft-hot-keys.html' title='Peoplesoft Hot Keys'/><author><name>Sri Harsha</name><uri>http://www.blogger.com/profile/07055600374301477821</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://2.bp.blogspot.com/_cv2CfEeLpVU/Sl7x0ilfPHI/AAAAAAAAAgE/e3fgUdRlTv8/S220/tin.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2388698495725806936.post-8837857287851512082</id><published>2009-08-30T22:51:00.000-07:00</published><updated>2009-08-30T22:54:04.832-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='runcontrol parameters in Application Engine'/><title type='text'>How to read the runcontrol parameters in AE</title><content type='html'>We can read the Runcontrol Parameters in Application Engine by the following below &lt;span style="font-weight:bold;"&gt;2&lt;/span&gt; ways:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;SQL&lt;/span&gt;&lt;br /&gt;%select(EMPLID)selct EMPLID from PS_AERUNCONTROL where PROCESS_INSTANCE=%PROCESS_INSTANCE AND OPRID=%oprid&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;PeopleCode&lt;/span&gt;&lt;br /&gt;&amp;SQL="Select EMPLID from PS_AERUNCONTROL where PROCESS_INSTANCE="|PS_TEST_AET.PROCESS_INSTANCE|"and OPRID="|%oprid&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;%PROCESS_INSTANCE or %Bind(PROCESS_INSTANCE) can be used.&lt;br /&gt;%PROCESS_INSTANCE is more efficent and faster&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2388698495725806936-8837857287851512082?l=harshachowdaryworld.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://harshachowdaryworld.blogspot.com/feeds/8837857287851512082/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2388698495725806936&amp;postID=8837857287851512082' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2388698495725806936/posts/default/8837857287851512082'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2388698495725806936/posts/default/8837857287851512082'/><link rel='alternate' type='text/html' href='http://harshachowdaryworld.blogspot.com/2009/08/how-to-read-runcontrol-parameters-in-ae.html' title='How to read the runcontrol parameters in AE'/><author><name>Sri Harsha</name><uri>http://www.blogger.com/profile/07055600374301477821</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://2.bp.blogspot.com/_cv2CfEeLpVU/Sl7x0ilfPHI/AAAAAAAAAgE/e3fgUdRlTv8/S220/tin.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2388698495725806936.post-9058672125875248202</id><published>2009-08-19T23:03:00.000-07:00</published><updated>2009-08-19T23:07:39.606-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Sample People Code for getting the DEPT ID based on the ORG ID'/><title type='text'>Sample People Code for getting the DEPT ID based on the ORG ID</title><content type='html'>Below is the 3 level rowset peoplecode for getting the Department ID prompt values when we select the Organization ID from prompt table.(i'e when we select the Organization ID from the prompt table then the departments under the particular Organization should only display)&lt;br /&gt;Local Rowset &amp;RS0, &amp;RS1, &amp;RS2;&lt;br /&gt;&amp;RS0 = GetLevel0();&lt;br /&gt;&amp;RS1 = &amp;RS0(1).GetRowset(Scroll.SRI_ORG1_TBL);&lt;br /&gt;For &amp;I = 1 To &amp;RS1.ActiveRowCount&lt;br /&gt;   &amp;ID = &amp;RS1(&amp;I).GetRecord(Record.SRI_ORG1_TBL).GetField(Field.SRI_ORG_ID).Value;&lt;br /&gt;   &amp;SQL = CreateSQL("SELECT DESCR FROM PS_EXT_ORG_TBL WHERE EXT_ORG_ID=:1", &amp;ID);&lt;br /&gt;   While &amp;SQL.FETCH(&amp;DESCR)&lt;br /&gt;      &amp;RS1(&amp;I).GetRecord(Record.SRI_ORG1_TBL).GetField(Field.SRI_ORG1_NAME).Value = &amp;DESCR;&lt;br /&gt;      REM WinMessage(&amp;DESCR, 0);&lt;br /&gt;      &lt;br /&gt;      &lt;br /&gt;      &amp;RS2 = &amp;RS1(&amp;I).GetRowset(Scroll.SRI_DEPT1_TBL);&lt;br /&gt;      &lt;br /&gt;      &lt;br /&gt;      For &amp;J = 1 To &amp;RS2.ActiveRowCount;&lt;br /&gt;         &amp;DI = &amp;RS2(&amp;J).GetRecord(Record.SRI_DEPT1_TBL).GetField(Field.SRI_ORG_ID).Value;&lt;br /&gt;         &amp;SQL1 = CreateSQL("SELECT ORG_DEPARTMENT FROM PS_ORG_DEPT WHERE EXT_ORG_ID=:1", &amp;DI);&lt;br /&gt;         While &amp;SQL1.FETCH(&amp;ORG_DEPARTMENT)&lt;br /&gt;            REM SQLEXEC("SELECT COUNT(EMPLID) FROM ");&lt;br /&gt;            If &amp;ORG_DEPARTMENT = "" Then&lt;br /&gt;               &amp;RS2(&amp;J).GetRecord(Record.SRI_DEPT1_TBL).GetField(Field.SRI_DEPT_ID).Value = "";&lt;br /&gt;               WinMessage("There are no Departments under this Organisation ID", 0);&lt;br /&gt;            Else&lt;br /&gt;               &amp;RS2(&amp;J).GetRecord(Record.SRI_DEPT1_TBL).GetField(Field.SRI_DEPT_ID).Value = "";&lt;br /&gt;               &lt;br /&gt;               rem WinMessage(&amp;ORG_DEPARTMENT, 0);&lt;br /&gt;               &lt;br /&gt;            End-If;&lt;br /&gt;         End-While;&lt;br /&gt;      End-For;&lt;br /&gt;   End-While;&lt;br /&gt;End-For;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2388698495725806936-9058672125875248202?l=harshachowdaryworld.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://harshachowdaryworld.blogspot.com/feeds/9058672125875248202/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2388698495725806936&amp;postID=9058672125875248202' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2388698495725806936/posts/default/9058672125875248202'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2388698495725806936/posts/default/9058672125875248202'/><link rel='alternate' type='text/html' href='http://harshachowdaryworld.blogspot.com/2009/08/sample-people-code-for-getting-dept-id.html' title='Sample People Code for getting the DEPT ID based on the ORG ID'/><author><name>Sri Harsha</name><uri>http://www.blogger.com/profile/07055600374301477821</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://2.bp.blogspot.com/_cv2CfEeLpVU/Sl7x0ilfPHI/AAAAAAAAAgE/e3fgUdRlTv8/S220/tin.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2388698495725806936.post-7975634743812794097</id><published>2009-08-19T22:52:00.000-07:00</published><updated>2009-08-19T22:55:35.244-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='People Code for calucating the student marks'/><category scheme='http://www.blogger.com/atom/ns#' term='average and grade'/><title type='text'>People Code for calucating the student marks,average and grade</title><content type='html'>&amp;A = STUD_TBL.STUD_MI.Value;&lt;br /&gt;&amp;B = STUD_TBL.STUD_M2.Value;&lt;br /&gt;&amp;C = STUD_TBL.STUD_M3.Value;&lt;br /&gt;STUD_TBL.STUD_TOT = &amp;A + &amp;B + &amp;C;&lt;br /&gt;STUD_TBL.STUD_AVG = (&amp;A + &amp;B + &amp;C) / 3;&lt;br /&gt;If (&amp;A = "") Or&lt;br /&gt;      (&amp;B = "") Or&lt;br /&gt;      (&amp;C = "") Then&lt;br /&gt;   STUD_TBL.STUD_GRADE = "";&lt;br /&gt;Else&lt;br /&gt;   If (&amp;A &lt; 35) Or&lt;br /&gt;         (&amp;B &lt; 35) Or&lt;br /&gt;         (&amp;C &lt; 35) Then&lt;br /&gt;      STUD_TBL.STUD_GRADE = "FAIL";&lt;br /&gt;   Else&lt;br /&gt;      If (STUD_TBL.STUD_AVG &gt; 35) And&lt;br /&gt;            (STUD_TBL.STUD_AVG &lt; 50) Or&lt;br /&gt;            (STUD_TBL.STUD_AVG &gt; 35) And&lt;br /&gt;               (STUD_TBL.STUD_AVG &lt; 50) Or&lt;br /&gt;            (STUD_TBL.STUD_AVG &gt; 35) And&lt;br /&gt;               (STUD_TBL.STUD_AVG &lt; 50) Then&lt;br /&gt;         STUD_TBL.STUD_GRADE = "C";&lt;br /&gt;      Else&lt;br /&gt;         If (STUD_TBL.STUD_AVG &gt; 50) And&lt;br /&gt;               (STUD_TBL.STUD_AVG &lt; 70) Or&lt;br /&gt;               (STUD_TBL.STUD_AVG &gt; 50) And&lt;br /&gt;                  (STUD_TBL.STUD_AVG &lt; 70) Or&lt;br /&gt;               (STUD_TBL.STUD_AVG &gt; 50) And&lt;br /&gt;                  (STUD_TBL.STUD_AVG &lt; 70) Then&lt;br /&gt;            STUD_TBL.STUD_GRADE = "B";&lt;br /&gt;         Else&lt;br /&gt;            If (STUD_TBL.STUD_AVG &gt; 70) And&lt;br /&gt;                  (STUD_TBL.STUD_AVG &lt;= 100) Or&lt;br /&gt;                  (STUD_TBL.STUD_AVG &gt; 70) And&lt;br /&gt;                     (STUD_TBL.STUD_AVG &lt;= 100) Or&lt;br /&gt;                  (STUD_TBL.STUD_AVG &gt; 70) And&lt;br /&gt;                     (STUD_TBL.STUD_AVG &lt;= 100) Then&lt;br /&gt;               STUD_TBL.STUD_GRADE = "A"&lt;br /&gt;            End-If&lt;br /&gt;         End-If&lt;br /&gt;      End-If&lt;br /&gt;   End-If&lt;br /&gt;End-If&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2388698495725806936-7975634743812794097?l=harshachowdaryworld.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://harshachowdaryworld.blogspot.com/feeds/7975634743812794097/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2388698495725806936&amp;postID=7975634743812794097' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2388698495725806936/posts/default/7975634743812794097'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2388698495725806936/posts/default/7975634743812794097'/><link rel='alternate' type='text/html' href='http://harshachowdaryworld.blogspot.com/2009/08/people-code-for-calucating-student.html' title='People Code for calucating the student marks,average and grade'/><author><name>Sri Harsha</name><uri>http://www.blogger.com/profile/07055600374301477821</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://2.bp.blogspot.com/_cv2CfEeLpVU/Sl7x0ilfPHI/AAAAAAAAAgE/e3fgUdRlTv8/S220/tin.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2388698495725806936.post-5479418876572252447</id><published>2009-08-19T22:47:00.000-07:00</published><updated>2009-08-19T22:52:03.881-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='2 level rowset code for Language selection'/><title type='text'>Sample 2 level rowset code for Language selection</title><content type='html'>When we select the the language from the drop down list then the field names in two level's should change automatically.Below is the sample rowset (RS0,RS1) code for 2 levels.&lt;br /&gt;&lt;br /&gt;Local Rowset &amp;rs0, &amp;rs1;&lt;br /&gt;&amp;field = GetField(SRI_ORGSAMP_TBL.SRI_ORGSAMP_ID);&lt;br /&gt;&amp;field1 = GetField(SRI_ORGSAMP_TBL.SRI_ORGSAMP_NAME);&lt;br /&gt;&amp;LABELID = &amp;field.Name;&lt;br /&gt;&amp;LABELID1 = &amp;field1.Name;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;/*CHINEESE LANGUAGE*/&lt;/span&gt;&lt;br /&gt;If SRI_ORGSAMP_TBL.SRI_LANGUAGE.Value = "CHIN" Or&lt;br /&gt;      SRI_ORGSAMP_TBL.SRI_LANGUAGE.Value = "" Then&lt;br /&gt;   &amp;field.Label = "GRO DI";&lt;br /&gt;   &amp;field1.Label = "GRO EMAN";&lt;br /&gt;   &amp;rs0 = GetLevel0();&lt;br /&gt;   &amp;rs1 = &amp;rs0(1).GetRowset(Scroll.SRI_EMPSAMP_TBL);&lt;br /&gt;   For &amp;i = 1 To &amp;rs1.ActiveRowCount&lt;br /&gt;      /*Variable*/&lt;br /&gt;      &amp;empid = &amp;rs1(&amp;i).GetRecord(Record.SRI_EMPSAMP_TBL).GetField(Field.SRI_EMPSAMP_ID);&lt;br /&gt;      &amp;empid.Label = "EEOLPME DI";&lt;br /&gt;      &amp;NAME = &amp;rs1(&amp;i).GetRecord(Record.SRI_EMPSAMP_TBL).GetField(Field.SRI_EMPSAMP_NAME);&lt;br /&gt;      &amp;NAME.Label = "EMAN";&lt;br /&gt;      &amp;GENDER = &amp;rs1(&amp;i).GetRecord(Record.SRI_EMPSAMP_TBL).GetField(Field.SRI_EMPSAMP_GENDER);&lt;br /&gt;      &amp;GENDER.Label = "REDNEG";&lt;br /&gt;      &amp;COUN = &amp;rs1(&amp;i).GetRecord(Record.SRI_EMPSAMP_TBL).GetField(Field.SRI_EMPSAMP_COUN);&lt;br /&gt;      &amp;COUN.Label = "GNIKROW NOITACOL";&lt;br /&gt;      &amp;DOB = &amp;rs1(&amp;i).GetRecord(Record.SRI_EMPSAMP_TBL).GetField(Field.SRI_EMPSAMP_DOB);&lt;br /&gt;      &amp;DOB.Label = "BOD";&lt;br /&gt;      &amp;DOJ = &amp;rs1(&amp;i).GetRecord(Record.SRI_EMPSAMP_TBL).GetField(Field.SRI_EMPSAMP_DOJ);&lt;br /&gt;      &amp;DOJ.Label = "JOD";&lt;br /&gt;   End-For;&lt;br /&gt;   &lt;br /&gt;End-If; &lt;br /&gt;&lt;span style="font-weight:bold;"&gt;/*END OFCHINEESE LANGUAGE*/&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;/*FRANCE LANGUAGE*/&lt;/span&gt;&lt;br /&gt;If SRI_ORGSAMP_TBL.SRI_LANGUAGE.Value = "FRAN" Or&lt;br /&gt;      SRI_ORGSAMP_TBL.SRI_LANGUAGE.Value = "" Then&lt;br /&gt;   &amp;field.Label = "ORGANI ID";&lt;br /&gt;   &amp;field1.Label = "NAMEE";&lt;br /&gt;   &amp;rs0 = GetLevel0();&lt;br /&gt;   &amp;rs1 = &amp;rs0(1).GetRowset(Scroll.SRI_EMPSAMP_TBL);&lt;br /&gt;   For &amp;i = 1 To &amp;rs1.ActiveRowCount&lt;br /&gt;      /*Variable*/&lt;br /&gt;      &amp;empid = &amp;rs1(&amp;i).GetRecord(Record.SRI_EMPSAMP_TBL).GetField(Field.SRI_EMPSAMP_ID);&lt;br /&gt;      &amp;empid.Label = "EMPOLOD ID";&lt;br /&gt;      &amp;NAME = &amp;rs1(&amp;i).GetRecord(Record.SRI_EMPSAMP_TBL).GetField(Field.SRI_EMPSAMP_NAME);&lt;br /&gt;      &amp;NAME.Label = "NAMEE";&lt;br /&gt;      &amp;GENDER = &amp;rs1(&amp;i).GetRecord(Record.SRI_EMPSAMP_TBL).GetField(Field.SRI_EMPSAMP_GENDER);&lt;br /&gt;      &amp;GENDER.Label = "DREE";&lt;br /&gt;      &amp;COUN = &amp;rs1(&amp;i).GetRecord(Record.SRI_EMPSAMP_TBL).GetField(Field.SRI_EMPSAMP_COUN);&lt;br /&gt;      &amp;COUN.Label = "Workingo Locationio";&lt;br /&gt;      &amp;DOB = &amp;rs1(&amp;i).GetRecord(Record.SRI_EMPSAMP_TBL).GetField(Field.SRI_EMPSAMP_DOB);&lt;br /&gt;      &amp;DOB.Label = "birtho";&lt;br /&gt;      &amp;DOJ = &amp;rs1(&amp;i).GetRecord(Record.SRI_EMPSAMP_TBL).GetField(Field.SRI_EMPSAMP_DOJ);&lt;br /&gt;      &amp;DOJ.Label = "joino";&lt;br /&gt;   End-For;&lt;br /&gt;   &lt;br /&gt;End-If;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;/*END OF FRANCE LANGUAGE*/&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;/*ENGLISH LANGUAGE*/&lt;/span&gt;&lt;br /&gt;If SRI_ORGSAMP_TBL.SRI_LANGUAGE.Value = "ENG" Or&lt;br /&gt;      SRI_ORGSAMP_TBL.SRI_LANGUAGE.Value = "" Then&lt;br /&gt;   &amp;field.Label = "ORGANIZATION ID";&lt;br /&gt;   &amp;field1.Label = "ORG NAME";&lt;br /&gt;   &amp;rs0 = GetLevel0();&lt;br /&gt;   &amp;rs1 = &amp;rs0(1).GetRowset(Scroll.SRI_EMPSAMP_TBL);&lt;br /&gt;   For &amp;i = 1 To &amp;rs1.ActiveRowCount&lt;br /&gt;      /*Variable*/&lt;br /&gt;      &amp;empid = &amp;rs1(&amp;i).GetRecord(Record.SRI_EMPSAMP_TBL).GetField(Field.SRI_EMPSAMP_ID);&lt;br /&gt;      &amp;empid.Label = "EMPLOYEE ID";&lt;br /&gt;      &amp;NAME = &amp;rs1(&amp;i).GetRecord(Record.SRI_EMPSAMP_TBL).GetField(Field.SRI_EMPSAMP_NAME);&lt;br /&gt;      &amp;NAMELabel = "NAME";&lt;br /&gt;      &amp;GENDER = &amp;rs1(&amp;i).GetRecord(Record.SRI_EMPSAMP_TBL).GetField(Field.SRI_EMPSAMP_GENDER);&lt;br /&gt;      &amp;GENDER.Label = "GENDER";&lt;br /&gt;      &amp;COUN = &amp;rs1(&amp;i).GetRecord(Record.SRI_EMPSAMP_TBL).GetField(Field.SRI_EMPSAMP_COUN);&lt;br /&gt;      &amp;COUN.Label = "WORKING LOCATION ";&lt;br /&gt;      &amp;DOB = &amp;rs1(&amp;i).GetRecord(Record.SRI_EMPSAMP_TBL).GetField(Field.SRI_EMPSAMP_DOB);&lt;br /&gt;      &amp;DOB.Label = "DATE OF BIRTH";&lt;br /&gt;      &amp;DOJ = &amp;rs1(&amp;i).GetRecord(Record.SRI_EMPSAMP_TBL).GetField(Field.SRI_EMPSAMP_DOJ);&lt;br /&gt;      &amp;DOJ.Label = "DATE OF JOIN";&lt;br /&gt;   End-For;&lt;br /&gt;   &lt;br /&gt;End-If;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;/*END OF ENGLISH LANGUAGE*/&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2388698495725806936-5479418876572252447?l=harshachowdaryworld.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://harshachowdaryworld.blogspot.com/feeds/5479418876572252447/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2388698495725806936&amp;postID=5479418876572252447' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2388698495725806936/posts/default/5479418876572252447'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2388698495725806936/posts/default/5479418876572252447'/><link rel='alternate' type='text/html' href='http://harshachowdaryworld.blogspot.com/2009/08/sample-2-level-rowset-code-for-language.html' title='Sample 2 level rowset code for Language selection'/><author><name>Sri Harsha</name><uri>http://www.blogger.com/profile/07055600374301477821</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://2.bp.blogspot.com/_cv2CfEeLpVU/Sl7x0ilfPHI/AAAAAAAAAgE/e3fgUdRlTv8/S220/tin.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2388698495725806936.post-7183603005448338632</id><published>2009-08-13T04:28:00.000-07:00</published><updated>2009-08-18T23:21:17.539-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='PepleCode'/><category scheme='http://www.blogger.com/atom/ns#' term='To get the OprID for the Current Session'/><title type='text'>To get the OprID for the Current Session</title><content type='html'>For getting the OprID for the current session then write the following below line of code in Record Level Save PreChange Event&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;SRI_STUORG4_TBL.SRI_STUORG_OPRID = %UserId;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2388698495725806936-7183603005448338632?l=harshachowdaryworld.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://harshachowdaryworld.blogspot.com/feeds/7183603005448338632/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2388698495725806936&amp;postID=7183603005448338632' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2388698495725806936/posts/default/7183603005448338632'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2388698495725806936/posts/default/7183603005448338632'/><link rel='alternate' type='text/html' href='http://harshachowdaryworld.blogspot.com/2009/08/to-get-oprid-for-current-session.html' title='To get the OprID for the Current Session'/><author><name>Sri Harsha</name><uri>http://www.blogger.com/profile/07055600374301477821</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://2.bp.blogspot.com/_cv2CfEeLpVU/Sl7x0ilfPHI/AAAAAAAAAgE/e3fgUdRlTv8/S220/tin.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2388698495725806936.post-6335956589198987357</id><published>2009-08-13T04:13:00.000-07:00</published><updated>2009-08-18T23:21:17.540-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='select any check box in the Grid  then the remaning check boxes in the same column should hide automatically'/><category scheme='http://www.blogger.com/atom/ns#' term='PepleCode'/><title type='text'>select any check box in the Grid  then the remaning check boxes in the same column should hide automatically</title><content type='html'>&lt;span style="font-weight:bold;"&gt;Level 0 = Org ID,Name&lt;br /&gt;Level 1 =  Org details&lt;br /&gt;Level 2 = 3 Grids (Active locations,Primary Contact,Active Departments)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;When we select any check box  then the remaning check boxes in the same column should hide automatically.And the corresponding Name (Active locations,Primary Contact,Active Departments)which is in grid  should be displayed in the Corresponding fields.&lt;br /&gt;&lt;br /&gt;Write the following below code in the Component Record Level Field change event.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Local Rowset &amp;RS0, &amp;RS1, &amp;RS2, &amp;rs4;&lt;br /&gt;&amp;RS0 = GetLevel0();&lt;br /&gt;&amp;RS1 = &amp;RS0(1).GetRowset(Scroll.SRI_STUORG1_TBL);&lt;br /&gt;&amp;CNT = 0;&lt;br /&gt;For &amp;I = 1 To &amp;RS1.ActiveRowCount&lt;br /&gt;   &amp;RS2 = &amp;RS1(&amp;I).GetRowset(Scroll.SRI_STUORG3_TBL);&lt;br /&gt;   For &amp;J = 1 To &amp;RS2.ActiveRowCount&lt;br /&gt;            &amp;chk = &amp;RS2.GetRow(&amp;J).GetRecord(Record.SRI_STUORG3_TBL).GetField(Field.SRI_ORG_PRIMARY).Value;&lt;br /&gt;           &amp;cr = CurrentRowNumber(2);&lt;br /&gt;     &lt;br /&gt;      &lt;br /&gt;      If &amp;RS2.GetRow(&amp;J).GetRecord(Record.SRI_STUORG3_TBL).GetField(Field.SRI_ORG_PRIMARY).Value = "Y" Then&lt;br /&gt;          &lt;br /&gt;         &amp;id = &amp;RS2.GetRow(&amp;J).GetRecord(Record.SRI_STUORG3_TBL).GetField(Field.SRI_ORG_CONTACTNO).Value;&lt;br /&gt;         &amp;RS2.GetRow(&amp;J).GetRecord(Record.SRI_STUORG3_TBL).GetField(Field.SRI_ORG_PRIMARYCOU).Value = &amp;id;&lt;br /&gt;         &lt;br /&gt;         &lt;br /&gt;         &amp;CNT = &amp;CNT + 1;&lt;br /&gt;         &lt;br /&gt;         For &amp;p = 1 To &amp;RS2.ActiveRowCount&lt;br /&gt;            REM WinMessage("in for ", 0);&lt;br /&gt;            &amp;RS2.GetRow(&amp;p).GetRecord(Record.SRI_STUORG3_TBL).GetField(Field.SRI_ORG_PRIMARY).Visible = False;&lt;br /&gt;         End-For;&lt;br /&gt;         &amp;RS2.GetRow(&amp;cr).GetRecord(Record.SRI_STUORG3_TBL).GetField(Field.SRI_ORG_PRIMARY).Visible = True;&lt;br /&gt;         REM   WinMessage("count " | &amp;CNT, 0);&lt;br /&gt;      End-If;&lt;br /&gt;      &lt;br /&gt;      If &amp;RS2.GetRow(&amp;J).GetRecord(Record.SRI_STUORG3_TBL).GetField(Field.SRI_ORG_PRIMARY).Value = "N" And&lt;br /&gt;            &amp;CNT = 0 Then&lt;br /&gt;         &lt;br /&gt;         &amp;RS2.GetRow(&amp;J).GetRecord(Record.SRI_STUORG3_TBL).GetField(Field.SRI_ORG_PRIMARYCOU).Value = &amp;id;&lt;br /&gt;         REM  WinMessage("in if1", 0);&lt;br /&gt;         &amp;RS2.GetRow(&amp;J).GetRecord(Record.SRI_STUORG3_TBL).GetField(Field.SRI_ORG_PRIMARY).Visible = True;&lt;br /&gt;         &lt;br /&gt;      End-If;&lt;br /&gt;      &lt;br /&gt;      &lt;br /&gt;      If &amp;RS2.GetRow(&amp;J).GetRecord(Record.SRI_STUORG3_TBL).GetField(Field.SRI_ORG_PRIMARY).Value = "N" And&lt;br /&gt;            &amp;CNT &gt; 0 Then&lt;br /&gt;         &lt;br /&gt;         &amp;RS2.GetRow(&amp;J).GetRecord(Record.SRI_STUORG3_TBL).GetField(Field.SRI_ORG_PRIMARYCOU).Value = &amp;id;&lt;br /&gt;         If &amp;J &lt;&gt; &amp;cr And&lt;br /&gt;               &amp;RS2.GetRow(&amp;cr).GetRecord(Record.SRI_STUORG3_TBL).GetField(Field.SRI_ORG_PRIMARY).Value = "Y" Then&lt;br /&gt;            REM    WinMessage("in if2", 0);&lt;br /&gt;            &amp;RS2.GetRow(&amp;J).GetRecord(Record.SRI_STUORG3_TBL).GetField(Field.SRI_ORG_PRIMARY).Visible = False;&lt;br /&gt;         End-If;&lt;br /&gt;         &lt;br /&gt;         &lt;br /&gt;         If &amp;RS2.GetRow(&amp;cr).GetRecord(Record.SRI_STUORG3_TBL).GetField(Field.SRI_ORG_PRIMARY).Value = "N" Then&lt;br /&gt;            &amp;RS2.GetRow(&amp;J).GetRecord(Record.SRI_STUORG3_TBL).GetField(Field.SRI_ORG_PRIMARYCOU).Value = &amp;id;&lt;br /&gt;            For &amp;u = 1 To &amp;RS2.ActiveRowCount&lt;br /&gt;               REM    WinMessage("in if2", 0);&lt;br /&gt;               &amp;RS2.GetRow(&amp;u).GetRecord(Record.SRI_STUORG3_TBL).GetField(Field.SRI_ORG_PRIMARY).Visible = True;&lt;br /&gt;            End-For;&lt;br /&gt;         End-If;&lt;br /&gt;      End-If;   &lt;br /&gt;      &lt;br /&gt;   End-For;&lt;span style="font-weight:bold;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;End-For;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2388698495725806936-6335956589198987357?l=harshachowdaryworld.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://harshachowdaryworld.blogspot.com/feeds/6335956589198987357/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2388698495725806936&amp;postID=6335956589198987357' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2388698495725806936/posts/default/6335956589198987357'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2388698495725806936/posts/default/6335956589198987357'/><link rel='alternate' type='text/html' href='http://harshachowdaryworld.blogspot.com/2009/08/select-any-check-box-in-grid-then.html' title='select any check box in the Grid  then the remaning check boxes in the same column should hide automatically'/><author><name>Sri Harsha</name><uri>http://www.blogger.com/profile/07055600374301477821</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://2.bp.blogspot.com/_cv2CfEeLpVU/Sl7x0ilfPHI/AAAAAAAAAgE/e3fgUdRlTv8/S220/tin.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2388698495725806936.post-8634229592321079080</id><published>2009-08-11T21:30:00.000-07:00</published><updated>2009-08-18T23:21:17.541-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Fill color in grid Cell'/><category scheme='http://www.blogger.com/atom/ns#' term='PepleCode'/><title type='text'>Fill color in grid Cell</title><content type='html'>&lt;span style="font-weight:bold;"&gt;FOR &amp;Z = 1 TO &amp;RS.ACTIVEROWCOUNT&lt;br /&gt;&amp;RS(&amp;Z).RSRECNAME.RECFIELDNAME.Style = "STYLEVALUE";&lt;br /&gt;END-FOR&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2388698495725806936-8634229592321079080?l=harshachowdaryworld.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://harshachowdaryworld.blogspot.com/feeds/8634229592321079080/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2388698495725806936&amp;postID=8634229592321079080' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2388698495725806936/posts/default/8634229592321079080'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2388698495725806936/posts/default/8634229592321079080'/><link rel='alternate' type='text/html' href='http://harshachowdaryworld.blogspot.com/2009/08/fill-color-in-grid-cell.html' title='Fill color in grid Cell'/><author><name>Sri Harsha</name><uri>http://www.blogger.com/profile/07055600374301477821</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://2.bp.blogspot.com/_cv2CfEeLpVU/Sl7x0ilfPHI/AAAAAAAAAgE/e3fgUdRlTv8/S220/tin.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2388698495725806936.post-5870698554843106179</id><published>2009-08-11T05:16:00.000-07:00</published><updated>2009-08-18T23:21:17.541-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Date display format on Page'/><category scheme='http://www.blogger.com/atom/ns#' term='PepleCode'/><title type='text'>Date display format on Page</title><content type='html'>&lt;span style="font-weight:bold;"&gt;In Order to change the date format through Personalization, please follow the steps given below:&lt;br /&gt;&lt;br /&gt;1. Navigate, Root &gt; People Tools &gt; Personalization &gt; Personalization Options &gt; Search&lt;br /&gt;&lt;br /&gt;Here, you will get the option for the different application for which you want to change the Date Format or you can also choose PPTL (People Tools) which change the Date Format in the Tools itself. Select, PPTL.&lt;br /&gt;&lt;br /&gt;2. Now, you can see there is a Definition---&gt; DFRMT, for the Date Format.&lt;br /&gt;&lt;br /&gt;3. On the Top of this page and beside the Definition Tab, you will find the Format Tab, just click on this Tab.&lt;br /&gt;&lt;br /&gt;4. Now, click on the "Set Option Default Value".&lt;br /&gt;&lt;br /&gt;5. Change the Option Default Value as per your requirement MMDDYY and click OK.&lt;br /&gt;&lt;br /&gt;6. Save the changes.&lt;br /&gt;&lt;br /&gt;========================================&lt;br /&gt;========================================&lt;br /&gt;&lt;br /&gt;If you want to change the Date Format for a Specific User on specific page then you can also do this through People Coding.&lt;br /&gt;&lt;br /&gt;You can also play with the below code with the help of %oprid, like if %oprid then the below code or w.r.t roles through "IsUserInRole" function.&lt;br /&gt;&lt;br /&gt;There is one built-in function "DateTimeToLocalizedString". You can use this if you want to change the date format through people code for your PIA pages.&lt;br /&gt;&lt;br /&gt;How to use:&lt;br /&gt;&lt;br /&gt;Example 1:&lt;br /&gt;&amp;String = DateTimeToLocalizedString(&amp;Date, "M/d/y");&lt;br /&gt;/* if you are picking the date from any record field and using &amp;Date for that field */&lt;br /&gt;&lt;br /&gt;Example 2:&lt;br /&gt;&amp;String = DateTimeToLocalizedString(%Date, "M/d/y");&lt;br /&gt;/* if you want to pick the system date and want to use it on your page with different formats. */&lt;br /&gt;&lt;br /&gt;-- Assign this String variable (&amp;String) to your desired field.&lt;br /&gt;&lt;br /&gt;Note: Here 'd' for date and 'y' for year both must be in smaller letters only. And, 'M' for months should be in Caps.&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2388698495725806936-5870698554843106179?l=harshachowdaryworld.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://harshachowdaryworld.blogspot.com/feeds/5870698554843106179/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2388698495725806936&amp;postID=5870698554843106179' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2388698495725806936/posts/default/5870698554843106179'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2388698495725806936/posts/default/5870698554843106179'/><link rel='alternate' type='text/html' href='http://harshachowdaryworld.blogspot.com/2009/08/date-display-format-on-page.html' title='Date display format on Page'/><author><name>Sri Harsha</name><uri>http://www.blogger.com/profile/07055600374301477821</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://2.bp.blogspot.com/_cv2CfEeLpVU/Sl7x0ilfPHI/AAAAAAAAAgE/e3fgUdRlTv8/S220/tin.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2388698495725806936.post-563050975827565094</id><published>2009-08-11T04:39:00.000-07:00</published><updated>2009-08-18T23:21:17.542-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='For getting the current DAteTime when ever we change or edit any field i'/><category scheme='http://www.blogger.com/atom/ns#' term='PepleCode'/><title type='text'>For getting the current DAteTime when ever we change or edit any field i</title><content type='html'>Write the following below code in the &lt;span style="font-weight:bold;"&gt;Record Level in Save Prechange&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Local Rowset &amp;RS0, &amp;RS1, &amp;RS2;&lt;br /&gt;&lt;br /&gt;&amp;RS0 = GetLevel0();&lt;br /&gt;&amp;RS1 = &amp;RS0(1).GetRowset(Scroll.SRI_STUORG1_TBL);&lt;br /&gt;For &amp;I = 1 To &amp;RS1.ActiveRowCount&lt;br /&gt;   &amp;RS2 = &amp;RS1(&amp;I).GetRowset(Scroll.SRI_STUORG4_TBL);&lt;br /&gt;   For &amp;J = 1 To &amp;RS2.ActiveRowCount&lt;br /&gt;      &lt;br /&gt;      If &amp;RS2.GetRow(&amp;J).IsChanged Then&lt;br /&gt;         &lt;br /&gt;         &amp;RS2.GetRow(&amp;I).GetRecord(Record.SRI_STUORG4_TBL).GetField(Field.SRI_STUORG_DTTIME).Value = %Datetime;&lt;br /&gt;      End-If;&lt;br /&gt;      &lt;br /&gt;   End-For;&lt;br /&gt;End-For;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2388698495725806936-563050975827565094?l=harshachowdaryworld.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://harshachowdaryworld.blogspot.com/feeds/563050975827565094/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2388698495725806936&amp;postID=563050975827565094' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2388698495725806936/posts/default/563050975827565094'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2388698495725806936/posts/default/563050975827565094'/><link rel='alternate' type='text/html' href='http://harshachowdaryworld.blogspot.com/2009/08/for-getting-current-datetime-when-ever.html' title='For getting the current DAteTime when ever we change or edit any field i'/><author><name>Sri Harsha</name><uri>http://www.blogger.com/profile/07055600374301477821</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://2.bp.blogspot.com/_cv2CfEeLpVU/Sl7x0ilfPHI/AAAAAAAAAgE/e3fgUdRlTv8/S220/tin.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2388698495725806936.post-8512437729199075667</id><published>2009-08-09T22:56:00.000-07:00</published><updated>2009-08-18T23:21:17.542-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Inserting a New Scroll Row from within the Same Scroll'/><category scheme='http://www.blogger.com/atom/ns#' term='PepleCode'/><title type='text'>Inserting a New Scroll Row from within the Same Scroll</title><content type='html'>In PeopleCode, when inserting or deleting a row on a scroll, it is required that you perform the action on a parent row of the rowset being inserted/deleted to. PeopleTools doesn’t allow PeopleCode (using the built-in functions/methods InsertRow and DeleteRow) to insert or delete a row on the same scroll within which it is currently running. If you attempt to do this, PeopleTools will give an error complaining about changing the current program context.&lt;br /&gt;&lt;br /&gt;However, there are some cases where inserting within the same scroll might be desirable. For example, based on the data entered on a row of a scroll, a new matching row must be inserted within the same scroll.&lt;br /&gt;&lt;br /&gt;Background&lt;br /&gt;&lt;br /&gt;The Rowset class has a SelectNew method, which is quite similar to the Select method. The main difference is that rows populated through SelectNew are marked as new in the component buffer. Both Select and SelectNew allows the record source of the data being loaded to the rowset to be different from the primary record of the rowset. There is a requirement, however, that the source record must contain at least one of the key fields in the primary record. Though, none of the fields in the source record have to be keys as well.&lt;br /&gt;The Technique&lt;br /&gt;&lt;br /&gt;Step 1. Create a new Dynamic View record containing at least one of the keys of the primary record of the scroll. For this tutorial, assume that the name of the new record is SCROLL_INS_ROW. This is important: none of the fields in this record must be set to a key.&lt;br /&gt;&lt;br /&gt;Step 2. Set the SQL of the view to the following:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;SELECT NULL&lt;br /&gt;FROM PS_INSTALLATION&lt;br /&gt;&lt;br /&gt;Of course, if you’ve included more fields, then SELECT the appropriate number of NULL’s on the SQL.&lt;br /&gt;&lt;br /&gt;Step 3. The PeopleCode for inserting a row within the same scroll would be the following:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Local Rowset &amp;this_rowset = GetRowset();&lt;br /&gt;&amp;this_rowset.SelectNew(Record.SCROLL_INS_ROW);&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2388698495725806936-8512437729199075667?l=harshachowdaryworld.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://harshachowdaryworld.blogspot.com/feeds/8512437729199075667/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2388698495725806936&amp;postID=8512437729199075667' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2388698495725806936/posts/default/8512437729199075667'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2388698495725806936/posts/default/8512437729199075667'/><link rel='alternate' type='text/html' href='http://harshachowdaryworld.blogspot.com/2009/08/inserting-new-scroll-row-from-within.html' title='Inserting a New Scroll Row from within the Same Scroll'/><author><name>Sri Harsha</name><uri>http://www.blogger.com/profile/07055600374301477821</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://2.bp.blogspot.com/_cv2CfEeLpVU/Sl7x0ilfPHI/AAAAAAAAAgE/e3fgUdRlTv8/S220/tin.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2388698495725806936.post-1787240843973823883</id><published>2009-08-09T22:41:00.002-07:00</published><updated>2009-08-18T23:21:17.543-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Month difference PeopleCode'/><category scheme='http://www.blogger.com/atom/ns#' term='PepleCode'/><title type='text'>Month difference PeopleCode</title><content type='html'>Function diff_months(&amp;DATE1 As date, &amp;DATE2 As date) Returns number;&lt;br /&gt;   Local integer &amp;YEAR1 = Year(&amp;DATE1);&lt;br /&gt;   Local integer &amp;MONTH1 = Month(&amp;DATE1);&lt;br /&gt;   Local integer &amp;DAY1 = Day(&amp;DATE1);&lt;br /&gt;   Local integer &amp;YEAR2 = Year(&amp;DATE2);&lt;br /&gt;   Local integer &amp;MONTH2 = Month(&amp;DATE2);&lt;br /&gt;   Local integer &amp;DAY2 = Day(&amp;DATE2);&lt;br /&gt;   If &amp;DATE1 &lt;= &amp;DATE2 Then&lt;br /&gt;      If &amp;DAY1 &gt; &amp;DAY2 Then&lt;br /&gt;         If &amp;MONTH1 = 12 Then&lt;br /&gt;            &amp;MONTH1 = 1;&lt;br /&gt;            &amp;YEAR1 = &amp;YEAR1 + 1;&lt;br /&gt;         Else&lt;br /&gt;            &amp;MONTH1 = &amp;MONTH1 + 1;&lt;br /&gt;         End-If;&lt;br /&gt;      End-If;&lt;br /&gt;   Else&lt;br /&gt;      If &amp;DAY1 &lt; &amp;DAY2 Then&lt;br /&gt;         If &amp;MONTH2 = 12 Then&lt;br /&gt;            &amp;MONTH2 = 1;&lt;br /&gt;            &amp;YEAR2 = &amp;YEAR2 + 1;&lt;br /&gt;         Else&lt;br /&gt;            &amp;MONTH2 = &amp;MONTH2 + 1;&lt;br /&gt;         End-If;&lt;br /&gt;      End-If;&lt;br /&gt;   End-If;&lt;br /&gt;   Local integer &amp;DIFF_MONTHS = 12 * (&amp;YEAR2 - &amp;YEAR1) + &amp;MONTH2 - &amp;MONTH1;&lt;br /&gt;   Return &amp;DIFF_MONTHS;&lt;br /&gt;   &lt;br /&gt;End-Function;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2388698495725806936-1787240843973823883?l=harshachowdaryworld.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://harshachowdaryworld.blogspot.com/feeds/1787240843973823883/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2388698495725806936&amp;postID=1787240843973823883' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2388698495725806936/posts/default/1787240843973823883'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2388698495725806936/posts/default/1787240843973823883'/><link rel='alternate' type='text/html' href='http://harshachowdaryworld.blogspot.com/2009/08/month-difference-peoplecode.html' title='Month difference PeopleCode'/><author><name>Sri Harsha</name><uri>http://www.blogger.com/profile/07055600374301477821</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://2.bp.blogspot.com/_cv2CfEeLpVU/Sl7x0ilfPHI/AAAAAAAAAgE/e3fgUdRlTv8/S220/tin.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2388698495725806936.post-4489724079840670813</id><published>2009-08-09T22:41:00.001-07:00</published><updated>2009-08-09T22:41:52.212-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='File operations using DOS commands in SQR'/><title type='text'>File operations using DOS commands in SQR</title><content type='html'>&lt;span style="font-weight:bold;"&gt;We can use the following as an sqc, for performing file operations in SQR. &lt;br /&gt;&lt;br /&gt;!*********************************************************************&lt;br /&gt;!Program Name : FileOprs.sqc&lt;br /&gt;!Description        : File operations using DOS commands.&lt;br /&gt;!*********************************************************************&lt;br /&gt;&lt;br /&gt;!*********************************************************************&lt;br /&gt;!Procedure Name : Make_Dir&lt;br /&gt;!Description        : Creates a new path based on the input. Path must be&lt;br /&gt;!                        a complete directory tree listing.&lt;br /&gt;!Usage              : Do Make_Dir($Directory_NewPath)&lt;br /&gt;!*********************************************************************&lt;br /&gt;begin-procedure  Make_Dir($NewPath)&lt;br /&gt;#debugy show ‘In Procedure : Make_Dir’&lt;br /&gt;&lt;br /&gt;Let $Commmand_line = ‘cmd /c mkdir ‘ || $NewPath&lt;br /&gt;Do Exec_Cmd($Commmand_line)&lt;br /&gt;&lt;br /&gt;end-procedure ! Make_Dir&lt;br /&gt;&lt;br /&gt;!*********************************************************************&lt;br /&gt;!Procedure Name : Exec_Cmd&lt;br /&gt;!Description        : Executes $Commmand_line on the system and reports&lt;br /&gt;!                         errors for debugging.&lt;br /&gt;!Usage               : Do Exec_Cmd($Commmand_line)&lt;br /&gt;!*********************************************************************&lt;br /&gt;begin-procedure  Exec_Cmd($Commmand_line)&lt;br /&gt;#debugy show ‘In Procedure : Exec_Cmd’&lt;br /&gt;&lt;br /&gt;call system using $Commmand_line #status nowait&lt;br /&gt;If #status &lt;&gt; 0&lt;br /&gt;    #debugy show ‘Command ‘ $Commmand_line ‘ failed to execute.’&lt;br /&gt;End-If&lt;br /&gt;&lt;br /&gt;end-procedure ! Exec_Cmd&lt;br /&gt;&lt;br /&gt;!*********************************************************************&lt;br /&gt;!Procedure Name : Copy_Files&lt;br /&gt;!Description : Copy files from old to new path. Old information should be of&lt;br /&gt;!       form \pathname\filename, while new information can just be a path.&lt;br /&gt;!Usage               : Do Copy_Files($old_file_name, $new_file_name)&lt;br /&gt;!*********************************************************************&lt;br /&gt;begin-procedure  Copy_Files($old, $new)&lt;br /&gt;#debugy show ‘In Procedure : Copy_Files’&lt;br /&gt;&lt;br /&gt;Let $Commmand_line = ‘cmd /c copy ‘ || $old || ‘ ‘ || $new&lt;br /&gt;Do Exec_Cmd($Commmand_line)&lt;br /&gt;&lt;br /&gt;end-procedure ! Copy_Files&lt;br /&gt;&lt;br /&gt;!*********************************************************************&lt;br /&gt;!Procedure Name : Move_Files&lt;br /&gt;!Description    : Move files from old to new path. Old information should be of&lt;br /&gt;!           form \pathname\filename, while new information can just be a path.&lt;br /&gt;!Usage               : Do Move_Files($old_file_name, $new_file_name)&lt;br /&gt;!*********************************************************************&lt;br /&gt;begin-procedure  Move_Files($old, $new)&lt;br /&gt;#debugy show ‘In Procedure : Move_Files’&lt;br /&gt;&lt;br /&gt;Let $Commmand_line = ‘cmd /c move ‘ || $old || ‘ ‘ || $new&lt;br /&gt;Do Exec_Cmd($Commmand_line)&lt;br /&gt;&lt;br /&gt;end-procedure ! Move_Files&lt;br /&gt;&lt;br /&gt;!*********************************************************************&lt;br /&gt;!Procedure Name : Delete_Files&lt;br /&gt;!Description        : Deletes the files passed in variable $files&lt;br /&gt;!Usage               :  Do Delete_Files($files)&lt;br /&gt;!*********************************************************************&lt;br /&gt;begin-procedure  Delete_Files($files)&lt;br /&gt;#debugy show ‘In Procedure : Delete_Files’&lt;br /&gt;&lt;br /&gt;Let $Commmand_line = ‘cmd /c del ‘ || $files&lt;br /&gt;Do Exec_Cmd($Commmand_line)&lt;br /&gt;&lt;br /&gt;end-procedure ! Delete_Files&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2388698495725806936-4489724079840670813?l=harshachowdaryworld.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://harshachowdaryworld.blogspot.com/feeds/4489724079840670813/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2388698495725806936&amp;postID=4489724079840670813' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2388698495725806936/posts/default/4489724079840670813'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2388698495725806936/posts/default/4489724079840670813'/><link rel='alternate' type='text/html' href='http://harshachowdaryworld.blogspot.com/2009/08/file-operations-using-dos-commands-in.html' title='File operations using DOS commands in SQR'/><author><name>Sri Harsha</name><uri>http://www.blogger.com/profile/07055600374301477821</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://2.bp.blogspot.com/_cv2CfEeLpVU/Sl7x0ilfPHI/AAAAAAAAAgE/e3fgUdRlTv8/S220/tin.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2388698495725806936.post-6788389645737215019</id><published>2009-08-09T22:17:00.000-07:00</published><updated>2009-08-09T22:33:48.575-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Running an SQR from within your PeopleCode program'/><title type='text'>Running an SQR from within your PeopleCode program</title><content type='html'>The best and safest way to launch an SQR program is to use the PeopleCode functions &lt;span style="font-weight:bold;"&gt;CreateProcessRequest()&lt;/span&gt; and &lt;span style="font-weight:bold;"&gt;Schedule()&lt;/span&gt;. &lt;br /&gt;&lt;br /&gt;The CreateProcessRequest function allows you to create a ProcessRequest object. &lt;br /&gt;The CreateProccessRequest function takes 2 arguments. The Process Type and the Process Name.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;REM Declare your Variables;&lt;br /&gt;Local ProcessRequest &amp;MYRQST;&lt;br /&gt;Local String &amp;MySQR;&lt;br /&gt;&amp;MySQR = "DDDAUDIT"&lt;br /&gt;REM Create My Process Request Object;&lt;br /&gt;&amp;MYRQST = CreateProcessRequest("SQR Process", &amp;MySQR);&lt;br /&gt;&lt;br /&gt;REM Set Properties of My Process Request Object;&lt;br /&gt;&amp;MYRQST.RunControlID = "MYRUNCNTRL_ID"&lt;br /&gt;&lt;br /&gt;REM Set Properties of My Process Request Object;&lt;br /&gt;&amp;MYRQST.SetOutputOption("Web", "PDF", "", &amp;MySQR); &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;The above example creates a ProcessRequest object for the DDDAUDIT SQR named &amp;MYRQST.  Also specified Run Control ID and the output options. I can now take this Object and use the Schedule() method agains it to Schedule the SQR. Here is an example.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;&amp;MYRQST.Schedule();&lt;br /&gt;If &amp;MYRQST.Status = 0 then&lt;br /&gt;/* Schedule succeeded. */&lt;br /&gt;Else&lt;br /&gt;/* Process (job) not scheduled, do error processing */&lt;br /&gt;End-If;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2388698495725806936-6788389645737215019?l=harshachowdaryworld.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://harshachowdaryworld.blogspot.com/feeds/6788389645737215019/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2388698495725806936&amp;postID=6788389645737215019' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2388698495725806936/posts/default/6788389645737215019'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2388698495725806936/posts/default/6788389645737215019'/><link rel='alternate' type='text/html' href='http://harshachowdaryworld.blogspot.com/2009/08/running-sqr-from-within-your-peoplecode.html' title='Running an SQR from within your PeopleCode program'/><author><name>Sri Harsha</name><uri>http://www.blogger.com/profile/07055600374301477821</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://2.bp.blogspot.com/_cv2CfEeLpVU/Sl7x0ilfPHI/AAAAAAAAAgE/e3fgUdRlTv8/S220/tin.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2388698495725806936.post-1698725900923350295</id><published>2009-08-09T22:08:00.000-07:00</published><updated>2009-08-18T23:21:17.544-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Date related calucations'/><category scheme='http://www.blogger.com/atom/ns#' term='PepleCode'/><title type='text'>Date related calucations</title><content type='html'>Local date &amp;From_Date, &amp;To_Dt;&lt;br /&gt;&lt;br /&gt;&amp;Duration = 0;&lt;br /&gt;&amp;Tot_Holi = 0;&lt;br /&gt;&amp;Sat = 0;&lt;br /&gt;&amp;Sun = 0;&lt;br /&gt;&lt;br /&gt;&amp;From_Dt = SRI_STUMOD_TBL.SRI_STUAB_STD.Value;&lt;br /&gt;&amp;To_Dt = SRI_STUMOD_TBL.SRI_STUAB_END.Value;&lt;br /&gt;&lt;br /&gt;While (&amp;From_Dt &lt;= &amp;To_Dt);&lt;br /&gt;   &amp;From_Dt = AddToDate(&amp;From_Dt, 0, 0, 1);&lt;br /&gt;   If (Weekday(&amp;From_Dt) = 7) Then&lt;br /&gt;      &amp;Sat = &amp;Sat + 1;&lt;br /&gt;   End-If;&lt;br /&gt;   If (Weekday(&amp;From_Dt) = 1) Then&lt;br /&gt;      &amp;Sun = &amp;Sun + 1;&lt;br /&gt;   End-If;&lt;br /&gt;   If Weekday(&amp;From_Dt) &lt;&gt; 7 And&lt;br /&gt;         Weekday(&amp;From_Dt) &lt;&gt; 1 And&lt;br /&gt;         &amp;flag &lt;&gt; "x" Then&lt;br /&gt;      &amp;Duration = &amp;Duration + 1;&lt;br /&gt;   End-If;&lt;br /&gt;   &lt;br /&gt;   SQLExec("select 'x' from PS_HOLIDAY_DATE WHERE HOLIDAY=:1", &amp;From_Dt, &amp;flag);&lt;br /&gt;   If &amp;flag = "x" Then&lt;br /&gt;      &amp;Tot_Holi = &amp;Tot_Holi + 1;&lt;br /&gt;   End-If; &lt;br /&gt;&lt;br /&gt;   &lt;br /&gt;End-While;&lt;br /&gt;SRI_STUMOD_TBL.SRI_STUAB_SAT.Value = &amp;Sat;&lt;br /&gt;&amp;Sat = 0;&lt;br /&gt;SRI_STUMOD_TBL.SRI_STUAB_SUN.Value = &amp;Sun;&lt;br /&gt;&amp;Sun =0;&lt;br /&gt;SRI_STUMOD_TBL.SRI_STUAB_DURATION.Value = &amp;Duration;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2388698495725806936-1698725900923350295?l=harshachowdaryworld.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://harshachowdaryworld.blogspot.com/feeds/1698725900923350295/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2388698495725806936&amp;postID=1698725900923350295' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2388698495725806936/posts/default/1698725900923350295'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2388698495725806936/posts/default/1698725900923350295'/><link rel='alternate' type='text/html' href='http://harshachowdaryworld.blogspot.com/2009/08/local-date-0-0-0-0-sristumodtbl.html' title='Date related calucations'/><author><name>Sri Harsha</name><uri>http://www.blogger.com/profile/07055600374301477821</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://2.bp.blogspot.com/_cv2CfEeLpVU/Sl7x0ilfPHI/AAAAAAAAAgE/e3fgUdRlTv8/S220/tin.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2388698495725806936.post-5334926136679891420</id><published>2009-08-09T22:06:00.000-07:00</published><updated>2009-08-18T23:21:17.544-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Date related calucations using rowsets'/><category scheme='http://www.blogger.com/atom/ns#' term='PepleCode'/><title type='text'>Date related calucations using rowsets</title><content type='html'>Local Rowset &amp;RS0, &amp;RS1;&lt;br /&gt;Local date &amp;From_Date, &amp;To_Dt;&lt;br /&gt;&amp;Duration = 0;&lt;br /&gt;&amp;Tot_Holi = 0;&lt;br /&gt;&amp;Sat = 0;&lt;br /&gt;&amp;Sun = 0;&lt;br /&gt;&amp;RS0 = GetLevel0();&lt;br /&gt;&amp;RS1 = &amp;RS0(1).GetRowset(Scroll.SRI_STUMOD_TBL);&lt;br /&gt;For &amp;I = 1 To &amp;RS1.ActiveRowCount&lt;br /&gt;&amp;From_Date=&amp;RS1(I).GetRecord(Record.SRI_STUMOD_TBL).GetField(Field.SRI_STUAB_STD).Value;&lt;br /&gt;&amp;To_Dt =&amp;RS1(&amp;I).GetRecord(Record.SRI_STUMOD_TBL).GetField(Field.SRI_STUAB_END).Value;&lt;br /&gt;    While (&amp;From_Date &lt;= &amp;To_Dt);&lt;br /&gt;      &lt;br /&gt;     If (Weekday(&amp;From_Date) = 7) Then&lt;br /&gt;         &amp;Sat = &amp;Sat + 1;&lt;br /&gt;      End-If;&lt;br /&gt;                &lt;br /&gt;      If (Weekday(&amp;From_Date) = 1) Then&lt;br /&gt;         &amp;Sun = &amp;Sun + 1;&lt;br /&gt;      End-If;&lt;br /&gt;      &lt;br /&gt;      If Weekday(&amp;From_Date) &lt;&gt; 7 And&lt;br /&gt;            Weekday(&amp;From_Date) &lt;&gt; 1 And&lt;br /&gt;            &amp;flag &lt;&gt; "x" Then&lt;br /&gt;         &amp;Duration = &amp;Duration + 1;&lt;br /&gt;         &lt;br /&gt;      End-If;&lt;br /&gt;      &amp;From_Date = AddToDate(&amp;From_Date, 0, 0, 1);&lt;br /&gt;      &lt;br /&gt;   End-While;&lt;br /&gt;    &lt;br /&gt;   &amp;RS1(&amp;I).GetRecord(Record.SRI_STUMOD_TBL).GetField(Field.SRI_STUAB_DURATION).Value = &amp;Duration;&lt;br /&gt;   If &amp;Duration &gt; 20 Then&lt;br /&gt;      Error MsgGet(11100, 180, "Only 20 leaves per annum please select the correct dates");&lt;br /&gt;   End-If;&lt;br /&gt;   &lt;br /&gt;   &amp;RS1(&amp;I).GetRecord(Record.SRI_STUMOD_TBL).GetField(Field.SRI_STUAB_SAT).Value = &amp;Sat;&lt;br /&gt;   WinMessage(&amp;Sat, 0);&lt;br /&gt;   &amp;Sat = 0;&lt;br /&gt;   &lt;br /&gt;   &amp;RS1(&amp;I).GetRecord(Record.SRI_STUMOD_TBL).GetField(Field.SRI_STUAB_SUN).Value = &amp;Sun;&lt;br /&gt;   &amp;Sun = 0;&lt;br /&gt;      &lt;br /&gt;End-For;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2388698495725806936-5334926136679891420?l=harshachowdaryworld.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://harshachowdaryworld.blogspot.com/feeds/5334926136679891420/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2388698495725806936&amp;postID=5334926136679891420' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2388698495725806936/posts/default/5334926136679891420'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2388698495725806936/posts/default/5334926136679891420'/><link rel='alternate' type='text/html' href='http://harshachowdaryworld.blogspot.com/2009/08/date-related-calucations-using-rowsets.html' title='Date related calucations using rowsets'/><author><name>Sri Harsha</name><uri>http://www.blogger.com/profile/07055600374301477821</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://2.bp.blogspot.com/_cv2CfEeLpVU/Sl7x0ilfPHI/AAAAAAAAAgE/e3fgUdRlTv8/S220/tin.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2388698495725806936.post-3274521956359992576</id><published>2009-07-30T02:10:00.000-07:00</published><updated>2010-01-05T20:43:43.875-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='PepleCode'/><title type='text'>Derived/ Work record</title><content type='html'>When we want to call another component (The fields(Student ID and Name) in level 3 should be displayed in the other page fields)when we click on the hyperlink or Push button in Grid then &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;1.Create the Derived/ Work record with appropriate fields(Make sure that they are key fields).&lt;br /&gt;2.Put the fields in the level 0 in both the pages.&lt;br /&gt;3.Assign the values(Student ID  and Name) &lt;br /&gt;4.Use the Domaodalcomponent function&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;SYNTAX:&lt;/span&gt;DoModalComponent(MENUNAME.menuname, BARNAME.barname, ITEMNAME.menuitem_name, PAGE.component_item_name, action, RECORD.shared_record_name [, keylist])&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2388698495725806936-3274521956359992576?l=harshachowdaryworld.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://harshachowdaryworld.blogspot.com/feeds/3274521956359992576/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2388698495725806936&amp;postID=3274521956359992576' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2388698495725806936/posts/default/3274521956359992576'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2388698495725806936/posts/default/3274521956359992576'/><link rel='alternate' type='text/html' href='http://harshachowdaryworld.blogspot.com/2009/07/derived-work-record.html' title='Derived/ Work record'/><author><name>Sri Harsha</name><uri>http://www.blogger.com/profile/07055600374301477821</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://2.bp.blogspot.com/_cv2CfEeLpVU/Sl7x0ilfPHI/AAAAAAAAAgE/e3fgUdRlTv8/S220/tin.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2388698495725806936.post-3895554612654032072</id><published>2009-07-30T00:04:00.000-07:00</published><updated>2009-08-18T23:21:17.589-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Domodal component'/><category scheme='http://www.blogger.com/atom/ns#' term='Bar'/><category scheme='http://www.blogger.com/atom/ns#' term='Item name&apos;s to use in Transfer'/><category scheme='http://www.blogger.com/atom/ns#' term='To know the Menu'/><category scheme='http://www.blogger.com/atom/ns#' term='PepleCode'/><category scheme='http://www.blogger.com/atom/ns#' term='Transfer Exact'/><title type='text'>To know the Menu,Bar,Item name's to use in Transfer,Transfer Exact,Domodal component</title><content type='html'>&lt;span style="font-weight:bold;"&gt;To know the Menu,Bar,Item name's to use in Transfer,Transfer Exact,Domodal component(when we click on the hyper link or push button in grid to transfer to another component) use the following below SQL &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;select * &lt;br /&gt;from PSAUTHITEM&lt;br /&gt;where MENUNAME = 'your menu name'&lt;br /&gt;and PNLITEMNAME = 'your page name'&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2388698495725806936-3895554612654032072?l=harshachowdaryworld.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://harshachowdaryworld.blogspot.com/feeds/3895554612654032072/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2388698495725806936&amp;postID=3895554612654032072' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2388698495725806936/posts/default/3895554612654032072'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2388698495725806936/posts/default/3895554612654032072'/><link rel='alternate' type='text/html' href='http://harshachowdaryworld.blogspot.com/2009/07/to-know-menubaritem-names-to-use-in.html' title='To know the Menu,Bar,Item name&apos;s to use in Transfer,Transfer Exact,Domodal component'/><author><name>Sri Harsha</name><uri>http://www.blogger.com/profile/07055600374301477821</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://2.bp.blogspot.com/_cv2CfEeLpVU/Sl7x0ilfPHI/AAAAAAAAAgE/e3fgUdRlTv8/S220/tin.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2388698495725806936.post-6108471895893735666</id><published>2009-07-22T07:04:00.000-07:00</published><updated>2009-07-22T07:13:12.537-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Structured Querry Report'/><title type='text'>Structured Querry Report</title><content type='html'>&lt;strong&gt;Structured Query Report (SQR)&lt;/strong&gt; &lt;br /&gt;Structured Query Report Writer is a programming language that combines the power of SQL queries, the sophistication of procedural logic, and the freedom of the multiple-platform development. It works equally well on client and server, crosses almost seamlessly between different platforms, and covers nearly all-relational databases.&lt;br /&gt;&lt;br /&gt;With SQR we can extract data from and load data into the database, process complex file structures, print sophisticated reports with dynamic breaks at multiple levels, create interfaces between different systems, generate form letters with business charts, graphs and images.&lt;br /&gt;&lt;br /&gt;SQR components include SQR Server, SQR viewer, SQR Print, SQR Execute, and SQR Workbench for windows.&lt;br /&gt;&lt;br /&gt;SQR products are available for use with all major databases including oracle, Sysbase, MS SQL Server, DB2, SQLBase, Informix, Ingres, Red Brick, Rdb and AllBase.&lt;br /&gt;&lt;br /&gt;With SQR we can do the following&lt;br /&gt;1. Reports&lt;br /&gt;2. Background sql process&lt;br /&gt;3. Interfaces (file handling)&lt;br /&gt;&lt;br /&gt;SQR will be stored on File Server not on the DB&lt;br /&gt;&lt;br /&gt;SQR server runs on a wide variety of both desktop and enterprise operation systems&lt;br /&gt;&lt;br /&gt;SQR programs are distributed at source level or as pre-compiled pseudo-code modules.&lt;br /&gt;&lt;br /&gt;All SQR commands and functions are platform-transparent and require no changes when SQR programs are moved across platforms.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;SQR SECTIONS:&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;In SQR there 5 Sections available&lt;br /&gt;&lt;br /&gt;1. Setup Section – Begin-Setup/End-Setup&lt;br /&gt;2. Heading Section - Begin-Heading /End-Heading&lt;br /&gt;3. Footing Section - Begin-Footing/End-Footing&lt;br /&gt;4. Program Section - Begin-Program/End-Program&lt;br /&gt;5. Procedure Section - Begin-Procedure/End-Procedure&lt;br /&gt;&lt;br /&gt;In SQR there are 3 Paragraphs available&lt;br /&gt;&lt;br /&gt;1. Select Paragraph - Begin-Select/End-Select&lt;br /&gt;2. SQL Paragraph - Begin-SQL/End-Sql&lt;br /&gt;3. Document Paragraph - Begin-Document/End-Document&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;An SQR program consists of Sections. Each section starts with the Begin statement, follows with SQR commands that make up the section body, and ends with the End Statement.&lt;br /&gt;Syntax&lt;br /&gt;Begin-&lt;br /&gt;&lt;br /&gt;End-&lt;br /&gt;&lt;br /&gt;SQR program may include a number of different sections, but the only required one is the Program Section.&lt;br /&gt;&lt;br /&gt;Begin-Program&lt;br /&gt;&lt;br /&gt;End-Program&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;SQR Procedures:&lt;br /&gt;&lt;br /&gt;An SQR program may include 1 or more SQR procedures. Procedures allow us to split our program into several logical pieces, which makes the program easy to understand and maintain.&lt;br /&gt;&lt;br /&gt;Syntax:&lt;br /&gt;&lt;br /&gt;Begin-Procedure &lt;br /&gt;&lt;br /&gt;End-Procedure&lt;br /&gt;&lt;br /&gt;Note: in earlier SQR versions the Program Section was called the Report Section.&lt;br /&gt;&lt;br /&gt;No&lt;br /&gt;Sections / Uses&lt;br /&gt;1&lt;br /&gt;Begin-Setup&lt;br /&gt;End-Setup&lt;br /&gt;&lt;br /&gt;This section contains commands that determine the overall characteristics of the program. This section is optional but, if included, must be placed at the beginning of the program. The Setup section is processed during the program compilation stage before actual program execution.&lt;br /&gt;&lt;br /&gt;The following commands can be used in setup section: Ask, Begin-Sql, Create-Array, Declare-Variable, Load-Lookup, Use.&lt;br /&gt;&lt;br /&gt;2&lt;br /&gt;Begin-Heading&lt;br /&gt;End-Heading&lt;br /&gt;&lt;br /&gt;Commands in this section are executed every time SQR generates a page. When an SQR program generates multiple reports, we can have more than 1 heading section, however, there can be only 1 heading for each report.&lt;br /&gt;&lt;br /&gt;The #lines parameter in the begin-heading statement defines the number of lines allocated for the heading.&lt;br /&gt;&lt;br /&gt;3&lt;br /&gt;Begin-Footing&lt;br /&gt;End-Footing&lt;br /&gt;&lt;br /&gt;The general structure of footing section is similar to the heading section.&lt;br /&gt;&lt;br /&gt;The #lines parameter in the begin-footing statement defines the number of lines allocated for the footing.&lt;br /&gt;&lt;br /&gt;4&lt;br /&gt;Begin-Program&lt;br /&gt;End-Program&lt;br /&gt;&lt;br /&gt;This section is the required section in SQR program.&lt;br /&gt;5&lt;br /&gt;Begin-Procedure&lt;br /&gt;End-Procedure&lt;br /&gt;&lt;br /&gt;This section is optional, it can used to break our program into manageable and easy-to-maintain pieces. Multiple procedures can exist in SQR program, but must have unique names and be invoked with the help of the Do Command.&lt;br /&gt;&lt;br /&gt;Procedures can global or local. By default, all procedures are global, all variables and selected columns from a global procedure can be referenced in other procedures.&lt;br /&gt;&lt;br /&gt;To make procedure local, we have to explicitly declare it local using the LOCAL keyword. All procedures with arguments are considered as local.&lt;br /&gt;&lt;br /&gt;All variables and selected columns created within a local procedure can be referenced only in this procedure and will not be recognized outside the procedure.&lt;br /&gt;&lt;br /&gt;To reference a global variables in local procedure, we have to add an underscore to the variable name after its special character $,#,&amp;. Ex: #_Count, $_Street, &amp;_Emplid.&lt;br /&gt;&lt;br /&gt;All SQR reserved variables are global. When referencing SQR-reserved variables in a local procedure, we have to add an underscore to their names ex:$_sql-error, #_sql-staus.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;No&lt;br /&gt;Paragraph / Uses&lt;br /&gt;1&lt;br /&gt;Begin-Select&lt;br /&gt;End-Select&lt;br /&gt;&lt;br /&gt;It is very similar to SQL Select statement. All selected column names are placed 1 per program line at the beginning of each line with no comma.&lt;br /&gt;&lt;br /&gt;Note: all selected columns must be listed in the select paragraph; you cannot use an asterisk in the select paragraph.&lt;br /&gt;&lt;br /&gt;Begin-Select Loops=10 determines the loop should repeat for only 10 rows.&lt;br /&gt;&lt;br /&gt;When a row is not returned from a query, none of the SQR commands in the Select paragraph are executed.&lt;br /&gt;2&lt;br /&gt;Begin-SQL&lt;br /&gt;End-SQL&lt;br /&gt;&lt;br /&gt;SQR Select Command is similar to SQL Select statement, but not exactly the same. We have to use strict SQR syntax to select data and to process each selected row, and cannot use native SQL Select statement in SQR. Native SQL statements other than SQL Select are handled in the SQL paragraph. For ex, we may use this paragraph to load data into the DB or to update certain records in the DB. The SQL paragraph can be used in one of the following sections: Procedure section, Program Section, Setup Section.&lt;br /&gt;&lt;br /&gt;The Sql paragraph starts with Begin-sql and ends with End-sql commands. If we have more than 1 sql statement in the same sql paragraph, the sql statements must be separated by a semicolon-‘;’.&lt;br /&gt;&lt;br /&gt;On-Error clause can be used in SQl paragraph. This clause specifies the name of the procedure to be executed if an error occurs during the Sql exection.&lt;br /&gt;&lt;br /&gt;Begin-Sql On-Error=Db_Error&lt;br /&gt;Update Personal_data&lt;br /&gt;Set Postal = $Old_zip&lt;br /&gt;Where Postal = $New_zip&lt;br /&gt;End-Sql&lt;br /&gt;&lt;br /&gt;On-Error=Warn =&gt; is used when we want a warning message to be displayed when an error occurs.&lt;br /&gt;&lt;br /&gt;On-Error=Stop =&gt;is used when we want to halt the program if an error occurs. Note that the rest of the program will be scanned for errors but will not be processed.&lt;br /&gt;&lt;br /&gt;On-Error=Skip =&gt; is used when we want to ignore all errors and to continue to run the program.&lt;br /&gt;3&lt;br /&gt;Begin-Document&lt;br /&gt;End-Document&lt;br /&gt;&lt;br /&gt;SQR Document paragraph allows to put information onto a report pages same as word processor. This is useful when creating form letters. We can design business forms or letters, and automatically populate them with data from the DB.&lt;br /&gt;&lt;br /&gt;The Document paragraph allows combining the body of our standard letter with the values of variables or database columns. The Document paragraph can be used in an SQR Procedure section or in the Program Section. It is advisable to place it in the Procedure section. We can have multiple Document paragraphs in a single procedure.&lt;br /&gt;&lt;br /&gt;Begin-Procedure Print_Document&lt;br /&gt;Begin-Document (1,1)&lt;br /&gt;Dear Friend:&lt;br /&gt;.b ! use .b to print blank lines&lt;br /&gt;This letter is written to let you know how simple is.&lt;br /&gt;.b&lt;br /&gt;Sincerely yours,&lt;br /&gt;.b&lt;br /&gt;.b&lt;br /&gt;End-Document&lt;br /&gt;End-Procedure&lt;br /&gt;&lt;br /&gt;· Use spaces (not tabs) to indent text or field.&lt;br /&gt;· Use .b to indicate an entire blank line.&lt;br /&gt;· Use fixed or relative position to indicate the start of the paragraph on the page&lt;br /&gt;· SQR commands are not allowed within the Document Paragraph.&lt;br /&gt;· A Document paragraph must fit within a single report page.&lt;br /&gt;· In order to place a variable or column into document, simply specify the variable or column name at the desired location.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Paragraph accessibility in Sections&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Begin-Select&lt;br /&gt;Begin-Sql&lt;br /&gt;Begin-Document&lt;br /&gt;Begin-Setup&lt;br /&gt;No&lt;br /&gt;Yes&lt;br /&gt;No&lt;br /&gt;Begin-Heading&lt;br /&gt;No&lt;br /&gt;No&lt;br /&gt;No&lt;br /&gt;Begin-Footing&lt;br /&gt;No&lt;br /&gt;No&lt;br /&gt;No&lt;br /&gt;Begin-Program&lt;br /&gt;Yes&lt;br /&gt;Yes&lt;br /&gt;Yes&lt;br /&gt;Begin-Procedure&lt;br /&gt;Yes&lt;br /&gt;Yes&lt;br /&gt;Yes&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;SQR Dialog Box:&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;The SQR Dialog Box provides the perfect means of running SQR programs under windows. It also connects to the DB. The SQR dialog box is very simple to use.&lt;br /&gt;&lt;br /&gt;When an SQR program runs under windows, you can see the results of all Display and Show statements executions on the screen. SQR will also display all compile errors on the same screen. All this screen information is written to the log file.&lt;br /&gt;&lt;br /&gt;By default SQR creates an output file with name of your program and the extension ‘.lis’. This .lis file is basically designed for printing.&lt;br /&gt;&lt;br /&gt;Unless otherwise specified SQR places the output file in the same directory with SQR program.&lt;br /&gt;&lt;br /&gt;Note: if you do not specify different log file name for each SQR program run, the&lt;br /&gt;next program execution will overlay the previously created log file.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Key Points&lt;br /&gt;&lt;br /&gt;1. We can use ASCII text editor to type our SQR program&lt;br /&gt;2. The SQR Dialog Box can be used to submit our program for execution under windows.&lt;br /&gt;3. The following are commonly used extensions for different SQR files&lt;br /&gt;.sqr - for SQR Programs&lt;br /&gt;.lis - for Report files&lt;br /&gt;log - for SQR log files&lt;br /&gt;&lt;br /&gt;4. All print commands direct their output to the report file. All Show &amp; Display commands direct their output to the log file.&lt;br /&gt;5. An SQR program may include a number of different sections, but the only required one is the Program Section. Program Section may call one or more procedures using the DO command. Procedures may in tern call other procedures.&lt;br /&gt;6. SQR uses an exclamation mark to indicate the start of a comment line in the program.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;SQR Data Elements:&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;SQR has 3 main categories of data elements:&lt;br /&gt;1. SQR columns&lt;br /&gt;2. SQR Variables&lt;br /&gt;3. SQR Literals&lt;br /&gt;&lt;br /&gt;1. SQR Columns are used to reference columns defined in the database. In order to refer a table column, SQR uses the symbol ‘&amp;’ as a prefix to the table column name. For ex: &amp;Emplid, &amp;Hire_date. We don’t have to declare column variable in SQR program.&lt;br /&gt;&lt;br /&gt;2. SQR Variables can be&lt;br /&gt;String variable, Numeric variable, Date Variable.&lt;br /&gt;&lt;br /&gt;SQR uses ‘$’ symbol for String, Date variables ex:$Name,$MyDate&lt;br /&gt;‘#’ Symbol for Numeric variables ex:#Count&lt;br /&gt;‘%’ Symbol for list variables ex:%MyList&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;3. SQR Literals are String, Numeric or Date Constatns.&lt;br /&gt;&lt;br /&gt;String Literals are placed in single quotes – ex: ‘this is string literal’&lt;br /&gt;Numeric literals may include digits with optional decimal point and leading sign. Ex:2043.44,-434.55&lt;br /&gt;&lt;br /&gt;SQR variables do not have to be declared explicitly in the program. When a variable appear for the first time, SQR assigns this variable its type (based on the first character of the variable’s name) and initial value. All string variables are initialized to the NULL valued. All numeric variables are initialized to zeros. All string variables have variable length.&lt;br /&gt;&lt;br /&gt;The Declare-Variable command, which allows to explicitly declaring variables.&lt;br /&gt;&lt;br /&gt;When date variables are declared, they are initialized to NULL values similarly to string variables.&lt;br /&gt;&lt;br /&gt;Variable names are not case-sensitive: for ex- $Name is same as $NAME or $name. Variable names can be of any length.&lt;br /&gt;&lt;br /&gt;SQR variables can be global or local. Global variables can be referenced throughout the entire program, whereas Local variables are effective only within a local procedure.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Predefined SQR Variables:&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Predefined variables are not write-protected, so we can change their values just as like other variables.&lt;br /&gt;&lt;br /&gt;Variable&lt;br /&gt;Use&lt;br /&gt;#Current-line&lt;br /&gt;Denotes the current line number within the current program.&lt;br /&gt;#Current-column&lt;br /&gt;The current column number on the page.&lt;br /&gt;#End-File&lt;br /&gt;If the controls is at the end of file then #end-file = 1&lt;br /&gt;Otherwise, #end-file = 0.&lt;br /&gt;#Page-Count&lt;br /&gt;The current page number&lt;br /&gt;$Current-Date&lt;br /&gt;The current date and time on the local machine when program started running.&lt;br /&gt;#Return-Status&lt;br /&gt;This value will be returned by SQR to the calling program.&lt;br /&gt;#Sql-Count&lt;br /&gt;The number of rows affected by any Sql DML statement (Insert, Update, Delete)&lt;br /&gt;Note:#Sql-Count cannot be used to check the number of selected rows. It is used only to verify updates.&lt;br /&gt;$Sql-Error&lt;br /&gt;This string variable contains an error explanation message from the DB&lt;br /&gt;#Sql-Status&lt;br /&gt;A status value returned from the DB after each SQL statement is executed.&lt;br /&gt;$Sqr-Database&lt;br /&gt;SQR installation is set up to work with some DB and this variable can be checked in an SQR program to determine what DB we are working with.&lt;br /&gt;#Sqr-Pid&lt;br /&gt;The process Id of the current SQR run. This value is unique for each run of an SQR program and can be used to create unique composite file names.&lt;br /&gt;$Sqr-Platform&lt;br /&gt;This variable tells our SQR program which Operating System the program is run under. Valid values are DOS/Windows/Windows-NT/Unix/Vm/VMS/MVS.&lt;br /&gt;$Sqr-locale&lt;br /&gt;The name of the current locale. The SQR locale name is defined in the SQR.ini file.&lt;br /&gt;$Sqr-dbcs&lt;br /&gt;Specifies whether SQR recognized double-character strings. Valid values are ‘Yes’ or ‘No’&lt;br /&gt;$Sqr-Program&lt;br /&gt;The name of the SQR program&lt;br /&gt;$Sqr-Report&lt;br /&gt;The name of the report output file. This is actual name specified in the –F flag parameter or in the New-Report command.&lt;br /&gt;$Sqr-ver&lt;br /&gt;A string with SQR version ID.&lt;br /&gt;$Username&lt;br /&gt;The user name specified on the command line.&lt;br /&gt;$Sqr-hostname&lt;br /&gt;The name of the computer on which your SQR program is executed&lt;br /&gt;#Sqr-max-lines&lt;br /&gt;The max number of lines for the current report&lt;br /&gt;#sqr-max-columns&lt;br /&gt;The max number of columns for the current report.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Working with Dates&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Date variables must be explicitly declared with the help of the Declare-Variable command. Date variable names are prefixed with a dollar sign-$.&lt;br /&gt;&lt;br /&gt;In SQR dates can be stored as character strings in string format variables or as date in special date format variables.&lt;br /&gt;&lt;br /&gt;Ex:&lt;br /&gt;Begin-Setup&lt;br /&gt;Declare-Variable&lt;br /&gt;Date $MyDate&lt;br /&gt;End-Declare&lt;br /&gt;End-Setup&lt;br /&gt;&lt;br /&gt;$Current-Date reserved variable can be used to get current date &amp; time from the system.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;List Variables&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;List variables contain ordered collections of SQR variables. These variables are not nested: you cannot include one list variable within another. List variables cannot be passed as parameters to local functions.&lt;br /&gt;&lt;br /&gt;List variables are denoted with a special character %. Unlike other variables these variables cannot be declared via the Declare-Variable command. They are created and manipulated with the LET command. We can use list variables to hold one set of variables or multiple rows of information of similar structure.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Arithmetic commands:&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;There are 4 arithmetic commands are available&lt;br /&gt;1. Add - Add #Employee_Salary To #Total_By_Department&lt;br /&gt;2. Subtract - Subtract 1 From #Employee_Count&lt;br /&gt;3. Multiply - Multiply &amp;Rate_Increase Times #Total Round 2&lt;br /&gt;4. Divide - Divide #Number-of_Employees Into #Avg_Sal Round 2&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;String Manipulation Commands&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;SQR has the following commands to perform string manipulations&lt;br /&gt;&lt;br /&gt;1. Find - Find ‘John’ In $Full_Name 0 #Position&lt;br /&gt;2. Concat - Concat $Full_zip with $Address&lt;br /&gt;3. Extract - Extract $First_Name from $FullName #StartLocation #Lenth&lt;br /&gt;4. Encode -&lt;br /&gt;5. String - String $Emplid $Empl_Name By ‘,’ Into $Empl_Record&lt;br /&gt;6. UnString - Unstring $Empl_Nam By ‘-‘ Into $FirstName $Initial $LastNam&lt;br /&gt;7. Uppercase -&lt;br /&gt;8. Lowercase -&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Move Command&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;The Move command is used to moving data from one field to another, it can also perform data conversions and data editing using special edit masks.&lt;br /&gt;&lt;br /&gt;The Move command can handle data of any format. The source and target fields for the Move command can have different formats. For ex: the source can be a numeric variable, and the target can be a string variable. In this case, the command not only moved data, but also performs the numeric-to-string conversion.&lt;br /&gt;&lt;br /&gt;Move ’15,995.00’ To #Total !Results in incorrect move (error is - , comma)&lt;br /&gt;&lt;br /&gt;Move ‘15.99500’ To #Total !Results in correct Move&lt;br /&gt;&lt;br /&gt;Some Examples of Move command&lt;br /&gt;&lt;br /&gt;Move &amp;Phone To $Disp_Phone (xxx)bxxxx-xxx&lt;br /&gt;Move #Salary To $Disp_Salary $9,999,999.99&lt;br /&gt;Move ‘Month DD, YYYY’ To $Date_Mask&lt;br /&gt;Move &amp;Counter to #Number_of_Employees Number&lt;br /&gt;Move &amp;Annual_Rate To #Annual_salary Money&lt;br /&gt;Move $Hire_Date to $Start_date Date&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;LET Command&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;The Let command is much more complex and versatile than other date element manipulation commands. A single Let command may be capable of replacing a number of date manipulation and logic commands.&lt;br /&gt;&lt;br /&gt;Syntax: Let target_variable = expression&lt;br /&gt;&lt;br /&gt;Expressions in the let command can be combinations of operands, operators and functions.&lt;br /&gt;Let #Number_of_days = $Julian_day&lt;br /&gt;Let #ytd_expense_avg = #ytd_expnse_total / #Number_of_days&lt;br /&gt;&lt;br /&gt;The Let command can also be used to create and manipulate List Variables. List variables are used in conjunction with the Begin-Execute command that used list variables as parameters to pass them to external sources of information. SQR arrays cannot be used for this purpose.&lt;br /&gt;&lt;br /&gt;Here is how we can create a list variable using the Let command&lt;br /&gt;&lt;br /&gt;Let %Customer = List(#Cust_Num, $Cust_Nam, $Cust_Birth_Dt)&lt;br /&gt;&lt;br /&gt;The command creates a single-row list variable. To create a multiple-row list variable, use slightly different format of the same command.&lt;br /&gt;&lt;br /&gt;Let %Customer[100]=List(NUMBER’.Cust_Num’,TEXT’.Cust_Nm’,DATE’.Cust_Birth_dt’)&lt;br /&gt;&lt;br /&gt;The number between the square brackets indicated the number of rows in the list.&lt;br /&gt;&lt;br /&gt;To retrieve values stored in components of list variables, use the following Let command.&lt;br /&gt;&lt;br /&gt;Let $My_Cust_Name = %Customer[20].Cust_Nm&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;SQR Functions&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;SQR version 6 offers more than 50 different built-in functions. In addition, we can write our own functions in C using the supplied source file ‘ufunc.c’&lt;br /&gt;&lt;br /&gt;The following are the different types functions available in SQR.&lt;br /&gt;&lt;br /&gt;1. Numeric Functions&lt;br /&gt;2. File-related Functions&lt;br /&gt;3. Date Functions&lt;br /&gt;4. String Functions&lt;br /&gt;5. Miscellaneous Functions&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;1. Numeric Functions:&lt;br /&gt;Abs():this function returns a value of the same type as its argument either integer, float or decimal.&lt;br /&gt;&lt;br /&gt;Let #Percent_difference = (abs(#Avg_salary - &amp;Salary) / #Avg_salary) * 100&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;2. File-related Functions:&lt;br /&gt;These functions are helpful in performing file maintenance, and can sometimes replace calls to the OS.&lt;br /&gt;&lt;br /&gt;There are 3 functions available. All these function returns Zero if the operation was successful; otherwise they return the system error code (platform-specific)&lt;br /&gt;&lt;br /&gt;a. Delete() : Let #status = exists($New_file_Name)&lt;br /&gt;If #status=0&lt;br /&gt;Let DelStatus = Delete($New_file_name)&lt;br /&gt;End-if&lt;br /&gt;&lt;br /&gt;b. Exists() : Move ‘C:\temp\testb.lis’ To $New_File_Name&lt;br /&gt;Let #status = Exists($New_file_Name)&lt;br /&gt;&lt;br /&gt;c. Rename(): Let #Status = Exists($New_file_name)&lt;br /&gt;If #Status =0&lt;br /&gt;Let RenFile = Rename($File_Name, $New_file)&lt;br /&gt;End-if&lt;br /&gt;&lt;br /&gt;3. Date Functions:&lt;br /&gt;&lt;br /&gt;a. StrToDate() : This function converts String to Date&lt;br /&gt;Date $MyDate1&lt;br /&gt;Date $MyDate2&lt;br /&gt;Let $MyText1 = ‘19980315’&lt;br /&gt;Let $MyText2 = ‘98/03/15’&lt;br /&gt;Let $MyDate1 = StrToDate($MyText1)&lt;br /&gt;Let $MyDate2 = StrToDate($MyText2, ‘yy/mm/dd’)&lt;br /&gt;&lt;br /&gt;b. DateToStr() : it converts date to a string&lt;br /&gt;Let $Date_String = DateToStr($MyDate, ‘MonbDD,byy’)&lt;br /&gt;&lt;br /&gt;c. DateAdd() : this function adds a specified number of time units to a date&lt;br /&gt;Let $Fifth_Anniv_dt = DateAdd(&amp;Hire_Dte, ‘YEAR’, 5)&lt;br /&gt;&lt;br /&gt;d. DateDiff() : used to calculate the difference between 2 dates&lt;br /&gt;Let #Diff_Months = DateDiff(&amp;Effdt, $Calc_date, ‘Month’)&lt;br /&gt;&lt;br /&gt;e. DateNow() : this function returns the Current date and time&lt;br /&gt;Let $Date_time= datenow()&lt;br /&gt;&lt;br /&gt;Note: the difference between the SQR predefined variable #Current_date &amp; DateNow() functions is&lt;br /&gt;#Current_date variable: contains the date and time when our program started&lt;br /&gt;DateNow(): function returns the current date and time.&lt;br /&gt;&lt;br /&gt;4. String Functions:&lt;br /&gt;&lt;br /&gt;There are 16 string functions is SQR version 6&lt;br /&gt;&lt;br /&gt;a. Instr() :&lt;br /&gt;b. IsBlank() :&lt;br /&gt;c. IsNull() :&lt;br /&gt;d. Length() : tells the number of characters in a string or date&lt;br /&gt;e. Lower() : converts the characters to lower&lt;br /&gt;f. Upper() : converts the lower characters to Upper characters&lt;br /&gt;g. Ltrim() : eliminates the left side spaces&lt;br /&gt;h. Rtrim() : eliminates the right side spaces&lt;br /&gt;i. Lpad() : &lt;br /&gt;j. Rpad() :&lt;br /&gt;k. Replace() :&lt;br /&gt;l. SubStr() :&lt;br /&gt;m. To_Char() : converts the source numeric literal, column, variable or expression to the character format and preserves the precision of the source&lt;br /&gt;n. To_Number() : converts the source string or expression to the numeric format.&lt;br /&gt;o. Translate() :&lt;br /&gt;p. Edit() : this function is similar to move command. Formatting the&lt;br /&gt;source field according to the specified edit mask.&lt;br /&gt;Ex: Let SSN_No = Edit(#SSN, ‘xxxx-xxx-xxxx’)&lt;br /&gt;Let Dformat = Edit(Datenow(), ‘DD/MM/YY’)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;5. Miscellaneous functions:&lt;br /&gt;&lt;br /&gt;1. Array()&lt;br /&gt;2. Ascii()&lt;br /&gt;3. Asciic()&lt;br /&gt;4. Chr()&lt;br /&gt;5. Cond()&lt;br /&gt;6. Getenv()&lt;br /&gt;7. Nvl()&lt;br /&gt;8. Range()&lt;br /&gt;&lt;br /&gt;Key Points&lt;br /&gt;&lt;br /&gt;1. The 3 main SQR data elements are Columns, Variables and literals&lt;br /&gt;2. SQR columns are fields defined in the DB. SQR uses the symbol &amp; as the first character of a table column name&lt;br /&gt;3. SQR variables can be either string variables or numeric variables. SQR uses the special character $ for string variables and the special character # for numeric variable.&lt;br /&gt;4. The numeric variables can be integer, floats, or decimals.&lt;br /&gt;5. SQR list variables are ordered collections of SQR variables, literals or column variables.&lt;br /&gt;6. SQR literals are string, date or numeric constants.&lt;br /&gt;7. SQR variables do not have to explicitly declare in the program; when a variable appears for the first time, SQR assigns this variable its initial value.&lt;br /&gt;8. SQR variables can be global or local. Global variables can be referenced throughout the entire program while local variables are effective only within a local procedure.&lt;br /&gt;9. SQR provides you with a number of date element manipulation commands, including arithmetic commands and string manipulation commands.&lt;br /&gt;10. The MOVE command helps you to move data elements from one field to another with optional editing using special edit format masks.&lt;br /&gt;11. The LET command has the most power allowing you the use of sophisticated expressions. As a result, one Let command can replace a number of elementary arithmetic or string commands.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;SQR Page&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;SQR does not print into its output file every time we use the print command. Instead, SQR accumulates the entire page in the memory. The heading and footing sections are generated after the body of the pages has been filled. Once the entire page is complete, it is written to the output file and is erased from the memory just in time to be replaced with the next page.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;How SQR process the source program:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;SQR goes over the source program in to 2 stages.&lt;br /&gt;&lt;br /&gt;1. Compile Stage&lt;br /&gt;&lt;br /&gt;· All external source files are inserted into the program source file.&lt;br /&gt;· All compiler directives are evaluated. Compiler directives start with # and are processed during the compile stage.&lt;br /&gt;· All substitution variables are resolved.&lt;br /&gt;· SQR executes all ASK Commands that prompt the user for the values of some substitution variables not code in the program.&lt;br /&gt;· Program memory and work buffers are allocated. All memory arrays are created.&lt;br /&gt;· SQR checks the syntax of the source program.&lt;br /&gt;· SQR determines how to optimize the SQL data access.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;2. Execution Stage&lt;br /&gt;&lt;br /&gt;· Actual program execution takes place only if SQR finds no compile errors in the source program.&lt;br /&gt;· Starts processing at Begin-Program and stops at End-Program.&lt;br /&gt;· Calculates the size of the report working page.&lt;br /&gt;· Processes the report body&lt;br /&gt;· Processes the report heading&lt;br /&gt;· Processes the report footing&lt;br /&gt;· Writes the entire page to the output ifle and gets ready for the next page.&lt;br /&gt;&lt;br /&gt;Usually wont separate these 2 stages, when running the source program, SQR runs through the compile stage and, if no errors are found, immediately switches into the execution stage.&lt;br /&gt;&lt;br /&gt;In some cases, we may want to proceed directly to the execution stage, SQR does allow to perform the compile step once, the save the pre-compiled version of the program, to return your report at a later date. If we use pre-compiled version of a program, SQR will not re-execute the required compile steps, including the ASK command. SQR will use all external source files inserted during the compilation stage as well as all substitution variable values assigned.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Key Points&lt;br /&gt;&lt;br /&gt;1. SQR page consists of a heading, a body and a footing.&lt;br /&gt;2. SQR accumulates all the report pages lines in the memory and writes the entire page into the output file.&lt;br /&gt;3. SQR processes programs in 2 steps: 1.Compile Step, 2.Execution step.&lt;br /&gt;4. An SQR program may include the Program section, Setup section, Heading section, Footing section and Procedure section. The only required section if the Program Section.&lt;br /&gt;5. The Setup Section determines the overall characteristics of the program. The setup section is processed during the compilation stage.&lt;br /&gt;6. Commands in the Heading and Footing sections are executed every time SQR generates a page.&lt;br /&gt;7. The procedure section is used to break program into manageable and easy to maintain pieces. We can have multiple procedure sections in our program. Each procedure is invoked with the help of the Do command.&lt;br /&gt;8. Procedures can be global or local; by default all procedures are global. To make a procedure local we have to explicitly declare it with the LOCAL keyword.&lt;br /&gt;9. All procedures that have arguments are local&lt;br /&gt;10. To reference a global variable within a local procedure, we have to add an underscore to the variable name after its type character $, # ,&amp;.&lt;br /&gt;11. All SQR reserved variables are global, when referencing SQR reserved variables in a local procedure; we have to add an underscore to their names.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Column Variable&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;When a column value is selected from a DB SQR automatically creates a column variable for this column. The name of the column variable is the column name prefixed with an ampersand-&amp; symbol. We can use this name to reference the column variable in our program. Ex: &amp;Emplid, &amp;Name.&lt;br /&gt;&lt;br /&gt;Begin-Select&lt;br /&gt;Count (*) &amp;EE_count&lt;br /&gt;Print ‘Employee count=’ (1,1)&lt;br /&gt;Print &amp;EE_count&lt;br /&gt;From employment_data&lt;br /&gt;Where hire_dtAnd Empl‑rcd = 0&lt;br /&gt;End-select&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Explicit and Implicit printing&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Explicit Printing:&lt;br /&gt;&lt;br /&gt;We use Print command to print the selected column values. This is called explicit printing.&lt;br /&gt;Ex: Print ‘ Company Name ’ (1,10)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Implicit Printing:&lt;br /&gt;&lt;br /&gt;By placing a position parameter immediately after the column name. The printing will perform at the moment of selection.&lt;br /&gt;Ex: Begin-Select&lt;br /&gt;Emplid (+1,1) !implicit printing&lt;br /&gt;Name(,12)&lt;br /&gt;From personal_data&lt;br /&gt;Where state=’NY’&lt;br /&gt;End-Select&lt;br /&gt;&lt;br /&gt;The order of both implicit and explicit print commands output is determined by the order in which these commands are coded in the select paragraph. You can also include print edit parameters in Select paragraph. These parameters define the output edit masks for each column. Ex:&lt;br /&gt;Begin-Select&lt;br /&gt;A.Zip (,+2) Edit 99999-999&lt;br /&gt;A.Phone (,+2) Edit xxx/xxx-xxxx&lt;br /&gt;From personal_data&lt;br /&gt;End-Select&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Load-Lookup and Lookup&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Load-Lookup and Lookup is very useful technique of retrieving information from multiple tables. This method significantly improves the performance, but also simplify table joins.&lt;br /&gt;&lt;br /&gt;Load-Lookup: this command creates an internal memory array and populates this array with keys and the corresponding column values from a specified table. This command can be used in either the Setup section or any procedure, but it is important to remember that, if the Load-Lookup command is used in the Setup section, it is processed only once, when used in a procedure, the command is processed every time the procedure gets executed.&lt;br /&gt;&lt;br /&gt;Load-Lookup retrieved 2 fields from the DB: 1. Key field 2. Return_value field. The key field may be of the string or numeric format, and it must refer to a column with unique values in the table. No NULL values are allowed in the field. The Return_value field may refer to just one table column or a combination of several table columns. In case of a column combination, the columns must be concatenated. We can have the Load-Lookup command populate its array with only certain records based on some specified selection criteria.&lt;br /&gt;&lt;br /&gt;Ex: Begin-Setup&lt;br /&gt;Load-Lookup Name = Company_Name&lt;br /&gt;Rows = 200&lt;br /&gt;Table = Company_tbl&lt;br /&gt;Key = company&lt;br /&gt;Return_value = Descr&lt;br /&gt;Where = country = ‘USA’&lt;br /&gt;End-Setup&lt;br /&gt;&lt;br /&gt;In this ex, the Load-Lookup command creates an array named Company_Name and populates the array with the company names from the Descr column of the Company_tbl. When populating array, Load-Lookup uses the SQL where clause to select only table rows with the Country column value equal to ‘USA’. The Rows parameter specifies the initial size of Lookup array as 200 rows. This parameter is optional and, if omitted, a default value of 100 will be used. When an array becomes full, another optional parameter, Extent, will be used to increase this array size. If no Extent is specified, 25% of the initial size will be used as a default value. Note that the only limit of the size of a Lookup table is the amount of memory available in your computer.&lt;br /&gt;&lt;br /&gt;Lookup: this command is used to search through internal memory arrays created and populated by the Load-Lookup command. It returns the Return_value field value for each specified key field value. SQR uses the binary search algorithm to search through the array.&lt;br /&gt;&lt;br /&gt;Begin-Select Distinct&lt;br /&gt;Emplid (+1,1)&lt;br /&gt;Company&lt;br /&gt;Lookup Company_Name &amp;Company $Comp_Name&lt;br /&gt;!(the lookup command retrieves the $Comp_Name value based on the key stored in &amp;Company)&lt;br /&gt;From Job A&lt;br /&gt;where A.effdt = (select max(effdt) from job&lt;br /&gt;where emplid = A.emplid&lt;br /&gt;and empl_rcd = A.empl_rcd)&lt;br /&gt;and A.effseq = (select max(effseq) from job&lt;br /&gt;where emplid = A.emplid&lt;br /&gt;and empl_rcd = A.empl_rcd&lt;br /&gt;and effdt = A.Effdt)&lt;br /&gt;End-Select&lt;br /&gt;&lt;br /&gt;*** we can also build the where clause in the Load-Lookup command dynamically by placing it into a string variable.&lt;br /&gt;&lt;br /&gt;Begin-Program&lt;br /&gt;Let $where = ‘A.Plan_type=’’00’’ and’&lt;br /&gt;‘A.effdt = (select max(effdt) from deduction_tbl’&lt;br /&gt;‘where Play_type = A.Play_type and Dedcd=A.Dedcd)’&lt;br /&gt;&lt;br /&gt;Load-Lookup name=Ded_codes&lt;br /&gt;Rows=5&lt;br /&gt;Table=”Deduction_tbl a’&lt;br /&gt;Key=Dedcd&lt;br /&gt;Return_value=’DESCR’’,’’DED_PRIORITY’&lt;br /&gt;Where = $Where&lt;br /&gt;&lt;br /&gt;End-Program&lt;br /&gt;&lt;br /&gt;Key Points&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;1. The select paragraph starts with Begin-Select and ends with End-Select.&lt;br /&gt;2. SQR commands can be placed in the Select paragraph anywhere between the column names and the From clause.&lt;br /&gt;3. SQR commands in the Select paragraph must be indented.&lt;br /&gt;4. select * not allowed in SQR&lt;br /&gt;5. SQR commands in the Select paragraph are executed for each selected row.&lt;br /&gt;6. SQR column variables are read-only&lt;br /&gt;7. You can use an implicit Print command in the Select paragraph by placing the position qualifiers next to the selected columns.&lt;br /&gt;8. There are many ways to select data from multiple tables. You can use SQL table joins, nested or hierarchical queries, or the Load-Lookup and Lookup commands.&lt;br /&gt;9. Using the Lookup technique for long reports may significantly improve performance.&lt;br /&gt;10. The Load-Lookup command can be used in the Setup section or in any procedure. It is used in conjunction with one or more lookup commands.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;DML vs. DDL Statements&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Data Manipulation Language: Insert, Update and Delete.&lt;br /&gt;&lt;br /&gt;Data Definition Language: Create, Drop, Alter, Grant and Revoke.&lt;br /&gt;&lt;br /&gt;Both DDL, DML statements could be used in the SQL paragraph of the setup section. Recommended to keep the DML and DDL statements separate since only DML statements are preprocessed by SQR in the compile stage.&lt;br /&gt;&lt;br /&gt;In SQR programs, DDL statements are often used with temporary tables. Temporary tables are handy to hold the intermediate results. If we want to create temporary table, we may code the SQL paragraph in the setup section as follows:&lt;br /&gt;&lt;br /&gt;Begin-Setup&lt;br /&gt;Begin-Sql On-Error=warn&lt;br /&gt;Drop table Temp_test_tbl&lt;br /&gt;Create table Temp_test_tbl (emplid char(11), Name char(30))&lt;br /&gt;End-Sql&lt;br /&gt;End-Setup&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Key Points&lt;br /&gt;&lt;br /&gt;1. We can use native SQL statements in SQR with exception of the SQL Select statement.&lt;br /&gt;2. It is a good idea to use the On-Error clause when updating tables.&lt;br /&gt;3. SQR verifies SQL DML statements at the compile stage, but leaves SQL DDL statements unchecked.&lt;br /&gt;4. The best place to create temporary tables is the Setup Section.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Key Points&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;1. SQR logical expression can be a combination of 3 major elements: operands, operators and functions.&lt;br /&gt;2. There are 2 types of logical operators: Relational operators and Arithmetic and String Operators.&lt;br /&gt;3. Parentheses in logical expressions help to override operator precedence.&lt;br /&gt;4. Parentheses in complex logical expressions make our expressions more redable and easier to debug.&lt;br /&gt;5. We can use any number of built-in function in a logical expression.&lt;br /&gt;6. The result of a logical expression evaluation in the IF statement is either FALSE (Zero) or TRUE(One)&lt;br /&gt;7. The Evaluate statement is useful when we have a large decision tree, and the decisions depend on a value of the same variables.&lt;br /&gt;8. the Break Command is used to exit from the While or Evaluate Loops.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Print Command&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;The Print command places data on the page, we must specify the position and length of each output field with the help of 3 parameters (x,y,z)&lt;br /&gt;&lt;br /&gt;X - specifies the line position of the page&lt;br /&gt;Y - the column number&lt;br /&gt;Z - the number of positions allocated for the field (length)&lt;br /&gt;&lt;br /&gt;Print $Name (+1, 1, 20) ! prints $Name on the next line, position 1, width=20&lt;br /&gt;&lt;br /&gt;Print $Name (+2, +3) ! prints $Name 2 lines below the current line starting from current column +3 and use&lt;br /&gt;width = actual length of $Name&lt;br /&gt;&lt;br /&gt;Print $Name () ! Print in the current line, current column,&lt;br /&gt;Print $Name(0, 0, 0) ! Print in the current line, current column.&lt;br /&gt;&lt;br /&gt;We can also use substitution variables defined in the beginning of program to code all printing parameters.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Formatting output&lt;br /&gt;&lt;br /&gt;Print $Name (+1, 1) Bold !Prints the output in Bold&lt;br /&gt;&lt;br /&gt;Print $Header (2, 5) Underline !Printer the output in Underlined&lt;br /&gt;&lt;br /&gt;Print ‘Test Report’ () Center !Printes the text in Center of the page&lt;br /&gt;&lt;br /&gt;Print ‘*’ (1, 1, 25) Fill ! Fills line with 25 Asterisks&lt;br /&gt;&lt;br /&gt;Print $Comments (1, 1) wrap 15, 3 &lt;br /&gt;&lt;br /&gt;! This command prints the value of string variable Comments in 15 Characters per line for a maximum of 3 lines.&lt;br /&gt;&lt;br /&gt;Print $Empl_Status (0, 16) Match&lt;br /&gt;A 0 25 ‘Active’&lt;br /&gt;T 0 25 ‘Terminated’&lt;br /&gt;L 0 25 ‘On Leave’&lt;br /&gt;&lt;br /&gt;If match is found in Empl_status field then the corresponding substituted value (‘Active’, ‘Terminated’, ‘On Leave’) will be printed in position 25 of the current line. In no match is found, an orginal employee status code will printer in position 16 of the current line.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Edit Masks&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;There are 3 types of edits&lt;br /&gt;1. Text Edit&lt;br /&gt;· X – Place a character in the output&lt;br /&gt;Move ‘123456789’ to $Zip&lt;br /&gt;Print $Zip (1,1) edit xxxxx-xxxx !output will be 12345-6789&lt;br /&gt;&lt;br /&gt;· b – insert a blank in the output&lt;br /&gt;Move ‘3456789’ to $Phone&lt;br /&gt;Print $Phone (1,1) edit (xx)bxxx-xx output-&gt;(34) 567-89&lt;br /&gt;&lt;br /&gt;· ~ -(tilde) skips a character in the output&lt;br /&gt;Print ‘ABCDEFGH’ (1,1) edit xxxx~xx~ output-&gt;ABCDFG&lt;br /&gt;&lt;br /&gt;2. Numeric Edit&lt;br /&gt;&lt;br /&gt;Let #Unit_Price=10.459&lt;br /&gt;Let #qty=10&lt;br /&gt;Let #total=104.59&lt;br /&gt;Let #credit=-50.00&lt;br /&gt;&lt;br /&gt;Print #Unit_Price (1,1) edit 9999.99 output-&gt;10.46&lt;br /&gt;Print #qty (1,1) edit 9999.99 output-&gt;10.00&lt;br /&gt;Print #total (1,1) edit 9999.99 output-&gt;104.59&lt;br /&gt;Print #credit (1,1) edit 9999.99 output-&gt;-50.00&lt;br /&gt;&lt;br /&gt;Let #Unit_Price=10.459&lt;br /&gt;Let #qty=10&lt;br /&gt;Let #total=104.59&lt;br /&gt;Let #credit=-50.00&lt;br /&gt;&lt;br /&gt;Print #Unit_Price (1,1) edit $$$$.99 output-&gt;$10.46&lt;br /&gt;Print #qty (1,1) edit 9999 output-&gt;10&lt;br /&gt;Print #total (1,1) edit $$$$.99 output-&gt;$104.59&lt;br /&gt;Print #credit (1,1) edit $$$$.99 output-&gt;$-50.00 &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;3. Date Edit&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Position Command&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Position command will allow us to set the current position:&lt;br /&gt;&lt;br /&gt;Position (10,2) ! sets the current position to line 10, column 2&lt;br /&gt;Print #Amount() ! print amount in the current position&lt;br /&gt;Position (+3,1) ! set the current position 3 lines down&lt;br /&gt;Print #Total () ! Print total in the current position&lt;br /&gt;&lt;br /&gt;Position (+1) ! move the print position to the next line&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Controlling Vertical Spacing&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;We can use Next-Listing command to create detail groups in report and to control the vertical spacing between detail groups on a page.&lt;br /&gt;&lt;br /&gt;Ex:&lt;br /&gt;Begin-Procedure Select_EE&lt;br /&gt;Begin-Select&lt;br /&gt;Name (1,1,40)&lt;br /&gt;Address1 (2,1,40)&lt;br /&gt;City (3,1,15)&lt;br /&gt;Next-Listing Skiplines=1 Need=3&lt;br /&gt;From personal_data&lt;br /&gt;Where State=’CA’&lt;br /&gt;End-Select&lt;br /&gt;End-Select&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Here columns Name, Address1, City make up a detail group that is printed on 3 lines every time a row is selected.&lt;br /&gt;&lt;br /&gt;The Next-Listing command moves the current position to 1 line below the current line in the page body, skipping 1 line and starting the next detail group on the next line.&lt;br /&gt;&lt;br /&gt;The Need parameter controls the end of the page printing, directing SQR to begin a new page if there are less than 3 lines on the current page left, thus eliminating a potential situation in which a detail group can be broken between 2 different pages.&lt;br /&gt;&lt;br /&gt;We can also use the Next-Listing command when we need to create variable length detail groups by using the Wrap qualifier.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Controlling Horizontal spacing&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;The Columns, Next-Column and Use-Column commands are used to control the horizontal spacing in reports. They define and navigate logical columns on the page.&lt;br /&gt;&lt;br /&gt;Columns 10 20 30 !Define 3 Columns in report&lt;br /&gt;&lt;br /&gt;This command defined 3 logical columns and made column 10 Current. Now if we use a Print command, it will shift the current column position from the left edge of the page and add 10 to the position qualifier in any Print Command.&lt;br /&gt;&lt;br /&gt;Columns 10 20 30&lt;br /&gt;Print $Name (3, 2, 30)&lt;br /&gt;&lt;br /&gt;$Name will be printed in the 2nd position of the first logical column. What will be the actual SQR page position? The answer is: 11&lt;br /&gt;&lt;br /&gt;In order to advance from 1 column to another, we use the Next-Column command.&lt;br /&gt;&lt;br /&gt;Columns 10 20 30&lt;br /&gt;Print $Name (3, 2, 30)&lt;br /&gt;Next-Column&lt;br /&gt;Print #Amount ()&lt;br /&gt;&lt;br /&gt;The Next-Column command will move the current column position to the second declared logical column that is the column located at absolute column position 20. variable #Amount will be printed in the first position of the second logical column.&lt;br /&gt;&lt;br /&gt;The Use-Column command sets a specific logical column as current or turns off column printing. To stop printing within logical columns simply specify 0(Zero) as a Use-Column parameter&lt;br /&gt;&lt;br /&gt;Columns 20 50&lt;br /&gt;Use-Column 2 !the columns command must be issued prior to Use-Column&lt;br /&gt;Print $Last_Name() ! prints Last name in the second column i.e 50&lt;br /&gt;Use-Column 0 !stops printing within columns.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Changing Reposts Heading/Footing:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Alter-Report is used to change a report’s heading or footing sections while the report is running. We can change the size of heading or footing or switch from one heading or footing to another dynamically.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Generating PDF files&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;SQR can generate Adobe PDF files. We don’t have to change our source program, all we have to do is to use the –PRINTER:PD SQR command line flag. The SQR.INI file has new section called [PDF Fonts] which provides the mapping between SQR fonts and Adobe Fonts. The name of the PDF file will be same as your report name with the .Pdf extension.&lt;br /&gt;&lt;br /&gt;Another SQR command line flag, -EH_PDF creates a PDF icon in the navigation bar when we generate HTML output.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Key Points&lt;br /&gt;&lt;br /&gt;1. The print command controls the position and the length of each output field with the help of 3 parameters; the 2 coordinates on the page grid (line and column) and the number of positions allocated for the field.&lt;br /&gt;2. Line positions are always specified relative to the current page section (header, body, or footer), not to the entire report page.&lt;br /&gt;3. The position and length parameters in the Print command can be numeric literals or variables.&lt;br /&gt;4. In the Select Paragraph, we can implicitly print a table column by specifying the print position coordinates (x,y) and the space allocation Z to the right of the column name.&lt;br /&gt;5. We can use substitution variables to define all printing parameters at the beginning of report.&lt;br /&gt;6. The Print command format options help to enhance the appearance of report&lt;br /&gt;7. There is 3 types of edit format masks: Text Edit, Numeric Edit, and Date Edit. Each of these 3 edit types uses its own set of special characters for mask coding.&lt;br /&gt;8. Edit masks can be built and changed dynamically by assigning a mask value to a text variable, and then referencing this variable by its name prefixed by a colon.&lt;br /&gt;9. The Position command will allow you to set the current position in the report page.&lt;br /&gt;10. The Next-Listing command is handy when your report has groups of detail records.&lt;br /&gt;11. The Columns, Next-Column, and Use-Column commands are used to control the horizontal spacing.&lt;br /&gt;12. The SQR reserved variable #Current-Line always holds the actual line number within the page body.&lt;br /&gt;13. The Print Delay command allows you to go back and change the value of an output variable before printing.&lt;br /&gt;14. We can create PDF output without changing our program.&lt;br /&gt;15. We can change reports heading or footing dynamically with the help of the Alter-Report Command.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;On-Break option of the Print Command&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;When a value of a column is changed, it is common to do some special processing, we may need to skip lines, print value only if changed, execute a special procedure before or after the break, print sub-totals etc. SQR break handling commands allow we to do all of the above.&lt;br /&gt;&lt;br /&gt;The On-Break option causes the specified action to take place when the value of a certain output field is changed. It can be used for both explicit and implicit printing. We can specify a number of qualifiers of the On-Break Option. These qualifiers define specific actions to be taken when the break occurs. The most popular qualifier is Print (not be confused with Print command). The Print qualifier is the default qualifier of the On-Break option; we don’t have to specify this qualifier when coding the On-Break option.&lt;br /&gt;&lt;br /&gt;When using the Print qualifier of the On-Break option, we can specify when the break field should be printed:&lt;br /&gt;&lt;br /&gt;Print=&lt;br /&gt;&lt;br /&gt;Always&lt;br /&gt;The break field will be printed for each detail group.&lt;br /&gt;Change&lt;br /&gt;The break field will be printed only when its values is changed. This is the default option.&lt;br /&gt;Change/Top-Page&lt;br /&gt;The break field will be printed when its value is changed plus at the top of each new page.&lt;br /&gt;Never&lt;br /&gt;The break field will not be printed.&lt;br /&gt;In some cases, we may choose not to print a break column value when a break occurs.&lt;br /&gt;&lt;br /&gt;Begin-Select&lt;br /&gt;A.Company (,1,7) On-Break Print=Change/Top-Page Skiplines=1&lt;br /&gt;End-Select&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Skiplines qualifier specifies how many lines to skip when the break occurs.&lt;br /&gt;&lt;br /&gt;When dealing with nested On-Breaks, use the Level qualifier to ensure that the breaks are properly nested and to control the order in which break procedures are called (if any). The parameter in the Level qualifier specifies the level of the break for reports containing multiple breaks. When coding the value of this parameter, we should number breaks in the same order as that in the Order By clause.&lt;br /&gt;&lt;br /&gt;Begin-Select&lt;br /&gt;A.Company (,1,7) On-Break Level=1 Print=Change/Top-Page Skiplines=1&lt;br /&gt;A.Paygroup (,+2,8) On-Break Level=2&lt;br /&gt;End-Select&lt;br /&gt;&lt;br /&gt;On-Break can only be used on String and Date Column and variables. We cannot explicitly use the On-Break option directly on a numeric column or variables. To fool the system, move the numeric column value to a string variable, then code the On-Break option in the Print command for this new string variable&lt;br /&gt;&lt;br /&gt;Using procedures when Break occurs&lt;br /&gt;&lt;br /&gt;When we use the On-Break option of the Print command, we can have SQR automatically call procedures before and after each break occurs. In order to accomplish this, use the Before and After qualifiers specify the names of the procedures to be called.&lt;br /&gt;&lt;br /&gt;The Before qualifier will automatically call the specified procedure right before the column value is changed, including the processing of the first selected row.&lt;br /&gt;&lt;br /&gt;The After qualifier will automatically call the specified procedure after the column value is changed including the last change, that is, when select is completed.&lt;br /&gt;&lt;br /&gt;***If no rows are selected, neither procedure will be called.&lt;br /&gt;&lt;br /&gt;Note: the Before and After qualifiers can be used only within Select Paragraph.&lt;br /&gt;&lt;br /&gt;Begin-Select&lt;br /&gt;A.Company (,1,7) On-Break Before=Company_Name After=Company_totals Skiplines=1&lt;br /&gt;End-Select&lt;br /&gt;&lt;br /&gt;Using the SAVE qualifier of the On-Break Option&lt;br /&gt;&lt;br /&gt;Sometimes it is necessary to use or print the previous break value of a print variable in the After procedure. Since After procedures are executed after the values of the On-Break column have been changed, the columns will already hold their new values. The problem can be solved by using the SAVE qualifier of the On-break option. This method allows storing the previous column value in a specially designated variable when a break on this column value occurs.&lt;br /&gt;Ex:&lt;br /&gt;Begin-Select&lt;br /&gt;A.Company (,1,7) On-Break Level=1 After=Company_totals Skiplines=1 Save=$Prev_comp&lt;br /&gt;End-Select&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Key Points&lt;br /&gt;&lt;br /&gt;1. We can greatly enhance reports by using the On-Break option of the Print Command.&lt;br /&gt;2. We can write special procedures to be invoked before and after column breaks. The Before and After qualifiers tell SQR when to call these procedures.&lt;br /&gt;3. The Level qualifier of the On-Break option is used to arrange multiple breaks in hierarchy, and to specify the sequence of events.&lt;br /&gt;4. Use the Skiplines qualifier to insert the necessary number of lines between detail groups.&lt;br /&gt;5. When a break occurs, the previous column value is overridden with the new one. Use the Save qualifier to save a previously selected value to be used in the After procedure.&lt;br /&gt;6. On-Break can only be used on String and Date Columns and variables.&lt;br /&gt;7. In the beginning of a query, all Before procedures are process in ascending Level order when the first row of the query is fetched.&lt;br /&gt;8. All After procedures are processed in descending Level order from the highest level to the current break level of the field where the break occurred.&lt;br /&gt;9. All Before procedures are processed in ascending Level order from the current break level to the highest break level.&lt;br /&gt;10. The Procedure qualifier can not be used in a combination with either Before or After qualifiers.&lt;br /&gt;11. After the query execution (at End-Select) all After procedures are processed once more in descending Level order.&lt;br /&gt;12. If a query returns no rows, neither Before nor After procedures are invoked.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;SQR Run-Time &amp; Compile-Time Variables:&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;There are 3 types of variables are used to make SQR reports flexible&lt;br /&gt;&lt;br /&gt;1. SQR Bind Variables - Run-time variables&lt;br /&gt;2. Substitution Variables - Compile-time variables&lt;br /&gt;3. Dynamic Query Variables- &lt;br /&gt;&lt;br /&gt;1. SQR Bind Variables/Run-time variables:&lt;br /&gt;&lt;br /&gt;SQR Bind variables are used when a query includes parameters defined outside of the query. These parameters may come from user input, another query, or procedure.&lt;br /&gt;&lt;br /&gt;SQR Bind variables are run-time variables. Their values are assigned and changed during the program execution stage. When we use a bind variable in an SQL statement, SQR ‘binds’ the variable before the SQL is executed.&lt;br /&gt;&lt;br /&gt;Bind variables can also used to link 1 query to another. One typical situation occurs when we use nested queries.&lt;br /&gt;&lt;br /&gt;2. Substitution Variables/Compile-time variables:&lt;br /&gt;&lt;br /&gt;Substitution variables are used to specify SQR elements in several program locations at compile time. The values of these variables are set during the compilation stage and checked for syntax errors before the execution begins. They cannot be changed during the program execution.&lt;br /&gt;&lt;br /&gt;The #Define statement and Ask Command present 2 ways to define substitution variables and to assign values to these variables.&lt;br /&gt;&lt;br /&gt;Please note that we define these variables only once, but use them in more than 1 place in the program. When referenced in program, these variables must be enclosed in braces ‘{}’&lt;br /&gt;&lt;br /&gt;SQR supports nested #Include statements; one include file may have a #Include statement referencing another include file, allowing up to 4 levels of nesting.&lt;br /&gt;&lt;br /&gt;Another way to utilize substitution variables is Ask Command. The Ask command always coded in the Setup Section prompts the user for the value, which is placed into a substitution variable. With Input command, we can validate user input and re-prompt if it is not valid, something we cannot do with the Ask command.&lt;br /&gt;&lt;br /&gt;The Ask command should not be confused with the Input Command, another user dialog command. The Input command is processed at execution time; whereas the Ask command is process at compile time.&lt;br /&gt;&lt;br /&gt;The Ask command is used only in Setup Section. Ask commands have to be issued prior to any use of their substitution variables.&lt;br /&gt;&lt;br /&gt;3. Dynamic Query variables/Dynamic SQL variables:&lt;br /&gt;&lt;br /&gt;Dynamic query variables are used to build dynamic SQL Code. Sometimes called Dynamic SQL variables, or simply Dynamic variables, dynamic query variables are text variables whose values are used as parts of SQL statements. When referenced in SQL statements their names must be enclosed in square brackets ex:[$by]&lt;br /&gt;&lt;br /&gt;We can use dynamic query variables to substitute columns and other parts of SQL statements or to dynamically change the Where clause or an entire SQL Statement. The important thing to remember is that when we use dynamic variables in our SQL Statement, SQR cannot check syntax at compile time as it usually does. Run-time errors will occur if a dynamic variable or the Where clause syntax are incorrect.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Key Points&lt;br /&gt;&lt;br /&gt;1. The 3 special types of variables that increase flexibility of SQR programs are: Bind Variables, Substitution Variables, Dynamic Query variables.&lt;br /&gt;2. Bind variables and Dynamic query variables are Run-Time variables.&lt;br /&gt;3. Substitution variables are Compile-time variables: their values can’t be changed at runtime.&lt;br /&gt;4. Bind variables are used in SQL statements in the SQL or Select Paragraphs.&lt;br /&gt;5. Bind variables can be used in correlated Select statements to link one query to another.&lt;br /&gt;6. Substitution variables can be used to alter any part of SQR programs.&lt;br /&gt;7. Substitution variable values are set at compile time by either the #Define compile directive or the Ask Command.&lt;br /&gt;8. The Ask command can be used only in the Setup section.&lt;br /&gt;9. When referenced in a program, substitution variable names must be enclosed into braces ex: {Subst_var}&lt;br /&gt;10. A change to just one substitution variable may cause multiple changes in the program.&lt;br /&gt;11. Dynamic query variables are variables whose values are used as parts of SQL Statements.&lt;br /&gt;12. When referencing dynamic query variables we should enclose their names in square brackets ex:[dynamic_var]&lt;br /&gt;13. Dynamic query variables can be used to substitute any part of an SQL statement.&lt;br /&gt;14. When dynamic query variables are used to generate SQL statements, SQR cannot check the SQL syntax at compile time.&lt;br /&gt;15. When using dynamic query variables to generate SQL statements, it is very important to code error-handling routines.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;SQR Arrays&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;An Array is a collection of similar groups of fields in the program memory, wherein its relative position number in the array can refer to each group.&lt;br /&gt;&lt;br /&gt;An SQR Array is a memory structure that consists of rows and fields. When no arrays are used, in most cases, an SQR program processes its input records one by one. After a record is processed, it is overlaid with the next record, making the first record’s contents inaccessible. Because it is sometimes necessary to process all or some records at once, SQR Arrays can serve as buffers where the data can be temporarily stored. Often times, it is not only a convenient method of temporarily storing information, but also a good way of developing effective program.&lt;br /&gt;&lt;br /&gt;Arrays are temporary structures created in the program memory. SQR has a specific set of commands used to create and populate arrays and to access information stored in arrays.&lt;br /&gt;&lt;br /&gt;· Create-Array (to create arrays)&lt;br /&gt;· Clear-Array (Initializing arrays)&lt;br /&gt;· Get (retrieve data from arrays)&lt;br /&gt;· Put (place data into arrays)&lt;br /&gt;· Array-Add (&lt;br /&gt;· Array-Subtract&lt;br /&gt;· Array-Multiply &lt;br /&gt;· Array-Divide&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;· Create-Array&lt;br /&gt;&lt;br /&gt;In SQR arrays are created during the compile stage, before the program is executed. The Create-Array command is used to create array.&lt;br /&gt;&lt;br /&gt;Create-Array Name=Dependents Size=25&lt;br /&gt;Field=Dependent_Id:Char&lt;br /&gt;Field=Dependent_Name:Char&lt;br /&gt;Field=Dependent_Birthdate:Date&lt;br /&gt;Field=Replationship:Char&lt;br /&gt;&lt;br /&gt;In the example we have created an array named Dependents with a size of 25 Rows. The size in the array command specifies the max number of rows in the array. If any array subscript value exceeds the maximum array size, SQR aborts the program execution and displays the following message:&lt;br /&gt;&lt;br /&gt;(SQR 1500) Array element out of range (25) for array ‘Dependents’ on line 28&lt;br /&gt;SQRW: Program Aborting.&lt;br /&gt;&lt;br /&gt;All SQR array are create before the program is executed. While the Create-Array command can be used in any section of the program, it is a good practice to place in a Setup-Section. The Create-Array command just allocates and initializes memory for an array.&lt;br /&gt;&lt;br /&gt;When array is created its fields are automatically initiated to their default values based on the following rules&lt;br /&gt;&lt;br /&gt;All Numeric fields are set to ZERO.&lt;br /&gt;All String fields are set to NULL.&lt;br /&gt;All Date fields are set to NULL.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Multiple-Occurrence fields:&lt;br /&gt;&lt;br /&gt;Create-Array Name=Clients Szie=100&lt;br /&gt;Field=Name:Char&lt;br /&gt;Field=Phone:Char:3&lt;br /&gt;&lt;br /&gt;In the above array each row includes the Name field and the 3-occurrence field Phone. Once the array is dynamically created, specifying the field name can reference any array field, the field row number starting from number Zero. In Clients array, the rows are numbered from 0-99, and the field Phone occurrences are numbered from 0-2.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;· Clear-Array&lt;br /&gt;When an array is created all its field values are automatically initialized. Sometimes we need to re-initialize an array after some or all of its fields have been populated. It is a good practice to always reinitialize arras after its use. The Clear-Array command resets each field of an array to its initial value. Field initial values are specified in the Create-Array command. If no initials value was specified for a field, the field is et t its default value.&lt;br /&gt;&lt;br /&gt;Clear-Array Name=Dependents&lt;br /&gt;&lt;br /&gt;· Get&lt;br /&gt;The Get command is used to retrieve data from arrays. We can retrieve the entire array’s fields at once using the one Get command.&lt;br /&gt;&lt;br /&gt;Get $Dep_Id from Dependents(10)&lt;br /&gt;Get $Dep_Id $Dep_Name from Dependents(#i)&lt;br /&gt;Get $Client_Name $Client_Phone from Clients(10) Name Phone(#j)&lt;br /&gt;&lt;br /&gt;· Put&lt;br /&gt;The Put command is used to placing data into arrays. There are 2 methods of placing data into an array. We can reference the array elements in the Let command or by using the Put command.&lt;br /&gt;&lt;br /&gt;Let Dependents.Dependent_Id(10) = ‘01’&lt;br /&gt;Let Dependents.Dependent_Id(#Row_Num) = &amp;A.Dependent_Benef&lt;br /&gt;Let Clients.Phone(#i,#j) = &amp;A.Phone&lt;br /&gt;&lt;br /&gt;Put ‘01’ into Dependents(5)&lt;br /&gt;Put ‘01’ ‘Smith,Maria’ into Dependents(#i)&lt;br /&gt;Put &amp;Name $Phone into Clients(#Row_Num) Name Phone(#sub_Num)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;We can perform addition, subtraction, division and multiplication operations on elements of an array by using the Let command or of the following array specific commands.&lt;br /&gt;&lt;br /&gt;Let Employees.Salary(10) = Employees.Salary(10) + #Bonus&lt;br /&gt;&lt;br /&gt;· Array-Add&lt;br /&gt;&lt;br /&gt;Array-Add #count to Clients(#i) Count&lt;br /&gt;&lt;br /&gt;· Array-Subtract&lt;br /&gt;&lt;br /&gt;Array-Subtract 1 from Books(500) Books_received&lt;br /&gt;&lt;br /&gt;· Array-Multiply&lt;br /&gt;&lt;br /&gt;Array-Multiply #Incr1 #Incr2 times Empl(1) Rate(0) Rate(1)&lt;br /&gt;&lt;br /&gt;· Array-Divide&lt;br /&gt;&lt;br /&gt;Array-Divide 5 into Empl(#m)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Searching Data in Arrays&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;SQR does not have special commands to carry out array searches; we have to program this logic. There are many popular algorithms that can be used to search in arrays. Some of them are very simple to implement, while others may require some effort.&lt;br /&gt;&lt;br /&gt;Here we will discuss 2 algorithms: Sequential search and Binary search.&lt;br /&gt;&lt;br /&gt;Sequential Search Algorithm: when looking for an element with a particular value in a certain field, our program has to go over every single array element until it hits the right one. Not a very efficient method of searching, but very simple to program.&lt;br /&gt;&lt;br /&gt;Binary Search Algorithm: it is more efficient than the sequential search, but it has very important limitations; it works only with pre-sorted arrays. The main idea of the binary search algorithm is very simple; it compares the target value to the value of the search field of the middle element of the arrays current search area. The search starts when the current search area I equal to the entire array. The search fields in the array are ordered in a predefined sequence, therefore, if the target value is less than the value in middle element, the search focuses on the lower half of the array, otherwise the search concentrates on the upper half. The remaining half of the array becomes the current search are. The next step is to compare the target value to the middle element of the current search area. This process of dividing the current search is in 2 continues until the element is found or the current search area is empty.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Key Points&lt;br /&gt;&lt;br /&gt;1. The Create-Array command creates an array of fields in the memory.&lt;br /&gt;2. The Create-Array command can be used in any section of SQR program.&lt;br /&gt;3. We can specify an initial value for each field in an array.&lt;br /&gt;4. Some fields in an array can be defined as multiple-occurrence fields.&lt;br /&gt;5. Row number and field occurrence numbers in arrays start from Zero.&lt;br /&gt;6. Row numbers and field occurrence numbers can be numeric literals or numeric variables.&lt;br /&gt;7. When using variables to refer to row numbers or occurrence numbers, be sure to keep the variable values within the boundaries defined in the Create-Array command.&lt;br /&gt;8. All SQR arrays are created during the program compile stage&lt;br /&gt;9. All fields used in arithmetic operations must be declared as number, decimal, float or integer&lt;br /&gt;10. The Get command is used to retrieve one or more fields from an array.&lt;br /&gt;11. The Put command is used to move one or more fields into an array.&lt;br /&gt;12. The Clear-Array command is used to initialize an array.&lt;br /&gt;13. The following commands can be used when working with arrays:&lt;br /&gt;Create-Array&lt;br /&gt;Clear-Array&lt;br /&gt;Get&lt;br /&gt;Put&lt;br /&gt;Array-Add&lt;br /&gt;Array-Subtract&lt;br /&gt;Array-Multiply&lt;br /&gt;Array-Divide&lt;br /&gt;Let&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Defining Multiple Reports in SQR&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;In a multiple-report SQR program, each report must be defined with a separates Declare-Report command, this command is coded in the Setup Section.&lt;br /&gt;&lt;br /&gt;In the Declare-Report command, specify the following attributes&lt;br /&gt;&lt;br /&gt;· Name of the report&lt;br /&gt;· Name of the Layout to be used for the report&lt;br /&gt;· Type of the printer to be used for the report&lt;br /&gt;&lt;br /&gt;Depending on the specific business requirements, each report can use its own Layout or printer definition, or some reports can share same Layout or Printer definitions. If no Printer-Type is specified, the default is LINEPRINTER for the report. If no Layout is specified in the Declare-Report command, the Default Layout is used.&lt;br /&gt;&lt;br /&gt;Declare-Report My_Report1&lt;br /&gt;Layout=My_Layout1&lt;br /&gt;Printer-Type=PS&lt;br /&gt;End-Declare&lt;br /&gt;&lt;br /&gt;Valid values for the Printer-Type argument in the Declare-Report command are HTML(HT), HPLASERJET(HP), POSTSCRIPT(PS) and LINEPRINTER(LP).&lt;br /&gt;&lt;br /&gt;The Declare-Layout command is also coded in the Setup Section. This command allows specifying the attributes of the layout for our output file and defining as many layouts as we need for our application.&lt;br /&gt;&lt;br /&gt;If we don’t code the Declare-Layout in our SQR program, a default layout with the name Default will be created. If we need to override its attributes, we can define a layout called Default in our program and list only the attributes we need to change. If we are defining multiple layouts in our program, each layout name must be unique.&lt;br /&gt;&lt;br /&gt;Begin-Setup&lt;br /&gt;&lt;br /&gt;Declare-Layout Layout1&lt;br /&gt;Left-margin=1&lt;br /&gt;Right-margin=1&lt;br /&gt;End-Declare&lt;br /&gt;&lt;br /&gt;Declare-Layout Layout2&lt;br /&gt;Left-margin=5&lt;br /&gt;Right-margin=5&lt;br /&gt;End-Declare&lt;br /&gt;&lt;br /&gt;Declare-Report Rpt1&lt;br /&gt;Layout=Layout1&lt;br /&gt;Printer-Type=HP&lt;br /&gt;End-Declare&lt;br /&gt;&lt;br /&gt;Declare-Report Rpt2&lt;br /&gt;Layout=Layout2&lt;br /&gt;Printer-Type=PS&lt;br /&gt;End-Declare&lt;br /&gt;&lt;br /&gt;End-Setup&lt;br /&gt;&lt;br /&gt;If we need to override some of the default printer attributes, use the Declare-Printer command. This command is also coded in setup section.&lt;br /&gt;&lt;br /&gt;The Declare-Printer command allows us to create our own customized printer type and assign it a name. In order to make a Declare-Printer command applicable to a specific report, we have to use For-Reports parameter with a specific report name defined in a Declare-Report Command. If the For-Reports parameter is not coded, the printer type attributes specified in the Declare-Printer command will apply to all reports that use the printer type specified in the Type argument of this Declare-printer command.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Begin-Setup&lt;br /&gt;&lt;br /&gt;Declare-Printer HP1&lt;br /&gt;For-Reports = Report1&lt;br /&gt;Type=HP&lt;br /&gt;Font=4&lt;br /&gt;End-Declare&lt;br /&gt;&lt;br /&gt;Declare-Printer PS1&lt;br /&gt;For-Reports = Report2&lt;br /&gt;Type=PS&lt;br /&gt;Font=5&lt;br /&gt;End-Declare&lt;br /&gt;&lt;br /&gt;End-Setup&lt;br /&gt;&lt;br /&gt;We can specify the printer type in the SQR command line –Printer:xx flag. this will cause the SQR program to produce all our report output files for the specified printer type. For ex: -Pinter:HP to produce all output for HP LasetJet printer.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Handling Multiple-Reports in one Program&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;If our program generates multiple reports, the Print commands need to know which report to direct their output to. The Use-Report command will allow our program to switch between reports. When this command is used, all Print commands issued after the Use-Report command will write the output to the specified report file, until the next Use-Report command is issued. See the following ex&lt;br /&gt;&lt;br /&gt;Use-Report Empl_detail&lt;br /&gt;Print ‘Emplid’ (1,1)&lt;br /&gt;Use-Report Empl_Summary&lt;br /&gt;Print ‘Total Employees:’ (+1,1)&lt;br /&gt;Print #Total_recs (,1)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;The headers and footers are printed using a different approach. The same header or footer can be shared by multiple reports. In real business life, however, different reports usually have different information in their headers and, sometimes, footers. In these cases, we should code separate Heading and footing section for each report and use the For-Report parameter to assign each section to a specific report, for example&lt;br /&gt;&lt;br /&gt;Begin-Heading 4 For-Reports=(Empl_Detail)&lt;br /&gt;Print ‘ Employee Detail Report ‘ (1) Center&lt;br /&gt;Print ‘….’&lt;br /&gt;End-Heading&lt;br /&gt;&lt;br /&gt;Begin-Heading 2 For-Reports=(Empl_Summary)&lt;br /&gt;Print ‘ Employee Summary Report ‘ (1) Center&lt;br /&gt;Print ‘….’&lt;br /&gt;End-Heading&lt;br /&gt;&lt;br /&gt;Begin-Footing 1 For-Reports=(Empl_Detail)&lt;br /&gt;Print ‘ End of Employee Detail Report ‘ (1) Center&lt;br /&gt;End-Footing&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Output Files in SQR Program with Multiple-Reports&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;If we use 2 multiple reports in our SQR program, it will generate 2 report files; for example if the file name is Test1a.sqr then the output report files will be Test1a.lis and Test1a.l01. The Test1a.lis will be assigned to the first Declare-Report command, and the Test1a.l01 will be assigned to the next report declared by the Declare-Report Command.&lt;br /&gt;By default SQR creates output report files with the same names as our program name, but with different extensions. For single report programs, the extension is usually .lis or .spf.&lt;br /&gt;&lt;br /&gt;For multiple reports, the report file names are still the same as the program name, but the file extensions will be .lis, l01, l02 and so on. In case of .spf output files, the names will be same as the program name with the extensions: .spf, .s01, .s02 and so on.&lt;br /&gt;&lt;br /&gt;If the Environment variable OUTPUT-FILE-MODE=LONG in the Default settings of the SQR.Ini file, the report file names will be like&lt;br /&gt;&lt;br /&gt;Test1a.spf, Test1a_01.spf, Test1a_02.spf&lt;br /&gt;Test1a.lis, Test1a_01.lis, Test1a_02.lis.&lt;br /&gt;&lt;br /&gt;By default the OUTPUT-FILE-MODE=SHORT.&lt;br /&gt;&lt;br /&gt;We can use the –F flag in the SQR command line to override the default file names with our own file output names. For example, if we want the Test1a.sqr program to generate the Empl.lis and Depd.lis report files, the following –F flags:&lt;br /&gt;&lt;br /&gt;-FEmpl.lis –Fdepd.lis&lt;br /&gt;&lt;br /&gt;Similarly, we can use the –F flag to create multiple .spf files. Keep in mind, however, that we must still specify the .lis extensions for these reports. SQR will automatically rename the files to Empl.spf and Depd.s01.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Key Points&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;1. In multiple report programs, each report must be defined with a separate Declare-Report command.&lt;br /&gt;2. The Declare-Report and Declare-Layout commands must be coded in the Setup Section.&lt;br /&gt;3. Each report can use its own layout or printer type definitions; some reports can share the same layout and type definitions. If no layout is specified, the Default layout is used.&lt;br /&gt;4. If we define multiple layouts in our program, each layout name must be unique.&lt;br /&gt;5. The Use-Report command allows our program to switch between reports.&lt;br /&gt;6. SQR allows us to specify the Heading and Footing sections for each report using the For-Report argument in the Begin-Heading and Begin-Footing commands.&lt;br /&gt;7. When creating multiple output files, the default names of the report files will be the program name with the extensions .lis, l01, l02 and so on. In case of the SPF output files, the file extension will be: .spf, .s01, .s02 and so on.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Creating SQR Portable Files: SPF Files&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;SQR allows creating SQR Portable File (SPF). The main idea of SPF file is that, with their help, our program can create printer-independent output files. These files can be viewed and printed by SQR Viewer, or converted back to LIS files with the help of SQR Printer. End users can use SPF files to view, e-mail, fax, or print them on any available printer device.&lt;br /&gt;&lt;br /&gt;SPF output files can be produced by SQR on any platform. We don’t have to change our program to make if generate SPF output. All we need to do is to use one of the following flags in the SQR command line or the SQR Dialog Box:&lt;br /&gt;&lt;br /&gt;· -NOLIS will create SPF file output instead of LIS output file.&lt;br /&gt;&lt;br /&gt;· -KEEP will allow creating SPF output in addition to LIS output.&lt;br /&gt;&lt;br /&gt;· -ZIV will invoke the SQR viewer after creating an SPF file. This flag automatically invokes the –KEEP flag to create an SPF file. If a program creates multiple output files, the SQR viewer will automatically display only the first report file. The other SPF files can be viewed or printed by using the SQR Viewers file selection option.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;SQR generates SPF output even when it is not asked to do so. When SQR needs to accumulate its output before creating the final reports it uses SPF files as intermediate output file storage. Another example occurs when the Last-Page command is used in a program, this command causes SQR to accumulate the entire report without printing it until the last page is processed. In these and other cases, SQR automatically creates SPF files and deletes them upon the programs completion.&lt;br /&gt;&lt;br /&gt;SPF files allows generating a report and storing the produced SPF output for subsequent electronic distribution or on-site printing. We do not have to know the type of printer belonging to each potential recipient.&lt;br /&gt;&lt;br /&gt;SPF files also permit to view, search, or email the text portions of a graphic output by rendering a line-printer output. We can run a report on a UNIX server and then print the output on a PC using Windows.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Using SQR Viewer&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;The SQR Viewer allows viewing our report online before printing. We can also take advantage of the Viewer’s Print Preview, Print Setup, Find and Zoom options as well as the capability to email the report to users.&lt;br /&gt;&lt;br /&gt;To view a report thought the SQR Viewer, the report must be in the SPF format. These files normally have .SPF or .SNN extensions.&lt;br /&gt;&lt;br /&gt;We use the –NOLIS command line flag to create SPF output. This option will make the program generate: Test1a.spf and Test1a.s01&lt;br /&gt;(If the OUTPUT-FILE-MODE environmental variable in the SQR.ini file is set to LONG, the SPF file names will be Test1a.spf and Test1a_01.spf)&lt;br /&gt;&lt;br /&gt;Another convenient way of using the SQR Viewer is to run the program with –ZIV command line flag. When we use this flag, SQR creates SPF output, automatically invokes the SQR Viewer, and opens the first SPF file created in the program.&lt;br /&gt;&lt;br /&gt;It is important to keep in mind that while SPF files can be created on any platform, the SQR Viewer can be used only on Windows. What if our program ran on a non-windows platform, but users need to view the SPF file generated by the program? The simplest way to solve the problem is to use a file transfer tool (such as FTP) to transfer the files to the windows environment.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Key Points&lt;br /&gt;&lt;br /&gt;1. SQR portable files (SPF files) are printer-independent and offer a higher degree of flexibility for both program developers and end users.&lt;br /&gt;2. We don’t have to change our program to make it generate SPF files; it can be achieved by using the proper SQR command line flags.&lt;br /&gt;3. SPF files can be generated on any platform.&lt;br /&gt;4. The SQR viewer allows to view, print and email SPF files. This product works in the Windows environment only.&lt;br /&gt;5. The SQR Print converts SPF files to printer-specific files. This is a multiple-platform product.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Document Markers&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Another method of placing the values of variables or columns into Document involves using document markers. A document marker is a special variable whose name begins with @. It marks a location in the document where we place data from areas external to the Document Paragraph parts of the program. Document markers defined in Document Paragraph can be referenced in the Position command outside the document paragraph to establish the next printing position. (SQR command cannot be used inside Document paragraph.)&lt;br /&gt;&lt;br /&gt;Begin-Program&lt;br /&gt;Do Print_Doc&lt;br /&gt;Do Print_Bold&lt;br /&gt;End-Program&lt;br /&gt;&lt;br /&gt;Begin-Procedure Print_Doc&lt;br /&gt;Begin-Document (1,1)&lt;br /&gt;Dear Colleague:&lt;br /&gt;.b&lt;br /&gt;@Start_Bold&lt;br /&gt;.b&lt;br /&gt;@Start_Underline&lt;br /&gt;.b&lt;br /&gt;End-Document&lt;br /&gt;End-Procedure&lt;br /&gt;&lt;br /&gt;Begin-Procedure Print_Bold&lt;br /&gt;Position () @Start_Bold&lt;br /&gt;Print ‘ Hai this is Bold text…’ () Bold&lt;br /&gt;&lt;br /&gt;Position () @Start_Underline&lt;br /&gt;Print ‘ This is underline text…’ () Underline&lt;br /&gt;End-Procedure&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Key Points&lt;br /&gt;&lt;br /&gt;1. Use the Document paragraph to create form Letters.&lt;br /&gt;2. The Begin-Document and End-Document commands are used to define Document paragraph.&lt;br /&gt;3. The Document Paragraph may be used inside any procedure. There may be multiple Document paragraphs within a program.&lt;br /&gt;4. Do not use tabs inside a Document paragraph. Use spaces instead. For a full line spaces specify .b&lt;br /&gt;5. SQR commands are not allowed within the Document paragraph.&lt;br /&gt;6. A printed Document paragraph must fit into a single report page.&lt;br /&gt;7. We can use document markers to designate special locations in the Document paragraph where we can place data from external to the paragraph parts of the program. The Position and Print commands are used to move data to the Document paragraph from outside the paragraph.&lt;br /&gt;8. We must generate a document before placing information at the locations marked by the document markers.&lt;br /&gt;9. We can separate our letter into variable length sections to achieve greater flexibility.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Working with Flat Files&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Files in SQR: Regular sequential files are often called Flat Files. SQR supports all necessary input/output operation on flat files, including opening and closing files and reading from and writing to the files. Please note that SQR does not provide random access input/output commands; all records are processed sequentially.&lt;br /&gt;&lt;br /&gt;We can use sequential/Flat Files to&lt;br /&gt;&lt;br /&gt;· Import data from other systems into our DB tables.&lt;br /&gt;· Unload data from our DB tables into Flat Files, and use the files as interfaces to external systems.&lt;br /&gt;· Sort our data using the operating system commands or utilities.&lt;br /&gt;&lt;br /&gt;Flat files created in SQR are frequently used as Interfaces between PeopleSoft applications and other Systems. They are also used for generating comma-delimited files compatible with Excel Spreadsheet format.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Opening a File in SQR&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Before accessing a file in SQR, we have to open it. A file can be opened as an input file for reading from an existing file, or an output file for writing to a new file or appending data to an existing file.&lt;br /&gt;&lt;br /&gt;The maximum number of open files at any time is 256. If our program includes more than 256, close the files we do not need at that moment.&lt;br /&gt;&lt;br /&gt;When a file is opened for reading, the record length specified in the Open Command must be equal to or greater than the length of the longest record used in the file. The maximum record length is (32K –1) bytes (32767)&lt;br /&gt;&lt;br /&gt;When a file is opened for writing, a new file is created unless the For-Append parameter is specified. If the same file already exists and no append mode is specified, the existing file will be overwritten.&lt;br /&gt;&lt;br /&gt;Open ‘My_file1’ as 1 For-Reading Record=80:Vary&lt;br /&gt;&lt;br /&gt;Open ‘c:\temp\My_file2’ as 2 For-Reading Record=80:Fixed&lt;br /&gt;&lt;br /&gt;Open $File3 as 3 For-Reading&lt;br /&gt;&lt;br /&gt;Open $File2 as #k For-Writing Record=100&lt;br /&gt;&lt;br /&gt;Open $File3 as 4 For-Append Record=70&lt;br /&gt;&lt;br /&gt;Open &amp;A.File_Name as 5 For-Reading Record=120:Fixed_Nolf&lt;br /&gt;&lt;br /&gt;Let $File4=’C:\temp\abc.dat’&lt;br /&gt;Open $File4 For-Reading Record=120:Vary Status=#File-Status&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;The number for file handling is a positive integer from 1 to 64,000.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Vary : should not contain binary data, record length does not include the line terminator character. It is applied by default if no type is specified.&lt;br /&gt;&lt;br /&gt;Fixed : all the records should have the fixed length.&lt;br /&gt;&lt;br /&gt;Fixed_Nolf : indicates with no line terminator at the end of the record. This is useful when writing or reading binary data.&lt;br /&gt;&lt;br /&gt;Status : if status is not Zero, it means that file was not found&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Closing a File in SQR&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;SQR files stay opened until the Close Command is used or program successfully terminates.&lt;br /&gt;&lt;br /&gt;Close 1&lt;br /&gt;Close #k&lt;br /&gt;&lt;br /&gt;The close command uses only one argument, the file number, which is the number assigned to the file in the corresponding Open Command.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Reading from a File&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;SQR will allow reading an input files only if the file was opened For-Reading. The Read command reads the next record from the file into the variable or variables specified in the command.&lt;br /&gt;&lt;br /&gt;Read Into:&lt;br /&gt;&lt;br /&gt;Read 1 Into $Input_Record:80&lt;br /&gt;&lt;br /&gt;In this example, it reads the whole record into a single variable $Input_Rcord. This gives us flexibility and, with the help of string functions, we can easily extract the needed fields, or parse the record by a field separator. Here are some parsing examples:&lt;br /&gt;&lt;br /&gt;Unstring $Input_Record By ‘,’ Into $Last_Name $First_Name $Address&lt;br /&gt;&lt;br /&gt;Extract $First_Name from $Input_Record 0 20&lt;br /&gt;&lt;br /&gt;Let $Last_Name=Substr($Input_Record,1,20)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Read 1 Into $Last_Name:20 $First_Name:10 $Address:50&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Detecting End of File:&lt;br /&gt;&lt;br /&gt;SQR internal variable #End-File is set to 1 when there are no more records to read. We should check this condition after each record is read.&lt;br /&gt;&lt;br /&gt;Begin-Procedure Read-File&lt;br /&gt;&lt;br /&gt;While 1&lt;br /&gt;Read 1 Into $Record:80&lt;br /&gt;If #End-File=1&lt;br /&gt;Break&lt;br /&gt;End-If&lt;br /&gt;End-While&lt;br /&gt;&lt;br /&gt;End-Procedure&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Verifying Read Status:&lt;br /&gt;&lt;br /&gt;SQR returns Zero if the read is successful, otherwise a system-dependent error number is returned.&lt;br /&gt;&lt;br /&gt;Begin-Procedure Read-File&lt;br /&gt;&lt;br /&gt;While Not #End-File&lt;br /&gt;Read 1 Into $Record:80 Status=#Read_Stat&lt;br /&gt;If #End-File&lt;br /&gt;Break&lt;br /&gt;End-If&lt;br /&gt;End-While&lt;br /&gt;&lt;br /&gt;End-Procedure&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Reading Text Data&lt;br /&gt;&lt;br /&gt;When reading text data we should specify the variable name and number of bytes we want the program to read. Keep in mind that the trailing blanks are omitted when the record is read.&lt;br /&gt;&lt;br /&gt;The total length specified for all our read variables must be less than or equal to the length of the entire record read.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Reading Binary Data&lt;br /&gt;&lt;br /&gt;In order to read binary data, the file must be opened as a file with record type equal to Fixed or Fixed_Nolf. Binary fields can be 1, 2 or 4 bytes in length. When reading binary numbers, they must be placed into numeric variables. Binary numbers hold only integers. If we need to maintain a decimal portion of a number, convert the number to a string variable.&lt;br /&gt;&lt;br /&gt;The following is the example for reading binary numbers.&lt;br /&gt;&lt;br /&gt;Read 1 Into #Amount:2 #Hours:1&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Reading Date Fields&lt;br /&gt;&lt;br /&gt;The date field was written to a file in the SQR date variable format, we could read this field to either a date or string variable. The date variable must be in one of the following formats:&lt;br /&gt;&lt;br /&gt;The format specified by the SQR_DB_DATE_FORMAT environment variable.&lt;br /&gt;DB specific format&lt;br /&gt;DB independent format ‘SYYYYMMDD[HH24[SS[NNNNNN]]]]’.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Writing to a File:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;SQR will allow writing a record to a file only if the file was opened For-Writing or For-Append. The Write Command writes a record to a file from the variable or variables specified in this command.&lt;br /&gt;&lt;br /&gt;When using SQR Write command, we can write to a file from a single literal, variable, or column or from a list of literals, variables, or columns. The command operands are very similar to those of the Read Command. We have to specify the file number, the source fields, the length of the source fields, and a variable to hold the Write command status. Only the file number and source field names are required parameters. The source field and the status variable are optional. See the following example;&lt;br /&gt;&lt;br /&gt;Write 1 From $Record:80 Status=#Write_Status&lt;br /&gt;&lt;br /&gt;Write #H From $Record_2&lt;br /&gt;&lt;br /&gt;Write 2 From $Lst_Name:20 ‘,’ $First_Name:10 ‘,’ $Address:50&lt;br /&gt;&lt;br /&gt;Write 3 From #Amount:2 #Number:1&lt;br /&gt;&lt;br /&gt;Write 4 From $Date:18&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Different techniques for creating Flat File output&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;One of the most popular uses of flat files is downloading information from a database into a flat file. The file created can later be used by other applications outside the SQR environment. We can use one of the 2 major approaches to accomplish this task:&lt;br /&gt;&lt;br /&gt;1. The Write Command&lt;br /&gt;2. The Print and New-Page command&lt;br /&gt;&lt;br /&gt;Using the Write command is a more traditional way of creating flat files. It is also a more flexible method. It involves the following steps&lt;br /&gt;&lt;br /&gt;1. Open a file For-Output or For-Append&lt;br /&gt;2. Select the required data from DB tables in the Begin-Select Paragraph&lt;br /&gt;3. Perform necessary data conversions and manipulations.&lt;br /&gt;4. Use the Write command to place data into the file.&lt;br /&gt;5. Repeat steps 2, 3 and 4 until the end of selection.&lt;br /&gt;6. Close the output file.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Using Print Command to Create a Flat File&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Using the Write command to create an output file is traditional way of creating Flat File. Many programming languages use very similar approaches. SQR allows us to employ another technique of writing data to an output file: using the Print Command. Keep in mind, however, that this method is not as flexible as using the Write command, it has a number of limitations&lt;br /&gt;&lt;br /&gt;To use Print command to output data to a file:&lt;br /&gt;&lt;br /&gt;1. Specify Max-Lines=1 in the Declare-Layout Command.&lt;br /&gt;2. Define the Width in the Declare-Layout command equal to record size (the size of our output record)&lt;br /&gt;3. Specify Formfeed=No in the Declare-Layout command to make sure that SQR will not output form-feed characters.&lt;br /&gt;4. Use explicit length in our Print Command, thus placing each field at a fixed location in the record.&lt;br /&gt;5. Use the New-Page command after each record is processed.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Using Flat Files to import data into DataBase&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Another frequent task involves uploading data from a flat file into a Database. We can develop a simple program that reads the file and inserts the information into our database. Some business needs require the designing of more complex programs that not only read and insert, but also verify the information read from the file, and populate multiple tables at once. Our SQR program can do many things, including the following&lt;br /&gt;&lt;br /&gt;· Read records from the input file&lt;br /&gt;· Edit input fields using SQR functions, table lookups and queries&lt;br /&gt;· Build logic to insert data into different tables based on the specified criteria&lt;br /&gt;· Check for duplicates&lt;br /&gt;· Print a audit report&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Example of interface:&lt;br /&gt;&lt;br /&gt;!*************************************&lt;br /&gt;Begin-Setup&lt;br /&gt;!*************************************&lt;br /&gt;&lt;br /&gt;Begin-SQL On-Error=Stop&lt;br /&gt;Create Table Temp_Job_Tbl&lt;br /&gt;(&lt;br /&gt;Emplid Varchar2 (11) Not Null,&lt;br /&gt;Empl_Rcd Number Not Null,&lt;br /&gt;Effdt Date Not Null,&lt;br /&gt;Effseq Number Not Null,&lt;br /&gt;Deptid Varchar2 (6) Not Null,&lt;br /&gt;Jobcode Varchar2 (6) Not Null,&lt;br /&gt;&lt;br /&gt;Empl_Status Varchar2 (1) Not Null,&lt;br /&gt;Annual_Rt Number (18,3) Not Null&lt;br /&gt;Monthly_Rt Number (18,3) Not Null,&lt;br /&gt;Hourly_Rt Number (18,6) Not Null&lt;br /&gt;)&lt;br /&gt;End-SQL&lt;br /&gt;&lt;br /&gt;End-Setup&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;!*************************************&lt;br /&gt;Begin-Program&lt;br /&gt;!**************************************&lt;br /&gt;&lt;br /&gt;Open ‘C:\temp\job.dat’ as 1 For-Reading Record=3000 Status=#File-Status&lt;br /&gt;If #File-Status !=0&lt;br /&gt;Show ‘Error opening input file’&lt;br /&gt;Else&lt;br /&gt;Do Read_Input_File&lt;br /&gt;End-If&lt;br /&gt;&lt;br /&gt;End-Program&lt;br /&gt;&lt;br /&gt;!*************************************&lt;br /&gt;Begin-Procedure Read_Input_File&lt;br /&gt;!*************************************&lt;br /&gt;&lt;br /&gt;Display ‘ inserting records from file’&lt;br /&gt;Move 0 to #Inserts&lt;br /&gt;Move 0 to #Tot-Recs&lt;br /&gt;&lt;br /&gt;While Not #End-File&lt;br /&gt;Read 1 Into $Input:1000&lt;br /&gt;If #End-File&lt;br /&gt;Break&lt;br /&gt;End-If&lt;br /&gt;&lt;br /&gt;Unstring $Input By ‘ ‘ Into&lt;br /&gt;$Emplid –&lt;br /&gt;$Empl_Rcd –&lt;br /&gt;$Effdt –&lt;br /&gt;$Effseq –&lt;br /&gt;$Deptid –&lt;br /&gt;$Deptid –&lt;br /&gt;$Jobcode –&lt;br /&gt;$Empl_Status –&lt;br /&gt;$Annual_Rt –&lt;br /&gt;$Monthly_Rt –&lt;br /&gt;$Hourly_Rt&lt;br /&gt;&lt;br /&gt;Do Insert_Temp_Job&lt;br /&gt;&lt;br /&gt;End-While&lt;br /&gt;&lt;br /&gt;Close 1&lt;br /&gt;Display ‘ Total records inserted:’&lt;br /&gt;Display #Tot-Recs 999,999,999&lt;br /&gt;End-Procedure&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;!*************************************&lt;br /&gt;Begin-Procedure Insert_Temp_Job&lt;br /&gt;!*************************************&lt;br /&gt;Begin-SQL On-Error=Insert_Error&lt;br /&gt;&lt;br /&gt;Insert Into Temp_Job_Tbl&lt;br /&gt;(&lt;br /&gt;Emplid,&lt;br /&gt;Empl_Rcd,&lt;br /&gt;Effdt,&lt;br /&gt;Effseq,&lt;br /&gt;Deptid,&lt;br /&gt;Deptid,&lt;br /&gt;Jobcode,&lt;br /&gt;Empl_Status,&lt;br /&gt;Annual_Rt,&lt;br /&gt;Monthly_Rt,&lt;br /&gt;Hourly_Rt)&lt;br /&gt;Values&lt;br /&gt;(&lt;br /&gt;$Emplid&lt;br /&gt;$Empl_Rcd&lt;br /&gt;$Effdt&lt;br /&gt;$Effseq&lt;br /&gt;$Deptid&lt;br /&gt;$Deptid&lt;br /&gt;$Jobcode&lt;br /&gt;$Empl_Status&lt;br /&gt;$Annual_Rt &lt;br /&gt;$Monthly_Rt&lt;br /&gt;$Hourly_Rt )&lt;br /&gt;End-SQL&lt;br /&gt;&lt;br /&gt;If #sql-count=1&lt;br /&gt;Add 1 to #Inserts&lt;br /&gt;If #Inserts &gt;= 500&lt;br /&gt;Commit&lt;br /&gt;Move 0 to #Inserts&lt;br /&gt;End-If&lt;br /&gt;Add 1 to #Tot_Recs&lt;br /&gt;End-If&lt;br /&gt;&lt;br /&gt;End-Procedure&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;!*************************************&lt;br /&gt;Begin-Procedure Insert_Error&lt;br /&gt;!*************************************&lt;br /&gt;If #sql-status = -9&lt;br /&gt;Show ‘ insert error: duplicate row is not allowed for emplid=’ $Emplid&lt;br /&gt;Else&lt;br /&gt;Show ‘Insert Error:’ $sql-error&lt;br /&gt;Show ‘Error No: ‘ #sql-status&lt;br /&gt;Stop&lt;br /&gt;End-If&lt;br /&gt;&lt;br /&gt;End-Procedure&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Key Points&lt;br /&gt;&lt;br /&gt;1. SQR provides the following Input/Output commands: Open, Read, Write and Close.&lt;br /&gt;2. Before accessing a file, it must be opened. If we are reading a file it should be opened For-Reading. If we are writing to a file, it should be opened For-Writing.&lt;br /&gt;3. The open For-Append parameter is used when we need to append the records to an existing file. If a file does not exist, it will be created.&lt;br /&gt;4. The record type may be defined as Fixed, Vary, or Fixed_Nolf(fixed with no line terminator). The Fixed_Nolf type is often used for accessing binary data.&lt;br /&gt;5. When reading from or writing to a file, we refer to the file by the file number rather than by the file name. File names are specified only in the Open command.&lt;br /&gt;6. SQR internal variables #End-File is set to 1 when there are no more records to read.&lt;br /&gt;7. When reading text data, the trailing blanks are omitted.&lt;br /&gt;8. In order to read binary data, the file must be opened as Fixed or Fixed_Nolf.&lt;br /&gt;9. We cannot read or write NULL values from or to an ASCII file&lt;br /&gt;10. The Print and New-Page commands can be used to create Flat Files with fixed length record.&lt;br /&gt;11. We can use the operating system commands to sort files.&lt;br /&gt;12. Files are closed either by Close command, or upon successful termination of our program.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;SQR Program Execution&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;SQR program can be invoked in a number of ways.&lt;br /&gt;&lt;br /&gt;We can run an SQR program from the&lt;br /&gt;&lt;br /&gt;1. SQR Dialog Box in the windows environment.&lt;br /&gt;2. Command Line&lt;br /&gt;3. PeopleSoft Process-Scheduler&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Executing SQR Program from the Command Line&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;When executing an SQR program from the operating system Command Line, we need to enter&lt;br /&gt;&lt;br /&gt;· The name of the SQR engine (SQRW in Windows, SQR in Unix, etc)&lt;br /&gt;· Our program name&lt;br /&gt;· The database connectivity string&lt;br /&gt;· SQR command line flags&lt;br /&gt;· Application specific arguments&lt;br /&gt;&lt;br /&gt;Since .sqr is the default extension for all SQR source programs, we don’t have to specify it, unless our program has another extension.&lt;br /&gt;&lt;br /&gt;The database connectivity string contains important information needed to connect our program to the DB, including User Id and Password. The exact format of this string is database-specific.&lt;br /&gt;&lt;br /&gt;Sqrw test01.sqr sqrbook/passwd –Fc:\temp\ -windows&lt;br /&gt;&lt;br /&gt;Sqrw test01.sqr sqrbook/passwd –Fc:\temp\mysqr.lis -Windows&lt;br /&gt;&lt;br /&gt;Sqr test01.sqr sqrbook/passwd –F/home/output -Unix&lt;br /&gt;&lt;br /&gt;Sqrw test18a.sqr test/pswrd @arg1.dat !argument file is arg1.dat&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Executing Pre-Compiled SQR Program/.SQT Program&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;In order to compile an SQR program without executing, use the –RS SQR command line flag which allows us to create a pre-compiled version of our program. Pre-compiled programs are usually assigned the extension of .SQT and are sometimes called SQT programs.&lt;br /&gt;&lt;br /&gt;After an SQT program is created, we can execute it at any time with the help of either the –RT SQR command line flag or via the SQR Execute (SQRWT for windows, SQRT for Unix) program. The SQR Execute program performs only program execution, it allows us to specify most command line flags similar to the flags we specify when executing our program in 2 stages.&lt;br /&gt;&lt;br /&gt;The following example shows how to pre-compile and then execute and SQR program.&lt;br /&gt;&lt;br /&gt;Sqrw test01.sqr sqrbook/passwd –RS !compile test01.sqr&lt;br /&gt;Sqrw test01.sqt sqrbook/passwd –RT –Fc:\temp\ !execute testo1.sqt&lt;br /&gt;&lt;br /&gt;All the commands in Setup section are processed at compile time. This means that when a pre-compiled program is executed, all Ask commands will be ignored. We will have to use Input command, instead of Ask command to prompt for user input at run time.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Executing SQR Programs in Batch Mode&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;SQR programs can be executed in batch mode under MS-DOS, Windows, UNIX or MVS. For example an SQR command line can be included into a batch file or a Unix shell Script. PeopleSoft users are, probably, familiar with a special script name PRCS_SQR. This script wad developed by PeopleSoft to run PeopleSoft SQR programs in the Unix Environment. It takes all user parameters from PeopleSoft on-line panels with the help of the PeopleSoft Process Scheduler, and dynamically builds the regular SQR command line.&lt;br /&gt;&lt;br /&gt;********* The Call System SQR command is the Operating system command.&lt;br /&gt;&lt;br /&gt;Call System Using ‘cp /usr/tmp/file1.dat /usr/tmp/file2.dat’ #Status&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Key Points&lt;br /&gt;&lt;br /&gt;1. We can execute an SQR program from a Command Line, start this program from the SQRW Dialog Box in the windows environment, or call the program from other program.&lt;br /&gt;2. SQR allows us to changes its default behavior by using its command line flags. SQR command line flags always start with a dash (-). Some flags may have additional arguments. In this case, the arguments must follow their respective flags immediately with no intervening spaces.&lt;br /&gt;3. When flag arguments specify file directories, they must be ended with the operating system-specific directory character. For windows, it is a backslash ‘\’; for unix, a forward slash ‘/’.&lt;br /&gt;4. SQR command line arguments are the values that your SQR program expects to receive from the command line via the Ask command at compile time or the Input command at run time.&lt;br /&gt;5. We can use an argument file to pass arguments to our program on the command line. Each argument must be entered in the argument file on a separate line.&lt;br /&gt;6. SQR processes the program in 2 stages. The compilation stage and the execution stage. We can use –RS command flag to create a pre-compiled version of program with .SQT extension. We can execute the .SQT file by specifying –RT command flag or using the SQR Execute.&lt;br /&gt;7. We can issue any operating system command within SQR program. The Call System Using command is used to execute the operating system commands.&lt;br /&gt;8. In addition to issuing the operating system commands, the Call System Using command can be used to invoke any executable program.&lt;br /&gt;9. In order to call SQR program from other applications, we can use the SQRAPI&lt;br /&gt;10. SQR programs can be scheduled fro execution from PeopleCode.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Key Points&lt;br /&gt;&lt;br /&gt;1. We can generate program reports in an HTML compatible format and publish these reports on the Internet.&lt;br /&gt;2. There are 3 main methods to generate HTML from an SQR program output.&lt;br /&gt;3. We always have to use the –PRINTER:HT, -PRINTER:EH command line parameters to have our program generate HTML output.&lt;br /&gt;4. All SQR HTML procedures are delivered in the Html.inc file.&lt;br /&gt;5. Executing the Html_On procedure turns on all SQR HTML procedures, but causes SQR to ignore all print position qualifiers.&lt;br /&gt;6. The SQR HTML table procedures can be used to control the report-element positioning.&lt;br /&gt;7. The SQR HTML hypertext link procedure allows us to specify links to other parts of the current web page or to an external web page. Alternatively, we can use these procedures to define anchors within our report so that the same or other web pages can have links to these anchors.&lt;br /&gt;8. Our program can use the regular SQR Input command to accept input parameters from another HTML Script.&lt;br /&gt;9. If we run an SQR program without the -PRINTER:HT, -PRINTER:EH command flag, SQR will ignore all SQR HTML procedures in the program and will generate regular LIS files as the program’s output.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Debugging Techniques&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Show and Display commands&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;When it comes to debugging an SQR program, there are no fancy step-through debuggers. The main weapons are 2 SQR commands: Show and Display. We can use these commands anywhere in our program except the Setup Section. Both the Show and Display commands display the specified texts and variables on the screen and also write the same information into the program log file.&lt;br /&gt;&lt;br /&gt;If for example, we ran and completed a program successfully, but output is not what we expected, then we need to find out whether our program had some logic flaws, or whether the unexpected results have been caused by an incorrect selection in the programs query. The simplest way to find this out is to add some Show or Display commands to the program.&lt;br /&gt;&lt;br /&gt;Show ‘Select started’&lt;br /&gt;Begin-Select&lt;br /&gt;A.Emplid&lt;br /&gt;A.Name&lt;br /&gt;Show ‘selected emplid=’ &amp;a.emplid ‘Name=’ &amp;A.Name&lt;br /&gt;From Personal_data&lt;br /&gt;Where name like ‘Abr%’&lt;br /&gt;End-Select&lt;br /&gt;&lt;br /&gt;In the above example, each selected record is displayed on the screen and written to the program log file.&lt;br /&gt;&lt;br /&gt;The Display command is somewhat similar to the Show command, but it has less power; we cannot display multiple fields in one Display command.&lt;br /&gt;&lt;br /&gt;Display ‘Selected Emplid = ‘ Noline&lt;br /&gt;Display &amp;A.Emplid&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;The #Debug Command&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;We can optionally use the #Debug conditional compiler directive by executing the Display, Show, Print or other commands in our program during testing, and then deactivating them when the program is released to production. This approach is called Debugging Encapsulation.&lt;br /&gt;&lt;br /&gt;Any SQR command that immediately follows the #Debug statement will be compiled only when the corresponding –Debug flag is specified in the SQR command line. The #Debug command may be appended with one or more letters or numbers: ex #Debugxy, to provide additional flexibility in debugging. We may optionally specify up to 10 different suffix letters or numbers.&lt;br /&gt;&lt;br /&gt;#Debug Show ‘Start proce1’&lt;br /&gt;#Debugx Show ‘Start proc2’&lt;br /&gt;#Debugy Display ‘start proc3’&lt;br /&gt;#Debugz Display ‘Start proc4’&lt;br /&gt;&lt;br /&gt;#Ifdef or #Ifndef / #End-If&lt;br /&gt;#If / #Else / #End-If&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Key Points&lt;br /&gt;&lt;br /&gt;1. The Display and Show commands are the main instruments in debugging SQR programs.&lt;br /&gt;2. The –DEBUG SQR command line flag in combination with the #Debug, #Ifdef, and #Ifndef statements, can help to encapsulate the debugging logic in your program.&lt;br /&gt;3. The –S, -T, -C and –E SQR command line flags can provide additional help during the debugging process.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Local Procedures Vs. Global Procedures&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;All procedures in SQR are considered global by default. In order to make a procedure local, it must have parameters or must be explicitly declared local. Variables that appear in local procedures are not available outside of their respective procedures. This way, the same variable name can be used in different local procedures without creating an error situation.&lt;br /&gt;&lt;br /&gt;Local procedures can communicate with other local and global procedures via parameters. Since global variables defined outside of a local procedure can be accessed only by using special naming convention there is no risk that some variable values can be accidentally overridden.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Key Points&lt;br /&gt;&lt;br /&gt;1. To support global development:&lt;br /&gt;· Avoid hard-coding date, currency and numeric edit format masks: use SQR special keywords Date, Money and Number instead.&lt;br /&gt;· Use SQR locales.&lt;br /&gt;2. To ensure our program platform independence:&lt;br /&gt;· Do not use fully qualified hard-coded file names&lt;br /&gt;· Use the $sqr-platform predefined variable to determine the current platform&lt;br /&gt;· Avoid calling operating system commands from SQR programs; use similar SQR functions instead.&lt;br /&gt;· Test your programs on both client and server&lt;br /&gt;3. These rules will help to write database independent programs&lt;br /&gt;· Do not use database-specific function, use similar SQR function instead.&lt;br /&gt;· Avoid using built-in function in the where clause&lt;br /&gt;· Use the ANSI standards in SQL&lt;br /&gt;· Do not rely on database-specific default date formats&lt;br /&gt;· Do not assume that all database return the same error codes and messages&lt;br /&gt;· Do not use database specific command parameters and flags.&lt;br /&gt;&lt;br /&gt;4. Using SQR procedures in the Begin-Select instead of sub-queries gives your move flexibility and improves readability of program, but may negatively impact performance.&lt;br /&gt;5. Local procedures may help to avoid errors caused by incorrect usage of previously defined variables.&lt;br /&gt;6. Coding error-handling routines allows you to alter users of any unusual situation, avoid the system crushes, and prevent a possible database corruption.&lt;br /&gt;7. Avoid hard-coding in programs&lt;br /&gt;8. Place encapsulated debugging statements in the program code&lt;br /&gt;9. Do not forget about comments&lt;br /&gt;10. Use meaningful variable name.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Running SQR in PeopleSoft Applications&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;We can run SQR programs from the SQR Dialog Box, or from the operating system Command Line. PeopleSoft-delivered reports are usually executed from an online page and run with the help of the PeopleSoft Process Scheduler.&lt;br /&gt;&lt;br /&gt;Programs in PeopleSoft can be written in different languages: SQR, Crystal Reports, Cobol Application Engine, etc. all these programs can run under the PeopleSoft Process Scheduler. The Process Scheduler works with processes and job streams.&lt;br /&gt;&lt;br /&gt;A process is any program that runs under PeopleSoft Process Scheduler. It can be a reporting program, a file generation program, a database update program, or a combination of all these. We can run processes on workstation or a server. The PeopleSoft Process Scheduler can help to schedule the execution of processes so that they can run automatically.&lt;br /&gt;&lt;br /&gt;The PeopleSoft Process Scheduler allows bundling processes into job streams and scheduling them to run at a specific date and time.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Process&lt;br /&gt;Scheduler&lt;br /&gt;Process Monitor&lt;br /&gt;SQR Program&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;When page information is filled in, PeopleSoft generates process request parameters. These parameters usually include User Id, Run Control Id, Run Location, Output Destination, File/Printer name, plus application-specific parameters, fro example, company Id, FromDate, ToDate and so on.&lt;br /&gt;&lt;br /&gt;After the process request parameters have been read from a page, PeopleSoft passes them to the Process Scheduler. The Process Scheduler generates the SQR command line with flags and arguments that are required to run the requested SQR program, invokes SQR and passes the flags and arguments to SQR. When the input from the page is save, the system updates a number of tables that are used by SQR to communicate with the Process Scheduler and the Process Monitor via the PeopleSoft API.&lt;br /&gt;&lt;br /&gt;The requested SQR program is executed. It may generate reports, update the database, create flat files, or print its reports directly on the specified printer. Users are kept inormed abou the program status with the help of the PeopleSoft Process Monitor. The Process Monitor receives the program feedback via the PeopleSoft API parameters and displays the program status on the Process Monitor page.&lt;br /&gt;&lt;br /&gt;Any program run under the Process Scheduler is considered as a process.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Run Control&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;When we run a process via the Process Scheduler, we need to supply it with a number of parameters like; the run location, output destination, output format, file/printer name, etc. this information is stored in the PeopleTools Run Control record PSPRCSRUNCNTL.&lt;br /&gt;&lt;br /&gt;Each process maintains its own Application Run Control Record to store the process-specific input run-time parameters for ex: as-of-date, companycode, or state. The Run Control Id along with the OperId are the key fields in both Application Run Control Record and PeopleTools Run Control Record.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Process Scheduler Request Dialog&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;The Process Scheduler Request Dialog is used to specify where we want to run our report, the destination type and format of our output and the time of the report execution.&lt;br /&gt;&lt;br /&gt;In this page we tell the system how to handle our process request. We select the Server Name, Recurrence definition, Run Date &amp; Run Time.&lt;br /&gt;&lt;br /&gt;The Recurrence parameter allows defining a process as a recurring process that may be executed on a periodic basis.&lt;br /&gt;&lt;br /&gt;The default output format for SQR with output type web is Adobe Acrobat-(.pdf)&lt;br /&gt;&lt;br /&gt;After filling Process Scheduler Request page, click on the OK button. The PeopleTools Run Control Record (PSPRCSRUNCNTL) is updated. Also a record is inserted into the PSPRCSRQST table (Process Request Table) and other PeopleTools tables. This gives the Process Scheduler the necessary information to run and monitor the process request. The Process Scheduler Server Agent pools the PSPRCSRQST table for incoming process request. When the row is found, the Server Agent invokes special program, called PSSQR wrapper, which then calls SQRW.EXE or SQR.EXE depending on the platform the SQR report runs on.&lt;br /&gt;&lt;br /&gt;Take a look at the line under the Run Button. It shows the Process Instance Number. As soon as report is submitted, the system automatically generates the Process Instance value.&lt;br /&gt;&lt;br /&gt;Note: A Process Instance number displayed under the Run Button indicates that our Process has been submitted for execution.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;The Process Monitor&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;The Process Monitor not only allows to check the status of our process, but also to delete completed report request from the queue or cancel process requests that re currently running or have been initiated.&lt;br /&gt;&lt;br /&gt;If we click on the Process Monitor hyperlink the system will bring the Process Monitor Page. The Refresh Button is used to update this page. The process Monitor shows the Processes by User (Operator Id). We can modify this process list by narrowing the selection down to a specific Server, Type (SQR Report, SQR Process, Application Engine, Crystal, etc.) or Run Status (Success, Error, Initiated, Canceled).&lt;br /&gt;&lt;br /&gt;Queued =&gt; Initiated =&gt; Processing =&gt; Posting =&gt; Success.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Key Points&lt;br /&gt;&lt;br /&gt;1. PeopleSoft delivered reports are usually executed from online page and run with the help of the PeopleSoft Process Scheduler&lt;br /&gt;2. The Process Scheduler works with processes and job streams.&lt;br /&gt;3. PeopleSoft recommends executing processes and jobs via the PeopleSoft Internet Architecture (PIA). It allows more flexibility in distribution and viewing the report output in Report Manager&lt;br /&gt;4. The Process Scheduler controls process execution with the help of the control records; PeopleTools Run Control and the Application Run Control. The Run Control Id along with the Operator Id are the key fields in these records.&lt;br /&gt;5. Clicking on the Run Button in the Run Control Page does not submit a report. It brings u the Process Scheduler Request page.&lt;br /&gt;6. The Process Scheduler Request Page is used to specify where you want to run your report, the destination and the type and format of your output, and the time of the report execution.&lt;br /&gt;7. The Process Instance number displayed under the Run button on the Run Control Page indicates that your process has been submitted for execution.&lt;br /&gt;8. SQR is executed the wrapper program PSSQR.exe. This is an executable module of a program written in C that is responsible for handling your process request.&lt;br /&gt;9. The Trace File hyperlink in the Report/Log Viewer brings you a page with the log file. Any Display or Show statements used in our SQR program will be shown in this file. It will also show you any errors produced by the program.&lt;br /&gt;10. The View Log/Trace link appears on the Process Monitor detail page if the following 2 conditions are true.&lt;br /&gt;a. the process request output destination is set to web.&lt;br /&gt;b. The report and log files were successfully posted to the Report Repository by the Distribution Agent. The process must have a run status of successful.&lt;br /&gt;11. If the program produced a report with an output destination type of web, we would be able to click on the report link from the Report/Log viewer page and view your report online. For process types with output other than web, we can track their status through the Message Log.&lt;br /&gt;12. The Status on the Report manager page differs from the Run Status on the Process Request page.&lt;br /&gt;&lt;br /&gt;To access any report under PeopleSoft, we need to know the Menu to which this report belongs. After all application-specific parameters are entered and the Run Control page is saved, the system inserts this information into the Application Run Control record fro the report. In order to attach our report to a Run Control Page, a Process Definition has to be created for this report.&lt;br /&gt;&lt;br /&gt;The following PeopleTools objects have be created or reused when we need to attach a custom report to the PeopleSoft Process Scheduler.&lt;br /&gt;&lt;br /&gt;· Menu&lt;br /&gt;· Run Control Page&lt;br /&gt;· Component&lt;br /&gt;· Application Run Control Record&lt;br /&gt;· Process Definition&lt;br /&gt;&lt;br /&gt;PeopleSoft delivered Application Run Control Record is PRCSRUNCNTL, which has the following fields&lt;br /&gt;&lt;br /&gt;OperId Key&lt;br /&gt;Run_Cntl_Id Key&lt;br /&gt;Language_Cd&lt;br /&gt;Language_Option&lt;br /&gt;&lt;br /&gt;PeopleSoft delivered Run Control Page is PRCSRUNCNTL which has a Sub-Page named PRCSRUNCNTL_SBP.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;br /&gt;Creating Process Definition&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Every process run under the PeopleSoft Process Scheduler needs a Process Definition to specify the process attributes and link the process to the appropriate component.&lt;br /&gt;&lt;br /&gt;To create a Process definition, we will be using the Process Scheduler manager. This component of PeopleTools, similar to the Maintain Security tool, is accessed via PIA.&lt;br /&gt;&lt;br /&gt;Navigation: Home=&gt;PeopleTools=&gt;Process Scheduler Manager=&gt;Use=&gt;Process Definition.&lt;br /&gt;&lt;br /&gt;If we select SQR process, the Process Scheduler will not pass the Operator ID and Run Control ID to our program and the program will not work correctly unless we specify Operator ID and Run Control Id as additional parameters.&lt;br /&gt;&lt;br /&gt;The Process Name must be the same as our program name, the extension .sqr is not needed.&lt;br /&gt;&lt;br /&gt;After we press OK and assigned the type to our process, the system displays the Process Scheduler Process definition component. This component consists of the following 6 pages&lt;br /&gt;&lt;br /&gt;1. Process Definition&lt;br /&gt;2. Process Definition Options&lt;br /&gt;3. Override Options&lt;br /&gt;4. Destination&lt;br /&gt;5. Page Transfer&lt;br /&gt;6. Notification&lt;br /&gt;The Process Definition Page&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;An API aware process is a process that updates the Process Request Table (PSPRCSRQST) with the Process Run Status (Error, Success etc), completion code, message set and message number. This allows the system to perform Commit or Rollback, depending on the Run Status. Based on the process execution results, the system displays a standard or custom message on the Process Monitors Process Request Detail Page.&lt;br /&gt;&lt;br /&gt;Not every program is API aware. Turning the API aware flag ON does not automatically make the process API aware.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;The Process Definition Options Page&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;In this page the Run location can be Server, Client or both. The Server name is (optional) specified if you always have to run your process on a particular server. If we do not want to be so restrictive, eave it blank.&lt;br /&gt;&lt;br /&gt;If a user leaves the server name blank on the process request page, the system automatically find the first available server that can process the request for this process class. The server name can be specified only if the run location is server.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Placing the SQR Program into the right Directory&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;SQR reports are located on the file server on your network. There are 4 environment variables that are used by PeopleSoft. The Process Scheduler uses these variables to search for your SQR program.&lt;br /&gt;&lt;br /&gt;%PSSQR1% - your workstation user SQR directory&lt;br /&gt;%PSSQR2% - your workstation PS delivered SQR Directory&lt;br /&gt;%PSSQR3% - network file server user SQR directory&lt;br /&gt;%PSSQR4% - network file server PS delivered SQR directory&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Key Points&lt;br /&gt;&lt;br /&gt;1. Any Run Control Record must have the Operator Id and the Run Control Id as its key fields.&lt;br /&gt;2. A Run Control Record may contain additional fields that are not used in our program.&lt;br /&gt;3. A Run Control Page should be specific to our application and should contain only the fields that we want user to enter. Many processes may use the same Run Control page as long as they share the same input parameters.&lt;br /&gt;4. A Component acts as a link between a Run Control page and a menu. There may be multiple pages in a single component.&lt;br /&gt;5. We can add our SQR program to an existing menu item or create a new one.&lt;br /&gt;6. The appropriate security access must be granted to allow all users to see the new menu.&lt;br /&gt;7. Each PeopleSoft user has an individual profile, called User Profile, which is linked to one or more roles.&lt;br /&gt;8. Permission lists control access to menu, components, and pages for each role. Roles act as links between User Profiles and Permission lists.&lt;br /&gt;9. An API aware process update the Process Request (PSPRCSRQST) tables with the process run status, completion code and message parameters.&lt;br /&gt;10. In Order to make our SQR program run under the Process Scheduler, the following PeopleSoft object have to be created, modified or reused:&lt;br /&gt;a. Application-specific Run Control Record&lt;br /&gt;b. Application Run Control Page&lt;br /&gt;c. Component&lt;br /&gt;d. Menu Item&lt;br /&gt;e. Security access to the new component&lt;br /&gt;f. Process Definition&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Making SQR Program API Aware&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Making an SQR program API aware involves adding a program code to update the Process Request Table (PSPRCSRQST) with the program run status (Error, Success) completion code, error message set and error message number.&lt;br /&gt;&lt;br /&gt;In order to make our SQR Program API aware, we have to use the #Include operators to add the STDAPI.sqc and SETENV.sqc files to our program. The STDAPI.sqc intern, uses the nested #Include operators that refer to other important API files.&lt;br /&gt;&lt;br /&gt;#Include ‘setenv.sqc’&lt;br /&gt;&lt;br /&gt;Begin-Program&lt;br /&gt;Do Stdapi-Init&lt;br /&gt;Do Main&lt;br /&gt;Do Stdapi-Term&lt;br /&gt;End-Program&lt;br /&gt;&lt;br /&gt;#Include ‘datetime.sqc’&lt;br /&gt;#Include ‘Stdapi.sqc’&lt;br /&gt;&lt;br /&gt;At the program start, the Stdapi-Init procedure is invoked. This procedure is a part of the PeopleSoft-delivered SQC file STDAPI.sqc. Stdapi-Init invokes 2 more procedures in tern. The first one is Define-Prcs-Vars its job is to initialize all API variables, the second procedure is Get-Run-Control-Parms determine whether the program is called from the Process Scheduler and, if yes, promotes the run status from ‘Initiated’ to ‘Processing’&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;At the end of the main section, the program calls the Stdapi-Term procedure, which is a part of STDAPI.sqc. The purpose of this procedure is to update the PRCSRQST table with the Process Run Status, Message Parameters, and Return code.&lt;br /&gt;&lt;br /&gt;The Run Status in the PSPRCSRQST table is updated based on the #prcs_run_status variable value. The variable determines the Run Status that we see on the Process Monitor page.&lt;br /&gt;In a normal run PeopleSoft promotes the Process Run Status in the following order: &lt;br /&gt;&lt;br /&gt;Queued -&gt; Initiated -&gt; Processing -&gt; Success&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Key Points&lt;br /&gt;&lt;br /&gt;1. An API aware process is a process that updates the Process Request table (PSPRCSRQST) with the process run status (Error, success) completion code, message set, and message number.&lt;br /&gt;2. PeopleSoft-delivered SQC file STDAPI.sqc helps us to make our program API aware.&lt;br /&gt;3. The Define-Prcs-Vars procedure in PRCSDEF.sqc initializes tall the fields used in the API.&lt;br /&gt;4. The Get_Run_Control_Params procedure in PRCSAPI.sqc retrieves input parameters: Database Name, Process Instance, Operator Id, and Run Control Id.&lt;br /&gt;5. It is our SQR programs responsibility to communicate errors back to the Process Scheduler.&lt;br /&gt;&lt;br /&gt;Key Points&lt;br /&gt;&lt;br /&gt;1. To accept input parameters from PeopleSoft online pages, we can either use the existing PeopleSoft-delivered SQC files or develop our own, depending on the parameters our SQR program needs to accept.&lt;br /&gt;2. Our program should support both types of input parameter retrieval logic: retrieving the parameters from the Process Scheduler, or accepting them from the SQR Dialog Box, or the Command Line.&lt;br /&gt;3. Usually, there are 2 SQC files involved in accepting program input parameters from PeopleSoft Online pages. 1 file should contain a procedure to select all required fields from the proper Run Control Record. Another one should include procedures to edit the selected fields and place them into designated SQR variables.&lt;br /&gt;4. Our SQR program must be changed to include the proper SQC files, and a code to call the input parameter retrieval procedures.&lt;br /&gt;5. A Run Control page that contains all the input parameters should be developed, or an existing page should be used or customized.&lt;br /&gt;6. The changed SQR program has to be thoroughly tested to make sure that the input parameters are passed and accepted correctly.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Key Points&lt;br /&gt;&lt;br /&gt;1. We can schedule our programs that run on Server for execution on a recurring basis.&lt;br /&gt;2. A job may include one or more processes.&lt;br /&gt;3. In order to schedule a job for execution, a job definition has to be created. Like a Process Definition, a Job Definition needs to be associated with a Component.&lt;br /&gt;4. We can include processes of different types (SQR program, Cobol, Application Engine,) into one job.&lt;br /&gt;5. We need to create a page in the jobs Component for each run control record used by a process in the job.&lt;br /&gt;6. If we want our processes to be executed sequentially, we should select the Serial mode on our Job definition page, otherwise, use the Parallel Mode.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Preventing an SQR from running outside the Process Scheduler&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;If the value of $Prcs_oprid is Null, SQR detects that it is not executed from the Process Scheduler.&lt;br /&gt;&lt;br /&gt;Key Points&lt;br /&gt;&lt;br /&gt;1. In order to prevent an SQR Program execution outside the PeopleSoft Process Scheduler, check the value of the $prcs_oprid variable.&lt;br /&gt;2. Row-Level security is used to control access to specific rows of data in the database. PeopleSoft delivers applications with row-level security.&lt;br /&gt;3. PeopleSoft uses security search view records to provide on-line row-level security.&lt;br /&gt;4. Build your own security views when we cannot use the PeopleSoft-delivered ones.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Working with Effective-Dated Tables&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;In PeopleSoft, most applications are built around the concept of effective dates. This approach facilitates managing data changes over time and keeping track of all changes. It also allows for creating future-dated information and making these data effective only on the appropriate date.&lt;br /&gt;&lt;br /&gt;In order to accomplish this task, some PeopleSoft tables contain a special field: EFFDT- effective date. A table that contains the effective date as part of the table key, is usually called an effective-dated table, and the data rows of such tables are called effective-dated rows.&lt;br /&gt;&lt;br /&gt;PeopleSoft relates all effective-dated rows to one of the following 3 categories:&lt;br /&gt;&lt;br /&gt;· Historical data rows&lt;br /&gt;· The Current data rows&lt;br /&gt;· Future data rows&lt;br /&gt;&lt;br /&gt;The current data row is the most recently entered row, whose effective date comes closest to todsy’s date without exceeding, it. For a given search criteria, there can be only 1 current data record within a particular table.&lt;br /&gt;&lt;br /&gt;The future data rows are rows with effective dates that are greater than today’s date. All other rows are considered historical rows. The historical data rows include rows with effective dates that are less than the current row’s effective date, as well as the rows with the effective date equal to the current row effective date if these rows were entered into the system prior to the current row.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Multiple Records with the same Effective Date&lt;br /&gt;&lt;br /&gt;In many cases, we need to insert multiple rows with the same effective date into an effective-dated table. Lets consider an example of the effective-dated table PS_JOB that belongs to the PeopleSoft HRMS system. This table contains employee job history records.&lt;br /&gt;&lt;br /&gt;An employee may have several events that can occur on the same date. Most of these events are registered in the employee’s job history. When 2 different events may occur on the same day, PeopleSoft provides a key field Effseq (Effective Sequence). When paired with Effdt, this key combination allows entering more than one unique row with the same effective date.&lt;br /&gt;&lt;br /&gt;Begin-Select&lt;br /&gt;A.Emplid&lt;br /&gt;A.Company&lt;br /&gt;A.Effdt&lt;br /&gt;A.Action&lt;br /&gt;From PS_JOB A&lt;br /&gt;Where A.Company=’CCB’&lt;br /&gt;And A.Effdt = (Select max(Effdt) from PS_JOB B&lt;br /&gt;Where A.Emplid = B.Emplid&lt;br /&gt;And A.Empl_Rcd = B.Empl_Rcd&lt;br /&gt;And A.Effdt &lt;= Sysdate)&lt;br /&gt;And A.Effseq = (Select max(Effseq) from PS_JOB C&lt;br /&gt;Where A.Emplid = C.Emplid&lt;br /&gt;And A.Empl_Rcd = C.Empl_Rcd&lt;br /&gt;And A.Effdt = C.Effdt)&lt;br /&gt;End-Select&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Selecting the top row from the Effective-dated table&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Begin-Select&lt;br /&gt;A.Emplid&lt;br /&gt;A.Company&lt;br /&gt;A.Effdt&lt;br /&gt;A.Action&lt;br /&gt;From PS_JOB A&lt;br /&gt;Where A.Company=’CCB’&lt;br /&gt;And A.Effdt = (Select max(Effdt) from PS_JOB B&lt;br /&gt;Where A.Emplid = B.Emplid (the sub selection does not include additional&lt;br /&gt;And A.Empl_Rcd = B.Empl_Rcd restrictions on the Effective dates.)&lt;br /&gt;&lt;br /&gt;And A.Effseq = (Select max(Effseq) from PS_JOB C&lt;br /&gt;Where A.Emplid = C.Emplid&lt;br /&gt;And A.Empl_Rcd = C.Empl_Rcd&lt;br /&gt;And A.Effdt = C.Effdt)&lt;br /&gt;End-Select&lt;br /&gt;&lt;br /&gt;Key Points&lt;br /&gt;&lt;br /&gt;1. Placing effective dates in table records allows from managing and tracking data changes over time.&lt;br /&gt;2. Tables that contain the Effective date columns are usually called Effective-dated tables.&lt;br /&gt;3. PeopleSoft relates all effective-dated rows to one of the 3 categories: Historical rows, Current rows and Future rows.&lt;br /&gt;4. There can be one 1 current record for a particular table key.&lt;br /&gt;5. In PeopleSoft, if the effective date is present in a table record, it is always a part of the table key.&lt;br /&gt;6. The effective sequence fields, when paired with the effective date fields, allow for entering more than 1 row with the same effective date.&lt;br /&gt;7. The MAX SQL aggregate function can be used to select the current rows from the effective-dated table.&lt;br /&gt;8. We can improve performance when selecting the current records by sorting table by the effective date and sequence and using Loops=1 to limit the output of the sub-queries to only 1 record.&lt;br /&gt;9. We can select both the current and prior rows from an effective-dated table.&lt;br /&gt;10. We can us the Exists SQL operator to select only specific prior rows.&lt;br /&gt;11. Date intervals between events can be calculated using either SQR date functions or database-specific functions. Avoiding database-specific functions makes your programs database-independent.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2388698495725806936-6108471895893735666?l=harshachowdaryworld.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://harshachowdaryworld.blogspot.com/feeds/6108471895893735666/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2388698495725806936&amp;postID=6108471895893735666' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2388698495725806936/posts/default/6108471895893735666'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2388698495725806936/posts/default/6108471895893735666'/><link rel='alternate' type='text/html' href='http://harshachowdaryworld.blogspot.com/2009/07/structured-querry-report.html' title='Structured Querry Report'/><author><name>Sri Harsha</name><uri>http://www.blogger.com/profile/07055600374301477821</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://2.bp.blogspot.com/_cv2CfEeLpVU/Sl7x0ilfPHI/AAAAAAAAAgE/e3fgUdRlTv8/S220/tin.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2388698495725806936.post-1682201332496390690</id><published>2009-07-22T06:44:00.000-07:00</published><updated>2009-07-22T06:44:42.897-07:00</updated><title type='text'>Multiple Report Generation in SQR</title><content type='html'>For generating multiple reports in sqr , Use different "Declare-Report" and use the different report name in various procedures Given an example code:- Here we get two reports&lt;br /&gt;&lt;br /&gt;begin-setup&lt;br /&gt;!#define MAX_LABEL_LINES 10&lt;br /&gt;!#define LINES_BETWEEN_LABELS 3begin-setup&lt;br /&gt;declare-layout labels&lt;br /&gt;paper-size&amp;H3D(10,11) left-margin&amp;H3D0.33&lt;br /&gt;end-declare&lt;br /&gt;declare-layout form_letter&lt;br /&gt;end-declare&lt;br /&gt;declare-layout listing&lt;br /&gt;end-declare&lt;br /&gt;declare-report labels&lt;br /&gt;layout&amp;H3Dlabels&lt;br /&gt;end-declare&lt;br /&gt;declare-report form_letter&lt;br /&gt;layout&amp;H3Dform_letter&lt;br /&gt;end-declare&lt;br /&gt;declare-report listing&lt;br /&gt;layout&amp;H3Dlisting&lt;br /&gt;end-declare&lt;br /&gt;end-setup&lt;br /&gt;&lt;br /&gt;begin-program&lt;br /&gt;do aa&lt;br /&gt;do bb&lt;br /&gt;end-program&lt;br /&gt;&lt;br /&gt;begin-procedure aa&lt;br /&gt;begin-select&lt;br /&gt;emplid (,1)&lt;br /&gt;position (+1)&lt;br /&gt;from psoprdefn&lt;br /&gt;end-select&lt;br /&gt;use-report form_letter --&gt; First report&lt;br /&gt;end-procedure&lt;br /&gt;&lt;br /&gt;begin-procedure bb&lt;br /&gt;print 'hello' (1,1)&lt;br /&gt;use-report listing --&gt; Second Report&lt;br /&gt;end-procedure&lt;br /&gt;&lt;br /&gt;You can use diferent layouts if you want as given above.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2388698495725806936-1682201332496390690?l=harshachowdaryworld.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://harshachowdaryworld.blogspot.com/feeds/1682201332496390690/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2388698495725806936&amp;postID=1682201332496390690' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2388698495725806936/posts/default/1682201332496390690'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2388698495725806936/posts/default/1682201332496390690'/><link rel='alternate' type='text/html' href='http://harshachowdaryworld.blogspot.com/2009/07/multiple-report-generation-in-sqr.html' title='Multiple Report Generation in SQR'/><author><name>Sri Harsha</name><uri>http://www.blogger.com/profile/07055600374301477821</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://2.bp.blogspot.com/_cv2CfEeLpVU/Sl7x0ilfPHI/AAAAAAAAAgE/e3fgUdRlTv8/S220/tin.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2388698495725806936.post-3434060506143010620</id><published>2009-07-21T03:28:00.001-07:00</published><updated>2009-07-21T03:28:45.677-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='PEOPLESOFT  HOT KEY&apos;S'/><title type='text'>PEOPLESOFT  HOT KEY'S</title><content type='html'>We all probably know that “CTRL J” hot key gives us the system information. But did you know that there are a lot more available. But you do not have to trouble your brain to remember them, simply press navigate to a search or transaction page and invoke hot key “CTRL K” to get all the information. Below are the results from PeopleSoft “CTRL K“.&lt;br /&gt;Accessing your application using the keyboard&lt;br /&gt;Keyboard navigation is controlled by Hot keys and Access keys .&lt;br /&gt;&lt;br /&gt;List of Hot Keys&lt;br /&gt;Alt 1– Executes different buttons depending on the page type&lt;br /&gt;&lt;br /&gt;                   &gt; Save button on the Toolbar in a page&lt;br /&gt;                   &gt; OK button on a secondary page&lt;br /&gt;                   &gt; Search or Add button on a Search or Lookup page&lt;br /&gt;&lt;br /&gt;Alt 2 — Return to Search&lt;br /&gt;Alt 3 — Next in List&lt;br /&gt;Alt 4 — Previous in List&lt;br /&gt;Alt 5 — Valid Lookup Values&lt;br /&gt;Alt 6 — Related Links&lt;br /&gt;Alt 7 — Insert Row in grid or scroll area&lt;br /&gt;Alt 8 — Delete Row in grid or scroll area&lt;br /&gt;Alt 0 — Refreshes the page by invoking the Refresh button on the Toolbar&lt;br /&gt;Alt . — Next set of rows in grid or scroll area [e.g., Alt period]&lt;br /&gt;Alt , — Previous set of rows in grid or scroll area [e.g., Alt comma]&lt;br /&gt;Alt /– Find in grid or scroll area [e.g., Alt forward slash]&lt;br /&gt;Alt ‘ — View All in grid or scroll area [e.g., Alt prime]&lt;br /&gt;Alt \– Toggle between Add and Update on the Search page [e.g., Alt backslash]&lt;br /&gt;Ctrl J– System Information&lt;br /&gt;Ctrl K&gt; — Keyboard Information&lt;br /&gt;Ctrl Y&gt;– Toggle menu between collapse and expand.&lt;br /&gt;Ctrl Tab&gt; — Toggles focus through the frame set&lt;br /&gt;Enter &gt;– Invokes the following buttons where present: OK, Search, Lookup&lt;br /&gt;Esc &gt;– Cancel&lt;br /&gt;&lt;br /&gt;List of Access Keys&lt;br /&gt;Alt 9&gt; — Takes you to the Help line&lt;br /&gt;Alt \ &gt;– Takes you to the Toolbar [e.g., Alt backslash Enter]&lt;br /&gt;Ctrl Z&gt; — Takes you to the Search box of the Menu&lt;br /&gt;&lt;br /&gt;Menu Access Keys&lt;br /&gt;The Ctrl Z combination will focus your cursor onto the menuing system. From there, you can use your tab key (or shift-tab to reverse direction) to navigate through the menu hierarchy.&lt;br /&gt;&lt;br /&gt;About Access keys and Hot keys&lt;br /&gt;&gt;   An Access Key is an Alt key combination that moves focus to a specified field on the current page.&lt;br /&gt;For example, Alt \ moves focus to first button on the Toolbar. Then pressing the Enter key would invoke that action. Or, you may use the Tab key to move you to the next Toolbar button.&lt;br /&gt;&gt;   A Hot Key performs an immediate action. For example, when focus is in a field that has lookup processing, Alt 5 invokes the Lookup page without having to press the Enter key.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2388698495725806936-3434060506143010620?l=harshachowdaryworld.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://harshachowdaryworld.blogspot.com/feeds/3434060506143010620/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2388698495725806936&amp;postID=3434060506143010620' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2388698495725806936/posts/default/3434060506143010620'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2388698495725806936/posts/default/3434060506143010620'/><link rel='alternate' type='text/html' href='http://harshachowdaryworld.blogspot.com/2009/07/peoplesoft-hot-keys.html' title='PEOPLESOFT  HOT KEY&apos;S'/><author><name>Sri Harsha</name><uri>http://www.blogger.com/profile/07055600374301477821</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://2.bp.blogspot.com/_cv2CfEeLpVU/Sl7x0ilfPHI/AAAAAAAAAgE/e3fgUdRlTv8/S220/tin.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2388698495725806936.post-3636902304207841183</id><published>2009-07-19T22:31:00.001-07:00</published><updated>2009-08-18T23:21:17.590-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Time Clock code in PEopleSoft'/><category scheme='http://www.blogger.com/atom/ns#' term='PepleCode'/><title type='text'>Time Clock code in PEopleSoft</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_cv2CfEeLpVU/SmQBXpf1hLI/AAAAAAAAAgo/zqEfGGawuYo/s1600-h/Time+clock+in+PeopleSofrt.JPG"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 320px; height: 240px;" src="http://2.bp.blogspot.com/_cv2CfEeLpVU/SmQBXpf1hLI/AAAAAAAAAgo/zqEfGGawuYo/s320/Time+clock+in+PeopleSofrt.JPG" border="0" alt=""id="BLOGGER_PHOTO_ID_5360410962265736370" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2388698495725806936-3636902304207841183?l=harshachowdaryworld.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://harshachowdaryworld.blogspot.com/feeds/3636902304207841183/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2388698495725806936&amp;postID=3636902304207841183' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2388698495725806936/posts/default/3636902304207841183'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2388698495725806936/posts/default/3636902304207841183'/><link rel='alternate' type='text/html' href='http://harshachowdaryworld.blogspot.com/2009/07/time-clock-code-in-peoplesoft.html' title='Time Clock code in PEopleSoft'/><author><name>Sri Harsha</name><uri>http://www.blogger.com/profile/07055600374301477821</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://2.bp.blogspot.com/_cv2CfEeLpVU/Sl7x0ilfPHI/AAAAAAAAAgE/e3fgUdRlTv8/S220/tin.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_cv2CfEeLpVU/SmQBXpf1hLI/AAAAAAAAAgo/zqEfGGawuYo/s72-c/Time+clock+in+PeopleSofrt.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2388698495725806936.post-3453463593040912332</id><published>2009-07-16T01:33:00.000-07:00</published><updated>2009-07-16T01:34:07.765-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Process Definition'/><title type='text'>Process Definition</title><content type='html'>When a process definition has been created, there are three main tables where it makes an entry and store definition of the . Those are:&lt;br /&gt;&lt;br /&gt;PS_PRCSDEFN -- The main page where you start creating "Process Definition".&lt;br /&gt;PS_PRCSDEFNPNL -- "Process Definition Options" page where you define components, process group, recurrence etc...&lt;br /&gt;PS_PRCSDEFNGRP -- "Process Definition Options" page where you define components, process group, recurrence etc...&lt;br /&gt;&lt;br /&gt;Apart from that, there are some more tables which get affects depends on options you have choosen while creating a process definition. Below are the same with description...&lt;br /&gt;&lt;br /&gt;PS_PRCSDEFNCNTDIST -- If you have specified "Output Destination Options" for some process, enteries goes to this table.&lt;br /&gt;PS_PRCSDEFNXFER -- If you have specified "Page Transfer Information" for some process, enteries goes to this table.&lt;br /&gt;PS_PRCSDEFNNOTIFY -- If you have specified " Notifications" for some process, enteries goes to this table.&lt;br /&gt;PS_PRCSDEFNMETA -- If you have specified some value in "OS390 Option", enteries goes to this table.&lt;br /&gt;PS_PRCSDEFNMESSAGE -- If you have specified some value for message from page "Schedule Message Information", enteries goes to this table.&lt;br /&gt;&lt;br /&gt;So there are two query sets here to delete any process definition...&lt;br /&gt;&lt;br /&gt;First case in which you just have created a wrong process definition:&lt;br /&gt;&lt;br /&gt;DELETE FROM PS_PRCSDEFN where PRCSNAME = 'process name'&lt;br /&gt;DELETE FROM PS_PRCSDEFNPNL where PRCSNAME = 'process name'&lt;br /&gt;DELETE FROM PS_PRCSDEFNGRP where PRCSNAME = 'process name'&lt;br /&gt;&lt;br /&gt;Second case in which you have created a wrong process definition with the options like Output destination, Page transfer etc...:&lt;br /&gt;&lt;br /&gt;DELETE FROM PS_PRCSDEFN where PRCSNAME = 'process name'&lt;br /&gt;DELETE FROM PS_PRCSDEFNPNL where PRCSNAME = 'process name'&lt;br /&gt;DELETE FROM PS_PRCSDEFNGRP where PRCSNAME = 'process name'&lt;br /&gt;DELETE FROM PS_PRCSDEFNCNTDIST where PRCSNAME = 'process name'&lt;br /&gt;DELETE FROM PS_PRCSDEFNXFER where PRCSNAME = 'process name'&lt;br /&gt;DELETE FROM PS_PRCSDEFNNOTIFY where PRCSNAME = 'process name'&lt;br /&gt;DELETE FROM PS_PRCSDEFNMETA where PRCSNAME = 'process name'&lt;br /&gt;DELETE FROM PS_PRCSDEFNMESSAGE where PRCSNAME = 'process name'&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2388698495725806936-3453463593040912332?l=harshachowdaryworld.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://harshachowdaryworld.blogspot.com/feeds/3453463593040912332/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2388698495725806936&amp;postID=3453463593040912332' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2388698495725806936/posts/default/3453463593040912332'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2388698495725806936/posts/default/3453463593040912332'/><link rel='alternate' type='text/html' href='http://harshachowdaryworld.blogspot.com/2009/07/process-definition.html' title='Process Definition'/><author><name>Sri Harsha</name><uri>http://www.blogger.com/profile/07055600374301477821</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://2.bp.blogspot.com/_cv2CfEeLpVU/Sl7x0ilfPHI/AAAAAAAAAgE/e3fgUdRlTv8/S220/tin.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2388698495725806936.post-2637839841135358156</id><published>2009-07-16T01:31:00.000-07:00</published><updated>2009-07-16T01:32:22.618-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SQR output and Fonts'/><title type='text'>SQR output and Fonts</title><content type='html'>Below is the extract from the same PS delivered file. You may try with any font which is not listed below and in case if that font is not supported, PS converts it to the default font, which is Courier.&lt;br /&gt;&lt;br /&gt;List of defined fonts in PeopleSoft:&lt;br /&gt;&lt;br /&gt;Number --------------- Name&lt;br /&gt;&lt;br /&gt;---------------------------------&lt;br /&gt;&lt;br /&gt;3 ----------------------- Courier&lt;br /&gt;300 -------------------- Courier-Bold&lt;br /&gt;4 ----------------------- Helvetica&lt;br /&gt;400 -------------------- Helvetica-Bold&lt;br /&gt;5 ----------------------- Times-Roman&lt;br /&gt;500 -------------------- Times-Bold&lt;br /&gt;6 ----------------------- AvantGarde-Book&lt;br /&gt;8 ----------------------- Palatino-Roman&lt;br /&gt;800 -------------------- Palatino-Bold&lt;br /&gt;11 ---------------------- Symbol&lt;br /&gt;12 ---------------------- ZapfDingbats&lt;br /&gt;17 ---------------------- ZapfChancery-MediumItalic&lt;br /&gt;18 ---------------------- Bookman-Light&lt;br /&gt;23 ---------------------- NewCenturySchlbk-Roman&lt;br /&gt;2300 ------------------- NewCenturySchlbk-Bold&lt;br /&gt;30 ---------------------- Courier-Oblique&lt;br /&gt;3000 ------------------- Courier-BoldOblique&lt;br /&gt;31 ---------------------- Helvetica-Oblique&lt;br /&gt;3100 ------------------- Helvetica-BoldOblique&lt;br /&gt;32 ---------------------- Times-Italic&lt;br /&gt;3200 ------------------- Times-BoldItalic&lt;br /&gt;33 ---------------------- AvantGarde-Demi&lt;br /&gt;34 ---------------------- AvantGarde-BookOblique&lt;br /&gt;35 ---------------------- AvantGarde-DemiOblique&lt;br /&gt;36 ---------------------- Palatino-Italic&lt;br /&gt;3600 ------------------- Palatino-BoldItalic&lt;br /&gt;37 ---------------------- NewCenturySchlbk-Italic&lt;br /&gt;3700 ------------------- NewCenturySchlbk-BoldItalic&lt;br /&gt;38 ---------------------- Helvetica-Narrow&lt;br /&gt;3800 ------------------- Helvetica-Narrow-Bold&lt;br /&gt;39 ---------------------- Helvetica-Narrow-Oblique&lt;br /&gt;3900 ------------------- Helvetica-Narrow-BoldOblique&lt;br /&gt;40 ---------------------- Bookman-Demi&lt;br /&gt;41 ---------------------- Bookman-LightItalic&lt;br /&gt;42 ---------------------- Bookman-DemiItalic&lt;br /&gt;&lt;br /&gt;You can get this list of delivered SQR fonts in postscri.str file which you can access from the machine where scheduler is installed and configured.&lt;br /&gt;&lt;br /&gt;Hope this helps... suggestions are always welcome in case I missed out something...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2388698495725806936-2637839841135358156?l=harshachowdaryworld.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://harshachowdaryworld.blogspot.com/feeds/2637839841135358156/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2388698495725806936&amp;postID=2637839841135358156' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2388698495725806936/posts/default/2637839841135358156'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2388698495725806936/posts/default/2637839841135358156'/><link rel='alternate' type='text/html' href='http://harshachowdaryworld.blogspot.com/2009/07/sqr-output-and-fonts.html' title='SQR output and Fonts'/><author><name>Sri Harsha</name><uri>http://www.blogger.com/profile/07055600374301477821</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://2.bp.blogspot.com/_cv2CfEeLpVU/Sl7x0ilfPHI/AAAAAAAAAgE/e3fgUdRlTv8/S220/tin.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2388698495725806936.post-3273032533024983048</id><published>2009-07-14T23:34:00.000-07:00</published><updated>2009-07-14T23:49:35.196-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='The Structure of PS_HOME'/><title type='text'>The Structure of PS_HOME</title><content type='html'>The PS_HOME directory on a typical PeopleSoft file server are below:&lt;br /&gt;&lt;br /&gt;    * appserv - application server/process scheduler files for each domain&lt;br /&gt;    * bin - client, server and sqr binaries&lt;br /&gt;    * class - common Java classes&lt;br /&gt;    * class_ca - more Java classes ?&lt;br /&gt;    * crw - Crystal reports&lt;br /&gt;    * data - data used used to populate PeopleTools and application demo databases&lt;br /&gt;    * dict - language dictionaries ?&lt;br /&gt;    * doc - not sure - empty?&lt;br /&gt;    * etc - not sure ?&lt;br /&gt;    * excel - nVision, Excel to CI files&lt;br /&gt;    * fonts - truetype fonts&lt;br /&gt;    * jre - Java runtime environment&lt;br /&gt;    * log - installation log files&lt;br /&gt;    * nvision - nvision reporting&lt;br /&gt;    * projects - delivered application designer projects&lt;br /&gt;    * PSEMAgent - PeopleSoft environment management agent&lt;br /&gt;    * PSEMViewer - PeopleSoft environment management viewer&lt;br /&gt;    * psreports - report repository&lt;br /&gt;    * scripts - installation sql and datamover scripts&lt;br /&gt;    * sdk - software development kit and API information (e.g. Integration Broker and component interfaces)&lt;br /&gt;    * SecurityAddIns - Oracle single signon plugin?&lt;br /&gt;    * secvault - encryption keys (e.g for pscipher)&lt;br /&gt;    * sendmaster - SendMaster utility for testing PeopleSoft Integration Broker&lt;br /&gt;    * setup - Various installers (e.g. PIA, change assistant, database configuration wizard)&lt;br /&gt;    * sqr - SQRs and SQCs&lt;br /&gt;    * sqrfonts - SQR font loader&lt;br /&gt;    * src - COBOL and other miscellaneous source files&lt;br /&gt;    * template - nothing?&lt;br /&gt;    * tuxedo - tuxedo files&lt;br /&gt;    * utility - various utlities&lt;br /&gt;    * verity - verity search engine&lt;br /&gt;    * web - where PeopleSoft Java Object adapter .jar file is located. Not sure what else this is for.&lt;br /&gt;    * webserv - possibly where the web server files have been installed or most likely empty&lt;br /&gt;    * winword - Microsoft Word templates and macros&lt;br /&gt;&lt;br /&gt;Files&lt;br /&gt;&lt;br /&gt;    * peopletools.properties - Basic PeopleTools install properties&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2388698495725806936-3273032533024983048?l=harshachowdaryworld.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://harshachowdaryworld.blogspot.com/feeds/3273032533024983048/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2388698495725806936&amp;postID=3273032533024983048' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2388698495725806936/posts/default/3273032533024983048'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2388698495725806936/posts/default/3273032533024983048'/><link rel='alternate' type='text/html' href='http://harshachowdaryworld.blogspot.com/2009/07/structure-of-pshome.html' title='The Structure of PS_HOME'/><author><name>Sri Harsha</name><uri>http://www.blogger.com/profile/07055600374301477821</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://2.bp.blogspot.com/_cv2CfEeLpVU/Sl7x0ilfPHI/AAAAAAAAAgE/e3fgUdRlTv8/S220/tin.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2388698495725806936.post-4803443194286447630</id><published>2009-07-01T23:38:00.001-07:00</published><updated>2009-07-01T23:39:52.109-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Application Engine'/><title type='text'>Application Engine</title><content type='html'>Application Engine &lt;br /&gt;Application Engine is a PeopleTool designed to develop background SQL processing programs. AE offers an alternative to writing Cobol or SQR programs for background SQL processing. AE does not generate, parse or understand SQL. It merely executes SQL that we provide.&lt;br /&gt;&lt;br /&gt;Using the Application Engine, we create application that performs background SQL processing against the Data. AE is used for batch processing where we have large amount of data that needs to be processed without user intervention.&lt;br /&gt;&lt;br /&gt;We can use AE for straight, row-by-row processing, but the most AE programs are written to perform set-based processing.&lt;br /&gt;&lt;br /&gt;Application Engines execution component is written in C++ and is part of and maintained by – PeopleTools. This executable program is called PSAE.exe.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Application Engine Advantages:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;1. Graphical Developer Interface&lt;br /&gt;2. Encapsulation&lt;br /&gt;3. Data Dictionary Integration&lt;br /&gt;4. Enhanced SQL/Meta-SQL Support&lt;br /&gt;5. Effective-Dating&lt;br /&gt;6. Platform Flexibility&lt;br /&gt;7. Reuse Business Logic&lt;br /&gt;8. Upgrade Support&lt;br /&gt;9. Built-in Restart Logic&lt;br /&gt;&lt;br /&gt;1. Graphical Developer Interface: with PeopleSoft 8, AE is fully integrated with People Tools. This means that we can use the Application Designer, an intuitive graphical interface to create Application Engine Programs.&lt;br /&gt;&lt;br /&gt;2. Encapsulation: An AE program resides completely within the DB. With Application Engine, we do not have to compiler our programs, there are no statements to store, and there is no need to directly interact with the operating environment we use.&lt;br /&gt;&lt;br /&gt;3. Data Dictionary Integration: one of the cornerstones of PeopleSoft functionality is the Application Designer. Because of the way it works, most field attributes, such as type, length and scale, only need to be specified once, and that change will be reflected globally. If the same field appears on more than one record, we know that the same attributes reside in each record definition.&lt;br /&gt;Because AE works in harmony within the PeopleSoft system and references the Data Dictionary for object definitions, changes to meta-data in the database have no impact on AE programs.&lt;br /&gt;&lt;br /&gt;4. Enhanced SQL/Meta-SQL support: we can write SQL within AE, or we can copy SQL statements into AE from any SQL utility with few, if any changes.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;RDBMS platforms have many differing syntax rules-especially in regard to Date, time and other numeric calculations. For the most part, we can work around this problem using PeopleSoft meta-SQL, which AE supports. This language is designed to replace RDBMS-specific SQL syntax with a standard syntax.&lt;br /&gt;&lt;br /&gt;For example, if we reference a date field called AE_DATE in a SELECT clause, we specify it as %DATEOUT(AE_DATE). This meta-string will be resolved to the appropriate value as required by the current RDBMS platform. Meta-SQL also allows to dynamically generating portions of SQL statements. This new meta-SQL is not supported in Cobol or SQR.&lt;br /&gt;&lt;br /&gt;Fox example, if we wanted to join 2 tables on their common keys, we could use the following code:&lt;br /&gt;&lt;br /&gt;%Join(COMMON_KEYS, PSAESECTDEFN ABC, PSAESTEPDEFN XYZ)&lt;br /&gt;&lt;br /&gt;at run time, the function would be expanded into the following&lt;br /&gt;&lt;br /&gt;ABC.AE_APPLID = XYZ.AE_APPLID&lt;br /&gt;AND ABC.AE_SECTION = XYZ.AE_SECTION&lt;br /&gt;AND ABC.DBTYPE = XYZ.DBTYPE&lt;br /&gt;AND ABC.EFFDT = XYZ.EFFDT&lt;br /&gt;&lt;br /&gt;5. Effective-Dating: Application Sections are effective-dated, meaning we can activate/deactivate a Section as of a particular date. This enables us to archive Sections as we modify them, instead of destroying them. In the future if we decide to revert to a previous incarnation of a section, we can simply reactive it.&lt;br /&gt;&lt;br /&gt;6. Platform Flexibility: in AE we have the ability to call different versions of a Section for different platforms, as needed.&lt;br /&gt;&lt;br /&gt;Default : This is the common denominator or global version.&lt;br /&gt;&lt;br /&gt;Supported RDBMS platform: DB2, Oracle, Informix, DB2/Unix, Sybase, MS SQL Server.&lt;br /&gt;&lt;br /&gt;Most Sections will only have the default version and even in cases where we refine a particular Section for a specific RDBMS, a default version of that Section will also exist. When AE executes a Section, it will use the version that’s specific to the current DB platform if a specific version exists. If there is no REBMS-specific version, AE uses the (default) version.&lt;br /&gt;&lt;br /&gt;Within platform-specific Sections, we also have the ability to call base portions of SQL statements by using the %SQL object. This means we can write our generic SQL portions just once, and then can reference them from different platform versions.&lt;br /&gt;&lt;br /&gt;7. Reuse Business Logic: AE programs can now invoke PeopleCode. This means that we can call common PeopleCode functions from AE. Conversely, PeopleCode can now invoke an AE program Synchronously. AE Libraries are used to store common routines, stored as callable sections. Multiple programs can then call these sections.&lt;br /&gt;&lt;br /&gt;8. Upgrade Support: AE program definitions are defined in and stored as Application Designer object, then join the growing ranks of PeopleTools components that we can easily upgrade using the Application Designer. We can upgrade AE definitions by project, program, or section.&lt;br /&gt;&lt;br /&gt;9. Built-in Restart Logic: within each AE program, we must define how frequently our program will issue a COMMIT. After doing so, each COMMIT becomes a checkpoint that AE uses to locate where within a program to restart after an abend.&lt;br /&gt;&lt;br /&gt;The restarted AE program locates the last checkpoint, or the last successfully executed and committed step, and continues with the processing from that point. This type of built-in logic does not exist with COBOL or SQR.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Key Points&lt;br /&gt;&lt;br /&gt;1. The AE executable is PSAE.exe and is written in C++&lt;br /&gt;2. AE is generated into the Application Designer to give you a graphical developer tool&lt;br /&gt;3. AE programs are stored in PeopleSoft DB.&lt;br /&gt;4. Applications can dynamically adjust for changes in record and field definitions through integration into the PeopleSoft Data Dictionary and meta-SQL, a situation requiring changes and recompilation of COBOL.&lt;br /&gt;5. Using meta-SQL our programs can be written to be DB platform independent.&lt;br /&gt;6. Portions of our program are effective-dated so we can activate/deactivate a section as of a particular date.&lt;br /&gt;7. Our programs can take advantage of existing business logic in the form of shared PeopleCode&lt;br /&gt;8. You have Upgrade integration for migrating programs to other instances of our DB as well as future release upgrade support.&lt;br /&gt;9. AE has built in restart capability.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Application Engine programs are created and modified in the Application Designer. The Application Designer offers AE developers the following benefits&lt;br /&gt;&lt;br /&gt;· Ability to open multiple AE programs concurrently.&lt;br /&gt;· Ability to work on entire AE program at once. Users of previous versions will know that this is a change from only being allowed to work on a Section at a time.&lt;br /&gt;· Easy access to PeopleCode and SQL editiors.&lt;br /&gt;· 2 Views of our program&lt;br /&gt;&lt;br /&gt;1. The Definition view is where we create and modify our programs.&lt;br /&gt;2. The Program Flow view shows a graphical representation of our program execution.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Application Engine Program Structure&lt;br /&gt;&lt;br /&gt;An AE program is made up of several key components.&lt;br /&gt;&lt;br /&gt;1. Program&lt;br /&gt;An Application Engine program identifies the set of processes to execute a given task. A program must contain at least one section. The execution of the program always starts with the Section defined as ‘MAIN’&lt;br /&gt;&lt;br /&gt;2. Sections&lt;br /&gt;An AE Section is comprised of 1 or more Steps and is equivalent to a cobol paragraph or an SQR procedure. All AE programs must contain at least 1 Section entitled ‘MAIN’&lt;br /&gt;&lt;br /&gt;Execution precedence: A section is unique based on the program, section names, RDBMS platforms, effective date and market. When we execute and AE program, it executes Sections based on the following order&lt;br /&gt;&lt;br /&gt;· If a Section for the current Market exists, execute it.&lt;br /&gt;· If a Section for the current Platform or RDBMS exists, execute it.&lt;br /&gt;· If a Section for the current Effective Date exists, execute it.&lt;br /&gt;&lt;br /&gt;If a ‘Unique’ section does not exist, AE just executes the ‘base’ Section. The default Market value is GBL for Global, which is similar to the Platform value of default.&lt;br /&gt;&lt;br /&gt;3. Steps&lt;br /&gt;A Step is the smallest unit of work that can be committed within a program. Although, we can use a Step to execute a PeopleCode command or log a message, typically, we will use a Step to execute a SQL statement or to call another Section. The SQL or PeopleCode that a step executes are the Actions with the step.&lt;br /&gt;&lt;br /&gt;Each section contains 1 or more steps. The steps are executed in the order that they are displayed in the Application Designer. The steps contain the logical groupings or actions to be performed.&lt;br /&gt;&lt;br /&gt;Control&lt;br /&gt;Description&lt;br /&gt;Step Name&lt;br /&gt;Consecutively numbered based on the last step name&lt;br /&gt;Step Description&lt;br /&gt;Enter a descriptive name for the step&lt;br /&gt;Commit After&lt;br /&gt;Determines when commit will be executed:&lt;br /&gt;· Default – uses value supplied for the section&lt;br /&gt;· Later – don not commit now&lt;br /&gt;· After step - commit when step completes&lt;br /&gt;&lt;br /&gt;Frequency&lt;br /&gt;Only available in loops&lt;br /&gt;On Error&lt;br /&gt;Determines the action to take when an error occurs&lt;br /&gt;· Abort – program will write message to message log and terminate&lt;br /&gt;· Ignore – program will write message to log and continue&lt;br /&gt;· Suppress – no message will be written, but program will continue.&lt;br /&gt;Comment&lt;br /&gt;Add any additional comments to document your program&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;4. Actions&lt;br /&gt;There are multiple types of Actions that we can specify to include within a step. A single step can have multiple actions.&lt;br /&gt;&lt;br /&gt;Actions are the reason for our program. They have the particular executable action we wish to take. The primary type of action for the AE program is a SQL statement we whish to have executed against the DB. But we also have the ability to log messages, execute PeopleCode, and call other Sections. Moreover, we can execute other sections conditionally and iteratively. The following action types are available&lt;br /&gt;&lt;br /&gt;Do Select&lt;br /&gt;Do While&lt;br /&gt;Do Until&lt;br /&gt;Do When&lt;br /&gt;PeopleCode&lt;br /&gt;SQL&lt;br /&gt;Call Section&lt;br /&gt;Log Message&lt;br /&gt;&lt;br /&gt;We can note that there are 7 actions out of the 8, because the SQL and Call Section Actions are mutually exclusive.&lt;br /&gt;&lt;br /&gt;Note: we must save our program before we can change the name of a Section. The only Section we cannot rename is MAIN.&lt;br /&gt;&lt;br /&gt;One of the advantages of AE is that we can code a program to execute differently based on the market code. Based on the market selected, the program will execute the appropriate Sections.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Key Points&lt;br /&gt;&lt;br /&gt;1. Applications are structured in a hierarchy of Sections, Steps and Actions.&lt;br /&gt;2. we must determine the data sources and structures for our AE program.&lt;br /&gt;3. We must generate the SQL required for our program. We can use the PeopleSoft Query tool or relational DB SQL tool.&lt;br /&gt;4. Application Designer is used to build individual AE programs.&lt;br /&gt;5. FASTTEST can be used from the AE Request Page to test our AE programs.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;State Records:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;When we create AE programs, we will need to pass variables; a State Record is the method by which we allocate variables in our AE program, and it also is the method by which we pass the values to subsequent program steps. An AE program may have 0, 1 or many State Records, but only one State Record will be the default.&lt;br /&gt;&lt;br /&gt;The State Record can be a Derived Work Record or an SQL Table. The only difference is that Derived State records cannot have their values saved at commit time, there fore the values would be lost during the restart.&lt;br /&gt;&lt;br /&gt;The State Record is used as a worktable for:&lt;br /&gt;&lt;br /&gt;· Initial values&lt;br /&gt;· Values to be passed to program Steps from prior Sections, Steps and Actions.&lt;br /&gt;· Results of SQL Selects&lt;br /&gt;· Values for SQL Updates, Inserts, Deletes&lt;br /&gt;· Computed values or counters&lt;br /&gt;· Program range or scope values (Business Unit, Pay Groups, Departments)&lt;br /&gt;· Program working values&lt;br /&gt;· Programmable switches or flags&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;ü A State Record can be a Database Table of Derived Work Record&lt;br /&gt;ü Name must end with _AET identifier&lt;br /&gt;ü PROCESS_INSTANCE must be a key field&lt;br /&gt;ü Date fields cannot be defined as required fields&lt;br /&gt;ü %SELECT (meta-SQL) stores data into the State Record.&lt;br /&gt;ü %BIND (meta-SQL) gets data out of the State Record.&lt;br /&gt;ü Can have 1,nore or multiple State Records&lt;br /&gt;ü In pre-release, it was called as ‘Cache’ Record.&lt;br /&gt;ü No PeopleCode files on an AE State Record.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Values are inserted into the State Record, either by using the %Select statement or the Run Control.&lt;br /&gt;&lt;br /&gt;Once a value is inserted into the State Record, it can be access ed using the %Bind(fieldname) to execute the SQL.&lt;br /&gt;&lt;br /&gt;When the AE program completes successfully, the row of data in the State Record is deleted.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;SQL Action Properties:&lt;br /&gt;&lt;br /&gt;1. ReUse Statement: ReUse is an option we can enable to optimize the SQL&lt;br /&gt;components of our batch program. ReUse converts any %BIND references to State Record Fields into real bind variables(:1, :2 and so on)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;ReUse has the following options&lt;br /&gt;&lt;br /&gt;a. Bulk Insert: This option turns on ReUse, and in addition, it holds all the data in a buffer and only performs an insert after a large volume of rows has gathered in the buffer.&lt;br /&gt;&lt;br /&gt;b. No: This option disable the ReUse, with ReUse off, the AE runtime Process recompiles the SQL statement every time the loop executes. By default ReUse will be disabled.&lt;br /&gt;&lt;br /&gt;c. Yes: Select this option to enable basic ReUse functionality.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;2. No Rows: In the event that the SQL(Insert, Update, Delete) associated with the SQL Action does not return any rows, we need to specify what our AE program should do. The following list contains the options that we have when no rows are returned:&lt;br /&gt;&lt;br /&gt;a. Abort – The Program terminates.&lt;br /&gt;b. Section Break – AE exits the current section immediately, and control returns to the calling Step.&lt;br /&gt;c. Continue – The program continues processing.&lt;br /&gt;d. Skip Step – AE exits the current Step immediately and moves on to the next step. When using Skip Step the following in mind:&lt;br /&gt;I. AE ignores the commit for the current step at runtime.&lt;br /&gt;II. If the current Step contains only one Action, only use Skip Step to bypass the commit.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Note: In the Message Catalog, variables are entered using %1 and consecutively increasing the number for each variable.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Meta-SQL Alternative&lt;br /&gt;&lt;br /&gt;When we use %SQL in a statement, AE replaces it with the specified SQL object. This allows commonly used SQL text to be shared among AE and PeopleCode programs alike. In AE the variables in the %SQL can be&lt;br /&gt;&lt;br /&gt;· %BIND(fieldname)&lt;br /&gt;· Literal&lt;br /&gt;&lt;br /&gt;In PeopleCode SQL, we can use: Record.Field or :1&lt;br /&gt;&lt;br /&gt;Update PS_CUSTOMER_PRD&lt;br /&gt;Set CUSTOMER_ID = %BIND(TO_CUSTOMER_ID)&lt;br /&gt;Where CUSTOMER_ID = %BIND(FROM_CUSTOMER_ID)&lt;br /&gt;&lt;br /&gt;To rewrite this using %SQL it would be the following:&lt;br /&gt;&lt;br /&gt;%sql(UPD_CUST_ID, PS_CUSTOMER_PRD, %BIND(TO_CUSTOMER_ID), %BIND(FROM_CUSTOMER_ID))&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Key Points&lt;br /&gt;&lt;br /&gt;1. A State Record is the method by which we allocate variables for AE program.&lt;br /&gt;2. The developer creates the State Record&lt;br /&gt;3. A State Record must be defined with the following criteria:&lt;br /&gt;· The name of the record must end with AET&lt;br /&gt;· The record contains only 1 key field that must be PROCESS_INSTANCE&lt;br /&gt;· All other fields on the State Record are designed to meet the need of the program.&lt;br /&gt;4. %SELECT is used to store data in the State Record.&lt;br /&gt;5. %BIND is used to retrieve data from the State Record.&lt;br /&gt;6. We can have 0,1 or many state records associated with an AE program.&lt;br /&gt;7. The State Record can be either physical table or Derived Work Record.&lt;br /&gt;8. State Records are associated with an AE program in the Object properties.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Testing &amp; Debugging&lt;br /&gt;&lt;br /&gt;Initially, the details of the failures are presented in the Process Monitor. To capture the details of the execution of our application, we have a variety of trace facilities including the Application Engine Step Trace and Application Engine SQL Trace.&lt;br /&gt;&lt;br /&gt;To monitor the application and control its execution while it is running, we have Application Engine Debugger. If we have PeopleCode in our AE program, we can use the PeopleCode Debugger with or without the AE Debugger. &lt;br /&gt;&lt;br /&gt;1. The Process Monitor:&lt;br /&gt;The Process Monitor has a message log that will tell you if the program executed successfully or not. With a failure you will need to invoke other tools.&lt;br /&gt;&lt;br /&gt;2. The Application Engine Trace File&lt;br /&gt;The Application Engine at your request generates trace. You can specify Steps to see a sequence of messages tracking the Step execution of your application execution. We can also trace the more detailed execution of our programs SQL within the Steps. We can also have performance information logged. We can find and analyze the trace in&lt;br /&gt;&lt;br /&gt;%temp%\ps\\AE__.AET&lt;br /&gt;&lt;br /&gt;3. The Application Engine Interactive Debugger&lt;br /&gt;The Application Engine Debugger is an online, interactive, execution-monitoring tool. We can run our application step by step and look at the results of the execution in the State Record. We can dynamically modify the State Record. We can set Break Points and Watch Fields to see if our application executes portions of the application. We can control the execution of the program and output is dynamically presented to you in a windows command window.&lt;br /&gt;&lt;br /&gt;4. The PeopleCode Debugger&lt;br /&gt;We can use the PeopleCode Debugger if errors are occurring the our Application Engine PeopleCode.&lt;br /&gt;&lt;br /&gt;Application Engine Trace:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;For processes running on a Windows workstation, we can set our trace options in the Configuration Manager. This procedure is only valid when we are running the Application Engine program from the development environment or through the command line on the client.&lt;br /&gt;&lt;br /&gt;Application Engine Trace files use the naming convention:&lt;br /&gt;_.AET&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Application Engine Debugger:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;The Application Engine’s internal debugger can be used while running on the client or when running directly on the Server- outside of the Process Scheduler. When we run our application, we will enter an interactive state in which we can set break points, issue COMMITs, look at the State record, etc.&lt;br /&gt;&lt;br /&gt;Turning On the AE Debugger:&lt;br /&gt;&lt;br /&gt;The AE debugger is turned on in the Configuration Manager. Open the Configuration Manager =&gt; First click on the Trace Tab and turn off the Statement Timings =&gt; Click on the Profile Tab =&gt; click on the Edit Push button =&gt; on the Process Scheduler page, we can find the Application Engine Options.&lt;br /&gt;&lt;br /&gt;Debug –Turning this option ON will cause AE to run in debug mode every time we invoke AE in 2-tier.&lt;br /&gt;&lt;br /&gt;Disable Restart -this Option will disable restart for all AE programs run in 2-Tier.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Process Monitor:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Programs run through the Process Scheduler, the Process Monitor keeps track of the status of the programs during and after execution. It is one of the first thing that should be inspected to determine if our program terminated correctly and if not, to see if any clues as to the problem recorded.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Key Points&lt;br /&gt;&lt;br /&gt;1. To determine what the execution flow of our AE was, we have the trace facility.&lt;br /&gt;2. to drill down during execution of our AE application we have a debug facility to run in step mode, view the State Record as it changes and set breakpoints to permit us to determine exactly what our application is doing.&lt;br /&gt;3. The Restart ability allows us to both debug an application during development and restart a failing production run.&lt;br /&gt;4. Knowing the execution flow of the AE can help you refine the cause of failures.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Do Select Action&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;The Do Select Action is a SELECT statement that executes subsequent Actions in the Step once for every row of data that the Do Select produces. In other words, the subsequent Actions within the Step are executed in a loop based on whether the SELECT statement in the Do Select Action has returned a row. This is equivalent to a FOR loop.&lt;br /&gt;&lt;br /&gt;The Do Select will store the row in the State Record as specified in the Do Select SQL.&lt;br /&gt;&lt;br /&gt;%select(Course, Effdt, Eff_status, Tools_Rel)&lt;br /&gt;Select Course, Effdt, Eff_status, Tools_Rel&lt;br /&gt;From PS_PSU_COURSE_TBL&lt;br /&gt;Where Eff_Status=’I’&lt;br /&gt;&lt;br /&gt;Each row of data in the database meeting the criteria is loaded into the state record and processed within a loop. When there are no more rows meeting the criteria, the program will move to the next step.&lt;br /&gt;&lt;br /&gt;When the Do Select executes, it sets a cursor in the DB for all of the rows matching the criteria in the select statement. The first row is loaded into the State Record then the program proceeds to next action in the step.&lt;br /&gt;&lt;br /&gt;Do Select Types:&lt;br /&gt;&lt;br /&gt;The type of Do Select determines the specific looping rules. There are 3 Select Types:&lt;br /&gt;&lt;br /&gt;a. Select/Fetch&lt;br /&gt;b. Reselect&lt;br /&gt;c. Restartable&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;a. Select/Fetch&lt;br /&gt;&lt;br /&gt;The Select/Fetch type&lt;br /&gt;&lt;br /&gt;· Opens the cursor to the database.&lt;br /&gt;· Selects the first row that meets the SQL condition in the Do Select.&lt;br /&gt;· Executes the actions in the step.&lt;br /&gt;&lt;br /&gt;Once the subsequent actions, are completed the program returns to the open cursor form the Do Select, retrieves the next row and continues again with the rest of the actions.&lt;br /&gt;&lt;br /&gt;Commits:&lt;br /&gt;&lt;br /&gt;The Select and Fetch type will ignore all COMMITS placed anywhere in your program that are executed within the Do Select loop, unless we have disabled restart. Disabling restart is a simple way of telling the application that we are freeing it up of the responsibilities of knowing where to restart. That responsibility is now ours via a SWITCH field or an ORDER BY clause&lt;br /&gt;&lt;br /&gt;Write ‘COMMIT IGNORED’ in the trace file for any commits within a Do Select loop.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;b. Reselect&lt;br /&gt;&lt;br /&gt;The Reselect type opens the cursor and closes the cursor on each iteration of the loop.&lt;br /&gt;&lt;br /&gt;· Opens the cursor to the database&lt;br /&gt;· Selects the first row that meets the SQL condition in the Do Select&lt;br /&gt;· Closes the cursor&lt;br /&gt;· Executes the following Actions in the step&lt;br /&gt;· Once the subsequent Actions, are completed the program returns to the SQL in the Do Select and opens a cursor again.&lt;br /&gt;&lt;br /&gt;Commits:&lt;br /&gt;&lt;br /&gt;Commits are not ignored and will be committed in a Reselect Loop. Because the rows being selected are being changed by your code, provided you COMMIT those changes, the program will in fact have a way to know where in the loop it left off, making a restart possible.&lt;br /&gt;&lt;br /&gt;We need to: Identify the rows to be processed, orders the data values, place commits in the appropriate sections or steps.&lt;br /&gt;&lt;br /&gt;There is a column on the PS_AERUNCONTROL table called AE_STEP_DONE. This column will be populated with a value of ‘Y’ once the entire step, all loops complete. If the program abends in the middle of the loop, the column AE_STEP_DONE will be set to ‘N’.&lt;br /&gt;&lt;br /&gt;c. Restartable&lt;br /&gt;&lt;br /&gt;The Resatrtable type acts precisely like the Select and Fetch. It opens the cursor and leaves it open. This causes each iteration of our loop to select the next row that meets the condition without the need to change the status of that row as we do with the Reselect option.&lt;br /&gt;&lt;br /&gt;Commits:&lt;br /&gt;&lt;br /&gt;The major difference with Restartable is that it will COMMIT inside the loop thus allowing a checkpoint to the PS_AERUNCONTROL table.&lt;br /&gt;If the program abends, the information in the AE_RUNCONTROL record and the State Record is used to restart the program from that point.&lt;br /&gt;&lt;br /&gt;Steps to Application Engine Development&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;1. Analyze and Design the Application.&lt;br /&gt;&lt;br /&gt;· Determine your data sources&lt;br /&gt;· Develop and process logic pseudo-code and program source&lt;br /&gt;· Does the program need to be restartable&lt;br /&gt;&lt;br /&gt;2. Develop and Build your Application&lt;br /&gt;&lt;br /&gt;2A. Create and test your SQL statements&lt;br /&gt;&lt;br /&gt;· Write and test your SQL Statements&lt;br /&gt;&lt;br /&gt;Ø SQL Tool / PS-Query&lt;br /&gt;&lt;br /&gt;· Performance-tune your SQL statements&lt;br /&gt;&lt;br /&gt;Ø An iterative process&lt;br /&gt;Ø Optimizers&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;2B. Build Related Definitions&lt;br /&gt;&lt;br /&gt;· State Records&lt;br /&gt;· Messages&lt;br /&gt;· Methods for use the user execute the program&lt;br /&gt;Ø Process Definitions (Process Scheduler Manager)&lt;br /&gt;Ø Push Buttons (Application Designer)&lt;br /&gt;Ø Batch Files (PC Text Editor)&lt;br /&gt;&lt;br /&gt;2C. Build the Application Engine Program&lt;br /&gt;&lt;br /&gt;Create the program in the Application Designer&lt;br /&gt;&lt;br /&gt;3. Test and validate the program&lt;br /&gt;&lt;br /&gt;· Design your tests&lt;br /&gt;· Initialize your data&lt;br /&gt;· Test and Debug&lt;br /&gt;· Validate success&lt;br /&gt;· Test for restart capability, if applicable.&lt;br /&gt;&lt;br /&gt;Key Points&lt;br /&gt;&lt;br /&gt;1. The Do Select Action is a SELECT statement that executes subsequent Actions once for every row of data that the Do Select produces.&lt;br /&gt;2. The type of Do Select determines the specific looping rules.&lt;br /&gt;3. Select/Fetch – opens the cursor and retrieves the first row that meets the SQL criteria performs the subsequent actions, the fetches the next row meeting the criteria. This process continues until there are no more rows meeting the criteria, at which time the cursor is closed and the program continues to the next step.&lt;br /&gt;4. Reselect – opens and closes the cursor on each iteration of the loop&lt;br /&gt;5. Restartable – acts the same as the Select/Fetch, except that it will COMMIT inside the loop thus allowing a checkpoint.&lt;br /&gt;6. We must code our program restartability.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Conditional Processing with Do Actions&lt;br /&gt;&lt;br /&gt;When a section is called, its steps are executed sequentially. An AE program begins by executing for the first step of the section MAIN and ends after the last step. Any programming language needs to have the capability to perform conditional logic to control the looping.&lt;br /&gt;&lt;br /&gt;The 4 Do Actions – Do Select, Do When, Do While, Do Until, act as SQL condition for the execution of the other 4 actions – PeopleCode, SQL, Call Section and Log Message.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Do When Action&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;The Do When Action is a SELECT statement that allows subsequent actions to be executed if any rows of data are returned. The Do When statement is first in the execution order within a step. The Do When statement will contain SQL that tests for a condition. As long as the condition is true and a row of data is returned, the subsequent actions within the step will be performed. If there is now row of data returned the entire Step would terminate. If there are no more steps to execute, the program will end.&lt;br /&gt;&lt;br /&gt;This Do When option is similar to a COBOL ‘IF’ statement. A Do When statement runs before any other actions in the step. If the Do When statement returns any rows, the next Action will be executed. If the Do When conditions are not met, the remaining Actions within that Step are not executed. A Do When Action is executed just once when a step is executed.&lt;br /&gt;&lt;br /&gt;***Executes the action once if the condition is TRUE.&lt;br /&gt;&lt;br /&gt;DO WHEN counter=1000&lt;br /&gt;Grant Award&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Do While Action&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;The Do While Action is a SELECT statement that runs before subsequent Actions of the Step. If the Do While returns any rows of data, the subsequent actions in the step will be executed. You use a Do While Action to control the execution of the following actions. The Do While Action runs each time before the next Action is repeated. If the Do While returns any rows of data, all the Actions in the Step will be repeated. If no rows are returned, AE will move on to the next Step or Section.&lt;br /&gt;&lt;br /&gt;The Do While is identical to the Cobol ‘While’ function. In other words, the subsequent Actions within the Step are executed in a loop as long as the SELECT statement returns at the least one row for the Do while Action.&lt;br /&gt;&lt;br /&gt;***Loops as long as the condition is true. In short, if the Do While does not return any rows, the Step is complete.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;DO WHILE counter&lt;1000&lt;br /&gt;Counte=counter+1&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Do Until Action&lt;br /&gt;&lt;br /&gt;A Do Until Action is a SELECT statement that runs after each Action, when a Step completes. If the SELECT returns any rows of data, the Step terminates.&lt;br /&gt;&lt;br /&gt;Use a Do Until if you want the ‘processing actions’ to execute at least once, and to execute over and over until a certain condition is true, as in until a SELECT returns some rows.&lt;br /&gt;&lt;br /&gt;We can also use a Do Until to stop a Do Select prematurely. For example of the SELECT for the Do Until does not return any rows, then the Actions in the Step are repeated (except if a Do When appears in the Step). Normally, a Do Select continues until no rows are returned. If any rows of data are returned, the Do Select stops and the actions in the Step are not repeated.&lt;br /&gt;&lt;br /&gt;***Loops as long as the condition is FALSE.&lt;br /&gt;&lt;br /&gt;DO UNTIL counter=1000&lt;br /&gt;Counter=counter+1&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Test Condition and the State Record:&lt;br /&gt;&lt;br /&gt;All SQL SELECT statements in an AE Action must be preceded by a %SELECT(), causing the value to be written to the State Record. We generally use the TEMP_FLD to write the value to, which acts as a container for the ‘X’ retrieved from the DB if our condition is true. Once the ‘X’ is written to the field, there is no need for it. A subsequent ‘X’ statement in our AE program will overwrite it, and generally the character is not used in our processing.&lt;br /&gt;&lt;br /&gt;%SELECT(TEMP_FLD)&lt;br /&gt;SELECT ‘X’&lt;br /&gt;FROM PS_INSTALLATION&lt;br /&gt;WHERE %BIND(COUNTER) &gt;10&lt;br /&gt;Meta-SQL to write ‘X’ to State Record&lt;br /&gt;If ‘X’ is returned this equals TRUE&lt;br /&gt;Fills the requirement for a FROM table&lt;br /&gt;Condition to be tested.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;When we add an Action it automatically takes its place within the hierarchy. This way, while we are developing our program we can visualize the sequence in which our logic will execute.&lt;br /&gt;&lt;br /&gt;The following shows an example of the Action Execution Hierarchy:&lt;br /&gt;&lt;br /&gt;Do When&lt;br /&gt;Do While&lt;br /&gt;Do Select&lt;br /&gt;PeopleCode&lt;br /&gt;SQL / Call Section&lt;br /&gt;Log Message&lt;br /&gt;Do Until&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Application Library&lt;br /&gt;&lt;br /&gt;Most Application Engine programs are defined to be executable. An executable program has a main entry point in its definition: the Section MAIN. This defines the entry point so whatever method you choose to invoke the program, such as command line or Process Scheduler, can initiate the program. However, in some cases, we may want a program to only contain a collection, or “library” of common routines (in the form of “callable” Sections) that we do not want to run as standalone program. When sections are defined as “Public”, other programs can call the Sections, or routines, that exist in the “library” at runtime. Because this type of program is not designed to run as a stand-alone program, it does not require the MAIN section, or initial entry point. Setting the Application Library option renames or removes any existing MAIN section.&lt;br /&gt;&lt;br /&gt;Application Libraries are the appropriate sport to store a collection of shared Application Engine program Sections. It is not intended to store a specific SQL Action within a Section. To share common SQL, use the SQL repository.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Key Points&lt;br /&gt;&lt;br /&gt;1. The Application Engine has the ability toe make logical decisions to control the execution of Sections, Steps or Actions.&lt;br /&gt;2. Do Flow Actions are:&lt;br /&gt;&lt;br /&gt;· Do When Action allows subsequent Actions to be executed if any rows of data are returned in a SQL Select before the execution of the step.&lt;br /&gt;· Do While Action allows subsequent Actions to be executed if any rows or data are returned in a SQL select&lt;br /&gt;· Do Select will execute subsequent Actions once for every row of data returned in a SQL Select&lt;br /&gt;· Do Until Action allows the Step to be return after the Step has run and before it loops again.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Do When =&gt; IF Condition logic&lt;br /&gt;Do While =&gt; While Loop Logic&lt;br /&gt;Do Select =&gt; FOR Loop Logic&lt;br /&gt;Do Until =&gt; Repeat Until Logic&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;PeopleCode and Application Engine&lt;br /&gt;&lt;br /&gt;In PeopleSoft 8, the ability to use PeopleCode in an Application Engine program was introduced. Keep in mind that AE is a development tool that allows to develop programs that execute SQL, in batch and online mode, against our data in a procedural and dynamic structure.&lt;br /&gt;&lt;br /&gt;PeopleCode can be used for:&lt;br /&gt;&lt;br /&gt;· Setting IF, THEN, ELSE logic constructs.&lt;br /&gt;· Performing data ‘preparation’ tasks&lt;br /&gt;· Building dynamic portions of SQL, while still relying on SQL to complete the bulk of the actual program processing.&lt;br /&gt;· Reusing online logic that’s already developed&lt;br /&gt;· Leveraging the new technologies – Business Interlinks, File Objects, Component Interfaces, Application Messaging.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;PeopleCode in Application Engine Program&lt;br /&gt;&lt;br /&gt;Inserting PeopleCode within AE programs provides an opportunity for us to reuse common function libraries and improve performance. It also can simplify development in some instances, as well. In many cases, a small PeopleCode program used instead of a Do When Action, for example, can replace a more complicated SQL statement.&lt;br /&gt;&lt;br /&gt;There are few restrictions in terms of how we take advantage of PeopleCode in our AE program, however, as with most software development tools, there is an ‘intended’ use for a given tool. AE PeopleCode is an excellent way to build dynamic SQL, perform simple IF/THEN/ELSE edits, set defaults, and perform other tasks that don’t require a trip to the DB.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;ü We do not need to concern yourself with formatting your code. When you save or validate the PeopleCode program, the system will automatically format the code for you. This holds true for anything except quoted literals, which are not formatted. Also PeopleCode is case-insensitive.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;PeopleCode Basics:&lt;br /&gt;&lt;br /&gt;There are 3 types of variables in PeopleCode, differentiated by the life span of the variable.&lt;br /&gt;&lt;br /&gt;Variable Type&lt;br /&gt;Life Span&lt;br /&gt;Notes&lt;br /&gt;Local PeopleCode Variables&lt;br /&gt;&lt;br /&gt;PeopleCode Program&lt;br /&gt;These variables are only available for the duration of the program in which they are declared.&lt;br /&gt;Global PeopleCode Variables&lt;br /&gt;AE Program&lt;br /&gt;These variables are available while the AE program is running. They are saved at commits and checkpoints, so they can be used for restarts.&lt;br /&gt;Component PeopleCode Variables&lt;br /&gt;AE Program&lt;br /&gt;Same as Global PeopleCode Variables for AE.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Variables are denoted with an ‘&amp;’ prefix&lt;br /&gt;Example: &amp;MyRow, &amp;Course&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Local Variables:&lt;br /&gt;&lt;br /&gt;Local variables do not need to be declared. They can take on the appropriate datatype when a value is assigned to the variable. However, Global and component variables must be declared.&lt;br /&gt;&lt;br /&gt;LOCAL ;&lt;br /&gt;&lt;br /&gt;Where LOCAL can be replace with GLOBAL or COMPONENT depending on the variable type. This declaration must appear before all other PeopleCode in our program.&lt;br /&gt;&lt;br /&gt;can be the following:&lt;br /&gt;&lt;br /&gt;Standard Types: Boolean, Date, DateTime, Time, Number, Object, String,&lt;br /&gt;Any&lt;br /&gt;&lt;br /&gt;Definition Types: Field, Record, Row, RowSet, AESection, Array, Component, File, BusinessInterlink, Message, Opertor, ProcessRequest, SQL.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Referencing Fields:&lt;br /&gt;&lt;br /&gt;There are significant differences between Online and Batch modes. AE programs run in Batch mode so, our PeopleCode cannot access pages or controls as it can while running in Online mode. In short, any Peoplecode operations that manipulate pages will not run successfully. Even if you invoke your AE program “Online” from a Record or a Page using the CallAppEngine PeopleCode Function, the Application Engine PeopleCode still does not have direct access to the Page buffers.&lt;br /&gt;&lt;br /&gt;Any RECORD.FIELD references that appear in a PeopleCode Action can only refer to fields that exist on an Application Engine State Records. Page buffers, controls, and so on are inaccessible even if you define the page records as State Records on the Program Properties dialog. An Application Engine program can only access State Records or other Definitions you create in PeopleCode.&lt;br /&gt;&lt;br /&gt;There are multiple methods used to reference fields in PeopleCode. Of the various methods, there are only 2 that apply to Application Engine.&lt;br /&gt;&lt;br /&gt;First, we can refer to the field using the Syntax .. For example, we would refer to an employee’s name using EMPLOYEE.NAME.&lt;br /&gt;&lt;br /&gt;Second, we can use dot notation. For example, we can assign the employee’s name to a variable using the following syntax:&lt;br /&gt;&lt;br /&gt;&amp;Name=GetRecord(RECORD.Employee).GetField(FIELD.Name);&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;All PeopleCode statements should end with a semicolon – ‘;’. The PeopleCode editor will strip away any excess spaces or line breaks when the program is saved.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Date and Time operations&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Operation&lt;br /&gt;Result&lt;br /&gt;Time + Number (no of seconds)&lt;br /&gt;Time&lt;br /&gt;Date + Number (no of days)&lt;br /&gt;Date&lt;br /&gt;Date – Date&lt;br /&gt;Number (difference in days)&lt;br /&gt;Time – Time&lt;br /&gt;Number (difference in seconds)&lt;br /&gt;Date + Time&lt;br /&gt;DateTime&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;If then&lt;br /&gt;&lt;br /&gt;else&lt;br /&gt;&lt;br /&gt;end-if&lt;br /&gt;&lt;br /&gt;*****************&lt;br /&gt;&lt;br /&gt;Exit Statement&lt;br /&gt;&lt;br /&gt;In the Application Engine, the IF-THEN statement is used to control flow of execution with the EXIT statement. The setting of the EXIT can cause the next Application Engine step to conditionally be skipped.&lt;br /&gt;&lt;br /&gt;If &amp;Test = 10 Then&lt;br /&gt;Exit(0);&lt;br /&gt;Else&lt;br /&gt;Exit(1);&lt;br /&gt;End-if&lt;br /&gt;&lt;br /&gt;The parameter in the Exit Function controls the path the AE program will take&lt;br /&gt;&lt;br /&gt;1 – indicates that the instruction to be done On Return will be done.&lt;br /&gt;&lt;br /&gt;0 – tells the program to ignore the On Return Action of the PeopleCode Action.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;The On Return options are:&lt;br /&gt;&lt;br /&gt;Abort The program issues an error and exits immediately&lt;br /&gt;Break The program exits the current Step and Section, and control returns to the calling Step&lt;br /&gt;Skip Step The program exits that current step, and continues processing at the next Step in the Section. If this is the last Step in the Section, the calling Step resumes control of the processing.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Sequence Numbering&lt;br /&gt;&lt;br /&gt;We can use the meta-SQL constructs %NEXT and %PREVIOUS when performing sequence numbering. Using these constructs may help performance in both PeopleCode and SQL calls.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Dynamic Calls&lt;br /&gt;&lt;br /&gt;Rather than calling one specific Section, we can take advantage of the AE_APPLID and AE_SECTION fields in the State Record to execute different Sections depending on the conditions a program encounters during runtime. This is called Dynamic Call.&lt;br /&gt;&lt;br /&gt;If we will only be using the Section within one AE program, then only the AE_SECTION field must be on the State Record. If we want to be able to call a section in other Application Engine Program, we will need to define both AE_APPLID and AE_SECTION on our State Record.&lt;br /&gt;&lt;br /&gt;We enable a Dynamic Call by first having our program store different Section names in the AE_SECTION field, and different program names in AE_APPLID field. The values you insert into these fields needs to be based on various conditions met within our program. We then create a Call Section Action that call whatever Section name appears in the State Record field by selecting the Dynamic checkbox.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Check Points&lt;br /&gt;&lt;br /&gt;1. The AE has the ability to use PeopleCode to make logical decisions to control the execution of Sections, Steps or Actions.&lt;br /&gt;2. We can use the PeopleCode Action type with If-Then logic to control the flow of our AE program.&lt;br /&gt;3. We can use PeopleCode in AE programs to perform computational functions.&lt;br /&gt;4. PeopleCode can be used to control processing and to save time and overhead by not going to the database to make test.&lt;br /&gt;5. This is mainly due to the fact that AE is most powerful when it executes SQL-based processing against your database.&lt;br /&gt;6. PeopleCode is an interpreted language, so there is an inherent extra performance overhead when computed to compiled language.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Set Processing&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Set Processing uses SQL to process groups, or sets, of rows at one time rather than processing each row individually. With Set Processing, you’d only select, or isolate, those rows that meet the filtering criteria and then run the rule once against all the effected rows.&lt;br /&gt;&lt;br /&gt;In most cases, Set Processing is more efficient than row-by-row processing, especially when you enter the realm of high volume processing. Since Application Engine is designed specifically to process our high volume updates, Set Processing is vital to the development of the most efficient Application Engine Programs.&lt;br /&gt;&lt;br /&gt;Set Processing allows applying our business rule directly on the data in the DB using an UPDATE or INSERT/SELECT statement. The bulk of the performance gain lies in the fact that the processing occurs in the DB as opposed to&lt;br /&gt;&lt;br /&gt;· Pulling the data across the network, to our application program&lt;br /&gt;· Processing it&lt;br /&gt;· Transmitting results back across the network to be put into the DB tables.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Note: the only SELECT statements used in Set Processing appear in sub-queries of an INSERT or UPDATE statement.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Set Processing, Temporary Tables, and Application Engine program&lt;br /&gt;&lt;br /&gt;Most Application Engine program require 1 or more Temporary Tables to contain transient data. This is especially true of programs that take advantage of Set Processing techniques. Although temporary tables are not necessarily required for Set Processing.&lt;br /&gt;&lt;br /&gt;Creating temporary tables allow you to achieve one of the main objective involved with set based processing – the processing remains on the RDBMS Server. By storing transient data in temporary tables, you avoid the situation where the batch program fetches the data, row-by-row, and runs the business rule, processes the data and then passes the updated data back to the database. If the program were running on the client, you’d be taking performance hits due to the network roundtrip and the diminished processing speed of a client.&lt;br /&gt;&lt;br /&gt;Temporary tables should be designed to accomplish the following:&lt;br /&gt;&lt;br /&gt;· Hold transaction data for the current run or iteration of your program.&lt;br /&gt;· Contain only those rows of data affected by the business rule&lt;br /&gt;· Present key information in a denormalized or ‘flattened’ form, which provides the most efficient processing.&lt;br /&gt;· Switch the keys for rows coming from the master tables if needed. A transaction may use a different key than what appears on the master tables.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Identify Temporary Tables&lt;br /&gt;&lt;br /&gt;Most applications will require 1 or more temporary tables to contain transient data. This is especially true of applications that take advantage of Set Processing techniques. Normally, we would name temporary table something that ends with “_TMP”.&lt;br /&gt;&lt;br /&gt;AE has Checkpoint/Restart capabilities, these tables should not really be considered temporary. To protect the overall integrity of the batabase, give these tables name that end with “_TAO”.&lt;br /&gt;&lt;br /&gt;There is a special record type “Temporary Table” that is used with AE programs for parallel processing. If you only need one instance of a temporary table, and SQL table could be used. For this activity, we will use a record type of “SQL Table”.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Key Points&lt;br /&gt;&lt;br /&gt;1. Application solutions designed to take advantage of Set Processing improve the performance of an AE application&lt;br /&gt;2. Set Processing can yield:&lt;br /&gt;· Improved performance&lt;br /&gt;· Minimized (PeopleTools) SQL overhead&lt;br /&gt;· Easier maintenance&lt;br /&gt;· Leveraged power from the RDBMS&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Temporary Tables&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;The ability for multiple instances of the same program to run simultaneously is called Parallel or Concurrent processing.&lt;br /&gt;&lt;br /&gt;Since AE programs run in Batch, it is very likely that multiple instances of the same program can be running in parallel. When batch programs being running simultaneously, they introduce a significant risk of data connection and dedlocks on common tables and/or temporary tables.&lt;br /&gt;&lt;br /&gt;For AE programs, PeopleTools provides a feature that enables you to drastically reduce the risk of table contention by dedicating specific instances of temporary tables for each program run. With this feature, we have a pool of temporary table instances, and within that pool some tables are dedicated to particular programs, and some instances are undedicated, meaning they are shared.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Parallel Processing – Why?&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;For batch process there can be potential performance improvements by spilitting the data to be processed into groups and simultaneously running multiple instances of our program to deal with different groups of data.&lt;br /&gt;&lt;br /&gt;For example if we have an inventory of 1,000,000 items you need to process, consider the following time lines to run the following 3 cases&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;1. All 1,000,000 with one execution of our program&lt;br /&gt;&lt;br /&gt;-------------t--à------------------------------------&lt;br /&gt;&lt;br /&gt;2. 500,000 each in 2 executions of our program, serially&lt;br /&gt;&lt;br /&gt;--------t-à------------------------t-à-------------&lt;br /&gt;&lt;br /&gt;3. 500,000 each in 2 executions of our program parallel&lt;br /&gt;&lt;br /&gt;--------t-à--------------&lt;br /&gt;--------t-à--------------&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;If you have a program that uses a Temporary Table and is invoked multiple times, that single Temporary Table could be used concurrently in multiple executions of the code.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;This could create unpredictable results since the different instances of the code would be issuing Deletes, Inserts, and/or Updates unsynchronized with each other.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;We could solve the problem by creating multiple temporary tables as a pool of tables. Each invocation of our program would have to allocate an unused temporary table, mark it as ‘in use’ use it and release it back to the pool when you are through with it (for each AE program we write)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Implementing Parallel Processing&lt;br /&gt;&lt;br /&gt;There is no simple switch or checkbox that enables you to turn parallel processing on and off. To implement parallel processing, you need to complete a set of tasks in the order that they appear in the following list&lt;br /&gt;&lt;br /&gt;1. Define your Temporary Tables by defining and saving your Temporary Table records as type Temporary Table.&lt;br /&gt;2. Build the Temporary Table Pool. This will build the basic Temporary Table Pool based on the PeopleTools options specifications.&lt;br /&gt;3. Assign Temporary Tables to your AE Program in its Program Properties, setting the appropriate number of instance counts and Runtime options.&lt;br /&gt;4. Build/Rebuild your Temporary Table record. This will build the necessary Batch temporary tables into that record’s Temporary Table pool for use at execution time.&lt;br /&gt;5. Code %Table meta-SQL as references to Temporary Tables in your AE program, so that AE can resolve table references to the assigned Temporary Table instance dynamically at runtime.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;The Temporary Table Instance (Total) specified on the PeopleTools Options page.&lt;br /&gt;Plus the sum of all instance count values specified in all of the AE programs that use that Temporary table.&lt;br /&gt;&lt;br /&gt;Application Designer only creates a maximum of 99 Temporary table instances.&lt;br /&gt;&lt;br /&gt;There are 2 fields that are used in connection with the temporary table instances.&lt;br /&gt;&lt;br /&gt;Temp Table Instances(Total) &lt;br /&gt;Temp Table Instances(Online)&lt;br /&gt;&lt;br /&gt;These 2 values should always be the same except for EPM&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;EPM Managed Temporary tables&lt;br /&gt;&lt;br /&gt;The difference between the Temp Table Instances(Total) and Temp Table Instances(Online) will be the EPM Managed Temporary Tables&lt;br /&gt;&lt;br /&gt;The naming convention for the Temporary Table instances is as follows:&lt;br /&gt;nn&lt;br /&gt;where nn is a number between 1 and 99.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;PeopleTools Options:&lt;br /&gt;&lt;br /&gt;Temp Table Instances (Total):5&lt;br /&gt;Temp Table Instances (Online):3&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Application Designer Build&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;OnlineTEMP_TA05&lt;br /&gt;TotalTEMP_TA04&lt;br /&gt;EPM ManagedTEMP_TA03&lt;br /&gt;TEMP_TA02&lt;br /&gt;Base TableTEMP_TA01&lt;br /&gt;TEMP_TA0&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Reference Temporary Table (%Table)&lt;br /&gt;&lt;br /&gt;To reference a temporary table (Online or Batch), we need to use:&lt;br /&gt;&lt;br /&gt;%Table(record)&lt;br /&gt;&lt;br /&gt;We can reference any table with %Table, but only those records defined as Temporary Tables get replaced by Application Engine with an numbered instance of a Temporary Table from the Temporary Table pool.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Clear Temporary Table (%TruncateTable)&lt;br /&gt;&lt;br /&gt;We do not need to delete data from a Temporary Table manually. The Temporary Tables are truncated automatically when they are assigned to our program. If the shared base table has been allocated because no batch/dedicated instances were available. Then AE performs a delete by process instance instead of performing a truncate. In such case, the PROCESS_INSTANCE is required as a high-level key.&lt;br /&gt;&lt;br /&gt;We can perform additional deletes of Temporary Table results during the run, but you will need to include your own SQL Action that does a %TruncateTable.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Run Time Allocation&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Depending on how we invoke a program the manner in which it allocates a Temporary Table is different. The distinction between invocation methods fall into 2 categories:&lt;br /&gt;&lt;br /&gt;1. Online&lt;br /&gt;2. Batch&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;1. Online Processes&lt;br /&gt;&lt;br /&gt;Online processes have their own set of dedicated Temporary tables, defined globally on PeopleTools Options.&lt;br /&gt;&lt;br /&gt;When you invoke a process Online, PeopleTools randomly allocates a single Temporary Table instance number to ProgramX for all its dedicated temp table names. While programX runs, no other program can use that instance number assigned to programX until programX has run to completion. Any other Online process that happens to get the same instance value as programX will wait for the look to be released when programX completes and the instance number is unlocked.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;2. Batch Processes&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;For Batch processes, PeopleTools allocates the batch/dedicated table instance numbers on a record-by-record basis. PeopleTools begins with the lowest instance number available for each Temporary Table until all of the Temporary Table instances are in use. If there are not any temporary table available and you indicated Continue for the If non-shared Tables cannot be assigned, then the base table will be used with the process instance number as a key.&lt;br /&gt;&lt;br /&gt;When a program ends normally or is cancelled by way of Process Monitor, the system automatically releases the assigned instances.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Application Engine Execution&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;We can invoke AE programs 3 modes:&lt;br /&gt;&lt;br /&gt;1. Batch&lt;br /&gt;2. Online&lt;br /&gt;3. Manual&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;1. Batch&lt;br /&gt;&lt;br /&gt;This is the most typical mode of execution. We invoke programs that run in this mode using Process Scheduler or the AE Process Request page. Batch mode is also referred to as asynchronous execution meaning that it runs independently in the background.&lt;br /&gt;&lt;br /&gt;2. Online&lt;br /&gt;&lt;br /&gt;AE programs that execute online, typically get executed from a page with the CallAppEngine PropleCode function. Such Online processes are synchronous meaning that subsequent processes wait on the results. For instance, a page may ‘frozen’ until the Online process returns the necessary results. When the program is called synchronously, no COMMITs are issued until the program completes.&lt;br /&gt;&lt;br /&gt;3. Manual&lt;br /&gt;&lt;br /&gt;To execute an AE program in manual mode, we would use the command line. Usually, we only use this technique during testing or if you need to manually restart the program.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;1. Batch Mode 2.Online Mode 3.Manual Mode&lt;br /&gt;Asynchronous Process Synchronous Process&lt;br /&gt;Process Scheduler CallAppEngine Command Line&lt;br /&gt;PeopleCode&lt;br /&gt;&lt;br /&gt;Process Scheduler&lt;br /&gt;Request Push Button Bat File&lt;br /&gt;AE Process&lt;br /&gt;Request Page&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;PSAE.exe&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Key Points&lt;br /&gt;&lt;br /&gt;1. We can execute AE programs in a number of different ways appropriate to the type of user that is initiating the program.&lt;br /&gt;2. we can initiate AE program from pages with Push Button set for Synchronous or Asynchronous execution.&lt;br /&gt;3. We can run AE program in or out of the Process Scheduler.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Application Engine Process Definition&lt;br /&gt;&lt;br /&gt;We use Process Scheduler Manager to set and create Process Types, Process Definitions, and Job Definitions to integrate Process Scheduler in PeopleSoft applications from our browser. For each AE program that we want to process via the process scheduler, we need to create Process Definition and a component designed to control the runtime parameters. PeopleSoft provides standard records and pages from which to clone.&lt;br /&gt;&lt;br /&gt;PeopleTools =&gt; Process Scheduler Manager =&gt; Use =&gt; Process Type Definitions&lt;br /&gt;&lt;br /&gt;Command Line: points to the executable program PSAE.exe, a PeopleSoft API program to run AE programs.&lt;br /&gt;&lt;br /&gt;Enclose local environment (Client side) strings within a single pair of percent signs:%TOOLBIN%.&lt;br /&gt;&lt;br /&gt;Enclose all Server environment (Server side) strings with a double pair percent signs: %%TOOLBIN%%&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Parameter List: contains the string command line variable passes to the executable. The parameter list follows the same definitions as we saw for the command line. The variable are denoted by the %% and are retrieved from the system at run time.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Parameter&lt;br /&gt;Variables (meta-strings)&lt;br /&gt;Description&lt;br /&gt;-CT&lt;br /&gt;%%DBTYPE%%&lt;br /&gt;Database Type&lt;br /&gt;-CD&lt;br /&gt;%%DBNAME%%&lt;br /&gt;Database Name&lt;br /&gt;-CO&lt;br /&gt;%%OPRID%%&lt;br /&gt;User ID&lt;br /&gt;-CP&lt;br /&gt;%%OPRPSWD%%&lt;br /&gt;User Password&lt;br /&gt;-R&lt;br /&gt;%%RUNCNTLID%%&lt;br /&gt;Run Control ID&lt;br /&gt;-I&lt;br /&gt;%%INSTANCE%%&lt;br /&gt;Process Instance&lt;br /&gt;-AI&lt;br /&gt;%%PRCSNAME%%&lt;br /&gt;Process Definition&lt;br /&gt;&lt;br /&gt;Process Scheduler uses a number of variables during the run time. These are in the form of meta-strings, in-line bind variables, or client/server variables.&lt;br /&gt;&lt;br /&gt;% - Client side Variable&lt;br /&gt;%% - Server side Variable&lt;br /&gt;&lt;br /&gt;C:\PT812\CLIENT\WINX86\PSAE –CT MICROSOFT –CD -CO PTTRN –CP PTTRN –R PROCESS_ORD2 –AI PROCESS_ORD2&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Steps to Add Appliction Engine Process&lt;br /&gt;&lt;br /&gt;1. Design&lt;br /&gt;2. Identify initial Bind Variables&lt;br /&gt;3. Determine Run Control Record&lt;br /&gt;4. Build the Record&lt;br /&gt;5. Determine the Run Control Page&lt;br /&gt;6. Place the Run Control Page on a Component&lt;br /&gt;7. Place the Component on a Menu&lt;br /&gt;8. Create a Process Definition&lt;br /&gt;9. Grant Access to the Component&lt;br /&gt;10. Test&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Run Control Record&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;The most common way to request an AE program through the Process Scheduler is from a Run Control component. To build a component, we must start with a record.&lt;br /&gt;&lt;br /&gt;PropleSoft provides a standard Run Control Record for processes with no user input: PRCSRUNCNTL. This record contains 4 fields.&lt;br /&gt;&lt;br /&gt;1. OPRID Key Field&lt;br /&gt;2. RUN_CNTL_ID Key Field&lt;br /&gt;3. LANGUAGE_CD&lt;br /&gt;4. LANGUAGE_OPTION&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;The Fields OPRID and RUN_CNTL_ID contain the following PeopleCode:&lt;br /&gt;&lt;br /&gt;OPRID - RowInit - OPRID=%OperatorId&lt;br /&gt;RUN_CNTL_ID- Save Edit - Ensures no blanks in value&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Key Points&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;1. A process type definition is used to define the command line, parameter list, working directory, and other general parameters for a process that can be run through the Process Scheduler.&lt;br /&gt;2. AE Generic Test Type can be used to run an AE program without creating the process definition (for testing).&lt;br /&gt;3. A Process Definition defines the AE program to the Process Scheduler.&lt;br /&gt;4. PeopleSoft supplies some standard run control records and pages that can be used or cloned.&lt;br /&gt;5. The steps to add a new AE program to the Process Scheduler are:&lt;br /&gt;· Design&lt;br /&gt;· Identify initial bind variables – these will need to be included on the Run Control Page&lt;br /&gt;· Determine the Run Control Record&lt;br /&gt;· Build the Record&lt;br /&gt;· Determine the Run Control Page&lt;br /&gt;· Place page on a component&lt;br /&gt;· Place component on a Menu&lt;br /&gt;· Add a Process Definition&lt;br /&gt;· Grant access to the Component&lt;br /&gt;· Test the application&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Appliction Enginer Meta-SQL&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Meta-SQL&lt;br /&gt;Description&lt;br /&gt;%Bind&lt;br /&gt;&lt;br /&gt;%Select&lt;br /&gt;&lt;br /&gt;%SQL&lt;br /&gt;&lt;br /&gt;%Table&lt;br /&gt;&lt;br /&gt;%TruncateTable&lt;br /&gt;&lt;br /&gt;%ExecuteEdits&lt;br /&gt;&lt;br /&gt;%InsertSelect&lt;br /&gt;&lt;br /&gt;%Join&lt;br /&gt;&lt;br /&gt;%List&lt;br /&gt;&lt;br /&gt;%SelectInit&lt;br /&gt;&lt;br /&gt;%UpdateStatus&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Application Engine Macros&lt;br /&gt;&lt;br /&gt;Meta-SQL&lt;br /&gt;Description&lt;br /&gt;%ClearCursor&lt;br /&gt;&lt;br /&gt;%Execute&lt;br /&gt;&lt;br /&gt;%Next&lt;br /&gt;%Previous&lt;br /&gt;&lt;br /&gt;%RoundCurrency&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Application Engine System (Meta) Variables&lt;br /&gt;&lt;br /&gt;Meta-SQL&lt;br /&gt;Description&lt;br /&gt;%AeProgram&lt;br /&gt;&lt;br /&gt;%AeSection&lt;br /&gt;&lt;br /&gt;%AeStep&lt;br /&gt;&lt;br /&gt;%JobInstance&lt;br /&gt;&lt;br /&gt;%ProcessInstance&lt;br /&gt;&lt;br /&gt;%ReturnCode&lt;br /&gt;&lt;br /&gt;%RunControl&lt;br /&gt;&lt;br /&gt;%AsOfDate&lt;br /&gt;&lt;br /&gt;%SQLRows&lt;br /&gt;&lt;br /&gt;%LeftParen&lt;br /&gt;&lt;br /&gt;%LeftParen&lt;br /&gt;&lt;br /&gt;%Space&lt;br /&gt;&lt;br /&gt;%Comma&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Meta-SQL Date &amp; Time Functions&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Meta-SQL&lt;br /&gt;Description&lt;br /&gt;%CurrentDateIn&lt;br /&gt;&lt;br /&gt;%CurrentDateOut&lt;br /&gt;&lt;br /&gt;%DateIn(dt)&lt;br /&gt;&lt;br /&gt;%DateOut(dt)&lt;br /&gt;&lt;br /&gt;%DateTime(dtt)&lt;br /&gt;&lt;br /&gt;%DateTimeOut(datetime_col)&lt;br /&gt;&lt;br /&gt;%TimeIn(tm) &lt;br /&gt;&lt;br /&gt;%TimeOut(tm)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2388698495725806936-4803443194286447630?l=harshachowdaryworld.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://harshachowdaryworld.blogspot.com/feeds/4803443194286447630/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2388698495725806936&amp;postID=4803443194286447630' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2388698495725806936/posts/default/4803443194286447630'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2388698495725806936/posts/default/4803443194286447630'/><link rel='alternate' type='text/html' href='http://harshachowdaryworld.blogspot.com/2009/07/application-engine.html' title='Application Engine'/><author><name>Sri Harsha</name><uri>http://www.blogger.com/profile/07055600374301477821</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://2.bp.blogspot.com/_cv2CfEeLpVU/Sl7x0ilfPHI/AAAAAAAAAgE/e3fgUdRlTv8/S220/tin.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2388698495725806936.post-6123779187407084849</id><published>2009-07-01T02:07:00.000-07:00</published><updated>2009-07-01T02:10:58.903-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Difference between Writeline and WriteString in AppEngine PeopleCode'/><title type='text'>Difference between Writeline and WriteString in AppEngine PeopleCode</title><content type='html'>Write String prints the data continuously in one line.&lt;br /&gt;&lt;br /&gt;Write line  prints the data line by line&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2388698495725806936-6123779187407084849?l=harshachowdaryworld.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://harshachowdaryworld.blogspot.com/feeds/6123779187407084849/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2388698495725806936&amp;postID=6123779187407084849' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2388698495725806936/posts/default/6123779187407084849'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2388698495725806936/posts/default/6123779187407084849'/><link rel='alternate' type='text/html' href='http://harshachowdaryworld.blogspot.com/2009/07/difference-between-writeline-and.html' title='Difference between Writeline and WriteString in AppEngine PeopleCode'/><author><name>Sri Harsha</name><uri>http://www.blogger.com/profile/07055600374301477821</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://2.bp.blogspot.com/_cv2CfEeLpVU/Sl7x0ilfPHI/AAAAAAAAAgE/e3fgUdRlTv8/S220/tin.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2388698495725806936.post-7638802265410541436</id><published>2009-06-29T01:01:00.000-07:00</published><updated>2009-06-29T01:03:48.434-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='To overwrite search record on component by using peoplecode'/><title type='text'>To overwrite search record on component by using peoplecode</title><content type='html'>Provide the search keys values in searchinit event. &lt;br /&gt;Use Setsearchdialogbehaviour() function.&lt;br /&gt;Make sure, in the component properties,"Force Search processing" is switched off.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2388698495725806936-7638802265410541436?l=harshachowdaryworld.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://harshachowdaryworld.blogspot.com/feeds/7638802265410541436/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2388698495725806936&amp;postID=7638802265410541436' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2388698495725806936/posts/default/7638802265410541436'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2388698495725806936/posts/default/7638802265410541436'/><link rel='alternate' type='text/html' href='http://harshachowdaryworld.blogspot.com/2009/06/how-to-overwrite-search-record.html' title='To overwrite search record on component by using peoplecode'/><author><name>Sri Harsha</name><uri>http://www.blogger.com/profile/07055600374301477821</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://2.bp.blogspot.com/_cv2CfEeLpVU/Sl7x0ilfPHI/AAAAAAAAAgE/e3fgUdRlTv8/S220/tin.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2388698495725806936.post-7377723955947946544</id><published>2009-06-29T01:00:00.001-07:00</published><updated>2009-06-29T01:00:43.452-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Code to print a image in SQR'/><title type='text'>Code to print a image in SQR</title><content type='html'>let $imgpath = $DB_Server_Path || 'logo.jpeg'&lt;br /&gt;print-image (1,1)&lt;br /&gt;type=jpeg-file&lt;br /&gt;image-size=(75,9)&lt;br /&gt;ource= $imgpath&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2388698495725806936-7377723955947946544?l=harshachowdaryworld.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://harshachowdaryworld.blogspot.com/feeds/7377723955947946544/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2388698495725806936&amp;postID=7377723955947946544' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2388698495725806936/posts/default/7377723955947946544'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2388698495725806936/posts/default/7377723955947946544'/><link rel='alternate' type='text/html' href='http://harshachowdaryworld.blogspot.com/2009/06/code-to-print-image-in-sqr.html' title='Code to print a image in SQR'/><author><name>Sri Harsha</name><uri>http://www.blogger.com/profile/07055600374301477821</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://2.bp.blogspot.com/_cv2CfEeLpVU/Sl7x0ilfPHI/AAAAAAAAAgE/e3fgUdRlTv8/S220/tin.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2388698495725806936.post-1917666552505384109</id><published>2009-06-29T00:54:00.000-07:00</published><updated>2009-07-19T22:28:59.682-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SQR Migration Strategies'/><title type='text'>SQR Migration Strategies</title><content type='html'>your expert comments and thoughts are invited to further refine this tool.&lt;br /&gt;&lt;br /&gt;Type of SQR                                     Migration Strategy&lt;br /&gt;&lt;br /&gt;Inbound Interface – Data source: File    File Layout + AE + CI if insertion is done to a component&lt;br /&gt;&lt;br /&gt;Inbound Interface – Data source: Peoplesoft&lt;br /&gt;	&lt;br /&gt;&lt;br /&gt;App Messaging/IB&lt;br /&gt;&lt;br /&gt;Mass Data Changes (Mass hires, Mass update of a table etc.)&lt;br /&gt;	&lt;br /&gt;&lt;br /&gt;AE + CI if updation to a component is done. Analyse whether the Peoplesoft Mass Change functionality can be utilized.&lt;br /&gt;&lt;br /&gt;Outbound Interface (Flat files, Dataset)&lt;br /&gt;	&lt;br /&gt;&lt;br /&gt;AE + XML Publisher for report generation/ Web Services if 3rd party supports&lt;br /&gt;&lt;br /&gt;SQCs&lt;br /&gt;	&lt;br /&gt;&lt;br /&gt;Custom SQCs can be replaced by Application Classes to be invoked from Peoplecode.&lt;br /&gt;&lt;br /&gt;Utility programs (Clean up, File manipulation, Audits, Status Checks)&lt;br /&gt;	&lt;br /&gt;&lt;br /&gt;Audits, File Operations, OS related processes are better done by SQRs, retain them. Utilities that affect database can be replaced by AE.&lt;br /&gt;&lt;br /&gt;Letters and Forms (online forms as well as letters that are mailed)&lt;br /&gt;	&lt;br /&gt;&lt;br /&gt;XML Publisher + Peoplecode notification classes for mails&lt;br /&gt;&lt;br /&gt;Reports – Simple single data source (reports with one BEGIN-SELECT)&lt;br /&gt;	&lt;br /&gt;&lt;br /&gt;XML Publisher&lt;br /&gt;&lt;br /&gt;Reports – Simple multiple data sources (reports with more than one BEGIN-SELECT and simple calculations)&lt;br /&gt;	&lt;br /&gt;&lt;br /&gt;Migration of these might require the use of AE to execute the calculations and XML/XSL modifications. Move to XML Publisher if the logic is not complicated, otherwise retain SQRs.&lt;br /&gt;&lt;br /&gt;Reports – On-breaks and multiple reports&lt;br /&gt;	&lt;br /&gt;&lt;br /&gt;XML Publishers&lt;br /&gt;&lt;br /&gt;Reports – Complex with multiple BEGIN-SELECTS and complex conditional logic&lt;br /&gt;	&lt;br /&gt;&lt;br /&gt;Do not migrate – the effort is not worth it.&lt;br /&gt;&lt;br /&gt;Reports – Status of batch process&lt;br /&gt;	&lt;br /&gt;&lt;br /&gt;This category contains the production of error reports and status reports of processing done by an AE or other batch programs – move to XML Publisher.&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2388698495725806936-1917666552505384109?l=harshachowdaryworld.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://harshachowdaryworld.blogspot.com/feeds/1917666552505384109/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2388698495725806936&amp;postID=1917666552505384109' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2388698495725806936/posts/default/1917666552505384109'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2388698495725806936/posts/default/1917666552505384109'/><link rel='alternate' type='text/html' href='http://harshachowdaryworld.blogspot.com/2009/06/sqr-migration-strategies.html' title='SQR Migration Strategies'/><author><name>Sri Harsha</name><uri>http://www.blogger.com/profile/07055600374301477821</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://2.bp.blogspot.com/_cv2CfEeLpVU/Sl7x0ilfPHI/AAAAAAAAAgE/e3fgUdRlTv8/S220/tin.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2388698495725806936.post-6195517983385898304</id><published>2009-06-29T00:51:00.001-07:00</published><updated>2009-06-29T00:51:53.385-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SQR Optimisation Techniques'/><title type='text'>SQR Optimisation Techniques</title><content type='html'>1. Check your SQL queries: Most of the performance issue can be attributed to poorly written SQLs. Critically review each SQL statement of your SQR and ensure their correctness.&lt;br /&gt;&lt;br /&gt;2. Usage of Temporary Tables: This is number two on my list. A strategy that I adopt when multiple tables have to be joined and the report involves complex processing, is to pull out the master data and insert the same into a temporary table that has been created in the begin-setup section of the SQR. Further processing can be done by referring the data in the temporary table and this reduces trips to transaction tables whereby giving us significant performance enhancements.&lt;br /&gt;&lt;br /&gt;3. Usage of arrays: Arrays are excellent instruments to improve the maintainability of the program. I would always use arrays to hold values of totals and other variables that are to be re-initialised multiple times in the report (note that the values of an array can be reset by using the clear-array command). If variables were used instead, the number of variables that would have to be maintained, the initialisation routine etc. would add to the complexity to the program.&lt;br /&gt;&lt;br /&gt;4. Dynamic SQLs: The usage of dynamic sqls greatly reduces the length of a program and helps in improving its performance. One requirement I had was to generate two reports with the same output fields and filter criteria, but one sorted by EMPLID and another by NAME. In this case, the only difference was the ORDER BY clause and instead of writing two different BEGIN-SELECTs, the requirement was achieved by maintaining a single BEGIN-SELECT and passing the order by clause as a dynamic SQL.&lt;br /&gt;&lt;br /&gt;5. Break down your SQLs: This is something you will find in Peoplebooks also. Make sure that you are querying the database only when necessary. Let's say you have to produce a report which lists the EMPLID, NAME, BIRTHDATE, MANAGER'S NAME and JOBCODE DESCRIPTION. This will involve the join of 4 tables (including PS_NAMES aliased twice) and considering the key structure of these tables, will take considerable execution time. An alternate strategy would be to have a different procedure to get the JOBCODE descr where only the JOBCODE_TBL is queried for instead of making it a part of the join.&lt;br /&gt;&lt;br /&gt;6. Minimal code and re-usable logic: The beauty of SQRs is that it is the most flexible tool in the Peoplesoft technical environment (especially considering the rigidity and ready made nature of an AE, CI or Peoplecode) and offers the developer multiple paths to one solution. Evolve a logic that re-uses your procedures and minimises database trips.&lt;br /&gt;&lt;br /&gt;What about Load Lookups? Documentation says that Load Lookups give significant performance enhancements. Practically I have not been able to achieve this. The look up gets loaded at the start of the report and the time taken to load the lookup offsets any advantage that this concept delivers. Usage of temporary tables is a much better alternatives - in effect the concept of the two are inherently the same - reduce database trips and querying of large transaction tables.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2388698495725806936-6195517983385898304?l=harshachowdaryworld.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://harshachowdaryworld.blogspot.com/feeds/6195517983385898304/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2388698495725806936&amp;postID=6195517983385898304' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2388698495725806936/posts/default/6195517983385898304'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2388698495725806936/posts/default/6195517983385898304'/><link rel='alternate' type='text/html' href='http://harshachowdaryworld.blogspot.com/2009/06/sqr-optimisation-techniques.html' title='SQR Optimisation Techniques'/><author><name>Sri Harsha</name><uri>http://www.blogger.com/profile/07055600374301477821</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://2.bp.blogspot.com/_cv2CfEeLpVU/Sl7x0ilfPHI/AAAAAAAAAgE/e3fgUdRlTv8/S220/tin.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2388698495725806936.post-5997649757583710737</id><published>2009-06-29T00:47:00.000-07:00</published><updated>2009-06-29T00:50:34.537-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Auto creation of user profiles'/><title type='text'>Auto creation of user profiles</title><content type='html'>There are multiple scenarios where its required to create new user profiles in bulk. &lt;br /&gt;The best approach to this problem is to achieve the same by a CI built on the USER_SAVEAS component (Copy User profile component).&lt;br /&gt;Was mulling over the various options to auto generate passwords for the user profiles and ran into the delivered function in DERIVED_HINT.EMAILPSWD.Fieldformula event.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2388698495725806936-5997649757583710737?l=harshachowdaryworld.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://harshachowdaryworld.blogspot.com/feeds/5997649757583710737/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2388698495725806936&amp;postID=5997649757583710737' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2388698495725806936/posts/default/5997649757583710737'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2388698495725806936/posts/default/5997649757583710737'/><link rel='alternate' type='text/html' href='http://harshachowdaryworld.blogspot.com/2009/06/auto-creation-of-user-profiles.html' title='Auto creation of user profiles'/><author><name>Sri Harsha</name><uri>http://www.blogger.com/profile/07055600374301477821</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://2.bp.blogspot.com/_cv2CfEeLpVU/Sl7x0ilfPHI/AAAAAAAAAgE/e3fgUdRlTv8/S220/tin.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2388698495725806936.post-3877378669544692675</id><published>2009-06-29T00:42:00.000-07:00</published><updated>2009-06-29T00:44:17.233-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Dynamic Views as Prompt Tables'/><title type='text'>Dynamic Views as Prompt Tables</title><content type='html'>Dynamic Views are an excellent object type provided by Peoplesoft - a pseudo view that can take any shape! They are excellent candidates where the SQL condition of a view changes dynamically according and are not even a database objects.&lt;br /&gt;There are two major limitations I have come across when you use a Dynamic View as a prompt:&lt;br /&gt;1. If the SQL of the dynamic view contains joins and if the search fields are used in the join.&lt;br /&gt;2. If the SQL of the dynamic view contains joins.&lt;br /&gt;&lt;br /&gt;What causes the failure is that the component processor takes the search fields from the prompt and appends to the SQL statement like 'and = '. Now, unfortunately the processor does not do any aliasing which causes the common 'ambiguous column definition' SQL error.&lt;br /&gt;&lt;br /&gt;To overcome this, either put the SQL in a view and query from the view or better, treat the SQL as an inline view and query from the inline view.&lt;br /&gt;For example, if the initial SQL of the DV was something like:&lt;br /&gt;SELECT EMPLID FROM PSOPRDEFN UNION SELECT EMPLID FROM PSOPRDEFN, for this to work in a dynamic view, it has to be called from an inline view like:&lt;br /&gt;SELECT EMPLID FROM (SELECT EMPLID FROM PSOPRDEFN UNION SELECT EMPLID FROM PSOPRDEFN)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2388698495725806936-3877378669544692675?l=harshachowdaryworld.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://harshachowdaryworld.blogspot.com/feeds/3877378669544692675/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2388698495725806936&amp;postID=3877378669544692675' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2388698495725806936/posts/default/3877378669544692675'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2388698495725806936/posts/default/3877378669544692675'/><link rel='alternate' type='text/html' href='http://harshachowdaryworld.blogspot.com/2009/06/dynamic-views-as-prompt-tables.html' title='Dynamic Views as Prompt Tables'/><author><name>Sri Harsha</name><uri>http://www.blogger.com/profile/07055600374301477821</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://2.bp.blogspot.com/_cv2CfEeLpVU/Sl7x0ilfPHI/AAAAAAAAAgE/e3fgUdRlTv8/S220/tin.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2388698495725806936.post-7525460049555801779</id><published>2009-06-29T00:39:00.000-07:00</published><updated>2009-06-29T00:45:54.721-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Gray out an entire page except one field  using Peplecode'/><title type='text'>Gray out an entire page except one field  using Peplecode</title><content type='html'>&lt;span style="font-weight:bold;"&gt;Option 1&lt;/span&gt; : Use GRAY() function in the page activate event to gray out individual fields.&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Option2:&lt;/span&gt; Make page display only. and then in the peoplecode use enable property for the field that needs to be enabled.&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;OR&lt;/span&gt;&lt;br /&gt;Loop through&lt;br /&gt;&amp;Rec= Your Record&lt;br /&gt;for &amp;i =1 to &amp;rec.fieldcount&lt;br /&gt;if &amp;rec.field.name &lt;&gt; 'your req field' then&lt;br /&gt;&amp;rec.field.displayonly =true;&lt;br /&gt;else&lt;br /&gt;&amp;rec.field.displayonly =true;&lt;br /&gt;end-if;&lt;br /&gt;end-fo&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2388698495725806936-7525460049555801779?l=harshachowdaryworld.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://harshachowdaryworld.blogspot.com/feeds/7525460049555801779/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2388698495725806936&amp;postID=7525460049555801779' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2388698495725806936/posts/default/7525460049555801779'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2388698495725806936/posts/default/7525460049555801779'/><link rel='alternate' type='text/html' href='http://harshachowdaryworld.blogspot.com/2009/06/gray-out-entire-page-except-one-field.html' title='Gray out an entire page except one field  using Peplecode'/><author><name>Sri Harsha</name><uri>http://www.blogger.com/profile/07055600374301477821</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://2.bp.blogspot.com/_cv2CfEeLpVU/Sl7x0ilfPHI/AAAAAAAAAgE/e3fgUdRlTv8/S220/tin.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2388698495725806936.post-3882471422678699568</id><published>2009-06-29T00:05:00.000-07:00</published><updated>2009-06-29T00:26:07.092-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='To display the long name from translate table and display it output in SQR'/><title type='text'>To display the long name from translate table and display it output in SQR</title><content type='html'>To display the long name from translate table and display it output in SQR&lt;br /&gt;&lt;br /&gt;BEGIN-SELECT&lt;br /&gt;XLATLONGNAME (,132)   &lt;br /&gt;FROM &lt;br /&gt;PSXLATITEM&lt;br /&gt;WHERE &lt;br /&gt;FIELDVALUE = &amp;RELATION &lt;br /&gt;AND FIELDNAME = 'RELATIONSHIP' &lt;br /&gt;END-SELECT&lt;br /&gt;(Note:Call it in a procedure)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2388698495725806936-3882471422678699568?l=harshachowdaryworld.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://harshachowdaryworld.blogspot.com/feeds/3882471422678699568/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2388698495725806936&amp;postID=3882471422678699568' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2388698495725806936/posts/default/3882471422678699568'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2388698495725806936/posts/default/3882471422678699568'/><link rel='alternate' type='text/html' href='http://harshachowdaryworld.blogspot.com/2009/06/to-display-long-name-from-translate.html' title='To display the long name from translate table and display it output in SQR'/><author><name>Sri Harsha</name><uri>http://www.blogger.com/profile/07055600374301477821</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://2.bp.blogspot.com/_cv2CfEeLpVU/Sl7x0ilfPHI/AAAAAAAAAgE/e3fgUdRlTv8/S220/tin.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2388698495725806936.post-8112045207585255893</id><published>2009-06-29T00:00:00.000-07:00</published><updated>2009-06-29T00:04:51.112-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='String to Date conversion (30-dec-2009 to 12/30/2009) in PeopleCode'/><title type='text'>String to Date conversion (30-dec-2009 to 12/30/2009) in PeopleCode</title><content type='html'>Below is the code to convert the string to date (30-dec-2009 to 12/30/2009)&lt;br /&gt;&amp;str1 = &amp;array [5];&lt;br /&gt;            If &amp;array [5] = "NULL" Then&lt;br /&gt;               &amp;oSStu2Tbl.date = "" | "NULL";&lt;br /&gt;               &amp;fileLog.WriteLine("&amp;oSStu2Tbl.date = " | &amp;oSStu2Tbl.date);&lt;br /&gt;               &lt;br /&gt;            End-If;&lt;br /&gt;           If &amp;str1 &lt;&gt; "" And&lt;br /&gt;                  Len(&amp;str1) = 9 Then&lt;br /&gt;               &amp;str2 = Substring(&amp;str1, 1, 2);&lt;br /&gt;               &amp;str3 = Substring(&amp;str1, 4, 3);&lt;br /&gt;               Evaluate &amp;str3&lt;br /&gt;               When = "Jan"&lt;br /&gt;                  &amp;mm = 1;&lt;br /&gt;                  Break;&lt;br /&gt;               When = "Feb"&lt;br /&gt;                  &amp;mm = 2;&lt;br /&gt;                  Break;&lt;br /&gt;               When = "Mar"&lt;br /&gt;                  &amp;mm = 3;&lt;br /&gt;                  Break;&lt;br /&gt;               When = "Apr"&lt;br /&gt;                  &amp;mm = 4;&lt;br /&gt;                  Break;&lt;br /&gt;               When = "May"&lt;br /&gt;                  &amp;mm = 5;&lt;br /&gt;                  Break;&lt;br /&gt;               When = "June"&lt;br /&gt;                  &amp;mm = 6;&lt;br /&gt;                  Break;&lt;br /&gt;               When = "July"&lt;br /&gt;                  &amp;mm = 7;&lt;br /&gt;                  Break;&lt;br /&gt;               When = "Aug"&lt;br /&gt;                  &amp;mm = 8;&lt;br /&gt;                  Break;&lt;br /&gt;               When = "Sep"&lt;br /&gt;                  &amp;mm = 9;&lt;br /&gt;                  Break;&lt;br /&gt;               When = "Oct"&lt;br /&gt;                  &amp;mm = 10;&lt;br /&gt;                  Break;&lt;br /&gt;               When = "Nov"&lt;br /&gt;                  &amp;mm = 11;&lt;br /&gt;                  Break;&lt;br /&gt;               When = "Dec"&lt;br /&gt;                  &amp;mm = 12;&lt;br /&gt;                  Break;&lt;br /&gt;                  &lt;br /&gt;               End-Evaluate;&lt;br /&gt;               &lt;br /&gt;               rem   &amp;b = Month(&amp;str3);&lt;br /&gt;               &lt;br /&gt;               &amp;str4 = Substring(&amp;str1, 8, 2);&lt;br /&gt;               &amp;dte = &amp;str2 | "/" | &amp;mm | "/" | &amp;str4;&lt;br /&gt;               &lt;br /&gt;               &amp;oSStu2Tbl.S_STU_DATE = &amp;dte;&lt;br /&gt;               &amp;fileLog.WriteLine("&amp;oSStu2Tbl.date = " | &amp;str2 | "/" | &amp;mm | "/"|&amp;str4);&lt;br /&gt;            End-If;&lt;br /&gt;            &lt;br /&gt;            If &amp;str1 &lt;&gt; "" And&lt;br /&gt;                  Len(&amp;str1) = 8 Then&lt;br /&gt;               &amp;str2 = Substring(&amp;str1, 1, 1);&lt;br /&gt;               &amp;str3 = Substring(&amp;str1, 3, 3);&lt;br /&gt;               Evaluate &amp;str3&lt;br /&gt;               When = "Jan"&lt;br /&gt;                  &amp;mm = 1;&lt;br /&gt;                  Break;&lt;br /&gt;               When = "Feb"&lt;br /&gt;                  &amp;mm = 2;&lt;br /&gt;                  Break;&lt;br /&gt;               When = "Mar"&lt;br /&gt;                  &amp;mm = 3;&lt;br /&gt;                  Break;&lt;br /&gt;               When = "Apr"&lt;br /&gt;                  &amp;mm = 4;&lt;br /&gt;                  Break;&lt;br /&gt;               When = "May"&lt;br /&gt;                  &amp;mm = 5;&lt;br /&gt;                  Break;&lt;br /&gt;               When = "June"&lt;br /&gt;                  &amp;mm = 6;&lt;br /&gt;                  Break;&lt;br /&gt;               When = "July"&lt;br /&gt;                  &amp;mm = 7;&lt;br /&gt;                  Break;&lt;br /&gt;               When = "Aug"&lt;br /&gt;                  &amp;mm = 8;&lt;br /&gt;                  Break;&lt;br /&gt;               When = "Sep"&lt;br /&gt;                  &amp;mm = 9;&lt;br /&gt;                  Break;&lt;br /&gt;               When = "Oct"&lt;br /&gt;                  &amp;mm = 10;&lt;br /&gt;                  Break;&lt;br /&gt;               When = "Nov"&lt;br /&gt;                  &amp;mm = 11;&lt;br /&gt;                  Break;&lt;br /&gt;               When = "Dec"&lt;br /&gt;                  &amp;mm = 12;&lt;br /&gt;                  Break;&lt;br /&gt;                  &lt;br /&gt;               End-Evaluate;&lt;br /&gt;               &lt;br /&gt;               rem  &amp;b = Month(&amp;str3);&lt;br /&gt;               &amp;str4 = Substring(&amp;str1, 7, 2);&lt;br /&gt;               &amp;dte = &amp;str2 | "/" | &amp;mm | "/" | &amp;str4;&lt;br /&gt;               &amp;oSStu2Tbl.S_STU_DATE = &amp;dte;&lt;br /&gt;               &amp;fileLog.WriteLine("&amp;oSStu2Tbl.date = " | &amp;str2 | "/" | &amp;mm | "/" | &amp;str4);&lt;br /&gt;            End-If;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2388698495725806936-8112045207585255893?l=harshachowdaryworld.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://harshachowdaryworld.blogspot.com/feeds/8112045207585255893/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2388698495725806936&amp;postID=8112045207585255893' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2388698495725806936/posts/default/8112045207585255893'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2388698495725806936/posts/default/8112045207585255893'/><link rel='alternate' type='text/html' href='http://harshachowdaryworld.blogspot.com/2009/06/string-to-date-conversion-30-dec-2009.html' title='String to Date conversion (30-dec-2009 to 12/30/2009) in PeopleCode'/><author><name>Sri Harsha</name><uri>http://www.blogger.com/profile/07055600374301477821</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://2.bp.blogspot.com/_cv2CfEeLpVU/Sl7x0ilfPHI/AAAAAAAAAgE/e3fgUdRlTv8/S220/tin.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2388698495725806936.post-4308276339206375902</id><published>2009-06-26T03:25:00.000-07:00</published><updated>2009-06-26T03:29:19.071-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='How to delete process definition'/><title type='text'>How to delete process definition</title><content type='html'>The BEST way to delete any PeopleTools definition that you can insert as an object into application designer is by setting the action to delete for the relevant definitions, copying the project to file and reimporting the project&lt;br /&gt;&lt;br /&gt;The exact steps are covered below:&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;http://peoplesoft.wikidot.com/deleting-definitions&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2388698495725806936-4308276339206375902?l=harshachowdaryworld.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://harshachowdaryworld.blogspot.com/feeds/4308276339206375902/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2388698495725806936&amp;postID=4308276339206375902' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2388698495725806936/posts/default/4308276339206375902'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2388698495725806936/posts/default/4308276339206375902'/><link rel='alternate' type='text/html' href='http://harshachowdaryworld.blogspot.com/2009/06/how-to-delete-process-definition.html' title='How to delete process definition'/><author><name>Sri Harsha</name><uri>http://www.blogger.com/profile/07055600374301477821</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://2.bp.blogspot.com/_cv2CfEeLpVU/Sl7x0ilfPHI/AAAAAAAAAgE/e3fgUdRlTv8/S220/tin.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2388698495725806936.post-9028550513191812210</id><published>2009-06-26T03:22:00.000-07:00</published><updated>2009-06-26T03:24:25.388-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='PeopleTools Tables'/><title type='text'>PeopleTools Tables</title><content type='html'>&lt;span style="font-weight:bold;"&gt;Projects&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;    * PSPROJECTDEFN — Project header table&lt;br /&gt;    * PSPROJECTITEM — Definitions in the project &lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Fields&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;    * PSDBFIELD — Fields in the system&lt;br /&gt;    * PSXLATITEM — Translate Values &lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Records&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;    * PSRECDEFN — Record header table&lt;br /&gt;    * PSRECFIELD — Fields in the record (subrecords not expanded)&lt;br /&gt;    * PSRECFIELDALL — Fields in the record (subrecords expanded)&lt;br /&gt;    * PSKEYDEFN — Indexes&lt;br /&gt;    * PSTBLSPCCAT — Tablespaces&lt;br /&gt;    * PSRECTBLSPC — Records’ tablespace assignments &lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Pages&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;(Note: Pages still have the name panels in the PeopleTools table names)&lt;br /&gt;&lt;br /&gt;    * PSPNLDEFN — Page header table&lt;br /&gt;    * PSPNLFIELD — Page controls (field types/FIELDTYPE)&lt;br /&gt;    * PSPNLHTMLAREA — Static HTML Areas on Pages &lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Components&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;(Note: Components still have the name panel group in the PeopleTools table names)&lt;br /&gt;&lt;br /&gt;    * PSPNLGRPDEFN — Component header table&lt;br /&gt;    * PSPNLGROUP — Pages in the components &lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Component Interface&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;    * PSBCDEFN — header record; one row for each component interface&lt;br /&gt;    * PSBCITEM — one row for each property &lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Menus&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;    * PSMENUDEFN — Menu header table&lt;br /&gt;    * PSMENUITEM — Items (components) on the menu &lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Security&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;    * PSCLASSDEFN — Permission List header table&lt;br /&gt;    * PSAUTHITEM — Menu items granted security by permission lists&lt;br /&gt;    * PSROLEDEFN — Role header table&lt;br /&gt;    * PSROLECLASS — Permission Lists in roles&lt;br /&gt;    * PSOPRDEFN — User ID header table&lt;br /&gt;    * PSROLEUSER — Roles granted to users &lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Process Scheduler&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;    * PS_PRCSDEFN — Process Definition Header&lt;br /&gt;    * PS_PRCSDEFNGRP — Process Group&lt;br /&gt;    * PS_PRCSDEFNPNL — Component&lt;br /&gt;    * PS_PRCSJOBDEFN — Job Header&lt;br /&gt;    * PSPRCSRQST — Process Request Instances&lt;br /&gt;    * PS_PRCSJOBITEM — Job Processes &lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Portal&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;    * PSPRSMDEFN — Content References and Folders&lt;br /&gt;    * PSPRUHTABPGLT — Portal User HP Tab Pagelet &lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Change Control&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;    * PSCHGCTLHIST — shows history of locked definitions with project name, incident, and description&lt;br /&gt;    * PSCHGCTLLOCK — shows definitions that are currently locked &lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Application Engine&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;    * PSAEAPPLDEFN — header record; 1 row per app engine&lt;br /&gt;    * PSAEAPPLSTATE — state records assigned to app engines&lt;br /&gt;    * PSAEAPPLTEMPTBL — temp tables assigned to app engines&lt;br /&gt;    * PSAESECTDEFN — sections&lt;br /&gt;    * PSAESTEPDEFN — steps&lt;br /&gt;    * PSAESTEPMSGDEFN&lt;br /&gt;    * PSAESTMTDEFN — actions (action types) &lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;List Log Messages&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;HTML Definitions&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;    * PSCONTDEFN — header record; last update time, etc.&lt;br /&gt;    * PSCONTENT — stores actual text in the HTML definition &lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;SQL Definitions&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;    * PSSQLDEFN — header record; last update time, etc.&lt;br /&gt;    * PSSQLTEXTDEFN — stores actual text in the SQL definition &lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;File Layout Definitions&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;    * PSFLDDEFN — header record; last update time, etc.&lt;br /&gt;    * PSFLDSEGDEFN — stores the segments for each layout&lt;br /&gt;    * PSFLDFIELDDEFN — stores the fields for each layout &lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Workflow&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;    * APPR_RULE_DETL - Approval Rule Defn Details&lt;br /&gt;    * APPR_RULE_FIELD - Approval Rule Defn Route Cntl&lt;br /&gt;    * APPR_RULE_AMT - Approval Rule Amounts&lt;br /&gt;    * RTE_CNTL_LN - Route Control Profile Line&lt;br /&gt;    * RTE_CNTL_RUSER - RoleUser Route Cntl Profiles&lt;br /&gt;    * RTE_CNTL_TYPE - Route Control Type&lt;br /&gt;    * RTE_CNTL_HDR - Routing Control Type&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2388698495725806936-9028550513191812210?l=harshachowdaryworld.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://harshachowdaryworld.blogspot.com/feeds/9028550513191812210/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2388698495725806936&amp;postID=9028550513191812210' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2388698495725806936/posts/default/9028550513191812210'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2388698495725806936/posts/default/9028550513191812210'/><link rel='alternate' type='text/html' href='http://harshachowdaryworld.blogspot.com/2009/06/peopletools-tables.html' title='PeopleTools Tables'/><author><name>Sri Harsha</name><uri>http://www.blogger.com/profile/07055600374301477821</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://2.bp.blogspot.com/_cv2CfEeLpVU/Sl7x0ilfPHI/AAAAAAAAAgE/e3fgUdRlTv8/S220/tin.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2388698495725806936.post-4891614045247340184</id><published>2009-06-26T02:12:00.001-07:00</published><updated>2009-08-18T23:21:17.590-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='PepleCode'/><category scheme='http://www.blogger.com/atom/ns#' term='To write Images along with HTML text into a file created in an App Engine in PeopleSoft'/><title type='text'>To write Images along with HTML text into a file created in an App Engine in PeopleSoft</title><content type='html'>It's possible to write images along with HTML text.&lt;br /&gt;Sample Code:&lt;br /&gt;1. Create a new HTML Object as follows:&lt;br /&gt;!html  &lt;&gt;&lt;br /&gt;!body&lt;br /&gt;!img src="cid:23abc@pc27" /&lt;br /&gt;!/html&lt;br /&gt;!/body&lt;br /&gt;cid stands for the Content Id&lt;br /&gt;2. Sample PeopleCode:&lt;br /&gt; Local string &amp;amp;STRLURL = GetURL(URL.IMG_PATH);&lt;br /&gt;&amp;amp;image.SetAttachmentContent(&amp;amp;STRLURL, %FilePath_Absolute, "sample.jpg", "This is a sample image!", "", "");&lt;br /&gt;&lt;br /&gt;/* The Content ID in the code (Highlighted) must be same as Content ID in HTML */&lt;br /&gt;&lt;br /&gt;&amp;amp;image.AddHeader("Content-ID", "23abc@pc27");&lt;br /&gt;We have used this to display html image and text in email notifications. You could try it for documents and let us know if it works for you.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2388698495725806936-4891614045247340184?l=harshachowdaryworld.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://harshachowdaryworld.blogspot.com/feeds/4891614045247340184/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2388698495725806936&amp;postID=4891614045247340184' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2388698495725806936/posts/default/4891614045247340184'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2388698495725806936/posts/default/4891614045247340184'/><link rel='alternate' type='text/html' href='http://harshachowdaryworld.blogspot.com/2009/06/to-write-images-along-with-html-text_26.html' title='To write Images along with HTML text into a file created in an App Engine in PeopleSoft'/><author><name>Sri Harsha</name><uri>http://www.blogger.com/profile/07055600374301477821</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://2.bp.blogspot.com/_cv2CfEeLpVU/Sl7x0ilfPHI/AAAAAAAAAgE/e3fgUdRlTv8/S220/tin.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2388698495725806936.post-6741944337346533165</id><published>2009-06-26T02:11:00.002-07:00</published><updated>2009-08-18T23:21:17.591-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Reasons why PeopleSoft  does not recomd SQLEXEC()'/><category scheme='http://www.blogger.com/atom/ns#' term='PepleCode'/><title type='text'>Reasons why PeopleSoft  does not recomd SQLEXEC()</title><content type='html'>PS does not recommend sqlexec(), to avoid direct database calls. As the main reason for 3 tier architecture was to execute the business logic on the application server so that the application can be made database independent. This means if you want to change the database of any application from one vendor to another, you should be able to do it easily.&lt;br /&gt;    &lt;br /&gt;If you use sqlexec() calls, this purpose is not met as you may use sql which is very specific to the database. However if you use Peoplesoft way of creating a record, for example&lt;br /&gt;      &lt;br /&gt;RC_CASE is record with key as CASE_ID&lt;br /&gt;   &lt;br /&gt;Local record &amp;amp;lrec = createrecord(record.rc_case);&lt;br /&gt;&amp;amp;lrec.case_id.value = 123;&lt;br /&gt;      &lt;br /&gt;Now if you want to select from RC_CASE, you would use sqlexec() as sqlexec("select case_closed from ps_rc_case where case_id=:1",123,&amp;amp;caseclos);&lt;br /&gt;     &lt;br /&gt;Instead you can also use the record instance as&lt;br /&gt;&amp;amp;lrec.selectbykey();&lt;br /&gt;     &lt;br /&gt;The above will populate the rc_case record with all the values and you can use it. Also in this case Peoplesoft forms the sql based on the database, so if the organization using this application decides to change the database from Oracle to MS-SQL Server, you will not have to change the code for above.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2388698495725806936-6741944337346533165?l=harshachowdaryworld.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://harshachowdaryworld.blogspot.com/feeds/6741944337346533165/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2388698495725806936&amp;postID=6741944337346533165' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2388698495725806936/posts/default/6741944337346533165'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2388698495725806936/posts/default/6741944337346533165'/><link rel='alternate' type='text/html' href='http://harshachowdaryworld.blogspot.com/2009/06/reasons-why-peoplesoft-does-not-recomd.html' title='Reasons why PeopleSoft  does not recomd SQLEXEC()'/><author><name>Sri Harsha</name><uri>http://www.blogger.com/profile/07055600374301477821</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://2.bp.blogspot.com/_cv2CfEeLpVU/Sl7x0ilfPHI/AAAAAAAAAgE/e3fgUdRlTv8/S220/tin.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2388698495725806936.post-5100568065277409024</id><published>2009-06-26T02:11:00.001-07:00</published><updated>2009-06-26T02:11:46.561-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='You are not authorized for this page error in PeopleSoft'/><title type='text'>You are not authorized for this page error in PeopleSoft</title><content type='html'>These are the steps you will have to follow further to avoid the error:&lt;br /&gt;a)      Go to Peopletools &gt; Portal &gt; Structure and Content. (Navigate to your component)&lt;br /&gt;b)      Go to security tab&lt;br /&gt;c)       Change the security to public(makes all permission list to go) and now again Permission List access (making all permission list to reappear).&lt;br /&gt;d)      Save the page&lt;br /&gt;e)      Check if the Permission list is shown after the save..&lt;br /&gt;f)       Now sign-out and delete the application server and browser cache.&lt;br /&gt;g)      Try login again and access the page.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2388698495725806936-5100568065277409024?l=harshachowdaryworld.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://harshachowdaryworld.blogspot.com/feeds/5100568065277409024/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2388698495725806936&amp;postID=5100568065277409024' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2388698495725806936/posts/default/5100568065277409024'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2388698495725806936/posts/default/5100568065277409024'/><link rel='alternate' type='text/html' href='http://harshachowdaryworld.blogspot.com/2009/06/you-are-not-authorized-for-this-page.html' title='You are not authorized for this page error in PeopleSoft'/><author><name>Sri Harsha</name><uri>http://www.blogger.com/profile/07055600374301477821</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://2.bp.blogspot.com/_cv2CfEeLpVU/Sl7x0ilfPHI/AAAAAAAAAgE/e3fgUdRlTv8/S220/tin.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2388698495725806936.post-6870143129235462419</id><published>2009-06-26T02:10:00.002-07:00</published><updated>2009-06-26T02:11:11.261-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='XML navigations Creating the data Source through PS QUERY (Reporting Tools) in PeopleSoft'/><title type='text'>XML navigations Creating the data Source through PS QUERY (Reporting Tools) in PeopleSoft</title><content type='html'>Creating the data Source through PS QUERY (Reporting Tools)&lt;br /&gt;   &lt;br /&gt;&lt;br /&gt; Defining Data source:&lt;br /&gt;&lt;br /&gt;1.Click on Reporting Tools.&lt;br /&gt;2.Click on XML Publisher.&lt;br /&gt;3.Click on Data Source.&lt;br /&gt;4.Click on Add a New Value.&lt;br /&gt;5.Select the Data Source type as PS Query.&lt;br /&gt;6.In Data Source ID select ur Query (Ex:HARSHA_QRY)&lt;br /&gt;7.Click on ADD.&lt;br /&gt;8.Enter the Description Name (Ex:Harsha)&lt;br /&gt;9.Selct the Object Owner ID as Human Resource.&lt;br /&gt;10.Click on Save.&lt;br /&gt;&lt;br /&gt;Step2: Defining Data Source&lt;br /&gt;&lt;br /&gt;11.In the Related Files--&gt;Sample Data File--&gt;Click on Generate&lt;br /&gt;12.In the Related Files--&gt;Schema File--&gt;Click on Generate.&lt;br /&gt;13.Click on Save.&lt;br /&gt;14.Open the XML file and Save As Harsha1_Qry on Desktop.&lt;br /&gt;&lt;br /&gt;Step3: Building/Creating Template:&lt;br /&gt;&lt;br /&gt;1.Open MS Word.&lt;br /&gt;2.Click On Add-Ins.&lt;br /&gt;3.Click on Template Builder--&gt;Data--&gt;Load XML data.&lt;br /&gt;4.Click on Template Builder--&gt;Insert--&gt;Table/ Form&lt;br /&gt;5.Drag and dorp the Rows in to Template Work sapce and click on All Nodes.&lt;br /&gt;4.Click on Ok.&lt;br /&gt;5.Save the MS Wrod sheet with same name given to the XML(HARSHA_QRY) with RTF&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Step4: CLICK ON REPORT DEFINITION&lt;br /&gt;&lt;br /&gt;1.Select the Existing saved Report(HARSHA_QRY)&lt;br /&gt;2.In the Object owner Id make it empty.&lt;br /&gt;3.Clickon template tab&lt;br /&gt;4.Change the status to Active.&lt;br /&gt;5.Click on Upload.&lt;br /&gt;6.Selct the Existing Word doc&lt;br /&gt;7.Click on Save.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;CLICK ON QUERY REPORT VIEWER&lt;br /&gt;&lt;br /&gt;1.In the Query Report Viewer select ur existing report.&lt;br /&gt;2.Click on View Report.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2388698495725806936-6870143129235462419?l=harshachowdaryworld.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://harshachowdaryworld.blogspot.com/feeds/6870143129235462419/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2388698495725806936&amp;postID=6870143129235462419' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2388698495725806936/posts/default/6870143129235462419'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2388698495725806936/posts/default/6870143129235462419'/><link rel='alternate' type='text/html' href='http://harshachowdaryworld.blogspot.com/2009/06/xml-navigations-creating-data-source.html' title='XML navigations Creating the data Source through PS QUERY (Reporting Tools) in PeopleSoft'/><author><name>Sri Harsha</name><uri>http://www.blogger.com/profile/07055600374301477821</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://2.bp.blogspot.com/_cv2CfEeLpVU/Sl7x0ilfPHI/AAAAAAAAAgE/e3fgUdRlTv8/S220/tin.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2388698495725806936.post-8358099689484997346</id><published>2009-06-26T02:10:00.001-07:00</published><updated>2009-06-26T02:10:34.775-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Creating Component Interface in Application Designer and giving permissions to Component Interface in PeopleSoft'/><title type='text'>Creating Component Interface in Application Designer and giving permissions to Component Interface in PeopleSoft</title><content type='html'>Creating Component Interface in Application Designer:&lt;br /&gt;1. Open new Component Interface.&lt;br /&gt;2. Select the Component&lt;br /&gt;3. Save the Component Interface with _CI.&lt;br /&gt;4. Drag and drop the component Interface in to the Application Engine Programs&lt;br /&gt;   (Which generates the People code automatically. Edit it )&lt;br /&gt;&lt;br /&gt;To test the component Interface:&lt;br /&gt;1. Right click Component Interface&lt;br /&gt;2. Click on Test Component Interface.&lt;br /&gt;&lt;br /&gt;Steps to give permissions to CI:&lt;br /&gt;1. People Tools--&gt;Security--&gt;Permissions &amp;amp; Roles--&gt;Permission Lists&lt;br /&gt;2. Add HCCPFGALLP (Federal all pages)&lt;br /&gt;3. Click on Component Interface tab.&lt;br /&gt;4. Add the Component interface.&lt;br /&gt;5. Select thr Coponent Interface and click on Edit.&lt;br /&gt;6. Click on Full Access and click on Ok.&lt;br /&gt;7. Save it.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2388698495725806936-8358099689484997346?l=harshachowdaryworld.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://harshachowdaryworld.blogspot.com/feeds/8358099689484997346/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2388698495725806936&amp;postID=8358099689484997346' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2388698495725806936/posts/default/8358099689484997346'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2388698495725806936/posts/default/8358099689484997346'/><link rel='alternate' type='text/html' href='http://harshachowdaryworld.blogspot.com/2009/06/creating-component-interface-in.html' title='Creating Component Interface in Application Designer and giving permissions to Component Interface in PeopleSoft'/><author><name>Sri Harsha</name><uri>http://www.blogger.com/profile/07055600374301477821</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://2.bp.blogspot.com/_cv2CfEeLpVU/Sl7x0ilfPHI/AAAAAAAAAgE/e3fgUdRlTv8/S220/tin.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2388698495725806936.post-1786486225096644128</id><published>2009-06-26T02:09:00.003-07:00</published><updated>2009-06-26T02:09:59.972-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Steps to replace DropDownbox in place of Prompt table and Inserting a static Image into a page in PeopleSoft'/><title type='text'>Steps to replace DropDownbox in place of Prompt table and Inserting a static Image into a page in PeopleSoft</title><content type='html'>STEPS TO FRO DROP DOWN BOX IN PLACE OF PROMPT TABLE&lt;br /&gt;&lt;br /&gt;1.Delete the filed prompt button from the page (counrty)&lt;br /&gt;2.Click on Insert--&gt;Drop Down List box&lt;br /&gt;3.Double click on the drop down list box.&lt;br /&gt;  Select the record name:TIN1_EMP_TBL&lt;br /&gt;  Select the Field Name:TIN1_COUNTRY&lt;br /&gt;  Select the radio button :Prompt Table Field.&lt;br /&gt;  Select the Feild as TIN1_COUNTRY from the drop down list in Prompt Table Field&lt;br /&gt;4.Click on OK.&lt;br /&gt;5.Save the project.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;STEPS FOR INSERTING THE STATIC IMAGE IN TO THE PAGE&lt;br /&gt;1.Open a new Image (Ctrl+N--&gt;Image)&lt;br /&gt;  Save it and click on F7&lt;br /&gt;2.Click on Insert--&gt;Static Image&lt;br /&gt;3.Double click on it  and browse the Image.&lt;br /&gt;4.Click on OK.&lt;br /&gt;5.Save it.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2388698495725806936-1786486225096644128?l=harshachowdaryworld.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://harshachowdaryworld.blogspot.com/feeds/1786486225096644128/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2388698495725806936&amp;postID=1786486225096644128' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2388698495725806936/posts/default/1786486225096644128'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2388698495725806936/posts/default/1786486225096644128'/><link rel='alternate' type='text/html' href='http://harshachowdaryworld.blogspot.com/2009/06/steps-to-replace-dropdownbox-in-place.html' title='Steps to replace DropDownbox in place of Prompt table and Inserting a static Image into a page in PeopleSoft'/><author><name>Sri Harsha</name><uri>http://www.blogger.com/profile/07055600374301477821</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://2.bp.blogspot.com/_cv2CfEeLpVU/Sl7x0ilfPHI/AAAAAAAAAgE/e3fgUdRlTv8/S220/tin.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2388698495725806936.post-5455888780636559779</id><published>2009-06-26T02:09:00.001-07:00</published><updated>2009-06-26T02:09:29.782-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Steps for creating Secondary page with Push Button'/><category scheme='http://www.blogger.com/atom/ns#' term='Grid and Sate Record in PeopleSoft'/><title type='text'>Steps for creating Secondary page with Push Button, Grid and Sate Record in PeopleSoft</title><content type='html'>Creating Secondary Page With Push Button:&lt;br /&gt;--&gt;Create the requried Fields(Ex:Email,Alternative Adress, Phone No)&lt;br /&gt;--&gt;Drag and drop the field in the Record.&lt;br /&gt;--&gt;Open New Page--&gt;Right Click--&gt;Select Page Properties--&gt;Select Secondary Page fro the drop down box&lt;br /&gt;--&gt;From the record Drag &amp;amp; Drop the Email to the Secondary Page&lt;br /&gt;--&gt;Save it&lt;br /&gt;--&gt;Open the Mian Page--&gt;--&gt;Click on Insert--&gt;Push Button/Hyper Link--&gt;Doubble click on the icon in the Main page&lt;br /&gt;--&gt;Select the destination as:secondary page&lt;br /&gt;--&gt;Record Name as:HARSHA_EMP_TBL\&lt;br /&gt;--&gt;Field Name as:HARSHA_EMP_EMAIL&lt;br /&gt;--&gt;Secondary Page as:HARSHA_EMAIL_PNL&lt;br /&gt;--&gt;Click xon the Label tab--&gt;Select Standard Text&lt;br /&gt;--&gt;Select Static Text&lt;br /&gt;--&gt;Enter the Text as: Email&lt;br /&gt;--&gt;Save it&lt;br /&gt;&lt;br /&gt;Creating Grid:&lt;br /&gt;1.Open a new Page.&lt;br /&gt;2.Click on Insert--&gt;Grid&lt;br /&gt;3.Now drag and drop the records in to the grid&lt;br /&gt;4.Save it (Ex:-HARSHA_EMP_PNL)&lt;br /&gt;5.Click on F7.&lt;br /&gt;&lt;br /&gt;Creating State Record:&lt;br /&gt;1.Open a New Record.&lt;br /&gt;2.Drag and drop the necessary field in to it&lt;br /&gt;3.Save it with _AET extension (Ex:-HARSHA_EMP_AET)&lt;br /&gt;4.Click on F7.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2388698495725806936-5455888780636559779?l=harshachowdaryworld.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://harshachowdaryworld.blogspot.com/feeds/5455888780636559779/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2388698495725806936&amp;postID=5455888780636559779' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2388698495725806936/posts/default/5455888780636559779'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2388698495725806936/posts/default/5455888780636559779'/><link rel='alternate' type='text/html' href='http://harshachowdaryworld.blogspot.com/2009/06/steps-for-creating-secondary-page-with.html' title='Steps for creating Secondary page with Push Button, Grid and Sate Record in PeopleSoft'/><author><name>Sri Harsha</name><uri>http://www.blogger.com/profile/07055600374301477821</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://2.bp.blogspot.com/_cv2CfEeLpVU/Sl7x0ilfPHI/AAAAAAAAAgE/e3fgUdRlTv8/S220/tin.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2388698495725806936.post-8233567840429592232</id><published>2009-06-26T02:08:00.001-07:00</published><updated>2009-06-26T02:08:49.560-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Steps for creating Run Control ID in PeopleSoft'/><title type='text'>Steps for creating Run Control ID in PeopleSoft</title><content type='html'>Creating Run Control Page from the Existing Fields&lt;br /&gt;Open New Page.&lt;br /&gt;Click on insert --&gt;Subpage&lt;br /&gt;Select Subpage as PRCSRUNCNTL_SBP&lt;br /&gt;Select Record Name as PRCSRUNCNTL&lt;br /&gt;Click on ok&lt;br /&gt;Save it as HARSHA_RNCTL_PNL&lt;br /&gt;Click on F7.&lt;br /&gt;&lt;br /&gt;Creating Own Run Control Page:&lt;br /&gt;1.Click on Insert--&gt;OPRID&lt;br /&gt;2.Click on Insert--&gt;RUNCNTLID.&lt;br /&gt;3.Click On New--&gt;Field(Employee ID)&lt;br /&gt;4.Click on New--&gt;Record&lt;br /&gt;5.Drag and drop all the 3 records in to it.&lt;br /&gt;6.Make both RUNCNTLID and EMPID as Keys&lt;br /&gt;7.Select the Employee ID--&gt;Double click onit.&lt;br /&gt;8.Click on Edit Tab.&lt;br /&gt;9.Select the Radio Button Table Edit.&lt;br /&gt;10.Select Prompt Table as SRI_EMP1_VW.&lt;br /&gt;11.Save It.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2388698495725806936-8233567840429592232?l=harshachowdaryworld.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://harshachowdaryworld.blogspot.com/feeds/8233567840429592232/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2388698495725806936&amp;postID=8233567840429592232' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2388698495725806936/posts/default/8233567840429592232'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2388698495725806936/posts/default/8233567840429592232'/><link rel='alternate' type='text/html' href='http://harshachowdaryworld.blogspot.com/2009/06/steps-for-creating-run-control-id-in.html' title='Steps for creating Run Control ID in PeopleSoft'/><author><name>Sri Harsha</name><uri>http://www.blogger.com/profile/07055600374301477821</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://2.bp.blogspot.com/_cv2CfEeLpVU/Sl7x0ilfPHI/AAAAAAAAAgE/e3fgUdRlTv8/S220/tin.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2388698495725806936.post-5905806268274290567</id><published>2009-06-26T02:07:00.000-07:00</published><updated>2009-06-26T02:08:07.677-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Steps for creating Field'/><category scheme='http://www.blogger.com/atom/ns#' term='Page'/><category scheme='http://www.blogger.com/atom/ns#' term='Record'/><category scheme='http://www.blogger.com/atom/ns#' term='Component and Menu in PeopleSoft'/><title type='text'>Steps for creating Field,Record,Page,Component and Menu in PeopleSoft</title><content type='html'>Creating the Fields:&lt;br /&gt;--&gt;Open the Application Designer.&lt;br /&gt;--&gt;Click on File-&gt;New&lt;br /&gt;--&gt;In the New Definition Pop Up Window Select Field and double click on it.&lt;br /&gt;--&gt;Select the Field Type as Character.&lt;br /&gt;--&gt;Select the appropriate Field Length (Ex:-20)&lt;br /&gt;--&gt;In the Label ID give the appropriate name (Ex:-AST_HARSHA_EMP_ID)&lt;br /&gt;--&gt;In the Long Name give the appropriate name (Ex:-Employee Name)&lt;br /&gt;--&gt;In the Short Name give the appropriate name (Ex:-EName)&lt;br /&gt;--&gt;Save the Project with appropriate name (Ex:-AST_HARSHA_EMP_ID)&lt;br /&gt;--&gt;Click on Insert--&gt;Click on Current Definition in to project or Hit F7.&lt;br /&gt;--&gt;REPEAT THE SAME ABOVE PROCESS FOR EMPLOYEE NAME.&lt;br /&gt;&lt;br /&gt;Creating a Record: (TBL)&lt;br /&gt;--&gt;Click on File--&gt;New&lt;br /&gt;--&gt;In the New Definition Pop Up Window Select Record and double click on it.&lt;br /&gt;--&gt;Drag and drop the Emp_Id and Emp_Name from the Fields.&lt;br /&gt;--&gt;Double click on the Record's and the Record Field Properties Pop Up Window Opens.&lt;br /&gt;--&gt;In Record Field Properties Pop Up Window Select the Key Checkbox and click on OK.(This is Option which is used to establish the relation)&lt;br /&gt;--&gt;Click on Record Type and select Sql Table radio button.&lt;br /&gt;--&gt;Save as AST_HARSHA_TBL&lt;br /&gt;--&gt;Click on Ok&lt;br /&gt;--&gt;Click on Insert-&gt;Click on Current Definition in to project or Hit F7.&lt;br /&gt; --&gt;From the Records select AST_HARSHA_TBL right click and click on Build--&gt;In Build Options select the checkbox's Create Tables in Build Options and Execute SQL now in Build Execute Options&lt;br /&gt;--&gt;Click on Build.&lt;br /&gt;--&gt;After the process getting completed close the Build Progress window&lt;br /&gt;--&gt;Open SQL server&lt;br /&gt;--&gt;Execute the SQL statement by selecting the appropriate database (Ex:-HCMTRA90)&lt;br /&gt;--&gt;select * from PS_AST_HARSHA_TBL  (Hit on F5).&lt;br /&gt; Creating a Page: (PNL)&lt;br /&gt;--&gt;Click on File--&gt;New&lt;br /&gt;--&gt;In the New Definition Pop Up Window Select Page and double click on it.&lt;br /&gt;--&gt;Resize the Page by Right click-&gt;Page Properties--&gt;Use--&gt;Select the required page size and click on Ok.&lt;br /&gt;--&gt;Drag and Drop the Records&lt;br /&gt;--&gt;Align the page&lt;br /&gt;--&gt;save the page as AST_HARSHA-PNL&lt;br /&gt;--&gt;Click on F7&lt;br /&gt;Inserting the Scrolling : ( Which allows inserting Multiple Values at run time)&lt;br /&gt;--&gt;Click on Insert&lt;br /&gt;--&gt;Click On Scroll Area&lt;br /&gt;--&gt;Double click on the scrolled area.&lt;br /&gt;--&gt;Click on Label&lt;br /&gt;--&gt;Uncheck the Display footer check box.&lt;br /&gt;--&gt;Click on the Properties of Display Title.&lt;br /&gt;--&gt;In the Text enter the Name to be displayed.&lt;br /&gt;--&gt;Click on Ok.&lt;br /&gt;Components:&lt;br /&gt;--&gt;Click on File--&gt;New&lt;br /&gt;--&gt;In the New Definition Pop Up Window Select Component and double click on it.&lt;br /&gt;--&gt;Drag  and drop the Page Component.&lt;br /&gt;--&gt;Re Name the Item Label (Ex:-Harsha Employee Id)&lt;br /&gt;--&gt;Save it as AST_HARSHA_CMP&lt;br /&gt;--&gt;Then in the Component Properties in the Search Record Field select the file (Ex:-AST_HARSHA_TBL)&lt;br /&gt;--&gt;Click on Ok.&lt;br /&gt;--&gt;Save it as AST_HARSHA_CMP&lt;br /&gt;--&gt;Hit on F7.&lt;br /&gt;--&gt;Select the component file(Ex:-AST_STUDENT_TBL).&lt;br /&gt;--&gt;Right Click and click on Build--&gt;Click on Yes&lt;br /&gt;--&gt;Select the checkbox create tables in Build Options.&lt;br /&gt;--&gt;Select the Radio Button Execute SQL now in Buid Execute Options&lt;br /&gt;--&gt;Click On settings&lt;br /&gt;--&gt; Click On Logging tab&lt;br /&gt;--&gt;Select/enable the Log Settings check Box&lt;br /&gt;--&gt;Click on Ok.&lt;br /&gt;--&gt;Click on Scripts Tab&lt;br /&gt;--&gt;Select the Radio Button Output to single file and in script file names give the path to store the       scripts as separate files&lt;br /&gt;--&gt;Click On ok&lt;br /&gt;--&gt;Click On Build.&lt;br /&gt;Creating Menu:&lt;br /&gt;--&gt;Click on File--&gt;New&lt;br /&gt;--&gt;In the New Definition Pop Up Window Select Menu and double click on it.&lt;br /&gt;--&gt;Select Standard from the New Menu and click on Ok.&lt;br /&gt;--&gt;Double click on the Dotted area.&lt;br /&gt;--&gt;In the Bar Item Properties pop Up window Name it as AST_HARSHA_PROCESS&lt;br /&gt;--&gt;Name the label as Harsha.&lt;br /&gt;--&gt;From the component darg and drop the AST_HARSHA_CMP (GBL) in the process sub menu&lt;br /&gt;--&gt;save it as AST_HARSHA_MENU&lt;br /&gt;--&gt;Hit F7&lt;br /&gt;--&gt;Click on File--&gt;Click on save project--&gt;HARSHA_EMP&lt;br /&gt;--&gt;Select the process sub Menu--&gt;Right Click--&gt;Click on register Menu Item&lt;br /&gt;--&gt;Click on next&lt;br /&gt;--&gt;Select Folder Name as AST_HARSHA.&lt;br /&gt;--&gt;OBJECT OWNER ID: HHR  (Human Resource)&lt;br /&gt;--&gt;Select the check box Always use default node.&lt;br /&gt;--&gt;Click on Next&lt;br /&gt;--&gt;Click on Select and In Select Permission List --&gt;In Name field give as HCCPFGALLP&lt;br /&gt;--&gt;Click on Next&lt;br /&gt;--&gt;Select the Permission List Check Box&lt;br /&gt;--&gt;Click on Finish.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2388698495725806936-5905806268274290567?l=harshachowdaryworld.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://harshachowdaryworld.blogspot.com/feeds/5905806268274290567/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2388698495725806936&amp;postID=5905806268274290567' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2388698495725806936/posts/default/5905806268274290567'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2388698495725806936/posts/default/5905806268274290567'/><link rel='alternate' type='text/html' href='http://harshachowdaryworld.blogspot.com/2009/06/steps-for-creating-fieldrecordpagecompo.html' title='Steps for creating Field,Record,Page,Component and Menu in PeopleSoft'/><author><name>Sri Harsha</name><uri>http://www.blogger.com/profile/07055600374301477821</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://2.bp.blogspot.com/_cv2CfEeLpVU/Sl7x0ilfPHI/AAAAAAAAAgE/e3fgUdRlTv8/S220/tin.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2388698495725806936.post-4496014178934243170</id><published>2009-06-26T02:06:00.002-07:00</published><updated>2009-06-26T02:07:25.330-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Sub Page and Secondary Page In PeopleSoft'/><category scheme='http://www.blogger.com/atom/ns#' term='Steps for creating a Sub Record'/><title type='text'>Steps for creating a Sub Record, Sub Page and Secondary Page In PeopleSoft</title><content type='html'>Steps for creating a sub record:&lt;br /&gt;1. Create necessary fields.&lt;br /&gt;2. Open a new record and drag and drop the necessary fields in to the record&lt;br /&gt;3. Save it with _SBR and Build the Project.&lt;br /&gt;4. Open the Existing record which we want to insert the sub record into it.&lt;br /&gt;5. Click on Insert--&gt;Subrecord&lt;br /&gt;6. Select the sub record (ex:AST_STU_SBP) and click on insert.&lt;br /&gt;7. Build the project.&lt;br /&gt;8. Save it.&lt;br /&gt;&lt;br /&gt;Steps for creating a sub page:&lt;br /&gt;1. Click on New--&gt;Page&lt;br /&gt;2. Right click on the page and select Sub Page.&lt;br /&gt;3. Drag and drop the necessary fields from the Sub record&lt;br /&gt;4. Save it with _SBP&lt;br /&gt;5. Click on Insert--&gt;Subpage&lt;br /&gt;6. Select the Sub page from the list and click on Ok&lt;br /&gt;Steps for creating secondary page&lt;br /&gt;1. Drag and drop all the necessary fields in to the main record&lt;br /&gt;2. Open a new page--&gt;Right click and select Secondary page&lt;br /&gt;3. Drag and drop all the necessary fields in to it.&lt;br /&gt;4. Save it with _SEC.&lt;br /&gt;5. Click on Insert--&gt;hyperlink/push button.&lt;br /&gt;6. Select destination as Secondary PAge.&lt;br /&gt;7. Record name tbl&lt;br /&gt;8. select the secondary page.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2388698495725806936-4496014178934243170?l=harshachowdaryworld.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://harshachowdaryworld.blogspot.com/feeds/4496014178934243170/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2388698495725806936&amp;postID=4496014178934243170' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2388698495725806936/posts/default/4496014178934243170'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2388698495725806936/posts/default/4496014178934243170'/><link rel='alternate' type='text/html' href='http://harshachowdaryworld.blogspot.com/2009/06/steps-for-creating-sub-record-sub-page.html' title='Steps for creating a Sub Record, Sub Page and Secondary Page In PeopleSoft'/><author><name>Sri Harsha</name><uri>http://www.blogger.com/profile/07055600374301477821</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://2.bp.blogspot.com/_cv2CfEeLpVU/Sl7x0ilfPHI/AAAAAAAAAgE/e3fgUdRlTv8/S220/tin.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2388698495725806936.post-3105816967431622857</id><published>2009-06-26T02:06:00.001-07:00</published><updated>2009-06-26T02:06:48.015-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Scheduling SQR report through the Process Scheduler'/><title type='text'>Scheduling SQR report through the Process Scheduler</title><content type='html'>Process Scheduler:&lt;br /&gt;Scheduling a Process :&lt;br /&gt;--&gt;Click on People Tools&lt;br /&gt;--&gt;Process Scheduler-&gt;Processes&lt;br /&gt;--&gt;Click on Add a New Value&lt;br /&gt;--&gt;Select the process type as SQR Report.&lt;br /&gt;--&gt;Enter the process name (Ex:-Harsha1)&lt;br /&gt;--&gt;Click on ADD&lt;br /&gt;--&gt;Select the Process Definition tab&lt;br /&gt;--&gt;Select the Run control ID that u have created for the existing project (SRI_RUNCNTRL2_CMP)&lt;br /&gt;--&gt;Select the Process Groups as ALL PAGES&lt;br /&gt;--&gt;Save it&lt;br /&gt;--&gt;Now click on Astute Business Solutions5 Folder&lt;br /&gt;--&gt;Select your name and click on the project&lt;br /&gt;Running a Report through the Process Scheduler&lt;br /&gt;--&gt;Open the http://astsrvr2:10000/psp/HCMTRA90/EMPLOYEE/HRMS/?cmd=logout (PS Sign on page)&lt;br /&gt;--&gt;Click on PeopleTools&lt;br /&gt;--&gt;Click on Process Scheduler&lt;br /&gt;--&gt;System Process Requests&lt;br /&gt;--&gt;Click on Add a New Value (Ex:1)&lt;br /&gt;--&gt;Click on Add&lt;br /&gt;--&gt;Click on Run&lt;br /&gt;--&gt;Select check box Cross reference window listing. (SQR Reports)&lt;br /&gt;--&gt;Click on Ok.&lt;br /&gt;--&gt;Click on Process Monitor (to check the Process status)&lt;br /&gt;--&gt;Click on Details on any of the running Process.&lt;br /&gt;--&gt;Click on View Log/Trace&lt;br /&gt;--&gt;Click on PDF Url (Ex:XRFWIN_2744.PDF)(It opens the Report in PDF from)&lt;br /&gt;&lt;br /&gt;Creating New Permission Lists:&lt;br /&gt;--&gt;Open the PS SignOn page.&lt;br /&gt;--&gt;Click on People Tools.&lt;br /&gt;--&gt;Click On security.&lt;br /&gt;--&gt;Click o permissions &amp;amp; Roles.&lt;br /&gt;--&gt;Click on Permission Lists.&lt;br /&gt;--&gt;Click on Add a New Value.&lt;br /&gt;--&gt;Enter the description.&lt;br /&gt;--&gt;In Permission List Home Page Select Human Resources.&lt;br /&gt;--&gt;Click on Save.&lt;br /&gt;--&gt;Click on Page Tab.&lt;br /&gt;--&gt;Select the Menu Name (Your menu name)&lt;br /&gt;--&gt;Click on Edit components&lt;br /&gt;--&gt;Click on Edit pages&lt;br /&gt;--&gt;Click on select all&lt;br /&gt;--&gt;Click on Ok.&lt;br /&gt;--&gt;Click on Save.&lt;br /&gt;--&gt;Click on PeopleTools Tab.&lt;br /&gt;--&gt;In the PeopleTools Permissions select the necessary.&lt;br /&gt;--&gt;In Data Archival Select the necessary&lt;br /&gt;--&gt;Click on Save.&lt;br /&gt;--&gt;Click on Process Tab&lt;br /&gt;--&gt;Click on Process Group Permissions&lt;br /&gt;--&gt;Select the ALLPAGES, ALLPANLS, FEDALL.&lt;br /&gt;--&gt;In the Allow Process Request:&lt;br /&gt;--&gt;In View By select Owner and In Update By select Owner.&lt;br /&gt;--&gt;Click on Ok.&lt;br /&gt;--&gt;Click on save.&lt;br /&gt;--&gt;Click on Web Libraries Tab.&lt;br /&gt;--&gt;Select WEBLIB PORTAL.&lt;br /&gt;--&gt;Click On save&lt;br /&gt;--&gt;Now Click on roles&lt;br /&gt;--&gt;Click on Add New Role.&lt;br /&gt;--&gt;Select the Permission List (Ex:Harsha)&lt;br /&gt;--&gt;Click On save&lt;br /&gt;--&gt;Click on user profiles.&lt;br /&gt;--&gt;Click on Roles Tab.&lt;br /&gt;--&gt;Click On +&lt;br /&gt;--&gt;Select the Role Name and select it.&lt;br /&gt;--&gt;Click on Save.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2388698495725806936-3105816967431622857?l=harshachowdaryworld.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://harshachowdaryworld.blogspot.com/feeds/3105816967431622857/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2388698495725806936&amp;postID=3105816967431622857' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2388698495725806936/posts/default/3105816967431622857'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2388698495725806936/posts/default/3105816967431622857'/><link rel='alternate' type='text/html' href='http://harshachowdaryworld.blogspot.com/2009/06/scheduling-sqr-report-through-process.html' title='Scheduling SQR report through the Process Scheduler'/><author><name>Sri Harsha</name><uri>http://www.blogger.com/profile/07055600374301477821</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://2.bp.blogspot.com/_cv2CfEeLpVU/Sl7x0ilfPHI/AAAAAAAAAgE/e3fgUdRlTv8/S220/tin.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2388698495725806936.post-7618910033978140602</id><published>2009-06-26T02:05:00.000-07:00</published><updated>2009-06-26T02:06:13.930-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='PeopleSoft WorkFlow Navigations'/><title type='text'>PeopleSoft WorkFlow Navigations</title><content type='html'>WorkFlow:-&lt;br /&gt;TO CREATE THE WORKFLOW IN APPLICATION DESIGNER&lt;br /&gt;INSERTING AN WORKLIST INTO THE EXISTING PROJECT:&lt;br /&gt;1. Before that inserting the worklist&lt;br /&gt;2. Copy the existing worklist from R_TT_WL&lt;br /&gt;3. Save it as SRI_EMP_WL&lt;br /&gt;4. Click on F7&lt;br /&gt;CREATING THE BUSINESS PROCESS:&lt;br /&gt;1. Click on New--&gt;Business Process.&lt;br /&gt;2. Drag and drop the Activity1 on to the work space.&lt;br /&gt;3. Drag and drop the Activity2 on to the work space.&lt;br /&gt;4. Link Both Activity1 and Activity2&lt;br /&gt;5. Save the Business process as SRI_EMP_BP.&lt;br /&gt;6. Click on F7.&lt;br /&gt;Creating Activity&lt;br /&gt;1. Open an Existing Project.&lt;br /&gt;2. New--&gt; Activity&lt;br /&gt;Click on the Step (Blue color) and Click on the Work space.&lt;br /&gt;--&gt;Double click on the step and Name it as SHE_EMP_ACT1&lt;br /&gt;--&gt;Give the required Icon Description.&lt;br /&gt;--&gt;Click on the Attributes and Select the Menu, Bar, Item, Page, Action (as add) Names in the  project.&lt;br /&gt;--&gt;Click on Ok.&lt;br /&gt;Click on the Event (Yellow color) and Click on the Work space beside the step.&lt;br /&gt;--&gt;Double click on the Event&lt;br /&gt;--&gt;Name: SRI_EVENT and Icon Descr as SRI_EVENT.&lt;br /&gt;--&gt;Select the record name SRI_EMP_TBL.&lt;br /&gt;--&gt;Click on Edit Business Rules which opens a window. And write the following below code:&lt;br /&gt;&amp;amp;I=TriggerBusinessEvent(BUSPROCESS.bus_proc_name,BUSACTIVITY.activity_name,BUSEVENT.bus_event_name)&lt;br /&gt;--&gt;Save it.&lt;br /&gt;--&gt;Click on Ok.&lt;br /&gt;Click on the Worklist (Yellow color rectangle) and Click on the Work space beside the Event.&lt;br /&gt;--&gt;Double click on the Work List.&lt;br /&gt;--&gt;Name: Worklist and Icon Descr: Worklist.&lt;br /&gt;--&gt;Click on Attributes.&lt;br /&gt;--&gt;Select the worklist from the drop down list (SRI_EMP_WL).&lt;br /&gt;--&gt;Select the Business Process from the Drop downlist (SRI_EMP_Bp)&lt;br /&gt;--&gt;Select the Activity2 from the drop down list(SRI_EMP_ACT2)&lt;br /&gt;--&gt;Click on oK.&lt;br /&gt;--&gt;Click on Field Mapping.&lt;br /&gt;--&gt;Click on ADD&lt;br /&gt;--&gt;Select the Field name as OPRID and Map module as copy(by default)&lt;br /&gt;--&gt;Select the radio button Constant.&lt;br /&gt;--&gt;Give the name of the people who want to see the work report (Ex:SARAT)&lt;br /&gt;--&gt;Click on Ok.&lt;br /&gt;--&gt;Click on ADD.&lt;br /&gt;--&gt;Select the Field name as SRI_EMPAE_TBL and Map module as COPY&lt;br /&gt;--&gt;Select the radio button RecField. (sELECT THE FIELD NAME TO BE MAPPED)&lt;br /&gt;--&gt;Click on ok.&lt;br /&gt;---&gt;Click on the link(beside the ?) and point it on the Step towards the Event in the workspace and same to the Worklist.&lt;br /&gt;2. Again create another activity with only one event and save it as SRI_EMP_ACT2&lt;br /&gt;--&gt;Select the Menu Name as  ADMINISTER_WORKFORCE_(GBL)&lt;br /&gt;--&gt;Select Bar Name and Use&lt;br /&gt;--&gt;Item Name as  JOB_DATA&lt;br /&gt;--&gt;Page Name as EMPLOYEMENT_DATA&lt;br /&gt;--&gt;Action as  &amp;amp;UPDATE/DISPLAY&lt;br /&gt;--&gt;Click on Ok&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;NOTE:&lt;/span&gt;-&lt;span style="color: rgb(255, 0, 0); font-weight: bold;"&gt;IF WE GET SQL ERROR THEN CHECK OUT WITH THE BUSINESS PROCESS NAME&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2388698495725806936-7618910033978140602?l=harshachowdaryworld.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://harshachowdaryworld.blogspot.com/feeds/7618910033978140602/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2388698495725806936&amp;postID=7618910033978140602' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2388698495725806936/posts/default/7618910033978140602'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2388698495725806936/posts/default/7618910033978140602'/><link rel='alternate' type='text/html' href='http://harshachowdaryworld.blogspot.com/2009/06/peoplesoft-workflow-navigations.html' title='PeopleSoft WorkFlow Navigations'/><author><name>Sri Harsha</name><uri>http://www.blogger.com/profile/07055600374301477821</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://2.bp.blogspot.com/_cv2CfEeLpVU/Sl7x0ilfPHI/AAAAAAAAAgE/e3fgUdRlTv8/S220/tin.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2388698495725806936.post-8743458104936180809</id><published>2009-06-26T02:04:00.000-07:00</published><updated>2009-06-26T02:05:19.762-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='PeopleSoft Query Security Navigations'/><title type='text'>PeopleSoft Query Security Navigations</title><content type='html'>Query  Security:&lt;br /&gt;--&gt;Open http://Server/psp/XXXXX/EMPLOYEE/HRMS/h/?tab=DEFAULT (PS Sign On page)&lt;br /&gt;--&gt;Select PeopleTools&lt;br /&gt;--&gt;Select Security--&gt;Query Security&lt;br /&gt;--&gt;Click on Query Access Manager.&lt;br /&gt;--&gt;Click on Search.&lt;br /&gt;--&gt;Select the Access Group which is already exists in the database (ex:-AD ACESS GROUP-Admissions Access Group)    &lt;br /&gt;--&gt;Select any one of the Leaf Node.(Ex:-SCHOOL LOAD)&lt;br /&gt;--&gt;Click on insert child record.&lt;br /&gt;--&gt;Click on Search&lt;br /&gt;--&gt;Enter the table name (your own table name that u have created before)&lt;br /&gt;--&gt;Click on Look Up&lt;br /&gt;--&gt;Select the table (which u wants to add)&lt;br /&gt;--&gt;Click an Add.&lt;br /&gt;--&gt;Click on Save.&lt;br /&gt;--&gt;Click on Query Access List Cache under Menu.&lt;br /&gt;--&gt;Select the Enable Access List Cache&lt;br /&gt;--&gt;Click on Run.&lt;br /&gt;--&gt;Click on Ok.&lt;br /&gt;--&gt;Sign Out from PS Sign-in page.&lt;br /&gt;--&gt;Open the Application Designer.&lt;br /&gt;--&gt;Select Go--&gt;Click on Query.&lt;br /&gt;--&gt;The list of records will appear in the Left hand side.&lt;br /&gt;--&gt;Search your record which is added before.&lt;br /&gt;--&gt;Send Tree Change Message will be selected by default.&lt;br /&gt;--&gt;Click on OK.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2388698495725806936-8743458104936180809?l=harshachowdaryworld.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://harshachowdaryworld.blogspot.com/feeds/8743458104936180809/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2388698495725806936&amp;postID=8743458104936180809' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2388698495725806936/posts/default/8743458104936180809'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2388698495725806936/posts/default/8743458104936180809'/><link rel='alternate' type='text/html' href='http://harshachowdaryworld.blogspot.com/2009/06/peoplesoft-query-security-navigations.html' title='PeopleSoft Query Security Navigations'/><author><name>Sri Harsha</name><uri>http://www.blogger.com/profile/07055600374301477821</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://2.bp.blogspot.com/_cv2CfEeLpVU/Sl7x0ilfPHI/AAAAAAAAAgE/e3fgUdRlTv8/S220/tin.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2388698495725806936.post-686924248689249876</id><published>2009-06-26T02:03:00.000-07:00</published><updated>2009-06-26T02:04:22.040-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Creating the User Profiles and assigning the Roles and Permissions In PeopleSoft'/><title type='text'>Creating the User Profiles and assigning the Roles and Permissions:</title><content type='html'>Creating the Permission List  (Collection of roles)&lt;br /&gt;--&gt;Open the PS SignOn page.&lt;br /&gt;--&gt;Click on People Tools.&lt;br /&gt;--&gt;Click On security.&lt;br /&gt;--&gt;Click on permissions &amp;amp; Roles.&lt;br /&gt;--&gt;Click on Permission Lists.&lt;br /&gt;--&gt;Click on Add a New Value.&lt;br /&gt;--&gt;Enter the description.&lt;br /&gt;--&gt;In Permission List Homepage Select Human Resources.&lt;br /&gt;--&gt;Click on Save.&lt;br /&gt;--&gt;Click on Page Tab.&lt;br /&gt;--&gt;Select the Menu Name (Your menu name)&lt;br /&gt;--&gt;Click on Edit components&lt;br /&gt;--&gt;Click on Edit pages&lt;br /&gt;--&gt;Click on select all&lt;br /&gt;--&gt;Click on Ok.&lt;br /&gt;--&gt;Click on Save.&lt;br /&gt;--&gt;Click on PeopleTools Tab.&lt;br /&gt;--&gt;In the PeopleTools Permissions select the necessary.&lt;br /&gt;--&gt;In Data Archival Select the necessary&lt;br /&gt;--&gt;Click on Save.&lt;br /&gt;--&gt;Click on Process Tab&lt;br /&gt;--&gt;Click on Process Group Permissions&lt;br /&gt;--&gt;Select the ALLPAGES, ALLPANLS, FEDALL.&lt;br /&gt;--&gt;In the Allow Process Request:&lt;br /&gt;--&gt;In View By select Owner and In Update By select Owner.&lt;br /&gt;--&gt;Click on Ok.&lt;br /&gt;--&gt;Click on save.&lt;br /&gt;--&gt;Click on Web Libraries Tab.&lt;br /&gt;--&gt;Select WEBLIB PORTAL.&lt;br /&gt;--&gt;Click On save.&lt;br /&gt;Creating Roles (Role  is a collection of user profiles)&lt;br /&gt;--&gt;Now Click on Roles  &lt;br /&gt;--&gt;Click on Add New Role.&lt;br /&gt;--&gt;Select the Permission List (Ex:Harsha)&lt;br /&gt;--&gt;Click On save&lt;br /&gt;Creating User Profiles:&lt;br /&gt;--&gt;Click on User Profiles.&lt;br /&gt;--&gt;Click on user profiles.&lt;br /&gt;--&gt;Click on Roles Tab.&lt;br /&gt;--&gt;Click On +&lt;br /&gt;--&gt;Select the Role Name and select it.&lt;br /&gt;--&gt;Click on Save.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2388698495725806936-686924248689249876?l=harshachowdaryworld.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://harshachowdaryworld.blogspot.com/feeds/686924248689249876/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2388698495725806936&amp;postID=686924248689249876' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2388698495725806936/posts/default/686924248689249876'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2388698495725806936/posts/default/686924248689249876'/><link rel='alternate' type='text/html' href='http://harshachowdaryworld.blogspot.com/2009/06/creating-user-profiles-and-assigning.html' title='Creating the User Profiles and assigning the Roles and Permissions:'/><author><name>Sri Harsha</name><uri>http://www.blogger.com/profile/07055600374301477821</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://2.bp.blogspot.com/_cv2CfEeLpVU/Sl7x0ilfPHI/AAAAAAAAAgE/e3fgUdRlTv8/S220/tin.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2388698495725806936.post-8827847333263590617</id><published>2009-06-26T02:01:00.000-07:00</published><updated>2009-06-26T02:03:30.103-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Steps to Run the Appilaction Engine Program (Inbound/OutBound) Program through thr Process Scheduler'/><title type='text'>Steps to Run the Appilaction Engine Program (Inbound/OutBound) Program through thr Process Scheduler</title><content type='html'>In Application Designer:&lt;br /&gt;1. Open a New page.&lt;br /&gt;2. Save the page.&lt;br /&gt;3. Click on Insert--&gt;Subpage--&gt;PRCSRUNCNTL_SBP to PRCSRUNCNTL&lt;br /&gt;4. Save it.&lt;br /&gt;5. Drag and drop the Page into component and save it.&lt;br /&gt;6. Register the component.&lt;br /&gt;7. Open the existing menu and drag and drop the component into it.&lt;br /&gt;8. Save it.&lt;br /&gt;Process Scheduler:&lt;br /&gt;1. Open the PS signin page.&lt;br /&gt;2. Click on people tools--&gt;Process Scheduler--&gt;Process&lt;br /&gt;3. Click on Add a new value.&lt;br /&gt;4. Select the process type as Application Engine&lt;br /&gt;5. Enter the process name (ABC1_STU_AE)&lt;br /&gt;6. Click on Process Definition tab and enter the description (Sample student)&lt;br /&gt;7. Click on Process Definition Options and select the component (ABC1_STU_RUN_CMP).&lt;br /&gt;8. Select the Process Groups as ALLPAGES&lt;br /&gt;9. Save it.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2388698495725806936-8827847333263590617?l=harshachowdaryworld.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://harshachowdaryworld.blogspot.com/feeds/8827847333263590617/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2388698495725806936&amp;postID=8827847333263590617' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2388698495725806936/posts/default/8827847333263590617'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2388698495725806936/posts/default/8827847333263590617'/><link rel='alternate' type='text/html' href='http://harshachowdaryworld.blogspot.com/2009/06/steps-to-run-appilaction-engine-program.html' title='Steps to Run the Appilaction Engine Program (Inbound/OutBound) Program through thr Process Scheduler'/><author><name>Sri Harsha</name><uri>http://www.blogger.com/profile/07055600374301477821</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://2.bp.blogspot.com/_cv2CfEeLpVU/Sl7x0ilfPHI/AAAAAAAAAgE/e3fgUdRlTv8/S220/tin.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2388698495725806936.post-3162687002110686849</id><published>2009-06-26T01:57:00.000-07:00</published><updated>2009-06-26T01:58:17.480-07:00</updated><title type='text'>Employee Change Request Application Enginer Code</title><content type='html'>&amp;amp;MYFILE = GetFile("C:\Documents and Settings\Trainees.AST\Desktop\CR2.csv", "R", %FilePath_Absolute);&lt;br /&gt;&amp;amp;MYFILE1 = GetFile("C:\Documents and Settings\Trainees.AST\Desktop\EMPChange Request AE.TXT", "W", %FilePath_Absolute);&lt;br /&gt;&amp;amp;array = CreateArrayRept("", 0);&lt;br /&gt;&amp;amp;array3 = CreateArrayRept("", 0);&lt;br /&gt;&amp;amp;array4 = CreateArrayRept("", 0);&lt;br /&gt;&amp;amp;intime = CreateArrayRept("", 0);&lt;br /&gt;&amp;amp;outtime = CreateArrayRept("", 0);&lt;br /&gt;&amp;amp;entrytime = 8 * 60;&lt;br /&gt;&amp;amp;exittime = 16 * 60;&lt;br /&gt;&amp;amp;num = 8;&lt;br /&gt;rem Local string &amp;amp;str, &amp;str1;&lt;br /&gt;Local Record &amp;R0;&lt;br /&gt;&lt;br /&gt;&amp;amp;R0 = CreateRecord(Record.ABC_EMPCR_TBL);&lt;br /&gt;&lt;br /&gt;If &amp;amp;MYFILE.IsOpen Then&lt;br /&gt;   While &amp;amp;MYFILE.Readline(&amp;amp;string);&lt;br /&gt;      &amp;amp;array = Split(&amp;amp;string, ",");&lt;br /&gt;      REM  &amp;amp;MYFILE1.WRITELINE(&amp;amp;array.LEN);&lt;br /&gt;     &lt;br /&gt;     &lt;br /&gt;      &amp;amp;MYFILE1.WRITELINE(&amp;amp;array [1]);&lt;br /&gt;      &amp;amp;R0.EMPLID.Value = &amp;amp;array [1];&lt;br /&gt;      rem  &amp;amp;MYFILE1.WRITELINE(&amp;amp;array [2]);&lt;br /&gt;      &amp;amp;R0.ABC_EMPCR_NAME.Value = &amp;amp;array [2];&lt;br /&gt;      rem  &amp;amp;MYFILE1.WRITELINE(&amp;amp;array [4]);&lt;br /&gt;      If &amp;amp;array [4] = "" Then&lt;br /&gt;         &amp;amp;R0.ABC_EMP_DATE.Value = "";&lt;br /&gt;      Else&lt;br /&gt;         &amp;amp;R0.ABC_EMP_DATE.Value = DateValue(&amp;amp;array [4]);&lt;br /&gt;      End-If;&lt;br /&gt;     &lt;br /&gt;     &lt;br /&gt;     &lt;br /&gt;      If &amp;amp;array [5] &lt;&gt; "" And&lt;br /&gt;            &amp;amp;array [6] &lt;&gt; "" Then&lt;br /&gt;         &amp;amp;str = TimeValue(&amp;amp;array [5]);&lt;br /&gt;         &amp;amp;intime = Split(&amp;amp;str, ".");&lt;br /&gt;         &amp;amp;str1 = TimeValue(&amp;amp;array [6]);&lt;br /&gt;         &amp;amp;outtime = Split(&amp;amp;str1, ".");&lt;br /&gt;        &lt;br /&gt;        &lt;br /&gt;        &lt;br /&gt;         &amp;amp;str = &amp;amp;intime [1] * 60;&lt;br /&gt;        &lt;br /&gt;        &lt;br /&gt;         rem &amp;amp;MYFILE1.writeline("---Tot Late Min when =8-----" | &amp;amp;str);&lt;br /&gt;        &lt;br /&gt;        &lt;br /&gt;        &lt;br /&gt;         If &amp;amp;str = &amp;amp;entrytime Then&lt;br /&gt;            &amp;amp;inhrs = 8;&lt;br /&gt;            &amp;amp;inmins = &amp;amp;intime [2];&lt;br /&gt;            &amp;amp;inmins1 = (&amp;amp;intime [1] * 60) + &amp;amp;intime [2];&lt;br /&gt;            &amp;amp;entrymins = 0;&lt;br /&gt;            &amp;amp;latentrymin = &amp;amp;inmins - &amp;entrymins;&lt;br /&gt;            &amp;amp;MYFILE1.writeline("---Total Late Min when Employee logs at 8=" | &amp;amp;latentrymin);&lt;br /&gt;         End-If;&lt;br /&gt;        &lt;br /&gt;         If &amp;amp;str &lt; &amp;amp;entrytime Then&lt;br /&gt;            &amp;amp;inhrs = 8;&lt;br /&gt;            &amp;amp;inmin = 0;&lt;br /&gt;            &amp;amp;MYFILE1.writeline("---Total Late Min when Employee logs at &lt;8-----" | &amp;amp;inmin);&lt;br /&gt;            &amp;amp;inmins1 = 480;&lt;br /&gt;         End-If;&lt;br /&gt;         If &amp;amp;str &gt; &amp;amp;entrytime Then&lt;br /&gt;            &amp;amp;inmins = (&amp;amp;intime [1] * 60) + &amp;amp;intime [2];&lt;br /&gt;            &amp;amp;entrymins = 8 * 60;&lt;br /&gt;            &amp;amp;latentrymin = &amp;amp;inmins - &amp;entrymins;&lt;br /&gt;            &amp;amp;MYFILE1.writeline("---Total Late Min when Employee logs at  &gt;8-----" | &amp;amp;latentrymin);&lt;br /&gt;            &amp;amp;inmins1 = (&amp;amp;intime [1] * 60) + &amp;amp;intime [2];&lt;br /&gt;         End-If;&lt;br /&gt;        &lt;br /&gt;         If &amp;amp;outtime [1] &gt; 16 Then&lt;br /&gt;            &amp;amp;outhrs = 16;&lt;br /&gt;            &amp;amp;outmin = 0;&lt;br /&gt;            &amp;amp;MYFILE1.writeline("---Total OUT Late Min when Employee logs OUT at &gt;16-----" | &amp;amp;outmin);&lt;br /&gt;            &amp;amp;outmins1 = 16 * 60;&lt;br /&gt;         End-If;&lt;br /&gt;        &lt;br /&gt;        &lt;br /&gt;        &lt;br /&gt;         If &amp;amp;outtime [1] &lt; 16 Then&lt;br /&gt;            &amp;amp;outmins = (&amp;amp;outtime [1] * 60) + &amp;amp;outtime [2];&lt;br /&gt;            &amp;amp;exitmins = 16 * 60;&lt;br /&gt;            &amp;amp;latexitmin = &amp;amp;exitmins - &amp;outmins;&lt;br /&gt;            &amp;amp;MYFILE1.writeline("---Total Late Min when Employee logs OUT at &lt;16-----" | &amp;amp;latexitmin);&lt;br /&gt;            &amp;amp;outmins1 = (&amp;amp;outtime [1] * 60) + &amp;amp;outtime [2];&lt;br /&gt;         End-If;&lt;br /&gt;        &lt;br /&gt;         If &amp;amp;outtime [1] = 16 Then&lt;br /&gt;            &amp;amp;outmins = &amp;amp;outtime [2];&lt;br /&gt;            &amp;amp;exitmins = 0;&lt;br /&gt;            &amp;amp;outmins1 = (&amp;amp;outtime [1] * 60) + &amp;amp;outtime [2];&lt;br /&gt;            rem &amp;amp;latexitmin = &amp;amp;outmins - &amp;exitmins;&lt;br /&gt;            rem &amp;amp;MYFILE1.writeline("---Tot Late Min when =16-----" |&amp;amp;latentrymin);&lt;br /&gt;         End-If;&lt;br /&gt;         &amp;amp;totlatemin = &amp;amp;latentrymin + &amp;latexitmin;&lt;br /&gt;         &amp;amp;MYFILE1.writeline("---Tot Late Min = &amp;amp;latentrymin + &amp;amp;latexitmin-----" | &amp;amp;totlatemin);&lt;br /&gt;        &lt;br /&gt;         If Mod(&amp;amp;totlatemin, 60) = 0 Then&lt;br /&gt;            &amp;amp;latehrs1 = &amp;amp;totlatemin / 60;&lt;br /&gt;            &amp;amp;latehrs2 = Round(&amp;amp;latehrs1, 2);&lt;br /&gt;            &amp;amp;MYFILE1.writeline("---Total Late hrs when mod=0-----" | &amp;amp;latehrs2);&lt;br /&gt;         Else&lt;br /&gt;            &amp;amp;latehrs1 = &amp;amp;totlatemin / 60;&lt;br /&gt;            &amp;amp;hrs1 = Substring(&amp;amp;latehrs1, 1, 1);&lt;br /&gt;            rem &amp;amp;MYFILE1.writeline("---Tot Late hrs when mod != 0 -----" | &amp;amp;hrs1);&lt;br /&gt;            &amp;amp;mins1 = Mod(&amp;amp;totlatemin, 60);&lt;br /&gt;            &amp;amp;totlthrs = &amp;amp;hrs1 | ":" | &amp;mins1;&lt;br /&gt;            rem late hrs1 and late min;&lt;br /&gt;            &amp;amp;MYFILE1.writeline("---Employee Total Late hrs when mod != 0 -----" | &amp;amp;totlthrs);&lt;br /&gt;         End-If;&lt;br /&gt;        &lt;br /&gt;        &lt;br /&gt;        &lt;br /&gt;         &amp;amp;MYFILE1.writeline("---TOTAL OUT MINUTES---" | &amp;amp;outmins1);&lt;br /&gt;         &amp;amp;MYFILE1.writeline("---TOTAL IN MINUTES -----" | &amp;amp;inmins1);&lt;br /&gt;         &amp;amp;wrkhrs1 = &amp;amp;outmins1 - &amp;inmins1;&lt;br /&gt;         &amp;amp;MYFILE1.writeline("---TOTAL WORKING MINUTES &amp;amp;outmins1 - &amp;amp;inmins1-----" | &amp;amp;wrkhrs1);&lt;br /&gt;        &lt;br /&gt;        &lt;br /&gt;         /*WORKING HOURS*/&lt;br /&gt;         If Mod(&amp;amp;wrkhrs1, 60) = 0 Then&lt;br /&gt;           &lt;br /&gt;            &amp;amp;wrkhrs2 = &amp;amp;wrkhrs1 / 60;&lt;br /&gt;           &lt;br /&gt;            &amp;amp;wrkhrs3 = Round(&amp;amp;wrkhrs2, 0);&lt;br /&gt;           &lt;br /&gt;            &amp;amp;MYFILE1.writeline("---Total WORK hrs when mod=0-----" | &amp;amp;wrkhrs3);&lt;br /&gt;         Else&lt;br /&gt;           &lt;br /&gt;            &amp;amp;wrkhrs2 = &amp;amp;wrkhrs1 / 60;&lt;br /&gt;            &amp;amp;wrkhrs3 = Substring(&amp;amp;wrkhrs2, 1, 1);&lt;br /&gt;            rem &amp;amp;MYFILE1.writeline("---Tot Late hrs when mod != 0 -----" | &amp;amp;hrs1);&lt;br /&gt;            &amp;amp;wrkmins1 = Mod(&amp;amp;wrkhrs1, 60);&lt;br /&gt;            &amp;amp;totwrkhrs = &amp;amp;wrkhrs3 | ":" | &amp;wrkmins1;&lt;br /&gt;            rem Tot Working  wrkhrs3 and Tot Working wrkmins1;&lt;br /&gt;           &lt;br /&gt;           &lt;br /&gt;            &amp;amp;MYFILE1.writeline("---EMPLOYEE TOTAL WORKING HOURS -----" | &amp;amp;totwrkhrs);&lt;br /&gt;         End-If;&lt;br /&gt;        &lt;br /&gt;        &lt;br /&gt;      Else&lt;br /&gt;         &amp;amp;wrkhrs3 = 0;&lt;br /&gt;         &amp;amp;wrkmins1 = 0;&lt;br /&gt;         &amp;amp;hrs1 = 0;&lt;br /&gt;         &amp;amp;mins1 = 0;&lt;br /&gt;      End-If;&lt;br /&gt;     &lt;br /&gt;      &amp;amp;R0.ABC_EMP_WRKTIME.Value = &amp;wrkhrs3;&lt;br /&gt;      &amp;amp;R0.ABC_EMP_TOTMIN.Value = &amp;wrkmins1;&lt;br /&gt;      &amp;amp;R0.ABC_EMP_LATEHOUR.Value = &amp;hrs1;&lt;br /&gt;      &amp;amp;R0.ABC_EMP_LATEMIN.Value = &amp;mins1;&lt;br /&gt;     &lt;br /&gt;      &amp;amp;R0.Insert();&lt;br /&gt;     &lt;br /&gt;     &lt;br /&gt;   End-While;&lt;br /&gt;End-If;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;rem &amp;amp;R0.Update();&lt;br /&gt;&amp;amp;MYFILE.close();&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2388698495725806936-3162687002110686849?l=harshachowdaryworld.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://harshachowdaryworld.blogspot.com/feeds/3162687002110686849/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2388698495725806936&amp;postID=3162687002110686849' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2388698495725806936/posts/default/3162687002110686849'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2388698495725806936/posts/default/3162687002110686849'/><link rel='alternate' type='text/html' href='http://harshachowdaryworld.blogspot.com/2009/06/employee-change-request-application.html' title='Employee Change Request Application Enginer Code'/><author><name>Sri Harsha</name><uri>http://www.blogger.com/profile/07055600374301477821</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://2.bp.blogspot.com/_cv2CfEeLpVU/Sl7x0ilfPHI/AAAAAAAAAgE/e3fgUdRlTv8/S220/tin.jpg'/></author><thr:total>0</thr:total></entry></feed>
