ODI Commit of Headers only when Lines data is loaded successfully

We have a requirement where in we have two interfaces ( headers & lines).
We have to commit data in Headars table only if the lines table gets successfully polulated.We have customized the KM's to remove commit from the headers interface and removed the ddl statements from IKM and LKM which usually do autocommit.We tried commiting the data after the lines interface execution , but that's not working. Though in ODI it displays single session for all executions(header and line), internally it is creating sub sessions.
We are using IKM Oracle Incremental Update-Merge knowledge module.
Execution steps are Procedure 1 --> Procedure 2 --> Headers Interface --> Lines Interface --> Procedure 3 --> Procedure 4.
Kindly provide your inputs.Looking forward to your suggestions.

Anand,
My approach would be different. Essentially your requirement indicates that you need to run DML on header and details table within same transaction cycle. Because for each interface execution, agent makes a separate connection, it is hard to design that into two different interfaces. My approach would be to accommodate both targets into single interface using a special LKM. Below is the procedure in short:
1. Create a data model by adding columns on header table and details table together.
2. Design an interface and put this model as target.
3. Bring the usual sources in the source pain and establish joins
4. Create the mapping for header table and mark them as UD1 in addition to mark them as INSERT or UPDATE as required.
5. Create the mapping for header table and mark them as UD2 (not UD1) in addition to mark them as INSERT or UPDATE as required.
6. All mapping are to be executed in staging.
7. Create a special IKM to include two I$ tables (I$_target_table_1 and I$_target_table_2) using the columns used for UD1 and UD2 mapping respectively. Populate them. To know how to use UD1 and UD2 mappings, look at manual for the documentation of odiRef.getColumnList api.
8. Add two options in the IKM where header and detail table names can be specified.
9. In a trasaction cycle (say, transaction1), insert into header table. In the next step into details table. Commit in the next step. In that way, if insert to details was not successful, job will fail and ODI would terminate the connection without a commit.
If you want to use two interface still, you have to find a way to run both interfaces asynchronously and then the IKM used in the interface for header table should be modified in such a way that after insert it must wait for some kind of communication (in the form of table data or temporary file) to mark the commit. My best guess would be to use jython in the IKM to check for the file. Off course interface writing to detail tables must be sending similar communications at the end of a successful write. If you do not want to use Jython, my advise would be to use PL/SQL procedure (try looking into DBMS_PIPE or DBMS_ALERT, I do not have ready code) to arrange for such a notification. But this is one hell of an extra work and the logic has multiple points of failure that requires still extra work.

