Tuesday, November 19, 2013

BULK COLLECT FORALL ROLLBACK

Source


OPEN c_dept_data;
LOOP
FETCH c_dept_data BULK COLLECT INTO vrt_dept_id,vrt_dept_name LIMIT 1000;

FORALL i IN 1 .. vrt_dept_id.COUNT
UPDATE departments_tmp
SET dept_name = vrt_dept_name(i)
WHERE dept_id = vrt_dept_id(i);

EXIT WHEN c_dept_data%NOTFOUND;
END LOOP;
CLOSE c_dept_data;
...


Rollback behavior
If one of the bulk DML statements fails, the individual statement is rolled back and previous DML statements within the FORALL series of statements are not rolled back and the FORALL statement stops executing.
For example if you are using FORALL to insert 100 rows and an error appears on 78th row the execution will stop and rows from 78 to 100 will not be inserted indeed. If you want to overcome this behavior and to insert all rows you can use the SAVE EXCEPTIONS clause.
With the SAVE EXCEPTIONS the cursor attribute SQL%BULK_EXCEPTIONS is used. It is an array that records two elements ERROR_INDEX and ERROR_CODE:

...
v_bulk_errors EXCEPTION;
PRAGMA EXCEPTION_INIT (v_bulk_errors, -24381);

BEGIN -- outer BEGIN

BEGIN –- inner BEGIN clause
OPEN c_dept_data;
LOOP
FETCH c_dept_data BULK COLLECT INTO vrt_dept_id,vrt_dept_name;

FORALL i IN 1 .. vrt_dept_id.COUNT
SAVE EXCEPTIONS
UPDATE departments_tmp
SET dept_name = vrt_dept_name(i)
WHERE dept_id = vrt_dept_id(i);

EXIT WHEN c_dept_data%NOTFOUND;
END LOOP;
CLOSE c_dept_data;

EXCEPTION WHEN bulk_errors THEN
FOR i in 1..SQL%BULK_EXCEPTIONS.COUNT LOOP
Dbms_output.put_line(
'An error '|| i ||' was occured ' ||
SQL%BULK_EXCEPTIONS(i).ERROR_INDEX ||
' during update of dept_id: '||
vrt_dept_id(SQL%BULK_EXCEPTIONS(i).ERROR_INDEX)||
'. Oracle error: ' ||
SQLERRM(-1 * SQL%BULK_EXCEPTIONS(i).ERROR_CODE));
END LOOP;

END; -- end inner BEGIN


In this case the collection variables will be populated on every 1000 rows, after that the FORALL will be executed for them and then will be fetched the next 1000. Be aware of that the previous values for the collection are overwritten.
The other workaround to cope with memory problems coming from large PL/SQL tables is to execute the following supplied stored procedure inside your code:
..
dbms_session.free_unused_user_memory;
..
It will free unused memory for your session after large portions of data was processed. For full details about solving of memory problems with this procedure, see: Procedure DBMS_SESSION.FREE_UNUSED_USER_MEMORY Specification
You can use the SQL%BULK_ROWCOUNT attribute, which is available with the FORALL statement. For each processed row in FORALL there is a corresponding row for this attribute. For example, if you want to know did the n-th processed row from FORALL have affected some rows then you must call SQL%BULK_ROWCOUNT(n). If no rows were affected, the n-th row will be zero.

Wednesday, November 13, 2013

Discrete Label Types and Business Flows

The following table provides a list of the various business flows and the types of labels that you can associate with each flow. The horizontal header row of the table lists the various label types that are available. The far left vertical column lists the warehouse-related business flow. Yes indicates that the system can generate the label type for that business flow. No means that the system does not generate that label type for the business flow.
Discrete Label Types and Business Flows
Bus. FlowMat'lSerialLPNLPN Cont.LPN SumLOCShipShip Cont.WIP Cont.Flow Cont.WIP Move Cont.
ReceiptYesYesYesYesYesNoNoNoNoNo
InspectionYesYesYesYesYesNoNoNoNoNo
DeliverYesYesYesYesYesNoNoNoNoNo
Receiving Put away dropYesYesYesYesYesNoNoNoNoNo
LPN Correction / updateYesNoYesYesYesNoNoNoNoNo
Sales order Cross-DockYesYesYesYesYesNoYesYesNoNo
Replen. dropYesNoYesYesYesNoNoNoNoNo
Cycle countYesNoYesYesYesNoNoNoNoNo
Phys. CountYesNoYesYesYesNoNoNoNoNo
Mat. Stat. UpdateYesYesYesYesYesYesNoNoNoNo
Cost Group UpdateYesNoYesYesYesNoNoNoNoNo
Lot Split / MergeYesYesYesYesNoNoNoNoNoNo
Misc / Alias ReceiptYesNoYesYesYesNoNoNoNoNo
Inter-org XferYesYesYesYesNoNoNoNoNoNo
Sub. XferYesYesYesYesNoNoNoNoNoNo
LPN Gen.NoNoYesNoNoNoNoNoNoNo
Serial Gen.NoYesNoNoNoNoNoNoNoNo
Pick LoadYesNoYesYesYesNoYesYesNoNo
Pick DropYesNoYesYesYesNoYesYesNoNo
Pack / unpack / update LPNYesNoYesYesYesNoNoNoNoNo
Ship Con.YesYesYesYesYesNoYesYesNoNo
Cartonization.YesNoYesYesYesNoYesYesNoNo
Misc. / Alias IssueYesYesYesYesYesNoNoNoNoNo
Dyn. LocNoNoNoNoNoYesNoNoNoNo
Import ASNNoNoYesYesYesNoNoNoNoNo
WIP Comp.YesYesYesYesYesNoNoNoNoNo
Put. Pregen.YesYesYesYesYesNoNoNoNoNo
WIP Pick LoadYesNoYesYesNoNoNoNoYesNo
WIP Pick DropYesNoYesYesNoNoNoNoYesNo
Inv. Put. dropYesYesYesYesYesNoNoNoNoNo
Flow Line StartNoNoNoNoNoNoNoNoNoYes
Flow Line Op.NoNoNoNoNoNoNoNoNoYes
Flow / Work ord. Assem. Comp.YesYesYesYesYesNoNoNoNoNo
Replen. LoadYesNoYesYesYesNoYesYesNoNo
WIP / Flow Put Away DropNoNoNoNoNoNoNoNoNoYes
Pck. WrkbchNoNoYesYesYesNoYesYesNoNo
Manufacturing Cross-DockYesYesNoNoNoNoNoNoYesNo
Pick ReleaseNoNoNoNoNoNoNoYesNoNoNo
Replen. DropNoNoNoYesNoNoNoNoNoNoNo
Flow Line StartNoNoNoNoNoNoNoNoNoYesNo
WIP Move Job TxnNoNoNoNoNoNoNoNoNoNoYes


