Show Posts

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.


Messages - rajesh.sabbineni

Pages: [1] 2
1
Purpose: To update license key for Liquid UI Mobile Software

Steps to update the License on Handheld Device for Liquid UI Mobile Software:
Step 1: Connect the Handheld to computer (PC), so that the "SynMobile" Folder can be accessed.
Step 2: Copy and Paste the License file with extension ".Sy3" from "SynMobile" Folder to PC.
Step 3: Open the new license file provided by Synactive.
Step 4: Copy the [General] section until the line LLicense  from the new license file and update the lines in old license file.
            - Updating the license information in old license file will keep the previous SAP logon settings on the device.
Step 5: Save the updated License file and overwrite the file in "SynMobile" Folder on the handheld device.
Step 6: Start the Liquid UI Mobile application.

2
Desktop Product (SAP GUI, Excel and PDF) / SAP crash with RFC call
« on: September 09, 2019, 04:30:34 PM »
If SAP crashes while performing an RFC call, please copy below files to C:\Program Files (x86)\SAP\FrontEnd\SapGui from C:\Windows\SysWOW64 folder

icudt50.dll
icuin50.dll
icuuc50.dll




3
Using disabled option, pushbutton can be disabled.

pushbutton( [1,30], "Create Material","/nmm01", {'disabled':true});

//Dynamically disabling the pushbutton:

z_test = true;

pushbutton( [1,30], "Create Material","/nmm01", {'disabled':z_test});

Note: This option is available from Liquid UI server version 565 and Liquid UI Desktop version 326

4
If the function call ends with an "exception", no error message is shown to the user. To capture the exception use variable.exception

rfcresult = call("BAPI_USER_GET_DETAIL", {"in.USERNAME":"&V[_user]", "out.LOGONDATA":"z_logondata", "table.PARAMETER":"z_parameters"});

if(rfcresult.exception){
   return('E: '+rfcresult.exception);
}

Please refer to below link on how to call a function module:
http://www.guixt.com/forum/index.php?topic=45.msg49#msg49

5
Purpose
When a new session is opened through a function, old session Liquid UI design should  remain the same.

Liquid UI Code
//SAPLMGMM.E0060.sjs

// User interface
del("F[Material]");
del("F[Change Number]");
del("G[Copy from...]");
pos("F[Industry sector]", [4,58]);
pos("F[Material Type]", [5,58]);
box([2,45], [27,108], "");
box([7,47], [11,107], "Organizational Data");
radiobutton([8,49], "Plant 1000",{ "name":"z_mm01_plant", "value":1000});
radiobutton([8,69], "Plant 2000",{ "name":"z_mm01_plant", "value":2000});
radiobutton([8,89], "Plant 3000",{ "name":"z_mm01_plant", "value":3000});
inputfield( [10,49], "Stor.Loc", [10,60],{ "name":"z_mm01_storloc", "size":4, "required":true, "searchhelp":"H_T001L"});
box([13,47], [18,107], "Basic Data");
inputfield( [15,50], "Desc.", [15,60],{ "name":"z_mm01_desc", "size":32});
inputfield( [16,50], "BUOM", [16,60],{ "name":"z_mm01_buom", "size":2, "techname":"MARA-MEINS"});
inputfield( [17,50], "Mat grp", [17,60],{ "name":"z_mm01_matgrp", "size":7});
box([19,47], [23,107], "MRP Data");
inputfield( [21,50], "Mrp type", [21,61],{ "name":"z_mm01_mrptype", "size":5});
checkbox([24,49], "Bulk Material",{ "name":"z_mm01_blkmat"});
pushbutton([26,68], "@2L@Create Material   ",{ "process":mm01_create});
pushbutton([TOOLBAR],"List of materials","?",{"process":mb51_list_materials});

Functions
function mb51_list_materials(){
   onscreen 'SAPLMGMM.0060'
      mm01_screen();
      set("V[z_mm01_flag]", "X");
      enter("/oMB51");
}
// Screen design should be loaded in a function to keep the old session design
function mm01_screen(){   
   del("F[Material]");
   del("F[Change Number]");
   del("G[Copy from...]");
   pos("F[Industry sector]", [4,58]);
   pos("F[Material Type]", [5,58]);
   box([2,45], [27,108], "");
   box([7,47], [11,107], "Organizational Data");
   radiobutton([8,49], "Plant 1000",{ "name":"z_mm01_plant", "value":1000});
   radiobutton([8,69], "Plant 2000",{ "name":"z_mm01_plant", "value":2000});
   radiobutton([8,89], "Plant 3000",{ "name":"z_mm01_plant", "value":3000});
   inputfield( [10,49], "Stor.Loc", [10,60],{ "name":"z_mm01_storloc", "size":4, "required":true, "searchhelp":"H_T001L"});
   box([13,47], [18,107], "Basic Data");
   inputfield( [15,50], "Desc.", [15,60],{ "name":"z_mm01_desc", "size":32});
   inputfield( [16,50], "BUOM", [16,60],{ "name":"z_mm01_buom", "size":2, "techname":"MARA-MEINS"});
   inputfield( [17,50], "Mat grp", [17,60],{ "name":"z_mm01_matgrp", "size":7});
   box([19,47], [23,107], "MRP Data");
   inputfield( [21,50], "Mrp type", [21,61],{ "name":"z_mm01_mrptype", "size":5});
   checkbox([24,49], "Bulk Material",{ "name":"z_mm01_blkmat"});
   pushbutton([26,68], "@2L@Create Material   ",{ "process":mm01_create});
   pushbutton([TOOLBAR],"List of materials","?",{"process":mb51_list_materials});
}


