The following section covers common issues that are most often encountered.
Issues
1. Wrong field values
The server returns an error like the following:
@0`0`3`3``0`UC`1`Status`Error`SWEC`8`0`2`Errors`0`2`0`Level0`0`
ErrMsg` Wrong field values or value types detected in field Request
Type. Please re-enter your field values. If you need additional
assistance, please refer to the documentation.
(SBL-UIF-00299)`ErrCode`21336`2`0`.
Cause
The values (parameters) in Siebel fields of a request are invalid. The reason would be values are hard coded while recording.
Fix
Manually correlate the field values from previous requests.
2. Back or Refresh Error
The Siebel application displays an error applet indicating the following:
We detected an Error which may have occurred for on or more of the following reasons:
We are unable to process your request. This is most likely because you used the
browser BACK or REFRESH button to get to this point.
and fix
Cause
This issue can be caused by the following conditions:
• The SWETS was not parameterized for the current request.
• The SWEC was not correlated correctly for the current request.
• The request was submitted twice to the Siebel server without the SWEC being updated.
• The frame was not created on the server, possibly because the SWEMethod has changed since the script was recorded. A previous request should have set up a frame for the browser to download.
Fix
To resolve this issue, try the following fixes:
• Make sure that SWETS is parameterized.
• Make sure that you reset the SWE Count to the SWEC value of the first request in the iteration
at the beginning of the iteration.
If these fixes do not resolve the issue, rerecord the script.
3. No Content HTTP Response
The server returns an error like the following:
HTTP/1.1 204 No Content
Server: Microsoft-IIS/5.0
Date: Fri, 31 Jan 2003 21:52:30 GMT
Content-Language: en
Cache-Control: no-cache
Cause
The row ID is not properly correlated.
Fix
Manually correlate the row ID.
4. Same Values Error
The server returns an error like the following:
@0`0`3`3``0`UC`1`Status`Error`SWEC`10`0`1`Errors`0`2`0`Level0`0`
ErrMsg`The same values for 'Name' already exist. If you would like to
enter a new record, pleaseensure that the field values are unique.
`ErrCode`28591`
Cause
One of the values in this request (in the previous code example, it is the value for the Name field)
is the same as a value in another row in the database table.
Fix
You must replace this value with a unique value for each iteration for each user. The recommended
solution is to use the row ID parameter for the value; this causes the value to be unique.
5. Restoring the Context Error
The server returns an error like the following:
@0`0`3`3``0`UC`1`Status`Error`SWEC`9`0`1`Errors`0`2`0`Level0`0`
ErrMsg`An error happened during restoring the context for requested
location`ErrCode`27631`
Cause
The row ID is not properly correlated.
Fix
Manually correlate the row ID.
6. Cannot Locate Record Error
The server returns an error like the following:
@0`0`3`3``0`UC`1`Status`Error`SWEC`23`0`2`Errors`0`2`0`Level0`0`
ErrMsg`Cannot locate record within view: Contact Detail - Opportunities
View applet: Opportunity List Applet.`ErrCode`27573`
Cause
The input name SWERowId does not contain a row ID for a record on the Web page. This input name
should have been parameterized. The parameter's source value may have changed its location.
Fix
Manually correlate the row ID.
7. End of File Error
The server returns an error like the following:
@0`0`3`3``0`UC`1`Status`Error`SWEC`28`0`1`Errors`0`2`0`Level0`0`
ErrMsg`An end of file error has occurred. Please continue or ask your
systems administrator to check your application configuration if the
problem persists.`ErrCode`28601`
Cause
The input name SWERowId does not contain a row ID for a record on the Web page. This input name
should have been parameterized. The parameter's source value may have changed its location.
Fix
Manually correlate the row ID.
Showing posts with label Siebel Correlation. Show all posts
Showing posts with label Siebel Correlation. Show all posts
Sunday, October 25, 2009
Monday, September 28, 2009
Siebel Correlation with custom code in LoadRunner
“Siebel _Star_Array” is a function generated by LoadRunner for correlating Siebel field values separated by Token "*". A sample format of the server response is given below and these field values are required to pass to the subsequent requests.
"1*N9*1-18506217*GEOFFTH4*Open10*Unassigned3*OEM12*Hardware-OEM14*Administrative1*01*010*Symptom X18*MSE-Perf7*GEOFFTH1*112*Geoff Thomas1*10*6* Normal19*10/16/2002 03:40:127*Sev - 47*1-13NY5"
Last Character/s (Highlighted in Red) in each of the fields denotes the length of the next field values. Because of which left and right boundaries will be dynamic and difficult to correlate.
The below "siebel _Star_Array” function provided with LoadRunner has some limitations and does not work at all times. It is it is tough to debug the errors without the source code
web_reg_save_param("WCSParam96",
"LB/IC=`ValueArray`",
"RB/IC=`",
"Ord=10",
"Search=Body",
"RelFrameId=1",
"AutoCorrelationFunction=flCorrelationCallbackParseStarArray",
LAST);
The sample code I had created can be used to parse the response and use it for correlation when compared to the Loadrunner Automactic Correlation
vuser_init()
{
char str[1024];
char separators[] = "*";
char *token;
char arrValues[50][20];
char arrFinalValues[50][20];
int i;
int j;
int length_old;
int length_new;
char newlength[2];
char actualValue[20];
/****************** Sample Text format****************************** */
strcpy(str, "1*N9*1-18506217*GEOFFTH4*Open10*Unassigned3*OEM12*Hardware-OEM14*Administrative1*01*010*Symptom X18*MSE-Perf7*GEOFFTH1*112*Geoff Thomas1*10*3 - Normal19*10/16/2002 03:40:127*Sev - 47*1-13NY5");
lr_output_message("%s",str);
/***** The following code will be used to split the text into strings based on the token *******/
token = (char *)strtok(str, separators); /* Get the first token */
if(!token) {
lr_output_message("No tokens found in string!");
return( -1 );
}
i=0;
while( token != NULL ) { /* While valid tokens are returned */
strcpy(arrValues[i],token);
lr_output_message("Initial array values is %s",arrValues[i]);
token = (char *)strtok(NULL, separators); /* Get the next token */
i++;
}
/*******************************************************************/
/*************** To remove Trail charecters ***********************/
for (j=0; j less than i; j++) //use lessthan sysmbol
{
if (j==0) {
strcpy(arrFinalValues[j],arrValues[j]);
length_old=strlen(arrValues[j]);
}
else{
length_new=strlen(arrValues[j]);
strncpy(arrFinalValues[j], arrValues[j], length_old);
if(length_new>length_old+1){
sprintf(newlength,"%c%c",arrValues[j][length_old],arrValues[j][length_old+1]);
length_old=atoi(newlength);
}
else{
sprintf(newlength,"%c",arrValues[j][length_old]);
length_old=atoi(newlength);
}//End of Else
}//End of Out Else
}//End of For
/* Final Data in the Array are */
for (j=0; j less than i; j++)//less than symbol
{
lr_output_message("Values after removing tail charecters %s",arrFinalValues[j]);
}
return 0;
}
"1*N9*1-18506217*GEOFFTH4*Open10*Unassigned3*OEM12*Hardware-OEM14*Administrative1*01*010*Symptom X18*MSE-Perf7*GEOFFTH1*112*Geoff Thomas1*10*6* Normal19*10/16/2002 03:40:127*Sev - 47*1-13NY5"
Last Character/s (Highlighted in Red) in each of the fields denotes the length of the next field values. Because of which left and right boundaries will be dynamic and difficult to correlate.
The below "siebel _Star_Array” function provided with LoadRunner has some limitations and does not work at all times. It is it is tough to debug the errors without the source code
web_reg_save_param("WCSParam96",
"LB/IC=`ValueArray`",
"RB/IC=`",
"Ord=10",
"Search=Body",
"RelFrameId=1",
"AutoCorrelationFunction=flCorrelationCallbackParseStarArray",
LAST);
The sample code I had created can be used to parse the response and use it for correlation when compared to the Loadrunner Automactic Correlation
vuser_init()
{
char str[1024];
char separators[] = "*";
char *token;
char arrValues[50][20];
char arrFinalValues[50][20];
int i;
int j;
int length_old;
int length_new;
char newlength[2];
char actualValue[20];
/****************** Sample Text format****************************** */
strcpy(str, "1*N9*1-18506217*GEOFFTH4*Open10*Unassigned3*OEM12*Hardware-OEM14*Administrative1*01*010*Symptom X18*MSE-Perf7*GEOFFTH1*112*Geoff Thomas1*10*3 - Normal19*10/16/2002 03:40:127*Sev - 47*1-13NY5");
lr_output_message("%s",str);
/***** The following code will be used to split the text into strings based on the token *******/
token = (char *)strtok(str, separators); /* Get the first token */
if(!token) {
lr_output_message("No tokens found in string!");
return( -1 );
}
i=0;
while( token != NULL ) { /* While valid tokens are returned */
strcpy(arrValues[i],token);
lr_output_message("Initial array values is %s",arrValues[i]);
token = (char *)strtok(NULL, separators); /* Get the next token */
i++;
}
/*******************************************************************/
/*************** To remove Trail charecters ***********************/
for (j=0; j less than i; j++) //use lessthan sysmbol
{
if (j==0) {
strcpy(arrFinalValues[j],arrValues[j]);
length_old=strlen(arrValues[j]);
}
else{
length_new=strlen(arrValues[j]);
strncpy(arrFinalValues[j], arrValues[j], length_old);
if(length_new>length_old+1){
sprintf(newlength,"%c%c",arrValues[j][length_old],arrValues[j][length_old+1]);
length_old=atoi(newlength);
}
else{
sprintf(newlength,"%c",arrValues[j][length_old]);
length_old=atoi(newlength);
}//End of Else
}//End of Out Else
}//End of For
/* Final Data in the Array are */
for (j=0; j less than i; j++)//less than symbol
{
lr_output_message("Values after removing tail charecters %s",arrFinalValues[j]);
}
return 0;
}
Subscribe to:
Posts (Atom)