From the previous tables, the following business flows are also supported in the Mobile Supply Chain Applications (MSCA):
  • Receipt
  • Inspection
  • Delivery
  • Replenishment Drop
  • Cycle Count
  • Physical Count
  • Miscellaneous/Alias Receipt
  • Inter-Org Transfer
  • Subinventory Transfer
  • Serial Generation
  • Pick Load
  • Pick Drop
  • Ship Confirm
  • Miscellaneous/Alias Issue
  • Dynamic Locator
  • WIP Completion
  • Process Dispensing
  • Process Production
  • Process Quality
  • WIP Move Contents

Thursday, November 7, 2013

Oracle Change/Modify PO Print Logo XSL-FO

SOURCE
Changing the Logo on PO Print is a little tricky. I say tricky purely because even though the PO Print program is a XML Publisher based report the layout part of the report is XSL-FO type. So all the details are in XML.

--------------------------------------------------------
Note: For doing this we need to have XML Publisher template builder installed. Pls follow the below instructions

Download the patch from Metalink. Latest version as of today is Patch 12395372: UPDATE FOR BI PUBLISHER DESKTOP 10.1.3.2.1 (5.6.3) size = 95.9 MB Product=BI Publisher (formerly XML Publisher)

Unzip this patch and then run BIPublisherDesktop.exe to install in a directory
--------------------------------------------------------
So lets get to the task.

Step 1: Create an RTF Document and embed the image into the document. I create a MSWord document and 'Save As' RTF document. And in Word (Menu)Insert -> Picture -> From File -> Select the image.

Step 2: Update the size of image to approx the size it appears in the document.

Step 3: Once you have template builder installed, the plug-in adds new menu options in Word. Tools -> Export -> XSL-FO Style Sheet. Screenshot attached



Step 4: An XML file is generated, Open the file and search for tag 'fo:instream-foreign-object' tag which is of our interest.

Step 5: Copy the tag contents from the beginning to the end of the tag 'fo:instream-foreign-object'. So this is our image xdofo:uid 



Step 6: Open XML Publisher, Search for Template 'Standard Purchase Order Stylesheet', Duplicate the template entering required details. Download PO_STANDARD_XSLFO.xsl and rename to XXC_PO_STANDARD_XSLFO.xsl

Step 7: Open XXC_PO_STANDARD_XSLFO.xsl and search for 'fo:inline' which contains the Logo info. Uncomment the inline tags and replace the 'fo:external-graphic content' with the tags contents we copied in step 5.

The file should look like this.




Step 8: Save XXC_PO_STANDARD_XSLFO.xsl and attach the file to the template we created in Step 6. Also update the xsl:style sheet definition(at the beginning of the document) to refer to xdo namespace as follows.

'xsl:stylesheet version="1.0" xmlns:fo="http://www.w3.org/1999/XSL/Format" xmlns:ora="http://www.oracle.com/XSL/Transform/java/" xmlns:xdofo="http://xmlns.oracle.com/oxp/fo/extensions" xmlns:xdoxliff="urn:oasis:names:tc:xliff:document:1.1" xmlns:xdoxslt="http://www.oracle.com/XSL/Transform/java/oracle.apps.xdo.template.rtf.XSLTFunctions" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"' 

Step 9: Attach the new template to PO Document Types. (Document Type Layout), so the new template will be picked for the PO document creation





Step 10: For this article purpose lets simply the process and see if we can get the PO Document with the new Logo, by using the preview button in XML Publisher(for the new template we created in Step 6).Here we have it.


Tuesday, November 5, 2013

R12.2 Links


Doc ID 1583110.1

http://docs.oracle.com/cd/V39571_01/current/html/docset.html