Hi,
I have developed Jscript for the below requirements.
MWS420 screen, we need to show user against Wave no.
CMS API is used extract users



It shows the expected output when we are executing in the Jscript tool.
But, after deployment, we are getting different results from the same jscript.
Do you have any idea about this?
Output with Jscript tool (this is correct)

If we deployed, we have a different result.

I have restarted the UI components also.
This is my code
import System;
import System.Windows;
import System.Windows.Controls;
import MForms;
import Mango.UI;
import Lawson.M3.MI;
import System.Windows.Input;
import System.ComponentModel; // Background Worker
import System.Windows.Controls.ScrollViewer;
import System.Collections;
import Mango.UI.Services.Lists;
import Mango.UI.Utils;
package MForms.JScript {
class MWS420_B_PickingListReportChangedBy {
var debug;
var controller;
var content;
var SortingOrder;
var listView;
var listControl;
var rows: IList;
var columns;
var WHLO;
var rowIndex;
var scrollViewer: System.Windows.Controls.ScrollViewer;
public function Init(element: Object, args: Object, controller: Object, debug: Object) {
debug.WriteLine("Script Initializing.");
this.debug = debug;
this.controller = controller;
this.content = controller.RenderEngine.Content;
this.WHLO = ScriptUtil.FindChild(content, "WWWHLO").Text;//Get Warehouse
this.rowIndex = 0;// Initiate row index as 0
AddUserToGrid();//Add Change By column.
/* Register scrolling event*/
var handler: ScrollChangedEventHandler = OnScrollChanged;
listView.AddHandler(ScrollViewer.ScrollChangedEvent, handler);
this.controller.add_RequestCompleted(OnRequestCompleted);
//SetWaitCursor(false);
}
/**
* Add ChangeBy column and its data.
*/
function AddUserToGrid() {
this.SortingOrder = this.controller.PanelState.SortingOrder;
debug.WriteLine("SortingOrder:" + this.SortingOrder);
//Check whther sorting order is correct.
if (this.SortingOrder == '1' || this.SortingOrder == '2' || this.SortingOrder == '3' || this.SortingOrder == '84') {
try {
AddColumn();//Add column.
SetColumnData();//Set column data.
this.controller.add_RequestCompleted(OnRequestCompleted);
} catch (ex: Exception) {
debug.WriteLine(ex);
}
}
controller.add_RequestCompleted(OnRequestCompleted);
}
/*
* Create column in the grid.
*/
function AddColumn() {
this.listView = this.controller.RenderEngine.ListViewControl;
this.listControl = this.controller.RenderEngine.ListControl;
this.columns = listView.View.Columns;
// Add Header.
var columnHeader = new GridViewColumnHeader();
columnHeader.Content = "Changed by";
columnHeader.VerticalContentAlignment = VerticalAlignment.Top;
var column = new GridViewColumn();
column.Header = columnHeader;
column.CellTemplateSelector = new ListCellTemplateSelector(columns.Count, listControl.Columns);
this.columns.Add(column);
// Get version of List view.
if (this.listView.ItemsSource != null) {
debug.WriteLine("New version of ListView");
this.rows = IList(this.listView.ItemsSource); // Use the ItemsSource to get data
} else {
debug.WriteLine("Old version of ListView");
this.rows = this.listView.Items; //Get the items
}
}
/**
* Set data to the new column.
*/
function SetColumnData() {
if (this.rowIndex < this.rows.Count) {
var wavenumber = GetWaveNumber(this.rowIndex);
if(wavenumber!=''){
debug.WriteLine("wave: " + wavenumber);
CMS100MILstWave(wavenumber);
}else{
this.rowIndex++;
SetColumnData();
}
}
}
/**
* Set user via API.
*/
public function CMS100MILstWave(wave: String) {
try {
var program = "CMS100MI";
var transaction = "LstWave";
var record = new MIRecord();
record["PIWHLO"] = this.WHLO;
record["PIPLRI"] = wave;
var parameters = new MIParameters();
parameters.OutputFields = ['PICHID'];
parameters.MaxReturnedRecords = 1;//Extract 1st record only.
//SetWaitCursor(false);
MIWorker.Run(program, transaction, record, CMS100MILstWaveResolver, parameters);
} catch (ex) {
debug.WriteLine("Exception: " + ex);
}
}
/*
* MI response.
* Create cells in the column.
* Set user to the added column.
*/
public function CMS100MILstWaveResolver(response: MIResponse) {
var rows = this.rows;
var columns = this.columns;
var index = this.columns.Count - 1;
var rowIndex = this.rowIndex;
this.rowIndex++;
try {
if (response != null && !response.HasError) {
for (var item in response.Items) {
var user = item.GetString("PICHID");
var columnCount = columns.Count
for (var i = 0; i < rows.Count; i++) {
var row = rows[i];
var newItems = new String[columnCount];
row.Items.CopyTo(newItems, 0);
row.Items = newItems;
rows.RemoveAt(i);
rows.Insert(i, row);
}
for (var row in rows) {
AddCellsToRow(row, columnCount);
rows[rowIndex].Items[index] = user;
debug.WriteLine("User:"+user);
}
//SetWaitCursor(false);
SetColumnData();
}
//SetWaitCursor(false);
} else {
this.rowIndex++;
//SetWaitCursor(false);
debug.WriteLine("API response has error...");
}
} catch (ex) {
//SetWaitCursor(false);
this.rowIndex++;
debug.WriteLine("API response has error !!!");
}
}
/*
* Get wave number of the row.
*/
function GetWaveNumber(row) {
var columnIndex = GetColumnIndexForColumn('PLRI');
var value = this.rows[row].Item[columnIndex];
return value;
}
private function AddCellsToRow(row, cellCount) {
var items = new Object[cellCount];
row.Items.CopyTo(items, 0);
row.Items = items;
}
/*** Load Data to the Grid upon Scroll Operation ***/
function OnScrollChanged(sender: Object, e: ScrollChangedEventArgs) {
try {
SetColumnData();
} catch (ex) {
debug.WriteLine(ex);
//SetWaitCursor(false);
}
}
public function OnRequestCompleted(sender: Object, e: RequestEventArgs) {
debug.WriteLine(e.CommandType + ":" + e.CommandValue);
try {
if ((e.CommandType == "KEY" && e.CommandValue != "F5") || e.CommandType == "LSTOPT"){
this.controller.PressKey("F5");
this.controller.remove_RequestCompleted(OnRequestCompleted);
}
} catch (ex) {
debug.Error("OnRequested", ex);
}
}
private function SetWaitCursor(wait) {
var element = controller.Host.Implementation;
element.Cursor = wait ? Cursors.Wait : Cursors.Arrow;
element.ForceCursor = true;
}
/* Function To Get Column Index for Specified Column Name */
function GetColumnIndexForColumn(columnName: String) {
var columns = listControl.Columns;
var columnIndex = -1;
for (var i = 0; i < columns.Count; i++) {
if (columns[i] == columnName) {
columnIndex = i;
}
}
return columnIndex;
}
}
}
Thanks
N