Basic example of Table Scroll using VA02/VA03.
LiquidUI Code:
//////////////////////////////////////////////////////////////////////////////////////////////////////////////
// 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"});
inputfield([5+i,52], {"nolabel":true, "readonly":true, "size":18, "name":"z_va03_desc_&V"});
inputfield([5+i,72], {"nolabel":true, "readonly":true, "size":15, "name":"z_va03_mat_&V"});
}
//////////////////////////////////////////////////////////////////////////////////////////////////////////////
// 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:;
}
See attachments