COMMIT in Triggers?
Do I need to put COMMIT in DML Triggers?
I cannot find any references about it in documentation.
I found this
Restrictions:
The PL/SQL block of a trigger cannot contain transaction control SQL statements (COMMIT, ROLLBACK, SAVEPOINT, and SET CONSTRAINT) if the block is executed within the same transactionAt this URL
http://technet.oracle.com/docs/products/oracle9i/doc_library/901_doc/server.901/a90125/statements_76a.htm#2063897
No - you can NOT have a commit or rollback in a trigger.
eric
Similar Messages
-
Dear Friends,
I want to update the amount of the master table with the sum of all transaction records which consists of hundreds of records per a session.
I have create a temporary table, and at the point of the commit i wants to update the master table at once..
could i write a trigger for tempory table to fire on commit.
regrds
upul Indika.To immediately answer your question, you should be able to use an after insert/update trigger. After reading the post again, I am not sure I really understand your structure. Does your master table hold the transactions and you also want to update the records with a the sum of all transactions or do you have a master table that only holds the summed values and another table (the temporary one you speak of) that holds the transactions.
As a general principle, it is not a good idea in a non-data warehouse scenario (my assumption that it is a transaction scenario) to store summed values in a table. It is much better to create a view that contains the summed amount along with any other master data. One reason for this is that you are performing the sum function each time a transaction happens but you really only need to summed amount when you actually need it (query, report, etc). Also, keeping a summed value requires you to write a bunch of code to handle an insert in the transaction table, a update to the transaction table, and a delete from the transaction table. -
Transactional triggers and commit processing
I have only been an active member of this thread for a couple of weeks and have tried to contribute to a few postings. But I have also noticed lots of postings relating to the use of DML statements inside what I would call non commit time triggers.
What I mean here is, for example, a WHEN-BUTTON-PRESSED trigger that does inserts, updates, deletes, followed by the COMMIT_FORM procedure.
I thought it might be useful to draw attention to the possible pitfalls of this approach. I'm not saying that this approach is wrong - far from it, but sometimes it means that people aren't leveraging the functionality that you get "for free" from Forms.
By coding some DML followed by a Commit_Form, you are not getting any rollback functionality from Forms. For example:
INSERT INTO A
INSERT INTO B
COMMIT_FORM;
Let's imagine that the insert into A worked but the insert into B failed for some reason. The user gets an unhandled exception. Now imagine that the cause of the error is cleared up, and the user presses the button (or whatever the invokation action was) again, and the commit works. You will have 2 records in A and 1 in B. You may not have expected that, and without coding your own rollback/savepoint that's what you would get.
You also (1) don't get a Working... message without coding it yourself, and (2) get the "No changes to commit" message; removing this is the subject of many threads on this site.
If you have a block which is based over a table which you need to update, then all of the DML statements ought to be coded inside PRE/POST/ON INSERT/UDPATE/DELETE statements, or other Forms transactional triggers (pre-database-commit etc..). If you need to change other tables then put the DML for them inside those triggers. Then you don’t have to worry about which records the user changed – if the user didn’t touch them then Forms won’t fire the triggers. And when you call the COMMIT_FORM procedure, Forms will fire the triggers for you and if any of them fail, it will rollback back to where the COMMIT_FORM started.
An example in 1 thread I saw this morning, was a Delete button, which was to delete the current record in a multi-record block. This button performed the “DELETE FROM <table> WHERE <key=:block.key>” followed by a Commit. Then of course the block needed to be re-queried to reflect the fact that the record had gone. Using the power of Forms to simply call the DELETE_RECORD procedure would have achieved the same result without needing to requery the block. And Forms would do the delete by ROWID, the fastest way of doing it.
If you don’t have a block based over a table, then you can consider creating a dummy block which uses Transactional Triggers. Code an ON-INSERT on that block which includes the DML you want to execute. Then in the trigger initiating the commit processing you would do something like:
:DUMMY_BLOCK.ITEM1 := ‘X’;
COMMIT_FORM;
IF (NOT FORM_SUCCESS) OR :SYSTEM.FORM_STATUS != ‘QUERY’ THEN
-- the commit failed
END IF;
Then you’ll get a nice Working.. message and full rollback control.
I think the moral of what I’m trying to get across is to use the power of Forms in the way it handles the transactions. Whilst we moan about it, it is actually quite good at that!
I hope this posting is taken in a positive light, I am certainly not trying to teach anyone to “suck eggs”.
PS. I find it ironic that you were prevented from coding DML statements outside of commit time triggers, in Forms 2.3!Thank you, Kevin. Very informative.
-
FM: VHURM_HUBACKFLUSH_POST - External Commit
Dear all,
I use the FM VHURM_HUBACKFLUSH_POST in a program for production reporting. I want to backflush a bunch of HU´s corresponding to transaction MFHU (the import parameter P_SHOW_PROTOCOL is initial).
Furthermore I want to check if the backflush of all HU´s at once has been posted succesfully after the processing of the FM.
If the the backflush of all HU´s was successful make a commit if the backflush of at least one HU failed make a rollback for all HU´s to be backflushed and give the user an error message.
The issue is that the FM itself already triggers a commit internally.
Within the FM VHURM_HUBACKFLUSH_POST the FM RM_BACKFLUSH_GO is called which includes the subroutine backflush_end. This routine has the parameter am61b_ext_commit which controls if the commit should be triggered outwith the fm or not. I set this parameter in the debug mode and it worked. No backflush was executed until the commit was triggered by the calling program.
My question is now: Is it somehow possible to set this parameter outwith the FM VHURM_HUBACKFLUSH_POST already in the calling program? Any other ideas are also welcome.Hi,
After calling the FM, try putting code like below.
IF sy-subrc = 0.
SUBMIT rsconn01 WITH mode = 'INT'
WITH output = space
AND RETURN.
ENDIF. -
Potential problems with using a report to run a commit in a separate LUW.
I am working with a classic Badi within a transaction where I wanted to commit some information to a database before the commit that occurs at the end of the transaction.
Putting a commit point directly inside the BADI caused problems with cursors that were open inside the transaction, so I researched some and discovered that Report Programs can run in a separate database Logical Unit of Work (LUW).
I coded my BADI to call a report which does some database work based on input parameters, and then commits this work to the database before returning control back to the calling BADI function.
Does anyone know of any potential problems from doing this? It seems like a good way to get around restrictions on the use of commit points inside transactions, but I'm not sure if there could be potential undesired effects from doing this.
Has anyone tried this before?Hi Clay,
Yes I did it too. We faced some issues with commit when using fm HR_INFOTYPE_OPERATION . We had to enclose it in separate report which only then let us do physical change in DB.
What is to be noticed here as well is (according to SAP) that DB commit is triggered each time work process is released which happens when:
- system shows dialog message
- RFC call is executed
- new transaction is called
The above however didn't work for me in couple cases, but using separate SAP LUW solves the problem (as you already read). This happens each time:
- new report is called (SUBMIT ...),
- new transaction is called (CALL TRANSACTION ...)
- new asynchoronus RFC call is executed (CALL FUNCTION...STARTING NEW TASK).
This approach works fine for cases I met and had to overcome with such solution. So far we didn't face any issues with that. Works perfectly
Regards
Marcin -
I'm getting this error in an After Insert trigger. This trigger is calling a stored procedure which is trying to reindex using "alter index myindex rebuild". This index is on the same table as the trigger.
Also, where and how can I find information on errors returned by Oracle..
Thanks in advance, Newbee Jerry
nullHi Jerry , you can't put commit on triggers because the trigger will be part of one Transaction and this transaction won't finish until every triggers are finished. If you put a commit in one trigger you are forcing a "end of transaction " and this is not correct because you don't know if the transaction realy termineted. With this concept you can't do anything that has a commit in any trigger .
See you ,
Lourival -
I deployed an EJB Stateless and Container_Managed into 8i 8.1.7.
The bean contains a method with a simple SQLJ insert statement and works fine, except for no commit is triggered by the Bean Container when method call is finished.
I can see that the insert was done, because the counter for my table is increased!
So the fault has to be that there is no commit!
Why does the Bean Container not commit, as it states in the EJB Online Documentation??Is it NT or solaris 8.1.7 ?
On solaris it should have worked. On NT it wouldn't work, unless you explicitly lookup
the datasource and do a ds.getConnection(), the container doesn't know what to commit. In general, hereafter, the bean code needs to explicitly lookup datasources and call getConnection() on the datasource so that the datasource is enlisted. Using the default kprb connection isn't going to work unless you explicitly set default-enlist tag to true in the XML deployment descriptor. -
Audit Trail on R12.1 (shadow table concept)
I want to enable Audit Trail at table (column) level. Though I got response from Oracle Support but at present I am stuck on particular error. Here are the steps which I followed:
1. Apply latest Patch 12860752:R12.FND.B - Latest Audit Trail Fixes for post 12.1.3.
2. Enable Audit Trail on a table : I have set this for "PER_PEOPLE_F" tables of HR module
a. (R)System Administrator, (N) Profile -> System
Query Profile: 'AuditTrail:Activate'. Click FIND
Set it to 'Yes' at Site level.
b) Enable Audit Installations (HR)
-- Got System Admin: Security:AuditTrail:Install
-- Enable Audit Installation for HR
c) Define Audit tables and desired columns.
-- Got System Admin: Security: Audit Trail: Tables
-- Query for user table name 'PER_PEOPLE_F' and add columns on which enable trail
d) Define an Audit Group and associated tables
-- Got System Admin: Security: Audit Trail: Groups
-- Create Audit group for table defined in 'C'
e) Run Concurrent program 'AuditTrail Report for Audit Group Validation' with parameter as that of Audit Group.
f) Define an Industry Template contain Audit Group
-- Got System Admin: Security: Audit Trail Reporting: Audit Industry Template
g) Run concurrent program "AuditTrail Update Tables".
Now, I am facing challenge at point (g), as, the concurrent request "AuditTrail Update Tables" is completing with error.
And I am not able to proceed further.
****Log file shows as:****
Application Object Library: Version : 12.0.0
Copyright (c) 1979, 1999, Oracle Corporation. All rights reserved.
FNDATUPD module: AuditTrail Update Tables
Current system time is 02-APR-2013 01:02:32
----->Expand Rows
INSERT INTO FND_AUDIT_COLUMNS (TABLE_APP_ID, TABLE_ID,COLUMN_ID,STATE,SEQUENCE_ID, SCHEMA_ID, LAST_UPDATE_DATE,LAST_UPDATED_BY, LAST_UPDATE_LOGIN,CREATED_BY,CREATION_DATE) VALUES ( 800, 53506, 135906, 'P', -1, 900, SYSDATE,0,0,0,SYSDATE)
UPDATE FND_AUDIT_TABLES T SET T.STATE = 'P' WHERE T.TABLE_APP_ID = 800 AND T.TABLE_ID = 53506
commit
commit
DELETE FROM FND_AUDIT_TABLES WHERE STATE = 'X'
DELETE FROM FND_AUDIT_COLUMNS C WHERE C.STATE = 'P' AND NOT EXISTS (SELECT NULL FROM FND_AUDIT_TABLES T WHERE T.TABLE_APP_ID = C.TABLE_APP_ID AND T.TABLE_ID = C.TABLE_ID AND T.STATE !='X')
----->Update Pending Columns
----->Adding ROW_KEY
**Starts**02-APR-2013 01:02:54
**Ends**02-APR-2013 01:02:57
----->Alter Shadow Table
ALTER TABLE PER_ALL_PEOPLE_F_A ADD (FULL_NAME VARCHAR2(240))
ALTER TABLE PER_ALL_PEOPLE_F_A ADD (FULL_NAME VARCHAR2(240))
commit
commit
UPDATE FND_AUDIT_COLUMNS SET STATE = 'N' , SEQUENCE_ID = 5 WHERE TABLE_APP_ID = 800 AND SCHEMA_ID = 900 AND TABLE_ID = 53506 AND COLUMN_ID = 135906 AND STATE = 'P'
commit
commit
----->Drop Triggers
DROP TRIGGER PER_ALL_PEOPLE_F_AI
DROP TRIGGER PER_ALL_PEOPLE_F_AI
commit
DROP PROCEDURE PER_ALL_PEOPLE_F_AIP
DROP PROCEDURE PER_ALL_PEOPLE_F_AIP
commit
DROP TRIGGER PER_ALL_PEOPLE_F_AD
DROP TRIGGER PER_ALL_PEOPLE_F_AD
commit
DROP PROCEDURE PER_ALL_PEOPLE_F_ADP
DROP PROCEDURE PER_ALL_PEOPLE_F_ADP
commit
DROP TRIGGER PER_ALL_PEOPLE_F_AU
DROP TRIGGER PER_ALL_PEOPLE_F_AU
commit
DROP PROCEDURE PER_ALL_PEOPLE_F_AUP
DROP PROCEDURE PER_ALL_PEOPLE_F_AUP
commit
DROP TRIGGER PER_ALL_PEOPLE_F_AC
DROP TRIGGER PER_ALL_PEOPLE_F_AC
commit
DROP TRIGGER PER_ALL_PEOPLE_F_AH
DROP TRIGGER PER_ALL_PEOPLE_F_AH
commit
DROP TRIGGER PER_ALL_PEOPLE_F_AT
DROP TRIGGER PER_ALL_PEOPLE_F_AT
commit
----->Create Standard Triggers
CREATE OR REPLACE PROCEDURE
PER_ALL_PEOPLE_F_AIP(A0 IN DATE,A1 IN DATE,A2 IN NUMBER,JB IN DATE,JC IN VARCHAR2,JD IN VARCHAR2,E0 IN DATE,E1 IN DATE,E2 IN NUMBER,RB IN DATE,RC IN VARCHAR2,RD IN VARCHAR2 )
AS
ROWKEY number;
NXT number;
CMT number;
NUSER varchar2(100);
nls_date_fmt VARCHAR2(40);
BEGIN
select value into nls_date_fmt from v$NLS_PARAMETERS where parameter='NLS_DATE_FORMAT';
execute IMMEDIATE 'alter session set nls_date_format="MM/DD/YYYY HH24:MI:SS"';
NXT:=FND_AUDIT_SEQ_PKG.NXT;
CMT:=FND_AUDIT_SEQ_PKG.CMT;
ROWKEY:=(TO_NUMBER(TO_CHAR(SYSDATE,'YYYYMMDDHH24MISS'))*100000 MOD(NXT,100000)) * 100000 USERENV('SESSIONID');
NUSER:=FND_AUDIT_SEQ_PKG.USER_NAME;
INSERT INTO PER_ALL_PEOPLE_F_A
VALUES(SYSDATE,'I',NUSER,NULL,USERENV('SESSIONID'),NXT,CMT,ROWKEY,E0,E1,E2,NULL,NULL,NULL);
execute IMMEDIATE 'alter session set nls_date_format="'||nls_date_fmt||'"';
END PER_ALL_PEOPLE_F_AIP;
commit
CREATE OR REPLACE PROCEDURE
PER_ALL_PEOPLE_F_AUP (A0 IN DATE,A1 IN DATE,A2 IN NUMBER,JB IN DATE,JC IN VARCHAR2,JD IN VARCHAR2,E0 IN DATE,E1 IN DATE,E2 IN NUMBER,RB IN DATE,RC IN VARCHAR2,RD IN VARCHAR2)
AS
NXT NUMBER;
CMT NUMBER;
NUSER varchar2(100);
newtransaction_TYPE VARCHAR2(1);
newTRUE_NULLS VARCHAR2(250);
tmpPRIMCHANGE NUMBER;
nls_date_fmt VARCHAR2(40);
I0 DATE;
I1 DATE;
I2 NUMBER(10,0);
YB DATE;
YC VARCHAR2(150);
YD VARCHAR2(240);
BEGIN
select value into nls_date_fmt from v$NLS_PARAMETERS where parameter='NLS_DATE_FORMAT';
execute IMMEDIATE 'alter session set nls_date_format="MM/DD/YYYY HH24:MI:SS"';
NUSER:=FND_AUDIT_SEQ_PKG.USER_NAME;
SELECT 0+decode(E0,A0,0,1)+decode(E1,A1,0,1)+decode(E2,A2,0,1) into tmpPRIMCHANGE FROM SYS.DUAL;
IF tmpPRIMCHANGE>=1 THEN
SELECT decode(A0,NULL,'Y','N')
||decode(A1,NULL,'Y','N')
||decode(A2,NULL,'Y','N')
||decode(JB,NULL,'Y','N')
||decode(JC,NULL,'Y','N')
||decode(JD,NULL,'Y','N') INTO newTRUE_NULLS FROM SYS.DUAL;
IF(newTRUE_NULLS='NNNNNN')THEN
newTRUE_NULLS:=NULL;END IF;
NXT:=FND_AUDIT_SEQ_PKG.NXT;
CMT:=FND_AUDIT_SEQ_PKG.CMT;
INSERT INTO PER_ALL_PEOPLE_F_A
VALUES(SYSDATE,'D',NUSER,newTRUE_NULLS,
USERENV('SESSIONID'),NXT,CMT,(TO_NUMBER(TO_CHAR(SYSDATE,'YYYYMMDDHH24MISS'))*100000+MOD(NXT,100000)) * 100000 + USERENV('SESSIONID'),
A0,A1,A2,JB,JC,JD);
NXT:=FND_AUDIT_SEQ_PKG.NXT;
CMT:=FND_AUDIT_SEQ_PKG.CMT;
NUSER:=FND_AUDIT_SEQ_PKG.USER_NAME;
INSERT INTO PER_ALL_PEOPLE_F_A
VALUES(SYSDATE,'I',NUSER,NULL,USERENV('SESSIONID'),NXT,CMT,(TO_NUMBER(TO_CHAR(SYSDATE,'YYYYMMDDHH24MISS'))*100000+MOD(NXT,100000)) * 100000 + USERENV('SESSIONID'),
E0,E1,E2,NULL,NULL,NULL);
ELSE
SELECT DECODE(JB,RB,NULL,JB)INTO YB FROM SYS.DUAL;
SELECT DECODE(JC,RC,NULL,JC)INTO YC FROM SYS.DUAL;
SELECT DECODE(JD,RD,NULL,JD)INTO YD FROM SYS.DUAL;
SELECT decode(A0,NULL,decode(E0,NULL,'N','Y'),'N')
||decode(A1,NULL,decode(E1,NULL,'N','Y'),'N')
||decode(A2,NULL,decode(E2,NULL,'N','Y'),'N')
||decode(JB,NULL,decode(RB,NULL,'N','Y'),'N')
||decode(JC,NULL,decode(RC,NULL,'N','Y'),'N')
||decode(JD,NULL,decode(RD,NULL,'N','Y'),'N') INTO newTRUE_NULLS FROM SYS.DUAL;
IF(newTRUE_NULLS='NNNNNN')THEN newTRUE_NULLS:=NULL;END IF;
IF(newTRUE_NULLS is not NULL)OR
YB IS NOT NULL OR
YC IS NOT NULL OR
YD IS NOT NULL THEN
NXT:=FND_AUDIT_SEQ_PKG.NXT;
CMT:=FND_AUDIT_SEQ_PKG.CMT;
INSERT INTO PER_ALL_PEOPLE_F_A
VALUES(SYSDATE,'U',NUSER,newTRUE_NULLS,USERENV('SESSIONID'),NXT,CMT,(TO_NUMBER(TO_CHAR(SYSDATE,'YYYYMMDDHH24MISS'))*100000+MOD(NXT,100000)) * 100000 + USERENV('SESSIONID'),
E0,E1,E2,YB,YC,YD);
END IF;
END IF;
execute IMMEDIATE 'alter session set nls_date_format="'||nls_date_fmt||'"';
END PER_ALL_PEOPLE_F_AUP;
commit
CREATE OR REPLACE PROCEDURE
PER_ALL_PEOPLE_F_ADP(A0 IN DATE,A1 IN DATE,A2 IN NUMBER,JB IN DATE,JC IN VARCHAR2,JD IN VARCHAR2,E0 IN DATE,E1 IN DATE,E2 IN NUMBER,RB IN DATE,RC IN VARCHAR2,RD IN VARCHAR2)
AS
NXT NUMBER;
CMT NUMBER;
NUSER varchar2(100);
newTRUE_NULLS VARCHAR2(250);
nls_date_fmt VARCHAR2(40);
BEGIN
select value into nls_date_fmt from v$NLS_PARAMETERS where parameter='NLS_DATE_FORMAT';
execute IMMEDIATE 'alter session set nls_date_format="MM/DD/YYYY HH24:MI:SS"';
NXT:=FND_AUDIT_SEQ_PKG.NXT;
CMT:=FND_AUDIT_SEQ_PKG.CMT;
NUSER:=FND_AUDIT_SEQ_PKG.USER_NAME;
SELECT decode(A0,NULL,'Y','N')
||decode(A1,NULL,'Y','N')
||decode(A2,NULL,'Y','N')
||decode(JB,NULL,'Y','N')
||decode(JC,NULL,'Y','N')
||decode(JD,NULL,'Y','N') INTO newTRUE_NULLS FROM SYS.DUAL;
IF(newTRUE_NULLS='NNNNNN') THEN
newTRUE_NULLS:= NULL;
END IF;
INSERT INTO PER_ALL_PEOPLE_F_A
VALUES(SYSDATE,'D',NUSER,newTRUE_NULLS,
USERENV('SESSIONID'),NXT,CMT,(TO_NUMBER(TO_CHAR(SYSDATE,'YYYYMMDDHH24MISS'))*100000+MOD(NXT,100000)) * 100000 + USERENV('SESSIONID'),
A0,A1,A2,JB,JC,JD);
execute IMMEDIATE 'alter session set nls_date_format="'||nls_date_fmt||'"';
END PER_ALL_PEOPLE_F_ADP;
commit
CREATE OR REPLACE TRIGGER PER_ALL_PEOPLE_F_AH BEFORE INSERT ON PER_ALL_PEOPLE_F BEGIN IF fnd_global.audit_active THEN fnd_audit_pkg.audit_on := TRUE;ELSE fnd_audit_pkg.audit_on := FALSE;END IF;END;
commit
CREATE OR REPLACE TRIGGER PER_ALL_PEOPLE_F_AI AFTER INSERT ON PER_ALL_PEOPLE_F FOR EACH ROW BEGIN IF fnd_audit_pkg.audit_on THEN PER_ALL_PEOPLE_F_AIP(:old.EFFECTIVE_START_DATE,:old.EFFECTIVE_END_DATE,:old.PERSON_ID,:old.DATE_OF_BIRTH,:old.FIRST_NAME,:old.FULL_NAME,:new.EFFECTIVE_START_DATE,:new.EFFECTIVE_END_DATE,:new.PERSON_ID,:new.DATE_OF_BIRTH,:new.FIRST_NAME,:new.FULL_NAME);END IF;END;
commit
CREATE OR REPLACE TRIGGER PER_ALL_PEOPLE_F_AT BEFORE UPDATE OF EFFECTIVE_START_DATE,EFFECTIVE_END_DATE,PERSON_ID,DATE_OF_BIRTH,FIRST_NAME,FULL_NAME ON PER_ALL_PEOPLE_F BEGIN IF fnd_global.audit_active THEN fnd_audit_pkg.audit_on := TRUE;ELSE fnd_audit_pkg.audit_on := FALSE;END IF;END;
commit
CREATE OR REPLACE TRIGGER PER_ALL_PEOPLE_F_AU AFTER UPDATE OF EFFECTIVE_START_DATE,EFFECTIVE_END_DATE,PERSON_ID,DATE_OF_BIRTH,FIRST_NAME,FULL_NAME ON PER_ALL_PEOPLE_F FOR EACH ROW BEGIN IF fnd_audit_pkg.audit_on THEN PER_ALL_PEOPLE_F_AUP(:old.EFFECTIVE_START_DATE,:old.EFFECTIVE_END_DATE,:old.PERSON_ID,:old.DATE_OF_BIRTH,:old.FIRST_NAME,:old.FULL_NAME,:new.EFFECTIVE_START_DATE,:new.EFFECTIVE_END_DATE,:new.PERSON_ID,:new.DATE_OF_BIRTH,:new.FIRST_NAME,:new.FULL_NAME);END IF;END;
commit
CREATE OR REPLACE TRIGGER PER_ALL_PEOPLE_F_AC BEFORE DELETE ON PER_ALL_PEOPLE_F BEGIN IF fnd_global.audit_active THEN fnd_audit_pkg.audit_on := TRUE;ELSE fnd_audit_pkg.audit_on := FALSE;END IF;END;
commit
CREATE OR REPLACE TRIGGER PER_ALL_PEOPLE_F_AD AFTER DELETE ON PER_ALL_PEOPLE_F FOR EACH ROW BEGIN IF fnd_audit_pkg.audit_on THEN PER_ALL_PEOPLE_F_ADP(:old.EFFECTIVE_START_DATE,:old.EFFECTIVE_END_DATE,:old.PERSON_ID,:old.DATE_OF_BIRTH,:old.FIRST_NAME,:old.FULL_NAME,:new.EFFECTIVE_START_DATE,:new.EFFECTIVE_END_DATE,:new.PERSON_ID,:new.DATE_OF_BIRTH,:new.FIRST_NAME,:new.FULL_NAME);END IF;END;
commit
----->Create Views
VIEW PER_ALL_PEOPLE_F_AV1
commit
VIEW PER_ALL_PEOPLE_F_AV2
commit
VIEW PER_ALL_PEOPLE_F_AV3
commit
VIEW PER_ALL_PEOPLE_F_AV4
commit
VIEW PER_ALL_PEOPLE_F_AC1
-->EFFECTIVE_START_DATE
-->EFFECTIVE_END_DATE
-->PERSON_ID
-->DATE_OF_BIRTH
-->FIRST_NAME
-->FULL_NAME
commit
UPDATE FND_AUDIT_TABLES T SET T.STATE = 'E' WHERE T.TABLE_ID = 53506 AND T.TABLE_APP_ID = 800 AND NOT EXISTS ( SELECT NULL FROM FND_AUDIT_COLUMNS C WHERE C.TABLE_APP_ID = T.TABLE_APP_ID AND C.TABLE_ID = T.TABLE_ID AND C.STATE = 'P' AND C.SCHEMA_ID != -1)
commit
commit
----->Delete Invalid Columns
----->Drop Triggers
DROP TRIGGER FND_PROFILE_OPTION_VALUE_AI
DROP TRIGGER FND_PROFILE_OPTION_VALUE_AI
commit
DROP PROCEDURE FND_PROFILE_OPTION_VALUE_AIP
DROP PROCEDURE FND_PROFILE_OPTION_VALUE_AIP
commit
DROP TRIGGER FND_PROFILE_OPTION_VALUE_AD
DROP TRIGGER FND_PROFILE_OPTION_VALUE_AD
commit
DROP PROCEDURE FND_PROFILE_OPTION_VALUE_ADP
DROP PROCEDURE FND_PROFILE_OPTION_VALUE_ADP
commit
DROP TRIGGER FND_PROFILE_OPTION_VALUE_AU
DROP TRIGGER FND_PROFILE_OPTION_VALUE_AU
commit
DROP PROCEDURE FND_PROFILE_OPTION_VALUE_AUP
DROP PROCEDURE FND_PROFILE_OPTION_VALUE_AUP
commit
DROP TRIGGER FND_PROFILE_OPTION_VALUE_AC
DROP TRIGGER FND_PROFILE_OPTION_VALUE_AC
commit
DROP TRIGGER FND_PROFILE_OPTION_VALUE_AH
DROP TRIGGER FND_PROFILE_OPTION_VALUE_AH
commit
DROP TRIGGER FND_PROFILE_OPTION_VALUE_AT
DROP TRIGGER FND_PROFILE_OPTION_VALUE_AT
commit
Cause: Table name is FND_PROFILE_OPTION_VALUE_A.
DROP VIEW FND_PROFILE_OPTION_VALUE_AV1
commit
DROP VIEW FND_PROFILE_OPTION_VALUE_AV2
commit
DROP VIEW FND_PROFILE_OPTION_VALUE_AV3
commit
DROP VIEW FND_PROFILE_OPTION_VALUE_AV4
commit
DROP VIEW FND_PROFILE_OPTION_VALUE_AV5
commit
DROP VIEW FND_PROFILE_OPTION_VALUE_AV6
commit
DROP VIEW FND_PROFILE_OPTION_VALUE_AV7
commit
DROP VIEW FND_PROFILE_OPTION_VALUE_AV8
commit
DROP VIEW FND_PROFILE_OPTION_VALUE_AV9
ORA-00942: table or view does not exist
DROP VIEW FND_PROFILE_OPTION_VALUE_AV10
ORA-00942: table or view does not exist
DROP VIEW FND_PROFILE_OPTION_VALUE_AV11
ORA-00942: table or view does not exist
DROP VIEW FND_PROFILE_OPTION_VALUE_AV12
ORA-00942: table or view does not exist
DROP VIEW FND_PROFILE_OPTION_VALUE_AV13
ORA-00942: table or view does not exist
DROP VIEW FND_PROFILE_OPTION_VALUE_AV14
ORA-00942: table or view does not exist
DROP VIEW FND_PROFILE_OPTION_VALUE_AV15
ORA-00942: table or view does not exist
DROP VIEW FND_PROFILE_OPTION_VALUE_AV16
ORA-00942: table or view does not exist
DROP VIEW FND_PROFILE_OPTION_VALUE_AV17
ORA-00942: table or view does not exist
DROP VIEW FND_PROFILE_OPTION_VALUE_AV18
ORA-00942: table or view does not exist
DROP VIEW FND_PROFILE_OPTION_VALUE_AV19
ORA-00942: table or view does not exist
DROP VIEW FND_PROFILE_OPTION_VALUE_AV20
ORA-00942: table or view does not exist
DROP VIEW FND_PROFILE_OPTION_VALUE_AV21
ORA-00942: table or view does not exist
DROP VIEW FND_PROFILE_OPTION_VALUE_AV22
ORA-00942: table or view does not exist
DROP VIEW FND_PROFILE_OPTION_VALUE_AV23
ORA-00942: table or view does not exist
DROP VIEW FND_PROFILE_OPTION_VALUE_AV24
ORA-00942: table or view does not exist
DROP VIEW FND_PROFILE_OPTION_VALUE_AV25
ORA-00942: table or view does not exist
DROP VIEW FND_PROFILE_OPTION_VALUE_AV26
ORA-00942: table or view does not exist
DROP VIEW FND_PROFILE_OPTION_VALUE_AV27
ORA-00942: table or view does not exist
DROP VIEW FND_PROFILE_OPTION_VALUE_AV28
ORA-00942: table or view does not exist
DROP VIEW FND_PROFILE_OPTION_VALUE_AV29
ORA-00942: table or view does not exist
DROP VIEW FND_PROFILE_OPTION_VALUE_AV30
ORA-00942: table or view does not exist
DROP VIEW FND_PROFILE_OPTION_VALUE_AV31
ORA-00942: table or view does not exist
DROP VIEW FND_PROFILE_OPTION_VALUE_AV32
ORA-00942: table or view does not exist
DROP VIEW FND_PROFILE_OPTION_VALUE_AV33
ORA-00942: table or view does not exist
DROP VIEW FND_PROFILE_OPTION_VALUE_AV34
ORA-00942: table or view does not exist
DROP VIEW FND_PROFILE_OPTION_VALUE_AV35
ORA-00942: table or view does not exist
DROP VIEW FND_PROFILE_OPTION_VALUE_AV36
ORA-00942: table or view does not exist
DROP VIEW FND_PROFILE_OPTION_VALUE_AV37
ORA-00942: table or view does not exist
DROP VIEW FND_PROFILE_OPTION_VALUE_AV38
ORA-00942: table or view does not exist
DROP VIEW FND_PROFILE_OPTION_VALUE_AV39
ORA-00942: table or view does not exist
DROP VIEW FND_PROFILE_OPTION_VALUE_AV40
ORA-00942: table or view does not exist
DROP VIEW FND_PROFILE_OPTION_VALUE_AV41
ORA-00942: table or view does not exist
DROP VIEW FND_PROFILE_OPTION_VALUE_AV42
ORA-00942: table or view does not exist
DROP VIEW FND_PROFILE_OPTION_VALUE_AV43
ORA-00942: table or view does not exist
DROP VIEW FND_PROFILE_OPTION_VALUE_AV44
ORA-00942: table or view does not exist
DROP VIEW FND_PROFILE_OPTION_VALUE_AV45
ORA-00942: table or view does not exist
DROP VIEW FND_PROFILE_OPTION_VALUE_AV46
ORA-00942: table or view does not exist
DROP VIEW FND_PROFILE_OPTION_VALUE_AV47
ORA-00942: table or view does not exist
DROP VIEW FND_PROFILE_OPTION_VALUE_AV48
ORA-00942: table or view does not exist
DROP VIEW FND_PROFILE_OPTION_VALUE_AV49
ORA-00942: table or view does not exist
DROP VIEW FND_PROFILE_OPTION_VALUE_AV50
ORA-00942: table or view does not exist
DROP VIEW FND_PROFILE_OPTION_VALUE_AV51
ORA-00942: table or view does not exist
DROP VIEW FND_PROFILE_OPTION_VALUE_AV52
ORA-00942: table or view does not exist
DROP VIEW FND_PROFILE_OPTION_VALUE_AV53
ORA-00942: table or view does not exist
DROP VIEW FND_PROFILE_OPTION_VALUE_AV54
ORA-00942: table or view does not exist
DROP VIEW FND_PROFILE_OPTION_VALUE_AV55
ORA-00942: table or view does not exist
DROP VIEW FND_PROFILE_OPTION_VALUE_AV56
ORA-00942: table or view does not exist
DROP VIEW FND_PROFILE_OPTION_VALUE_AV57
ORA-00942: table or view does not exist
DROP VIEW FND_PROFILE_OPTION_VALUE_AV58
ORA-00942: table or view does not exist
DROP VIEW FND_PROFILE_OPTION_VALUE_AV59
ORA-00942: table or view does not exist
DROP VIEW FND_PROFILE_OPTION_VALUE_AV60
ORA-00942: table or view does not exist
DROP VIEW FND_PROFILE_OPTION_VALUE_AV61
ORA-00942: table or view does not exist
DROP VIEW FND_PROFILE_OPTION_VALUE_AV62
ORA-00942: table or view does not exist
DROP VIEW FND_PROFILE_OPTION_VALUE_AV63
ORA-00942: table or view does not exist
DROP VIEW FND_PROFILE_OPTION_VALUE_AV64
ORA-00942: table or view does not exist
DROP VIEW FND_PROFILE_OPTION_VALUE_AV65
ORA-00942: table or view does not exist
DROP VIEW FND_PROFILE_OPTION_VALUE_AV66
ORA-00942: table or view does not exist
DROP VIEW FND_PROFILE_OPTION_VALUE_AV67
ORA-00942: table or view does not exist
DROP VIEW FND_PROFILE_OPTION_VALUE_AV68
ORA-00942: table or view does not exist
DROP VIEW FND_PROFILE_OPTION_VALUE_AV69
ORA-00942: table or view does not exist
DROP VIEW FND_PROFILE_OPTION_VALUE_AV70
ORA-00942: table or view does not exist
DROP VIEW FND_PROFILE_OPTION_VALUE_AV71
ORA-00942: table or view does not exist
DROP VIEW FND_PROFILE_OPTION_VALUE_AV72
ORA-00942: table or view does not exist
DROP VIEW FND_PROFILE_OPTION_VALUE_AV73
ORA-00942: table or view does not exist
DROP VIEW FND_PROFILE_OPTION_VALUE_AV74
ORA-00942: table or view does not exist
DROP VIEW FND_PROFILE_OPTION_VALUE_AV75
ORA-00942: table or view does not exist
DROP VIEW FND_PROFILE_OPTION_VALUE_AV76
ORA-00942: table or view does not exist
DROP VIEW FND_PROFILE_OPTION_VALUE_AV77
ORA-00942: table or view does not exist
DROP VIEW FND_PROFILE_OPTION_VALUE_AV78
ORA-00942: table or view does not exist
DROP VIEW FND_PROFILE_OPTION_VALUE_AV79
ORA-00942: table or view does not exist
DROP VIEW FND_PROFILE_OPTION_VALUE_AV80
ORA-00942: table or view does not exist
DROP VIEW FND_PROFILE_OPTION_VALUE_AV81
ORA-00942: table or view does not exist
DROP VIEW FND_PROFILE_OPTION_VALUE_AV82
ORA-00942: table or view does not exist
DROP VIEW FND_PROFILE_OPTION_VALUE_AV83
ORA-00942: table or view does not exist
DROP VIEW FND_PROFILE_OPTION_VALUE_AV84
ORA-00942: table or view does not exist
DROP VIEW FND_PROFILE_OPTION_VALUE_AV85
ORA-00942: table or view does not exist
DROP VIEW FND_PROFILE_OPTION_VALUE_AV86
ORA-00942: table or view does not exist
DROP VIEW FND_PROFILE_OPTION_VALUE_AV87
ORA-00942: table or view does not exist
DROP VIEW FND_PROFILE_OPTION_VALUE_AV88
ORA-00942: table or view does not exist
DROP VIEW FND_PROFILE_OPTION_VALUE_AV89
ORA-00942: table or view does not exist
DROP VIEW FND_PROFILE_OPTION_VALUE_AV90
ORA-00942: table or view does not exist
DROP VIEW FND_PROFILE_OPTION_VALUE_AV91
ORA-00942: table or view does not exist
DROP VIEW FND_PROFILE_OPTION_VALUE_AV92
ORA-00942: table or view does not exist
DROP VIEW FND_PROFILE_OPTION_VALUE_AV93
ORA-00942: table or view does not exist
DROP VIEW FND_PROFILE_OPTION_VALUE_AV94
ORA-00942: table or view does not exist
DROP VIEW FND_PROFILE_OPTION_VALUE_AV95
ORA-00942: table or view does not exist
DROP VIEW FND_PROFILE_OPTION_VALUE_AV96
ORA-00942: table or view does not exist
DROP VIEW FND_PROFILE_OPTION_VALUE_AV97
ORA-00942: table or view does not exist
DROP VIEW FND_PROFILE_OPTION_VALUE_AV98
ORA-00942: table or view does not exist
DROP VIEW FND_PROFILE_OPTION_VALUE_AV99
ORA-00942: table or view does not exist
DROP VIEW FND_PROFILE_OPTION_VALUE_AV100
ORA-00942: table or view does not exist
DROP VIEW FND_PROFILE_OPTION_VALUE_AC1
commit
----->Drop Shadow Table
DROP TABLE FND_PROFILE_OPTION_VALUE_A
ORA-00942: table or view does not exist
Error in fdasql, continuing...
/oracleferp/FERP/APPS/apps_st/appl/fnd/12.0.0/bin/FNDATUPD
Program was terminated by signal 11
Executing request completion options...
Output file size:
0
Output is not being printed because:
The print option has been disabled for this report.
Finished executing request completion options.
Concurrent request completed
Current system time is 02-APR-2013 01:03:56
Any comments/ suggestions in context of the Audit Trail query are heartily welcome !!
Regards,
S.MalikDear Hussein,
I followed the doc id: 727770.1 and as per note, I deleted the previous Audit data.
And enabled the audit trail as per document to the similar table as mentioned in the doc. with similar steps. But still the concurrent request "AuditTrail Update Tables" is completing with error. Please find below the log file for the same:
Application Object Library: Version : 12.0.0
Copyright (c) 1979, 1999, Oracle Corporation. All rights reserved.
FNDATUPD module: AuditTrail Update Tables
Current system time is 02-APR-2013 04:19:23
----->Expand Rows
INSERT INTO FND_AUDIT_COLUMNS (TABLE_APP_ID, TABLE_ID,COLUMN_ID,STATE,SEQUENCE_ID, SCHEMA_ID, LAST_UPDATE_DATE,LAST_UPDATED_BY, LAST_UPDATE_LOGIN,CREATED_BY,CREATION_DATE) VALUES ( 810, 55079, 158785, 'P', -1, 900, SYSDATE,0,0,0,SYSDATE)
UPDATE FND_AUDIT_TABLES T SET T.STATE = 'P' WHERE T.TABLE_APP_ID = 810 AND T.TABLE_ID = 55079
commit
INSERT INTO FND_AUDIT_COLUMNS (TABLE_APP_ID, TABLE_ID,COLUMN_ID,STATE,SEQUENCE_ID, SCHEMA_ID, LAST_UPDATE_DATE,LAST_UPDATED_BY, LAST_UPDATE_LOGIN,CREATED_BY,CREATION_DATE) VALUES ( 810, 55079, 158787, 'P', -1, 900, SYSDATE,0,0,0,SYSDATE)
UPDATE FND_AUDIT_TABLES T SET T.STATE = 'P' WHERE T.TABLE_APP_ID = 810 AND T.TABLE_ID = 55079
commit
INSERT INTO FND_AUDIT_COLUMNS (TABLE_APP_ID, TABLE_ID,COLUMN_ID,STATE,SEQUENCE_ID, SCHEMA_ID, LAST_UPDATE_DATE,LAST_UPDATED_BY, LAST_UPDATE_LOGIN,CREATED_BY,CREATION_DATE) VALUES ( 810, 55079, 158786, 'P', -1, 900, SYSDATE,0,0,0,SYSDATE)
UPDATE FND_AUDIT_TABLES T SET T.STATE = 'P' WHERE T.TABLE_APP_ID = 810 AND T.TABLE_ID = 55079
commit
INSERT INTO FND_AUDIT_COLUMNS (TABLE_APP_ID, TABLE_ID,COLUMN_ID,STATE,SEQUENCE_ID, SCHEMA_ID, LAST_UPDATE_DATE,LAST_UPDATED_BY, LAST_UPDATE_LOGIN,CREATED_BY,CREATION_DATE) VALUES ( 810, 55079, 158790, 'P', -1, 900, SYSDATE,0,0,0,SYSDATE)
UPDATE FND_AUDIT_TABLES T SET T.STATE = 'P' WHERE T.TABLE_APP_ID = 810 AND T.TABLE_ID = 55079
commit
commit
DELETE FROM FND_AUDIT_TABLES WHERE STATE = 'X'
DELETE FROM FND_AUDIT_COLUMNS C WHERE C.STATE = 'P' AND NOT EXISTS (SELECT NULL FROM FND_AUDIT_TABLES T WHERE T.TABLE_APP_ID = C.TABLE_APP_ID AND T.TABLE_ID = C.TABLE_ID AND T.STATE !='X')
----->Create New Table
CREATE TABLE OTA_DELEGATE_BOOKINGS_A (AUDIT_TIMESTAMP DATE NOT NULL, AUDIT_TRANSACTION_TYPE VARCHAR(1) NOT NULL, AUDIT_USER_NAME VARCHAR2(100) NOT NULL, AUDIT_TRUE_NULLS VARCHAR2(250), AUDIT_SESSION_ID NUMBER NOT NULL, AUDIT_SEQUENCE_ID NUMBER NOT NULL,AUDIT_COMMIT_ID NUMBER NOT NULL, ROW_KEY NUMBER )
commit
GRANT ALL ON OTA_DELEGATE_BOOKINGS_A to APPS
GRANT ALL ON OTA_DELEGATE_BOOKINGS_A to APPS
commit
CREATE SYNONYM OTA_DELEGATE_BOOKINGS_A for OTA.OTA_DELEGATE_BOOKINGS_A
CREATE SYNONYM OTA_DELEGATE_BOOKINGS_A for OTA.OTA_DELEGATE_BOOKINGS_A
commit
----->Adding ROW_KEY
**Starts**02-APR-2013 04:19:32
**Ends**02-APR-2013 04:19:34
----->Alter Shadow Table
ALTER TABLE OTA_DELEGATE_BOOKINGS_A ADD (BOOKING_ID NUMBER(9,0))
ALTER TABLE OTA_DELEGATE_BOOKINGS_A ADD (BOOKING_ID NUMBER(9,0))
commit
commit
DELETE FROM FND_AUDIT_COLUMNS C WHERE C.TABLE_APP_ID= 810 AND C.TABLE_ID = 55079 AND C.COLUMN_ID = 158785 AND C.SCHEMA_ID = 900
INSERT INTO FND_AUDIT_COLUMNS (TABLE_APP_ID,TABLE_ID,COLUMN_ID,STATE,SEQUENCE_ID,SCHEMA_ID,LAST_UPDATE_DATE,LAST_UPDATED_BY,LAST_UPDATE_LOGIN,CREATED_BY,CREATION_DATE) VALUES ( 810, 55079, 158785, 'K', 0, 900, SYSDATE,0,0,0,SYSDATE)
commit
----->Update Pending Columns
----->Adding ROW_KEY
**Starts**02-APR-2013 04:19:36
**Ends**02-APR-2013 04:19:36
----->Alter Shadow Table
ALTER TABLE OTA_DELEGATE_BOOKINGS_A ADD (BOOKING_STATUS_TYPE_ID NUMBER(9,0))
ALTER TABLE OTA_DELEGATE_BOOKINGS_A ADD (BOOKING_STATUS_TYPE_ID NUMBER(9,0))
commit
commit
UPDATE FND_AUDIT_COLUMNS SET STATE = 'N' , SEQUENCE_ID = 1 WHERE TABLE_APP_ID = 810 AND SCHEMA_ID = 900 AND TABLE_ID = 55079 AND COLUMN_ID = 158786 AND STATE = 'P'
commit
----->Adding ROW_KEY
**Starts**02-APR-2013 04:19:37
**Ends**02-APR-2013 04:19:37
----->Alter Shadow Table
ALTER TABLE OTA_DELEGATE_BOOKINGS_A ADD (DELEGATE_PERSON_ID NUMBER(10,0))
ALTER TABLE OTA_DELEGATE_BOOKINGS_A ADD (DELEGATE_PERSON_ID NUMBER(10,0))
commit
commit
UPDATE FND_AUDIT_COLUMNS SET STATE = 'N' , SEQUENCE_ID = 2 WHERE TABLE_APP_ID = 810 AND SCHEMA_ID = 900 AND TABLE_ID = 55079 AND COLUMN_ID = 158787 AND STATE = 'P'
commit
----->Adding ROW_KEY
**Starts**02-APR-2013 04:19:37
**Ends**02-APR-2013 04:19:37
----->Alter Shadow Table
ALTER TABLE OTA_DELEGATE_BOOKINGS_A ADD (EVENT_ID NUMBER(9,0))
ALTER TABLE OTA_DELEGATE_BOOKINGS_A ADD (EVENT_ID NUMBER(9,0))
commit
commit
UPDATE FND_AUDIT_COLUMNS SET STATE = 'N' , SEQUENCE_ID = 3 WHERE TABLE_APP_ID = 810 AND SCHEMA_ID = 900 AND TABLE_ID = 55079 AND COLUMN_ID = 158790 AND STATE = 'P'
commit
commit
----->Drop Triggers
DROP TRIGGER OTA_DELEGATE_BOOKINGS_AI
DROP TRIGGER OTA_DELEGATE_BOOKINGS_AI
ORA-04080: trigger 'OTA_DELEGATE_BOOKINGS_AI' does not exist
DROP PROCEDURE OTA_DELEGATE_BOOKINGS_AIP
DROP PROCEDURE OTA_DELEGATE_BOOKINGS_AIP
ORA-04043: object OTA_DELEGATE_BOOKINGS_AIP does not exist
DROP TRIGGER OTA_DELEGATE_BOOKINGS_AD
DROP TRIGGER OTA_DELEGATE_BOOKINGS_AD
ORA-04080: trigger 'OTA_DELEGATE_BOOKINGS_AD' does not exist
DROP PROCEDURE OTA_DELEGATE_BOOKINGS_ADP
DROP PROCEDURE OTA_DELEGATE_BOOKINGS_ADP
ORA-04043: object OTA_DELEGATE_BOOKINGS_ADP does not exist
DROP TRIGGER OTA_DELEGATE_BOOKINGS_AU
DROP TRIGGER OTA_DELEGATE_BOOKINGS_AU
ORA-04080: trigger 'OTA_DELEGATE_BOOKINGS_AU' does not exist
DROP PROCEDURE OTA_DELEGATE_BOOKINGS_AUP
DROP PROCEDURE OTA_DELEGATE_BOOKINGS_AUP
ORA-04043: object OTA_DELEGATE_BOOKINGS_AUP does not exist
DROP TRIGGER OTA_DELEGATE_BOOKINGS_AC
DROP TRIGGER OTA_DELEGATE_BOOKINGS_AC
ORA-04080: trigger 'OTA_DELEGATE_BOOKINGS_AC' does not exist
DROP TRIGGER OTA_DELEGATE_BOOKINGS_AH
DROP TRIGGER OTA_DELEGATE_BOOKINGS_AH
ORA-04080: trigger 'OTA_DELEGATE_BOOKINGS_AH' does not exist
DROP TRIGGER OTA_DELEGATE_BOOKINGS_AT
DROP TRIGGER OTA_DELEGATE_BOOKINGS_AT
ORA-04080: trigger 'OTA_DELEGATE_BOOKINGS_AT' does not exist
----->Create Standard Triggers
CREATE OR REPLACE PROCEDURE
OTA_DELEGATE_BOOKINGS_AIP(A0 IN NUMBER,JB IN NUMBER,JC IN NUMBER,JD IN NUMBER,E0 IN NUMBER,RB IN NUMBER,RC IN NUMBER,RD IN NUMBER )
AS
ROWKEY number;
NXT number;
CMT number;
NUSER varchar2(100);
nls_date_fmt VARCHAR2(40);
BEGIN
select value into nls_date_fmt from v$NLS_PARAMETERS where parameter='NLS_DATE_FORMAT';
execute IMMEDIATE 'alter session set nls_date_format="MM/DD/YYYY HH24:MI:SS"';
NXT:=FND_AUDIT_SEQ_PKG.NXT;
CMT:=FND_AUDIT_SEQ_PKG.CMT;
ROWKEY:=(TO_NUMBER(TO_CHAR(SYSDATE,'YYYYMMDDHH24MISS'))*100000 MOD(NXT,100000)) * 100000 USERENV('SESSIONID');
NUSER:=FND_AUDIT_SEQ_PKG.USER_NAME;
INSERT INTO OTA_DELEGATE_BOOKINGS_A
VALUES(SYSDATE,'I',NUSER,NULL,USERENV('SESSIONID'),NXT,CMT,ROWKEY,E0,NULL,NULL,NULL);
execute IMMEDIATE 'alter session set nls_date_format="'||nls_date_fmt||'"';
END OTA_DELEGATE_BOOKINGS_AIP;
commit
CREATE OR REPLACE PROCEDURE
OTA_DELEGATE_BOOKINGS_AUP (A0 IN NUMBER,JB IN NUMBER,JC IN NUMBER,JD IN NUMBER,E0 IN NUMBER,RB IN NUMBER,RC IN NUMBER,RD IN NUMBER)
AS
NXT NUMBER;
CMT NUMBER;
NUSER varchar2(100);
newtransaction_TYPE VARCHAR2(1);
newTRUE_NULLS VARCHAR2(250);
tmpPRIMCHANGE NUMBER;
nls_date_fmt VARCHAR2(40);
I0 NUMBER(9,0);
YB NUMBER(9,0);
YC NUMBER(10,0);
YD NUMBER(9,0);
BEGIN
select value into nls_date_fmt from v$NLS_PARAMETERS where parameter='NLS_DATE_FORMAT';
execute IMMEDIATE 'alter session set nls_date_format="MM/DD/YYYY HH24:MI:SS"';
NUSER:=FND_AUDIT_SEQ_PKG.USER_NAME;
SELECT 0+decode(E0,A0,0,1) into tmpPRIMCHANGE FROM SYS.DUAL;
IF tmpPRIMCHANGE>=1 THEN
SELECT decode(A0,NULL,'Y','N')
||decode(JB,NULL,'Y','N')
||decode(JC,NULL,'Y','N')
||decode(JD,NULL,'Y','N') INTO newTRUE_NULLS FROM SYS.DUAL;
IF(newTRUE_NULLS='NNNN')THEN
newTRUE_NULLS:=NULL;END IF;
NXT:=FND_AUDIT_SEQ_PKG.NXT;
CMT:=FND_AUDIT_SEQ_PKG.CMT;
INSERT INTO OTA_DELEGATE_BOOKINGS_A
VALUES(SYSDATE,'D',NUSER,newTRUE_NULLS,
USERENV('SESSIONID'),NXT,CMT,(TO_NUMBER(TO_CHAR(SYSDATE,'YYYYMMDDHH24MISS'))*100000+MOD(NXT,100000)) * 100000 + USERENV('SESSIONID'),
A0,JB,JC,JD);
NXT:=FND_AUDIT_SEQ_PKG.NXT;
CMT:=FND_AUDIT_SEQ_PKG.CMT;
NUSER:=FND_AUDIT_SEQ_PKG.USER_NAME;
INSERT INTO OTA_DELEGATE_BOOKINGS_A
VALUES(SYSDATE,'I',NUSER,NULL,USERENV('SESSIONID'),NXT,CMT,(TO_NUMBER(TO_CHAR(SYSDATE,'YYYYMMDDHH24MISS'))*100000+MOD(NXT,100000)) * 100000 + USERENV('SESSIONID'),
E0,NULL,NULL,NULL);
ELSE
SELECT DECODE(JB,RB,NULL,JB)INTO YB FROM SYS.DUAL;
SELECT DECODE(JC,RC,NULL,JC)INTO YC FROM SYS.DUAL;
SELECT DECODE(JD,RD,NULL,JD)INTO YD FROM SYS.DUAL;
SELECT decode(A0,NULL,decode(E0,NULL,'N','Y'),'N')
||decode(JB,NULL,decode(RB,NULL,'N','Y'),'N')
||decode(JC,NULL,decode(RC,NULL,'N','Y'),'N')
||decode(JD,NULL,decode(RD,NULL,'N','Y'),'N') INTO newTRUE_NULLS FROM SYS.DUAL;
IF(newTRUE_NULLS='NNNN')THEN newTRUE_NULLS:=NULL;END IF;
IF(newTRUE_NULLS is not NULL)OR
YB IS NOT NULL OR
YC IS NOT NULL OR
YD IS NOT NULL THEN
NXT:=FND_AUDIT_SEQ_PKG.NXT;
CMT:=FND_AUDIT_SEQ_PKG.CMT;
INSERT INTO OTA_DELEGATE_BOOKINGS_A
VALUES(SYSDATE,'U',NUSER,newTRUE_NULLS,USERENV('SESSIONID'),NXT,CMT,(TO_NUMBER(TO_CHAR(SYSDATE,'YYYYMMDDHH24MISS'))*100000+MOD(NXT,100000)) * 100000 + USERENV('SESSIONID'),
E0,YB,YC,YD);
END IF;
END IF;
execute IMMEDIATE 'alter session set nls_date_format="'||nls_date_fmt||'"';
END OTA_DELEGATE_BOOKINGS_AUP;
commit
CREATE OR REPLACE PROCEDURE
OTA_DELEGATE_BOOKINGS_ADP(A0 IN NUMBER,JB IN NUMBER,JC IN NUMBER,JD IN NUMBER,E0 IN NUMBER,RB IN NUMBER,RC IN NUMBER,RD IN NUMBER)
AS
NXT NUMBER;
CMT NUMBER;
NUSER varchar2(100);
newTRUE_NULLS VARCHAR2(250);
nls_date_fmt VARCHAR2(40);
BEGIN
select value into nls_date_fmt from v$NLS_PARAMETERS where parameter='NLS_DATE_FORMAT';
execute IMMEDIATE 'alter session set nls_date_format="MM/DD/YYYY HH24:MI:SS"';
NXT:=FND_AUDIT_SEQ_PKG.NXT;
CMT:=FND_AUDIT_SEQ_PKG.CMT;
NUSER:=FND_AUDIT_SEQ_PKG.USER_NAME;
SELECT decode(A0,NULL,'Y','N')
||decode(JB,NULL,'Y','N')
||decode(JC,NULL,'Y','N')
||decode(JD,NULL,'Y','N') INTO newTRUE_NULLS FROM SYS.DUAL;
IF(newTRUE_NULLS='NNNN') THEN
newTRUE_NULLS:= NULL;
END IF;
INSERT INTO OTA_DELEGATE_BOOKINGS_A
VALUES(SYSDATE,'D',NUSER,newTRUE_NULLS,
USERENV('SESSIONID'),NXT,CMT,(TO_NUMBER(TO_CHAR(SYSDATE,'YYYYMMDDHH24MISS'))*100000+MOD(NXT,100000)) * 100000 + USERENV('SESSIONID'),
A0,JB,JC,JD);
execute IMMEDIATE 'alter session set nls_date_format="'||nls_date_fmt||'"';
END OTA_DELEGATE_BOOKINGS_ADP;
commit
CREATE OR REPLACE TRIGGER OTA_DELEGATE_BOOKINGS_AH BEFORE INSERT ON OTA_DELEGATE_BOOKINGS BEGIN IF fnd_global.audit_active THEN fnd_audit_pkg.audit_on := TRUE;ELSE fnd_audit_pkg.audit_on := FALSE;END IF;END;
commit
CREATE OR REPLACE TRIGGER OTA_DELEGATE_BOOKINGS_AI AFTER INSERT ON OTA_DELEGATE_BOOKINGS FOR EACH ROW BEGIN IF fnd_audit_pkg.audit_on THEN OTA_DELEGATE_BOOKINGS_AIP(:old.BOOKING_ID,:old.BOOKING_STATUS_TYPE_ID,:old.DELEGATE_PERSON_ID,:old.EVENT_ID,:new.BOOKING_ID,:new.BOOKING_STATUS_TYPE_ID,:new.DELEGATE_PERSON_ID,:new.EVENT_ID);END IF;END;
commit
CREATE OR REPLACE TRIGGER OTA_DELEGATE_BOOKINGS_AT BEFORE UPDATE OF BOOKING_ID,BOOKING_STATUS_TYPE_ID,DELEGATE_PERSON_ID,EVENT_ID ON OTA_DELEGATE_BOOKINGS BEGIN IF fnd_global.audit_active THEN fnd_audit_pkg.audit_on := TRUE;ELSE fnd_audit_pkg.audit_on := FALSE;END IF;END;
commit
CREATE OR REPLACE TRIGGER OTA_DELEGATE_BOOKINGS_AU AFTER UPDATE OF BOOKING_ID,BOOKING_STATUS_TYPE_ID,DELEGATE_PERSON_ID,EVENT_ID ON OTA_DELEGATE_BOOKINGS FOR EACH ROW BEGIN IF fnd_audit_pkg.audit_on THEN OTA_DELEGATE_BOOKINGS_AUP(:old.BOOKING_ID,:old.BOOKING_STATUS_TYPE_ID,:old.DELEGATE_PERSON_ID,:old.EVENT_ID,:new.BOOKING_ID,:new.BOOKING_STATUS_TYPE_ID,:new.DELEGATE_PERSON_ID,:new.EVENT_ID);END IF;END;
commit
CREATE OR REPLACE TRIGGER OTA_DELEGATE_BOOKINGS_AC BEFORE DELETE ON OTA_DELEGATE_BOOKINGS BEGIN IF fnd_global.audit_active THEN fnd_audit_pkg.audit_on := TRUE;ELSE fnd_audit_pkg.audit_on := FALSE;END IF;END;
commit
CREATE OR REPLACE TRIGGER OTA_DELEGATE_BOOKINGS_AD AFTER DELETE ON OTA_DELEGATE_BOOKINGS FOR EACH ROW BEGIN IF fnd_audit_pkg.audit_on THEN OTA_DELEGATE_BOOKINGS_ADP(:old.BOOKING_ID,:old.BOOKING_STATUS_TYPE_ID,:old.DELEGATE_PERSON_ID,:old.EVENT_ID,:new.BOOKING_ID,:new.BOOKING_STATUS_TYPE_ID,:new.DELEGATE_PERSON_ID,:new.EVENT_ID);END IF;END;
commit
----->Create Views
VIEW OTA_DELEGATE_BOOKINGS_AV1
commit
VIEW OTA_DELEGATE_BOOKINGS_AV2
commit
VIEW OTA_DELEGATE_BOOKINGS_AV3
commit
VIEW OTA_DELEGATE_BOOKINGS_AV4
commit
VIEW OTA_DELEGATE_BOOKINGS_AC1
-->BOOKING_ID
-->BOOKING_STATUS_TYPE_ID
-->DELEGATE_PERSON_ID
-->EVENT_ID
commit
UPDATE FND_AUDIT_TABLES T SET T.STATE = 'E' WHERE T.TABLE_ID = 55079 AND T.TABLE_APP_ID = 810 AND NOT EXISTS ( SELECT NULL FROM FND_AUDIT_COLUMNS C WHERE C.TABLE_APP_ID = T.TABLE_APP_ID AND C.TABLE_ID = T.TABLE_ID AND C.STATE = 'P' AND C.SCHEMA_ID != -1)
commit
commit
----->Delete Invalid Columns
----->Drop Triggers
DROP TRIGGER FND_PROFILE_OPTION_VALUE_AI
DROP TRIGGER FND_PROFILE_OPTION_VALUE_AI
ORA-04080: trigger 'FND_PROFILE_OPTION_VALUE_AI' does not exist
DROP PROCEDURE FND_PROFILE_OPTION_VALUE_AIP
DROP PROCEDURE FND_PROFILE_OPTION_VALUE_AIP
ORA-04043: object FND_PROFILE_OPTION_VALUE_AIP does not exist
DROP TRIGGER FND_PROFILE_OPTION_VALUE_AD
DROP TRIGGER FND_PROFILE_OPTION_VALUE_AD
ORA-04080: trigger 'FND_PROFILE_OPTION_VALUE_AD' does not exist
DROP PROCEDURE FND_PROFILE_OPTION_VALUE_ADP
DROP PROCEDURE FND_PROFILE_OPTION_VALUE_ADP
ORA-04043: object FND_PROFILE_OPTION_VALUE_ADP does not exist
DROP TRIGGER FND_PROFILE_OPTION_VALUE_AU
DROP TRIGGER FND_PROFILE_OPTION_VALUE_AU
ORA-04080: trigger 'FND_PROFILE_OPTION_VALUE_AU' does not exist
DROP PROCEDURE FND_PROFILE_OPTION_VALUE_AUP
DROP PROCEDURE FND_PROFILE_OPTION_VALUE_AUP
ORA-04043: object FND_PROFILE_OPTION_VALUE_AUP does not exist
DROP TRIGGER FND_PROFILE_OPTION_VALUE_AC
DROP TRIGGER FND_PROFILE_OPTION_VALUE_AC
ORA-04080: trigger 'FND_PROFILE_OPTION_VALUE_AC' does not exist
DROP TRIGGER FND_PROFILE_OPTION_VALUE_AH
DROP TRIGGER FND_PROFILE_OPTION_VALUE_AH
ORA-04080: trigger 'FND_PROFILE_OPTION_VALUE_AH' does not exist
DROP TRIGGER FND_PROFILE_OPTION_VALUE_AT
DROP TRIGGER FND_PROFILE_OPTION_VALUE_AT
ORA-04080: trigger 'FND_PROFILE_OPTION_VALUE_AT' does not exist
Cause: Table name is FND_PROFILE_OPTION_VALUE_A.
DROP VIEW FND_PROFILE_OPTION_VALUE_AV1
ORA-00942: table or view does not exist
DROP VIEW FND_PROFILE_OPTION_VALUE_AV2
ORA-00942: table or view does not exist
DROP VIEW FND_PROFILE_OPTION_VALUE_AV3
ORA-00942: table or view does not exist
DROP VIEW FND_PROFILE_OPTION_VALUE_AV4
ORA-00942: table or view does not exist
DROP VIEW FND_PROFILE_OPTION_VALUE_AV5
ORA-00942: table or view does not exist
DROP VIEW FND_PROFILE_OPTION_VALUE_AV6
ORA-00942: table or view does not exist
DROP VIEW FND_PROFILE_OPTION_VALUE_AV7
ORA-00942: table or view does not exist
DROP VIEW FND_PROFILE_OPTION_VALUE_AV8
ORA-00942: table or view does not exist
DROP VIEW FND_PROFILE_OPTION_VALUE_AV9
ORA-00942: table or view does not exist
DROP VIEW FND_PROFILE_OPTION_VALUE_AV10
ORA-00942: table or view does not exist
DROP VIEW FND_PROFILE_OPTION_VALUE_AV11
ORA-00942: table or view does not exist
DROP VIEW FND_PROFILE_OPTION_VALUE_AV12
ORA-00942: table or view does not exist
DROP VIEW FND_PROFILE_OPTION_VALUE_AV13
ORA-00942: table or view does not exist
DROP VIEW FND_PROFILE_OPTION_VALUE_AV14
ORA-00942: table or view does not exist
DROP VIEW FND_PROFILE_OPTION_VALUE_AV15
ORA-00942: table or view does not exist
DROP VIEW FND_PROFILE_OPTION_VALUE_AV16
ORA-00942: table or view does not exist
DROP VIEW FND_PROFILE_OPTION_VALUE_AV17
ORA-00942: table or view does not exist
DROP VIEW FND_PROFILE_OPTION_VALUE_AV18
ORA-00942: table or view does not exist
DROP VIEW FND_PROFILE_OPTION_VALUE_AV19
ORA-00942: table or view does not exist
DROP VIEW FND_PROFILE_OPTION_VALUE_AV20
ORA-00942: table or view does not exist
DROP VIEW FND_PROFILE_OPTION_VALUE_AV21
ORA-00942: table or view does not exist
DROP VIEW FND_PROFILE_OPTION_VALUE_AV22
ORA-00942: table or view does not exist
DROP VIEW FND_PROFILE_OPTION_VALUE_AV23
ORA-00942: table or view does not exist
DROP VIEW FND_PROFILE_OPTION_VALUE_AV24
ORA-00942: table or view does not exist
DROP VIEW FND_PROFILE_OPTION_VALUE_AV25
ORA-00942: table or view does not exist
DROP VIEW FND_PROFILE_OPTION_VALUE_AV26
ORA-00942: table or view does not exist
DROP VIEW FND_PROFILE_OPTION_VALUE_AV27
ORA-00942: table or view does not exist
DROP VIEW FND_PROFILE_OPTION_VALUE_AV28
ORA-00942: table or view does not exist
DROP VIEW FND_PROFILE_OPTION_VALUE_AV29
ORA-00942: table or view does not exist
DROP VIEW FND_PROFILE_OPTION_VALUE_AV30
ORA-00942: table or view does not exist
DROP VIEW FND_PROFILE_OPTION_VALUE_AV31
ORA-00942: table or view does not exist
DROP VIEW FND_PROFILE_OPTION_VALUE_AV32
ORA-00942: table or view does not exist
DROP VIEW FND_PROFILE_OPTION_VALUE_AV33
ORA-00942: table or view does not exist
DROP VIEW FND_PROFILE_OPTION_VALUE_AV34
ORA-00942: table or view does not exist
DROP VIEW FND_PROFILE_OPTION_VALUE_AV35
ORA-00942: table or view does not exist
DROP VIEW FND_PROFILE_OPTION_VALUE_AV36
ORA-00942: table or view does not exist
DROP VIEW FND_PROFILE_OPTION_VALUE_AV37
ORA-00942: table or view does not exist
DROP VIEW FND_PROFILE_OPTION_VALUE_AV38
ORA-00942: table or view does not exist
DROP VIEW FND_PROFILE_OPTION_VALUE_AV39
ORA-00942: table or view does not exist
DROP VIEW FND_PROFILE_OPTION_VALUE_AV40
ORA-00942: table or view does not exist
DROP VIEW FND_PROFILE_OPTION_VALUE_AV41
ORA-00942: table or view does not exist
DROP VIEW FND_PROFILE_OPTION_VALUE_AV42
ORA-00942: table or view does not exist
DROP VIEW FND_PROFILE_OPTION_VALUE_AV43
ORA-00942: table or view does not exist
DROP VIEW FND_PROFILE_OPTION_VALUE_AV44
ORA-00942: table or view does not exist
DROP VIEW FND_PROFILE_OPTION_VALUE_AV45
ORA-00942: table or view does not exist
DROP VIEW FND_PROFILE_OPTION_VALUE_AV46
ORA-00942: table or view does not exist
DROP VIEW FND_PROFILE_OPTION_VALUE_AV47
ORA-00942: table or view does not exist
DROP VIEW FND_PROFILE_OPTION_VALUE_AV48
ORA-00942: table or view does not exist
DROP VIEW FND_PROFILE_OPTION_VALUE_AV49
ORA-00942: table or view does not exist
DROP VIEW FND_PROFILE_OPTION_VALUE_AV50
ORA-00942: table or view does not exist
DROP VIEW FND_PROFILE_OPTION_VALUE_AV51
ORA-00942: table or view does not exist
DROP VIEW FND_PROFILE_OPTION_VALUE_AV52
ORA-00942: table or view does not exist
DROP VIEW FND_PROFILE_OPTION_VALUE_AV53
ORA-00942: table or view does not exist
DROP VIEW FND_PROFILE_OPTION_VALUE_AV54
ORA-00942: table or view does not exist
DROP VIEW FND_PROFILE_OPTION_VALUE_AV55
ORA-00942: table or view does not exist
DROP VIEW FND_PROFILE_OPTION_VALUE_AV56
ORA-00942: table or view does not exist
DROP VIEW FND_PROFILE_OPTION_VALUE_AV57
ORA-00942: table or view does not exist
DROP VIEW FND_PROFILE_OPTION_VALUE_AV58
ORA-00942: table or view does not exist
DROP VIEW FND_PROFILE_OPTION_VALUE_AV59
ORA-00942: table or view does not exist
DROP VIEW FND_PROFILE_OPTION_VALUE_AV60
ORA-00942: table or view does not exist
DROP VIEW FND_PROFILE_OPTION_VALUE_AV61
ORA-00942: table or view does not exist
DROP VIEW FND_PROFILE_OPTION_VALUE_AV62
ORA-00942: table or view does not exist
DROP VIEW FND_PROFILE_OPTION_VALUE_AV63
ORA-00942: table or view does not exist
DROP VIEW FND_PROFILE_OPTION_VALUE_AV64
ORA-00942: table or view does not exist
DROP VIEW FND_PROFILE_OPTION_VALUE_AV65
ORA-00942: table or view does not exist
DROP VIEW FND_PROFILE_OPTION_VALUE_AV66
ORA-00942: table or view does not exist
DROP VIEW FND_PROFILE_OPTION_VALUE_AV67
ORA-00942: table or view does not exist
DROP VIEW FND_PROFILE_OPTION_VALUE_AV68
ORA-00942: table or view does not exist
DROP VIEW FND_PROFILE_OPTION_VALUE_AV69
ORA-00942: table or view does not exist
DROP VIEW FND_PROFILE_OPTION_VALUE_AV70
ORA-00942: table or view does not exist
DROP VIEW FND_PROFILE_OPTION_VALUE_AV71
ORA-00942: table or view does not exist
DROP VIEW FND_PROFILE_OPTION_VALUE_AV72
ORA-00942: table or view does not exist
DROP VIEW FND_PROFILE_OPTION_VALUE_AV73
ORA-00942: table or view does not exist
DROP VIEW FND_PROFILE_OPTION_VALUE_AV74
ORA-00942: table or view does not exist
DROP VIEW FND_PROFILE_OPTION_VALUE_AV75
ORA-00942: table or view does not exist
DROP VIEW FND_PROFILE_OPTION_VALUE_AV76
ORA-00942: table or view does not exist
DROP VIEW FND_PROFILE_OPTION_VALUE_AV77
ORA-00942: table or view does not exist
DROP VIEW FND_PROFILE_OPTION_VALUE_AV78
ORA-00942: table or view does not exist
DROP VIEW FND_PROFILE_OPTION_VALUE_AV79
ORA-00942: table or view does not exist
DROP VIEW FND_PROFILE_OPTION_VALUE_AV80
ORA-00942: table or view does not exist
DROP VIEW FND_PROFILE_OPTION_VALUE_AV81
ORA-00942: table or view does not exist
DROP VIEW FND_PROFILE_OPTION_VALUE_AV82
ORA-00942: table or view does not exist
DROP VIEW FND_PROFILE_OPTION_VALUE_AV83
ORA-00942: table or view does not exist
DROP VIEW FND_PROFILE_OPTION_VALUE_AV84
ORA-00942: table or view does not exist
DROP VIEW FND_PROFILE_OPTION_VALUE_AV85
ORA-00942: table or view does not exist
DROP VIEW FND_PROFILE_OPTION_VALUE_AV86
ORA-00942: table or view does not exist
DROP VIEW FND_PROFILE_OPTION_VALUE_AV87
ORA-00942: table or view does not exist
DROP VIEW FND_PROFILE_OPTION_VALUE_AV88
ORA-00942: table or view does not exist
DROP VIEW FND_PROFILE_OPTION_VALUE_AV89
ORA-00942: table or view does not exist
DROP VIEW FND_PROFILE_OPTION_VALUE_AV90
ORA-00942: table or view does not exist
DROP VIEW FND_PROFILE_OPTION_VALUE_AV91
ORA-00942: table or view does not exist
DROP VIEW FND_PROFILE_OPTION_VALUE_AV92
ORA-00942: table or view does not exist
DROP VIEW FND_PROFILE_OPTION_VALUE_AV93
ORA-00942: table or view does not exist
DROP VIEW FND_PROFILE_OPTION_VALUE_AV94
ORA-00942: table or view does not exist
DROP VIEW FND_PROFILE_OPTION_VALUE_AV95
ORA-00942: table or view does not exist
DROP VIEW FND_PROFILE_OPTION_VALUE_AV96
ORA-00942: table or view does not exist
DROP VIEW FND_PROFILE_OPTION_VALUE_AV97
ORA-00942: table or view does not exist
DROP VIEW FND_PROFILE_OPTION_VALUE_AV98
ORA-00942: table or view does not exist
DROP VIEW FND_PROFILE_OPTION_VALUE_AV99
ORA-00942: table or view does not exist
DROP VIEW FND_PROFILE_OPTION_VALUE_AV100
ORA-00942: table or view does not exist
DROP VIEW FND_PROFILE_OPTION_VALUE_AC1
ORA-00942: table or view does not exist
----->Drop Shadow Table
DROP TABLE FND_PROFILE_OPTION_VALUE_A
ORA-00942: table or view does not exist
Error in fdasql, continuing...
/oracleferp/FERP/APPS/apps_st/appl/fnd/12.0.0/bin/FNDATUPD
Program was terminated by signal 11
Executing request completion options...
Output file size:
0
Output is not being printed because:
The print option has been disabled for this report.
Finished executing request completion options.
Concurrent request completed
Current system time is 02-APR-2013 04:19:44
Regards,
S.Malik -
Error in bapi sales order creation
hi..
I m creating sales order using bapi fm, It was working fine, but all of a sudden it is giving error 'NO OBJECT STATUS AVAILABLE FOR SDI 0.' and Sales order is not gettign created. Any idea why the problem occurs?Hi Cynthia,
This is probably caused by a COMMIT WORK in a user exit during sales order processing. This COMMIT WORK triggers FM BUFFER_STATUS_REFRESH which in turn causes this problem.
You can easily find out by putting a break-point in this FM and then take a look in the call-stack to find out where the commit work occurred.
Regards.
John. -
What is luw (logical unit of work)
pls tell me what is luw (logical unit of work)
what r the types of luw .
2 what ispurpose of code inspector and extended program check
pls expalin the diffrence b/w those two
3what are the candidate keys in db tables
4 what is the difference b/w occurs 1 and occurs 2 clauses
data : begin of itab occurs 0 .
data : itab type standard table of structure type initial size 1 with header line
pls tell diffrence between theese two statements
5can u pls tell what is the client in sap
pls tell answers to questions
pls dont give any websites addresses to see answers
6 what is the transaction from database point of view
7 what is the variant in alv reports
how do we use reuse_alv_grid_variant_get fun module in alvshi,
this gives complete idea
SAP LUW
Since, as a rule, an application program is processed by several work processes in succession, and every change of the work process is linked with an implicit database commit , an application program is not automatically linked with a single database LUW. This applies in particular to dialog-oriented applications, in which one database LUW is assigned to one dialog step.
To ensure the data consistency of application programs that are executed across different work processes, the application statements are not directly executed in an SAP LUW, rather, are first registered and then executed by a single work process, that is, in a single database LUW.
Two techniques are available for bundling the change statements in a database LUW:
Bundling via function modules (update)
Through the statement CALL FUNCTION...IN UPDATE TASK, an update function module is registered for subsequent execution in an update work process.
Bundling via function modules (transactional RFC)
Through the statement CALL FUNCTION... IN BACKGROUND TASK DESTINATION, a remote- compatible function module is registered for subsequent asynchronous execution via the RFC interface (transactional RFC ).
Bundling via subprograms
Through the statement PERFORM ... ON COMMIT, a subprogram is registered for subsequent execution in a different work process.
Statements for SAP LUWs
A SAP LUW is controlled via the Open SQL statements COMMIT WORK, ROLLBACK WORK and SET UPDATE TASK LOCAL.
Note
A function module can be classified either as an update function module or remote-compatible, but not both at the same time. The update helps realize SAP LUWs within an SAP System, while the transactional RFC creates LUWs in distributed systems.
COMMIT WORK
Variants:
1. COMMIT WORK [AND WAIT].
2. COMMIT CONNECTION con.
Effect
Terminates an SAP LUW and stores the changes.
Variant 1
COMMIT WORK [AND WAIT].
Effect
The statement COMMIT WORK completes the current SAP LUW and opens a new one, storing all change requests for the currenta SAP LUW in the process. In this case, COMMIT WORK performs the following actions:
It executes all subroutines registered using PERFORM ON COMMIT.
It triggers an internal event in Object Services that ensures the registration of changes in persistent objects as the last update function module, as well as the subsequent initialization of persistent object attributes.
It initiates the processing of all registered update function modules in the update work process.
This executes all high-priority update function modules registered using CALL FUNCTION ... IN UPDATE TASK in the order of their registration and in a common database LUW. If you do not specify the addition AND WAIT, the program does not wait until the update work process has executed it (asynchronous updating). If you specify the addition AND WAIT, however, program processing after COMMIT WORK will not continue until the update work process has executed the high-priority update function modules (synchronous updating).
If all high-priority update function modules are completed successfully, the statement executes the low-priority update function modules together in a common database LUW.
In parallel, it also executes the individual function modules registered using CALL FUNCTION ... IN BACKGROUND TASK DESTINATION in a separate database LUW for each destination.
It handles all SAP locks set in the current program according to the value of the formal parameter _SCOPE of the corresponding lock function modules.
It triggers a database commit that also terminates the current database LUW.
The completion of statement COMMIT WORK triggers the event TRANSACTION_FINISHED of the system class CL_SYSTEM_TRANSACTION_STATE, where the parameter KIND has the value of the constant CL_SYSTEM_TRANSACTION_STATE=>COMMIT_WORK.
If the statement COMMIT WORK is executed by calling special programs, be aware of the following:
In a program executed using batch input, or if you have called the program using the USING addition of the statement CALL TRANSACTION, COMMIT WORK terminates the batch input processing when using the corresponding settings.
In a program called using CALL DIALOG, COMMIT WORK initiates the processing of subroutines or updated function modules registered using PERFORM ... ON COMMIT and CALL FUNCTION ... IN UPDATE TASK. Therefore, it does not complete the current SAP LUW. The SAP LUW cannot be completed until you execute the COMMIT WORK statement in the calling program.
You cannot execute the COMMIT WORK statement during the updating procedure or during the execution of subroutines registered using PERFORM ... ON {COMMIT|ROLLBACK}.
System fields
sy-subrc Meaning
0 You have specified the AND WAIT addition, and the updating of the update function modules was successful.
4 You have specified the AND WAIT addition, and the updating of the update function modules was not successful.
The COMMIT WORK statement always sets sy-subrc to 0 if the AND WAIT addition is not specified.
Note
The COMMIT WORK statement closes all database cursors . Open SQL statements that access a database cursor later ( SELECT loop and FETCH) raise an exception that cannot be handled.
Variant 2
COMMIT CONNECTION con.
Note
This statement is for internal use only.
It cannot be used in application programs.
Effect
The COMMIT command is not executed on the standard database, but only on the secondary database connection specified by con. con is the name of the database connection as it was specified in the table DBCON in the column CON_NAME. The database connection con can also be specified dynamically in the form (source_text) - the source_text field contains the name of the database connection. The source_text field must be of the type C or STRING.
On the specified secondary database connection, the database commit:
Closes all open database cursors (OPEN CURSOR)
Releases all database locks
Note
Note that the COMMIT CONNECTION DEFAULT statement unlike COMMIT WORK executes a pure database commit on the DEFAULT connection.
Exceptions
Non-Catchable Exceptions
Cause: COMMIT WORK is not possible in a FORM that was called using PERFORM ... ON COMMIT.
Runtime Error: COMMIT_IN_PERFORM_ON_COMMIT
Cause: COMMIT WORK is not allowed in the update.
Runtime Error: COMMIT_IN_POSTING
ROLLBACK WORK
Variants:
1. ROLLBACK WORK.
2. ROLLBACK CONNECTION con.
Effect
Terminates a SAP-LUW without storing the changes.
Variant 1
ROLLBACK WORK.
Effect
The statement ROLLBACK WORK closes the current SAP-LUW and opens a new one. In doing so, all change requests of the current SAP-LUW are canceled. To do this, ROLLBACK WORK carries out the following actions:
Executes all subprograms registered with PERFORM ON ROLLBACK.
Deletes all subprograms registered with PERFORM ON COMMIT.
Raises an internal exception in the Object Services that makes sure that the attributes of persistent objects are initialised.
Deletes all update function modules registered with CALL FUNCTION ...IN UPDATE TASK from the VBLOG and deletes all transactional remote Function Calls registered with CALL FUNCTION ... IN BACKGROUND TASK from ARFCSSTATE and from ARFCSDATA.
Removal of all SAP locks set in the current program in which the formal parameter _SCOPE of the lock function module was set to the value 2.
Triggers a database rollback, which also ends the current database-LUW.
After completion of the statement COMMIT WORK, the event TRANSACTION_FINISHED of the system class CL_SYSTEM_TRANSACTION_STATE is raised, in which the parameter KIND has the value of the constant CL_SYSTEM_TRANSACTION_STATE=>ROLLBACK_WORK.
Variant 2
ROLLBACK CONNECTION con.
Note
This statement is for internal use only.
It cannot be used in application programs.
Effect
The ROLLBACK-statement is not executed on the standard database but only on the secondary database connection, specified through con. con is the name of the database connection as it was specified in table DBCON in column CON_NAME. The database connection con can also be specified dynamically in the form (source_text), in which the field source_text contains the name of the database connection. The field source_text must be of the type C or STRING.
Notes
As all opened database cursors on the respective database connections are closed at ROLLBACK, the attempt to continue a SELECT-loop after a ROLLBACK, leads to a runtime error. Due to the same reason, a FETCH after a ROLLBACK to the then closed cursor, leads to a runtime error. You have to make sure that cursors that are still open, are no longer used after ROLLBACK.
After execution of the statement ROLLBACK, SY-SUBRC is always equal to 0. It is not necessary to check if SY-SUBRC is unequal to 0 after ROLLBACK.
ROLLBACK must not be used during update (CALL FUNCTION ... IN UPDATE TASK) or during the execution of FORMs, which were registered with PERFORM ... ON COMMIT resp. PERFORM ...ON ROLLBACK.
The statement ROLLBACK WORK is implicitly executed if a message of the type A is treated with the addition ERROR_MESSAGE when calling a function module with CALL FUNCTION.
Exceptions
Non-Catchable Exceptions
Cause: ROLLBACK WORK is not allowed within a FORM that is called with PERFORM ... ON COMMIT or PERFORM ... ON ROLLBACK.
Runtime Error: ROLLBACK_IN_PERFORM_ON_COMMIT
Cause: ROLLBACK WORK is not allowed within an update.
Runtime Error: ROLLBACK_IN_POSTING
SET UPDATE TASK LOCAL
Syntax
SET UPDATE TASK LOCAL.
Effect
This statement specifies that the high-priority update function modules - registered during the current SAP LUW using CALL FUNCTION ... IN UPDATE TASK - are registered in the ABAP memory instead of the VBLOG database table. In addition, it specifies that the current work process and not the update work process run these modules during the current database LUW, when the COMMIT WORK statement is executed. This statement has no effect on low-priority update function modules.
At the beginning of every SAP LUW, the local update function is deactivated. If you wish to use it, you must reactivate it again before the first update function module is registered.
System fields
sy-subrc Meaning
0 The local update function is activated.
1 The local update function has not been activated, because the program has already registered at least one update function module for the normal updating procedure in the current SAP-LUW.
Notes
The local update function performs a synchronous update according to the COMMIT WORK statement, independent of the addition AND WAIT.
The occurrence of a database rollback during the local update affects all previous change requests. -
HR_INFOTYPE_OPERATION within Dynamic Action
Hello,
I am calling HR_INFOTYPE_OPERATION from within the Dynamic Action. I can debug through it and even have it display the screens and everything appears to work fine. The return structure is clear of any errors and the key structure indicates that the 'MOD' was done with no problem. The infty is 2012.
However once the dynamic action is complete the 2012 records have not been updated. I am passing blank for the no_commit parameter on the FM.
Does HR_INFOTYPE_OPERATION with a 'MOD' operation work from within the dynamic action?
Regards,
JeffHi Jeff,
I am not sure if I get you right. But as for DB commit, it will be triggered automatically once SUBMIT statement is executed (as work process is released). What I have in my program is as follows:
- in T588Z table (dyn.actions) I have invoked subroutine from my custom program
POPUP_SELECTION_FOR_IT0015((YPLPY_PRO_RE_QUOTAGEN1).
- In this YPLPY_PRO_RE_QUOTAGEN1 program I write subroutine wherein I do some coding and submit another report (which do real update).
form POPUP_SELECTION_FOR_IT0015.
"some coding - in my case I am filling P0015 strcutre (as this infotype has to be udpdated) while dyn. action is triggered for IT2002
P0015-PERNR = LS_PSKEY-PERNR = P2002-PERNR.
P0015-SUBTY = LS_PSKEY-SUBTY = P0015-LGART = LGART = IT_RET-FIELDVAL.
P0015-BEGDA = LS_PSKEY-BEGDA = DATUM.
P0015-ENDDA = LS_PSKEY-ENDDA = DATUM.
P0015-UNAME = UNAME.
P0015-INFTY = LS_PSKEY-INFTY = '0015'.
"before I am submiting another program I am passing this strcuture
export P0015 = P0015 PSKEY = LS_PSKEY to memory id 'ZXPADU02_P0015'.
submit YPLPY_PRO_RE_ZXPADU02_2002
and return.
- Now the below program creates my IT0015 and the same time changes to IT2002 are written (DB commit is triggered with SUBMIT)
REPORT yplpy_pro_re_zxpadu02_2002.
data: p0015 like p0015.
data: ls_return TYPE bapireturn1,
ls_pskey like pskey.
IMPORT p0015 = p0015 pskey = ls_pskey FROM MEMORY ID 'ZXPADU02_P0015'.
CALL FUNCTION 'HR_EMPLOYEE_ENQUEUE'
EXPORTING
number = ls_pskey-pernr.
CALL FUNCTION 'HR_INFOTYPE_OPERATION'
EXPORTING
infty = ls_pskey-infty
number = ls_pskey-pernr
subtype = ls_pskey-subty
validityend = ls_pskey-endda
validitybegin = ls_pskey-begda
record = p0015
operation = 'INS'
dialog_mode = '2'
IMPORTING
return = ls_return.
IF NOT ls_return IS INITIAL AND
ls_return-type EQ 'E'.
MESSAGE e000(38) WITH ls_return-message.
ENDIF.
"unlock the EE
CALL FUNCTION 'HR_EMPLOYEE_DEQUEUE'
EXPORTING
number = ls_pskey-pernr.
Works fine for me.
Regards
Marcin -
How to update database in update task
Hi everyone,
I have a question: I need to update database in a SAP LUW. And I develop a method in my class
to update the database.how can I update database in SAP LUW.Use can use "COMMIT WORK " and Database operate command SQL
Within an LUW, database changes are not made until after a database commit. Prior to this, any database change can be canceled by a database rollback.
In the R/3 System, a database commit is triggered either automatically or by the ABAP/4 command COMMIT WORK or the appropriate Native SQL command for the database system.
Similarly, a database rollback is triggered either automatically or by the ABAP/4 command ROLLBACK WORK or the appropriate Native SQL command for the database system.
After the COMMIT WORK has been executed, the event RAISE_TRANSACTION_FINISHED of the class CL_SYSTEM_TRANSACTION_STATE with parameter value CL_SYSTEM_TRANSACTION_STATE=>COMMIT_WORK is triggered. However, this does not apply to the COMMIT WORK at the end of the update.
Edited by: Jack Wu on Dec 16, 2008 11:13 AM -
Hi guys,
What do u mean by logical unit of work...Can anyone explain me with an example.
Regards,
Alex.hi,
this gives complete idea
SAP LUW
Since, as a rule, an application program is processed by several work processes in succession, and every change of the work process is linked with an implicit database commit , an application program is not automatically linked with a single database LUW. This applies in particular to dialog-oriented applications, in which one database LUW is assigned to one dialog step.
To ensure the data consistency of application programs that are executed across different work processes, the application statements are not directly executed in an SAP LUW, rather, are first registered and then executed by a single work process, that is, in a single database LUW.
Two techniques are available for bundling the change statements in a database LUW:
Bundling via function modules (update)
Through the statement CALL FUNCTION...IN UPDATE TASK, an update function module is registered for subsequent execution in an update work process.
Bundling via function modules (transactional RFC)
Through the statement CALL FUNCTION... IN BACKGROUND TASK DESTINATION, a remote- compatible function module is registered for subsequent asynchronous execution via the RFC interface (transactional RFC ).
Bundling via subprograms
Through the statement PERFORM ... ON COMMIT, a subprogram is registered for subsequent execution in a different work process.
Statements for SAP LUWs
A SAP LUW is controlled via the Open SQL statements COMMIT WORK, ROLLBACK WORK and SET UPDATE TASK LOCAL.
Note
A function module can be classified either as an update function module or remote-compatible, but not both at the same time. The update helps realize SAP LUWs within an SAP System, while the transactional RFC creates LUWs in distributed systems.
COMMIT WORK
Variants:
1. COMMIT WORK [AND WAIT].
2. COMMIT CONNECTION con.
Effect
Terminates an SAP LUW and stores the changes.
Variant 1
COMMIT WORK [AND WAIT].
Effect
The statement COMMIT WORK completes the current SAP LUW and opens a new one, storing all change requests for the currenta SAP LUW in the process. In this case, COMMIT WORK performs the following actions:
It executes all subroutines registered using PERFORM ON COMMIT.
It triggers an internal event in Object Services that ensures the registration of changes in persistent objects as the last update function module, as well as the subsequent initialization of persistent object attributes.
It initiates the processing of all registered update function modules in the update work process.
This executes all high-priority update function modules registered using CALL FUNCTION ... IN UPDATE TASK in the order of their registration and in a common database LUW. If you do not specify the addition AND WAIT, the program does not wait until the update work process has executed it (asynchronous updating). If you specify the addition AND WAIT, however, program processing after COMMIT WORK will not continue until the update work process has executed the high-priority update function modules (synchronous updating).
If all high-priority update function modules are completed successfully, the statement executes the low-priority update function modules together in a common database LUW.
In parallel, it also executes the individual function modules registered using CALL FUNCTION ... IN BACKGROUND TASK DESTINATION in a separate database LUW for each destination.
It handles all SAP locks set in the current program according to the value of the formal parameter _SCOPE of the corresponding lock function modules.
It triggers a database commit that also terminates the current database LUW.
The completion of statement COMMIT WORK triggers the event TRANSACTION_FINISHED of the system class CL_SYSTEM_TRANSACTION_STATE, where the parameter KIND has the value of the constant CL_SYSTEM_TRANSACTION_STATE=>COMMIT_WORK.
If the statement COMMIT WORK is executed by calling special programs, be aware of the following:
In a program executed using batch input, or if you have called the program using the USING addition of the statement CALL TRANSACTION, COMMIT WORK terminates the batch input processing when using the corresponding settings.
In a program called using CALL DIALOG, COMMIT WORK initiates the processing of subroutines or updated function modules registered using PERFORM ... ON COMMIT and CALL FUNCTION ... IN UPDATE TASK. Therefore, it does not complete the current SAP LUW. The SAP LUW cannot be completed until you execute the COMMIT WORK statement in the calling program.
You cannot execute the COMMIT WORK statement during the updating procedure or during the execution of subroutines registered using PERFORM ... ON {COMMIT|ROLLBACK}.
System fields
sy-subrc Meaning
0 You have specified the AND WAIT addition, and the updating of the update function modules was successful.
4 You have specified the AND WAIT addition, and the updating of the update function modules was not successful.
The COMMIT WORK statement always sets sy-subrc to 0 if the AND WAIT addition is not specified.
Note
The COMMIT WORK statement closes all database cursors . Open SQL statements that access a database cursor later ( SELECT loop and FETCH) raise an exception that cannot be handled.
Variant 2
COMMIT CONNECTION con.
Note
This statement is for internal use only.
It cannot be used in application programs.
Effect
The COMMIT command is not executed on the standard database, but only on the secondary database connection specified by con. con is the name of the database connection as it was specified in the table DBCON in the column CON_NAME. The database connection con can also be specified dynamically in the form (source_text) - the source_text field contains the name of the database connection. The source_text field must be of the type C or STRING.
On the specified secondary database connection, the database commit:
Closes all open database cursors (OPEN CURSOR)
Releases all database locks
Note
Note that the COMMIT CONNECTION DEFAULT statement unlike COMMIT WORK executes a pure database commit on the DEFAULT connection.
Exceptions
Non-Catchable Exceptions
Cause: COMMIT WORK is not possible in a FORM that was called using PERFORM ... ON COMMIT.
Runtime Error: COMMIT_IN_PERFORM_ON_COMMIT
Cause: COMMIT WORK is not allowed in the update.
Runtime Error: COMMIT_IN_POSTING
ROLLBACK WORK
Variants:
1. ROLLBACK WORK.
2. ROLLBACK CONNECTION con.
Effect
Terminates a SAP-LUW without storing the changes.
Variant 1
ROLLBACK WORK.
Effect
The statement ROLLBACK WORK closes the current SAP-LUW and opens a new one. In doing so, all change requests of the current SAP-LUW are canceled. To do this, ROLLBACK WORK carries out the following actions:
Executes all subprograms registered with PERFORM ON ROLLBACK.
Deletes all subprograms registered with PERFORM ON COMMIT.
Raises an internal exception in the Object Services that makes sure that the attributes of persistent objects are initialised.
Deletes all update function modules registered with CALL FUNCTION ...IN UPDATE TASK from the VBLOG and deletes all transactional remote Function Calls registered with CALL FUNCTION ... IN BACKGROUND TASK from ARFCSSTATE and from ARFCSDATA.
Removal of all SAP locks set in the current program in which the formal parameter _SCOPE of the lock function module was set to the value 2.
Triggers a database rollback, which also ends the current database-LUW.
After completion of the statement COMMIT WORK, the event TRANSACTION_FINISHED of the system class CL_SYSTEM_TRANSACTION_STATE is raised, in which the parameter KIND has the value of the constant CL_SYSTEM_TRANSACTION_STATE=>ROLLBACK_WORK.
Variant 2
ROLLBACK CONNECTION con.
Note
This statement is for internal use only.
It cannot be used in application programs.
Effect
The ROLLBACK-statement is not executed on the standard database but only on the secondary database connection, specified through con. con is the name of the database connection as it was specified in table DBCON in column CON_NAME. The database connection con can also be specified dynamically in the form (source_text), in which the field source_text contains the name of the database connection. The field source_text must be of the type C or STRING.
Notes
As all opened database cursors on the respective database connections are closed at ROLLBACK, the attempt to continue a SELECT-loop after a ROLLBACK, leads to a runtime error. Due to the same reason, a FETCH after a ROLLBACK to the then closed cursor, leads to a runtime error. You have to make sure that cursors that are still open, are no longer used after ROLLBACK.
After execution of the statement ROLLBACK, SY-SUBRC is always equal to 0. It is not necessary to check if SY-SUBRC is unequal to 0 after ROLLBACK.
ROLLBACK must not be used during update (CALL FUNCTION ... IN UPDATE TASK) or during the execution of FORMs, which were registered with PERFORM ... ON COMMIT resp. PERFORM ...ON ROLLBACK.
The statement ROLLBACK WORK is implicitly executed if a message of the type A is treated with the addition ERROR_MESSAGE when calling a function module with CALL FUNCTION.
Exceptions
Non-Catchable Exceptions
Cause: ROLLBACK WORK is not allowed within a FORM that is called with PERFORM ... ON COMMIT or PERFORM ... ON ROLLBACK.
Runtime Error: ROLLBACK_IN_PERFORM_ON_COMMIT
Cause: ROLLBACK WORK is not allowed within an update.
Runtime Error: ROLLBACK_IN_POSTING
SET UPDATE TASK LOCAL
Syntax
SET UPDATE TASK LOCAL.
Effect
This statement specifies that the high-priority update function modules - registered during the current SAP LUW using CALL FUNCTION ... IN UPDATE TASK - are registered in the ABAP memory instead of the VBLOG database table. In addition, it specifies that the current work process and not the update work process run these modules during the current database LUW, when the COMMIT WORK statement is executed. This statement has no effect on low-priority update function modules.
At the beginning of every SAP LUW, the local update function is deactivated. If you wish to use it, you must reactivate it again before the first update function module is registered.
System fields
sy-subrc Meaning
0 The local update function is activated.
1 The local update function has not been activated, because the program has already registered at least one update function module for the normal updating procedure in the current SAP-LUW.
Notes
The local update function performs a synchronous update according to the COMMIT WORK statement, independent of the addition AND WAIT.
The occurrence of a database rollback during the local update affects all previous change requests.
Regards
vasu -
Can I create my own logical unit of work (LUW)?
Good day, everyone!
This is an off-shoot to a Why does the NOCOMMIT parameter not work in HR_INFOTYPE_OPERATION? yesterday in this forum.
It appears that the FM I'm calling is going to do a commit, no matter what. The only thing I can tell is that the NOCOMMIT parameter is used to do a rollback only in the event of a problem.
What I'd like to do is somehow "encapsulate" my call to this function with my own "LUW" designation so that, depending on what a user selects in a selection screen (run as test only? checkbox) I can rollback changes on my own. Unfortunately, I don't know if this is even possible and, if so, how to do it. I need to do something because the end users running this function would like to be able to do a "test run" of all the address transactions to see if there's any errors, data that still needs cleaned up, etc.
Any ideas? Points awarded for all helpful answers, as always.Hai Dave Packard
Go through the following Link
For Logical database
Logical Unit of Work (LUW)
A Logical Unit of Work (LUW or database transaction) is an inseparable sequence of database operations which must be executed either in its entirety or not at all. For the database system, it thus constitutes a unit.
LUWs help to guarantee database integrity. When an LUW has been successfully concluded, the database is once again in a correct state. If, however, an error occurs within an LUW, all database changes made since the beginning of the LUW are canceled and the database is then in the same state as before the LUW started.
An LUW begins
each time you start a transaction
when the database changes of the previous LUW have been confirmed (database commit) or
when the database changes of the previous LUW have been cancelled (database rollback)
An LUW ends
when the database changes have been confirmed (database commit) or
when the database changes have been canceled (database rollback)
Database commit and rollback
Within an LUW, database changes are not made until after a database commit. Prior to this, any database change can be canceled by a database rollback.
In the R/3 System, a database commit is triggered either automatically or by the ABAP/4 command COMMIT WORK or the appropriate Native SQL command for the database system.
Similarly, a database rollback is triggered either automatically or by the ABAP/4 command ROLLBACK WORK or the appropriate Native SQL command for the database system.
A database commit is triggered automatically by
each screen change, and especially after the ABAP/4 commands CALL SCREEN, CALL DIALOG, CALL TRANSACTION, MESSAGE or
a Remote Function Call
A database rollback is triggered automatically by
errors which occur at runtime or
the ABAP/4 command MESSAGE with the message type 'A'
After each database commit or rollback, the database locks set in the LUW are released (see Database Locking).
Thanks & regards
Sreenivasulu P
Message was edited by: Sreenivasulu Ponnadi -
Dear Guru's
I just want to know the reason why ?
if I place my break point in the code between select and endselect, it throws a dump ?
Regards,
PAVAN.A breakpoint in SELECT loops can cause an exception through loss of the database cursor. The reason for this is that - during debugging - a database Commit is triggered.
See <a href="http://www.sapfans.com/forums/viewtopic.php?t=169464&highlight=&sid=418f3ccc51dca0f3cc982e5d04107cb7">Debug mode</a> for more details.
Ps: Reward points if helpful.
Maybe you are looking for
-
Returning error messages from media server
My application requires that I can get detailed feedback from the FMS upon a given failure. For instance, if I try to open a stream who's file does not exist, is it possible to have a message or error code returned to Flash so that I can deal with th
-
Price in Goods Receipt is picked from Info Record
Hi All, I have created an Info Record with 2 validity periods: 01/09/2007 to 31/11/2010 = Rs.100 01/12/2010 to 31/12/9999 = Rs. 110 While creating the scheduling agreement, I have changed the price from 110 to 120. While posting the goods receipt, sy
-
How do I show the entire name of a folder or document? The previous version of pdf did not truncate folder or pdf names/titles.
-
Problems playing SVG animations
Dear Apple It was extremely nice news that you have added the SVG support to Safari 3.0. We would be more than happy to add Apple iPod and iPhone users to our community the fans of "The Spoon" animations. However, when testing my SVG animations with
-
Adding of values problem in the report
Hi All, I have a reporting requirement like below. Object 1 Object 2 Ob1 + Ob2 $ 1,534,080 $ 294,697 $ 294,698,302 $ 2,750,761 $ 0 $ 2,751 $ 715,028