See attachments for code sample

6
Purpose:
Some of the error messages will be displayed in a log. These messages should be displayed on status bar

Liquid UI Code:

//SAPLMIGO.E0001.sjs

//User interface
pushbutton([1,72], "Display log message",{ "process":logs_message});

// Function to display message on status bar

function logs_message(){
   onscreen 'SAPLMIGO.0001'
      set('F[Material]', '100-300');
      enter();

// Function prototype to trim blank characters from a string
String.prototype.trim = function () {
   return this.replace(/^\s+|\s+$/g, "");
}

   // Goods Issue Other
   onscreen 'SAPLMIGO.0001'
      enter('/7');  //Check

   // Goods Issue Other
   onscreen 'SAPLSBAL_DISPLAY.0120'
      for(j=0; j<3; j++){
         rb = new Reebok([2+j,1]);
         if(rb.name.toString().indexOf("Warning")>-1){
            if(isBlank(msg_type)){
               msg_type = 'W:';
               rb2 = new Reebok([2+j,10]);
               msg_content = rb2.name.substring(rb2.name.indexOf("@",2)+1, rb2.name.length).trim();
            }
         } else if(rb.name.toString().indexOf("Error")>-1){
            msg_type = 'E:';
            rb2 = new Reebok([2+j,10]);
            msg_content = rb2.name.substring(rb2.name.indexOf("@",2)+1, rb2.name.length).trim();
            break;
         }
      }
      enter();

   onscreen 'SAPLMIGO.0001'
      if(msg_type == 'E:'){
         message("E:"+msg_content);
      }   
      enter('?');
}

See attachments for code samples!

7
Purpose:
Clear table row selection of a Liquid UI table.


Liquid UI Code:

// SAPLSMTR_NAVIGATION.E0100.sjs

// User Interface
del("X[IMAGE_CONTAINER]");

item_array = ['10','20','30','40'];
material_array = ['L-10Y','100-300','L-80F','CP-100'];
plant_array = ['1000','1200','1200','1000'];
      
table([1,3], [10,27], {"name":"z_table", "title":"Material List","rows":100, "singlerowselection":true,"readonly":true});
column("Item", {"position":1,"table":"z_table","name":"z_itemcolumn", "size":4,"readonly":true});
column("Material", {"position":2,"table":"z_table","name":"z_matcolumn", "size":9,"maxlength":18,"readonly":true});
column("Plant", {"position":3,"table":"z_table","name":"z_plantcolumn", "size":4,"readonly":true});      

pushbutton( [1,30], "Clear Selection",{ "process":deSelect});

for(j=0;j<material_array.length;j++){
   z_table.z_itemcolumn[j] = item_array[j];
   z_table.z_matcolumn[j] = material_array[j];
   z_table.z_plantcolumn[j] = plant_array[j];      
}

// Function to clear the row selection
function deSelect(){
onscreen '*'
   for(j=0; j<item_array.length; j++){   // Deselect line items
      z_table.selectedrows[j] = " ";
   }
   enter('?');   

}

See attachments for code samples!

8
Using rfcconnect option in call command, data can be read from CRM system. RFC calls up the function module in the CRM system instead of the current system.

Note: This feature is available from LiquidUI Desktop version 299 and LiquidUI server version 526

Example:         
        if(_database=='DEV'){
         strRFCConnect = 'MSHOST=sc2ddb,R3NAME=C2D,GROUP=C2D-APP';      
        } else if(_database=='QAS'){
         strRFCConnect = 'ASHOST=sclqci,SYSNR=09';
        } else if(_database=='PRD'){
         strRFCConnect = 'ASHOST=sclpci,SYSNR=09';
        }
      
        call('Z_BUPA_GET_GUID', {"in.I_PARTNER":"z_va0x_custid", "out.E_BP_GUID":"z_va0x_guid", "rfcconnect":strRFCConnect});

       if(!isBlank(z_va0x_guid)){
         z_va0x_guid = z_va0x_guid.substring(0,32).trim();
         set("F[P_CONTACT_GUID]", '&V[z_va0x_guid]');
       }

Please refer to below link on rfcconnect command and also how to add parameters in rfcconnect statement
http://www.guixt.com/knowledge_base/index.php?action=artikel&cat=74&id=83&artlang=en

Please refer to below link on how to call a function module and retrieve data
http://www.guixt.com/forum/index.php?topic=45.0

9
Popup messages can be displayed using message command on SAP screens.

LiquidUI code:
pushbutton([TOOLBAR], "Message", {"process":displaymessage,"size":[1,2]});

