Author Topic: LiquidUI: Creating a Class  (Read 7095 times)

chirag.amin@guixt.com

  • GuiXT Forum
  • Newbie
  • *
  • Posts: 34
    • View Profile
LiquidUI: Creating a Class
« on: August 18, 2016, 12:43:16 PM »
In this example, a Class called Item will be created. This class will have attributes like Material and Quantity. Using a class to hold this data helps the code be more modular and makes it easier to access data pertaining to a single item.

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

// This function creates a class for Item
function Item(itm,mat,qty,su){
   // Attributes of the class
   this.item = itm;
   this.material = mat;
   this.quantity = qty;
   this.sales_unit = su;
   // Function used to retrieve information on Item
   this.getInfo = function(){
      return "Item:"+this.item+", Material:"+this.material+", Quantity:"+this.quantity+", Sales Unit:"+this.sales_unit;
   }

}


// Only execute the following for VA03
if(_transaction == "VA03"){
   // Pushbutton that will trigger the funciton
   pushbutton("F[Order]+[0,62]", "Display items", "?", {"process":fetchItems});
   
   // If item_array is undefined, intialize it
   if(!item_array){
      item_array = [];
   }
   
   // If the array has data in it
   if(item_array.length>0){
      // Create a table and columns
      table([16,0], [26,50], {"name":"z_table", "title":"Line Items", "rows":item_array.length});
      column("Item", {"size":6,"name":"z_item", "table":"z_table"});
      column("Material", {"size":18,"name":"z_mat", "table":"z_table"});
      column("Quantity", {"size":15,"name":"z_qty", "table":"z_table"});
      column("SU", {"size":3,"name":"z_su", "table":"z_table"});
      
      // Fill out the table
      for(i=0;i<item_array.length;i++){
         println(item_array.getInfo());
         z_table.z_item = item_array.item;
         z_table.z_mat = item_array.material;
         z_table.z_qty = item_array.quantity;
         z_table.z_su = item_array.sales_unit;
      }
   
   }
}



// This function will table scroll through the VA03 transaction and fetch the data from the table
function fetchItems(){
   onscreen 'SAPMV45A.0102'
      enter();
   onerror
      message(_message);
      enter("?");
      goto FUNC_END;
   onscreen 'SAPMV45A.4001'
      // Clear the value of item_array
      item_array = [];
      absrow = 1;
      enter("/ScrollToLine=&V[absrow]", {"table":"T[All items]"});

NEW_SCREEN:;
   onscreen 'SAPMV45A.4001'
      gettableattribute("T[All items]", {"firstvisiblerow":"FVR", "lastvisiblerow":"LVR", "lastrow":"LR"});
      relrow = 1;
NEW_ROW:;   
      println("absrow:"+absrow+", LVR:"+LVR+", LR:"+LR);
      // end of table?
      if(absrow>LR){             
         goto END_OF_TABLE;
      }
      // end of screen?
      if(absrow>LVR) {             
         goto NEW_SCREEN;
      }
      
      set("V[z_temp_item]", "&cell[All items,Item,&V[relrow]]");
      set("V[z_temp_mat]", "&cell[All items,Material,&V[relrow]]");
      set("V[z_temp_qty]", "&cell[All items,Order Quantity,&V[relrow]]");
      set("V[z_temp_su]", "&cell[All items,SU,&V[relrow]]");
      
      // Push a new Item to the array
      item_array.push(new Item(z_temp_item,z_temp_mat,z_temp_qty,z_temp_su));

      absrow++;
      relrow++;
      goto NEW_ROW;

END_OF_TABLE:;

      enter('/ScrollToLine=1', {"table":"T[All items]"});
      
   onscreen 'SAPMV45A.4001'
      enter("/3")

FUNC_END:;
}