Associative Arrays in Siebel Escript, allow us to use strings instead of numbers in the indices of the array. For example, if we have an associative array called "myArray" whereby we store the age of a few contacts, we can fill it with elements as follows:
myArray["Tim"]=25;
myArray["Tom"]=30;
myArray["Jane"]=22;
One advantage of associative arrays is that they can be used in the for...in statement. However we should be careful with a few things which otherwise may result in bugs in our code. These are the following:
Let's say we fill in our associative array, myArray, using a for loop as follows:
for(i=9; i<11; i++)
{
myArray[i] = i*5;
}
After the above code has executed, our array will contain the following:
myArray[9] = 45
myArray[10] = 50
Now, if we use the array in a for...in statement, where let's assume "write" is a function that writes the content of the array in a file on seperate lines:
for( var x in myArray)
{
write(myArray[x]);
}
In the file, we will see,
50
45
In the for...in statement, the index 10 was read before the index 9. This happened because in associative arrays, the indices are treated as strings and hence 10 comes before 9. Therefore, we should be careful in case the sequence in which our elements are read from the associative array is important for our application.
where there is a will, there is a way. believe in yourself
Friday, August 6, 2010
Tuesday, June 8, 2010
SIEBEL IF_ROW_STAT IN_PROGRESS due to SBL-EIM-00107
Error: IF_ROW_STAT shows IN_PROGRESS after EIM process has completed.
Possible Cause: Unique constraint violated. Check the EIM log file for the definite cause. If you don't find anything in the EIM log file, try increasing the log level. If trying to populate s_loy_txn for example, and we get IF_ROW_STAT IN_PROGRESS, then if the problem is truly because of the unique constraint being violated then we should expect to see the following in the EIM log file:
[DataDirect][ODBC Oracle driver][Oracle]ORA-00001: unique constraint (SIEBEL.S_LOY_TXN_U1) violated
Error SBL-EIM-00107: ODBC error 23000:
[DataDirect][ODBC Oracle driver][Oracle]ORA-00001: unique constraint
(SIEBEL.S_LOY_TXN_U1) violated
(native error 1)
Error SBL-EIM-00107: ODBC error 23000:
[DataDirect][ODBC Oracle driver][Oracle]ORA-00001: unique constraint
(SIEBEL.S_LOY_TXN_U1) violated
(native error 1)
Step 9: inserting new rows S_LOY_TXN 1s
Process [Import EIM_LOY_TXN] had all rows fail
on EIM_LOY_TXN for batch 6020000 in step 9, pass 528:
Import processing aborted due to SQL error. (severity 1, table aborted)
A low-level error occurred during import processing for this table. The error
could not be handled during the step in which it occurred and caused all import
processing for that table to stop.
ODBC error 23000: [DataDirect][ODBC Oracle driver][Oracle]ORA-00001: unique
onstraint (SIEBEL.S_LOY_TXN_U1) violated
This low-level failure caused all processing to halt for the specified
interface table. Check the error messages for more information.
Possible Solution: Ensure that you are populating the row_id of the corresponding EIM table with unique values for each rows.
Possible Cause: Unique constraint violated. Check the EIM log file for the definite cause. If you don't find anything in the EIM log file, try increasing the log level. If trying to populate s_loy_txn for example, and we get IF_ROW_STAT IN_PROGRESS, then if the problem is truly because of the unique constraint being violated then we should expect to see the following in the EIM log file:
[DataDirect][ODBC Oracle driver][Oracle]ORA-00001: unique constraint (SIEBEL.S_LOY_TXN_U1) violated
Error SBL-EIM-00107: ODBC error 23000:
[DataDirect][ODBC Oracle driver][Oracle]ORA-00001: unique constraint
(SIEBEL.S_LOY_TXN_U1) violated
(native error 1)
Error SBL-EIM-00107: ODBC error 23000:
[DataDirect][ODBC Oracle driver][Oracle]ORA-00001: unique constraint
(SIEBEL.S_LOY_TXN_U1) violated
(native error 1)
Step 9: inserting new rows S_LOY_TXN 1s
Process [Import EIM_LOY_TXN] had all rows fail
on EIM_LOY_TXN for batch 6020000 in step 9, pass 528:
Import processing aborted due to SQL error. (severity 1, table aborted)
A low-level error occurred during import processing for this table. The error
could not be handled during the step in which it occurred and caused all import
processing for that table to stop.
ODBC error 23000: [DataDirect][ODBC Oracle driver][Oracle]ORA-00001: unique
onstraint (SIEBEL.S_LOY_TXN_U1) violated
This low-level failure caused all processing to halt for the specified
interface table. Check the error messages for more information.
Possible Solution: Ensure that you are populating the row_id of the corresponding EIM table with unique values for each rows.
Labels:
EIM,
IF_ROW_STAT,
IN_PROGRESS,
SBL-EIM-00107,
Siebel
Tuesday, June 1, 2010
Informatica: Lookup not returning data
Symptom: A lookup in informatica is not returning a row or rows of data, even if it is being supplied with the correct lookup condition values.
Possible Solution: If the field used in the lookup condition is type text in the database and that same field is being treated as type number in the informatica mapping, then this might cause the lookup not to work properly. In informatica, most probably, the field value will be having a decimal followed by zeroes since it is being treated as a number. This will not be the case in the database, since it is of type Text. So in the lookup we will be doing a comparison such as "20.0000000 = 20", for example and it will not find the record. To prevent such a situation, in the informatica mapping, an expression such as TO_CHAR(ROUND(FIELD_NAME,0)) can be used to convert the field value to type Text just prior to sending it as input to the lookup. This solution will work, if the value stored in database is a whole number.
Informatica Database Error
Error Message: SQL Server Message: INSERT statement conflicted with COLUMN FOREIGN KEY constraint 'XXX'. The conflict occurred in database 'YYY', table 'ZZZ', column 'AAA'.
Issue Description: When running a session in informatica, the session succeeded, but there were target failed rows. Upon inspection of the session log file, the following database error was noted: SQL Server Message: INSERT statement conflicted with COLUMN FOREIGN KEY constraint 'XXX'. The conflict occurred in database 'YYY', table 'ZZZ', column 'AAA'.
Issue Resolution: The informatica mapping was correct. The problem was that there were parent-child tables that were being populated and child records were being populated before the parent records. Due to this, at database level, since the parent record did not exist at the time the child was being populated, the record was rejected to maintain the database integrity. To solve this:
(1) You can enable constraint based loading for that session. For this, the parent-child relationships need to be defined at informatica level as well, in the warehouse designer.
(2) Modify the target load plan in designer.
(3) Remove the foreign key constraint at database level if you are sure that the data being populated by informatica will not corrupt the database integrity. However, this solution is not recommended.
Thursday, May 27, 2010
Informatica: Error using PMCMD
Error: The connect request failed because the client application is trying to connect to server type [pmserver]. Repository server accepts only requests for server types REPSERVER and REPAGENT.
Issue Description: The project consisted of writing a batch file that would be able to call workflows in a loop. However, each time we tried to execute a PMCMD command, it failed and we got the message "The connect request failed because the client application is trying to connect to server type [pmserver]. Repository server accepts only requests for server types REPSERVER and REPAGENT."
Issue Resolution: In our case, we were getting the error message because we were providing the wrong port number when executing the PMCMD command. Once we used the correct port number, we were able to execute the PMCMD commands from our batch file and we managed to execute workflows in a loop.
Labels:
batch file,
informatica,
loop workflow,
PMCMD
Informatica: Error when validating source qualifier query
Error: Query should return exactly 3 field(s) to match field(s) projected from the Source Qualifier.
Issue Description: When validating a source qualifier query, the message "Query should return exactly 3 field(s) to match field(s) projected from the Source Qualifier." appears.
Issue Resolution:
(1) Ensure that the query is returning the same number of columns as there are ports in the source qualifier.
(2) Ensure that data is being fed to all the ports in the source qualifier. That is ensure that all the ports are connected.
(3) Ensure that data is going out from all the ports of the source qualifier. Again, ensure that all the ports are connected.
INFORMATICA TM_6100 ERROR
Error Message: TM_6100 ERROR: Insufficient number of data blocks.
Issue Description: When running a workflow, the workflow fails giving the error message: TM_6100 ERROR: Insufficient number of data blocks.
Issue Resolution: To resolve the above issue the DTM buffer size should be increased. In the log file the minimum size to which the buffer should be increased will be specified. To increase the size of the DTM buffer size, edit the properties of the session that has failed. (See Image Below) In the session log file, you should find the minimum size Informatica recommends you to increase the buffer size to.
Saturday, May 15, 2010
Sunday, May 2, 2010
The Power of Thoughts
Human beings are a race of dreamers . We all dream each and every day of our lives. For some of us, our dreams turn into reality. When we look at our world today, what do we see? We can find lots of buildings, vehicles, planes. These buildings, cars and planes were once the dream of some human beings who managed to turn them into reality. Mankind has placed satellites around our planet that accomplish different purposes. Some spacecrafts have even been sent to explore our Universe. At one time (long time back), in school books, when talking about the moon, it was being said that its impossible to go to the moon. Humans have turned this once impossible task into something possible and have already been to the moon. Since the beginning of existence, humans have constantly dared to challenge their limits only in an attempt to turn their dreams into reality
For someone to challenge his own limits requires lots of courage. To pursue that endeavour, till the end, will require determination and perseverance. To successfully complete that endeavour, one should believe in oneself at all stages. For example, for a shy person to go and deliver a speech in front of an audience might be a task for which that person will require lots of courage. Once that person is on stage, its determination and perseverance that will keep her/him there. And believing in herself/himself, more specifically, believing that she/he has what it takes to deliver a good speech, will allow her/him to grasp the attention of his audience and deliver an effective speech.
What does the previous paragraph resume to? It simply resumes to the fact that to get the courage, determination and perseverance to successfully pursue and complete a task one must believe in oneself. Believing in oneself means making our brain think that we can do it. Being able to do it implies that one has all the necessary capabilities required for completing that task successfully. Therefore, continuing along the same lines, believing in oneself would mean "Thinking that one has the necessary capabilities required for completing a particular task successfully". During this process of believing in oneself, usually one will imagine oneself doing that task and eventually succeeding.
Many amongst us still have to realise the power of our thoughts. Our thoughts are the seeds of the fruits that we will reap in future. What we constantly think about, is what we slowly but surely move towards. There are groups of people that prone positive thinking. These people realise that our thoughts have a major influence on our journey of life. Everyday we are confronted with different situations. How we live all these different situations and the outcome depends to a great extent on our mindset. We must do our best to remain positive under all circumstances and this will allow us to grow into better human beings and eventually emerge as winners.
Labels:
mind power,
positive thinking,
thought
Thursday, April 29, 2010
Siebel
Error Message: "This operation is not available for read-only field 'FIELDNAME'. (SBL-DAT-0042)
Issue Description: We had a customized business service in Siebel 8.0. The main task of the business service was to validate some data that it received as input and insert the data in the Siebel database. The business service was working fine until requirement changed and an additional field had to be populated. A column was created using siebel tools to cater for this new requirement. The new field to be populated was a picklist. After making the necessary changes to my integration object and business service, and compiling these ojects, I began my testing using business service simulator. Each time the business service tried to insert a value into that new field, it failed with the above error message. The read-only properties at field and business component level, or at any other level had not been set. I tried to look for solutions on the internet but nothing I found worked in my case.
Issue Resolution: Eventually I was able to find the cause of the problem. In fact I had this issue because prior to running my business service in the debug mode, I had missed out the compilation of important projects that were modified during the configuration of the new field. So after compiling those projects, I ran the business service again and the above error had dissappeared.
Hope that this article helps you solve your issue and save some time.
Issue Description: We had a customized business service in Siebel 8.0. The main task of the business service was to validate some data that it received as input and insert the data in the Siebel database. The business service was working fine until requirement changed and an additional field had to be populated. A column was created using siebel tools to cater for this new requirement. The new field to be populated was a picklist. After making the necessary changes to my integration object and business service, and compiling these ojects, I began my testing using business service simulator. Each time the business service tried to insert a value into that new field, it failed with the above error message. The read-only properties at field and business component level, or at any other level had not been set. I tried to look for solutions on the internet but nothing I found worked in my case.
Issue Resolution: Eventually I was able to find the cause of the problem. In fact I had this issue because prior to running my business service in the debug mode, I had missed out the compilation of important projects that were modified during the configuration of the new field. So after compiling those projects, I ran the business service again and the above error had dissappeared.
Hope that this article helps you solve your issue and save some time.
Labels:
Business Service,
Siebel,
Web Service
Subscribe to:
Posts (Atom)