API and transactional ODS
Can anyone tell me how I can use API for transactional ODS?
Thanks
Hi,
use tcode SE37 and search for BAPI_ODSO*
/manfred
Similar Messages
-
Difference between standard ods and transaction ods
hi experts make this answer
Transactional ODS Object
Definition
A transactional ODS object differs from a standard ODS object in the way it prepares data. In a standard ODS object, data is stored in different versions (active, delta, modified), whereas a transactional ODS object contains the data in a single version. Therefore, data is stored in precisely the same form in which it was written to the transactional ODS object by the application. In BW, you can use a transaction ODS object as a data target for an analysis process. You can find more information under Analysis Process Designer.
The transactional ODS object is also required by diverse applications, such as SAP Strategic Enterprise Management (SEM) for example, as well as other external applications.
Use
Transactional ODS objects allow data to be available quickly. The data from this kind of ODS object is accessed transactionally, that is, data is written to the ODS object (possibly by several users at the same time) and reread as soon as possible.
It offers no replacement for the standard ODS object. Instead, an additional function displays those that can be used for special applications.
Structure
The transactional ODS object simply consists of a table for active data. It retrieves its data from external systems via fill- or delete- APIs. Refer to ODS Data and External Applications.
The loading process is not supported by the BW system. The advantage to the way it is structured is that data is easy to access. They are made available for reporting immediately after being loaded.
http://help.sap.com/saphelp_nw04/helpdata/en/c0/99663b3e916a78e10000000a11402f/frameset.htm
Regards
Anujit Ghosh -
Report on standard ODS object and transactional ODS object
hi gurus
i have an infoset which is built on two transactional ODS objects and one standard ODS object which gets the data on regulr schedule. the transactional ODS obejcts get the user entered data.
when i query on the infoset, i am getting the data. and when i query on the standard ODS object i am getting the data. but when i am trying to create a query on the combination of the Infoset and the ODS object i am not getting the data.
is there any way to generate report on the standard ods object and Infoset from transactional ods objects.
your help will be greatly appreciated.
thanks in advance
vijaykumarHello ViJaY,
how r u ?
Try creating a MultiProvider with the Standard ODS and InfoSet.
Best Regards....
Sankar Kumar -
Scalability with Collections-API and transactions
I'm using the BerkeleyDB such that a visualization which depends on some computations scales even if I just use the saved items to prune the underlying tree (a SunburstView).
Now I have just implemented the BerkeleyDB binding and use the Collection-API. I'm running a transaction after a specified amount of items have been appended to a List to save the list in a database:
<pre>
/** {@inheritDoc} */
@Override
public void diffListener(final EDiff paramDiff, final IStructuralItem paramNewNode,
final IStructuralItem paramOldNode, final DiffDepth paramDepth) {
mDiffs.add(new Diff(paramDiff, paramNewNode.getNodeKey(), paramOldNode.getNodeKey(), paramDepth));
mEntries++;
if (mEntries == AFTER_DIFFS) {
try {
mRunner.run(new PopulateDatabase(mDiffDatabase, mDiffs));
} catch (final Exception e) {
LOGWRAPPER.error(e.getMessage(), e);
mEntries = 0;
mDiffs = new LinkedList<>();
/** {@inheritDoc} */
@Override
public void diffDone() {
try {
mRunner.run(new PopulateDatabase(mDiffDatabase, mDiffs));
} catch (final Exception e) {
LOGWRAPPER.error(e.getMessage(), e);
mStart.countDown();
</pre>
Now I think about what's the right value for transactions? AFTER_DIFFS is currently set to 100 which means everytime the List has 100 elements it's saved in a database within a transaction and a new instance is created. I currently don't have time to empirically measure certain values, but maybe one can get a suggestion which might be a good value or if it really depends? I'm persisting a rather small Object with two long values, an enum (with just a few values and no methods) and another small Object with 2 int values, if that's of significance.
I think the transaction is bound to the current thread, maybe it would be also good to use an ExecutorService with a single thread and let the transaction, the Runner.run(TransactionWorker); run in this thread?
best regards,
JohannesI changed the database to a temporary database, but I'm getting a horrible read-performance (with and without the temporary database setting). I thought the database wouldn't be persisted if the data isn't too big.
Some debugging output is:
02:13:53.906 [pool-4-thread-1] DEBUG o.t.g.view.model.TraverseCompareTree - stats: I/O: Log file opens, fsyncs, reads, writes, cache misses.
bufferBytes=3,145,728
endOfLog=0x0/0x439
nBytesReadFromWriteQueue=0
nBytesWrittenFromWriteQueue=0
nCacheMiss=0
nFSyncRequests=0
nFSyncTimeouts=0
nFSyncs=0
nFileOpens=0
nLogBuffers=3
nLogFSyncs=0
nNotResident=0
nOpenFiles=0
nRandomReadBytes=0
nRandomReads=0
nRandomWriteBytes=0
nRandomWrites=0
nReadsFromWriteQueue=0
nRepeatFaultReads=0
nSequentialReadBytes=0
nSequentialReads=0
nSequentialWriteBytes=0
nSequentialWrites=0
nTempBufferWrites=0
nWriteQueueOverflow=0
nWriteQueueOverflowFailures=0
nWritesFromWriteQueue=0
Cache: Current size, allocations, and eviction activity.
adminBytes=153
avgBatchCACHEMODE=0
avgBatchCRITICAL=0
avgBatchDAEMON=0
avgBatchEVICTORTHREAD=0
avgBatchMANUAL=0
cacheTotalBytes=8,265,140
dataBytes=5,118,941
lockBytes=318
nBINsEvictedCACHEMODE=0
nBINsEvictedCRITICAL=0
nBINsEvictedDAEMON=0
nBINsEvictedEVICTORTHREAD=0
nBINsEvictedMANUAL=0
nBINsFetch=343
nBINsFetchMiss=0
nBINsStripped=0
nBatchesCACHEMODE=0
nBatchesCRITICAL=0
nBatchesDAEMON=0
nBatchesEVICTORTHREAD=0
nBatchesMANUAL=0
nCachedBINs=234
nCachedUpperINs=8
nEvictPasses=0
nINCompactKey=2
nINNoTarget=0
nINSparseTarget=8
nLNsFetch=686
nLNsFetchMiss=0
nNodesEvicted=0
nNodesScanned=0
nNodesSelected=0
nRootNodesEvicted=0
nThreadUnavailable=0
nUpperINsEvictedCACHEMODE=0
nUpperINsEvictedCRITICAL=0
nUpperINsEvictedDAEMON=0
nUpperINsEvictedEVICTORTHREAD=0
nUpperINsEvictedMANUAL=0
nUpperINsFetch=343
nUpperINsFetchMiss=0
requiredEvictBytes=0
sharedCacheTotalBytes=0
Cleaning: Frequency and extent of log file cleaning activity.
cleanerBackLog=0
fileDeletionBacklog=0
nCleanerDeletions=0
nCleanerEntriesRead=0
nCleanerRuns=0
nClusterLNsProcessed=0
nINsCleaned=0
nINsDead=0
nINsMigrated=0
nINsObsolete=0
nLNQueueHits=0
nLNsCleaned=0
nLNsDead=0
nLNsLocked=0
nLNsMarked=0
nLNsMigrated=0
nLNsObsolete=0
nMarkLNsProcessed=0
nPendingLNsLocked=0
nPendingLNsProcessed=0
nRepeatIteratorReads=0
nToBeCleanedLNsProcessed=0
totalLogSize=1,074
Node Compression: Removal and compression of internal btree nodes.
cursorsBins=0
dbClosedBins=0
inCompQueueSize=0
nonEmptyBins=0
processedBins=0
splitBins=0
Checkpoints: Frequency and extent of checkpointing activity.
lastCheckpointEnd=0x0/0x396
lastCheckpointId=1
lastCheckpointStart=0x0/0x16c
nCheckpoints=0
nDeltaINFlush=0
nFullBINFlush=0
nFullINFlush=0
Environment: General environment wide statistics.
btreeRelatchesRequired=0
Locks: Locks held by data operations, latching contention on lock table.
nLatchAcquireNoWaitUnsuccessful=0
nLatchAcquiresNoWaitSuccessful=0
nLatchAcquiresNoWaiters=0
nLatchAcquiresSelfOwned=0
nLatchAcquiresWithContention=0
nLatchReleases=0
nOwners=2
nReadLocks=2
nRequests=686
nTotalLocks=2
nWaiters=0
nWaits=0
nWriteLocks=0
Seems it hasn't got any cache misses at all and the other values seem to be ok, too?
best regards,
Johannes -
Problems with environments and transactional mode in the Python API
Hello everyone,
I have been having problems with the Python API, and I wonder if anyone can comment? I am using DB XML version 2.2.13, with python 2.3 (RedHat linux WS 4.0) and python 2.4 (SuSE 10.1) with identical results. I started with a simple example:
#!/usr/bin/python
"""XPath example from http://www.w3schools.com/xpath/default.asp
ported to DbXML
from bsddb3.db import *
from dbxml import *
books = """<?xml version="1.0" encoding="ISO-8859-1"?>
<bookstore>
[xml data omitted for brevity]
</bookstore>"""
if __name__ == "__main__":
conFlags = DB_CREATE | DB_NOMMAP
myMgr = XmlManager()
myMgr.setDefaultContainerFlags(conFlags)
myMgr.setDefaultContainerType( XmlContainer.NodeContainer)
uc = myMgr.createUpdateContext()
container = myMgr.createContainer("books.dbxml")
container.putDocument("books.xml", books, uc)So far, so good - this works, and creates a container books.dbxml that I can open and query. Next, I try to instantiate the XmlManager using an environment:
if __name__ == "__main__":
envFlags = DB_CREATE | DB_PRIVATE
conFlags = DB_CREATE | DB_EXCL | DB_NOMMAP
myEnv = DBEnv()
myEnv.open("/home/pkeller/dbxml_tests", envFlags, 0)
myMgr = XmlManager(myEnv, DBXML_ADOPT_DBENV)
myMgr.setDefaultContainerFlags(conFlags)
myMgr.setDefaultContainerType( XmlContainer.NodeContainer)
uc = myMgr.createUpdateContext()
container = myMgr.createContainer("books.dbxml")
container.putDocument("books.xml", books, uc)This fails with the following output:
Traceback (most recent call last):
File "w3school_xpath_c2.py", line 60, in ?
container = myMgr.createContainer("books.dbxml")
File "/scratch_bernoulli/pkeller/dbxml/install/lib/python2.3/site-packages/dbxml.py", line 125, in createContainer
def createContainer(*args): return dbxml.XmlManagercreateContainer(*args)
RuntimeError: Error: Invalid argument
Segmentation faultA bit odd - I can't find anything in the docs about the required arguments to XmlManager.createContainer being different if an environment has been used explicitly.
Anyway, I persevered (my aim being to use transactional mode in Python). Changing the environment and container flags like so:
envFlags = DB_CREATE | DB_INIT_LOCK | DB_INIT_LOG | DB_INIT_MPOOL | DB_INIT_TXN | DB_PRIVATE
conFlags = DB_CREATE | DB_EXCL | DBXML_TRANSACTIONAL | DB_NOMMAPThis change allowed the script to run, outputting the single classic line:
Segmentation fault(the C++ API docs at http://www.sleepycat.com/xmldocs/gsg_xml/cxx/transaction.html#initializetransaction are incorrect by the way - there is no flag DB_TRANSACTIONAL).
In spite of the segfault, the file "books.dbxml" was produced and could be queried by another application. A transaction log file "log.0000000001" was also written (10485760 bytes long).
Running this last example again with "python -v" showed that the segfault was being produced during the python's cleanup phase:
# clear __builtin__._
# clear sys.path
# clear sys.argv
# clear sys.ps1
# clear sys.ps2
# clear sys.exitfunc
# clear sys.exc_type
# clear sys.exc_value
# clear sys.exc_traceback
# clear sys.last_type
# clear sys.last_value
# clear sys.last_traceback
# clear sys.path_hooks
# clear sys.path_importer_cache
# clear sys.meta_path
# restore sys.stdin
# restore sys.stdout
# restore sys.stderr
# cleanup __main__
Segmentation faultCan anyone clarify what is going on? I had been hoping to deploy DB XML as an alternative to something more admin-heavy, but with this behaviour that would be hard to justify. A dirty exit from Python means that no-one will consider trusting their data to this engine (or am I doing something wrong?).
Regards,
Peter.Peter,
Your first failure -- invalid argument -- was due to an invalid combination of
flags to DBEnv.open(). Along with DB_CREATE you need at least DB_INIT_MPOOL.
As you can see, it worked once you added more flags.
The second, cleanup problem (segmentation fault) is the result of out of order
destruction of objects. This is fixed in the next release (later this year), but
you can work around it by ensuring that your XmlContainer and XmlManager
objects are deleted/cleaned up before the DBEnv object.
Python will cleanup in reverse order of creation, unless you perform explicit
deletions, which is also fine (e.g. del container, del myMgr).
Explicit deletion is always safe.
Regards,
George -
How to see data in a transaction ODS
Hi all,
I am populating data into my Transactional ODS through the function module RSDRI_ODSO_INSERT_RFC . But not able to see the data in it. as there is no manage option to the ODS. and by default an export datasource is created for the ODS. do i have to create one more standard ods and use this export datasource as update rules and see the data?
Please let me know how to see the data. and also and detail document on Transaction ODS?.Hello Satish,
Data loaded through Planning Application eg. In Transactional ODS will not have manage option or request. You can view the data using following methods.
Since transactional ODS objects cannot be filled with BW data using staging (data is not supplied from the DataSources), they are not displayed in the Scheduler or in the Monitor. Transactional ODS objects can therefore not be updated in the same way as standard ODS objects.
If you switch a standard ODS object that already has update rules available to a transactional one, the update rules are set as inactive and are no longer processable.
As no change log is generated, no delta update of data stored at the end of the process is possible.
You cannot set the indicator for BEx Reporting when creating a transactional ODS object.
1.) In order to report this, you can create an InfoSet and then execute a BEx query for it.
2) You can also download the data from your transactional ODS object using the download function. You can find this function in the administration of the ODS objects, Tab Page Contents -> Active Data. Choose Execute to display the data. Using the main menu Edit -> Download, you can download the data in different formats.
Hope it helps.
San. -
Hi All,
I want to write a query on a multiprovider built on two transactional oDS.
The first transactional ODS will have :
1. Material
2. Avg rating
The secong transactional ODS will have:
1. Material
2. Vendor
3. Avg rating
Now, I want to build a MP on these two ODS' where the report should have:
1. Material
2. Vendor
3. Rating
4. Rating as a % of Avg rating
How can I do it?Hi Ravi,
I made a mistake in the specification.
The first transactional ODS has:
1. material
2. Average rate
The second ODS acyually has:
1. material
2. vendor
3. rate
Finally what I want to calculate on the MP is:
vendor, material, rate and rate as % of average rate
Please suggest.
Regards,
Sharmishtha -
Why cant we Report on transactional ODS directly?
Hi Pioneers
could any one let me know the reason why we cant report on Transactional ODS directly?Why should we create an infoset for that purpose.Whats the reason?
BR
RaviHI Ravi
You cannot set the indicator for BEx Reporting when creating a transactional ODS object. In order to report this, you can create an InfoSet and then execute a BEx query for it.
hope it helps
regards
AK
thnaks=points
check this link
http://help.sap.com/saphelp_nw04/helpdata/en/c0/99663b3e916a78e10000000a11402f/content.htm
regards
AK
Message was edited by:
A K -
Where we can use standard ODS Object and Trasactional ODS Object ?
Where we can use standard ODS Object and Trasactional ODS Object ?
Hi,
In a standard ODS object, data is stored in different versions (active, delta, modified), whereas a transactional ODS object contains the data in a single version. Therefore, data is stored in precisely the same form in which it was written to the transactional ODS object by the application. In BW, you can use a transaction ODS object as a data target for an analysis process. The transactional ODS object is also required by diverse applications, such as SAP Strategic Enterprise Management (SEM) for example, as well as other external applications.Transactional ODS objects allow data to be available quickly. The data from this kind of ODS object is accessed transactionally, that is, data is written to the ODS object (possibly by several users at the same time) and reread as soon as possible.
It offers no replacement for the standard ODS object. Instead, an additional function displays those that can be used for special applications.
Regards,
R.Ravi -
APD Query populating Transactional ODS
Hi ,
1) How do we find out if a Transactional ODS is populated by an APD Query. Where will this information be mentioned?
2) If we dont know the name of the APD Query, but we know the transactional ODS, can we find out the APD query name.
3) Is an APD Query created like a normal query?
4) If we know the name of the APD Query, then where do we go and check it?Hi,
You can chek the APD using Tcode RSANWB. Check your particular APD and dbl click on that you will get all information where it is picking and where the data populating.
check this
https://www.sdn.sap.com/irj/servlet/prt/portal/prtroot/docs/library/uuid/96939c07-0901-0010-bf94-ac8b347dd541
and sap help
http://help.sap.com/saphelp_nw2004s/helpdata/en/39/e45e42ae1fdc54e10000000a155106/frameset.htm
and service.sap.com/bi
https://websmp206.sap-ag.de/~form/sapnet?_SHORTKEY=01100035870000585703&
The SAP course that covers APD is BW380 - SAP Business Intelligence: Analysis Processes
Check this link:
http://help.sap.com/saphelp_nw04/helpdata/en/49/7e960481916448b20134d471d36a6b/frameset.htm
Reg
Pra -
Hi Friends,
My Requiement is to create a Info Set on Tannsactional ODS and On this info set i have to create a Bex Query.
If i creata a Query on this info set whether we can get all the query properties like currency conversion etc as for the query created on noramal info set which is created on standard ODS.
Looking for more suggessions and answers.
Thanks in advance.Hi Ashok,
Thanks for the immediate replay.
Hear i have to do a lenthi process before doing that ,i an looking for some b'dy who has worked on currency conversions at query level whcih are developed on infosets(i.e on Transactional ODS).
Once again thanks for the usefull answer.
Laxman -
Vendor evaluation Transactional ODS
Hi all,
I need follwoing information with respect to supplier evaluation, pulling the data from SRM:
1) what is the differnce between the ODS 0SRVE_O4 and 0SRVE_O2?
2) what is the differnce betwwen the ODS 0SRVE_O3 and 0SRVE_O1?
3) How and when can we use the transactional ODS 0SRVE_O1 and 0SRVE_O2?
If anybody has worked on these ODS in any of the project, please share the experience of it and how to go about these transactional ODS, in the terms what is the utility of these transactional ODS.
Thanks and Regards,
NehaHi Neha,
Please check the following link, it will provide detailed information on all these ODS.
http://help.sap.com/saphelp_nw70/helpdata/en/f0/3abab39e044d41b8a553136d5ff2f4/frameset.htm
Usually for vendor evaluation ODS 0SR_VE and infocube 0SR_VE_C1 is enough to take care of the requirements. However, it depends on the business requirement whether you have to go for transactional ODS. The transactional ODS enrich the data of vendor evaluations by capturing the data from GRs etc.
Hope this information helps.
Please let me know in detail about your requirement so that I can help you.
Regards,
Sreenivas. -
How to Create Transactional ODS in BI 7.0
Hi Experts,
What is Transactional ODS(3.5) in BI 7.0 ( when i am creatin DSO,i got 3 options Standard,direct,overwrite) which one i should select .
Regards
SidhuHi,
Transactional ODS is now Direct update DSO in BI 7.0 and contains only active data table
Direct update DSO
http://help.sap.com/saphelp_nw04s/helpdata/en/c0/99663b3e916a78e10000000a11402f/content.htm
Transactional oDS
Thanks,
JituK -
How to store data in NON -Transactional ODS
Hi,
for reporting reasons I wish to store data in non-transactional ODS. Reading in this forum I found only the standard fm 'RSDRI_ODSO_MODIFY' but this fm is used only for transactional ODS.
Any suggestions?
Thanks in advance.
Regards,
GiovanniFirst of all, many thanks for the quick reply.
To focus on my problem I have the necessity to realise what it is detailed in a document at this url:
https://www.sdn.sap.com/irj/sdn/go/portal/prtroot/docs/library/uuid/60938938-de6f-2910-2080-fc80d38ebfec
Working in SEM environment I have the necessity to handle text field in a non-transactional ODS for reporting without using an InfoSet.
Observing the exceptions raised by calling the fm 'RSDRI_ODSO_MODIFY' it is possible to find the ODS_TYPE_NOT_TRANSACTIONAL showing that a non-transactional ODS is not handled.
I hope to have explained my intention and my problem and I'm confident to receive your support.
Thanks.
Giovanni -
The sequence of mater data and transaction loading...
Hi all,
I have 2 questions as follow:
Q1. usually say that loading master before transaction data, but if some problem cause the master data loading fail, and transaction loading is successful, any troubles ?
Q2. In settings of ODS, if the item "BEx reporting" was checked, BW will maintain SID of master data, does it mean that BW will add new records into SID table only or both of master data table(e.g. P, Q tables) and SID table in case of new master data determined? For cube, is there similar situation?
Thanks a lotHi Ryan.
A1: There may or may not be problems depending on what the transactional data does as it is loaded. The load itself can be set to fail if master data does not exist already. If this setting is turned off, then there are few possibilities. If there is a straight transactional data load wihout any special lookups, the system will automatically create master data SIDs for the missing values. If a user then runs a query, they may not see any attributes or texts associated with the master data. However, if there are some lookups or master data attributes are written into the InfoCube, then there will be problems as these values are not in master data (due to the load failure). This will cause the data in the InfoCube to be incorrect.
A2: You are correct, BW will automatically create SID table entries for this case. This allows the OLAP engine to run queries on the data. There is nothing special produced in the P or Q tables unless you haev a special routine built to do that. As for the InfoCubes, SIDs are always created. The system presumes that since InfoCubes should have only data related to reporting, then all fields should be reportable and thus have SIDs.
Regards,
Adam
Maybe you are looking for
-
I have used Firefox for a number of years but some time ago I got a virus on my computer. I loaded eset nod32, removed the virus and cleaned the old files etc. using ccleaner.com. Now I keep getting the "The connection to the server was reset while t
-
Most of my music has been deleted from my phone!
Hi All I don't know why but recently most of the music on my iPhone 5 was deleted by iTunes! Luckily it did not delete the original files from my PC. At this point I would like to understand why this happened if anyone knows. Also when I look at the
-
No close, restore and minimize buttons when Firefox 4 is maximized with Win 7 Aero
Since upgrading to FF 4.0, I have had some weird behaviour with the top taskbar, transparency, and close/restore/minimize. When I maximize the FF window, I see the top sectino ofthe application window (with FF menu), then address bar, then bookmarks
-
Hi Just recently recieved my Iphone 4 back from my insurance company that they had to repair (reciever issue) and with this a new problem has appeared. Doesnt seem to matter what im doing on it but my phone now randomly turns off, Apple logo instantl
-
[Sorry for the last post with incomplete title] Hello everyone I am writing a program in Java that analyzes color patches from a colorimeter. Unfortunately, I am not quite sure how to use the related Java routines. That is, to read in the measuered d