As I was working on the Peoplesoft upgrade project I have noticed that some of the developers were still using App. Designer Compare reports as a sole means to comparing the code and components during customization reapplication process. It seems the new ways of doing compares are not being used as extensively as I hoped.

I figured I would write a quick post to remind my developers and others out there some of the features that have been implemented since version 8.49. For those experts readers who have been using these and other technics for awhile I would appreciate if you share your own technics.

 Running Compares

So without further due, below you can see a sample PeopleSoft’s visual merge compare for Project Peoplecode. In order to save you from long and boring explanations – I will leave it to PeopleBooks – Using Merge Interface. However I would like to add just a few comments – sometimes I find myself pasting compare code into good old Notepad++ and running a compare in there. I guess I do like the power of the full fledged editor and syntax highlighting does not hurt as well.

PeopleCode Compare/Merge

As much fun as App Designer reports are I always like to look at the reports in the HTML view  – better , faster and cleaner experience. And all it take is specifying Generate HTML report in the Compare Options in App Designer:

Generate Browser Reports

Secondary Pages

If you are creating a complex page that contains some sort of look-up pages – always a good idea to split the interface and not create page that would overwhelm the user.  In earlier versions of tools going to secondary pages required user to transfer to a separate page, however since Tools 8.50 – secondary and modal pages can open in a modal JavaScript Popup that still allows you to stay on the same page:

modal secondary form

 

 

 

 

In order to enable this behavior for existing and new pages you just need to enable one little checkbox and voila:

Enable Modal Secondary Page

 

Change Control

When working in a team and making multiple changes to the environment you don’t want to be stepping on each others toes. Although still quite limited and inferior to Tools like Quest Stat – PeopleTools built in change control does provide you the ability to lock objects while you change them and leave comments as to what was done (always a good idea). This also helps with documentation – once you are done with the changes you can run a quick SQL and get a report of all the changes that were done for more please go to here.

I hope you enjoy this and let me know if you have any suggestions.

 

 

 

As I was going through some of the sessions on the QUEST NORTHEAST CONFERENCE I noticed on of the presenters mentioning customizing Test environments Main PeopleSoft CSS PSSTYLEDEF so that the users are always able to distinguish between environments.

The solution that I have employ to solve this problem is to modify the PT_BRANDING:BrandingBase class to dynamically display environment name based on the URL, like this:

captured_Image.png

PT_BRANDING Application package was meant to be used to dynamically customize the look and feel of you application and of course you can do a lot more with this but this is just a very simple example of how easy this can be done.

In order to achieve the above effect all you need is to add code to 2 methods in the class PT_BRANDING:BrandingBase

method GetUniHeaderHTML
method GetUniHeaderHTML_PIA

These methods, as the name suggests are responsible for rendering you Application Portal Header.

/*Iouri Chadour - Added to put Test Environment notification in the header&Request.ContentURI - returns your portal URL in form http://server:port/psp/PSPRC/Left(Right(&Request.ContentURI, 4), 3) - extracts the significant piece to displayon the header*/
&zEnvName = Left(Right(&Request.ContentURI, 4), 3);
&Greeting = &zEnvName | " Environment " | ", UserID:" | %UserId | ", Name: " | %UserDescription;
/* End Mod */

/* This code below is delivered checks for client browser to ensure that Header is displayed correctly */

