Error ORA-01407 updating field from business service

I am trying to update the value of a BC field using Business Service. Performing it, I get the following error:

ORA-01407: cannot update ("SIEBEL".""."MODIFICATION_NUM") to NULL. 

Since Modification Num is a system field, there is no chance that I will even touch this particular column. It is impossible to understand why this error occurs.

+4
source share
9 answers

I think that, most likely, your service record record calls the code in the business component, which works conditionally, and then forces the record record from the code of the business component. This could be done either explicitly in the code of the business component, or implicitly use some of the ways in which the script can interact with the component. As soon as this happens, then recording a service record that is trying to increase the modification number may not be able to do this, since this modification number is incremented with a possible BC code, and you get this error. To solve the problem, I would check the offensive BC and comment out the code on events like PreSetFieldValue, SetFieldValue, PreWriteRecord, etc., And see if the error continues as an initial test. Then you will need to isolate the part of the BC code that is causing the error.

+1
source

If you look at MODIFICATION_NUM, it will always increase by one each time you save a record. I believe this is exactly how Siebel detects if another user has modified the record. You can try the following: start updating the record, but not save it yet. Log in as a different user from another computer or only in a separate browser window and update the same record and save it. Now return to the first user and try to save the record. An error message will appear.

In any case, if you create a new record, set MODIFICATION_NUM to 0. If you update the record, increase MODIFICATION_NUM by 1.

In general, it would be wise to use EIM or other officially supported tools (such as the Java Data Bean) to update Siebel records.

0
source

Please check the user ID you are using. Usually, if write access is not specified in the database, this identifier..it can update update_num with zero

0
source

Most likely, either you have an error in your code (you should post a sample here to get any help!), There is something confused in the configuration of the corresponding Siebel objects (check the base BC to see if someone added the configuration or code causing the error), or it is a known error in Siebel (search in Siebel SupportWeb).

0
source

The first step is to find a tire that is trying to cross out your mod number. To do this, you will need to find SQL that updates the mod number (it will be the one that will be immediately before your error), and then find the buscomp that runs this SQL (from the ObjMgrSqlObjLog log entry immediately before SQL). Change both events of ObjMgrSqlLog and ObjMgrSqlObjLog to 4 and reproduce your error and this should give you what you are looking for.

Then find the field (or fields) on the bus that appears in the MODIFICATION_NUM column.

Finally, find out what clearing this field is and fixing it. It could be a script, an integration point, a workflow process, a support for the buscomp user, etc.

Good luck.

0
source

The guess is that you have mapped a custom field to MODIFICATION_NUM (which you should never do) and made this field active, either by code or in the user interface. Check your BC to use the MODIFICATION_NUM column.

0
source

Please check if the BC query has a field mapped to the modify_num column (the system column should never be added to custom fields), or check if the record of the record causes a user service record that explicitly saves the record, which should throw another error like "record you are trying to change has already been changed. "

0
source

Perhaps you are using WriteRecord () twice in the same function or method. Can you check it out?

Regards.

0
source

All Articles