MSCA/MWA Java API Documentation – Part1

In this article we will start with the common Java APIs used in MSCA/MWA Framework.
The intention behind this article is lack of sufficient documentation on MWA/MSCA Framework.
I assume that the users of this article will have basic exposure to Java application development and
used the Java documentation for development purpose.
MWABean (oracle.apps.mwa.beans.MWABean) is the base class for all the beans used in Mobile Applications.
This is derived from Java.lang.Object class. It has four main sub classes.
They are
- Field Bean
- FlexField Bean
- Menu Item Bean
- Page Bean
Commonly used APIs:
public void addListener(MWAListener) | Add a listener to event listener list |
public void removeListener(MWAListener) | Remove a listener from event listener list. |
Note: oracle.apps.mwa.eventmodel.MWAListener is an Interface which handles the event and
is derived from java.util.EventListener
MWA Java Bean Hierarchy:
Now we will see about the Sub classes associated with the MWA Bean.
MenuItemBean:
MenuItemBean is the base class for all user developed menu item level beans
Commonly used APIs:
public java.lang.String getFirstPageName() | Get name of the first page within the menu item. |
public void setFirstPageName(java.lang.String) | Set name of the first page within the menu item. |
public java.lang.String getMenuConfirmMessage() | get the menu confirmation message
|
public void setMenuConfirmMessage(java.lang.String) | set the menu confirmation message
When the user tries to go to main menu, it asks for confirmation something like, “Go to Menu?”. This message can be changed using this method |
PageBean:
It is the base class for all user developed page level beans.
Commonly used APIs:
public void addFieldBean(FieldBean) | Add the bean at end of page |
public void addFieldBean(int index,FieldBean) | Add the bean at specified index |
public void removeFieldBean(FieldBean) | Removes the field bean from the page |
public String getName() | Get fully qualified class path of the page |
public Session getSession() | Get the session of page bean. The return type session(oracle.apps.mwa.container.Session) is derived from the class oracle.apps.mwa.container.BaseSession
|
public void setSession(Session) | Sets the session for the page. |
public String getPrompt()
| Get the Page Title |
public void setPrompt(java.lang.String) | Set the Page Title |
FlexfieldBean:
This is used to handle the Flex Field beans in Mobile Applications. This implements the following interfaces
- java.util.EventListener
- oracle.apps.fnd.flexj.event.FlexfieldListener
- java.io.Serializable
Commonly used APIs:
public oracle.apps.fnd.flexj.Flexfield getFlexfield() | Returns the underlying FlexField or returns null on error |
protected Boolean addSegmentBean(oracle.apps.fnd.flexj.Segment Seg) | add a segment to Flex field |
protected void removeSegmentBean(oracle.apps.fnd.flexj.Segment Seg) | removes a segment |
Field Bean:
FieldBean is the base class for all user developed field level beans.
Examples of FieldBeans are TextFieldBean, ButtonFieldBean, LOVFieldBean, MultiListFieldBean, ListFieldBean, HeadingFieldBean, SeparatorFieldBean.
The Commonly used APIs:
public String getName() | Get Unique Id for the field |
public void setName(java.lang.String)
| Set Unique Id for the field |
public String getPrompt() | Get Label for the field. |
public void setPrompt(java.lang.String)
| Set Label for the field. |
public void setHidden(boolean) | Make the field visible or not. |
In the next article, we will get into details of each type of field beans like TextBean,LOVBean etc..
written by Himanshu Joshi , April 21, 2008
Please Provide the same for MWA Testing, Error Logging and Debugging.
written by Himanshu Joshi , May 06, 2008
I am very new to MSCA framework.
I am getting an error while populating LOV.On the first hit, I am getting the error below:
(Thread-13) MWA_LOV_ROW_CONS_FAIL: Unsuccessful row construction
java.lang.NullPointerException
at oracle.apps.mwa.container.LOVRuntimePageHandler.pageEntered(LOVRuntimePageHandler.java:89)
at oracle.apps.mwa.container.StateMachine.callListeners(StateMachine.java:1666)
at oracle.apps.mwa.container.StateMachine.handleEvent(StateMachine.java:1067)
at oracle.apps.mwa.presentation.telnet.PresentationManager.handle(PresentationManager.java:702)
at oracle.apps.mwa.presentation.telnet.ProtocolHandler.run(ProtocolHandler.java:820)
But when I go to next LOV and traverse back to first one, It gives me the LOV.
Please help me in resolving the issue.
written by Srinivas Reddy , May 12, 2008
1. we have this requirement from user 'The screen consists one textfeild i.e lot number, as soon as the lot is scanned,
the scanned lot value should be sent to server, without pressing anybutton or key' -- can this be achieved. User insists they dont
want to press button/key.
written by Srinivas Reddy , May 12, 2008
Please advise if we set the cursor position programmatically in textfields.
written by Srinivas Reddy , May 13, 2008
Thanks for immediate reply.
The fieldExited function will be invoked by the container when an event happens.
If a page have multiple textfields, i believe after each scan there will be fieldexist of current textfield and cursor goes to next input field automatically.
About My Query is if you have only one textfeild in the page (ex: for lot number). , after you scanned lot,the fieldexit happen when do tab or enter. My user donot want to tab/pressenter after scan. If there is only one textfied in page, how does implicitly fieldexit happens after you scan. This urgent requirement to solve for us. I am very new to MSCA. Pls correct me if I am wrong and advise how i can do fieldExist in a page with only one textfield.
written by Srinivas Reddy , May 13, 2008
Thanks for your prompt reply. I will check on feildexit function with mobile device. I have given task of developing custom page for Lot Receiving/anPacking/Sealing d weighing etc. Now i am able to do UI part after reading your articles. Each of the page require validations (like lotnumber valid, not duplicate, locator not full etc) and requires to perform transactions (like move lot between different stages). Pls advise on approaching doing validations and transactions.
1. Is there any existing oracle Java API where i can pass value which perform validations or transactions and return results.
2. (OR) I have to write custom java code that calls PL/SQL API.
Pls advise me which API i can use to perform above validations/transactions.
Thank you very much,
srinivas
written by Srinivas Reddy , May 14, 2008
Thank for update, now I am able to do API calls and java wrappers available.
I have tested fieldExit, it is firing field exit after scanning without pressing enter key/submit button.
We still facing following issues
1) When a page is selected, the cursor is not defaulting to first Input field. We have to explicitly
Select the input field and scan.
2) After scanning, the cursor is not positioning in next Inputfield again we have to explicitly
select the next input field to scan.
3) Even when to enter in Mobile device, it is not coming to next field.
3) Standard MSCA pages also same.
We are using Intermec 730 Pocket PC Mobile Computer Window 2003. When scanned on excel/word, cursor postioning to next line after scan.
Is it the problem with device setting/application. Or It is expected behavior in MSCA page(i.e. it is required select each input field before scan). Is there a way to positioning cursor in the input field. Please advise…
Thanks and regards
Srini
written by Srinivas Reddy , May 14, 2008
-- we aslo did devise setting - postable and
to place after each scan. i.e working when scanned on word/excel doc but not on MSCA custom/standard pages
written by Srinivas Reddy , May 16, 2008
written by Srinivas Reddy , May 20, 2008
The issue is resolved by installing the new tiny jvm CrEme v.4.2
written by Srinivas Reddy , May 20, 2008
Untill a week ago, i am not heared of this MWA framework. I worked in java for 6 yrs and switched to working on integration of
oracle apps to web applications using Webmethods/Adoptors (before we implemented 11i). For 3 yrs i am working j2ee/webmethods/and oracle apps functional (PO/INV/Planning). A week ago i was asked to do develop shipping execution on mobile which involve receiving to shipping bay, location transfer, picking , sealing , packing, ship confirm etc. You article on net helped to understand framework. Having worked a number of year on java i did not faced much problem in doing application.
I have completed my project project in a week.
Thanks and regards.
Srini
written by Naveen Adepu , May 28, 2008
I am new to the MSCA framework and got some idea on it by going through this article.
I have a requirement from client that when we are receiving an item against a PO and if the item requires inspection then the client want to suppix".Q" to the Lot number and also status to 'Q'. Can you please let me know how i can achieve this.
written by Naveen Adepu , June 13, 2008
Thanks for your reply. I have taken the RcptGenPage.class file and decompiled it. When i am trying to compile the generated java file, without making any modification to it and still it is giving me lot errors. Can you please tell me what wight be the problem? where can i find the source code (java files) for the MSCA application.
written by Naveen Adepu , June 14, 2008
I have taken all the java class files referenced by RcptGenPage.class file. Still it is not compiling. In the code there are some break statements available such as
break MISSING_BLOCK_LABEL_1816;
These statements are giving me the errors.
written by Ritesh M , June 17, 2008
suggest you to extend the RcptGenPage.class and add additional functionality as desired.
What are the changes you wanna make to original page ?
Cheers!!!
Ritesh
written by Ravi D , June 24, 2008
Can you please let me know how many maximum concurrent users MWA can support. Considering we have multiple CPUs and multiple MWA servers running ( Dispatcher is used ). We need to test it for 600 users. Please let us know if it is been stress tested or any scenarios(Cust site) where 600 users are using MWA simultaneously.
written by Rajeev Dave , July 02, 2008
I have created total new RN and used preciously used AM , VO through extend can i do this.
I have just added detail in advance table and this is not possible through personalization.
Please sugget
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 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 Himanshu Joshi , July 17, 2008
Need to display our own customized warning message on the screen
confirming from the user using (Y/N) input from the user.
We are using setMenuConfirmMessage(String s) method for this.
When user press F2 key to exit the screen ,we need to display our own message
on a particular page/screen and not on all the screens used under the same menu.
written by Himanshu Joshi , July 18, 2008
I have tried with setStatusMessage(), but at that point I am not able to capture "Y" and "N" event. (Y/N)
Regards:
Himanshu
written by Himanshu Joshi , July 21, 2008
Client wants a custom warning "Untransacted lines exist, Ok to exit?(Y/N)" on screen-2 only where he can input (Y/N).Therefore I have used setMenuConfirmMessage() method, So that I dont need to write code for inputs (Y/N).
In another approach I have also used session.setStatusMessage() to display the warning, but in this case I have not proper code to capture user Inputs (Y/N).
I want to display this messgae on the bottom of MSCA screen.
written by Himanshu Joshi , July 22, 2008
This Dialog Approach did the trick.
Thanks once again !!!
written by Pramod , July 22, 2008
were you able to extend RcptGenPage?, please post your experience.
Regards,
Pramod
written by Mayra , August 09, 2008
written by Irawan , August 19, 2008
written by Mo Osman , August 20, 2008
Default
Symbol device
Intermec Device
Gui Client
Do you know how I can map the device name into the deviceIP.ini file so when logging in it will automaticcaly select intermec device instead of giving me these 4 different choices?
Thanks
MO
written by Mo Osman , August 20, 2008
Here are the content of my deviceIP.ini
[host]
TelnetServer=hostname.company.com
//# Begin customizations
//#
//# ********************
//# Customizations below this line will be preserved if patching this
//# file via the instantiation utility.
[device]
DEFAULT=default_key.ini
SYMBOL=symbol.ini
INTERMEC=intermec.ini
GUI=gui_key.ini
// Wildcard at the end of IP add***s is supported.
[map]
127.0.0.1=default_key.ini
//# ********************
//#
//# End customizations
written by suresha , August 28, 2008
We have requirement to print a custom message, say "Do you want to print the report ? Y/N" and depending on the response we need to perform next action.
currently if we press F2 the option “Go to Menu?. Y/N ” is coming. How it is done? Can we customize it or can we have such our own prompts?
Also how to capture the response? (Y/N)
Please help.
written by Vyaghresh , October 08, 2008
Thanks for your documentation.
I have a concern. I am in one Mobile Page say Sub Inventory Transfer. From that Page i would like to call a page called Update Serial Attrributes.
How this can be achievd. For calling a page from another page any Java API are available.
Thanks
Vyaghresh
written by Vyaghresh , October 08, 2008
the challenge here is in the first Std page there is a button,upon clcking this the 2nd std page will appear where the fields setEditableProperty is set to false.
Now i need to change that button name and need to make the fields setEditable to true.
Current page is like this
Std Page 1 -> Button1 -> (Upon clicking this) Std page 2 is coming and all the fields's setEditable property set to false.
My approach
Custo page Extends Std Page1 -> Button 2( need to rename Button1 above) ->(Upon clicking this) Std page 2 should come and all the fields's setEditable property set to true.
Hope this is clear now.
written by Vyaghresh , October 13, 2008
Please tell me how to stop it.
Also i am not able to undertand what to put in the method initCustomPage when we extend any standard class.
written by Vyaghresh , October 13, 2008
I will post the exact error in the Log file.
Meanwhile can you please explain me the following code snippet in your example:
//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);
}
What will it does? This code esp for SHipment LPN. If we are extenidng a diff page how this code can be modified.
written by Vyaghresh , October 13, 2008
written by Vyaghresh , October 13, 2008
Also i can see break MISSING_BLOCK_LABEL_1816; in the decompiled file. I am not able to understand this,
written by nisha , October 15, 2008
I need to prepare a design and development standard document for MWA. Do you have any template or standard separately for MWA? If so , please let me know.
Thanks and Regards,
Nisha
written by Arik , October 22, 2008
I need to customize the mobile (oracle 11.5.9)....
For example, after choosing Move Assy in the main menu, I have a menu to select the organization code.
How can I customize this menu? I want it to take a default Org' without this menu...
Is it possible??
Thanks
Arik
written by Arik , October 22, 2008
When I'm loggin into the Mobile (via telnet), I have list of menus.
One of the submenus (under Assy & Material Tx --> Move Assy) is "Org Code".
Unlike the previos menu, I can't customize this subfolder, because I think it's comming from some java class.
I want the org code will be save in harcoded, but I don't know where to do it, or how...
I only know that this sub folder (Org Code) has a function that point --> MOVEMENUITEM.class.
Any ideas??
Thanks
Arik
written by Arik , October 22, 2008
Yes this is whay I'm asking...but -
The requirnment is that this first time info will not be at all. There are few users that will use the same devise, and they don't want it. Again, I know how to change
the menu (add or drop), but the ORG info I didn't find in the application menu.
The question is(also for other future customization I will have to do): Where can I handle it, If I want to drop it? Is it java class?Menu?Setup?
Thanks
Arik
written by Arik , October 22, 2008
I'm sorry but it is a little bit complicated to me....is it possible for you to be more specific regarding your second solution?
I've opend the OrgFunction.class, but I didn't understand: 1. do I need to change the current class or create another one?
2. If to change - then what to change? 3. If create new class, then what to do with it...?
Thanks
Arik
written by Arik , October 22, 2008
I will try your solution.....
written by Arik , October 23, 2008
I need to understand something please....
If I want to add hard coded value in a field, inside the mobile, it is not possible?
For example, the org code, or from/to sequence. If the user is enter to the mobile, choose Assembly ext..and when he will choose
"from seq" and press TAB, the "to seq" will come automaticlly.
Where(if possible at all) I can handle it? (I know how to do it in Oracle Forms but not here)
written by Arik , October 23, 2008
What do you mean by extend the standard page ? How can i get to this page....?
I'm very sorry for all the questions but I didn't find any documentation...and it seems very complicated...
written by Deepak71178 , October 24, 2008
public void getNextPack(MWAEvent e) throws SQLException,AbortHandlerException, InterruptedHandlerException, DefaultOnlyHandlerException
{
Session consession1 = e.getSession();
Connection con1 = consession1.getConnection();
PreparedStatement pstmt1 = null;
pstmt1 = con1.prepareStatement("select RECEIPT_TYPE, RECEIPT_IDENTIFIER,INTERNAL_PACKAGE_ID, SO_TO_SHIP_AGAINST, SO_LINE_TO_SHIP_AGAINST,RECEIPT_STATUS, COMMENTS from GSS_PENDING_RECEIPTS_ALL");
ResultSet rset1 = pstmt1.executeQuery();
if(rset1.next())
{
mReceiveAlltoBin.setValue(rset1.getString(1));
mSubInventory.setValue(rset1.getString(2));
mPackageQty.setValue(rset1.getString(3));
mItemNo.setValue(rset1.getString(4));
rset1.next();
}
}
public void fieldExited(MWAEvent mwaevent) throws AbortHandlerException, InterruptedHandlerException, DefaultOnlyHandlerException {
Session ses = mwaevent.getSession();
if (s.equals("TEST.NEXTPACKAGE")) {
ses.setStatusMessage("This is Next Package");
try{
pg.getNextPack(mwaevent);
}catch(SQLException sqle){}
}
}
written by Deepak71178 , October 24, 2008
My requirement is, If I select a ButtonFieldBean name "NextPackage", i want to move to next record those record should be displayed in following TextFieldBean mReceiveAlltoBin, mSubInventory, mPackageQty, mItemNo. which i called the methode getNextPack(MWAEvent e) in FieldExited event. So when i exit from the buttom "Next Package", a new connection will be established from session, the data will be assigned to Resultset, the data are assigned from record set to TextfieldBean. Since every time when i click the button a new connection is established so i am unable to move to the next record. I also tried a global connection but its hanging.
Can you please help in this regard.....
Thanks
written by Deepak71178 , October 24, 2008
written by JJ , October 29, 2008
Everthing works fine on Win CE 5.0, but customer want the the new WM 6.1 device.
Within the Oracle Mobile Client, you are suppose to be able to use the barcode scanner to scan the barcode: (30)12 (91)GTA12251, and the Java application is suppose to parse it out.
If you Scan the barcode, "(30)12 (91)GTA12251", at the "Qty" field, you are suppose to get just "12"
If you Scan the barcode, "(30)12 (91)GTA12251", at the "Item" field, you are suppose to get just "GTA12251"
However, since the Parsing does not work... it just dumps the complete barcode.
Current Load:
Intermec CK3 - WM 6.1, CrEme JVM version 4.12 (with the Tiny AWT DLL's)
Thoughts:
- May need a different clientfor WM 6.1
- Once place suggested loading windowsatlce400.dll, windowsmfcce400.dll, and windows
egsvrce.exe
Any idea? Anyone up and running on WM 5.0 or WM 6.1?
written by Deepak71178 , October 31, 2008
PreparedStatement pstmt = null;
pstmt = con.prepareStatement("update inventory_master set BIN_NUMBER='"+"BINABCDEF"+"', SUBINVENTORY ='"+"SUBABCDEF"+"'");
pstmt.executeUpdate();
written by Deepak71178 , October 31, 2008
Thanks for your Help,
But when i click button to update the record, its taking lot of time to update in database. Is that because of server Performance? or....
written by Deepak71178 , October 31, 2008
written by Deepak71178 , October 31, 2008
written by Deepak71178 , November 03, 2008
written by Deepak71178 , November 03, 2008
written by Deepak71178 , November 03, 2008
Thanks
written by Deepak71178 , November 03, 2008
written by smabbas91 , January 19, 2009
modificaion in mwa , I mean what should i install and from where to start ....
Please help to set the enviornment for development / customization
written by kiran kumar G , January 20, 2009
I am working on wms telnet customizations,
we are facing an issue , we are not able to open any of the custom java forms from the telnet.. Standard forms are working fine ..
for example stage move form which calls xxxStagemove.class is not getting opened and we are able to see the error message in system log
[Tue Jan 20 10:58:27 EST 2009] (Thread-12) Couldn't load given class : oracle.apps.wms.td.server.GEPSStagingMoveFunction
java.lang.ClassNotFoundException: oracle.apps.wms.td.server.GEPSStagingMoveFunction
But the class file and java file both are in place. This worked fine till now, but suddenly we r facing this issue
Please can input any comments .
Thanks,
Kiran
written by Chiggins , January 28, 2009
Can anyone share their shortcut file they are using to launch?
written by Anju , March 05, 2009
I am facing "MWA_LOV_ROW_CONS_FAIL: Unsuccessful row construction" when i hit CTRL L in a LOV field.
I have followed the simillar approach in another page where it is working fine.
Please help me out in fixing this issue.
Thanks,
Anju.
written by Yogasri , March 22, 2009
Thanks to you and Anil for the great work!!! I enjoy reading the articles of Anil. Now I am assigned to work on the Mobile Web Applications. I am pretty new to the Web-based version of APPS. As per Anil's documents, I installed Jdeveloper on my machine, gotten all the files from server (the files $JAVA_TOP/class*, $MWA_TOP/mds/*, etc) and placed them on my client machine. Here is my requirement which I need to accomplish in MWA inbound/Receipts.
In Receipts, when once user enters the Item number, I need to display a popup/ alert saying that "This is a BackOrdered Item". To do this, I created a pl/sql function say ABC_Fun that accepts item number as input and return Y or N. If the return value is Y then i need to display the alert.
Can you please help with this?
Thanks,
Yogasri
written by OmkarLathkar , March 28, 2009
Currently I am working on a MSCA form development which has following functionality to be incorporated:
On a particular user action, the fom needs to ask a Yes/No type of fuction to user and depending on the user option,
the form needs to perform spefic action.
Please guide me if such Interactive functionality is possible in mSCA. If possible plz gude me thru sample code..
Thanks.
Omkar
written by OmkarLathkar , March 28, 2009
Hi Senthil,
Currently I am working on a page which has following functionality.
When the user presses a button, a new page should get open. I used following code:
-----
else if (s.equals("STT.SHORTAGE") && mwaEvent.getAction().equals("MWA_SUBMIT") )
{
UtilFns.error("sttScanLoadListener: fieldExited : in Shortage");
pg.getSDetailsBtn().setNextPageName("xxbcg.oracle.apps.bcg.stt.server.helloWorldFunction");
UtilFns.error("sttScanLoadListener: fieldExited : Before refresh");
mSes.setRefreshScreen(true);
UtilFns.error("sttScanLoadListener: fieldExited : After refresh");
return;
}
------
This code is written in the fieldExited exited event for the action 'when button STT.SHORTAGE is pressesed'.
The method getSDetailsBtn() returns an object of class ButtonFieldBean.
The problem here is that, though the code gets executed and I get all the status messages but the required page does not open.
Please guide me if I need to do any additional steps so that the page gets open in the same session. Its assured that the page is present in the
given path.
Thanks
Omkar
written by Yogasree , March 28, 2009
Thanks for your response to my question posted on March 22nd. I tried to write code by reading your sample "Hello-World-mobile-supply-chian" but not very confident of what i wrote. Here is the outline of my script.
--Code for field exit on item_number
package xxx.custom.server
import oracle.apps.inv.utilities.server.UtilFns;
import oracle.apps.mwa.beans.FieldBean;
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.MWAFieldListener;
public class CustomTestFListener implements MWAFieldListener
{
public CustomTestFListener() {}
public void (MWAEvent mwaevent) throws AbortHandlerException,
InterruptedHandlerException,
DefaultOnlyHandlerException
{
// check if the filed is item number
String s = ((FieldBean)mwaevent.getSource()).getName();
//replace with itemnumber field name below
if (s.equals("TEST.SUBMIT"))
{
//call the function
if retun_value = ‘Y’
{
//call the dialogue page method
}
}
}
}
--Dialogpage
import oracle.apps.mwa.presentation.telnet.TelnetSession;
String dialogPageButtons[] = {
"OK"
};
TelnetSession telnetsession1 = (TelnetSession)ses;
int k = telnetsession1.showPromptPage("Backorder Status","This is a BackOrdered Item!!! ",dialogPageButtons);
Here are my questions, I appreciate if you can help me understand....
1) I need to place this java file in $CUSTOM_TOP/java and compile the same correct?
2) In the above script, I am getting the name of the field into the variable called "s". Then Once i make sure that it is item_number field of (inbound-> Receipts screen) then I need to call my function. So to check the filed name tehre is a statement saying : if (s.equals("TEST.SUBMIT")) , so my question is how do i know the field name?
what should i replace the TEST in the above statement and how do i get the values for TEST and SUBMIT?
3) how to call my function, I saw calls to procedures in your script but no call to function atleast from whatever i understood. Because i need to declare a char variable
to receive the return value of the function. something like v_ret_val char(1); v_ret_val := ABC_FUN(item_number). something like that.
Can you please tell me the function call in above script?
4) Once I get the return value as 'Y' then i have to call the dialog page. How can i achieve this? Meaning can i create that as another method and make it part of the same pkg or it has to be something else? if so, can u please help me with the script?
Senthil, sorry for asking so many questions, I clearly understood your hello-world extension (i guess). But it is a complete extension, where as mine is just a field extension hense I am not able to understand what is just needed.
I sincerely appreciate your help.
Regards,
yogasri
written by OmkarLathkar , March 30, 2009
Thanks for promt reply to my query on Saturday.
My both the problems are solved today.
First Problem: I got code from the link u provided. Thanx a ton again!
Second Problem: I had a problem opening a new page using method setNextPageName.
In the code I was using a new intantiation of the page class using following code:
pg = new sttScanLoadPage();
Instead, I should be using following code
pg = (sttScanLoadPage)mSes.getCurrentPage();
This code ensured that the object pg is instantiated with a page from which I want to open a new page.
Thanks a ton for ur initiative and is helping all of us in MSCA.
Omkar
written by Yogasri , March 31, 2009
Hi Senthil,
Thanks for your response to my question posted on March 22nd. I tried to write code by reading your sample "Hello-World-mobile-supply-chian" but not very confident of what i wrote. Here is the outline of my script.
--Code for field exit on item_number
package xxx.custom.server
import oracle.apps.inv.utilities.server.UtilFns;
import oracle.apps.mwa.beans.FieldBean;
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.MWAFieldListener;
public class CustomTestFListener implements MWAFieldListener
{
public CustomTestFListener() {}
public void (MWAEvent mwaevent) throws AbortHandlerException,
InterruptedHandlerException,
DefaultOnlyHandlerException
{
// check if the filed is item number
String s = ((FieldBean)mwaevent.getSource()).getName();
//replace with itemnumber field name below
if (s.equals("TEST.SUBMIT"))
{
//call the function
if retun_value = ‘Y’
{
//call the dialogue page method
}
}
}
}
--Dialogpage
import oracle.apps.mwa.presentation.telnet.TelnetSession;
String dialogPageButtons[] = {
"OK"
};
TelnetSession telnetsession1 = (TelnetSession)ses;
int k = telnetsession1.showPromptPage("Backorder Status","This is a BackOrdered Item!!! ",dialogPageButtons);
Here are my questions, I appreciate if you can help me understand....
1) I need to place this java file in $CUSTOM_TOP/java and compile the same correct?
2) In the above script, I am getting the name of the field into the variable called "s". Then Once i make sure that it is item_number field of (inbound-> Receipts screen) then I need to call my function. So to check the filed name tehre is a statement saying : if (s.equals("TEST.SUBMIT")) , so my question is how do i know the field name?
what should i replace the TEST in the above statement and how do i get the values for TEST and SUBMIT?
3) how to call my function, I saw calls to procedures in your script but no call to function atleast from whatever i understood. Because i need to declare a char variable
to receive the return value of the function. something like v_ret_val char(1); v_ret_val := ABC_FUN(item_number). something like that.
Can you please tell me the function call in above script?
4) Once I get the return value as 'Y' then i have to call the dialog page. How can i achieve this? Meaning can i create that as another method and make it part of the same pkg or it has to be something else? if so, can u please help me with the script?
Senthil, sorry for asking so many questions, I clearly understood your hello-world extension (i guess). But it is a complete extension, where as mine is just a field extension hense I am not able to understand what is just needed.
I sincerely appreciate your help.
Regards,
yogasri
written by Yogasri , April 01, 2009
Here is the assumption i made. As I am not adding any field or changing anything in the layout, i thought I can just add my customization to the standard page. Firts of all i would like to know if that is recommended. Otherwise I will create a custom new page.
I just took the souce from your custom page script. Not sure what are the standards of extenstions to make to the standard page. I am pretty new to this stuff. Please help me.
Also, can u pl tell me how to refer to my actual question in this forum. I guess that really helps to link your answer.... Thanks
Regards,
yogasri
written by Anju , September 17, 2009
I have added a new LOVField in Receipt screen.
The query is returning values.
But when I do a CTRL L in the LOV field, "No result is found" message is coming up.
Please clarify.
Thanks,
Anju
written by Anju , September 17, 2009
Issue was because the proper parameter was not being passed.
Regards,
Anju
written by sbt , February 05, 2010
We are using MSCA and receiving items using Motorola Symbol device. by default it prints one label per item , I want to customize the form so tht user can enter the no. of labels to print. How to send no. of labels to print in the XML file ?
Thanks,
SBT
written by Joi F , March 11, 2010
I was hoping you might have some insight to my problem .. it seems that you are the main wiz when it comes to MWA.
We are currently in the process of migrating from a telnet client solution to the Oracle MWA GUI client.
We have translated a lot of the applications (including our own customizations) to Icelandic, as we are an Icelandic company. Icelandic has a few special Icelandic characters.
What we are dealing with is that our MWA server is currently configured to use UTF8 (in default_key.ini), and all of the mobile (telnet) devices (of which there are plenty, in different locations) are configured to use UTF8, also. Everything is working smoothly.
Now. The GUI client on the other hand seems not to support UTF8. All the special Icelandic characters get messed up.
I modifed default_key.ini to: CHARACTER_SET=CP1252 and the GUI client works fine. All Icelandic characters show up.
But this causes the telnet clients to stop working (as they are expecting UTF8 characters, not CP1252).
So I thought I could solve this by using the gui_key.ini file to be able to select the "GUI Client" menu item instead of "Default" when logging in.
I added the "GUI=gui_key.ini" line to the deviceIP.ini file. I modified the "mwa.cfg" file: mwa.LogLevel=trace, and when I connect via the GUI client and select "GUI Client" from the appropriate menu I can see from the trace that the MWA server indeed loads the gui_key.ini file (I even tried renaming the file (gui_key.ini) to some garbage name and I saw the error in the trace log, so I'm sure that it's loading the correct file).
However, the "CHARACTER_SET=" line in gui_key.ini file seems to have no effect on the character set that MWA sends to the client. It still uses the configuration specified in "default_key.ini".
I.e. it seems like the MWA server can only use a single global character set configuration.
So, it seems to me that in order to be able run both the telnet clients and the GUI clients I will need to change this global setting to CP1252 and reconfigure all of the telnet clients to use CP1252 instead of UTF8. This would be quite a massive deployment as we would need to reconfigure every single mobile device in all different locations.
Is this correct or am I missing something? Is it possible to solve this somehow, without having to reconfigure all the telnet clients? Do you know if this has been fixed in R12?
I should probably mention that I'm running the GUI client using the CrEme JVM on the mobile device and also on my workstation using J2SE, version 1.6. Both setups yield the same result. The both behave exactly the same, so I don't think it's a JVM problem.
Thanks in advance,
Joi F
written by Moiz , August 25, 2010
I am currently working on Oracle WMS and MSCA implementation project. One requirement from client is
Single barcode ( 2-d barcode) is having following information in it,
1. Item Code
2 Lot Number
3 UOI (unit of issue)
4 Manufacture Name.
Now, Requirement is, In one barcode scan all above information should be populated onto respective field ( if present ) on current page.
Client does not want to scan four times barcode to populate above information into four different field.
Kindly let me know, how i can achieve this through CustomScanManager preprocessing functionality? Whether it can be achievable or not?
written by shailendrasingh , December 22, 2010
ButtonFieldBean continueButton =
(ButtonFieldBean)session.getFieldFromCurrentPage("ShipLPN.Ship");
continueButton.removeListener((MWAListener)continueButton.getListeners().firstElement());
continueButton.addListener(xxListener);
taking refrence of above code i am removing listner but still old listner is getting called
can u tell me how to remove existing listner on any button
written by PrabhakarReddy , January 28, 2011
I would like to do the following
a) In order to get to the login screen, the user has to select default from the menu. This step should be made redundant. Is there a way to make the second page as first page
b) Default Items for a LOV
c) Sequential Number generation for LPN.
Thanks in Advance!! Really appreciate your effort
written by PrabhakarReddy , February 02, 2011
Thanks again!! written by Manjula Rani , March 14, 2011
There are 4 fields in a page. Initially, Field B , D are empty and cursor focus will be in field B. My customization is, FieldB should be defaulted to field A and field D should be defaulted with value field C and cursor focus should be on Done button which is after field D.
I have done the values assignment in pageenetered. values are getting defaulted to both B and D. But still the cursor is focussing at fieldB. Please let me know how to make cursor position to Done button after field D.
written by Dhamayanthi , April 12, 2011
I have created XXP4URetailPOLOV and XXP4URetailPOLineLOV for this. Below are the code snippets. In POLINENumber field, if I press Ctl+ L it shows me " Unsuccessful row construction " but, If i manually type 1 in that coulmn, It gives me correct item as below.
LPN>2012
PO No>1001
Supplier: O3 Orange
PO Line No>1
Item
10343223 I set the below prompts and flags to get POLIneNumber LOV
public XXP4URetailPOLineLOV()
{
if(UtilFns.isTraceOn)
{
UtilFns.trace("XXP4URetailPOLineLOV: XXP4URetailPOLOV()");
}
setName("PO_LINE_NO");
setRequired(true);
setValidateFromLOV(true);
String resultPrompts[] = {"PO_LineNo", "PO_LineItem", "PO_LineId"};
boolean resultFlags[] = {true, true, false};
setSubfieldPrompts(resultPrompts);
setSubfieldDisplays(resultFlags);
addListener(this);
}
public XXP4URetailPOLineLOV(String paramString)
{
this();
if (paramString.equals("PO_LINE_POREV"))
{
setlovStatement("XXP4U_PO_REVERSAL_PKG.GET_RETURN_PO_LINE_LOV");
String inputParams[]={"C", "AN", "N"};
setInputParameterTypes(inputParams);
}
}
I set inputParameters as below in Listeners :
public void Po_Line_Entered(MWAEvent mwaevent)
{
XXP4URetailPOLOV poLov = pg.getPOFld();
if (UtilFns.isTraceOn)
{
UtilFns.trace("XXP4UReturnFListener - Inside -> Po_Line_Entered: ");
UtilFns.trace("XXP4UReturnFListener - Inside -> Po_Line_Entered: Header Id: " + poLov.getPOHeaderID());
}
pg.getPOLineNoFld().setInputParameters(new String[] {" ", poLov.getPOHeaderID(),
"oracle.apps.inv.rcv.server.XXP4UReturnPage.PO_LINE_NO"});
}
The procedure is as below:
PROCEDURE get_return_po_line_lov (
x_po_lov OUT NOCOPY t_genref,
p_po_hdr_id IN NUMBER,
p_po_line_num IN NUMBER
)
IS
--
lc_debug NUMBER := NVL (fnd_profile.VALUE ('INV_DEBUG_TRACE'), 0);
--
BEGIN
--
OPEN x_po_lov FOR
SELECT DISTINCT
pol.line_num,
msi.segment1,
pol.po_line_id
FROM po_lines_all pol,
mtl_system_items_b msi
WHERE
pol.po_header_id = p_po_hdr_id
AND pol.item_id = msi.inventory_item_id
ORDER BY pol.line_num;
END get_return_po_line_lov;
Appreciate your help on this.
Thanks.
written by mobidev , April 21, 2011
We are developing new application that uses Oracle inventory.
These applications should run on browser enabled mobile device.
Oracle MSCA runs on Telnet device.
With patch on desktop, Oracle MSCA application gives GUI look and feel.
Question is
a) Can we run Oracle MSCA on browser enabled device w/o installing any software on desktop?
b) We are trying to find out, should we start with standard OAF so that applications can run on browser and
make modifications so that mobile device constraints are taken into account ?
c) Should we start with using Oracle MSCA base classes and make modifications so that new application
can run on a browser enabled device.
We are trying to find out whether to go with Option b) or Option c)
Any inputs are appreciated.
Thank you,
written by X_Dev , April 26, 2011
i must do multiple selection from lov. i thought doing this with multilistbean, but i couldn't any source code about multilistbean.
Can i do multiple selection with multilistbean?
Have you any sources?
Thanks.
written by X_Dev , April 27, 2011
i tried your code, but it didn't work.
when i used addFieldBean(mlb), it had unexpexted error.
i checked the system logs.
[Wed Apr 27 11:15:36 EEST 2011] (Thread-15) MWA_PM_UNEXPECTED_ERROR_MESG: Unexpected error occurred, Please check the log.
java.lang.NullPointerException
at oracle.apps.mwa.presentation.telnet.PresentationManager.handle(PresentationManager.java:1287)
at oracle.apps.mwa.presentation.telnet.ProtocolHandler.run(ProtocolHandler.java:849)
when i deleted addFieldBean(mMultiListRuntimefield1) line, i hadn't error.
have you any idea?
my code is
...
...
import oracle.apps.mwa.beans.MultiListRuntimeFieldBean;
...
...
public class XxMyPage extends PageBean
{
mfieldListener = new xxmyListener();
...
...
...
mMultiListRuntimefield1 = new MultiListRuntimeFieldBean() ;
mMultiListRuntimefield1.addRowValue("A1");
mMultiListRuntimefield1.addRowValue("A2");
mMultiListRuntimefield1.addRowValue("A3");
mMultiListRuntimefield1.setName("MLB");
addFieldBean(mMultiListRuntimefield1);
mMultiListRuntimefield1.addListener(xxmyListener);
...
...
}
Thanks & Regards
written by kalimuthu V , April 27, 2011
We cannot run the MSCA client from the browser, but we can develop a custom OAF Application and run in Mobile Browser.
The development is same as desktop, but we need to take care of layout. And some of the Beans will not work like desktop browser.
And there are plugins in Firefox to test the pages(it will look like mobile browser). And what kind of Mobile browser and OS you are going to use
some of them are not supported by Oracle.
Let me know if you want more details, we have developed a custom application which runs on Mobile Browser.
Thanks,
With regards,
Kali.
written by Prabhakar Kommera , May 16, 2011
The customer wants to default certain field on entering the screen. There are certail fields like the Drop Door LOV which they want to be populated the moment they enter the field. Even certain LPN they want to generate the moment they enter the field (Simulate Ctrl + G). Is there a way to do this in MWA ?
Thanks for your help!!
Regards,
prabhakar
written by Prabhakar K , May 16, 2011
Our functional consultant says that these pages cannot be found to do the MWA Personilization , so I am left with option of customization. I will be grateful if you can provide me a code snippet to generate the Key strokes in the extension pages.
Thanks for your quick reply.
Best Regards,
Prabhakar
written by Prabhakar K , May 16, 2011
Can you tell me how to do this using personilizations. I could query this page in the personilization page, however lack the knowledge to default it there..
regards,
Prabhakar
written by Sergio , June 17, 2011
I have a problem when I try to show the textfieldbean on screen.
My code:
TextFieldBean cajaPrueba = new TextFieldBean();
cajaPrueba.setName("prueba");
cajaPrueba.setPrompt("Prueba: ");
cajaPrueba.setEditable(true);
cajaPrueba.addListener(listener);
addFieldBean(cajaPrueba);
The screen show this:
Prueba[:[7m[0m]
And I can't write in the textfield.
I don't know what could be the problem.
Can you help me?
Thanks and Regards,
Sergio
written by Raj Takur , July 18, 2011
I am trying to use mobile GUI but whenever we are using TAB key ,UI behaves in weired way.For example in my login page after entering user I tab out to password field and after entering password when I press Enter my password field value gets copied in user field and user field value removes from there .
So basicaly field value jumps 1 field up .This happens for all pages along with login page and only when I use tab key to navigate .
I am using jdk 1.8.1.
Please let me know if anyone have any idea or solution.Application is in 11i
Thanks ,
Raj
written by Raj Takur , July 20, 2011
TAB key is not working in Mobile GUI while trying to navigate from one field to another ,however it works in telnet screen.Is there anything I need to set ?I am in 11i application.
Regards,
Raj
written by Vince Solis , December 30, 2011
We have j4941477 and 1.3.1_20 JRE and that seems to work fine (worked also with 1.1.8 JDK). not working with 1.4.x or higher. but we're in R12 (j4941477 is 11.5 and higher I think).
-Vince
written by Piraba , January 13, 2012
The function key doesn't work on the windows mobile.Some forum they said put the "key_gui.ini" in the secure folder. I couldn't find out the location.is it located in the client patch or server patch ? & this patch j4205328 doesn't contain the secure folder or default_key.ini or gui_key.ini
This is my command:
WindowsCrEmeinCrEme.exe -Of -classpath WindowsCrEmelibAWTclasses.
zip;XONTMWAlibj4205328.zip oracle.apps.mwa.awt.client.StartGUI
I am using this patch : j4205328.zip
Please let me know where we want to put this application.
I am looking forward your reply.
Thanks in advance
Regards;
Piraba






Thanx for your quick response. Now I am trying to customize a po requisition Approval workflow, I need to know how can I add an extra column to the Requisition Lines table in the Notifcation sent for the approval. If you can guide it will be great help.
Regards
Hameed