Friday, July 4, 2008

WMS/MSCA Picking Customization FAQ

What customizations can be made to Oralce WMS/MSCA mobile picking? Any examples?

Almost all WMS/MSCA pages can be customized to add additional fields, perform different validation logic when leaving certain fields, execute certain business logic, etc. So is the pick page, just with more possibility and complexity.

Sample pick customizations include to capture additional dimensional fields (e.g. length and width of an item) after user scans an item, and later on to populate those values to delivery detail; or to perform miscellaneous receipt or cycle counting on the fly when there is not enough onhand during pick.

How to customize the pick page?

There are two techniques to customize the pick page. The first one is to follow Oracle MWA Implementation Guide: extend the MWA Function class, Page classes and modify the seeded form function to call these new classes.

The second one is a less known however preferred technique for WMS implementors. By inserting a configuration record into one of the MWA configuration tables, the extended page classes can be loaded on the fly. In other words, if you want to add a field to the main pick page, you only need to extend one Java file.

Why it is desirable to use the second technique and to enter the uncharted territory will become clear from the next question.

Why pick customization is so special?

Three factors made the pick page much more complicated than most WMS/MSCA pages. Firstly, there are half dozen flavors of picking all performed by the same page; secondly, all flavors of pick starts with the employee sign on page to capture data such as equipment and zone, which requires customizing pick page with traditional MWA technique to modify at least 4 more files; thirdly, pick page is built on the 'configurable page' technology, which added another level of code to understand.

Do we need to look at Oracle Java source code to do the customization? How?

Yes, you must read Oracle Java source code to be able to proceed with your customization. According to your Oracle apps license, you must contact Oracle to obtain the source code. Well, in addition to it usually takes weeks for the request to go through, you have to tell Oracle not only which file, but also what version of the file (like 11.5.10.123) you will need. So pretty much you are stuck.

There are general decompiling tools for obtaining Java source files from class files, such as jad.
And most of the files related to picking are under $JAVA_TOP/oracle/apps/wms/td/server. Good enough?

How about PL/SQL source code? Where are they?

In most cases, you will also need to read PL/SQL code (and write your own pl/sql logic). Fortunately, PL/SQL source code is shipped with Oracle installation, and they can be found under $WMS_TOP/patch/115/sql and $INV_TOP/patch/115/sql.


Can we modify the Oracle source files to add new fields? Why?

No. In most cases, you should not modify Oracle source files, unless you are certain what you are doing is actually fixing bugs existed in Oracle code, which we encountered occasionally in the past.

Future Oracle patches or releases will wipe out your changes, unless you convince Oracle to include your changes (if they are bug fixes that will be generally useful to all customers) in their future code line.

We will pick lot numbers. Is it possible to customize the page that lot numbers are entered? How?

Yes. Similarly, use the second customization technique mentioned above. Otherwise, you will have to extend 6 files to reach this page.

What skills are required to customize the pick page? How do we evaluate whether we or an outside consultant is capable of customizing our pick page?

Following skills are mandatory: Java, PL/SQL, Oracle JDBC, MWA developer framework. Knowledge of code under $JAVA_TOP/oracle/apps/wms/td/server, or willingness to read these code, would be highly desirable.

To evaluate candidates for customizing pick pages, use this FAQ as a checklist.

How long should we plan for developing and implementing pick customization?

A typical pick customization (e.g. adding an additional field on main pick page to capture data), will take 4 to 6 weeks for an experienced consultant to complete.

Can the same technique for customizing pick page be used for other mobile pages?
Yes, it certainly can, and usually easier.

6 comments:

Anonymous said...

Hi,

I need to skip the TaskSignonPage, instead I have to direct the user/emp to the MainPickPage as he/she has nothing to do with the Equipmet. What should I do? Please guide me. I am new to MSCA.

Regards,
Luqman

Anonymous said...

User dont want to see the TaskSignopnPage.

Anonymous said...

This is the code that I've written:

package xxx.apps.wms.td.server;

import oracle.apps.mwa.eventmodel.*;
import oracle.apps.mwa.beans.MenuItemBean;
import oracle.apps.mwa.container.Session;
import oracle.apps.mwa.eventmodel.MWAAppListener;
import oracle.apps.mwa.eventmodel.MWAEvent;
import oracle.apps.wms.td.server.*;
import oracle.apps.inv.utilities.server.*;

public class MainPickFunction extends TdFunction
{

public MainPickFunction()
{
setFirstPageName("oracle.apps.wms.td.server.TaskSignonPage");
addListener(this);
}

public void appEntered(MWAEvent paramMWAEvent) throws AbortHandlerException, InterruptedHandlerException, DefaultOnlyHandlerException
{

super.appEntered(paramMWAEvent);

Session localSession = paramMWAEvent.getSession();


if (localSession.getObject("ORGID") == null)
{
setFirstPageName("oracle.apps.mwa.beans.OrganizationPageBean");
}

String str1 = (String)(String)localSession.getObject("TXN.PAGE_TYPE");
String str2 = (String)(String)localSession.getObject("TXN.TASK_METHOD");

if (UtilFns.isTraceOn) {
UtilFns.trace("MainPickFunction.appEntered: pageType: " + str1);
UtilFns.trace("MainPickFunction.appEntered: taskMethod: " + str2);
}
if (str1 != null) {
if (str1.equalsIgnoreCase("DIRECTED_TASK")) {
if ((str2 != null) && (str2.equalsIgnoreCase("DISCRETE"))){
boolean bool = TdPage.fetchNextTask(paramMWAEvent);
}
}
}


localSession.setRefreshScreen(true);

}

}

Anonymous said...

Hello,

I understand that there two ways to customize the main pick page but could you please elaborate more on the second option (configuring the table) and also the 6 page names, in case the first option is chosen i.e. extending the standard code.

Thanks in advance.

Anoop Johny said...

Could you please elaborate more on the second option (configuring the table). How do we populate the table ? Direct insert with old value and new value ?

I can see that the data from the tables is used only if session.getObject("TXN.CUSTOMIZATION") returns true. How is this getting set ?


Cheers
AJ

Unknown said...

Need to know the same.