Liquid UI - WS Reference Library

Get required sales order data from SAP table



Basic example of Table Scroll using VA02/VA03.

User Interface

Navigate to VA02 or VA03 transaction. Enter a sales order and hit enter.

The sales order data will populate along with any items in the sales order.

Layout after data is fetched is shown below:

Liquid UI Script


// Author: Synactive, Inc. [1065 E. Hillsdale Blvd, Foster City, CA, 94404, USA]
// Email:;;
// Contact: 650.341.3310
// Version:


del("G[Search Criteria]");

pushbutton([TOOLBAR], "Reset", "?", {"process":clearValues});

box([4,0], [10,40], "Sales Order Data");
inputfield([5,2],"Standard Order",[5,17], {"size":10, "readonly":true, "name":"z_va03_standard_order"});
inputfield([6,2],"Sold-to Party",[6,17], {"size":10, "readonly":true, "name":"z_va03_sold_to"});
inputfield([7,2],"Ship-to Party",[7,17], {"size":10, "readonly":true, "name":"z_va03_ship_to"});
inputfield([8,2],"PO Number",[8,17], {"size":22, "readonly":true, "name":"z_va03_po_number", "maxlength":35});
inputfield([9,2],"PO date", [9,17], {"size":10, "readonly":true, "name":"z_va03_po_date"});

// Initialize z_item_toal
    z_item_toal = 0;

// Use z_item_toal to dynamically create the box size and run the for loop
box([4,42], [6+z_item_toal,90], "All items");
for(i=1; i<z_item_toal; i++){
    inputfield([5+i,44], {"nolabel":true, "readonly":true, "size":6, "name":"z_va03_item_&V[i]"});
    inputfield([5+i,52], {"nolabel":true, "readonly":true, "size":18, "name":"z_va03_desc_&V[i]"});
    inputfield([5+i,72], {"nolabel":true, "readonly":true, "size":15, "name":"z_va03_mat_&V[i]"});


// This function clears all variables we use, triggered on the pushbutton "Reset"
function clearValues(){
    set("V[z*]", "");

// This function will go to the next screen, grab the data and come back to the initial Sales Order screen
function va03_execute(){
    // Use an onmessage to capture any error the user may enter
            goto FUNC_END;
            enter();     // In case there is a warning message
        onscreen 'SAPMV45A.4001'
            // Grab the Sales Order Data
            set("V[z_va03_standard_order]","&F[Standard Order]");
            set("V[z_va03_sold_to]","&F[Sold-to party]");
            set("V[z_va03_ship_to]","&F[Ship-to party]");
            set("V[z_va03_po_number]","&F[PO Number]");
            set("V[z_va03_po_date]","&F[PO date]");
            // Table Scroll begins here    
            absrow = 1;
            relrow = 1;
            z_item_toal = 0;
            // Fetch the table attributes
            gettableattribute("T[All items]", {"firstvisiblerow":"FVisRow", "lastvisiblerow":"LVisRow", "lastrow":"LastRow"});
            // Scroll to the absolute row
            enter("/ScrollToLine=&V[absrow]", {"table":"T[All items]"});
        onscreen 'SAPMV45A.4001'
            // Refetch table attributes, in case they might of changed
            gettableattribute("T[All items]", {"firstvisiblerow":"FVisRow", "lastvisiblerow":"LVisRow", "lastrow":"LastRow"});
            // Reset the relevant row
            relrow = 1; // reset the relative row with a new screen
                // end of the screen?
                goto new_screen;
                // end of the table?
                goto end_of_table;
            // Grab the values we want from the row
            set("V[z_va03_item_&V[absrow]]","&cell[All items,Item,&V[relrow]]");
            set("V[z_va03_desc_&V[absrow]]","&cell[All items,Description,&V[relrow]]");
            set("V[z_va03_mat_&V[absrow]]","&cell[All items,Material,&V[relrow]]");
            // Increment out counters
            goto new_row;
            // Scroll back to the top of the table
            enter("/ScrollToLine=1", {"table":"T[All items]"});
        onscreen 'SAPMV45A.4001'
            // Go back to the initial screen



Was this information helpful? Send Feedback