A recent project required me to extend and customize the PO Receipt page in the MWA MSCA. The extension of the RcptGenPage and RcptGenFListener was a little more complicated than some of the examples you see out there. It requires a lot more customization and bringing over oracle seeded attributes and private methods. It also requires you to have patience and using the trace debugging method that MWA provides. In this article I hope to help you learn more about how I was able to get this extended and customize the page to allow for a new field and calling pl/sql functions/procedures from within the mobile application.
Up until now all the code has been “extended” from the oracle seeded receipt pages. Now the customized code processing of this customization starts at the Item text field. When the Item LOV is exited it calls a method fieldExited(). This determines if the INV.ITEM LOV field was the field that was exited. Since it was it called my page code to actually “display” it, then it calls my custom itemExitedX() method. Note, that this method is copied directly from the Oracle seeded code, but has been changed just be executed specifically for the PO RECEIPT page. If you want to implement it for different pages (ie. RMA) then you’ll need to copy it over and insert debug statements to find out its flow through the method call.
Within the itemExitedX() method it does some code handling to determine if the mOrigitemWeightValue variable has been populated. If it hasn’t then it executes another custom method setItemWeight(). This call actually uses a CallableSTatement to call a function I created to pass in the item and return the “unitWeight” stored in the item master table.
Now when the item weight field is modified and exited it always calls another custom method called updItemWeight(). This is called in the locationEntered() method because it is the field that is entered when the Item Weight field is exited.
This is about the gist of the customization I needed to do for the PO Receipt form. If you look through my code you may have done some things different and you may need to change the way things are done. If you know other ways (maybe more efficient ways) to do things please let me know. I always want to learn better ways to do things. We all know that the documentation out there isn’t all that great and doesn’t work for every customization we need to do.
If you need consulting help in MSCA/MWA extensions/OAF customizations or any other consulting needs please contact us. You can also visit us at www.luciditycg.com
Materials & Mfg Receipts PO
Comments
Thanks and Regards,
Senthi l
This will help many people.
apps2fu sion.com/forums had too many requests for this article, thanks for publishing the same.
Cheers,
Anil Passi
when i enter the Po Num , it give me ( No result is found ), and the LOV is empty , when i press on it , give me the same error
i am cutomizing PO reciept form,in this i have to add two fields so i extend all three classes,
every thing is working fine but LPN field is not getting display on the page.
please give me soltion.
thank s
shailendra
This is a brilliant post!
Especiall y the source code - it is helping me a lot in my customization.
Ta,
Vincent
We are in R12.1.1. We are using the Mobile Application for receiving the LPNs. There is a requirment to have the following restrictions in Receiving
To restrict the multiple receipts of single LPN. (sometimes user are doing muliple LPN scanning while Receiving, we need to avoid this).
To restrict the assignment of more than one item in a LPN (while receiving).
I believe we need to extend the PO Receipt MWA form. Can you please guide me on this, as I am new to Mobile Application.
Th anks,
Gowri.
I recommend you going through and doing a few of the samples: http://www.apps2fusion.com/apps-training/mobile-supply-chain-application-framework
This will guide you to learn how extending these forms work and what you need to do to set them up.
You can refer to my source code to give you some help as well. I no longer work with the mobile web apps so I won't be much help unless you're stuck with an issue that I faced.
Regards ,
Kyle
Without installing patches or Java classes on mobile device, is there a way we can get GUI feature for Mobile PO receipt?
You would not be able to "extend" these classes as this would be a complete rewrite of the application.
I wanted to add a new field in PO receipt mobile form. Please advise how to do this.
Regards,
Amit
LOKING FORWARD FOR YOUR KIND RESPONSE,
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.
I am unable to get it to display inline, how can I achieve this?
this.mDffBean = new DescriptiveFlex FieldBean("WMS", "WMS_LICENSE_PL ATE_NUMBERS", null, "DEFAULT",paramSession);
this.mDffBean.s etDisplayInline (true);
ArrayList localArrayList1 = new ArrayList();
localArrayList1 .add(mDffBean);
this.setInlineD ffBeans(localAr rayList1);
this.mDffBean.s etName("LPNDFF" );
this.mDffBean.s etDisplayInline (true);
this.mDffBean.s etHidden(false) ;
this.mDffBean.s etDisplayInline (true);
UtilFns.trace(" this.mDffBean.i sDisplayInline( ): " + this.mDffBean.i sDisplayInline( ));
FileLogger.getSystemLogger().trace("this.mDff Bean.isDisplayI nline(): " + this.mDffBean.i sDisplayInline( ));
addFieldBean(this.mDffBean);
We had a requirement to add po line shipment number(for both standard and blanket release PO) and and PO line number for Blanket release.
Thanks to your article we have managed to extend all three classes and was able to display the the 2 fields as per the above requirement.
However the challenge remains is for the internal api call to accept the line_location_id.
We are trying to override the standard api call with our custom api call to pass additional parameter which is line_location_id.
The issue is we are not override the standard listener call for RCV_BUTTON even though in the page class in the initcustom we have added the custom listener initialization.
getDoneBut().addListener(this.xxListener);
However if you notice in the below log it is still calling the standard listener for "RCV.RCPT_DONE".
xRcptGenFListene r.fieldEntered - complete
[Wed Aug 19 03:53:16 PDT 2015] (Thread-27) RCV: RcvButton - fieldExited
[Wed Aug 19 03:53:16 PDT 2015] (Thread-27) RCV: RcptGenFListene r.fieldExited
[Wed Aug 19 03:53:16 PDT 2015] (Thread-27) RCV: RcvFListener.fi eldExited - fldName = RCV.RCPT_NEXT_ITEM
[Wed Aug 19 03:53:16 PDT 2015] (Thread-27) RCV: RcptGenFListene r.fieldExited - fldName = RCV.RCPT_NEXT_ITEM
[Wed Aug 19 03:53:16 PDT 2015] (Thread-27) RCV: RcptGenFListner .nextItemExited
[Wed Aug 19 03:53:16 PDT 2015] (Thread-27) RCV: RcptGenFListene r.fieldExited - complete
[Wed Aug 19 03:53:16 PDT 2015] (Thread-27) RCV: xRcptGenFListene r.fieldExited
[Wed Aug 19 03:53:16 PDT 2015] (Thread-27) RCV: xRcptGenFListene r.fieldExited -RCPT_NEXT_ITEM
[Wed Aug 19 03:53:16 PDT 2015] (Thread-27) RCV: xxRcptGenFListner .nextItemExited
[Wed Aug 19 03:53:16 PDT 2015] (Thread-27) RCV: RcvButton - fieldEntered
[Wed Aug 19 03:53:16 PDT 2015] (Thread-27) RCV: RcptGenFListene r.fieldEntered
[Wed Aug 19 03:53:16 PDT 2015] (Thread-27) RCV: RcvFListener.fi eldEntered - fldName = RCV.RCPT_DONE
[Wed Aug 19 03:53:16 PDT 2015] (Thread-27) RCV: RcptGenFListene r.fieldEntered - fldName = RCV.RCPT_DONE
[Wed Aug 19 03:53:16 PDT 2015] (Thread-27) RCV: RcptGenFListene r.fieldEntered - complete
[Wed Aug 19 03:53:16 PDT 2015] (Thread-27) RCV: RcvButton - fieldExited
[Wed Aug 19 03:53:16 PDT 2015] (Thread-27) RCV: RcptGenFListene r.fieldExited
[Wed Aug 19 03:53:16 PDT 2015] (Thread-27) RCV: RcvFListener.fi eldExited - fldName = RCV.RCPT_DONE
[Wed Aug 19 03:53:16 PDT 2015] (Thread-27) Base next item exited called
[Wed Aug 19 03:53:16 PDT 2015] (Thread-27) RCV: RcptGenFListene r.fieldExited - fldName = RCV.RCPT_DONE
[Wed Aug 19 03:53:16 PDT 2015] (Thread-27) RCV: RcptGenFListner .doneButExited
[Wed Aug 19 03:53:16 PDT 2015] (Thread-27) RCV: RcptGenFListner .doneButExited 10
[Wed Aug 19 03:53:16 PDT 2015] (Thread-27) RCV: RcptGenFListner .doneButExited 20 - calling nextItemExited
[Wed Aug 19 03:53:16 PDT 2015] (Thread-27) RCV: RcptGenFListner .nextItemExited
[Wed Aug 19 03:53:16 PDT 2015] (Thread-27) RCV: RcptGenFListner .nextItemExited 10
[Wed Aug 19 03:53:16 PDT 2015] (Thread-27) Inside isSerialControl led 1
[Wed Aug 19 03:53:16 PDT 2015] (Thread-27) RCV: insertLotRecord s - Creating the savepoint: PROCESS_LOT_REC
[Wed Aug 19 03:53:16 PDT 2015] (Thread-27) Create savepoint PROCESS_LOT_REC complete.
[Wed Aug 19 03:53:16 PDT 2015] (Thread-27) RCV: RcptGenFListner.insertLotRecord s
[Wed Aug 19 03:53:16 PDT 2015] (Thread-27) Before returning, clearing the lot, interface and the attributes vectors
[Wed Aug 19 03:53:16 PDT 2015] (Thread-27) RCPTGEN: RcptGenFListner .nextItemExited 10
[Wed Aug 19 03:53:16 PDT 2015] (Thread-27)
Any help or pointers will be highly appreciated.
Regards
Bhavesh
svnjdzcvcxbnnxg dnl
RSS feed for comments to this post