Liquid UI - WS Reference Library

Table Scroll


Prerequisites


Runs On

  SAP GUI Android iOS WM Web
Direct Connect          
Liquid UI Server Connect        

Purpose

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

//SAPMV45A.E0102.sjs

// Author: Synactive, Inc. [1065 E. Hillsdale Blvd, Foster City, CA, 94404, USA]
// Email: support@guixt.com; sales@guixt.com;
// Contact: 650.341.3310
// Version: 1.0.0.0
// DESIGN
//////////////////////////////////////////////////////////////////////////////////////////////////////////////

onUIEvents['Enter']={"process":va03_execute};

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
if(!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]"});
}


// FUNCTIONS
//////////////////////////////////////////////////////////////////////////////////////////////////////////////

// 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
    onmessage
        if(_message.substring(0,2)=="E:"){
            message(_message);
            enter("?");
            goto FUNC_END;
        }
        else{
            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"});
new_screen:;
            // 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
new_row:;
            if(absrow>LVisRow){
                // end of the screen?
                goto new_screen;
            }
            if(absrow>LastRow){
                // 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
            z_item_toal++;
            absrow++;
            relrow++;
            goto new_row;
            
end_of_table:;
            // Scroll back to the top of the table
            enter("/ScrollToLine=1", {"table":"T[All items]"});
            
        onscreen 'SAPMV45A.4001'
            // Go back to the initial screen
            enter("/3");
FUNC_END:;
}