Replacing assets for updated assets

I just finished a project, including the DVD, but upon delivery my client noticed one tiny glitch that I hadn't. I went back through FCP and corrected it, re-exported it in Compressor, and have imported the new video and audio files into DVDSP. My question is, is there a way for me to simply replace the old video/audio with the new in terms of all my chapter connections. The movie is exactly the same in length and time ( I only had to correct one image and remove the motion blur effect--so length and such were not effected).
It seems like there should be an easy work around instead of having to go in and re-create the fonts etc in all the chapter menus.
Thanks for your advice in advance!

Not always that easy. Many times the project or the container (menu, track) becomes corrupt.
It is suppose to work were you replace the old asset file with a new file named the same in the same place and DVDSP will see that the asset has changed and wala... all is well. The reality is that the best thing to do is create a new asset with a version number update (i.e. bill001) then import this new asset and then remove the old one from it's container and replace with the new one. Then double check any chapter markers (if applicable).
o| TonyTony |o

Similar Messages

  • BAPI for updating Evaluation Group1 field in Asset Master

    Hi,
    The business requirement is to Update the Assets master fields with the current location of the Tools with respect to movement of the material only to be used for assets.
    To keep a track for tools being moved to vendor location or internal company. To know the exact liabilities to the company in terms of Capitals being moved to the vendor or company location.
    For this the movement type of the material will define weather the material is within the Campus or is with the Vendor & update the field  Evaluation Group 1 (ANLA-ORD41)
    Can you please help with which BAPI should be used for updating the evaluation group?
    Thanks

    Hi Anupam
    Would appreciate, if you are not arrogant, while  posting your queries to this Forum.
    You can use the Function Module
    ASSET_MASTERRECORD_MAINTENANCE
    Regards
    Sanil

  • Lsmw for updating values in asset mater ( AS92 TCODE)

    hI,
    is there any standard reports for updating values of asset master ( as92) in LSMW.
    please provide necessary information.
    thans & red,
    Hari priya

    Priya,
    Standard report is not there to update the Asset master.
    Use BAPI to update the Asset master in LSMW:
    Business object - BUS1022
    Method: Change
    Message type: FIXEDASSET_CHANGE
    Basic Type: FIXEDASSET_CHANGE03
    Regards,
    Kiran Bobbala

  • Replace asset for a Premiere dynamic linked sequence

    I linked Premiere sequences via Dynamic Link to Encore. I had trouble with Encore freezing during transcode. Therfore to make it quick I rendered the sequences to MPEG-2 from Premiere using AME. This worked. I tried to replace the assets, but when I click right on an imported sequence Replace Asset is greyed out. Even it is a sequence from Premiere it is an asset and should be able to be replaced. I can't remove the sequence asset from the timeline in Encore, because all the chapter markers and links are set already. It is an instructional DVD of 4 hours with 120 chapter markers and 12 menus. Nothing you want to do over again.
    I tried to use Locate Transcode instead. My thought is that I can point to the transcoded MPEG-2 files to have Encore "replace" the asset. I got an error that the length of the sequence and the transode file don't match. I don't know why this is since it is the same timeline that was just rendered from Premiere.
    Does anybody has any insight or know a proper way to replace a Dynamic Linked Sequence with the rendered MPEG-2 file?
    Marcus

    Hi Stan,
    apparently a DL sequence is not treated as a regular asset, which is not understandable. There should be a possibility to replace a DL sequence with another clip. Revert to original doesn't work either. In my case I wanted to replace the DL sequence with the encoded files. I encoded the files directly from Premiere due to the AME queue not using GPU problem. As a workaround for my case I found the option "Locate transcoded file". I could point to the transcoded files and was able to burn the disc.
    Marcus

  • Replacing Assets...MPEG 2's

    Hi, I had two timelines, long version and short version encoded at 7500 for preview DVD's. I also made an 8500 version for replication. I went to replace assets today and the short version would not take the new files, at least the name didn't change in the timeline. Then when I went to burn a disc, program crashed, abnormal..closed down etc...
    I had to actually delete the timeline and make a new one, I also went into the source folder and deleted the audio transcodes...then it worked fine. Is this a bug or something that I'm doing wrong? Thanks

    Joe, I actually think I was dealing with two different issues, one is the above limitation and the other I still don't know. True, I forgot to revert to original before replacing, but it's odd that it would crash the program during the burn process. I had to remove the timeline, reimport and make a new timeline before I could burn. Also odd that I replaced two timelines and one wouldn't "take", it just kept the old the mpegs, while the other updated the files. Just a little scary when you've spent weeks authoring a project and then go to burn and it says "abnormal condition"...these kind of things age you :-)

  • Replacing Assets With Slightly Longer Versions?

    I am putting the finishing touches on a 1.75hr, NTSC 4:3, 14 Timelines, 5.1 (AC3), 2 lead-in AVIs, one Main Menu + 3 Scene Selection Menus (non-animated) and one Play All Playlist Project and have done several +RW burns to check things out. I have made a few minor changes to the AVI (uncompressed) and AC3 files in PP2 - edited, and re-Exported. Mainly adding 2sec. of black at the beginning as some of the Timelines seem to start (set-top players) into the first Title, or Clip; changed some Audio levels and panned the 5.1 a bit, corrected some of my spelling errors; and trimmed a frame, or two, where the Handles were too short at Transitions. Nothing major.
    In a Save_As Encore Project, I used Revert To Original, so that the Transcoding info would be cleared. Shut down Encore, moved my old AVIs and AC3s to another folder, and moved my new ones into the original folder, from which the old files (same file names) had been Imported As Asset, into Encore. Nearly everything was fine.
    I did notice that on three of the Timelines, when played on set-top, the Audio and Video were cut off, near the new end, but at what I would guess to be the timing for the Assets, that I replaced. It was as if Encore had memorized the exact length of the previous Asset, and applied that to the replacement, truncating the last few seconds (about the length of the Black Video added in PP2, give, or take, the few frames removed, etc.).
    Now, I have made the final corrections to the AVIs & AC3s and need to complete the Project. My question is one of workflow. Since Encore seems to recall the old length, and a few of the Assets have changed length again, though not by much, is it better to delete those Assets from their respective Timelines, delete them from the Project, re-Import and just place them on the correct Timeline, or is there an easier way? Or, is there a way to tell Encore to forget what it remembered, regarding the exact length of those Assets? Most of the work is in the navigational linking, and the menus have all been tweaked to my satisfaction, so Id rather not start a new Project. If its just doing the delete, delete, re-Import, drag to Timeline, I can live with that. Just wondering if there is an easier way, that I am not aware of.
    Also, and a quick test would probably answer this for me, if I delete an Asset from its Timeline, will the Menu Links be broken, in the time it will take me to re-Import and place the new Asset on the Timeline? Id just rather not destroy my Links if possible. Im guessing that the Links go to the respective Timeline, whether its empty, for a moment, or not.
    I know that Neil Wilkes has cautioned against replacing Assets in Encore, but it has worked, nearly perfectly on this Project, with one minor little glitch.
    Any thoughts, pointers, cautions, etc. will be greatly appreciated.
    [Note to Neil: I dont want to ignore your warnings, as I greatly appreciate all of your posts, but this Project is almost there.]
    TIA,
    Hunt
    PS, maybe I should have posted to the main EncoreDVD2 forum, rather than Importing Assets, but I thought that this question fit here. If it needs to be moved, I understand.

    Frans,
    Welcome to the forum.
    Sorry that I did not update that thread - my bad. As I got no replies, I sort of forgot about it, until today. Thanks for that "trip down memory lane."
    What I did - Deleted the Assets, and did a Save_As (a Save would probably have worked too, but I do not like overwriting Projects, just in case). I then Closed, and Opened my Save_As Project, Imported those new Assets, and the Menu links were just waiting for me, so not that much work. Problem solved.
    Upon a few years' reflection, one course of action, that would likely have saved a few steps, would have been to clean the Media Cache. Even when on uses Revert to Original, or Replace Asset, En can still "remember" some things in the Media Cache, especially if one has already done a few burns, as was my case. In 2007, I was not as aware of that behavior, as I have become with many more Projects, and years of reading of others' issues.
    On on hand, En's "memory" can be good, such as the linking to Menus, etc., but OTOH, can get in the way. Guess that we users will just have to benefit from one, and work around the other, as there does not seem to be a way to force "selective memory."
    Good luck, and let us know how it works for you.
    Hunt
    PS - from 2007, I am surprised that this thread survived. So very many (and not just mine) were lost forever with several forum changes. One never knows what will spring out of the "vault... "

  • Replacing Assets Works, and Doesn't Work.

    I'm using a Dell 720 PC, QuadCore processor, Windows XP with all current service packs and patches, 4GB RAM, and Premier Production Studio CS3 (with all patches).
    I have a dual-boot system, with a "Clean" install (only the OS, Premier, TMPGEncXpress and Cineform NeoScene) on one disk, and a "Messy" install on another disk (all the above listed software, plus everything else under the sun, including anti-virus and anti-spyware software, email/ftp clients Nero 7 etc).
    I have an HD (1440x1080, 30FPS) project which was originally created on the Messy system. It's about 8 minutes long and created with a Canon XH-A1. The project consists of a video file (created in Adobe Media Encoder from the original Premier Pro CS3 project), one menu, one sub-menu, and two audio tracks.
    I booted to the Clean system and opened the project. I had done some work on the audio tracks, and rather than re-do the entire DVD and menus, I used Encore's "Replace Asset" feature and swapped the old audio track with the new one. No problem.
    Then I wanted to replace the main video asset with another, slightly higher quality version. I used the "Replace Asset" feature, as above, to replace the old video (a 250 MB M2V file) with the new one (also an M2V file, just slightly larger).
    It seems Encore replaces the video in a 2-step process. The progress bar zipped across to 100% on the first step, then rapidly went to 50% on the second step. From there, the time-to-completion indicator continued to increase, but the process never progressed past 50%. I looked at Windows' Task Manager, and my Quad Core processor was running at 25% overall and there was almost no disk activity. After 5 minutes, I cancelled the operation. Encore never recovered, and I had to kill it. I tried again, with the same results.
    I tried the exact same steps on the Messy Windows installation, and had no trouble replacing the video asset (it took about 6 seconds), so "something" on the Clean system is screwed up. I'd actually expect the Clean system to be the more reliable of the two!
    Do you think a reinstall of Encore is the only way to solve this? Has anyone else experienced this problem, and if so, what was the solution?
    Thanks.

    Are you using the same file name to replace the assets?
    If so - try using a different name for each incremental version instead as the cache might be getting confused/corrupted due to (apparent) multiple instances of the same asset.
    Failing that, what happens if you create new timelines instead of attempting to replace?

  • Replace Asset Chapter Errors

    Exporting out of Premiere as DV AVI for use in Encore 2.0
    I have a wedding video that needed some corrections. The overall length has changed, so the exact position of the chapters has changed. The total number of chapters remains the same, as well as the chapter names. But whenever I replace the asset in Encore with the new one, Encore seems to still be using the old chapter locations, so they're all off.
    I would like to have Encore see the new positions of those chapter markers and keep them linked to the same buttons so I don't have to reauthor this beast. Anyone know how to do that?

    > Originally created as Sequence markers in Premiere, exported out as DV AVI. I would have thought that Encore would see the new markers and make the adjustments automatically, but it doesn't seem to be doing so.
    Yet again, I must reiterate what the proper practise is here in these situations.
    DO NOT try to replace assets with something using the same name, but a different cut/edit/length. This is asking for trouble.
    When you import an asset/create a timeline, you are creating files that refer back to assets, giving details of those assets.
    If something changes this much, delete & reimport with a new name. It is an Abstraction Layer tool, and does not have a special "telepathic mode".
    Please try to remember Encore is an authoring/assembly tool, and NOT an editor.

  • Replacement Asset Functionality

    Hi All,
    We would like know about the replacement asset field functionality on the Basic asset information page. If we were to replace 100 existing assets
    A) Create 100 new assets and dispose the old 100 assets. The new assets will not depreciate as they are just a replacement
    B) Anyway to use the replacement asset field?
    Thanks in advance for your responses

    Hello,
    May I know the SRM release ?
    I feel sorry to mention no standard correction can be provided in SRM 5.0 for driver B46_CREATE_ASSET anymore for the following resons:
      The driver would become incompatible as of missing import
      parameters (BBP_BAPI1022_FEGLG003 - structure for
      timedependent data does not exist in SRM 5.0).
    Thanks and regards
    Summer

  • Replacing assets in the project. without losing chapter marks.

    From a workflow point of view, this is not a proper way, but since I'm a mere hobbyist, not so much of an issue.
    From PP I export an M2V file and an AC3 file, import those as assets into the Encore project, create a timeline, set my chapter markers, create a moving menu, render, great. No problem.
    Then I decide to change something in my timeline, so back to PP, modify my timeline, export again and then....
    b Try to replace assets
    but that does not work as I expect. (The manual and help file are rather abbreviated on these topics). Either I lose all my previous markers or I get a second clip right after the first one on my timeline, or - even worse - I get, after renaming files in Explorer, new assets on my timeline with the correct length, but cannot extend my timeline to reflect the length that is shown in the project window.
    A second problem I have encountered is that there is no way to save markers, no way to replace an asset in a timeline without losing all markers and, after creating new markers, having them revert to the default names and forgetting all the previously set names and links. Effectively, you have to start all over.
    What is the best way, once you have a timeline with chapter markers on them, to replace your asset?
    Any suggestions? TIA

    This is not the first time I am re-thinking my work flow to match the way Adobe designed their software . . . conforming if you will.
    Based on the way Premiere and Encore is designed, I think Adobe is expecting ALL changes to the video content to be completely ironed out, video set in stone, before adding chapter markers and exporting to Encore . . . as if adding chapters is part of the DVD burning process rather than part of the video itself. I have been around long enough to understand where that thinking comes from, but it is not very visionary thinking oh great architects of Adobe.
    Conforming my work flow: (high level work flow)
    1> burn DVD without chapters
    2> customer reviews the video content without chapters
    3> customer submits change requests
    4> goto step one until no video content change requests
    ----- architectural divide ----
    5> Still in Premiere, add chapters & export to Encore
    6> Now in Encore, edit chapter text
    7> set the poster frames
    6> burn DVD with chapters
    7> customer reviews chapter information
    8> customer submits chapter change requests
    9> goto step six until no chapter content change rquests
    This is the workflow I will use conform, but it is not the workflow I want to use. Two reasons:
    1> I want my customer to have the convienience of using chapters during the video review process.
    2> I do not want to put my customer through two aproval processes.
    Steven Bland

  • Intune Command to initiate 'Check for update' for intune client.

    Hi ,
    I am working with Microsoft Intune and power shell. My target is to automate the process of "check for update"
    available at Intune client's Microsoft intune center.
    I have found the way to push the command to client using intune but the issue is with the command it’s not working.
    %programfiles%\Microsoft\OnlineManagement\Updates\Bin\omupdclt.exe /detectnow
    %programfiles%\Microsoft\OnlineManagement\Updates\Bin\omupdclt.exe /updatenow
    The reference links are as follows :
    https://albertneef.wordpress.com/2012/01/12/windows-intune-commands/#comment-423 
    http://www.systemcentercentral.com/windows-intune-client-behind-the-scenes-sysctr/
    These commands are not getting executed at the client machine. I tried it's execution in administrator mode. Command
    is getting executed without any error but check for update is not getting initiated.
    Can u please provide me with the way to execute this manually at the client machine? 

    Thanks for the commands now at least its initiating the Agent.
    /DailyTasks;
    /AgentUpdateNow;
    /RunHandlerComServer
    i have executed the command and it i still giving errors. please have a look at the log file: updates.log
    2015-03-12 15:23:34:379
    1956 1224
    Misc ===========  Logging initialized (build: 5.0.4900.0, tz: +0530)  ===========
    2015-03-12 15:23:34:379
    1956 1224
    Misc  = Process: c:\Program Files\Microsoft\OnlineManagement\Updates\Bin\omupdclt.exe
    2015-03-12 15:23:34:379
    1956 1224
    UpdClt omupdclt.exe launched with command line omupdclt.exe  /agentupdatenow
    2015-03-12 15:23:34:395
    2564 1130
    AgntUpd Agent requests client agent sync
    2015-03-12 15:23:34:395
    2564 1130
    AgntUpd Asset Inventory Service agent sync refreshing state
    2015-03-12 15:23:34:395
    2564 1130
    AgntUpd Searching for Asset Inventory Service: Not Found
    2015-03-12 15:23:34:395
    2564 1130
    AgntUpd Asset Inventory Service is disabled. Canceling agent sync timer
    2015-03-12 15:23:34:395
    2564 1130
    AgntUpd Microsoft Intune agent sync refreshing state
    2015-03-12 15:23:34:395
    2564 1130
    AgntUpd Searching for Microsoft Intune: Found
    2015-03-12 15:23:34:395
    2564 1130
    AgntUpd Microsoft Intune is enabled. Initiating agent sync
    2015-03-12 15:23:34:395
    2564 76c
    AgntUpd Received timeout event
    2015-03-12 15:23:34:395
    2564 76c
    Agent Agent servicing time window policy is not set
    2015-03-12 15:23:34:395
    2564 76c
    Agent WARNING: Unable to read agent servicing time window policy, error = 0x80070002. 
    2015-03-12 15:23:34:395
    2564 76c
    AgntUpd WARNING: Failed to update task triggers, error = 0x80070002
    2015-03-12 15:23:34:395
    2564 76c
    AgntUpd #############
    2015-03-12 15:23:34:395
    2564 76c
    AgntUpd ## START ##  AgntUpd: Search for agents [Service = "Microsoft Intune"]
    2015-03-12 15:23:34:395
    2564 76c
    AgntUpd #########
    2015-03-12 15:23:34:395
    2564 76c
    AgntUpd <<## SUBMITTED ## AgntUpd: Search for agents [Service = "Microsoft Intune", CallId = {F9BB69D3-5BD4-4B2A-8D06-0FAB2BA9ADC0}]
    2015-03-12 15:23:34:395
    2564 d1c
    Agent *************
    2015-03-12 15:23:34:395
    2564 d1c
    Agent ** START **  Agent: Finding updates [CallerId = Client Agents Sync]
    2015-03-12 15:23:34:395
    2564 d1c
    Agent *********
    2015-03-12 15:23:34:395
    2564 d1c
    Agent  * Online = Yes; Ignore download priority = No
    2015-03-12 15:23:34:395
    2564 d1c
    Agent  * Criteria = "CategoryIDs contains '27cd64a2-e5d7-468d-ac5d-7bd7ccae1880' and IsInstalled=0 and Type='Software'"
    2015-03-12 15:23:34:395
    2564 d1c
    Agent  * ServiceID = Microsoft Intune
    2015-03-12 15:23:34:395
    2564 d1c
    Agent  * Search Scope = {Machine}
    2015-03-12 15:23:34:426
    2564 d1c
    EP Obtained plugin IUpdateEndpointProvider on CLSID 3BF1D171-8D71-44C4-B234-302390EDD390
    2015-03-12 15:23:34:426
    2564 d1c
    EP Obtained plugin IUpdateEndpointAuthProvider on CLSID 3BF1D171-8D71-44C4-B234-302390EDD390
    2015-03-12 15:23:34:426
    2564 d1c
    EP SLS: Initializing for service ID 3DA21691-E39D-4DA6-8A4B-B43877BCB1B7
    2015-03-12 15:23:34:426
    2564 d1c
    EP SLS: Reading from cache
    2015-03-12 15:23:34:426
    2564 d1c
    EP SLS: Successfully read service endpoints from cache.
    2015-03-12 15:23:34:426
    2564 d1c
    EP Got service Microsoft Intune plugin Client/Server preferred token types: 0x00000001
    2015-03-12 15:23:34:426
    2564 d1c
    EP Got service Microsoft Intune plugin Client/Server URL: "https://msua05.manage.microsoft.com/ClientWebService/client.asmx/auth"
    2015-03-12 15:23:34:426
    2564 d1c
    EP Got service Microsoft Intune plugin Client/Server auth token of type 0x00000001
    2015-03-12 15:23:34:488
    2564 d1c
    PT +++++++++++  PT: Starting category scan  +++++++++++
    2015-03-12 15:23:34:488
    2564 d1c
    PT  + ServiceId = Microsoft Intune, Server URL = https://msua05.manage.microsoft.com/ClientWebService/client.asmx/auth
    2015-03-12 15:23:37:004
    2564 d1c
    EP Obtained plugin IUpdateEndpointProvider on CLSID 3BF1D171-8D71-44C4-B234-302390EDD390
    2015-03-12 15:23:37:004
    2564 d1c
    EP Obtained plugin IUpdateEndpointAuthProvider on CLSID 3BF1D171-8D71-44C4-B234-302390EDD390
    2015-03-12 15:23:37:004
    2564 d1c
    EP SLS: Initializing for service ID 3DA21691-E39D-4DA6-8A4B-B43877BCB1B7
    2015-03-12 15:23:37:004
    2564 d1c
    EP SLS: Reading from cache
    2015-03-12 15:23:37:004
    2564 d1c
    EP SLS: Successfully read service endpoints from cache.
    2015-03-12 15:23:37:004
    2564 d1c
    EP Got service Microsoft Intune plugin Client/Server preferred token types: 0x00000001
    2015-03-12 15:23:37:004
    2564 d1c
    EP Got service Microsoft Intune plugin Client/Server URL: "https://msua05.manage.microsoft.com/ClientWebService/client.asmx/auth"
    2015-03-12 15:23:37:004
    2564 d1c
    EP Got service Microsoft Intune plugin Client/Server auth token of type 0x00000001
    2015-03-12 15:23:37:004
    2564 d1c
    PT +++++++++++  PT: Synchronizing server updates  +++++++++++
    2015-03-12 15:23:37:004
    2564 d1c
    PT  + ServiceId = Microsoft Intune, Server URL = https://msua05.manage.microsoft.com/ClientWebService/client.asmx/auth
    2015-03-12 15:23:43:129
    2564 d1c
    Agent Skipping search for Windows Updates due to category criteria
    2015-03-12 15:23:43:129
    2564 d1c
    Agent  * Found 0 updates and 3 categories in search; evaluated appl. rules of 295 out of 331 deployed entities
    2015-03-12 15:23:43:129
    2564 d1c
    Agent *********
    2015-03-12 15:23:43:129
    2564 d1c
    Agent **  END  **  Agent: Finding updates [CallerId = Client Agents Sync]
    2015-03-12 15:23:43:129
    2564 d1c
    Agent *************
    2015-03-12 15:23:43:129
    2564 ee4
    AgntUpd >>##  RESUMED  ## AgntUpd: Search for agents [Service = "Microsoft Intune", CallId = {F9BB69D3-5BD4-4B2A-8D06-0FAB2BA9ADC0}]
    2015-03-12 15:23:43:129
    2564 ee4
    AgntUpd  # 0 agents detected
    2015-03-12 15:23:43:129
    2564 ee4
    AgntUpd #########
    2015-03-12 15:23:43:129
    2564 ee4
    AgntUpd ##  END  ##  AgntUpd: Search for agents [Service = "Microsoft Intune", CallId = {F9BB69D3-5BD4-4B2A-8D06-0FAB2BA9ADC0}]
    2015-03-12 15:23:43:129
    2564 ee4
    AgntUpd #############
    2015-03-12 15:23:43:129
    2564 ee4
    AgntUpd Agent sync completed
    2015-03-12 15:23:43:129
    2564 ee4
    Agent Agent servicing time window policy is not set
    2015-03-12 15:23:43:129
    2564 ee4
    Agent WARNING: Unable to read agent servicing time window policy, error = 0x80070002. 
    2015-03-12 15:23:43:129
    2564 ee4
    AgntUpd WARNING: Failed to update task triggers, error = 0x80070002
    2015-03-12 15:23:48:129
    2564 d1c
    Report REPORT EVENT: {1CA0460D-AC30-468A-AAB2-F9BA68F3744F}
    2015-03-12 15:23:43:129+0530 1
    147 [AGENT_DETECTION_FINISHED] 101
    {00000000-0000-0000-0000-000000000000}
    0 0 Client Agents Sync
    Success Software Synchronization
    The Client successfully detected 0 updates.
    2015-03-12 15:23:48:129
    2564 d1c
    Report WARNING: CSerializationHelper:: InitSerialize failed : 0x80070002
    2015-03-12 15:23:48:129
    2564 d1c
    Report WARNING: CSerializationHelper:: InitSerialize failed : 0x80070002
    2015-03-12 15:23:48:129
    2564 d1c
    Report WARNING: CSerializationHelper:: InitSerialize failed : 0x80070002
    2015-03-12 15:23:48:129
    2564 d1c
    Report WARNING: CSerializationHelper:: InitSerialize failed : 0x80070002
    i am not able to find the reason for this error please help..
    with regards
    Mayank Pahan

  • Is there a way to BULK COLLECT with FOR UPDATE and not lock ALL the rows?

    Currently, we fetch a cursor on a few million rows using BULK COLLECT.
    In a FORALL loop, we update the rows.
    What is happening now, is that we run this procedure at the same time, and there is another session running a MERGE statement on the same table, and a DEADLOCK is created between them.
    I'd like to add to the cursor the FOR UPDATE clause, but from what i've read,
    it seems that this will cause ALL the rows in the cursor to become locked.
    This is a problem, as the other session is running MERGE statements on the table every few seconds, and I don't want it to fail with ORA-0054 (resource busy).
    What I would like to know is if there is a way, that only the rows in the
    current bulk will be locked, and all the other rows will be free for updates.
    To reproduce this problem:
    1. Create test table:
    create table TEST_TAB
    ID1 VARCHAR2(20),
    ID2 VARCHAR2(30),
    LAST_MODIFIED DATE
    2. Add rows to test table:
    insert into TEST_TAB (ID1, ID2, LAST_MODIFIED)
    values ('416208000770698', '336015000385349', to_date('15-11-2009 07:14:56', 'dd-mm-yyyy hh24:mi:ss'));
    insert into TEST_TAB (ID1, ID2, LAST_MODIFIED)
    values ('208104922058401', '336015000385349', to_date('15-11-2009 07:11:15', 'dd-mm-yyyy hh24:mi:ss'));
    insert into TEST_TAB (ID1, ID2, LAST_MODIFIED)
    values ('208104000385349', '336015000385349', to_date('15-11-2009 07:15:13', 'dd-mm-yyyy hh24:mi:ss'));
    3. Create test procedure:
    CREATE OR REPLACE PROCEDURE TEST_PROC IS
    TYPE id1_typ is table of TEST_TAB.ID1%TYPE;
    TYPE id2_typ is table of TEST_TAB.ID2%TYPE;
    id1_arr id1_typ;
    id2_arr id2_typ;
    CURSOR My_Crs IS
    SELECT ID1, ID2
    FROM TEST_TAB
    WHERE ID2 = '336015000385349'
    FOR UPDATE;
    BEGIN
    OPEN My_Crs;
    LOOP
    FETCH My_Crs bulk collect
    INTO id1_arr, id2_arr LIMIT 1;
    Forall i in 1 .. id1_arr.COUNT
    UPDATE TEST_TAB
    SET LAST_MODIFIED = SYSDATE
    where ID2 = id2_arr(i)
    and ID1 = id1_arr(i);
    dbms_lock.sleep(15);
    EXIT WHEN My_Crs%NOTFOUND;
    END LOOP;
    CLOSE My_Crs;
    COMMIT;
    EXCEPTION
    WHEN OTHERS THEN
    RAISE_APPLICATION_ERROR(-20000,
    'Test Update ' || SQLCODE || ' ' || SQLERRM);
    END TEST_PROC;
    4. Create another procedure to check if table rows are locked:
    create or replace procedure check_record_locked(p_id in TEST_TAB.ID1%type) is
    cursor c is
    select 'dummy'
    from TEST_TAB
    WHERE ID2 = '336015000385349'
    and ID1 = p_id
    for update nowait;
    e_resource_busy exception;
    pragma exception_init(e_resource_busy, -54);
    begin
    open c;
    close c;
    dbms_output.put_line('Record ' || to_char(p_id) || ' is not locked.');
    rollback;
    exception
    when e_resource_busy then
    dbms_output.put_line('Record ' || to_char(p_id) || ' is locked.');
    end check_record_locked;
    5. in one session, run the procedure TEST_PROC.
    6. While it's running, in another session, run this block:
    begin
    check_record_locked('208104922058401');
    check_record_locked('416208000770698');
    check_record_locked('208104000385349');
    end;
    7. you will see that all records are identified as locked.
    Is there a way that only 1 row will be locked, and the other 2 will be unlocked?
    Thanks,
    Yoni.

    I don't have database access on weekends (look at it as a template)
    suppose you
    create table help_iot
    (bucket number,
    id1    varchar2(20),
    constraint help_iot_pk primary key (bucket,id1)
    organization index;not very sure about the create table syntax above.
    declare
      maximal_bucket number := 10000; -- will update few hundred rows at a time if you must update few million rows
      the_sysdate date := sysdate;
    begin
      truncate table help_iot;
      insert into help_iot
      select ntile(maximal_bucket) over (order by id1) bucket,id1
        from test_tab
       where id2 = '336015000385349';
      for i in 1 .. maximal_bucket
      loop
        select id1,id2,last_modified
          from test_tab
         where id2 = '336015000385349'
           and id1 in (select id1
                         from help_iot
                        where bucket = i
           for update of last_modified;
        update test_tab
           set last_modified = the_sysdate
         where id2 = '336015000385349'
           and id1 in (select id1
                         from help_iot
                        where bucket = i
        commit;
        dbms_lock.sleep(15);
      end loop;
    end;Regards
    Etbin
    introduced the_sysdate if last_modified must be the same for all updated rows
    Edited by: Etbin on 29.11.2009 16:48

  • How to unlock a row if i use FOR UPDATE clause

    In procedure if we use FOR UPDATE clause, it will lock particular row and allow only one client to update whereas other client can only fetch data in the same row at that time.
    My question is when will it unlock the row, what should we do to unlock the row while writing procedure. Take this example here im using FOR UPDATE clause for client_count, when ll it unlock that particular row in this procedure.
    create or replace PROCEDURE newprocedur(inMerid IN VARCHAR2,outCount OUT NUMBER) AS
    CURSOR c1 IS
    select CLIENT_COUNT from OP_TMER_CONF_PARENT where MER_ID = inMerid FOR UPDATE OF CLIENT_COUNT;
    BEGIN
    Open c1;
    loop
    fetch c1 into outCount;
    exit when c1%NOTFOUND;
    outCount:=outCount+1;
    update OP_TMER_CONF_PARENT set CLIENT_COUNT = outCount where current of c1;
    end loop;
    close c1;
    END;

    Hi,
    Basically you are incrementing client_count by 1 , Why you have to fetch row one by one and update? you could just finish that in a single update
    UPDATE OP_TMER_CONF_PARENT
    SET CLIENT_COUNT = CLIENT_COUNT+1
    WHERE MER_ID     = inMerid This will increment client_count of all rows by one for the given mer_id;
    After updating you have to make the changes permanent so that other users will see the changes you have made.
    To lock the row before update you can use same select statement in you cursor
    SELECT CLIENT_COUNT
    FROM OP_TMER_CONF_PARENT
    WHERE MER_ID = inMerid FOR UPDATE OF CLIENT_COUNT;You can further modify the procedure to let other users know if the row is being updated.
    Regards
    Yoonas

  • Apple's Replacement Program for Macbook Air mid-2012

    Hi everyone, I just wanted to know more about apple's replacement program for Macbook Air mid-2012. I updated the said firmware and then my mac air stops working. However, according to the program, they are replacing it free of charge. I just went to an authorized service provider here in the Philippines and I just want to know if I will be paying any. I can't find good discussions in Google. Thanks.

    You should not, as the replacement program is worldwide. In case the reseller refuses to repair your Mac for free, print this website and take it with you

  • FOR UPDATE cursor is causing Blocking/ Dead Locking issues

    Hi,
    I am facing one of the complex issues regarding blocking / dead locking issues. Please find below the details and help / suggest me the best approach to ahead with that.
    Its core Investment Banking Domain, in Our Day to day Business we are using many transaction table for processing trades and placing the order. In specific there are two main transaction table
    1)     Transaction table 1
    2)     Transaction table 2
    These both the tables are having huge amount of data. In one of our application to maintain data integrity (During this process we do not want other users to change these rows), we have placed SELECT …………….. FOR UPDATE CURSOR on these two table and we have locked all the rows during the process. And we have batch jobs (shell scripts ) , calling this procedure , we will be running 9 times per day 1 hrs each start at 7:15AM in the morn finish it up in the eve 5PM . Let’s say. The reason we run the same procedure multiple times is, our business wants to know the voucher before its finalized. Because there is a possibility that order can be placed and will be updated/cancelled several times in a single day. So at the end of the day , we will be sending the finalized update to our client.
    20 07 * * 1-5 home/bin/app_process_prc.sh >> home/bin/app1/process.out
    20 08 * * 1-5 home/bin/app_process_prc.sh >> home/bin/app1/process.out
    20 09 * * 1-5 home/bin/app_process_prc.sh >> home/bin/app1/process.out
    20 10 * * 1-5 home/bin/app_process_prc.sh >> home/bin/app1/process.out
    20 11 * * 1-5 home/bin/app_process_prc.sh >> home/bin/app1/process.out
    20 12 * * 1-5 home/bin/app_process_prc.sh >> home/bin/app1/process.out
    20 13 * * 1-5 home/bin/app_process_prc.sh >> home/bin/app1/process.out
    20 14 * * 1-5 home/bin/app_process_prc.sh >> home/bin/app1/process.out
    20 15 * * 1-5 home/bin/app_process_prc.sh >> home/bin/app1/process.out
    20 16 * * 1-5 home/bin/app_process_prc.sh >> home/bin/app1/process.out
    20 17 * * 1-5 home/bin/app_process_prc.sh >> home/bin/app1/process.out
    Current Program will look like:
    App_Prc_1
    BEGIN
    /***** taking the order details (source) and will be populate into the table ****/
    CURSOR Cursor_Upload IS
    SELECT col1, col2 … FROM Transaction table1 t 1, Source table 1 s
    WHERE t1.id_no = t2.id_no
    AND t1.id_flag = ‘N’
    FOR UPDATE OF t1.id_flag;
    /************* used for inserting the another entry , if theres any updates happened on the source table , for the records inserted using 1st cursor. **************/
    CURSOR cursor_update IS
    SELECT col1, col2 … FROM transaction table2 t2 , transaction table t1
    WHERE t1.id_no = t2.id_no
    AND t1.id_flag = ‘Y’
    AND t1.DML_ACTION = ‘U’,’D’ -- will retrieve the records which are updated and deleted recently for the inserted records in transaction table 1 for that particular INSERT..
    FOR UPDATE OF t1.id_no,t1.id_flag;
    BLOCK 1
    BEGIN
    FOR v_upload IN Cursor_Upload;
    LOOP
    INSERT INTO transaction table2 ( id_no , dml_action , …. ) VALUES (v_upload.id_no , ‘I’ , … ) RETURNING v_upload.id_no INTO v_no -- I specify for INSERT
    /********* Updating the Flag in the source table after the population ( N into Y ) N  order is not placed yet , Y  order is processed first time )
    UPDATE transaction table1
    SET id_FLAG = ‘Y’
    WHERE id_no = v_no;
    END LOOP;
    EXCEPTION WHEN OTHER THEN
    DBMS_OUTPUT.PUT_LINE( );
    END ;
    BLOCK 2
    BEGIN -- block 2 starts
    FOR v_update IN Cursor_Update;
    LOOP;
    INSERT INTO transaction table2 ( id_no ,id_prev_no, dml_action , …. ) VALUES (v_id_seq_no, v_upload.id_no ,, … ) RETURNING v_upload.id_no INTO v_no
    UPDATE transaction table1
    SET id_FLAG = ‘Y’
    WHERE id_no = v_no;
    END LOOP;
    EXCEPTION WHEN OTHER THEN
    DBMS_OUTPUT.PUT_LINE( );
    END; -- block2 end
    END app_proc; -- Main block end
    Sample output in Transaction table1 :
    Id_no | Tax_amt | re_emburse_amt | Activ_DT | Id_Flag | DML_ACTION
    01 1,835 4300 12/JUN/2009 N I ( these DML Action will be triggered when ever if theres in any DML operation occurs in this table )
    02 1,675 3300 12/JUN/2009 Y U
    03 4475 6500 12/JUN/2009 N D
    Sample output in Transaction table2 :
    Id_no | Prev_id_no Tax_amt | re_emburse_amt | Activ_DT
    001 01 1,835 4300 12/JUN/2009 11:34 AM ( 2nd cursor will populate this value , bcoz there s an update happened for the below records , this is 2nd voucher
    01 0 1,235 6300 12/JUN/2009 09:15 AM ( 1st cursor will populate this record when job run first time )
    02 0 1,675 3300 12/JUN/2009 8:15AM
    003 03 4475 6500 12/JUN/2009 11:30 AM
    03 0 1,235 4300 12/JUN/2009 10:30 AM
    Now the issues is :
    When these Process runs, our other application jobs failing, because it also uses these main 2 tranaction table. So dead lock is detecting in these applications.
    Solutin Needed :
    Can anyone suggest me , like how can rectify this blocking /Locking / Dead lock issues. I wants my other application also will use this tables during these process.
    Regards,
    Maran

    hmmm.... this leads to a warning:
    SQL> ALTER SESSION SET PLSQL_WARNINGS='ENABLE:ALL';
    Session altered.
    CREATE OR REPLACE PROCEDURE MYPROCEDURE
    AS
       MYCOL VARCHAR(10);
    BEGIN
       SELECT col2
       INTO MYCOL
       FROM MYTABLE
       WHERE col1 = 'ORACLE';
    EXCEPTION
       WHEN PIERRE THEN
          NULL;
    END;
    SP2-0804: Procedure created with compilation warnings
    SQL> show errors
    Errors for PROCEDURE MYPROCEDURE:
    LINE/COL                                                                          ERROR
         12/9        PLW-06009: procedure “MYPROCEDURE” PIERRE handler does not end in RAISE or RAISE_APPLICATION_ERROR
         :)

  • API/package/procedure/function for updating physical attributes in Org/Mast

    I need some kind of procedure or function for updating the weight, volume, and dimensions in the organization and master items forms. We have almost 350,000 items and I want to update them in batch. Is there an API of some kind for this? I would do a simple update but I want to make sure there's no additional logic necessary (other tables that are updated during the process of updating those fields, etc).
    Thanks!

    here is for API's you need to check...
    You can use Decimal & UOM Quantity API
    These APIs are used to handle item decimal quantities:
    Convert from one UOM to another
    Validate quantities at input time
    Validate quantities at display/output time
    Quantity Comparison
    Get UOM information
    For your convenience, I am giving you the API as below:
    /*===========================================================================+
    | Copyright (c) 1999 Oracle Corporation |
    | Redwood Shores, California, USA |
    | All rights reserved. |
    +===========================================================================*/
    /*-----------------------------------------------------------------------+
    |This package contains procedures relevent to item decimal quantity |
    |processing. This package contains routines to: |
    |(1)validate item quantities based on UOM and decimal precision rules |
    |(2)validate whether the UOM controls and decimal precision rules |
    | themselves are correct based on functionality planned. For reviewing|
    | UOM and decimal quantity functional design details, please visit the|
    | following URL: |
    | "http//apps-us.oracle.com/inv/development/designs_120/ |
    | decimal_precision/decimal_precision.html" |
    |But here are a few basics to give background context: |
    | |
    | "Item Quantity" -- The item's quantity is described by the item |
    | identifier, the unit of measure (e.g. grams, kilos, etc), and a |
    | number value to indicate the amount in that unit of measure. |
    | |
    | "Unit of Measure" -- Units of measure belong to unit of measure |
    | classes(e.g. weight, volume, length, etc). Each unit of measure class|
    | has actual units of measure that belong to that class (e.g. the |
    | weight class may have units of measures like, "grams", "kilos", etc).|
    | |
    | "UOM Conversion" --Users can set up conversion rates between UOMs in |
    | them same UOM class, by defining conversions to the base UOM. These |
    | are standard conversions. Item-level intra-class conversions may also|
    | be defined. When doing intra-class conversions, item-level |
    | intra-class conversions are used first if defined, and then standard |
    | conversions are used. |
    | Users can define inter-class conversions. Inter-class Conversions may|
    | also be defined at the lot/sublot levels. For inter-class conversions|
    | sublot, lot, and then item inter-class conversions will be used in |
    | in order. If lot-lvel conversion is not defined, then item-level |
    | conversion is used. A strict hierarchy is imposed. |
    | |
    | "TU" -- Trasactable Unit.A UOM may have a TU. This implies |
    | that when transacting in this UOM, any item's quantities will be |
    | forced to be integer multiples of this TU quantity. The TU may also |
    | be declared at the item level. The TU quantity at the item level may |
    | be different from the UOM level TU, and if defined, item level TU |
    | takes precedance. |
    | |
    | "Decimal Precision"--Users have a choice of setting decimal precision|
    | at the base UOM for each UOM class. All other UOMs in that class get |
    | get their decimal precisions derived from the base UOM decimal |
    | precision, the converison rate, and TUs, if they are |
    | being used. |
    | |
    | |
    | "Conversion Rate Tolerance" -- This is a tolerance that may be set |
    | when conversion rate cannot be not strictly fixed. Example: |
    | 1 Chicken = 2 pounds (plus or minus 0.7 pounds). This 0.7 pounds is |
    | the conversion rate tolerance. Conversion rate tolerance is only |
    | definable at inter-class UOM conversions, at item or lot/sublot level|
    | |
    | History |
    | 04/08/99 Mansoor Jafri Created Package Spec |
    | 04/26/99 Mansoor Jafri Updated with TU at 3 levels as |
    | opposed to MTU at 2 and atomic at|
    | UOM class level. |
    | 04/29/99 Mansoor Jafri Updated document with lot/sublot |
    | conversions. Also, removed |
    | "atomic" as a separate control, |
    | since this can |
    | implemented as a TU at base UOM |
    | level with an integer quantity. |
    | 05/03/99 Mansoor Jafri Updated the package with sublot |
    | level control. Also, changed name|
    | of DTU to TU, so that it fits |
    | better in the "process" market. |
    | Also, conformed to BOI API stds. |
    +-----------------------------------------------------------------------*/
    SET VERIFY OFF
    WHENEVER SQLERROR EXIT FAILURE ROLLBACK;
    CREATE OR REPLACE PACKAGE inv_decimals_pub AS
    /* $Header: INVDECPS.pls 118.3 99/05/03 18:12:27 mjafri noship $ */
    /*--------------------------------------------------------------------------+
    |Procedure validate_compare_quantities(..)
    |Returns the quantity converted from the first UOM in the second UOM.
    |If quantities in 2 UOMs are already available, then this procedure will
    |compare and validate these quantities based on conversion rates
    |and UOM and decimal qty controls. This procedure may be used to validate
    |scenarios where quatities are entered in dual UOMs. We want to make sure
    |quantities are valid based on conversion, TUs, and conversion
    |rate tolerances.
    |
    |Procedure validate_and_compare(
    |p_api_version_number IN NUMBER, -- version # of API
    |p_init_msg_list IN VARCHAR2, -- whether to initialize list
    |p_inventory_item_id IN NUMBER, -- inventory_item_id
    |p_organization_id IN NUMBER, -- organization_id
    |p_lot_control_code IN NUMBER, -- item's lot control code
    |p_lot_number IN VARCHAR2, -- lot number
    |p_sub_lot_control_code IN NUMBER, --sub lot control code
    |p_sublot_number IN VARCHAR2, -- sublot number
    |p_from_quantity IN NUMBER, -- qty in first UOM
    |p_from_uom_code IN VARCHAR2, -- UOM of fisrt qty
    |p_to_uom_code IN VARCHAR2, -- UOM of second qty
    |p_to_quantity_to_check IN NUMBER, -- qty in second UOM
    |x_resultant_to_quantity OUT NUMBER, -- calculated qty in second UOM
    |x_comparison OUT NUMBER,--Possible values are 1,0,-1,-99
    |x_msg_count OUT NUMBER, -- number of messages
    |x_msg_data OUT VARCHAR2, -- populated,if msg count = 1
    |x_return_status OUT VARCHAR2) -- return status
    |
    |Note: The comparisons are done in base UOM
    | of the UOM class to which the first UOM belongs. x_comparison returns:
    |-1 if from_quantity is less than to_quantity (A < B)
    | 0 if from_quantity is equal to to_quantity (A = B)
    | 1 if from_quantity is greater than to_quantity (A > B)
    | -99 if the validations for the first/second quantity failed
    | If the UOMs belong to different classes, then users can specify whether
    | they want to use the effective interclass UOM conversion tolerance, say, T.
    | CASE: p_use_interclass_tolerance = 1
    | ------
    | Q1 > Q2 if (Q1 - Q2) >= T
    | Q1 = Q2 if ABS(Q1 - Q2) < T
    | Q1 < Q2 if (Q1 - Q2 ) <= -T
    |
    |The output variable x_resultant_to_quantity will contain the converted
    |quantity
    |in the second UOM, using effective conversion rates.
    |Usage: In a dual UOM scenario, this api will confirm whether quantities in
    |the two UOMs are equal or not, based on x_comparison output variable.
    +--------------------------------------------------------------------------*/
    Procedure validate_compare_quantities(
    p_api_version_number IN NUMBER,
    p_init_msg_list IN VARCHAR2,
    p_inventory_item_id IN NUMBER,
    p_organization_id IN NUMBER,
    p_lot_control_code IN NUMBER,
    p_lot_number IN VARCHAR2,
    p_sub_lot_control_code IN NUMBER,
    p_sublot_number IN VARCHAR2,
    p_from_quantity IN NUMBER,
    p_from_uom_code IN VARCHAR2,
    p_to_uom_code IN VARCHAR2,
    p_to_quantity_to_check IN NUMBER,
    x_resultant_to_quantity OUT NUMBER,
    x_valid_conversion OUT NUMBER,
    x_msg_count OUT NUMBER,
    x_msg_data OUT VARCHAR2,
    x_return_status OUT VARCHAR2);
    /*--------------------------------------------------------------------------+
    |Function convert_UOM(..) return NUMBER ;
    |Returns the quantity converted from the first unit into the second unit.
    |If conversion is not possible, return status is failure.
    |Function convert(
    |p_api_version_number IN NUMBER,
    |p_init_msg_list IN VARCHAR2, -- whether to initialize list
    |p_inventory_item_id IN NUMBER, -- inventory_item_id
    |p_organization_id IN NUMBER, -- organization_id
    |p_lot_control_code IN NUMBER, -- item's lot control code
    |p_lot_number IN VARCHAR2, -- lot number
    |p_sub_lot_control_code IN NUMBER,
    |p_sublot_number IN VARCHAR2,
    |p_from_quantity IN NUMBER, -- qty in first UOM
    |p_from_uom_code IN VARCHAR2, -- UOM of fisrt qty
    |p_to_uom_code IN VARCHAR2, -- UOM of second qty
    |x_msg_count OUT NUMBER,
    |x_msg_data OUT VARCHAR2,
    |x_return_status OUT VARCHAR2)
    | return NUMBER ;
    |If there is an error, then -99 is returned.
    |1) From_quantity must be an absolute value.
    |2) From_quantity will be truncated to decimal precision in the from UOM, then
    | converted to base UOM in the class,
    |3) Then converted to base UOM of the
    | to_UOM class,
    |4) Then converted to the quantity in to_UOM,
    |5) Then truncated to decimal precision of the to_UOM.
    +--------------------------------------------------------------------------*/
    Function convert_UOM(
    p_api_version_number IN NUMBER,
    p_init_msg_list IN VARCHAR2 := fnd_api.g_false,
    p_inventory_item_id IN NUMBER,
    p_organization_id IN NUMBER,
    p_lot_control_code IN NUMBER,
    p_lot_number IN VARCHAR2,
    p_sub_lot_control_code IN NUMBER,
    p_sublot_number IN VARCHAR2,
    p_from_quantity IN NUMBER,
    p_from_uom_code IN VARCHAR2,
    p_to_uom_code IN VARCHAR2,
    x_msg_count OUT NUMBER,
    x_msg_data OUT VARCHAR2,
    x_return_status OUT VARCHAR2) return NUMBER ;
    /*--------------------------------------------------------------------------+
    | get_uom_properties(..)
    | This procedure is used to interrogate the UOM.
    | It returns:
    | (1) decimal precision at the UOM level
    | (2) TU, if defined, at the UOM level
    | (3) Atomicity, if defined for the class that this UOM belongs to
    | If some of the controls are not defined, null values are returned.
    | if the UOM is not found, the return status indicates this.
    | Procedure get_uom_properties(
    | p_api_version_number IN NUMBER,
    | p_init_msg_list IN VARCHAR2,
    | p_uom_code IN VARCHAR2,
    | x_decimal_precision OUT NUMBER,
    | x_uom_TU OUT NUMBER,
    | x_uom_class OUT VARCHAR2,
    | x_msg_count OUT NUMBER,
    | x_msg_data OUT VARCHAR2,
    | x_return_status OUT VARCAHR2);
    +--------------------------------------------------------------------------*/
    Procedure get_uom_properties(
    p_api_version_number IN NUMBER,
    p_init_msg_list IN VARCHAR2 := fnd_api.g_false,
    p_uom_code IN VARCHAR2,
    x_decimal_precision OUT NUMBER,
    x_uom_TU OUT NUMBER,
    x_uom_class OUT VARCHAR2,
    x_msg_count OUT NUMBER,
    x_msg_data OUT VARCHAR2,
    x_return_status OUT VARCAHR2);
    /*-------------------------------------------------------------------------+
    | get_item_uom_properties(..)
    | This procedure returns a specific item's primary UOM, TU, and tolerance
    | Procedure get_item_uom_properties(
    | p_api_version_number IN NUMBER,
    | p_init_msg_list IN VARCHAR2,
    | p_inventory_item_id IN NUMBER,
    | p_organization_id IN NUMBER,
    | p_lot_control_code IN NUMBER, -- item's lot control code
    | p_lot_number IN VARCHAR2,
    | p_sub_lot_control_code IN NUMBER,
    | p_sublot_number IN VARCHAR2,
    | x_primary_uom_code OUT VARCHAR2,
    | x_uom_class OUT VARCHAR2,
    | x_decimal_precision OUT NUMBER,
    | x_item_TU OUT NUMBER,
    | x_uom_TU OUT NUMBER,
    | x_effective_TU OUT NUMBER,
    | x_msg_count OUT NUMBER,
    | x_msg_data OUT VARCHAR2,
    | x_return_status OUT VARCHAR2 );
    | If the item is not a valid one, then this is reflected through the
    | return status.
    +-------------------------------------------------------------------------*/
    Procedure get_item_uom_properties(
    p_api_version_number IN NUMBER,
    p_init_msg_list IN VARCHAR2 := fnd_api.g_false,
    p_inventory_item_id IN NUMBER,
    p_organization_id IN NUMBER,
    p_lot_control_code IN NUMBER,
    p_lot_number IN VARCHAR2,
    p_sub_lot_control_code IN NUMBER,
    p_sublot_number IN VARCHAR2,
    x_primary_uom_code OUT VARCHAR2,
    x_uom_class OUT VARCHAR2,
    x_decimal_precision OUT NUMBER,
    x_item_TU OUT NUMBER,
    x_class_TU OUT NUMBER,
    x_uom_TU OUT NUMBER,
    x_effective_TU OUT NUMBER,
    x_msg_count OUT NUMBER,
    x_msg_data OUT VARCHAR2,
    x_return_status OUT VARCHAR2 );
    /*-------------------------------------------------------------------------+
    | Procedure compare_quantities(..)
    | Procedure compare_quantities(
    | p_api_version_number IN NUMBER,
    | p_init_msg_list IN VARCHAR2,
    | p_inventory_item_id IN NUMBER,
    | p_organization_id IN NUMBER,
    | p_lot_control_code IN NUMBER,
    | p_lot_number IN VARCHAR2,
    | p_sub_lot_control_code IN NUMBER,
    | p_sublot_number IN VARCHAR2,
    | p_fisrt_qauantity IN NUMBER,
    | p_first_uom IN VARCHAR2,
    | p_second_quantity IN NUMBER,
    | p_second_uom IN VARCHAR2,
    | p_use_interclass_tolerance IN VARCHAR2, -- Yes = 1, 2 = No
    | x_comaprison_result OUT NUMBER,
    | x_msg_count OUT NUMBER,
    | x_msg_data OUT VARCHAR2,
    | x_return_status OUT VARCHAR2);
    |
    | This procedure compares the quantities A and B and returns result in the
    | output variable x_comparison_result. The comparisons are done in base UOM
    | of the UOM class to which the first UOM belongs:
    |-1 if quantity A is less than quantity B (A < B)
    | 0 if quantity A is equal to quantity B (A = B)
    | 1 if quantity A is greater than quantity B (A > B)
    | If the UOMs belong to different classes, then users can specify whether
    | they want to use interclass UOM conversion tolerance, say, T.
    | CASE: p_use_interclass_tolerance = 1
    | ------
    | Q1 > Q2 if (Q1 - Q2) >= T
    | Q1 = Q2 if ABS(Q1 - Q2) < T
    | Q1 < Q2 if (Q1 - Q2 ) <= -T
    +------------------------------------------------------------------------*/
    Procedure compare_quantities(
    p_api_version_number IN NUMBER,
    p_init_msg_list IN VARCHAR2 := fnd_api.g_false,
    p_inventory_item_id IN NUMBER,
    p_organization_id IN NUMBER,
    p_lot_control_code IN NUMBER,
    p_lot_number IN VARCAHR2,
    p_sub_lot_control_code IN NUMBER,
    p_sublot_number IN VARCHAR2,
    p_fisrt_qauantity IN NUMBER,
    p_first_uom IN VARCHAR2,
    p_second_quantity IN NUMBER,
    p_second_uom IN VARCHAR2,
    p_use_interclass_tolerance IN VARCHAR2,
    x_comaprison_result OUT NUMBER,
    x_msg_count OUT NUMBER,
    x_msg_data OUT VARCHAR2,
    x_return_status OUT VARCHAR2);
    /*-----------------------------------------------------------------------+
    | Procedure Validate_Quantity(
    | p_api_version_number IN NUMBER,
    | p_init_msg_list IN VARCHAR2,
    | p_inventory_item_id IN NUMBER,
    | p_organization_id IN NUMBER,
    | p_lot_control_code IN NUMBER,
    | p_lot_number IN VARCHAR2,
    | p_sub_lot_control_code IN NUMBER,
    | p_sublot_number IN VARCHAR2,
    | p_input_quantity IN NUMBER,
    | p_UOM_code IN VARCHAR2,
    | x_msg_count OUT NUMBER,
    | x_msg_data OUT VARCHAR2,
    | x_return_status OUT VARCHAR2);
    |
    | Validates and returns the quantity in this manner (the caller does not need
    | to adjust the result):
    | 0. Truncate to and validate decimal precision
    | 1. Validate quantity with respect to TU controls.
    +-------------------------------------------------------------------------*/
    Procedure Validate_Quantity(
    p_api_version_number IN NUMBER,
    p_init_msg_list IN VARCHAR2 := fnd_api.g_false,
    p_inventory_item_id IN NUMBER,
    p_organization_id IN NUMBER,
    p_lot_control_code IN NUMBER,
    p_lot_number IN VARCAHR2,
    p_sub_lot_control_code IN NUMBER,
    p_sublot_number IN VARCHAR2,
    p_input_quantity IN NUMBER,
    p_UOM_code IN VARCHAR2,
    x_msg_count OUT NUMBER,
    x_msg_data OUT VARCHAR2,
    x_return_status OUT VARCHAR2);
    /*------------------------------------------------------------------------+
    | Function Truncate_Quantity(
    | p_api_version_number IN NUMBER,
    | p_init_msg_list IN VARCHAR2,
    | p_inventory_item_id IN NUMBER,
    | p_organization_id IN NUMBER,
    | p_lot_control_code IN NUMBER,
    | p_lot_number IN VARCHAR2,
    | p_sub_lot_control_code IN NUMBER,
    | p_sublot_number IN VARCHAR2,
    | p_input_quantity IN NUMBER,
    | p_UOM_code IN VARCHAR2,
    | x_msg_count OUT NUMBER,
    | x_msg_data OUT VARCHAR2,
    | x_return_status OUT VARCHAR2) return NUMBER;
    |
    | Truncates the quantity to decimal precision of the UOM.
    | In case of error conditions, -99 is returned.
    +------------------------------------------------------------------------*/
    Function Truncate_Quantity(
    p_api_version_number IN NUMBER,
    p_init_msg_list IN VARCHAR2 := fnd_api.g_false,
    p_inventory_item_id IN NUMBER,
    p_organization_id IN NUMBER,
    p_lot_control_code IN NUMBER,
    p_lot_number IN VARCHAR2,
    p_sub_lot_control_code IN NUMBER,
    p_sublot_number IN VARCHAR2,
    p_input_quantity IN NUMBER,
    p_UOM_code IN VARCHAR2,
    x_msg_count OUT NUMBER,
    x_msg_data OUT VARCHAR2,
    x_return_status OUT VARCHAR2) return NUMBER;
    * show errors package INV_DECIMALS_PUB
    * SELECT to_date('SQLERROR') FROM user_errors
    * WHERE name = 'INV_DECIMALS_PUB'
    * AND type = 'PACKAGE';
    commit;
    exit;

Maybe you are looking for

  • Need advice on ATV setup in new house...

    Before I get into too much detail, here is what I'm looking for... I've bought a newish 3-storey townhouse with a first-level living room, a second-level media room and a third-level lofted bedroom. I plan on having a 36" TV on the first level in the

  • How to create a Idoc  after a salesorder is created.(Different approaches.)

    Dear Experts, First of all I would like to thank SDN as continuously helping me to deliver  better  and faster. My requirement is to generate  a Custom idoc whenever a SalesOrder is created. with net value more then 1,00,000. Can u please help me by

  • Display of Report Totals of different groups

    Hi I have a requirement in XML Publisher where in I need to display the Total of all the sub totals of the 3 groups which i am currently working on. I am able to display the sub group totals . Example A B 100 200 -----------Group 1 C D 30 50 --------

  • Shot with film, can't get rid of slight wobble

    I'm a student and just got back a digital copy of some film (yes, actual film!) that I shot for my final assignment. My movie is based on the idea of a guy becoming trapped in a hallway when it suddenly extends into infinity on both ends. I shot ever

  • My laptop won't power on

    My son accident dropped my laptop yesterday. Up until that point over never had a problem with it ever. Now it won't power on. I've tried the trick of taking out the battery unplugging it and then trying to power it on and still nothing. It's complet