If &navTheme.isNS4x() Then    &UniHeaderHTMLPIA = GetHTMLText(HTML.PORTAL_UNI_HEADER_NS4X, &Response.GetImageURL(Image.NEW_PS_LOGO), &Response.GetImageURL(Image.NEW_PORTAL_HDR_TBRCRV), " ", " ", &FavoritesHTML, &AddToFavoritesHTML, &HelpHTML, "", &Response.GetImageURL(Image.NEW_PORTAL_HDR_CRV), &Response.GetImageURL(Image.NEW_PORTAL_HDR_BG), &Response.GetImageURL(Image.NEW_PORTAL_HDR_BG), &Response.GetImageURL(Image.NEW_PORTAL_HDR_TBRCRV), &Response.GetImageURL(Image.NEW_PORTAL_HDR_SHD), &Response.GetImageURL(Image.NEW_PORTAL_HDR_TBR), &styleSheet, &homeURL, &startURL, &AddToFavFormHTML, &LogoutURL, MsgGetText(95, 400, "Return Home"), /*20*/MsgGetText(95, 401, "Home"), MsgGetText(95, 402, "Return to Menu"), MsgGetText(95, 403, "Menu"), MsgGetText(95, 408, "Sign out"), &Greeting, &SearchHTML, &ColSpanHTML, &PersonalizeHTML, "", "", &HelpJSHTML, &homepageJS, "", &TabHTML, &WLHTML, &domainScript, &Response.GetJavaScriptURL(HTML.PT_SAVEWARNINGSCRIPT), "", &SaveWarnCrossDomainScript, &Response.GetImageURL(Image.PT_HOME_TAB_ACTIVE_CENTER), &Response.GetImageURL(Image.PT_HOME_TAB_INACTIVE_CENTER), /*40*/&Response.GetImageURL(Image.PT_HOME_TAB_LINE), %Request.ExpireMeta, &CTIHTML, &MCFHTML, &PPMHTML, &Charset);ElseElse    &UniHeaderHTMLPIA = GetHTMLText(HTML.PORTAL_UNI_HEADER_NNS, &Response.GetImageURL(Image.NEW_PS_LOGO), &Response.GetImageURL(Image.NEW_PORTAL_HDR_TBRCRV), "", "", &FavoritesHTML, &AddToFavoritesHTML, &HelpHTML, "", &Response.GetImageURL(Image.NEW_PORTAL_HDR_CRV), &Response.GetImageURL(Image.NEW_PORTAL_HDR_BG), &Response.GetImageURL(Image.NEW_PORTAL_HDR_BG), &Response.GetImageURL(Image.NEW_PORTAL_HDR_TBRCRV), &Response.GetImageURL(Image.NEW_PORTAL_HDR_SHD), &Response.GetImageURL(Image.NEW_PORTAL_HDR_TBR), &styleSheet, &homeURL, &startURL, &AddToFavFormHTML, &LogoutURL, MsgGetText(95, 400, "Return Home"), /*20*/MsgGetText(95, 401, "Home"), MsgGetText(95, 402, "Return to Menu"), MsgGetText(95, 403, "Menu"), MsgGetText(95, 408, "Sign out"), &Greeting, &SearchHTML, &ColSpanHTML, &PersonalizeHTML, "", "", &HelpJSHTML, &homepageJS, MsgGetText(95, 138, "Tool Bar Header"), &TabHTML, &WLHTML, &domainScript, &Response.GetJavaScriptURL(HTML.PT_SAVEWARNINGSCRIPT), "", &SaveWarnCrossDomainScript, &Response.GetImageURL(Image.PT_HOME_TAB_ACTIVE_CENTER), &Response.GetImageURL(Image.PT_HOME_TAB_INACTIVE_CENTER), /*40*/&Response.GetImageURL(Image.PT_HOME_TAB_LINE), %Request.ExpireMeta, &CTIHTML, &MCFHTML, &PPMHTML, &Charset); End-If;
 

It seems that Oracle have caught on with the Virtual Documentation, not only lots of books are available in common formats, but they allow you to format your search results as a book as well. Now you can take just what you need and read it on your screen or printed and stapled. I guess they really want us to know know more about their products!

Here is a link to

Oracle Database Online Documentation 11g Release 1 (11.1)

And here PeopleBooks Link:

http://download.oracle.com/docs/cd/E12341_01/crm9pbr0_run2/eng/index.htmcaptured_Image.png

 

It seems that PeopleSoft is really becoming object oriented – now it has it’s own automated unit testing  tool, like JUnit – this one is called PSUnit. I hope this one is as good as it sounds. Check out the Wiki article below

Introducing PSUnit – Oracle Wiki

You can download the actual project file here:

http://blogs.oracle.com/peopletools/2009/03/psunit_unit_test_framework_for.html

 

I would like to briefly describe some of the PeopleSoft  debugging techniques that I have used and found invaluable during development batch and online programs.

SQR Debugging

Flag Description
-S Choose Append Option on Parameter List of Process Definition. All of your SQL statements – simple and clear + execution counts
–debug(flag) Choose Append Option on Parameter List of Process Definition. Put the following statements in your code

#debug(flag) show
#debug(flag) display

this will allow you to display definitions in your log. What is most useful this allows you to specify different levels of tracing using the flag – which can be letters A-Z. Specifying –debug(A-Z) on process definition it allows you to selectively display your debug statements.

COBOL Debugging

Flag Description
%%PRCSNAME%% %%DBTYPE%%/%%DBNAME%%/%%OPRID%%/
%%OPRPSWD%%/%%RUNCNTLID%%/%%INSTANCE%%//%%DBFLAG%%
Choose Override Option on Parameter List of Process Definition. Copy and paste Flags and run your process normally. You will see the trace file in the Process Monitor

App Engine Debugging

Flag Description
-TRACE 131 Choose Append Option on Parameter List of Process Definition.

Required to start the app engine trace. Does not display much more than message log

-TRACE 131

-TOOLSTRACEPC 2048

Choose Append Option on Parameter List of Process Definition.

Adding TOOLSTRACEPC with a number causes detailed PeopleCode code trace – be careful those can get very large and significantly impact performance.

-TRACE 131

-TOOLSTRACESQL 31

Choose Append Option on Parameter List of Process Definition.

Adding

TOOLSTRACESQL

with a number causes detailed SQL trace. This option should always be used when tracing – app engine are all about SQL.

App engine can also be debugged on the client. In order to do this you need to configure trace setting in the configuration manager:

image

Open App Engine program  in the Application Designer, press the Run Program icon and enter the Run Control ID and Process Instance Number (You should have an existing process instance and run control id defined online). Click ‘OK’ to run the App Engine process in two-tier mode.

If you would like to read about debugging in more details here is an excellent overview presentation by Kai Markowitz from CSU:

http://www.scribd.com/doc/15756180/Tracing-Debugging-in-People-Tools-84x-CMS411

Tags:

© 2011 WorkingScripts Suffusion theme by Sayontan Sinha

Switch to our mobile site