Similar Messages

  • A function to announce or to do some other functions when a dataset is loaded successfully?

    What is the function to listen to the data and announce or do
    some other functions when the data is loaded successfully and ready
    to use?
    I've tried the getDataWasLoaded() but I must do it manually,
    or use it with the setTimeOut() function to check, this really
    unuseful.
    Thanks for all your help.

    U can use observers for that, the observer onPostLoad
    indicates that the data is ready to be processed.
    u can find the info in this document;
    http://labs.adobe.com/technologies/spry/articles/data_set_overview/index.html

  • Error when Read only permission set when filtering data before loading with Excel 2013 Addin

    Good afternoon :)
    I have an MDS issue that is making me lose my mind.
    I have some permission set to an Entity. It is a read only permission in the entity but I tried to put inside every field and same thing happen.
    Every time an Entity has any kind of read only permission assigned to it or its fields, Excel Addin show an error when we try to load it. When Entity has more rows than the maximum rows in the Settings pane, it will show you an option to filter data. When
    you try to use this filter, Excel show an error message but you can press OK and everything works fine.
    There is the message:
    The thing user, my user do not want it :( And I don't know how to get rid of it.
    Do anyone have an ideia on how to fix it ?
    In the debug set of the addin, there is this message:
    2014-10-22T11:38:42.152        8440 EXCEL.EXE            EXCEL.EXE                               
    Generic          EventType: Error, Message: Unobserved exception in TaskScheduler. Exception:'System.AggregateException: One or more errors occurred. ---> System.NullReferenceException: Object reference not set
    to an instance of an object.
       at System.Windows.Forms.Control.MarshaledInvoke(Control caller, Delegate method, Object[] args, Boolean synchronous)
       at System.Windows.Forms.Control.Invoke(Delegate method, Object[] args)
       at System.Windows.Forms.WindowsFormsSynchronizationContext.Send(SendOrPostCallback d, Object state)
       at Microsoft.MasterDataServices.ExcelAddInCore.ExcelHelpers.ExecuteOnUIThread(SendOrPostCallback callback)
       at Microsoft.MasterDataServices.ExcelAddInCore.DataView.FinalizeUIOperation(Boolean mdsOperation)
       at Microsoft.MasterDataServices.ExcelAddInCore.DataView.<>c__DisplayClass53.<LoadData>b__51(IAsyncResult ar)
       at System.Threading.Tasks.TaskFactory`1.FromAsyncCoreLogic(IAsyncResult iar, Func`2 endFunction, Action`1 endAction, Task`1 promise, Boolean requiresSynchronization)
       --- End of inner exception stack trace ---
    ---> (Inner Exception #0) System.NullReferenceException: Object reference not set to an instance of an object.
       at System.Windows.Forms.Control.MarshaledInvoke(Control caller, Delegate method, Object[] args, Boolean synchronous)
       at System.Windows.Forms.Control.Invoke(Delegate method, Object[] args)
       at System.Windows.Forms.WindowsFormsSynchronizationContext.Send(SendOrPostCallback d, Object state)
       at Microsoft.MasterDataServices.ExcelAddInCore.ExcelHelpers.ExecuteOnUIThread(SendOrPostCallback callback)
       at Microsoft.MasterDataServices.ExcelAddInCore.DataView.FinalizeUIOperation(Boolean mdsOperation)
       at Microsoft.MasterDataServices.ExcelAddInCore.DataView.<>c__DisplayClass53.<LoadData>b__51(IAsyncResult ar)
       at System.Threading.Tasks.TaskFactory`1.FromAsyncCoreLogic(IAsyncResult iar, Func`2 endFunction, Action`1 endAction, Task`1 promise, Boolean requiresSynchronization)<---

    Rafael,
    Is this still an issue?
    Thanks!
    Ed Price, Azure & Power BI Customer Program Manager (Blog,
    Small Basic,
    Wiki Ninjas,
    Wiki)
    Answer an interesting question?
    Create a wiki article about it!

  • Need more Info about "Load transactional data when master data not loaded"

    Hi,
    Can you please explain me this option in the infopackage " Load transactional data when master data is not loaded"....
    Say i load a transactional data record which has a material no. AAAXX.
    In the fact table, the material no. is replaced with the corresp. DIM ID.
    Now, assume that there is no entry for this Material no.
    AAAXX in the master data table...so no DIM ID for it..
    How is it then stored in the fact table ?
    Hope i have managed to explain the scenario..
    Thanks in advance,
    Punkuj

    Hello Punkuj K,
    How r u ?
    No, if the entry for that Material Number "AAAXX" is not there in the Master Data then it will create a SIDs & DIMs ID for that & Transaction Data will be loaded.
    Use
    Choose this indicator if you want to always update the data, even if no master data for the navigation attributes of the loaded records exists. The master data is generated from the loaded transaction data. The system draws SIDs. You can subsequently load the master data.
    Dependencies
    The texts, attributes, and hierarchies are not recognized by the system. Load the texts / attributes / hierarchies for the corresponding InfoObjects separately.
    This function corresponds to the update. Possible errors when reading the master data into the update rules are not associated with this indicator.
    Recommendation
    We recommended loading the master data into the productive systems in advance. Select this indicator especially in test systems.
    Best Regards....
    Sankar Kumar
    +91 98403 47141

  • How to query from view with parameter, only  when the JSP-page loading

    I use JSF/ADF BC, create two viewes:view1 and view2, in the JSP page the user press a button to query from the view1, but I hope the view2 can be queried only when the page loading, it have no relation with user-operator, and pass the column value of view2 into some variables, the view2 return one record.

    Hi -
    You may want to have a look at this other thread:
    Re: Execute ViewObject with Parameters at JSF Page Load?  JSF/ADF/BC 10.1.3
    John

  • How to read serial port only when new data has been sent to it

    I've written this very simple vi to read the serial port whenever the MKS Helium Detector sends a new value.  The timing of new data is controlled directly from the front panel of the MKS instrument.  I thought it was as simple as looking at the "bytes at port", and reading the port only if the value is not zero.  The problem I'm having is that the read function is occuring whether I want it to or not.  Consequently, the "Scan from String" function is returning an error (0) once in a while, because it's reading the serial port as it's being updated (I think).   Apparently, when the port is in the process of being updated, it is not zero.   Anyway, I'm assuming there is a simple fix, but I'm having no luck finding the Easter egg.  Any help would be, as always, very much appreciated. 
    Attachments:
    MKSRead.vi ‏55 KB

    You can approach your problem in a couple of ways. The way you've got it written now, as soon as the number of bytes is non-zero, you read and convert. This means that when a partial string is there, you conversion is nor correct. One way is to wait until non-zero bytes like you do now, and then in another loop, read until the byte count is equal to zero and then do the conversion. You can also read until the cr\lf is detected and then do the conversion on the string. You can also enable the termination character for the read but then you'll have to increase the number of bytes to read to something other than just the number of bytes first available. If the instrument always returns the same number of bytes, you can use that as a constant for the VISA Read. Then the read will terminate whenever the byte count OR the termination character is detected.
    I modified your VI to show you how you might put it in a loop and what for the CR/LF to be detected. You would want to add a timeout to this so that if the character does not show up, the loop will not run infinitely
    Attachments:
    MKSRead_mod.vi ‏68 KB

  • Refuse the access to the users when the data is loading in cube

    Hi Sap Guy's,
    I have a typical requirement from my client side.
    Requirement:
    While loading data in CUBE update we want have the application that refuse the access to the User's by  showing a message u201C The BW cube u2026. is loading please try lateru201D.
    With this scope we have to modify the chain. Set a parameter before start the cube update and reset the parameter when the cube update is ended.
    The query must be modified for checking the parameter value said above and allow the access or not to the cube.
    Kindly propose a suitable solution for the same.
    Thanks In Advance,
    Krishna.

    Hi,
       This is simple. Create a text element in query description and hardcode this with any dummy value (say the cube name). Fill this text element during i_step = 1 in exit. Use this text element for all the queries on the cube foor which you want this popup message. Then in TVARV table create a field as flag. Before the cube is loaded mark this flag field as X using ABAP program in process chain and once the cube is loaded delete the X for the field. In the exit check in I_STEP = 3 check whether your text element is populated or not. If it is populated this means your query is getting executed. Then check whether your flag field is X or not. If it is X then using the FM raise a popup message RRMS_MESSAGE_HANDLING and after this use the statement raise no_processing. This will return you to selection screen.
      Search the forum for more info abt how to write the code in I_STEP = 3.
    Regards,
    Raghavendra.

  • Showing a jwindow only when the image is loaded

    Hi,
    excuse me for the simplicity of my question, but I'm a beginner..
    I want to show a jwindow for few seconds opening my program. This jwindows has a jpanel with an image. The problem is that, when the jwindow is showed, the image isn't loaded and one sees the empty jwindow. Can I wait that the image has been loaded to show the jwindow?
    The image is setted by a
    Image i=Toolkit.getDefaultToolkit().getImage("img\\icon.gif");
    g.drawImage(i, 10,10, null);
    in paintComponent of my JPanel.
    Thanks in advance!

    Don't know if this will solve you problem or not but the easiest way to display an image is to simply use a JLabel:
    JLabel label = new JLabel( new ImageIcon(....) );

  • Is it possible to broadcast to QSS only when web page is load?

    My set-up will have a Quicktime broadcaster at one location and QSS at another location. A web page on the server will show the live picture coming from the broadcaster. Does the Broadcaster has to feed QSS all the time or only while somebody access the web page on the QSS.
    My problem is during night time, few people will access the page and I want to limit the upstream from the broadcaster to the QSS.
    Any help would be appreciate. Thank you
    Franco
    PB G4, Mac Mini, iMac G4, 8500, IICX, Apple IIe, Newton   Mac OS X (10.4.5)  

    I like having the sounds, alerts, banners and badges, I just don't think I should have to keep them constantly running in the background in-order to get them.
    You don't have to do that. Apps don't "run" in the background on iOS to provide notifications. Only a select few apps do anything in the background (such as audio players, GPS apps, VOIP apps) and even then it is the OS that provides the notifications or keeps the audio playing - not the app - the app itself is frozen in memory (and removed from memory completely if the OS needs to free up some RAM).
    I've been up for about 4 hours and my phone has dropped from 83% to 16%
    Yes, that's almost certainly one of the many negative side effects of jailbreaking. Read: http://support.apple.com/kb/HT3743
    Unfortunately, as you've jailbroken your phone, we can't provide you with any further help as we have no idea what unauthorized modifications you have made to the OS to make it function differently.

  • How can we find out when master data was activated

    Hello Friends,
    We are loading master data for one info object directly from R3 to Info Object without PSA.
    1) The Request Green in RSMO only tells that data is loaded successfully but it does not give any information about Activation is that right ?
    2) How can i find out histroy of when one particular Info Object( Master data ) is activated? any tables or tcodes ?
    Thanks
    Tony

    hi,
    1) The Request Green in RSMO only tells that data is loaded successfully but it does not give any information about Activation is that right ?
    Ans- yes it give loading details only.
    2) How can i find out histroy of when one particular Info Object( Master data ) is activated? any tables or tcodes ?
    ans -in SM37 chk any attribute change run is completed , else in RSA1 Tools -> apply attribute change and hierarchy -> you can see the finished and scheduled job.
    also u can chk the master data table for any M version records is available.
    Ramesh

  • Displaying calculated field only when data exist

    Hello,
    Is there a way to display my calculated value only when the data entry field is being used. For instance, if I have several fields vertically aligned, I don't want to display a bunch of zeros if their data fields are not being used.
    THANK YOU!!!!

    You can check for the rawValue in the Calculate event before any script.
    Event: Calculate
    //FormCalc
       if(Field1.rawValue ne null) then
         // write your script here
       endif
    //JavaScript
    if(this.rawValue != null){
       // write your script here
    Thanks
    Srini

  • Query Governor - Summary Data - Only when not out of date?

    In Oracle Discoverer Desktop edition the user can choose how Summary Data are used:
    1. Always, when available
    2. Only when summary data are not out of date (stale)
    3. Never
    What exactly is the meaning of "Only when summary data are not out of date"?
    In previous versions of Discoverer you had the opportunity to specify how old (in days) summary tables were acceptable to you.
    (By the way: In the Danish translation of Discoverer the word "not" has been omitted, so you have the opportunity to use summary data only when they are out of date :-)
    Best regards
    Torben

    Actually it doesn't matter if you have Applecare or not because Apple simply isn't recognizing this as an issue even though multitudes of people have experienced it. If they don't see it as a problem, then they obviously don't have a solution, and so taking your laptop in through apple care is totally useless.
    I've talked to 3 customer support representatives over the phone and they all said they were 'unaware of the issue' and would not even attempt to help. It's very disappointing.

  • How to hide buttons when no data found!!

    Hi All,
    I have created two regions
    1. Serach region
    2. Results region.
    Initally when the page loads by using hidden vaiable i am bale to hide the "results regions" once they clik on that serach button i am displaying the region of results region along with teo more buttons as "export" and "print" buttons.
    It is showing fine when data exists under Reulst region.
    But when no data is return i am displaying the message as "No data found" but along with this it is displaying "export" and "print" buutons.
    This buttons needs to display only when the data exists under Results region.
    Thanks,
    Anoo..

    abhishek8299 wrote:
    Use SQL (Exists) in the condition and write an sql statement there.use this
    SELECT
    1
    FROM form1 MF,bench1 BM,
    participant1 PP,key1 KT
    WHERE MF.ENGAGEMENT_ID=BM.ENGAGEMENT_ID
    AND BM.ENGAGEMENT_ID =PP.ENGAGEMENT_ID
    AND PP.ENGAGEMENT_ID =KT.ENGAGEMENT_ID

  • Total for line data

    Hi All,
    We are using BW 3.5 and SAP R/3. Data for sales is updated in BW as line data.
    Plant Bill Till Article NetAmt
    1      1     1    a        10
    1      1     1    b        15
    1      1     2    c         20  
    2      1     1    c         20
    3      1     1    a         10
    Now we want
    Plant Bill Till NetAmt
    1        1    1     25
    2        1    1     20
    3        1    1     10
    1        1    2     20
    How to add line data while loading? 
    Thanks
    Regards: Gaurave

    I'm not sure if you still need the answer to this:
    - You would add a new Net Total key figure to your Info Provider.
    - Create an start routine to calculate your total per your key (Plant, Bill, Till, total).  Use a collect statement to calculate subtotals.
    - In your update rules, read the internal table based on the key (Plant, Bill, Till) from the comm_structure.
    Hope this help.  Please assign points if it does.
    - Rudy

  • Can we execute the Reporting while the data is loading into that ODS/Cube.

    Hi Friends,
          Can we execute the reports on particular ODS/InfoCube in the following cases
    1) When the data is loading into that ODS/Infocube.
    2) When we are Archiving the data from that ODS/Infocube
    Thanks & Regards,
    Shaliny. M

    Hi Shaliny,
    First of all you are in the wrong forum, in Business Intelligence Old Forum (Read Only Archive) you will find better support.
    In case you are loading data in an infocube you will be able to have report only until the request that has the icon ready for reporting filled. In case of an ODS object i don't think you will be able to have valid reporting since the ODS data firstly needs to be activated.
    Nevertheless please post your question in the above link.
    Kostas

Maybe you are looking for