Skip to Content
avatar image
Former Member

Errors when using LoadRunner with the Portal (eventQueue)

Hi,

I'm trying to script up a basic load test of the SAP Portal using Load Runner HTTP/HTML protocol. I've dome some correlation but I'm finding the web_submit_data functions seem to be passsing garbage for the eventQueue (see below).

"Name=eventQueue", "Value=BUTTONCLICKîx80u201AIdîx80u201AaaabLDOL.VcRfwIFrameView.PrevButtonTopîx80u201ACurrentFocusIdîx80u201AaaabLDOL.VcRfwIFrameView.PrevButtonTop", ENDITEM,

My Question is what kind of data is passed in the eventQueue. I'm trying to navigate through payslips and expecting a pdf document to appear within the portal.

Let me know if you need anymore info.

Thanks

Gavin

Add comment
10|10000 characters needed characters exceeded

  • Follow
  • Get RSS Feed

1 Answer

  • avatar image
    Former Member
    Oct 30, 2010 at 12:05 AM

    Although this might be a late reply, im sure a lot of people are going to view it as a useful resource

    Yes, this means that you about to test an SAP application written in Webdynpro, which means that there are some content that you need to convert in your code

    the HP loadrunner script will look something like this

    web_submit_data("sap-ext-sid_2",

    "Action=http://www.example.com:8000/sap/bc/webdynpro/SAP/ERC_A_WORKCENTER/;sap-ext-sid=",

    "Method=POST",

    "TargetFrame=",

    "RecContentType=text/html",

    "Referer=http://www.example.com:8000/sap/bc/webdynpro/SAP/ERC_A_WORKCENTER/;sap-ext-sid=",

    "Snapshot=t18.inf",

    "Mode=HTML",

    ITEMDATA,

    "Name=SAPEVENTQUEUE", "Value=Custom_ClientInfosE002IdE004WD01E005WindowOpenerExistsE004falseE005ClientURLE004http003A002F002Fwww.example.com003A8000002Fsap002Fbc002Fwebdynpro002FSAP002FERC_A_WORKCENTER002F003Bsap-ext-sid003DzuUt57Mx_3JozG7pOff002AEg U_0j6OHCaCQurUN1Pimp1Q E003E002ClientActionE004enqueueE005ResponseDataE004deltaE003E002E003E001TimeTrigger_TriggerE002IdE004WDE4E003E002ResponseDataE004deltaE005ClientActionE004submitE003E002E003", ENDITEM,

    "Name=sap-charset", "Value=utf-8", ENDITEM,

    "Name=_client_url_", "Value=", ENDITEM,

    LAST);

    when loadrunner executes the script, this kind of data transferred to SAP is not recognized, so you will need to plug in the below code and run the script and before that block of loadrunner recorded script, you will need to pass the sapqueueevent as a string

    Use the below code

    // This function replaces unreserved characters in a string with their encoded values.

    // Encoding is in the style of SAP Web Dynpro. E.g. "abd*def" becomes "abc~002Adef".

    // Reserved/unreserved characters are according to RFC3986 (http://tools.ietf.org/html/rfc3986)

    // This function returns a pointer to the start of the encoded string (buf).

    // Note that buf must be big enough to hold original string plus all converted entities.

    char* dynpro_encode(char* plain_string, char* buf) {

    int len = strlen(plain_string);

    int i,j;

    char hex_value[3];

    if (plain_string == NULL) {

    lr_error_message("Input string is empty.");

    return NULL;

    }

    for (i=0, j=0; i<len; i++) {

    // Check if character is in list of allowed characters.

    // A B C D E F G H I J K L M N O P Q R S T U V W X Y Z

    // a b c d e f g h i j k l m n o p q r s t u v w x y z

    // 0 1 2 3 4 5 6 7 8 9 - _ . ~

    if ( (plain_string<i> >= 'A' && plain_string<i> <= 'Z') ||

    (plain_string<i> >= 'a' && plain_string<i> <= 'z') ||

    (plain_string<i> >= '0' && plain_string<i> <= '9') ||

    (plain_string<i> == '-') ||

    (plain_string<i> == '_') ||

    (plain_string<i> == '.') ||

    (plain_string<i> == '~') ) {

    buf[j++] = plain_string<i>;

    } else if ( (plain_string<i> < 32 ) || (plain_string<i> > 126) ) {

    lr_error_message("Input string contains non-printable or non-ASCII character %c at position: %d", plain_string<i>, i);

    return NULL;

    } else {

    // The unicode value for use in url encoding is the same as the hex value for the ASCII character

    itoa(plain_string<i>, hex_value, 16);

    buf[j++] = '~';

    buf[j++] = '0';

    buf[j++] = '0';

    buf[j++] = toupper(hex_value[0]);

    buf[j++] = toupper(hex_value[1]);

    }

    }

    buf[j] = NULL; // terminate the string

    return buf;

    }

    Hope that helps

    Thanks

    Add comment
    10|10000 characters needed characters exceeded