Function to display message as a popup:
function displaymessage(){
   message("Message displayed as a popup", {"type":0,"title":"information"});  // type "0" is for ok button
}

Please refer to below link for other pop-up types
http://www.guixt.com/knowledge_base/index.php?action=artikel&cat=103&id=957&artlang=en


Please see attachments..


10
Logs and dump files gets generated when an unusual activity happens in the software.

Purpose:
In order to restrict  generation of log and dump files there is an option called dump available in configuration file (guixt.sjs)

dump=4;

Environment:
 LiquidUI Desktop version 321 and below
 LiquidUI Server version 557 and below
 dump option keeps the latest 4 dump files and removes older dump files

Environment:
 LiquidUI Desktop version 322 and above
 LiquidUI Server version 558 and above
 dump option keeps the latest 4 dump/bin/text files and removes older dump/bin/text files.

Please refer to below link to see where these files get generated

http://www.guixt.com/forum/index.php?topic=166.0

11
Liquid UI Server aka GuiXT Server / Controlling Dump/Bin/Text files
« on: May 25, 2017, 03:45:31 PM »
Please refer to below link to restrict Dump/Bin/Text files 

http://www.guixt.com/forum/index.php?topic=174.0

12
Instead of calling functions from each individual screen, Synactive recommends to load functions in esession file so that functions can be used across all opened sessions.

Functions related to each process can be in one single file.
For example all the functions related to Va01, Va02, VA03 can be merged in to one single file (Functions_Va0x.sjs) and these functions can be called from any screen in the session.
 
Esession.sjs(session file)
load("FUNCTIONS_GENERIC.sjs");
load("FUNCTIONS_VA0X.sjs");

FUNCTIONS_GENERIC.sjs - Contains all the generic functions which are used across the scripts
FUNCTIONS_VA0X.sjs - Contains the functions related to va01, va02 and va03 transaction processes
 

13
Logs and dump files will be generated when an unusual activity happens in the software

To generate additional information in log files and dump files option _blackbox=1 should be added in guixt.sjs configuration file

With option log directory in guixt.sjs file(logdirectory = "C:\\Liquidui\\Logs"):
Bin files and text files gets generated in above specified log directory
Dump files gets generated in "C:/users/username/liquidui_log directory"

With out log directory option:
Bin files, text files and dump files gets generated in "C:/users/username/liquidui_log" folder

14
Logs and dump files will be generated when an unusal activity happens in the software

To generate additional information in log files and dump files option _blackbox=1 should be added in guixt.sjs configuration file

LiquidUI Server running in services :

With option log directory in guixt.sjs file(logdirectory = "C:\\Liquidui\\Logs"):
Bin files and text files gets generated in above specified log directory
Dump files gets generated in "C:\Windows\System32\config\systemprofile\Liquid UI Log" folder

With out log directory option:
Bin files, text files and dump files gets generated in  "C:\Windows\System32\config\systemprofile\Liquid UI Log" folder

LiquidUI Server running as a console mode:

With option log directory in guixt.sjs file(logdirectory = "C:\\Liquidui\\Logs"):
Bin files and text files gets generated in above specified log directory
Dump files gets generated in "C:/users/username/liquidui_log directory"

with out log directory option:
Bin files, text files and dump files gets generated in "C:/users/username/liquidui_log" folder





15
When user clicks on back button on a screen with out saving the data,  user has an option to save, edit or exit out of the screen. 

Below scenario explains on how to run the same save function during regular order save when 'Yes' button is clicked on exit order processing  popup and  navigate out of transaction when 'No' button is clicked on popup and get back to order details screen when 'Cancel' button is clicked.

LiquidUI code:
if(_transaction=='VA01' || _transaction=='VA02'){
   if(_title =='Exit Order Processing'){
      onUIEvents["=YES"] ={"fcode":"/0", 'process':va0x_back, "using":{"l_val":"YES"}};
      onUIEvents["=NO"] ={'process':va0x_back, "using":{"l_val":"NO"}};
      onUIEvents["=CANC"] ={'process':va0x_back, "using":{"l_val":"CANC"}};
   }
}

//Initiate functions in esession file
load("functions_va0x.sjs");

// Function to handle Yes/No/Cancel Option -
function va0x_back(param) {
   z_val=param.l_val;
   
   if(z_val=='YES'){
      enter('CANC');
   } else if(z_val=='NO'){
      enter('/n');
      goto FUNC_END;
   } else if(z_val=='CANC'){
      enter('CANC');
         goto FUNC_END;
   }   
   onscreen 'SAPMV45A.4001'      
      if(z_val=='YES'){
         enter({'process':va0x_save});   
      }

FUNC_END:;
}

//Function to Save the order
function va0x_save(){
   // Create Standard Order: Overview
onscreen 'SAPMV45A.4001'
   enter('=KKAU');
   onerror
   message(_message);
   enter('?');
   goto END_FUNC;

   // Create Standard Order: Header Data
onscreen 'SAPMV45A.4002'
   set('F[Order reason]', '&V[z_va0x_orderreason]');
   enter('/11');
END_FUNC:;
}

Please see attachments..

Pages: [1] 2