In this Article, we will see how to extend a standard Oracle MSCA/MWA pages. 
It is a common requirement by most of the customers to do some modifications to standard Mobile forms to suit their requirements better. Most common requirements include:
- Add a field to a page
- Hide a field
- Make a field Read only.
- Change a LOV to Text and Vice versa.
- Change the Labels
- Default some values to a field. etc
I assume that the readers of this article have already gone through my previous articles as they need basic understanding of the MSCA/MWA Architecture.
As MSCA/MWA is based on Java, we can easily achieve this by the OOPS Concept "Inheritance". We create a new Java Class which inherits the Standard Oracle Java Class. In the new extended Java class, we have freedom to change the standard page behaviour without touching the Oracle Standard Java Source Code.
The Normal flow in MSCA Applications is described in the following diagram:
After we do the extension, the flow in the application will be like
- Extend the MWA Function Class and make it point to the Extended page.
- Extend the MWA Page Class.
- Extend the MWA Listener Class.
- Modify the Function Name in AOL to point to the New extended Function Class name.
public XXShipLPNFunction() {
super();
//Setting the page name to new custom page
setFirstPageName("xxx.oracle.apps.inv.wshtxn.server.XXShipLPNPage");
}
}
import oracle.apps.mwa.beans.ButtonFieldBean;
import oracle.apps.mwa.beans.TextFieldBean;
import oracle.apps.mwa.container.Session;
import oracle.apps.mwa.eventmodel.AbortHandlerException;
import oracle.apps.mwa.eventmodel.DefaultOnlyHandlerException;
import oracle.apps.mwa.eventmodel.InterruptedHandlerException;
import oracle.apps.mwa.eventmodel.MWAEvent;
import oracle.apps.mwa.eventmodel.MWAListener;
public class XXShipLPNPage extends ShipLPNPage {
public XXShipLPNPage(Session s) {
mTxtField = new TextFieldBean();
mTxtField.setName("XX_TEXT");
mTxtField.setPrompt("New Text");
mTxtField.addListener(xxListener);
mTxtField.setValue("Initial Text");
this.addFieldBean(3, mTxtField);
}
public void pageEntered(MWAEvent e) throws AbortHandlerException,
InterruptedHandlerException,
DefaultOnlyHandlerException {
super.pageEntered(e);
//Initialize Extended page.
initCustomPage(e);
//The purpose of this method will be explained in later articles.
public void initCustomPage(MWAEvent e) {
//Doc Door LOV initialization
String[] inputs =
{ " ", "TXN.DOCK", "ORGID", "xxx.oracle.apps.inv.wshtxn.server.XXShipLPNPage.ShipLPN.DockDoor" };
getDockDoorFld().setInputParameters(inputs);
//LPN Lov initialization
String[] lpnInputs =
{ " ", "ORGID", "LOCATORID", "TRIPID", "TRIPSTOPID",
"xxx.oracle.apps.inv.wshtxn.server.XXShipLPNPage.ShipLPN.LPN" };
getLpnFld().setInputParameters(lpnInputs);
Session session = e.getSession();
//Continue button initialization
ButtonFieldBean continueButton =
(ButtonFieldBean)session.getFieldFromCurrentPage("ShipLPN.Ship");
continueButton.removeListener((MWAListener)continueButton.getListeners().firstElement());
continueButton.addListener(xxListener);
}
XXShipLPNFListener xxListener = new XXShipLPNFListener(new Session());
}
import oracle.apps.mwa.container.Session;
public XXShipLPNFListener(Session s) {
super(s);
}
}
written by De Wet du Toit , June 18, 2008
I need to customize existing, seeded MWA forms, eg oracle.apps.wms.pup.server.PackUnpackSplitPage.
How does one go about doing this?
First of all there are only class files and Oracle takes forever to supply me with the .java files.
When using a decompiler I cannot get it to compile properly again.
How can I accomplish this?
Regards
D
written by Himanshu Joshi , June 22, 2008
Currently I am working on MSCA Customization.The requirement is to display on/off(Hiding initially and later displaying conditionally) a field on custom mobile screen.
But the issue is when this field is displayed conditionally, the curosr/control does not appear with the same field.It goes to next button.
I have Used method : session.setNextFieldName("FieldName");
but its not working.
will appreciate your help on this .
written by Himanshu Joshi , June 23, 2008
Thanks for the quick responce.
I have added the beans as follows :
addFieldBean(super.mMONumLOV);
addFieldBean(warning);
addFieldBean(containerLov);
addFieldBean(autoPickLov);
addFieldBean(super.mQueryBtn);
addFieldBean(super.mCancelBtn);
containerLOV and autoPickLov are displayed conditionally.When I put the value for MoNumLov, the cursor skips the condionally appeared fields and goes direct to mQueryBtn.
written by Himanshu Joshi , June 23, 2008
I am doing modification to a existing apps screen, but am getting some fields from super class.There I have used "super.mMONumLov".And added new fields to child class.
written by Barry Allott , June 26, 2008
written by Barry Allott , June 26, 2008
oracle.apps.mwa*
where would I get these libraries from?
written by Himanshu Joshi , June 30, 2008
Please tell me what does this method(setEnableAcceleratorKey) do ?
I have found, this method generally used with buttons.like
mCancel.setEnableAcceleratorKey(true);
written by Himanshu Joshi , June 30, 2008
Definately it helped me.
written by Amit Goel , July 02, 2008
I need to make certain fileds like 'Airway bill number' and 'carrier' mandatory in receipt screen on WMS mobile application. I know
the java file that is used for this. But where can i get some documentation on java file so that I can extend it and make
these fields mandatory. I searched enough on metalink etc but no luck.
Also can you please give some idea how can i achieve this customization. What properties etc i should set for
making field mandatory.
Thanks and regards,
Amit
written by Amit Goel , July 02, 2008
Also I got an idea how I could achieve this using extenstion. My problem is how will i know details of java. What are the field
names etc? How and where can i get some Java doc for the same.
Thanks,
Amit
written by Amit Goel , July 02, 2008
not get an applet on my machine, rather it is all text UI something like below. is there any way, I get some applet based UI.
1
2
3
4
5
6
7
8
9
Regards,
Amit
written by Pramod , July 09, 2008
I have to replicate the some functionality of PO receipt form(RcptGenPage). The requirement is user enters PO, Supplier/Supplier/Releases/Items are displayed based on PO. After selecting these values user clicks submit button and above data is entered into custom table. Can I achieve this by extending RcptGenPage/function/Listener classes? Do I have to extend all methods in these classes? Thanks in advance.
Regards
Pramod
written by Himanshu Joshi , August 11, 2008
We have one requirement to diaplay LOV on a button click.
Can you please share your thoughts?
Waiting for your reply eagerly.
Thanks,
Himanshu
written by Himanshu Joshi , August 11, 2008
The requirement is like we need to display a LOV format screen in which we need to display
un-allocated/un-Picked(i.e. Short) on the WIP job component.There are 4 columns
It will be only read only screen, no need to store anything.
But it should be invoked on CLOSE button exit event.
So the challenge here is to invoke LOV from button instesd of LovFieldBean.
Please Advice.
written by Kyle , August 11, 2008
I was able to successfully follow this tutorial and I was able to add the textfield to the ShipLPNPage.
My question for you is, have you had any success extending a wipwmapage like CMPMENUITEM
I found the two files I believe I need under:
- MENU
- CMPMENUITEM
- page
- CompletionPage
so I extended these like this
- MENU
- xxCMPMENUITEM extends CMPMENUITEM
package oracle.apps.wip.wma.MENU;
import oracle.apps.wip.wma.MENU.CMPMENUITEM;
public class xxCMPMENUITEM extends CMPMENUITEM
{
public static final String RCS_ID = "$Header: xxCMPMENUITEM.java 120.0 2005/05/25 07:49:54 appldev noship $";
public xxCMPMENUITEM()
{
super();
setFirstPageName("oracle.apps.wip.wma.page.xxCompletionPage");
}
}
- page
- xxCompletionPage extends CompletionPage
.. but it doesn't display any of the changes I extend in xxCompletionPage even after I associate it within the FORM functions.
Any suggestions
written by Himanshu Joshi , August 18, 2008
Thanks a lot for the workaround for tabular format screen display.
It worked out for us.
Thanks again !
written by Amitha Joy , August 20, 2008
We have a requirement to add a new text field in a specific position in mobile screen. We are extending the seeded java class and creating a custom class. In the extended page we are using the following command for achieving this addFieldBean(StatusField); where StatusField is a new TextFieldBean defined in the extended class. By default the field is coming at the first postion on the page. We try to move it to correct postion by using the command addFieldBean(2,StatusField); But this is giving unexpected error in the screen at the point where this command is executed. Any pointers in resolving this to postion the newly added field will be helpful
Thanks,
Amitha
written by Pramod , August 22, 2008
I was able to develop a form with the help of your examples and posts. This forms takes po number and displays Rel num LOV/ Item OV etc. I provided submit button to insert data into stating table. If needed I won't mind posting my code here.
Regards
Pramod
written by Pramod , August 25, 2008
Thanks. I will post the code within 3/4 days.
Regards
Pramod
written by Pramod , August 26, 2008
Link: http://apps2fusion.com/forums/viewforum.php?f=145
Regards,
Pramod
written by Sarvesh Barve , October 23, 2008
I need to restrict LOV of Lots in MSCA Subinventory Xfer form based on some DFF values on Locator and some Lookups.
How can i do that ? Can you help me in this ?
written by Sarvesh Barve , October 24, 2008
Thanks for the prompt reply. I am very new to this . Can you put some more light for the solution of this ?
May be the detailed approach which should be taken in this !!
written by Ravi Dhanwate , November 07, 2008
I have a requirement to customize Int Req Deliver Page. RcvTxnPage.java. requirement is, for lot controlled items, we do not want user to enter lots and corresponding quantity. It will be calculated by custom logic after user enters the quantity (QtyExited).
I am going ahead with following approach :
I am extending RcvTxnPage for custom page class and RcvTxnFListener for custom listener.
In customInitLayout method I am resetting LOV input parameters of all Lovfieldbeans to new page fields.
and adding custom listener to all the fields (currentPage.getFieldBeanList and iterating thru fieldbeans).
In ItemExited of custom Listener class I am hiding Lot and Lot Quantity fields.
in QtyExited of custom Listener class I am calculating lots and populating lot field and lot quantity field.
Standrad Oracle wise, in Lot quantity exited method of RcvTxnPage, it inserts lot record in mtl_transaction_lots_interface table.
I want to acheive same thing and don't want to rewrite code for it. Want to use standard Oracle logic to achieve the same.
I am facing following problem :
I can not call super.lotQtyExited() in my code because it is private in base class.
If somehow I can raise fieldExited event on lot quantity , base class listener will be called , and problem will be solved.
but as Lot Qty field is hidden, I don't know how to raise fieldExited event on it.
Please help if you can think of some workaround for the same.
Thanks
Ravi
written by Ravi Dhanwate , November 07, 2008
Thank you very much for prompt response.
here my requirement is to call base class lotQtyExited() method to perform the procesing which creates MTLI records.
I can not call this method from my custom listener class using super.lotQtyExited() ( which is a child class) because it is defined as
private in base class.
If I plan to override it in my custom class, I will have to rewrite whole logic which is already there in base class QtyExited method.
So I thought of raising fieldExited event on lot quantity field.In this case framework will find out all listeners and call field exited of
those listeners which includes base listener class as well.
Event has to be raised explicitly because lot quantity field is hidden in my case.
I just tried following code :
Index = rcvtxnpage.getFieldIndex("INV.LOT_QTY");
mWAEvent.getSession().getCurrentPage().setCurrentFieldIndex(Index);
super.fieldExited(mWAEvent);
still facing few issues.
Please let me know if this approach is recommended or not?
or please suggest any other approach to achieve this.
Thanks.
Ravi
written by Tron , December 10, 2008
written by J. Antonio Medina , December 11, 2008
I have a Inventory Customization using MWA, Intermec devices on Applications 11.5.10.2 and we currently are getting some erros from AOL/J Connection POOL such as,
[Thu Dec 11 14:24:08 CST 2008] (Thread-17) DBSESSIONID for user:LHLORENZO failed
java.lang.NullPointerException
at oracle.apps.mwa.container.ApplicationsObjectLibrary.getDBSessionID(ApplicationsObjectLibrary.java:1549)
at oracle.apps.mwa.container.ApplicationsObjectLibrary.getConnection(ApplicationsObjectLibrary.java:996)
at oracle.apps.mwa.container.BaseSession.getConnection(BaseSession.java:185)
at oracle.apps.inv.count.server.DBHandler.setRefreshConn(DBHandler.java:42)
at oracle.apps.inv.count.server.PageTarimaComp.setFieldNoTarima(PageTarimaComp.java:151)
at oracle.apps.inv.count.server.PageListener.fieldProdTarima(PageListener.java:107)
at oracle.apps.inv.count.server.PageListener.fieldExited(PageListener.java:32)
at oracle.apps.mwa.container.StateMachine.callListeners(StateMachine.java:1661)
at oracle.apps.mwa.container.StateMachine.handleEvent(StateMachine.java:535)
at oracle.apps.mwa.container.StateMachine.handleEvent(StateMachine.java:842)
at oracle.apps.mwa.container.StateMachine.handleEvent(StateMachine.java:1129)
at oracle.apps.mwa.presentation.telnet.PresentationManager.handle(PresentationManager.java:392)
at oracle.apps.mwa.presentation.telnet.ProtocolHandler.run(ProtocolHandler.java:820)
[Thu Dec 11 14:24:08 CST 2008] (Thread-17) POOL-NO AVAILABLE OBJECTS (POOLDATA=[oracle.apps.fnd.security.DBConnObjPool@8046d2
0 extends [oracle.apps.fnd.security.DBConnObjPool@8046d20 $Revision: 115.28 $ {false,true,1228997403081,0,1228997403081,0,fal
se,300,5,7,500,500,0,1,5,10000,3,0,500,2,oracle.apps.fnd.common.Statistics@8007962}] $Revision: 115.26 $ {false,true,false,-1
,-1,561}])
[Thu Dec 11 14:24:08 CST 2008] (Thread-17) POOL-NO AVAILABLE OBJECTS (POOLDATA=[oracle.apps.fnd.security.DBConnObjPool@8046d2
0 extends [oracle.apps.fnd.security.DBConnObjPool@8046d20 $Revision: 115.28 $ {false,true,1228997403081,0,1228997403081,0,fal
se,300,5,6,500,500,0,1,5,10000,3,0,500,2,oracle.apps.fnd.common.Statistics@8007962}] $Revision: 115.26 $ {false,true,false,-1
,-1,561}])
[Thu Dec 11 14:24:08 CST 2008] (Thread-17) POOL-NO AVAILABLE OBJECTS (POOLDATA=[oracle.apps.fnd.security.DBConnObjPool@8046d2
0 extends [oracle.apps.fnd.security.DBConnObjPool@8046d20 $Revision: 115.28 $ {false,true,1228997403081,0,1228997403081,0,fal
se,300,5,5,500,500,0,1,5,10000,3,0,500,2,oracle.apps.fnd.common.Statistics@8007962}] $Revision: 115.26 $ {false,true,false,-1
,-1,561}])
[Thu Dec 11 14:24:08 CST 2008] (Thread-17) POOL-NO AVAILABLE OBJECTS (POOLDATA=[oracle.apps.fnd.security.DBConnObjPool@8046d2
0 extends [oracle.apps.fnd.security.DBConnObjPool@8046d20 $Revision: 115.28 $ {false,true,1228997403081,0,1228997403081,0,fal
se,300,5,4,500,500,0,1,5,10000,3,0,500,1,oracle.apps.fnd.common.Statistics@8007962}] $Revision: 115.26 $ {false,true,false,-1
,-1,561}])
[Thu Dec 11 14:24:08 CST 2008] (Thread-17) No se pudo recuperar conexión DB desde AOL/J
[Thu Dec 11 14:24:08 CST 2008] (Thread-17) Couldn't retrieve connection, giving up!
java.sql.SQLException: No se pudo recuperar conexión DB desde AOL/J
at oracle.apps.mwa.container.ApplicationsObjectLibrary.getConnection(ApplicationsObjectLibrary.java:1022)
at oracle.apps.mwa.container.BaseSession.getConnection(BaseSession.java:185)
at oracle.apps.inv.count.server.DBHandler.setRefreshConn(DBHandler.java:42)
at oracle.apps.inv.count.server.PageTarimaComp.setFieldNoTarima(PageTarimaComp.java:151)
at oracle.apps.inv.count.server.PageListener.fieldProdTarima(PageListener.java:107)
at oracle.apps.inv.count.server.PageListener.fieldExited(PageListener.java:32)
at oracle.apps.mwa.container.StateMachine.callListeners(StateMachine.java:1661)
at oracle.apps.mwa.container.StateMachine.handleEvent(StateMachine.java:535)
at oracle.apps.mwa.container.StateMachine.handleEvent(StateMachine.java:842)
at oracle.apps.mwa.container.StateMachine.handleEvent(StateMachine.java:1129)
at oracle.apps.mwa.presentation.telnet.PresentationManager.handle(PresentationManager.java:392)
at oracle.apps.mwa.presentation.telnet.ProtocolHandler.run(ProtocolHandler.java:820)
[Thu Dec 11 14:24:08 CST 2008] (Thread-17) return Connection is called with userName:LHLORENZO
I will appreciate your help,
Thank you in advance...
written by J. Antonio Medina , December 15, 2008
When we get this errors all sessions show "Please wait" to the users and then we need to restart MWA Server to reestablish the service,
Thanks for your reply
written by J. Antonio Medina , December 16, 2008
We use a module custimization from MWA Framework in this case...
At the beginnig of our daily operations we start without problems,
but some hours later (avg 6 hours), we get some errors (Logged in previous post) on 10202.system.log with all users currently connected
and so we have service interruption...
then we need to restart de MWA Server to reestablih the service
written by Kaukab , January 14, 2009
What I am not able to understand is how the custom page code is called. We replace the the Custom Function java file thats fine but how does the customized page gets invoked because we are no where mentioning which java file to invoke. May be I am missing something. Please help.
Also if u can help in letting us know how to setup JDev for such customization.
written by Kaukab , January 14, 2009
setFirstPageName("xxx.oracle.apps.inv.wshtxn.server.XXShipLPNPage"); part in the code. This article is superb.
How to set up the Jdev or any other IDE plz help me on that as i am new to java frameworks.
written by Filiz Dumbek , January 22, 2009
I want to ask a question about barcode scanning. Our customer transfers its p******s with EAN13 code from one organization to another. However, their item code is different than this code. EAN code information will be kept in item cross references. How can we bring item code after EAN code is scanned?
Thanks,
Best regards,
Filiz
written by Filiz Dumbek , January 26, 2009
We have custom PL/SQL format but we don't know how to call it on MSCA screens. First, barcode will be scanned. How can we convert EAN code to item code on screen or on another place?
Thanks,
BR,
Filiz
written by Kaukab12 , February 05, 2009
say i have my custom class file in $INV_TOP/java.
then what should I write in WEB HTML call in fnd function.
What are all the things reqd to be setup.
Will the import "import oracle.apps.fnd.common.VersionInfo;" work fine in this case.
what should be my package name in the custom code.
Thanks
Kaukab
written by kaukab123 , February 11, 2009
I am exteanding a rcving transaction page.
Write now I have written a custom Function Bean whixh is calling the custom page bean which is simply extending a std Page. BUt it is giving error after going to Organization page.
It is giving somewaht following errmsg
[Wed Feb 11 14:59:07 EST 2009] (Thread-15) Employee ID :null
[Wed Feb 11 14:59:07 EST 2009] (Thread-15) Organization ID :89
[Wed Feb 11 14:59:07 EST 2009] (Thread-15) Executing the J Patch Set Code
[Wed Feb 11 14:59:07 EST 2009] (Thread-15) Error java.lang.NumberFormatException: null
Please help. What can be reason
written by tutu , February 16, 2009
written by tutu11 , February 23, 2009
thanks for all the post. But after going deep it seems there is no standards oracle ha followed it has used all sords of hardcoding and etc.
Also lot of things dont work.
I was trying to remove the listener using removeListener((MWAListener)continueButton.getListeners().firstElement());
it didnot removed i checked it by geting hte listenes name after executing the remove sttm.
So now it seems i m now in a deep trouble cant go back and cant go ahead.
if i create object by defining it ruins other thing.
Is there anyother way of stopping a listener attached to a object from getting executed.
written by tutu112 , February 24, 2009
I was trying to modify a Listener and was not able to remove the previous attached listener. I tried number of options. So just wrote the above query. Later after further trying I found the soln. I will update you soon on that how, once i am finalized with everything is working fine.
Thankyou For ur reply
Kaukab
written by tutu112 , March 03, 2009
I have got one new 11i instance. In that when i am trying to open any of the rcving screen on mbile screen then it is giving the error
"Internal error in creating flexfield".
If someone knows how to remove this error plz help.
Thanks
Kaukab
written by Anju , March 13, 2009
In WIP Completion Screen (SerialMovePage) , we had a requirement to display EID field and the counters based on item.
We were able to achieve that.
The Issue is that if we try to do wip completion consequently for 2 or more times, EID field is not being displayed on the screen.
Please help us in solving this issue.
Thanks,
Anjana.
written by Anju , March 13, 2009
In SerialMove Page we have something like getNextNavigationField("serial");
Please let us know about this field if anyone is aware of the above method
Thanks
Anju.
written by Anju , March 13, 2009
Among the Customization Methodologies, we are using Copy method which is just taking the original java file from oracle and then remaning it and then working on it.
So our code has all the seeded functionalities along with that we have added 4 additional Fields.
Among them one field is EID.
In that field we have done some validations as well.
Now the isssue is when we try to do a transaction (WIP Completion) consequently for 2 or more times, First 2 times EID field will be visible on the screen and all the validations will happen perfectly and then 3rd time the EID field will not be visible on the screen.
We are not able to figure out why it is so.
As of now we don't have the log messages.
Our New code has "4 additional fields and their corresponding validations" apart from seeded one.
Thanks,
Anjana.
written by Anju , March 13, 2009
Currently we have some problem with our instances.
That's y we could not get the Log details.
Once the instance is up we will get the log details.
Thanks,
Anjana.
written by Yogasri , April 07, 2009
I asked few questions in past but could not work on that yet. I followed your instructions to set up MWA GUI on client machine and successfully able to run the hello world program. Now I would like to do the extention to the standard page RcptGenPage. Can you please answer my questions ?
1) As I am extending only the FieldExit class on Item, do I need to extend the function, page also or is it sufficient if I just create a class that extends the field listner class?
2) Once I create the class file(s) where should I put it on my client machine, I would like to test the change locally and then move it to server.
3) Currently my classpath variable is showing the path as : .;C:Program FilesJavajre1.6.0libextQTJava.zip this is the path of JDeveloper ver 10.1.3 etc...but I
downloaded the JDK1.8 as per your setup notes into a different directory called C:OA_Patch. So do I need to change my CLASSPATH?
I know I am asking too many question but I could not find answers to these questions. Please help me.
Regards,
yogasri
written by Yogasri , April 07, 2009
Is there is a way to keep them on my client machine (instead of deploying them to the server). Because I dont have access to the server's $CUSTOM_TOP/java
direcory....
I appreciate your response.
Regards,
yogi
written by Yogasri , April 08, 2009
If so, please tell me the files or directories I need to get from server and their locations.
Senthil, please excuse me for asing so many questions.
Regards,
yogasri
written by OmkarLathkar , April 16, 2009
We have used setEnableAcceleratorKey for buttons and in button prompts we have used & symbol.
In the form, the corresponding part of the button name gets highlighted.
But there is a problem with this. We are not able to perform the button functionality from the telnet session when we press
the highlighted letter on the key pad.
e.g. For button defined as prompt 'D&one', when we press key 'o' the done button funcionality is not excecuted.
We have done following steps to make 'o' highlighted in form.
mDoneButton.setEnableAcceleratorKey(true);
addFieldBean(mDoneButton);
mDoneButton.addListener(/*Class name correspondin to the listener class*/);
mDoneButton.setPrompt("D&one");
Please suggest what additional code is need so that when i press 'o' or any combination of keys
like ctl + o, the done button functionality gets executed.
Omkar Lathakar
written by OmkarLathkar , April 16, 2009
I tried Alt+o. It does not work.
I have seen the hot keys working in telnetSession1.showPromptPage.
In other MWA standard pages also the hot keys dont work as Alt+charactor combination.
Please help..
Omkar
written by abhishek tyagi , April 29, 2009
I have extented the Standard Lot Serial Page. In that there is field Case_qty. This quantity is TextFieldBean. Problem is when i enter 999 in this field the counter goes to other field. But when i enter quantity greater then 999 i.e. 1000 or more,The RF device automatically takes it to 999 only.When i checked it in the MSCA screen, i found if i enter any 4 digit value,and tab out from that field, the counter doesn't goes to next field.It doesn't dispaly any exception or message. It is actually not taking any value of 4 or more digits value. I checked out the CaseqtyExited method in the standard listner, but couldnt find and validation related to it. Can you please guide me as to which might be the case, that this behaviour is occuring. Is any change needed in the property setup or any other thing?
Thanks in advance.
Abhishek
written by abhishek tyagi , May 03, 2009
1) Have you added a new filed called case_qty in the ORacle Std page using extn?
----- NO. Its not the Non standard customisation. I have created a seperate custom page. This custom page contains the case_qty feild
This field is also present in the Standard page.
2) If Case_qty is not added by you, what is the behaviour when you try to use the std oracle page without any extension?
----In standard page the behaviour is perfect. It is taking the value more then 999.
written by abhishek tyagi , May 05, 2009
Initially i was using QtyBean.getValue. as the qty bean was TextfieldBean
Now when i used QtyBean.getNumberValue by making QtyBean as NumberFieldBean, I noticed that the Case_qty field has started taking 4 digit value and able to exit from that field
I think when i give 1000 as the value, MSCA architecture automatically takes it as 1,000. So this comma(,), i think was creating the problem.
getNumberValue method, removes the comma from the value and takes it as complete number value.
Please correct me if i am interprating the things wrongly.
Moreover, Can you please explain me the scope for TextFieldBean and NumberFieldBean.
Thanks and Regards,
Abhishek.
written by BVSN Raju , June 02, 2009
I am new to the World of Oracle MSCA Applications and presently on a demo work with the client for showing the capabilities of MSCA via telnet screen as we are not having any Handhelds.
Requirement as follows
I Have enabled a DFF in WIP issue Transaction Screen which is poping up when i am using the base Oracle Form for making the transaction,However i am trying to do the same in the telnet session,E'thing else comming up but the DFF which i have enabled is not showing.How i can achieve the DFF to be visible on the telnet applciation.
Regards,
Raju BVSN
written by Himanshu Joshi , June 05, 2009
I have developed an application in MSCA. It is working fine on Development server. But after migration on test/Stage server, when I am accessing the page through the menu on stage server, It is showing only.
I have tried to find issue through INV and system logs, but nothing is coming in logs.
Menu ,function and java classes are already migrated to test server.
MWA_SERVER is also bounced.
Please suggest some way to find solution.
Thanks & Regards
Himanshu Joshi
written by sandeep nair , June 18, 2009
My custom java page is not showing up. There is no error as such but in the system log i could check see that first its adding all field beans and then removes them one by one. There is no removeFieldBean method used anyewhere in the page. Please suggest.
Thanks
Sandeep N
written by ReachPadma , July 01, 2009
I read your article on the Customization using extending and did the same for adding a new field to the PackUnpackSplitPage page. I created the Page, Function and theL Listener for it and deployed into it.
After changing the AOL function (also tried restarting the server). When I execute the Page, it gives me the old page without the new field and when given Ctrl+X and checked it shows the original class instead of the newly customized class.
How to go about verifying that my customized class is fetched or not and can you give me some options where i could have gone wrong?
Thanks & Regards,
Padma
written by Alexander1 , July 30, 2009
Thank you for this tutorial!!!
I have some problem... I need to put custom logic in oracle.apps.wms.ts.server.MainPickFListener class. When i try to make XXMainPickFListener i found that call statement to MainPickPage found in other class TdPage ... when found all calling path i there is 4 clases(i need to XX all of them???), and worst that the void which contain call statement have private method calling, so i can overwrite it...
Please, help me to find the way to do this customization!!
ps sorry for my bad English
written by umagudi , August 07, 2009
Did we need to change the owner of the modified files as well?
Thanks and Regards
uma
written by umagudi , August 10, 2009
When i executed the page, it gives me the old page without the new field and when i given Ctrl+X and checked it shows the original class instead of the newly customized class
I doubted that my newly customized files and original files are having different owners.
Here my question is do we need to change the owner of the file as well? or not.
written by umagudi , August 13, 2009
I am trying to add New filed to PackUnPackSplitPage, while extending this class i am getting this compilation error.
javac MOTPackUnpackSplitPage.java
/home/applsb2/product/EMOASB02/common/java/oracle/apps/wms/pup/server/PackUnpackSplitPage.java:55: error while writing oracle.apps
.wms.pup.server.PackUnpackSplitPage.SerialClass: /home/applsb2/product/EMOASB02/common/java/oracle/apps/wms/pup/server/PackUnpackS
plitPage$SerialClass.class (Permission denied (errno:13))
protected class SerialClass
^
First i Modified the PUPFunction to invoke my MOTPackUnpackSplitPage
Here is the MOTPackUnpackSplitPage java file
public class MOTPackUnpackSplitPage extends PackUnpackSplitPage
implements MWAPageListener
{
MOTPackFListener mPUSFListener;
NumberFieldBean mReceiptNum;
NumberFieldBean mReceiptNum1;
private boolean mInitPromptSuccess;
public MOTPackUnpackSplitPage(Session session)
{
super(session);
//TCS
mReceiptNum = new NumberFieldBean(ses);
mReceiptNum.setName("REFER");
mReceiptNum.setPrompt("REFER");
mReceiptNum.addListener(this);
mReceiptNum1 = new NumberFieldBean(ses);
mReceiptNum1.setName("REFER1");
mReceiptNum1.setPrompt("REFER1");
mReceiptNum1.addListener(this);
//TCS
addFieldBean(mReceiptNum);
addFieldBean(mReceiptNum);
Vector vector = getFieldBeanList();
/* FieldBean receiptNo = (FieldBean)vector.elementAt(0);
FieldBean receiptNo1 = (FieldBean)vector.elementAt(1);
MOTPackFListener mList = new MOTPackFListener(this);
receiptNo.addListener(mList);
receiptNo1.addListener(mList); */
}
protected void initPackDisplay()
{
mReceiptNum.setHidden(false);
mReceiptNum1.setHidden(false);
super.mMoreBtn.setHidden(true);
}
public void pageEntered(MWAEvent mwaevent)
throws AbortHandlerException, InterruptedHandlerException, DefaultOnlyHandlerException
{
super.pageEntered(mwaevent);
}
public NumberFieldBean getMReceiptNum() {
return mReceiptNum;
}
public void setMReceiptNum(NumberFieldBean receiptNum) {
mReceiptNum = receiptNum;
}
public NumberFieldBean getMReceiptNum1() {
return mReceiptNum1;
}
public void setMReceiptNum1(NumberFieldBean receiptNum) {
mReceiptNum1 = receiptNum;
}
protected void initPrompts(Session session)
throws SQLException
{
super.initPrompts(session);
String s = (String)session.getObject("ORGCODE");
if(m_txntype == 1)
{
mReceiptNum.setPrompt("REFER");
mReceiptNum1.setPrompt("REFER1");
}
}
}
Here i need to modify the modifier for the Seriel Class?
How can proceed pls suggest?
Thanks and Regard
Uma
written by umagudi , August 14, 2009
I am able to compile the file by just renameing exiting file(PackUnPackSplitPage) to XXXPackUnpackSplitPage. But
When i extending the PackUnpackSplitPage in XXXPackUnpackSplitPage only i am getting this compilation problem.
Here my requirement needs to add two extra fields and with some validation. I structed here. suggest me any other approch?
thanks and Regards
uma
written by kiran gujjari , August 18, 2009
This is Kiran, I am wokring on cycle count java changes
issue i am facing is the changes are not getting reflected at all even after mobile bounce
we moved files to the xxxwms_top/jar/oracle/apps/inv/count/server
from the log I can see that it is still old class file getting executed.(class file which need to get refreshed is not happening)
This means bounce is not happening properly ? or is this a path issue . Please suggest
Thanks,
Kiran
written by kiran gujjari , August 18, 2009
public class XXXCycleCountPage extends CycleCountPage
{
The custom class file , i have placed it in WMS custom top
This is already existing file -> I have made changes to this file they are not getting reflected
written by kiran gujjari , August 18, 2009
the class file is compiled without errors, only issue we can see is bounce is not happening for this custom top
and also i have checked this path is included in $AF_CLASSPATH as well
please suggest
written by umagudi , August 19, 2009
simple doubt that with out extending the database, can i extend the user interface?
I am trying to extend PackUnpackSplitPage, after updated file i placed at server, connection getting lost.
I just added on
/* UtilFns.log("Recipt Initialized");
mReceiptFld = new NumberFieldBean(ses);
mReceiptFld.setName("RECEIPT");
mReceiptFld.setEditable(true);
mReceiptFld.setValue("RECEIPT")
UtilFns.log("Recipt Initialized");*/
addFieldBean(2,mReceiptFld);
mReceiptFld.setHidden(false);
mReceiptFld.setPrompt("RECEIPT")
Thanks and Regards
written by maheswara rao , August 20, 2009
How should i proceed, If any one extended the pack screen please let me know
Thanks and Regards
uma
written by srini p , September 11, 2009
Ref-->Extend a standard Oracle MSCA/MWA page.
It was a nice article. *****After extending all three Java files deploy the class files into the Apps Instance. Could you please elaborate this step.
Thanks,
Srini
written by Irawan , November 05, 2009
need your help, how to set transfer LPN in field pick load page not mandatory, i try use mwa personalization framework, but it did not work, because default value for that field is mandatory, is it possible to change it ?
Thanks
written by Irawan , November 11, 2009
Thanks for responded, how to customize pick load and pick drop page, i cannot find function class for both page ?, do have step by step example for customize that page, for example add new field in that page ? i'm very glad if there is some document step by step to customize that page. can you email me the document if you have ? please send to This e-mail address is being protected from spambots. You need JavaScript enabled to view it '> This e-mail address is being protected from spambots. You need JavaScript enabled to view it
i'm waiting your update ... thank you senthil
written by Sreeram Vaskuri , December 30, 2009
I am extending a class Like : oracle.apps.wms.td.server.TaskSignonPage.class.
In This class Submit button action i want to add my custom code to call my customization page(New Page)
But Button variablle declared as Private Like : private TdButton mSubmitBtn;
I can i call the Private Submit button into the extended or Customized class.
In this Submit Button i want to call the the customization page Like
racle.apps.wms.td.server.XXMainPickPage In this page i have added a one filed name like "Pick" Code is like : xx_MasterCasesFld = new TextFieldBean();
xx_MasterCasesFld.setName("XX_MASTER_CASES");
xx_MasterCasesFld.setEditable(false);
xx_MasterCasesFld.setHidden(false);
xxinitLayout();
addListener(this);
This is only display filed,but when i am try to navigate to this page filed is always displayed on top of the page
I need the like last of below the QTY filed.
3. When the page loads i want to get the Required Fileds value to set the calculated value in the customized field.
Colud you please suggust me how to get that value Oracle Base page is like : MainPickPage.class.
4. Do i need to create a new Listener for display feild values
Give a reply ASAP please
Thanks & Regards
Sreeram
written by Kiran Gujjari , March 09, 2010
I have created a new custom file XXXMOVEMENUITEM and placed at the custom application top location i.e
XXXWMS_TOP/java/jar/oracle/apps/wip/wma/MENU/ZBRMOVEMENUITEM
Also new function created in AOL is pointing to oracle.apps.wip.wma.MENU.ZBRMOVEMENUITEM
When compiled i did not see any issues, class file generated succesfully.
After mobile bounce, when I tried to navigate I am getting below message in system.log
[Tue Mar 09 00:13:00 CST 2010] (Thread-16) Couldn't load given class: oracle.apps.wip.wma.MENU.ZBRMOVEMENUITEM
java.lang.ClassNotFoundException: oracle.apps.wip.wma.MENU.ZBRMOVEMENUITEM
at java.net.URLClassLoader$1.run(URLClassLoader.java:200)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:18
at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
at java.lang.ClassLoader.loadClass(ClassLoader.java:252)
at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:320)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:169)
at oracle.apps.mwa.container.ApplicationsObjectLibrary.loadClass(ApplicationsObjectLibrary.java:1479)
at oracle.apps.mwa.container.ApplicationsObjectLibrary.getFirstApplicationName(ApplicationsObjectLibrary.java:846)
at oracle.apps.mwa.container.MenuPageBeanHandler.pageExited(MenuPageBeanHandler.java:21
at oracle.apps.mwa.container.StateMachine.callListeners(StateMachine.java:166
at oracle.apps.mwa.container.StateMachine.handleEvent(StateMachine.java:86
at oracle.apps.mwa.presentation.telnet.PresentationManager.handle(PresentationManager.java:743)
at oracle.apps.mwa.presentation.telnet.ProtocolHandler.run(ProtocolHandler.java:849)
Please suggest.
Thanks,
Kiran Gujjari
written by Kiran Gujjari , March 09, 2010
echo $CLASSPATH doesnt contain $ZBRWMS_TOP/java/jar.
So this could be the reason ?
But I am able to compile the files, issue is coming only at the time of run time.
Thanks,
Kiran
written by Kiran Gujjari , March 11, 2010
i have one more issue :-)
i am working on R12 instance, when trying to decompile the class file of MSCA below is the message
D:....>jad -sjava MovePage.class
Parsing MovePage.class...The class file version is 49.0 (only 45.3, 46.0 and 47.
0 are supported)
49.0 which means it is of 1.5 version in R12 instance, but same class file from 11i instance is getting compiled without any issues.
From the analysis I understood that JAD is supporting only till major.minor version 46.0 and 45.0
It would be really helpful for me if u can suggest me how I can decompile the R12 classfiles with JAD, is there any other utility for this.
this is stopping my development activity ;-(
Thanks,
Kiran
written by Senthilkumar Shanmugan , March 11, 2010
written by Yogasri , March 19, 2010
I am not very much familiar with OAF, MWA technologies. I am given a requirement as detailed below. Please help me with the solution.
In the page "Mobile WMS Pick Load" , there are some fields like Sub Inventory, Item, Req_Qty etc fields and all of them have a "Confirm" field for each of them.
But there is a field called "Xfer LPN" but there is no "Confirm" field for that. My customer wants to have "Confirm" field for "Xfer LPN".
So I tried to look at the field definitions and noticed that there is a field "MAIN.XFER_LPN_CONFIRM" field. So I checked the properties for this filed. Especially, the "Rendered" is set to True. But this fioeld is not seen on screen.
So My question to you is :
1) Is that teh correct fieeld that captures the "Confirmation" for the Xfer_LPN"? If so, why is it not displayed on the screen inspite of the "endered " is set to True?
2) How can we meet this requirements?
Please help me with this issue. Thanks
Regards,
Sri
written by Yogasri , March 19, 2010
Can u please tell me where / how I can look for the code please. Thanks
Sri
written by Yogasri , March 19, 2010
So based on what you siad, can I say that it is not something that can be done with personalization but should be considered as an extension?
written by Rupa , March 24, 2010
I have extended one seeded page for customization. But the Locator field is not working. I am getting the error as Could not create Locator.
I am able to see the LOV. But once I select some value and enter then I am getting above error. After this the cursor is not moving further. Please can you guide me on this? This is bit urgent.
Thanks,
Rupa
written by Rupa , March 25, 2010
Thanks for the quick reply.
Actually in the log I can't see any error.
This is also not a error but the status message displayed at the bottom of the screen when I choose any value from Locator LOV.
Thanks,
Rupa
written by Senthilkumar Shanmugam1 , March 25, 2010
Enable the logging level to "trace" and restart the MSCA server port and chk for logs
Refer my article to set up log level :http://www.apps2fusion.com/at/ss/225-mwa-setup-testing-error-logging-and-debugging
Thanks and Regards,
Senthil
written by Kiran Gujjari , April 07, 2010
I have extended a page and placed it under custop application path $ZBRWMS_TOP/java/jar/oracle/apps/wip/wma/MENU
But I am getting ClassNotFoundException
We have added the custom java path to CLASSPATH as well
echo $CLASSPATH shows above entry.
environment file is also having entry for ZBRWMS_TOP
and mobile services also bounced.
Please can you suggest if we need to make entry of this path at some other place as well .
Thanks,
Kiran
written by Kiran Gujjari , April 08, 2010
Yes it is pointing to correct class file same.
Thanks,
Kiran
written by Kiran Gujjari , April 08, 2010
I have extended MOVEMENUITEM class file and in new AOL Function I am calling extended file as below
From function = oracle.apps.wip.wma.MENU.ZBRMOVEMENUITEM
ZBRMOVEMENUITEM is moved and compiled under $ZBRWMS_TOP/java/jar/oracle/apps/wip/wma/MENU
standard java top = $JAVA_TOP
custom application java top = $ZBRWMS_TOP/java/jar
custom application java top has been added to CLASSPATH as below and set in env file as well
CLASSPATH = $ZBRWMS_TOP/java/jar:$CLASSPATH
Thanks,
Kiran
written by Senthilkumar Shanmugam1 , April 09, 2010
I am afraid that you are not following the correct approach. If you look at my article above, I have created the extended Java file under a new dir called "XXX" .. In your case both the std and extended java file have the same package str? Am i right?
Kindly clarify.
Thanks and Regards,
Senthil
written by Kiran Gujjari , April 10, 2010
Yes you are right.
But I don't think it will make any difference, because I have same issue with my CustomScanManager class.
I have created a new class CustomScanManager for scan logic on picking page and placed under $ZBRWMS_TOP/java/jar/xxx/custom
But the same is working fine if this class is placed under $JAVA_TOP/xxx/custom
As mentioned above $ZBRWMS_TOP/java/jar entry is made in CLASSPATH. As long as we have this entry in CLASSPATH they should get picked up, which is not happening.
Please suggest.
Thanks,
Kiran
written by padmala , April 12, 2010
Hi Senthilkumar,
As you told in your article. I had extended this page and got intended results. But I have few doubts. This page got Load/Exit, Continue/Ship (S), Missing Items (M), Missing LPN (L) buttons. But why do you need only write code for Continue button. In yout article you mentioned that
//This method is needed to make LOVs and some Submit buttons to work properly after extension
//The purpose of this method will be explained in later articles.
Did you explain this in later articles? If so could you point those articles to me. I am greatly appreciated for this. Any how thanks for maintaing such a wonderful site.
Regards.
Srini.
written by San_orcl , June 04, 2010
I am new to MSCA and I have to customize the MainPickPage. I have read your comments in above posts "problem with MainPickFListener" , But the problem is that, the page has been called after 2-3 layers of pages and dynamically driven based on some logic at pervious page (Next available Tasks). My Question is If we customize only this page . How I will make sure that our custom page will be called through the same process(through 2-3 pages). Also the design of this page does not allow a direct call from form function.
Also please advice the best way to customize the MainPickPage(throughout layers).The customization we are doing is , when user will click the Load and Drop button , a new custom page should open.
Please find below the navigation in R12
5. Tasks -- 1 directed Tasks -- 1. Interleaved tasks -- 1 Pick any Task
Thanks in advance
written by S Kumar , June 26, 2010
I am very new to MSCA . This site is very useful for beginners and helped me a lot. Thank you very much Senthil for starting this forum.
I am facing an issue that the standard Procedures pageEntered and pageExited is not getting fired.
public void pageEntered(MWAEvent mwaevent)
throws AbortHandlerException, InterruptedHandlerException, DefaultOnlyHandlerException
{
UtilFns.log("Page - Page Entered");
FileLogger.getSystemLogger().trace("SMART Country Of Origin Page - Page Entered");
super.pageEntered(mwaevent);
}
public void pageExited(MWAEvent mwaevent)
throws AbortHandlerException, InterruptedHandlerException, DefaultOnlyHandlerException
{
UtilFns.log("Page- Page Exited");
FileLogger.getSystemLogger().trace(" Page - Page Exited");
}
Ant pointers why these procedures are not triggering?
Thanks in advance!!
Regards,
S Kumar
written by S Kumar , June 26, 2010
I found the root cause. I have not attached the listener to page.
Regards,
S Kumar
written by murali , July 09, 2010
Another is , i have two screens after completion of entries in first screen then we have to move to second screen and complete transaction in second screen.
But the requirement is to complete the transaction in first screen itself before that we have to get a value from second screen field and complete the process in first screen itself(we should not go to second screen at all).
Can i get the approach and required things to do for achieving this
written by Mohan11 , July 09, 2010
1.Actually i am new to MSCA module. I want to know how to do validations(should we write procedures and call) like if we enter po num and the corresponding supplier,notes,release,item,description,quantity,uom should be displayed.
2.how can we get values into field from database.
can u just breif about this things. and if required i will mail to you my requirement.
----They dont want to build custom page.
Regards
Murali
written by Ravindra Dande , September 28, 2010
How to enable the DFF at WIP job move transactions page on MSCA screen? I have enable dthat DFF on Apps forms, I want to scan some value and put it in that DFF. How to do this ? Could you please help?
Regards
Ravindra
written by Senthilkumar Shanmugam1 , September 28, 2010
If you are on 11.5.10 or 12.1 you can use MWA personalization framework to enable DFF. Else you have to go for extension or customization. For the use of scanning, you may have to use CustomScanManager.java
Hope this helps.
Thanks and Regards,
Senthil
written by AK1 , October 07, 2010
I have new requirement like I need to activate the LPN load menu on certain responsbility. Currently this load menu is visble under wms mobile super user responsbility.. What are steps invl**ed to activate the Load menu under new responsbility.
function: 'WMS_MANUAL_PICKING_MOB'
Webhtml : oracle.apps.wms.td.server.TaskSignonFunction
Thanks
ak
written by AK1 , October 07, 2010
I have new requirement like I need to activate the LPN load menu on certain responsibility. Currently this load menu is visble under wms mobile super user responsbility.. What are steps invl**ed to activate the Load menu under new mobile responsbility.
function: 'WMS_MANUAL_PICKING_MOB'
Webhtml : oracle.apps.wms.td.server.TaskSignonFunction
my oracle version 11.5.10.1
Thanks
ak
written by AK1 , October 07, 2010
Thanks for the update. Both Responsibilities are using same menu & function, only difference is while perorm LPN loading the load button is not avaliable one responsbility but other responbility have...how we can do this setup /restrication...I tried MWA personalization...but even thats not also working...
Plz advise,
Thanks
ak
written by Alexpeter , October 07, 2010
I am very new MWA application. I just installed netbeans IDE 6.91. but i am not able view jar file //help here please ...how can view the jar file & clsaases
written by Senthilkumar Shanmugam1 , October 08, 2010
If that is the case, you have to check what is the logic used to hide/load the button in the source code.
Alexpeter -
Unzip/ expand the jar files and extract the java files. For class files you can use any decompiler to view the source.
Hope this helps.
Thanks and Regards,
Senthil
written by GirishNarne , October 12, 2010
I am extending a standard wms page to default a value in the LOT field. The page is the Subinventory Transfer page. I have extended the function and the page classes and pointed the custom function to the custom page. The issue is that the ItemLOV in the custom page shows results whereas the standard page works fine. Below is my code. Could you please let me know if I am missing any step. I dont get any error message in the trace file.
Function class
------------------
import oracle.apps.inv.invtxn.server.SubXferFunction;
import oracle.apps.inv.utilities.server.UtilFns;
public class xxSubXferFunction extends SubXferFunction {
public xxSubXferFunction() {
super();
UtilFns.trace("Inside Function ");
setFirstPageName("xx.oracle.apps.inv.invtxn.server.xxSubXferPage");
}
}
Page Class
-------------
public class xxSubXferPage extends SubXferPage {
public xxSubXferPage(Session paramSession) {
super(paramSession);
UtilFns.trace("xxSubXferPage Constructor");
}
public void pageEntered(MWAEvent e) throws AbortHandlerException,
InterruptedHandlerException,
DefaultOnlyHandlerException {
ses = e.getSession();
super.pageEntered(e);
UtilFns.trace(" xxSubXferPage - pageEntered ");
}
public void pageExited(MWAEvent e) throws AbortHandlerException,
InterruptedHandlerException,
DefaultOnlyHandlerException {
ses = e.getSession();
super.pageExited(e);
UtilFns.trace(" xxSubXferPage - pageExited ");
}
public void specialKeyPressed(MWAEvent e) throws
AbortHandlerException,
InterruptedHandlerException,
DefaultOnlyHandlerException
{
ses = e.getSession();
super.pageExited(e);
UtilFns.trace(" xxSubXferPage - specialKeyPressed ");
}
Session ses;
protected xxSubXferFListener localSubXferFListener;
}
Regards,
Girish.
written by GirishNarne , October 13, 2010
Thanks for the information.
Regards,
Girish.
written by Suresh Shan , October 14, 2010
I created the custom java class extends from RcptGenFunction,i attached the java class into function.
When i try to open the fnction, the screen automatically logged out and came to login screen with below error
" Unexpected error occurred, Please chec > '
can you please suggest on this.
Thanks
Suresh
written by Senthilkumar Shanmugam1 , October 14, 2010
Can you be more clear on your query. Please put some useful log information so that we can take a deep look.
Thanks and Regards,
Senthil
written by Vipul , November 03, 2010
I have installed oracle 11.5.10.2 using XP professional enviroment.i am able to start MWA server.But when i am trying to connect to MSCA application using telnet ,it dropping connection immediatly.
can you please help.
Thanks and regards
vipul
written by shailendrasingh , December 21, 2010
is there any mehod for setting focus forfield on msca new screen.
thanks
shailendra
written by shailendrasingh , December 22, 2010
i am extending a page ,and now i want to remove listner of that page of a Button and want to add new listner
can u please tell me how to do it.
thanks
shailendra
written by hi senthil , December 22, 2010
what is your suggestion?
thanks for help
written by oraclemscabigproblemforus , December 22, 2010
we are sendig custom code...
also we have a question, if we want to set length of item field, is it possible?
Our customer have a special barcode(datamatrix) which created by its vendors and barcode length is bigger then items field length (40 characters).
For these barcodes, we customized inv_scan manager, we will pars the barcode, but when we scan barcode on item field, some characters are missing (after 40th).
what is your suggestion?
thanks for help
package xxmp.oracle.apps.inv.invtxn.server;
import oracle.apps.inv.invtxn.server.RcptTrxFunction;
import oracle.apps.mwa.container.FileLogger;
public class xxmpRcptTrxFunction extends RcptTrxFunction
{
public xxmpRcptTrxFunction()
{
super();
setFirstPageName("xxmp.oracle.apps.inv.invtxn.server.xxmpRcptTrxPage");
FileLogger.getSystemLogger().trace("----SAYFA : xxmp.oracle.apps.inv.invtxn.server.xxmpRcptTrxPage");
}
}
package xxmp.oracle.apps.inv.invtxn.server;
import oracle.apps.inv.invtxn.server.RcptTrxPage;
import oracle.apps.mwa.beans.TextFieldBean;
import oracle.apps.mwa.container.FileLogger;
import oracle.apps.mwa.container.Session;
import oracle.apps.mwa.eventmodel.AbortHandlerException;
import oracle.apps.mwa.eventmodel.DefaultOnlyHandlerException;
import oracle.apps.mwa.eventmodel.InterruptedHandlerException;
import oracle.apps.mwa.eventmodel.MWAEvent;
import oracle.apps.mwa.beans.ButtonFieldBean;
import oracle.apps.mwa.beans.TextFieldBean;
public class xxmpRcptTrxPage extends RcptTrxPage
{
TextFieldBean mTxtField;
public xxmpRcptTrxPage(Session s)
{
super(s);
//this.addListener(this);
//Add a new button and set the properties.
mTxtField = new TextFieldBean();
mTxtField.setName("XXMPBARCODE");
mTxtField.setPrompt("Barcode");
mTxtField.addListener(xxListener);
mTxtField.setValue("");
this.addFieldBean(3, mTxtField);
}
public void pageEntered(MWAEvent e) throws AbortHandlerException
{
super.pageEntered(e);
initCustomPage(e);
}
public void initCustomPage(MWAEvent e) {
/* AccountLOV Transaction_Account;
Transaction_Account = new AccountLOV();
Transaction_Account.setInputParameters(new String[] {
"", "ORGID", "oracle.apps.inv.invtxn.server.RcptTrxPage.Transaction_Account"
});*/
getAccountLOV().setInputParameters(new String[] {
"", "ORGID", "oracle.apps.inv.invtxn.server.RcptTrxPage.Transaction_Account"
});
}
xxmpRcptTrxFListener xxListener = new xxmpRcptTrxFListener(new Session());
}
package xxmp.oracle.apps.inv.invtxn.server;
import oracle.apps.inv.invtxn.server.RcptTrxFListener;
import oracle.apps.mwa.container.Session;
public class xxmpRcptTrxFListener extends RcptTrxFListener
{
public xxmpRcptTrxFListener(Session s)
{
super(s);
}
}
written by oraclemscabigproblemforus , December 22, 2010
we can set length of item field(80). but after this customization, we have to set lov's for all fields. is it normal?
thanks
written by oraclemscabigproblemforus , December 22, 2010
if we change item field length, we have to set item lov, subinventory lov, account lov, locator lov ...
is it true?
written by Venkata Ramesh , December 24, 2010
My current page is XXXXMainPickPage4.java and from this page i am trying to call XXXXPickDropFListener4.java class as mentioned below.
But i am getting the ClassCastException.
XXXXPickDropFListener4 pdPage;
pdPage = (XXXXPickDropPage4)session.getCurrentPage(); // where the Current Page is XXXXMainPickPage4.java.
Compiling is fine but when i am trying to run the Mobile application, i am getting the following error.
[Fri Dec 24 11:47:51 GMT 2010] (Thread-14) MWA_PM_UNEXPECTED_ERROR_MESG: Unexpected error occurred, Please check the log.
java.lang.ClassCastException: xxx.oracle.apps.wms.td.server.XXXXMainPickPage cannot be cast to xxx.oracle.apps.wms.td.server.XXXXPickDropPage4.
Can you please help to resolve the issue?
Thanks in advance.
Ramesh.
written by Venkata Ramesh , December 24, 2010
XXXXPickDropPage4 pdPage;
XXXXPickDropPage4 pdPage=(XXXXPickDropPage4)session.getCurrentPage(); // where the Current Page is XXXXMainPickPage4.java
Apologies for inconvenience.
Regards,
Ramesh.
written by ss1 , December 24, 2010
What is the base class for XXXXPickDropPage4 and XXXMainPickPage4?
Why are you tupe casting XXXXPickDropPage4 for getCurrentPage()?
How do you invoke call to the next page?
Kindly Clarify
Thanks and Regards,
Senthil
written by Venkata Ramesh , December 24, 2010
The base class for XXXXPickDropPage4 extends XXTdPage and XXXXMainPickPage extends XXConfigPage.
The reason for type casting is , i have a oracle function under Submit method in XXXXPickDropPage4 which needs to be called in XXXXMainPickPage4.
public class XXXXMainPickPage extends XXConfigPage implements ConfigConstants
{
public static boolean fetchNextTask(MWAEvent mwaevent)
throws AbortHandlerException
{
I have a function under this method which results in yes or No.
If Yes
{
buttonfieldbean.setNextPageName("xxx.oracle.apps.wms.td.server.XXXXPickDropPage4"); // This is working fine.
}
else
{
if No
Then without going into XXXXPickDropPage4 page , i want to call Submit method which is under XXXXPickDropPage4 from XXXMainPickPage4 only.
For this functionality, what i have done is , i tried to create and object of XXXXPickDropPage4 in XXXMainPickPage4 and then with that object i tried to call the Submit method.
So the session belongs to XXXMainPickPage4 but action belongs to XXXXPickDropPage4.
For this only its throwing me error.
}
}
Please correct me if my understanding or my approach is wrong and let me know if further details are required.
Regards,
Ramesh.
written by Venkata Ramesh , December 24, 2010
Actually one of my client dont want to Navigate all the Pages in some Particular condition. This is to save the time of operation.
So want to add the actions that were belonged to other pages with in the same/ Current page itself.
Regards,
Ramesh.
written by shailendrasingh , January 05, 2011
i want to extend PO reciept for specifcally PO prompt,
for that i am creating three classes
1GSIExtRcptGenFun extends RcptGenFunction
2.GSIExtRcptGenPage extends RcptGenPage
3.GSIExtRcptGenFListener extends RcptGenFListener
i have did all the steps you have given above ,
but the problem is after accepting Org code the contol is returning to inbound menu.
the actual page is not getting display.
following are the debug file contains
java.lang.reflect.InvocationTargetException
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
at oracle.apps.mwa.container.StateMachine.loadPage(StateMachine.java:1405)
at oracle.apps.mwa.container.StateMachine.handleEvent(StateMachine.java:1056)
at oracle.apps.mwa.container.StateMachine.handleEvent(StateMachine.java:89
at oracle.apps.mwa.container.StateMachine.handleEvent(StateMachine.java:1185)
at oracle.apps.mwa.presentation.telnet.PresentationManager.handle(PresentationManager.java:743)
at oracle.apps.mwa.presentation.telnet.ProtocolHandler.run(ProtocolHandler.java:850)
Caused by: java.lang.NullPointerException
at oracle.apps.inv.rcv.server.RcptGenPage.initLayout(RcptGenPage.java:340)
at oracle.apps.inv.rcv.server.RcptGenPage.(RcptGenPage.java:285)
at xxx.custom.server.GSIExtRcptGenPage.(GSIExtRcptGenPage.java:20)
... 10 more
[Wed Jan 05 02:05:02 CST 2011] (Thread-1
SM_EXCEPTION: Exception occurred with user DHARNE_K java.lang.NullPointerException
at oracle.apps.inv.rcv.server.RcptGenPage.initLayout(RcptGenPage.java:340)
at oracle.apps.inv.rcv.server.RcptGenPage.(RcptGenPage.java:285)
at xxx.custom.server.GSIExtRcptGenPage.(GSIExtRcptGenPage.java:20)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
at
please look in this issue .
thanks
shailendra
written by shailendra , January 05, 2011
very thanks for quick reply
the problem was in menu i solved it
thanks
shailendra
written by Venkata ramesh , January 12, 2011
In one of the pages of MSCA, there are 6 text boxes and 2 buttons. Out of which 1,2,4 text fields are non editable and other 3 text fields are editable. When i open this page the cursor will directly go to field number 5 which is editable and user will enter the data and other fields are pre populated from an oracle proc.
Now the problem is when i am trying to load this page , the first field (Text Field number 1)is getting scrolled up making it not visible in Mobile.
But when i move the cursor upwards then the first field is comming down and getting visible.
I have not writted any code to hide the field but even then this problem occurs.
Is it a problem with layout of the page or some problem in my code?
Please advice.
Regards,
Ramesh.
written by Moahmmed , January 24, 2011
my problem is when i scan same serial number twice it give my error " Serial Number already being used" , and keep the scanned serial in the text field .
what i want is to clear the text field when this error appears , how can i do it ?
thanks
Mohammed
written by PrabhakarReddy , February 03, 2011
I could not see any images in your Blog. I am not sure if you are aware of this issue. Anyway I am not able to follow your blog completely to the necessary settings!!
Regards,
prabhakar
written by PrabhakarReddy , February 03, 2011
I am currently working from my office and it has excellent internet speed.. Still I am not getting any images. Anyway I am good in Java and learnt a great bit in last couple of days using your blog. Currently I have customized the PickDrop page. but I am not sure how to call this custom page from menu.
oracle.apps.wms.td.server.TaskSignonFunction
This is what I see in the HTML menu, but not sure how it would end up calling my page. Without the images I am kind of stuck!!
Also on the side note, i am kinda inspiired looking at your blog and your dedication on replying patiently and clearly for various questions (same repeating to say the least). I am planning to write my own blog on techologies which I am good at like SOA (BPEL) , ADF, Java.
Keep up the good work and keep inspiring many!!
written by shailendrasingh , February 03, 2011
in your office might be some setting or privacy thats why you are not able to see images,
any way you can register your function class in function ,set your java function class in html class,and register menu in menu...
this is very simple.
thanks
shailendra
written by Prabhakar Reddy , February 04, 2011
Thanks for clarifications. Still i did not get the clarifications on customization of PickDrop page and its standard one. It is registered to oracle.apps.wms.td.server.TaskSignonFunction. I am not sure how to tell the system that instead of invoking PickDrop at nth level, call mine which is XXPickDrop page.
Regards,
Prabhakar
written by shailendrasingh , February 04, 2011
replace the html call you want to customize with your new XXPickDrop page
but you have to replace only function class .
so extend TaskSignonFunction class and make your own function class.
written by shailendrasingh , February 14, 2011
i have extended PO reciept form,
but after hitting Done button trsanction is getting suceess but instead of one line two line is getting inserted as recieving,please tell me what will be the reason.
thanks
shailendra.
written by shailendrasingh , February 14, 2011
i am the api is standard,
on donebutton exit event i am only generating some xml,
but suppose i am removing listner on Done button then its working fine,
but requirement is i have to generate xml after done button is getting hitted.
please reply
thanks shailendra
written by shailendrasingh , February 23, 2011
as an extra filter to filte load page.i am able to extend but unable to filter load page.
please give me some suggestion to how to do it
thanks
shailendra
written by Senthilkumar Shanmugam1 , February 23, 2011
Can you explain what do you mean by "i am able to extend but unable to filter load page?"
Thanks and Regards,
Senthil
written by shailendrasingh , February 23, 2011
in this the startup page is TaskSignonPage ,on this page i am adding one extra field.this page is used as a filter
after hitting done button new page "Load aus " page is displayed .the data on this page is result of some filtereation on TaskSignonPage .now i have added one more field "store Num" so now i want one more filteration criteria.
i have extended TaskSignonPage ,and added one field "store Num" and after hitting done button "load aus" page is coming but data on the page is not filter on extra field "
so how to filter data on "load aus" page.
thanks
shailendra
written by Manjula Rani , February 24, 2011
I need to customize the Order Picking form. The requirement is, once the order is picked and droped successfully, i need to call an API.
For this customization i need add my code in PickDropFListener.pickDrop() method. How can i acheive this by extending the seeded Listener. please guide me. Its urgent.
Manjula
written by Manjula , February 24, 2011
extended TaskSignonFListener to xxGSLTaskSignonFListener
extended TaskSignonPage to xxTaskSignonPage
in xxTaskSignonFunction, inside appEntered(), wrote setFirstPageName("oracle.apps.wms.td.server.xxdbdGSLTaskSignonPage");
in xxGSLTaskSignonFListener, inside fieldExited(), wrote super.fieldExited(); String s = ((FieldBean)mwaevent.getSource()).getName(); if(s.equals("EZP.TASKSIGNON_SUBMIT"))
submitted(mwaevent);
i have written a method submitted() which sets buttonfieldbean.setNextPageName("oracle.apps.wms.td.server.xxGSLCurrentTasksPage");
Now, my doubt is, in superclass TaskSignonFListener, inside fieldExited(), there is already one condition i.e. if s="EZP.TASKSIGNON_SUBMIT", then it sets buttonfieldbean.setNextPageName("oracle.apps.wms.td.server.xxGSLCurrentTasksPage");
Let me know whether my code takes to the custom page (xxGSLCurrentTasksPage) or not.
written by shailendrasingh , February 24, 2011
on "load "page whatever the data is coming i want it to filter based on "store num"
thanks
shailendra
written by Manjula , February 24, 2011
written by shailendrasingh , February 24, 2011
i need to tweek the logic and flow of msca part.
This has reference to the Picking Tasks generated after Pick Release (Internal Sales Order).
On a standard Task Sign on Page, user is prompted to choose Equipment, Sub-inventory & Device. Based on these parameters the Picking tasks are filtered & dispatched to the eligible resources (employee).
Apart from the above parameters, I have to add a field "Store Number" (Store Number is a Non WMS inventory Organization and we are doing Inter Org transfer based on ISO).
The requirement is such that the tasks that are dispatched to the Picker are filtered on the basis of the below parameters that are entered on the Task sign on page by the user:
•Equipment
•Sub-Inventory
•Store Number : (This is a custom field on the Task Sign on page)
•Devices
Please let me know if you need any more information.
thanks
shailendra
written by shailendrasingh , February 25, 2011
if you have time can tell me how to change the logic.
in standrad TdPage they have written a static method:public static boolean fetchNextTask(MWAEvent mwaevent)
the java logic and they have called a package WMS_PICKING_PKG.NEXT_TASK.
please tell me how to overwrite this method.
thanks
shailendra
written by shailendrasingh , February 25, 2011
in fetchNextTask() method i am not getting where the control is going on ,and also how the MainPickPage
is getting display,without knowing that how can i write filtration logic.how in seeded code the control is going on from "Discrete Picking" menu to MainPickPage.i didnt get this flow yet.
thnaks
shailendra
written by shailendrasingh , February 25, 2011
i have decompile the std. class files,
try to understand but in TdPage fetchNextTask() ,i am not getting where the control is getting transfre for
"discrete picking" menu.
thanks
shailendra
written by shailendrasingh , February 25, 2011
We are not able to trace the flow for Discrete Picking in outbond. Go throw TaskSignonPage.java , TaskSignonFListener.java , TdPage.java , MainPickPage.java all these files. Last file is TdPage.java in which fetchNextTask() function is there. And I was not able to trace how flow going on from these page to MainPickPage.
Also attached the decompile file. Please hv a look and help us.
written by shailendrasingh , February 25, 2011
please find the path
http://apps2fusion.com/forums/viewtopic.php?f=145&t=5520
thanks
shailendra
written by Manjula Rani , February 28, 2011
i have created thre files like below:
xxdbdTaskSignonFunction.java
package oracle.apps.wms.td.server;
import java.sql.SQLException;
import oracle.apps.fnd.common.VersionInfo;
import oracle.apps.inv.utilities.server.UtilFns;
import oracle.apps.mwa.container.Session;
import oracle.apps.mwa.eventmodel.*;
import oracle.apps.wms.td.server.*;
public class xxdbdTaskSignonFunction extends TaskSignonFunction {
public xxdbdTaskSignonFunction() {
super();
if(UtilFns.isTraceOn)
UtilFns.trace("After Super()");
setFirstPageName("dbdcustom.oracle.apps.wms.td.server.xxdbdTaskSignonPage");
}
}
xxdbdTaskSignonPage.java
package oracle.apps.wms.td.server;
import oracle.apps.wms.td.server.*;
public class xxdbdTaskSignonPage extends TaskSignonPage
{
public xxdbdTaskSignonPage()
{
super();
}
}
TaskSignonFListener.java
package oracle.apps.wms.td.server;
import oracle.apps.wms.td.server.*;
public class xxdbdTaskSignonFListener extends TaskSignonFListener
{
public xxdbdTaskSignonFListener() {
super();
}
}
And i have creted a function, with HTML Call as oracle.apps.wms.td.server.xxdbdTaskSignonFunction.
When I login to mobile forms, and try to access the custom function, it is supposed to take me to xxdbdTaskSignonPage. But it is not happening.
Can you please correct me if I did wrong.
Thanks in advance
written by Manjula Rani , February 28, 2011
Sorry for the confusion, HTML call is also pointing to dbdcustom.oracle.apps.wms.td.server
when we click on the function, OrganizationId LOv is popping up, once i select orgid and enter, its going to seeded page.
I have seen the log file, after selecting the orgid, setFirstPageName("oracle.apps.wms.td.server.TaskSignonPage");
LOG FILE:
(XXX) handleEvent: submit (2), nextPageName = 'oracle.apps.wms.td.server.xxdbdTaskSignonFunction'
[Mon Feb 28 04:49:06 EST 2011] (Thread-15) (XXX) handleEvent: entering app (MenuPageBean)
[Mon Feb 28 04:49:06 EST 2011] (Thread-15) (XXX) loadMenuItem: trying to load 'dbdcustom.oracle.apps.wms.td.server.xxdbdTaskSignonFunction'
[Mon Feb 28 04:49:06 EST 2011] (Thread-15) (XXX) callListeners: executing 1 listeners, action = 0
[Mon Feb 28 04:49:06 EST 2011] (Thread-15) (XXX) callListeners: MenuItemBean
[Mon Feb 28 04:49:06 EST 2011] (Thread-15) AOL.Connection - getConnection is called with userName:GADAMSV
. . . .
.......
[Mon Feb 28 04:49:10 EST 2011] (Thread-15) (GADAMSV) handleEvent: submit (1), nextPage = 'oracle.apps.wms.td.server.TaskSignonPage'
[Mon Feb 28 04:49:10 EST 2011] (Thread-15) (GADAMSV) callListeners: executing 3 listeners, action = 1
[Mon Feb 28 04:49:10 EST 2011] (Thread-15) (GADAMSV) callListeners: PageBean
[Mon Feb 28 04:49:10 EST 2011] (Thread-15) (GADAMSV) handleEvent: submit (2), nextPageName = 'oracle.apps.wms.td.server.TaskSignonPage'
[Mon Feb 28 04:49:10 EST 2011] (Thread-15) (GADAMSV) handleEvent: common submit handling
[Mon Feb 28 04:49:10 EST 2011] (Thread-15) (GADAMSV) handleEvent: purging OrganizationBean
[Mon Feb 28 04:49:10 EST 2011] (Thread-15) setCurrentPagePtr: ptr = 4
[Mon Feb 28 04:49:10 EST 2011] (Thread-15) (XXX) purgePageStack: purging at pageIx = 4
[Mon Feb 28 04:49:10 EST 2011] (Thread-15) removeFieldBean: fieldName = oracle.apps.inv.utilities.server.ValidateOrgPage.OrgField
[Mon Feb 28 04:49:10 EST 2011] (Thread-15) removeFieldBean: removing instance from HToracle.apps.inv.utilities.server.ValidateOrgPage.OrgField
[Mon Feb 28 04:49:10 EST 2011] (Thread-15) (XXX) loadPage: trying to load 'oracle.apps.wms.td.server.TaskSignonPage'; customization :null
[Mon Feb 28 04:49:10 EST 2011] (Thread-15) (XXX) loadPage: trying to load 'oracle.apps.wms.td.server.TaskSignonPage'
[Mon Feb 28 04:49:10 EST 2011] (Thread-15) (XXX) purgePageStack: purging at pageIx = 4
[Mon Feb 28 04:49:10 EST 2011] (Thread-15) addFieldBean: type = 1
written by Manjula Rani , February 28, 2011
written by Manjula Rani , February 28, 2011
[Mon Feb 28 04:58:50 EST 2011] (Thread-15) Create savepoint TDEZP_SP complete.
[Mon Feb 28 04:58:50 EST 2011] (Thread-15) setOrgParameters: Org id = 103
[Mon Feb 28 04:58:50 EST 2011] (Thread-15) query to get org parameters: oracle.jdbc.driver.OraclePreparedStatementWrapper@106daba
[Mon Feb 28 04:58:50 EST 2011] (Thread-15) setOrgContext: Org id = 103
[Mon Feb 28 04:58:50 EST 2011] (Thread-15) i=3 paramsName[3] P_ORGANIZATION_ID paramType= I paramValueType= N value 103
[Mon Feb 28 04:58:50 EST 2011] (Thread-15) UtilFns:process:{call INV_PROJECT.SET_SESSION_PARAMETERS(:1,:2,:3,:4)}
[Mon Feb 28 04:58:50 EST 2011] (Thread-15) UtilFns:process:execution complete
[Mon Feb 28 04:58:50 EST 2011] (Thread-15) UtilFns:process:value pair retrieval complete
[Mon Feb 28 04:58:50 EST 2011] (Thread-15) Closing Statement
[Mon Feb 28 04:58:50 EST 2011] (Thread-15) after closing
[Mon Feb 28 04:58:50 EST 2011] (Thread-15) OrgFunction: AppEntered - MFG_ORGANIZATION_ID's value set ? true
[Mon Feb 28 04:58:50 EST 2011] (Thread-15) OrgFunction Date1298887130000
[Mon Feb 28 04:58:50 EST 2011] (Thread-15) OrgFunction Orgid103
[Mon Feb 28 04:58:50 EST 2011] (Thread-15) i=0 paramsName[0] p_org_id paramType= I paramValueType= N value 103
[Mon Feb 28 04:58:50 EST 2011] (Thread-15) i=1 paramsName[1] p_transaction_date paramType= I paramValueType= T value 1298887130000
[Mon Feb 28 04:58:50 EST 2011] (Thread-15) long tempDate1298887130000
[Mon Feb 28 04:58:50 EST 2011] (Thread-15) Timestamp tm2011-02-28 04:58:50.0
[Mon Feb 28 04:58:50 EST 2011] (Thread-15) UtilFns:process:{call INV_INV_LOVS.tdatechk(:1,:2,:3)}
[Mon Feb 28 04:58:51 EST 2011] (Thread-15) UtilFns:process:execution complete
[Mon Feb 28 04:58:51 EST 2011] (Thread-15) UtilFns:process:value pair retrieval complete
[Mon Feb 28 04:58:51 EST 2011] (Thread-15) Closing Statement
[Mon Feb 28 04:58:51 EST 2011] (Thread-15) after closing
[Mon Feb 28 04:58:51 EST 2011] (Thread-15) VALID PERIOD CHECK SUCCESS
[Mon Feb 28 04:58:51 EST 2011] (Thread-15) TD: App Enter TdFunction
[Mon Feb 28 04:58:51 EST 2011] (Thread-15) Userid: 1377
[Mon Feb 28 04:58:51 EST 2011] (Thread-15) Userid: 1377
[Mon Feb 28 04:58:51 EST 2011] (Thread-15) Resp: 22479
[Mon Feb 28 04:58:51 EST 2011] (Thread-15) App: 385
[Mon Feb 28 04:58:51 EST 2011] (Thread-15) TD: Before Initialization!!
[Mon Feb 28 04:58:51 EST 2011] (Thread-15) After apps_initialize
[Mon Feb 28 04:58:51 EST 2011] (Thread-15) Creating Savepoints.....
[Mon Feb 28 04:58:51 EST 2011] (Thread-15) Create savepoint TDPT_SP complete.
[Mon Feb 28 04:58:51 EST 2011] (Thread-15) Create savepoint RCV_SP complete.
[Mon Feb 28 04:58:51 EST 2011] (Thread-15) TD: Td Function - Session Org ID : 103
[Mon Feb 28 04:58:51 EST 2011] (Thread-15) setOrgParameters: Org id = 103
[Mon Feb 28 04:58:51 EST 2011] (Thread-15) query to get org parameters: oracle.jdbc.driver.OraclePreparedStatementWrapper@106daba
[Mon Feb 28 04:58:51 EST 2011] (Thread-15) setOrgContext: Org id = 103
[Mon Feb 28 04:58:51 EST 2011] (Thread-15) i=3 paramsName[3] P_ORGANIZATION_ID paramType= I paramValueType= N value 103
[Mon Feb 28 04:58:51 EST 2011] (Thread-15) UtilFns:process:{call INV_PROJECT.SET_SESSION_PARAMETERS(:1,:2,:3,:4)}
[Mon Feb 28 04:58:51 EST 2011] (Thread-15) UtilFns:process:execution complete
[Mon Feb 28 04:58:51 EST 2011] (Thread-15) UtilFns:process:value pair retrieval complete
[Mon Feb 28 04:58:51 EST 2011] (Thread-15) Closing Statement
[Mon Feb 28 04:58:51 EST 2011] (Thread-15) after closing
[Mon Feb 28 04:58:51 EST 2011] (Thread-15) TD: TaskSignonPage initLayout
[Mon Feb 28 04:58:51 EST 2011] (Thread-15) TD: TdPage - Page Entered
[Mon Feb 28 04:58:51 EST 2011] (Thread-15) Jack TD: TdPage - Page Entered
[Mon Feb 28 04:58:51 EST 2011] (Thread-15) TdPage - Startupvalues existed: {x_po_patch_level=120001, x_msg_data=, x_wms_patch_level=120001, x_inv_patch_level=120001, x_return_status=S}
[Mon Feb 28 04:58:51 EST 2011] (Thread-15) EqpLOV: fieldEntered
[Mon Feb 28 04:58:51 EST 2011] (Thread-15) TD: TdFListener - fieldEntered
[Mon Feb 28 04:58:58 EST 2011] (Thread-15) TD: TdPage - specialKeyPressed
[Mon Feb 28 04:58:58 EST 2011] (Thread-15) Rollback to TDPT_SP complete.
[Mon Feb 28 04:59:00 EST 2011] (Thread-15) In UserLogin.java: notifySessionEvent method, before calling LMS code
[Mon Feb 28 04:59:00 EST 2011] (Thread-15) In UserLogin.java: notifySessionEvent method, after calling LMS code: TXN_TIME_END:1298887140499
[Mon Feb 28 04:59:00 EST 2011] (Thread-15) Employee ID :7520
[Mon Feb 28 04:59:00 EST 2011] (Thread-15) Organization ID :103
[Mon Feb 28 04:59:00 EST 2011] (Thread-15) Executing the J Patch Set Code
[Mon Feb 28 04:59:00 EST 2011] (Thread-15) Inside cleanupDevicesAndTasks
[Mon Feb 28 04:59:00 EST 2011] (Thread-15) clean up successfully
[
written by shailendrasingh , February 28, 2011
the floe is in TdPage.java,
but suppose if we are selecting "discrete Picking",
then how control is going on MainPickPage .
this i want to understand.
written by Manjula Rani , February 28, 2011
See the below code: I have added SOPs, SOPs in Function Page are coming on console but custom page SOPs are not coming. Please help in solving the issue.
xxdbdTaskSignonFunction.java
-------------------------------
package oracle.apps.wms.td.server;
import java.sql.SQLException;
import oracle.apps.fnd.common.VersionInfo;
import oracle.apps.inv.utilities.server.UtilFns;
import oracle.apps.mwa.container.Session;
import oracle.apps.mwa.eventmodel.*;
import oracle.apps.wms.td.server.*;
import oracle.apps.inv.lov.server.SubinventoryLOV;
public class xxdbdTaskSignonFunction extends TaskSignonFunction {
public xxdbdTaskSignonFunction() {
super();
System.out.println("After calling Super");
if(UtilFns.isTraceOn)
UtilFns.trace("After Super()");
setFirstPageName("oracle.apps.wms.td.server.xxdbdTaskSignonPage");
System.out.println("After setting the new page");
}
public void appEntered(MWAEvent mwaevent) throws AbortHandlerException,
InterruptedHandlerException,
DefaultOnlyHandlerException {
System.out.println("After entering appEntered");
if(UtilFns.isTraceOn)
UtilFns.trace("xxdbdTaskSignonPage");
Session session = mwaevent.getSession();
if(UtilFns.isTraceOn)
UtilFns.trace("xxdbdTaskSignonPage");
System.out.println("After entering appEntered1");
setFirstPageName("oracle.apps.wms.td.server.xxdbdTaskSignonPage");
System.out.println(session.getCurrentPage().toString());
session.setRefreshScreen(true);
super.appEntered(mwaevent);
}
}
xxdbdTaskSignonPage.java
-------------------------------
package oracle.apps.wms.td.server;
import oracle.apps.wms.td.server.*;
import java.sql.SQLException;
import oracle.apps.fnd.common.VersionInfo;
import oracle.apps.inv.lov.server.SubinventoryLOV;
import oracle.apps.inv.utilities.server.UtilFns;
import oracle.apps.mwa.beans.TextFieldBean;
import oracle.apps.mwa.container.MWALib;
import oracle.apps.mwa.container.Session;
import oracle.apps.mwa.eventmodel.*;
public class xxdbdTaskSignonPage extends TaskSignonPage
{
public xxdbdTaskSignonPage()
{
super();
System.out.println("after super in xxdbdTaskSignonPage");
addListener(this);
}
public void pageExited(MWAEvent e) throws AbortHandlerException, InterruptedHandlerException, DefaultOnlyHandlerException
{
System.out.println("inside pageExited in xxdbdTaskSignonPage");
Session localSession = e.getSession();
UtilFns.trace("ZBRWIPMovePage: pageExited:"+e.getAction());
e.getSession().setStatusMessage("ZBRWIPMovePage: pageExited ...");
}
public void pageEntered(MWAEvent mwaevent)
throws AbortHandlerException, InterruptedHandlerException, DefaultOnlyHandlerException
{
System.out.println("inside pageEntered in xxdbdTaskSignonPage");
super.pageEntered(mwaevent);
UtilFns.trace("TEST PAGE: pageExited:"+mwaevent.getAction());
Session localSession = mwaevent.getSession();
mwaevent.getSession().setStatusMessage("TEST PAGE: pageExited ...");
}
}
Navigation Steps:
-------------------------------
Once u give 103 and enter, the below page is opening
The SOPs in the console are :
After calling Super
After setting the new page
After entering appEntered
After entering appEntered1
oracle.apps.mwa.beans.MenuPageBean@b6ef8
After this, SOPs in xxdbdSignonTaskPage are not getting on the console.
written by Manjula Rani , February 28, 2011
Just to give a trail atleast one place it will work.
2) All the extension classes should be kept in a separate directory for ex, dbdcustom.oracle.apps .....
Am not sure why u have kept under oracle.apps ...
Initially i have put all the custom files in dbdcustom.oracle... but since it was not workin thpught of classpath problem..so tried keeping in the same folder.
If it works fine, i wll move the files in to custom path. First i want to solve this problem.
written by Manjula Rani , February 28, 2011
Looks like you are also entending tasksignonfucntion. If you dont mind, can u please send me the extended classes on tasksignonfunction and tasksignonpage.
Thanks in advance.
written by Manjula Rani , February 28, 2011
I want to create new function. When you click on menu function, user need to select Org id before going to the page linked to the function. Please let me know how to acheive this. For example, when we click on Order Pick form, first user has to select Org id.
Thanks in advance.
written by shailendrasingh , March 01, 2011
Manjula Rani
you have to extend OrgFunction class to your function class. and in pageEntered method
you have to put pagename in session variable
session.putObject("RCV_FIRSTPAGENAME", "page class");
RCV_FIRSTPAGENAME is session variable.
also you can see any standard function class.
thanks
written by Manjula Rani , March 01, 2011
I have to extend taskSignonFunction. so i have created xxTaskSignonFunction which extends TaskSignOnFunction. Since TaskSignOnFunction this extends TDFunction which extends OrgFunction, do i still need to extend OrgFunction in my custom function??
written by Manjula Rani , March 01, 2011
public class xxdbdTaskSignonFunction extends TaskSignonFunction {
public xxdbdTaskSignonFunction() {
super();
System.out.println("After calling Super");
addListener(this);
}
public void appEntered(MWAEvent mwaevent) throws AbortHandlerException,
InterruptedHandlerException,
DefaultOnlyHandlerException {
Session session = mwaevent.getSession();
setFirstPageName("oracle.apps.wms.td.server.xxdbdTaskSignonPage");
super.appEntered(mwaevent);
session.setRefreshScreen(true);
}
}
written by shailendrasingh , March 01, 2011
in this scenario it will be good to copy TaskSignonFunction code to ur xxdbdTaskSignonFunction
class and change as per your cutomization.
but remember only copy in this class only.
written by Manjula Rani , March 01, 2011
I have done as per ur suggestion, copied all teh code but changed the setFirstPageName("oracle.apps.wms.td.server.TaskSignonPage"); to setFirstPageName("oracle.apps.wms.td.server.xxdbdTaskSignonPage"); before this statement, i have SOP, which is getting executed. but the page is going to seeded page.
let me know what could be the problem.
written by shailendra , March 01, 2011
analyze the whole code it will work fine.
thanks
shailendra
written by shailendra , March 01, 2011
in TdPage there is public static boolean fetchNextTask(MWAEvent mwaevent)
in this method there is standard logic for filteration of task.
but now i have to change it can you tell me how to change.
thanks
shailendra
written by shailendra , March 01, 2011
i have done all the customization it is last customization i am getting stuck on MSCA framework please help me.
yes i have extended TdPage
but in fetchNextTask(MWAEvent mwaevent) method the logic is very complex,
and also i have overide fetchNextTask(MWAEvent mwaevent) and have copied its code ,
but the code i have got after decompilation is not working fine(means it is not compiling)
becouse there are some break statement and sql statement that are giving error.
but still i tried to remove error.
i have removed every error and deployed.but when i am using after extending and overiding the taskSign -ON Page is working fine but the Load Page is not comming.
in TdPage seeded package are called for filtering"WMS_PICKING_PKG.NEXT_TASK"
that we have renamed and calling in our custom classes,
what should be the cause.
thanks
shailendra
written by shailendra , March 01, 2011
the extended class is getting called but i have commeneted some break statement and sql statement.
becouse of that only the load page(MainPickPage) is not getting displayed.
can you provide me the code for how to overide fetchNextTask(MWAEvent mwaevent) method of TdPage.
same logic as standard.
thanks
shailendra
written by shailendra , March 01, 2011
ok,
how can we get TdPage.java source code.
actually after decompiling TdPage.class i am not getting exact java source code,
i am decompiling with cavaj decompiler.
thanks
shailendra
written by shailendra , March 01, 2011
regards
shailendra
written by Manjula Rani , March 07, 2011
I have extended MainPickPage and Main PickFListener files.
After extening, UOM Lov field is not working as expected. Can anyone help in resolving this.
xxdbdGSLMainPickPage.java
-------------------------------------------
public class xxdbdGSLMainPickPage extends MainPickPage//ConfigPage
implements ConfigConstants, DualUOMInterface, MWAPageListener
{
public xxdbdGSLMainPickPage(Session session)
throws AbortHandlerException, InterruptedHandlerException, DefaultOnlyHandlerException
{
super(session);
System.out.println("Inside custom MainPickPage");
}
public void pageEntered(MWAEvent mwaevent)
throws AbortHandlerException, InterruptedHandlerException, DefaultOnlyHandlerException
{
System.out.println("inside pageEntered");
super.pageEntered(mwaevent);
ButtonFieldBean buttonfieldbean = (ButtonFieldBean )getField("MAIN.DROP");
xxdbdGSLMainPickFListener mListener = new xxdbdGSLMainPickFListener();
buttonfieldbean.addListener(mListener);
}
public void pageExited(MWAEvent mwaevent)
throws AbortHandlerException, InterruptedHandlerException, DefaultOnlyHandlerException
{
super.pageExited(mwaevent);
}
}
xxdbdGSLMainPickFListener.java
-------------------------------------------
public class xxdbdGSLMainPickFListener extends MainPickFListener//xxdbdGSLTdFListener//TdFListener
{
public xxdbdGSLMainPickFListener()
{ super();
}
public void fieldEntered(MWAEvent mwaevent)
throws AbortHandlerException, InterruptedHandlerException, DefaultOnlyHandlerException
{
System.out.println("inside fieldEntered of Mainpickpage listerenr");
super.fieldEntered(mwaevent);
}
}
Thanks in advance.
written by Manjula , March 09, 2011
I have solved the LOV issue which i reported earlier.
Now i am facing another issue.
I have extended PickDropPage. It has two LOVs, one is subinventoryLOV and other is LocatorKFF. First LOV is working fine, but the secodn LOV is not working as expected, whatever value i will give, its saying No result is found. I know that LOV values are not assigned to this LOV bean. But i am not able to find out the solution. Please help me in this.
In the pageentered, i have coded like this :
super.pageEntered(mwaevent);
Session session = mwaevent.getSession();
mConfirmZoneFld = super.getZone();// new SubinventoryLOV("INVINQ");
mConfirmZoneFld.setName("PKD.CONFIRM_ZONE");
mConfirmZoneFld.setRequired(true);
String as[] = {
" ", "ORGID", "oracle.apps.wms.td.server.xxdbdPickDropPage.PKD.CONFIRM_ZONE"
};
mConfirmZoneFld.setInputParameters(as);
mConfirmZoneFld.setValidateFromLOV(true);
mConfirmLocFld = super.getLoc(); //new LocatorKFF("INQLOC", session);
mConfirmLocFld.setName("PKD.CONFIRM_LOC");
String as1[] = {
" ", "ORGID", "oracle.apps.wms.td.server.xxdbdPickDropPage.PKD.CONFIRM_ZONE", "", "", "oracle.apps.wms.td.server.xxdbdPickDropPage.PKD.CONFIRM_LOC", "PROJECT", "TASK"
};
mConfirmLocFld.setInputParameters(as1);
mConfirmLocFld.setRequired(true);
mConfirmLocFld.setValidateFromLOV(true);
TdButton buttonfieldbean = super.getSubmitBtn();
xxdbdPickDropFListener mListener = new xxdbdPickDropFListener();
buttonfieldbean.addListener(mListener);
written by Manjula , March 09, 2011
mConfirmZoneFld = new SubinventoryLOV("INVINQ");
mConfirmZoneFld.setName("PKD.CONFIRM_ZONE");
mConfirmZoneFld.setRequired(true);
String as[] = {
" ", "ORGID", "oracle.apps.wms.td.server.PickDropPage.PKD.CONFIRM_ZONE"
};
mConfirmZoneFld.setInputParameters(as);
mConfirmZoneFld.setValidateFromLOV(true);
mLocFld = new TextFieldBean();
mLocFld.setName("PKD.LOC");
mLocFld.setEditable(false);
mConfirmLocFld = new LocatorKFF("INQLOC", session);
mConfirmLocFld.setName("PKD.CONFIRM_LOC");
String as1[] = {
" ", "ORGID", "oracle.apps.wms.td.server.PickDropPage.PKD.CONFIRM_ZONE", "", "", "oracle.apps.wms.td.server.PickDropPage.PKD.CONFIRM_LOC", "PROJECT", "TASK"
};
mConfirmLocFld.setInputParameters(as1);
mConfirmLocFld.setRequired(true);
mConfirmLocFld.setValidateFromLOV(true);
written by Manjula , March 09, 2011
For the mConfirmLocFld, the parameters are as mentioned in the existing code but not as mentioned in the changed code.
Log file:
Wed Mar 09 07:03:28 EST 2011] (Thread-15) inputParams[0] :
[Wed Mar 09 07:03:28 EST 2011] (Thread-15) inputParamsType[0] :C
[Wed Mar 09 07:03:28 EST 2011] (Thread-15) value of inputParams[0] :null
[Wed Mar 09 07:03:28 EST 2011] (Thread-15) inputParams[1] :ORGID
[Wed Mar 09 07:03:28 EST 2011] (Thread-15) inputParamsType[1] :N
[Wed Mar 09 07:03:28 EST 2011] (Thread-15) value of inputParams[1] :103
[Wed Mar 09 07:03:28 EST 2011] (Thread-15) inputParams[2]
racle.apps.wms.td.server.PickDropPage.PKD.CONFIRM_ZONE [Wed Mar 09 07:03:28 EST 2011] (Thread-15) inputParamsType[2] :S
[Wed Mar 09 07:03:28 EST 2011] (Thread-15) value of inputParams[2] :null
[Wed Mar 09 07:03:28 EST 2011] (Thread-15) inputParams[3] :
[Wed Mar 09 07:03:28 EST 2011] (Thread-15) inputParamsType[3] :N
[Wed Mar 09 07:03:28 EST 2011] (Thread-15) value of inputParams[3] :null
[Wed Mar 09 07:03:28 EST 2011] (Thread-15) inputParams[4] :
[Wed Mar 09 07:03:28 EST 2011] (Thread-15) inputParamsType[4] :N
[Wed Mar 09 07:03:28 EST 2011] (Thread-15) value of inputParams[4] :null
[Wed Mar 09 07:03:28 EST 2011] (Thread-15) inputParams[5]
racle.apps.wms.td.server.PickDropPage.PKD.CONFIRM_LOC [Wed Mar 09 07:03:28 EST 2011] (Thread-15) inputParamsType[5] :S
[Wed Mar 09 07:03:28 EST 2011] (Thread-15) value of inputParams[5] :null
[Wed Mar 09 07:03:28 EST 2011] (Thread-15) inputParams[6]
ROJECT [Wed Mar 09 07:03:28 EST 2011] (Thread-15) inputParamsType[6] :S
[Wed Mar 09 07:03:28 EST 2011] (Thread-15) value of inputParams[6] :null
[Wed Mar 09 07:03:28 EST 2011] (Thread-15) inputParams[7] :TASK
[Wed Mar 09 07:03:28 EST 2011] (Thread-15) inputParamsType[7] :S
[Wed Mar 09 07:03:28 EST 2011] (Thread-15) value of inputParams[7] :null
[Wed Mar 09 07:03:28 EST 2011] (Thread-15) inputParams[8] :LocatorKFF.ALIAS
[Wed Mar 09 07:03:28 EST 2011] (Thread-15) inputParamsType[8] :S
[Wed Mar 09 07:03:28 EST 2011] (Thread-15) value of inputParams[8] :null
[Wed Mar 09 07:03:29 EST 2011] (Thread-15) No result is found
[Wed Mar 09 07:03:29 EST 2011] (Thread-15) Exiting pageEntered of LOVRuntimePageHandler
written by Manjula , March 11, 2011
I have extended the Mobile Pick Drop LPN form. For this, i have extended PickDropPage. Everything is working fine. But there are few personalizations done on this page at function level. These personalizations are not working on the custom pages though i have extended the seeded pages. Please let me know if I miss something.
written by Manjula , March 11, 2011
Personalizations means, MWA Personalization.
The personalization is: field B will be defaulted from field A value and field D will be defaulted with field C value when the page gets open.
How can we acheive the same using extension ??
Also, where the MWA personalizations will store??
written by Vincent Maseko , March 15, 2011
I'm testing if I can add a comment.
Ta,
written by Vincent Maseko , March 15, 2011
I need to add new event handling on the DateFieldBean mExpDateFld found further up the inheritance hierarchy (LotSerialPage).
I have decided (having followed the examples I found on this forum) to extend the RcvFunction to create my CustomFunction and also I extended the standard RcptGenPage to create my CustomPage (which should add myCustomListener to the date field mentioned above) - when I run the process up to the point where it should display a list of all availlable PO's it returns "NO result found"....
But when I tell my CustomFunction to point to the original RcpGenPage the screen values are loaded succesffully - and I can continue with my receiving process.
Here's my CustomPage:
/**
*
* @author Vincent Maseko
*
*/
public class CustomRcpGenPage extends RcptGenPage{
public static final String RCS_ID = "$Header: CustomRcpGenPage.java 120.3.12000000.10 2008/05/19 11:01:37 lseetamr ship $";
public static final boolean RCS_ID_RECORDED = VersionInfo.recordClassVersion("$Header: CustomRcpGenPage.java 120.3.12000000.10 2008/05/19 11:01:37 lseetamr ship $", "oracle.apps.inv.rcv.server");
public CustomRcpGenPage(Session session) {
super(session);
new RcptGenPage(session);
}
public void pageEntered(MWAEvent mwaevent)
throws AbortHandlerException, InterruptedHandlerException, DefaultOnlyHandlerException
{
if(UtilFns.isTraceOn)
UtilFns.trace("RCV: CustomRcpGenPage.pageEntered");
super.pageEntered(mwaevent);
if(UtilFns.isTraceOn)
UtilFns.trace("RCV: CustomRcpGenPage.pageEntered - complete");
}
public void pageExited(MWAEvent mwaevent)
throws AbortHandlerException, InterruptedHandlerException, DefaultOnlyHandlerException
{
if(UtilFns.isTraceOn)
UtilFns.trace("RCV: CustomRcpGenPage.pageExited");
super.pageExited(mwaevent);
if(UtilFns.isTraceOn)
UtilFns.trace("RCV: CustomRcptGenPage.pageExited - complete");
}
public void specialKeyPressed(MWAEvent mwaevent)
throws AbortHandlerException, InterruptedHandlerException, DefaultOnlyHandlerException
{
if(UtilFns.isTraceOn){
UtilFns.trace("RCV: CustomRcptGenPage.specialKeyPressed");
UtilFns.trace("RCV: CustomRcptGenPage.specialKeyPressed - #### ACTION = " + mwaevent.getAction());
}
super.specialKeyPressed(mwaevent);
if(UtilFns.isTraceOn)
UtilFns.trace("RCV: CustomRcptGenPage.specialKeyPressed - complete");
}
protected void addFields(MWAEvent mwaevent)
{
if(UtilFns.isTraceOn)
UtilFns.trace("RCV: CustomRcptGenPage.addFields");
super.addFields(mwaevent);
if(UtilFns.isTraceOn)
UtilFns.trace("RCV: CustomRcptGenPage.addFields - complete");
}
protected void initPrompts(Session ses)
{
super.initPrompts(ses);
}
}
Looking at this I have satisfied myself that I didnt do anything special except to extend the original Page and pull dow a few of the methods that are found on Base class - something I must admit I don't understand why I need to do it because inheritance tells me I should have this methods already ... unless I wanna override them.
Your assistance will be highly appreciated.
Thanks.
Vincent Maseko (South Africa)
written by Vincent Maseko , March 16, 2011
Thanks for the prompt reply. I have extensively went through the above article and learned a lot. Further I have made changes to my custom page as recommended but I still get this dreadfull "no results found" message. I’m not sure if there’s something else that I’m missing. Please help
below is my latest custom page:
public class CustomRcpGenPage extends RcptGenPage
{
private CustomRcpGenFListener customFieldListener = new CustomRcpGenFListener();
public CustomRcpGenPage(Session session)
{
super(session);
}
public void pageEntered(MWAEvent mwaevent)
throws AbortHandlerException, InterruptedHandlerException, DefaultOnlyHandlerException
{
if(UtilFns.isTraceOn)
UtilFns.trace("RCV: CustomRcpGenPage.pageEntered");
super.pageEntered(mwaevent);
//Now Initialize the extended page
initCustomPage();
if(UtilFns.isTraceOn)
UtilFns.trace("RCV: CustomRcpGenPage.pageEntered - complete");
}
public void initCustomPage(){
// Add Custom listener to the expiry date field
getExpDateFld().addListener(customFieldListener);
// Inputs
String as[] = {
" ", "ORGID", "oracle.apps.inv.rcv.server.CustomRcpGenPage.RCV.SHIPMENT_NUM", "RECEIPT", ""
};
getShipmentNumFld().setInputParameters(as);
/*String[] inputs = {
" ","ORGID", "oracle.apps.inv.rcv.server.CustomRcpGenPage.INV.DOC_NUMBER", "RECEIPT","","","PO",""
};
getDocFld().setInputParameters(inputs);
mDocFld = new DOCLOV();
*/
String as1[] = {
" ", "ORGID", "oracle.apps.inv.rcv.server.CustomRcpGenPage.RCV.REQUISITION_NUM", "RECEIPT"
};
getReqNumFld().setInputParameters(as1);
String as2[] = {
" ", "ORGID", "oracle.apps.inv.rcv.server.CustomRcpGenPage.INV.RMA", "RECEIPT"
};
getRMAFld().setInputParameters(as2);
String as5[] = {
" ", "ORGID", "oracle.apps.inv.rcv.server.CustomRcpGenPage.INV.LOCATION"
};
getLocationFld().setInputParameters(as5);
String as6[] = {
" ", "oracle.apps.inv.rcv.server.CustomRcpGenPage.INV.LOT_STATUS"
};
getLotStatusFld().setInputParameters(as6);
String as7[] = {
" ", "oracle.apps.inv.rcv.server.CustomRcpGenPage.INV.SERIAL_STATUS"
};
getSerialStatusFld().setInputParameters(as7);
// Input Types
/* String as3[] = {
"C", "N", "AN", "S"
};
getRevFld().setInputParameterTypes(as3);
String as4[] = {
"C"
};
getCountryFld().setInputParameterTypes(as4);*/
}
}
written by Vincent Maseko , March 17, 2011
I had a look at the logs they look exactly the same except on the 'DOCLOV' as follows:
STANDARD
(Thread-15) RCV: RcptGenPage.addFields - complete
[Thu Mar 17 09:35:07 SAST 2011] (Thread-15) RCV: RcptGenPage.pageEntered - complete
[Thu Mar 17 09:35:07 SAST 2011] (Thread-15) DOCLOV: fieldEntered
[Thu Mar 17 09:35:07 SAST 2011] (Thread-15) Profile value for delimiter is: null
[Thu Mar 17 09:35:07 SAST 2011] (Thread-15) RCV: RcptGenFListener.fieldEntered
[Thu Mar 17 09:35:07 SAST 2011] (Thread-15) RCV: RcvFListener.fieldEntered - fldName = INV.DOC_NUMBER
[Thu Mar 17 09:35:07 SAST 2011] (Thread-15) RCV: RcptGenFListener.fieldEntered - fldName = INV.DOC_NUMBER
[Thu Mar 17 09:35:07 SAST 2011] (Thread-15) RCV: RcptGenFListener.docEntered 10
[Thu Mar 17 09:35:07 SAST 2011] (Thread-15) RCV: RcptGenFListener.docEntered =
[Thu Mar 17 09:35:07 SAST 2011] (Thread-15) RCV: RcptGenFListener.docEntered 40 itemId = ItemDesc =
[Thu Mar 17 09:35:07 SAST 2011] (Thread-15) RCV: RcptGenFListener.docEntered - complete
[Thu Mar 17 09:35:07 SAST 2011] (Thread-15) RCV: RcptGenFListener.fieldEntered - complete
[Thu Mar 17 09:35:22 SAST 2011] (Thread-15) DOCLOV: fieldExited: PO
[Thu Mar 17 09:35:22 SAST 2011] (Thread-15) DOCLOV: fieldExited before setting return values
CUSTOM
(Thread-15) RCV: RcptGenPage.addFields - complete
[Thu Mar 17 10:19:09 SAST 2011] (Thread-15) RCV: CustomRcpGenPage.addFields - complete
[Thu Mar 17 10:19:09 SAST 2011] (Thread-15) RCV: RcptGenPage.pageEntered - complete
[Thu Mar 17 10:19:09 SAST 2011] (Thread-15) RCV: CustomRcpGenPage.pageEntered - complete
[Thu Mar 17 10:19:09 SAST 2011] (Thread-15) DOCLOV: fieldEntered
[Thu Mar 17 10:19:09 SAST 2011] (Thread-15) Profile value for delimiter is: null
[Thu Mar 17 10:19:09 SAST 2011] (Thread-15) RCV: RcptGenFListener.fieldEntered
[Thu Mar 17 10:19:09 SAST 2011] (Thread-15) RCV: RcvFListener.fieldEntered - fldName = INV.DOC_NUMBER
[Thu Mar 17 10:19:09 SAST 2011] (Thread-15) RCV: RcptGenFListener.fieldEntered - fldName = INV.DOC_NUMBER
[Thu Mar 17 10:19:09 SAST 2011] (Thread-15) RCV: RcptGenFListener.docEntered 10
[Thu Mar 17 10:19:09 SAST 2011] (Thread-15) RCV: RcptGenFListener.docEntered =
[Thu Mar 17 10:19:09 SAST 2011] (Thread-15) RCV: RcptGenFListener.docEntered 40 itemId = ItemDesc =
[Thu Mar 17 10:19:09 SAST 2011] (Thread-15) RCV: RcptGenFListener.docEntered - complete
[Thu Mar 17 10:19:09 SAST 2011] (Thread-15) RCV: RcptGenFListener.fieldEntered - complete
....this the end of the file
Now I'm hecticly confused - not sure how to make this work please assist.
Thanks and Kind regards,
Vincent Maseko (South Africa)
written by Vincent Maseko , March 18, 2011
I have enabled full logging and looked at the result for both custom (when it fails) and standard (when it returns lov). Below it does show indeed that for custom results one of the parameters is null while on the other side its a '%' - how do I overcome this on my custom page?
I'm excited that you've been proven right.
I will be busy trying to figure it out while I await a response - thanks you in advance.
CUSTOM RESULTSSTANDARD RESULTS
lov stmt :INV_UI_RCV_LOVS.GET_DOC_LOVov stmt :INV_UI_RCV_LOVS.GET_DOC_LOV
inputParams[0] : inputParams[0] :
inputParamsType[0] :CinputParamsType[0] :C
inputParams[0] :nullinputParams[0] :null
inputParams[1] :ORGIDinputParams[1] :ORGID
inputParamsType[1] :NinputParamsType[1] :N
inputParams[1] :83inputParams[1] :83
inputParams[2]
racle.apps.inv.rcv.server.RcptGenPage.INV.DOC_NUMBERinputParams[2]
racle.apps.inv.rcv.server.RcptGenPage.INV.DOC_NUMBER inputParamsType[2] :SinputParamsType[2] :S
inputParams[2] :nullinputParams[2] :%
inputParams[3] :RECEIPTinputParams[3] :RECEIPT
inputParamsType[3] :ASinputParamsType[3] :AS
inputParams[4] :inputParams[4] :
inputParamsType[4] :ASinputParamsType[4] :AS
inputParams[5] :inputParams[5] :
inputParamsType[5] :ASinputParamsType[5] :AS
inputParams[6] :inputParams[6] :
inputParamsType[6] :ASinputParamsType[6] :AS
inputParams[7]
OinputParams[7]
O inputParamsType[7] :ASinputParamsType[7] :AS
inputParams[8] :inputParams[8] :
inputParamsType[8] :ASinputParamsType[8] :AS
No result is found[Thu Mar 17 14:07:41 SAST 2011] (Thread-15) addFieldBean: type = 13
Exiting pageEntered of LOVRuntimePageHandler[Thu Mar 17 14:07:41 SAST 2011] (Thread-15) addFieldBean: type = 13
[Thu Mar 17 14:07:41 SAST 2011] (Thread-15) addFieldBean: type = 13
Kind Regards
Vincent Maseko (South Africa)
written by Saradhi , March 21, 2011
Even using WCB manage option i have assigned task manually to one user and checked the tasks in that user but no luck.
Similarly i have performed for Manufacturing wip component pick release also, in mobile it's showing no tasks available.......
Even with paper based pick tasks also i tried by giving the transaction number but it's giving no message.........
I have gone through the implementation & user guides in that he linked with projects and my org is not enabled with projects.......what could be the reason.........From two days onwards i am struggling with this a lot......
Kindly suggest me.,.
written by Vincent Maseko , March 23, 2011
It appears you were correct, I had a look at it closely in realised that I was missing one entry on that array of inputs. I am now able to see the LOV after the system executes INV_UI_RCV_LOVS.GET_DOC_LOV and able to move forward with my customization.
The storm is not over yet
I appreciate your assistance up to this point.
Regards,
Vincent Maseko (South Africa)
written by Dhamayanthi , March 28, 2011
I'm working on these MSCA Customisation and as you said, we will extends from the existing page and we do our customisation or somtimes we duplicate the file and we do our own customization.
Now I'm in need of a page, where all the serial no. will be processed for an inventory and success of this will lead to a next serial no. and it goes on. Here i need to add count field for counting the success serials. I'm done with adding an aditional field. But if any failure comes, I need to show detailed error messaage with serial no , item in another page and should present a OK button where pressing on this button should take to the previous page where next serial no. can be processed.
I'm confused on getting the data from page to page, ie passing serial no. item and error msgs. Please share your ideas.
Thanks.
written by shailendrasingh , March 28, 2011
i have extended PO reciept (RcptGenFunction,RcptGenPage,RcptGenFListener) .every thing is working fine.
but if suppose user entered Qty more than Qty to be recieved its showing standard error Page |Create PO interface record failed.
|Quantity tolerance exceeded.its a standrd error page.on this page there is Back and Cancel button.
when i am hitting "Back" button the session is getting closed and giving unexpected error.
please help in this issue.
thanks
shailendra
written by Ashish Jain , March 28, 2011
Well as Im new to MSCA customization, Kindly let me know how to overcome this error.
Issue Details :- MSCA >> Outbound >> Direct Ship >> Load to Truck
Error :- Direct Ship not enables for Organization.
Early help will be appreciated.
Thanks
Ashish
written by Dhamayanthi , March 29, 2011
Thanks a lot for your prompt reply and help :-)
written by Leonel , May 02, 2011
I have this problem,
I try to Extend the subinventory transfer " SubXferPage"
but I get this errors when I replace the listener of the button "INV.SAVENEXT":
[Mon Apr 18 12:43:33 CDT 2011] (Thread-16) MWA_PM_UNEXPECTED_ERROR_MESG: Unexpected error occurred, Please check the log.
java.lang.NullPointerException
at oracle.apps.inv.invtxn.server.SubXferFListener.doneExited(SubXferFListener.java:2139)
at oracle.apps.inv.invtxn.server.SubXferFListener.saveNextExited(SubXferFListener.java:2117)
at oracle.apps.inv.invtxn.server.SubXferFListener.fieldExited(SubXferFListener.java:212)
at oracle.apps.mwa.container.StateMachine.callListeners(StateMachine.java:1720)
at oracle.apps.mwa.container.StateMachine.handleEvent(StateMachine.java:543)
at oracle.apps.mwa.presentation.telnet.PresentationManager.handle(PresentationManager.java:743)
at oracle.apps.mwa.presentation.telnet.ProtocolHandler.run(ProtocolHandler.java:849)
My code is:
//Page:
package xxskr.oracle.apps.inv.invtxn.server;
import oracle.apps.inv.invtxn.server.SubXferPage;
import oracle.apps.inv.utilities.server.UtilFns;
import oracle.apps.mwa.beans.ButtonFieldBean;
import oracle.apps.mwa.container.Session;
import oracle.apps.mwa.eventmodel.AbortHandlerException;
import oracle.apps.mwa.eventmodel.DefaultOnlyHandlerException;
import oracle.apps.mwa.eventmodel.InterruptedHandlerException;
import oracle.apps.mwa.eventmodel.MWAEvent;
import oracle.apps.mwa.eventmodel.MWAListener;
public class XXSubXferPage extends SubXferPage {
public XXSubXferPage(Session paramSession) {
super(paramSession);
UtilFns.trace("xxSubXferPage Constructor");
}
public void pageEntered(MWAEvent e) throws AbortHandlerException,
InterruptedHandlerException,
DefaultOnlyHandlerException {
UtilFns.trace(" xxSubXferPage - pageEntered ");
ses = e.getSession();
super.pageEntered(e);
initCustomPage(e);
}
public void pageExited(MWAEvent e) throws AbortHandlerException,
InterruptedHandlerException,
DefaultOnlyHandlerException {
ses = e.getSession();
super.pageExited(e);
UtilFns.trace(" xxSubXferPage - pageExited ");
}
public void initCustomPage(MWAEvent e) {
UtilFns.trace(" Se inicializa Lista de Valores ");
String[] lpninput1 = { " ", "ORGID", "xxskr.oracle.apps.inv.invtxn.server.XXSubXferPage.INV.LPN", "PLANNING_ORG_ID", "PLANNING_TP_TYPE", "OWNING_ORG_ID", "OWNING_TP_TYPE", "TOORGID", "TXN.TXN_TYPE_ID", "wmsPurchased" };
String[] lpninput2 = { "C", "N", "S", "N", "N", "N", "N", "N", "N", "S" };
getLPNLOV().setInputParameterTypes(lpninput2);
getLPNLOV().setInputParameters(lpninput1);
getLPNLOV().setValidateFromLOV(true);
String[] toLPNSubinventario = { " ", "ORGID", "LPNID", "LPNFROMSUB", "LPNSUBASSETINV", "TransactionActionId", " ", "TransactionTypeId", "wmsPurchased", "xxskr.oracle.apps.inv.invtxn.server.XXSubXferPage.INV.LPNTOSUB" };
getLPNToSubinventory().setInputParameters(toLPNSubinventario);
getLPNToSubinventory().setValidateFromLOV(true);
getLPNToSubinventory().setName("INV.LPNTOSUB");
getLPNToLocatorLOV().setName("INV.LPNTOLOC");
String[] toLPNLocator = { " ", "ORGID", "LPNID", "xxskr.oracle.apps.inv.invtxn.server.XXSubXferPage.INV.LPNTOSUB", "xxskr.oracle.apps.inv.invtxn.server.XXSubXferPage.INV.LPNTOLOC", "TransactionTypeId", "wmsPurchased", "PROJECTID", "TASKID" };
if (UtilFns.isTraceOn) UtilFns.trace("About to set the input parameters");
getLPNToLocatorLOV().setInputParameters(toLPNLocator);
if (UtilFns.isTraceOn) UtilFns.trace("About to set the LOV as not required");
getLPNToLocatorLOV().setRequired(false);
if (UtilFns.isTraceOn) UtilFns.trace("About to set true to validate from LOV");
getLPNToLocatorLOV().setValidateFromLOV(true);
if (UtilFns.isTraceOn) UtilFns.trace("About to set the sub mapper");
getLPNToLocatorLOV().setSubMapper(this.mLPNToSubLOV);
UtilFns.trace(" Se oculta campo de Articulo ");
getItem().setHidden(true);
Session session = e.getSession();
//Continue button initialization
ButtonFieldBean nextLpn =
(ButtonFieldBean)session.getFieldFromCurrentPage("INV.SAVENEXT");
nextLpn.removeListener((MWAListener)nextLpn.getListeners().firstElement());
nextLpn.addListener(xxListener);
}
Session ses;
XXSubXferFListener xxListener = new XXSubXferFListener(new Session());
}
//Listener
package xxskr.oracle.apps.inv.invtxn.server;
import oracle.apps.inv.invtxn.server.SubXferFListener;
import oracle.apps.mwa.container.Session;
public class XXSubXferFListener extends SubXferFListener {
public XXSubXferFListener(Session s) {
super(s);
}
}
Can you Help me please,
Thanks and regards,
Lionel
written by AmitSrivastava , May 09, 2011
I wanted to add a new field in PO receipt mobile form. Please guide me on this.
Regards,
Amit
written by shailendrasingh , May 09, 2011
this post is allready posted.please go through that.
also u can extend all page related to PO reciept and add a new field on extended RcptGenPage ...
thanks
shailendra
written by AmitSrivastava , May 09, 2011
i tried some of options but it is not working. Appreciate if u can provide step by step
regards,
Amit
written by shailendrasingh , May 09, 2011
extend all the class
1 function class
2 page class
3 listner class
set parameteres for all LOV to ur custom extended page.
get indeex of the field after which u want to add new field.
add new field on desired position.
if u got any issue send ur error and log file.
thanks
shailendra,
written by AmitSrivastava , May 09, 2011
please let me know the syntax for getting the index.
regards,
Amit
written by shailendrasingh , May 09, 2011
int fieldIndex=getFieldIndex("nameoffield");
you will get the index.
thanks
shailendra
written by AmitSrivastava , May 09, 2011
i tried the same.but it is not working. i saw your post where you mentioned that you added two new fields in po receipt form. appreciate if you can give me your extended page code. It will hlep me to find what i am doing wrong.
or let me know any suitable time so that we can talk on this
regards,
Amit
written by shailendrasingh , May 10, 2011
can you tell me what the error you are getting .tell me each step you have done starting from the menu and function.sure i will help you here but state all the steps error and error logs.
thanks
shailendra
written by nk , May 12, 2011
I need to customize the MSCA Unpack screen in such a way that the existing Item,UOM and Qty fields are hidden.They are visible at present.Should I got for extending the page.The page makes use of the PackUnpackSplitPage class file now.
Would it suffice to just save the existing file as a different name and declare the class as extending PackUnpackSplitPage and make the following changes in the existing code?
protected void initUnpackDisplay()
{
mFromLPNFld.setHidden(false);
mChildLPNFld.setHidden(false); //change boolean value from false to true to render LPN field on Unpack screen as hidden//
mActionBtn.setHidden(false);
mCancelBtn.setHidden(false);
mMoreBtn.setHidden(true);
if(mTrxSubType == 2)
{
makeItemPropsUneditable();
mChildLPNFld.setRequired(true);
} else
{
mSubFld.setHidden(false);
mSubFld.setEditable(false);
mLocFld.setHidden(false);
mLocFld.setEditable(false);
mItemFld.setHidden(false); //change boolean value from false to true to render Item field on Unpack screen as hidden//
mUOMFld.setHidden(false); //change boolean value from false to true to render UOM field on Unpack screen as hidden//
mQtyAvailFld.setHidden(true);
mQtyFld.setHidden(false); //change boolean value from false to true to render Qty field on Unpack screen as hidden//
mToLPNFld.setHidden(true);
hideItemProps();
if(isPJMOrg())
I have never worked on MSCA or Java before and the current page PackUnpackSplitPage has the code for all Pack,Unpack,Split operations.
written by Nitin K , May 19, 2011
On the Mobile Unpack screen, I am unable to find the code to the "Unpack" button. This is the page where we have the From LPN, Sub,Loc,Item,UOM,Qty,AvailQty, fields and the Unpack and Cancel button. I went through the PackUnpackSplitPage.class file, UnpackFListener.class file and PackUnpackSplitBaseFListener.class file but am unable to find the code to the "UNPACK" button. Can anyone please help?
written by shailendrasingh , May 20, 2011
on Page you can find every field by prssing ctrl+x buuton.on that page you will get info about every field .so there
the name of "unpack "button is INV.ACTION .so now you can search in page class the refrence of this button .
on page i am pasting one line of code mActionBtn.setName("INV.ACTION");
so i think now you will be comfortable.
Thanks and regards,
Shailendra Kumar Singh
written by Junaid Iftikhar , May 23, 2011
How I can do.. If you can help me in this regard.. i will be greatful thanks.
written by samnan , May 24, 2011
I read your articles in Apps2fusion and once again thanks for sharing it with rest of the world.
I have a question regarding Mobile PO Receipts: Our client wants to see both RcptGenPage and RcptInfoPage UI into one page.
We are trying to merge 2 pages and make it as one page for Mobile Receipts.
After investigating RcptGenPage and RcptInfoPage has to be merged into one, the issue is:
RcptGenPage is Extending RcvPage and RcptInfoPage extending PageBean and both have duplicated methods, variables.
We have copied all the code from RcptInfoPage,RcptGenpage and made new Class file.
We complied and deployed it( we have followed all setup for registering and deploying new page),We are able to see our new Menu, Function and able to see our new page(Ctrl X gives our new class name in class file) but after entering ORG ID it is not going anywhere, so here my questions are:
We have gone through your articles and few people blogs but couldn't get right answers, I am hoping will get it from you.
Adding new single field is done by simply extending the standard class but here, ct wants club 2 pages UI and functionality into one page. So we copied both code into a single file(we removed duplicates methods, variables,....) and compiled and deployed it, but we are not bale to see it.
So if you can help in this matter I will really appreciate it.
1)Is it possible to merge functionality and UI of RcptGenPage and RcptInfoPAge into one page.If yes, how?
2)We didn't change anything in the code, we just copied initLayout() code from RcptinfoPage into RcptGenPage initLayout() method like wise for all methods, is it ok to do it like that?
3) RcptGenPage extends RcvPage and RcptInfoPage extends Pagebean, so we just extended RcvPage, is this causing the issue?
If you would like to see code I can fwd the code.
Please give your insight thought about this issue.
Thanks,
written by shailendrasingh , May 24, 2011
your requirement is liitle bit critical,this costomization dont look feasible..
i cant answer properly but i suugest you dont divert oracle standard functionality.,
if you want to disp-lay any thing on PO reciept page its ok but if you want to cut any steps from standard steps
its a very critical transaction also devloping this kind of application required lot of resource and effort.
also exact functionality you need to know if you are changing any standard functionality.
thanks
shailendra
written by smanan , May 24, 2011
Any pointers in this issue?
public class RcptExtGenFunction extends RcptGenFunction{
public static final String RCS_ID =
"$Header: RcptExtGenFunction.java 115.1 2002/04/17 00:09:11 mankuma ship $";
public static final boolean RCS_ID_RECORDED
= VersionInfo.recordClassVersion(RCS_ID, "oracle.apps.inv.rcv.server");
/**
* Default Constructor which is responsible to set the first page as
* the enter receipts page.
*/
public RcptExtGenFunction(){
super();
UtilFns.trace("After Super RCV: RcptExtGenFunction.RcptExtGenFunction");
if (UtilFns.isTraceOn) UtilFns.trace("RCV: RcptExtGenFunction.RcptExtGenFunction");
setFirstPageName("oracle.apps.inv.rcv.server.RcptGenPage");
addListener(this);
}
/**
* App Entered event which stores the first page that was entered in the
* current navigation into the session variable RCV_FIRSTPAGENAME as
* oracle.apps.inv.rcv.server.RcptGenPage
*/
public void appEntered(MWAEvent e) throws AbortHandlerException,
InterruptedHandlerException, DefaultOnlyHandlerException{
Session ses = e.getSession();
if (UtilFns.isTraceOn) UtilFns.trace("RCV: RcptExtGenFunction.appEntered");
ses.putObject("RCV_FIRSTPAGENAME", "oracle.apps.inv.rcv.server.RcptGenPage");
super.appEntered(e);
}
}
written by Dhamayanthi , May 25, 2011
If no value is found in Lov field, "No result is found" message is shown in the last row of the telnet screen. I tried to capture this message and show it in a dialog box. But I don't know from where this message is coming. most probably from lov class. If try to manually check if empty of that exit field, and show dialog box. but it shows me as expected, but still the original error message also appears. Please help me to solve this issue. I want to show "no result is found" in a dialog box. Not at the last line.
Appreciate your help.
Regards,
Dhamayanthi K
written by Nitin K , June 09, 2011
The current Unpack Page requires Item to be selected for an LPN in order to be unpacked. My requirement is that I need to ensure that all Items are selected when I unpack the LPN and avoid having to select one Item at a time from the LOV on the page. The Itemfld,Qtyfld, AvailQty fld and UOM fld are to be hidden on the screen. Is there any way to accomplish this.
I saw in the code of the page and listeners that that there are many places such as this.pg.getItemFld().getPrimaryUOM() etc. that use the item selected one at a time. I want to select all items in the background. What should I do?
written by Nitin K , June 16, 2011
Currently, the Unpack page requires each Item, Serial number to be selected for Unpack. I want to hide the Item,UOM,SN,Qty,QtyAvail,Remaining fields and Unpack all items and their serial numbers when i press the Unpack button just once. The only fields visible on screen would be From LPN, Sub and Loc. All other existing fields on the page should be invisible.This is my requirement.
Thanks,
Nitin.
written by Nitin K , June 16, 2011
I would like to know what @@@@ means in UtilFns.log("@@@@:"
Thanks,
Nitin.
written by Vinky , September 07, 2011
I am working in an upgrade project from 11i to R12. there is one MSCA function .
I am unable to open it in R12 .In 11i its working fine.
Plz help me ..........
written by PH , September 14, 2011
We need to avoid scanning the LPN again, ie display a message as Duplicate LPN if that LPN is already scanned.
For this as per your blog, I have extended the ShipLPNFunction, ShipLPNPage and the ShipLPNFListener.
Inside the extended ShipLPNPage, I have added the following:
//LPN Lov initialization
Session session = e.getSession();
ShippingLPNLOV LPNfld =
(ShippingLPNLOV)session.getFieldFromCurrentPage("ShipLPN.LPN"); //getLpnFld();
String curLPN = LPNfld.getLPN();
Connection con = session.getConnection();
PreparedStatement pStmt = null;
ResultSet rs = null;
int count = 0;
try {
String sql =
"SELECT COUNT(1) FROM WMS_LICENSE_PLATE_NUMBER WHERE LICENSE_PLATE_NUMBER = :1";
if (UtilFns.isTraceOn) {
UtilFns.trace("custom sql: " + sql);
}
pStmt = con.prepareStatement(sql);
pStmt.setString(1, curLPN);
rs = pStmt.executeQuery();
rs.next();
count = rs.getInt(1);
if (count > 0) {
setPrompt("Duplicate LPN");
} else {
String[] lpnInputs =
{ " ", "ORGID", "LOCATORID", "TRIPID", "TRIPSTOPID",
"oracle.apps.xxedp.IRShipLPNPage.ShipLPN.LPN" };
getLpnFld().setInputParameters(lpnInputs);
}
} catch (SQLException sqlexception) {
if (UtilFns.isTraceOn) {
UtilFns.trace("Exception in custom query: " + sqlexception);
}
} finally {
try {
if (rs != null) {
rs.close();
}
if (pStmt != null) {
pStmt.close();
}
} catch (SQLException se) {
if (UtilFns.isTraceOn) {
UtilFns.trace("Exception while closing resultset/ statement: " +
se);
}
}
}
Will doing setPrompt give me a prompt on the screen ?
Also, how do I enable that trace ?
Thanks,
PH.
written by shailendra singh , September 15, 2011
you can display message by session.setStatusMessage("message to display");
and point the cursor to the same field again.
Regards
Shailendra
written by PH , September 19, 2011
Thanks Shailendra.
I figured out that for the requirement we have, we need to add a validation before the LPN ID gets generated for an LPN being scanned.
From the menu defined, I found oracle.apps.wip.wma.MENU.LPNFLOWMENUITEM is the page which gets called for flow completion.
This in turn calls the LpnFlowPage.class
Now the LpnHandler.class defined in this is private.
How to then go about adding the validation query?
Regards,
PH.
written by Omkar Lathkar , September 26, 2011
We have a client requirement to add a custom field on a seeded from 'Mobile Pick Load - Mobile WMS Manual Picking'. (Used to Load an LPN based on the warehouse Tasks)
From the seeded java code I learned that this form gets rendered dynamically using class 'UIGenerator' (in oracle.apps.wms.config.server).
I was trying to follow the approach of customization given in this blog. I am finding it difficult because of following reasons:
1.The form to be customized opens from another form when user clicks on 'Done' button.
2.I need to copy the entire java code of first from to direct the flow to the form to be customized.
3.A lot of session variables in the form to be customized are not getting setup properly.
Do you think this seeded page can be customized as per the method recommended in this blog?
Thanks and regards.
Omkar.
written by shailendra singh , September 26, 2011
similar kind of customization i have recently done in my project.
the customization you are talking is not so easy .for this you have to be understand all the java cl;asses related to this module after that only you can add some extra field logic. please send clear requirement so that we can help you.
thankx to Senthil for creating this blog Regards ,
Shailendra Singh
written by Omkar Lathkar , September 26, 2011
By mistake i used work Customization. We need to add a custom field on a seeded MSCA from using extension.
Hi Shailendra,
I read your posts related to this requirement, but was not sure whether you had achieved this.
Here is our requirement in detail:
We need to add a custom read only field on MSCA form 'Mobile Pick Load - Mobile WMS Manual Picking'.
This field will have a pre populated value which needs to be derived using a custom logic.
So, when user logs in in this page, he/she will see this custom value along with the other details like sub inventory,location, item and so on..
I have identified following flow:
AOL Oracle form function calls page TaskSignonFunction.class. TaskSignonFunction.class calls page TaskSignonPage.class. TaskSignonPage.class calls TdFunction.class. Tdfunction class calls TdPage.class. Now the at TdPage, method FetchNextTask finds the next available task and MainPickPage.class is called. This MainPickPage.class in turn calls UIGenerator.class to render the required page.
My specific problem right now is, Throu the extended classes how to set below mentioned session variables.
TXN.PAGE_TYPE
TXN.TASK_METHOD
TXN.ALLOW_UNRELEASED_TASK
TXN.PRIORITIZE_DISPATCHED_TASKS
and so on..
These variable values are crucial to render the right page..
Please let me know if you have any idea about which class sets these variables.
Thanks.
Omkar
written by shailendra singh , September 27, 2011
whatever you want add on the respective page ....
see the satandard java code to set session variable its very easy...see in previous blog to add field on page...
Regards,
Shailendra
written by Omkar Lathkar , September 28, 2011
To add a custom field on 'MainPickPage' form and add corresponding custom logic, I have decompiled the seeded java classes and going to copy paste the java logic in custom java file.
Do you think this is the only feasible option?
Omkar.
written by shailendra singh , September 28, 2011
becopuse java only allow you to extend first level of functionality .what you are doing is the second level.
Regards
Shailendra
written by Nirupan James , September 29, 2011
This is the requirement
We are new to MSCA (WMS is not used by us). We use the pick confirm (Pick wave/move order) functionality.
The problem is currently standard functionality allows any lot number to be picked as long as inventory is available.
Our business requirement is to pick only the allocated lot number. (In otherwords only to allow the lot number reserved/ the lot number displayed in the prevoius filed). Therefore we have to modify the coding to validate the lot number that is entered against the previous field (system displayed lot number).
We dont know which which function, Listener, page class to modify and what the field name.
written by shailendra singh , September 29, 2011
on Any MSCA Page just click the Ctrl+x to see the page information you will get to know the field name as well as tha java page just look into java code u will know the listner class of the page.
Regards,
Shailendra.
written by Nirupan James , September 29, 2011
that was quick and easy,
the page name is 'DetailPage' and the field name is 'Lot'
Next step would be to write a code following the published example, changing only what is required in my case.
In order to correctly follow the function-page-listener class schema i should create my own function-page-listener extensions.
Now i know the page name (thank you) and would guess the listener class would be 'DetailFlistener' -
i can see it in my . . . /apps/inv/invinq/server folder/directory.
How should i find the function class?
I don't know it yet but it might be possible i may not need to extend all three classes,
but in all cases it would be good to know how things work and how to find the connections between them.
thank you in advance for your time
James
written by Nirupan James , September 29, 2011
thank you, Senthil
well,
thank even more because
that was a question i shouldn't have asked (i should have known where to look)
the function name is 'PickWaveFunction'
i will try to do some testing now
thank you very much
James
written by shailendra singh , September 29, 2011
Senthil how do you are planing to explore more knowledge on MSCA topic...
it will be good if devloper can share details like email id and phone number so that if any doubt any devloper should reach to other.this site its better to say its a knowledge centre should be more available to any body.
Regards ,
Shailendra
written by shailendra singh , September 29, 2011
you are perfectly right.but suppose if we are login into this site with the proper email id and varifiaction is done through admin then it will be great.but i also dont know term and contidion whether its allow or not.
generally its a portal for devloper so i dont think any body will missuse it.what happen generally some time there is no reply or whoever is new want some more claririty for understanding at time time its great if we can give help or take help telephony..
Regards,
Shailendra
written by Omkar Lathkar , October 05, 2011
I am working on a requirement to add a custom field on the MainPickPage.
I have used the approach mentioned in this blog and created xxMainPickPage and xxMainPickListener.
I am able to add a the field. But when I proceed on the fom, the seeded logic in the MainPickListener failes while executing logic in fieldExited method for field 'Sub Confirm'.
form the log i identified that in following code value of s is being derived as blank.
InputableFieldBean inputablefieldbean = (InputableFieldBean)mPage.getConfirmField("MAIN.FROM_SUB");
s = inputablefieldbean.getValue().trim();
But, on the form, I can see the first filed 'SUB' being populated with value 'BIN'. so in above code inputablefieldbean.getValue().trim() should have returned 'BIN'. But it does not return any value. This is causing the form to fail with message 'Invalid Subinventory'.
Shailendra, did you get similar problems ? please let me know if i should provide more information for the problem.
Shailendra please help me, as I think you have successfully extended these classes in your project.
Omkar.
written by PH , October 10, 2011
This is the piece of my code where I am adding Field Beans:
// Sub-inventory Field
mSubInvFld = new LOVFieldBean();
mSubInvFld.setName("SubInv");
mSubInvFld.setlovStatement("SELECT DISTINCT SECONDARY_INVENTORY_NAME FROM MTL_SECONDARY_INVENTORIES WHERE SUBINVENTORY_TYPE=1 AND RESERVABLE_TYPE=1");
mSubInvFld.setValidateFromLOV(true);
mSubInvFld.addListener(fieldListener);
// Locator Field
mLocatorFld = new LOVFieldBean();
mLocatorFld.setName("Locator");
mLocatorFld.setlovStatement("SELECT DISTINCT DESCRIPTION FROM MTL_ITEM_LOCATIONS WHERE DESCRIPTION IS NOT NULL");
mLocatorFld.setValidateFromLOV(true);
mLocatorFld.addListener(fieldListener);
It does not even show up the LOV. Also when I enter a value manually it gives me unsuccessful row construction.
Kindly let me know where I am going wrong.
Regards,
PH.
written by Gavin , October 14, 2011
written by SyedLaiq , October 25, 2011
I cannot compile properly above given Examples class files, please let me know which tool shall i used to compile the class files.
Regards,
Syed
written by John K , November 21, 2011
We currently have several MSCA/MWA pages which rather than bein extensions of existing Oracle pages are completely written from scratch. We are upgrading from 11.5.10 to R12 soon and would like to know whether there has been any methods removed, changed etc, ie anything which may prevent code designed to run under 11.5.10 from running in an R12 instances.
All updates are done through package calls so the code is stored in the database rather than being executed from within the class file.
Any pointers or help would be appreciated.
Thanks,
John
written by Lawrence , November 24, 2011
When we using the mobile device to open any of the MSCA page, and navigate to any button. The button is not circled by a dot-line to indicate that the button gets the focus. It work ok when we use the simulator for the same page, same button. Do you have any idea? Thanks
Regards
Lawrence
written by swapnaj , December 02, 2011
My requirement is to add new field in PO form in MSCA.
Can you help me in extending the classes.
in Listerner class,i am facing some problems like
In child class i am not able to access the private methods of the parent .how can I call them?
I decompiled the parent class"RcptGenFListener.java" and copied to the xxxRcptGenFListener.java and then i removed some of the methods content and called super.method().it worked fine for some methods.
Can you help in calling other private methods of a parent class.
And pls tell me whether I am doing in a right way or not.
Thanks,
Swapna
written by swapnaj , December 07, 2011
After extending the page,in the new page i am not getting the values for the old lov fields.(for example for existing field like Dock door,field are getting displayed but LOV is not getting displayed)
Can you please help on this.
Thanks,
Swapna.
written by Nitin K , January 02, 2012
I apologize for the fact that my query is not about MSCA customization. I am trying tro find out the screen from which I pick serial numbers for an order on MSCA and generate pick slip.I did a direct ship process and generated packing slip but I am not aware of the process to generate a pick slip for an order from MSCA screen. Can you provide me with the navigation for the same?
Thanks,
Nitin
written by Chaitanya Dubey , January 31, 2012
Thanks for the crisp steps and lucid explanation.
Best Regards,
Chaitanya
written by ChaitanyaDubey , February 23, 2012
Hi Senthil,
I have extended many MWA pages by reading you blog. [ thanks ? ]
But I am stuck while extending one of the oracle's MWA page [ oracle.apps.inv.invtxn.server.SerialSubXfrPage ], and need your help
I have created custom Function, Page and Listener classes [same way that I have other extensions working fine]
Standard
======
Page : oracle.apps.inv.invtxn.server.SerialSubXfrPage
Function : oracle.apps.inv.invtxn.server.SerialSubXfrFunction
Listener : oracle.apps.inv.invtxn.server.SerialSubXfrFListener
Function Name : Mobile Serial Sub Transfer
FND Function : INV_MOB_SER_SUB_XFR
HTML CALL : oracle.apps.inv.invtxn.server.SerialSubXfrFunction
Custom
======
Page : xxx.oracle.apps.ims.mwa.inv.invtxn.server.XxyhSerialSubXfrPage
Function : xxx.oracle.apps.ims.mwa.inv.invtxn.server.XxyhSerialSubXfrFunction
Listener : xxx.oracle.apps.ims.mwa.inv.invtxn.server.XxyhSerialSubXfrFListener
When I update the FND_FUNCTION to point to my custom function class [FND Function is INV_MOB_SER_SUB_XFR ] , framework calls my function, it then properly directs control to my Page, in the page my pageEntered() is called and completes without any error. [I have remove all custom code, just log comments]
After pageEntered() , the UI crashes with message in the status bar as "Unexpected error occured, please check the log."
The message in log file is . (I have seen that two more guys have posted the same error on this forum]
--------------------------------------
(Thread-14) *************************************************
(Thread-14) SerialLOV: fieldEntered
(Thread-14) isPopulated()===========false
(Thread-14) Employee ID :null
(Thread-14) Organization ID :7292
(Thread-14) Executing the J Patch Set Code
(Thread-14) Error java.lang.NumberFormatException: null
The reason I have posted only these last lines of the log is because this is the only difference in log when executing the standard page Vs Custom page.
Note : I saw that Employee ID :null , might be the error , so I had tried to set it
mwaevent.getSession().putObject("EMPID","183357");
The same error still existed, only diffenence is it showed the value of the employee ID instead of null
So I don’t think that is the root cause.
Can you please help me to identify the root case of this issue.
Thanks a ton,
Chaitanya
written by Murthy.Oracle , May 17, 2012
We have a requirement to complete WIP Job from MSCA.
Can you please help us ,how to import WIP Job compeltion data from MSCA to Oracle.
Thanks
Murthy
written by Mathan , June 06, 2012
written by Mothi , June 14, 2012
very nice to see your blog and nice help you are extending on this. We are using customscanmanager.class to invoke preprocessed scanning logic. we are very much successful to check the current page and the fields. example code is specifically written to check if the page is 'Mo Allocation' and the field is 'Confirm Item'. and all the page names we are using in order Management quick codes.
Now we want to have this restricted to specific responsibilities like maintaining lookup of responsibilities. but we are unable to find what is the Current Responsibility, which jave method can be used to find this?
Thanks - Mothi
written by Amrit , July 04, 2012
written by Punith , September 24, 2012
I am trying to extend the bullkpack page ,but i am unable to intialize it.Kindly request you to advise me on this.Please find the code below.
package oracle.apps.wms.bp.server;
import oracle.apps.wms.bp.server.BPPage;
import java.sql.Connection;
import java.sql.Date;
import java.util.Hashtable;
import java.util.Vector;
import oracle.apps.fnd.common.VersionInfo;
import oracle.apps.inv.lov.server.ItemLOV;
import oracle.apps.inv.lov.server.LPNLOV;
import oracle.apps.inv.lov.server.LocatorKFF;
import oracle.apps.inv.lov.server.LotLOV;
import oracle.apps.inv.lov.server.ProjectLOV;
import oracle.apps.inv.lov.server.ReasonLOV;
import oracle.apps.inv.lov.server.RevisionLOV;
import oracle.apps.inv.lov.server.SerialNumberLOV;
import oracle.apps.inv.lov.server.SourceTypeLOV;
import oracle.apps.inv.lov.server.SubinventoryLOV;
import oracle.apps.inv.lov.server.TaskLOV;
import oracle.apps.inv.lov.server.UomLOV;
import oracle.apps.inv.utilities.server.DualUOMFields;
import oracle.apps.inv.utilities.server.DualUOMInterface;
import oracle.apps.inv.utilities.server.NumberFieldBean;
import oracle.apps.inv.utilities.server.ReleaseLevel;
import oracle.apps.inv.utilities.server.SerialLotTrxPage;
import oracle.apps.inv.utilities.server.UtilFns;
import oracle.apps.mwa.beans.ButtonFieldBean;
import oracle.apps.mwa.beans.FieldBean;
import oracle.apps.mwa.beans.PageBean;
import oracle.apps.mwa.beans.TextFieldBean;
import oracle.apps.mwa.container.MWALib;
import oracle.apps.mwa.container.Session;
import oracle.apps.mwa.eventmodel.AbortHandlerException;
import oracle.apps.mwa.eventmodel.DefaultOnlyHandlerException;
import oracle.apps.mwa.eventmodel.InterruptedHandlerException;
import oracle.apps.mwa.eventmodel.MWAEvent;
public class XXINDBPPage extends BPPage {
public XXINDBPPage(Session paramSession) {
super(paramSession);
UtilFns.log("Inside XXINDBPPage Step 1");
//Add a new button and set the properties.
mTxtField = new TextFieldBean();
mTxtField.setName("XX_TEXT");
mTxtField.setPrompt("New Text");
mTxtField.addListener(xxListener);
mTxtField.setValue("Initial Text");
this.addFieldBean(3, mTxtField);
this.mLPNFld = new LPNLOV("BULK_LPN");
String[] lpnInputs =
{ " ", "ORGID", "oracle.apps.wms.bp.server.XXINDBPPage.LPN", "" + getLPNFld().getSubinventoryCode(), "" + getLPNFld().getLocatorId() };
this.mLPNFld.setInputParameters(lpnInputs);
}
public void pageEntered(MWAEvent e) {
UtilFns.log("Inside XXINDBPPage Step 1");
super.pageEntered(e);
UtilFns.log("Inside XXINDBPPage Step 2");
}
TextFieldBean mTxtField;
XXINDBPPageFListener xxListener = new XXINDBPPageFListener();
}
written by Punith , September 24, 2012
String[] lpnInputs =
{ " ", "ORGID", "oracle.apps.wms.bp.server.XXINDBPPage.LPN", "" + getLPNFld().getSubinventoryCode(), "" + getLPNFld().getLocatorId() };
this.mLPNFld.setInputParameters(lpnInputs);
I am using the above code to initialize the lov's which is not working
Thanks,
Punith.B
written by rajeev123 , October 25, 2012
i am new to MSCA. Recently i got one requirement related to "MSCA/MWA Customizations & Extensions". Requirement is
In PO recpt page i need to add one more field called "Ordered Quantity" which will pick the value from db and displayed in PO recpt, which customer actually ordered. There is already a field called Qty(Quqntity) in which user enters the value manually as per available quantity in store and this quantity will be shipped to customer
Kindly give some example and valuable suggestion on how to achieve this requirement.
Kind Regards
Rajeev Ranjan
written by vinodbudhwani , December 27, 2012
[Thu Dec 27 02:57:41 EST 2012] (Thread-14) Employee ID :null
[Thu Dec 27 02:57:41 EST 2012] (Thread-14) Organization ID :148
[Thu Dec 27 02:57:41 EST 2012] (Thread-14) Executing the J Patch Set Code
[Thu Dec 27 02:57:41 EST 2012] (Thread-14) Error java.lang.NumberFormatException: null
Thanks,
Vinod
written by Ketaki , March 27, 2013
I am working on one assignment where I need to add one field on oracle.apps.wip.wma.page.MovePage at end and need to save details entered in reference field when Move Assy has been performed on job.
I am not able to see logs generated for this seeded page as it is using WMAUtil.log method which in turns uses appslog.write. Could you please let me know where to see log messges for this class. As its not avaialble in standard MSCA log files.
Appreciate your help on this !
thanks,
Ketaki.








dbms_sql.define_column(v_cursor2,2,v_addr,4);
in above two cond's I am declare one variable in raw(4);,but how to
give the that size.
Actual reqirement is iam passing the parameter in from class.
select stmt is
SELECT a.name,b.addr, a.latch#, b.gets, b.misses, b.sleeps
FROM v$latch a, v$latch_children b
WHERE b.sleeps>0 AND
b.latch# = a.latch#
ORDER BY 1 ASC ,5 DESC
this select stme is convert into procedure.
plz could u send me code.
Thanks,
Damodar Reddy.S