Recent Posts

Pages: 1 ... 6 7 [8] 9 10
71
Purpose: Creating Server certificate and Private Key using OPENSSL for Liquid UI.

Certificate can be generated with the online openssl.exe tool, with the following commands:

>>openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout private.key -out server.crt

Note: -days means the valid days for this certificate.

You are about to be asked to enter information that will be incorporated into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.

Country Name (2 letter code) [AU]:US
State or Province Name (full name) [Some-State]:CA
Locality Name (eg, city) []:
Organization Name (eg, company) [Internet Widgits Pty Ltd]:Liquid UI WebServer
Organizational Unit Name (eg, section) []:LUS
Common Name (e.g. server FQDN or YOUR name) []:
Email Address []:

Server CRT and Private KEY are generated !!
72
Purpose: TO CREATE REQUIRED RFC AUTHORIZATIONS for RFC user in Liquid UI using SAPNWRFC

Creating and Maintaining RFC USER
   Transaction - SU02
   Click 'To Profile Generator'
   Create Role - Click on "Role" button
   Tab to "Authorization" -This will give you a pop up screen as shown above
   Click "yes" on popup to "save"
   Click "Change Authorization Data"
   Click "Do not select templates"
   Click "manually"
   Type RFC1, SDIFRUNTIME, SURL, SU_USER, SYST
   Click on "Open"
   Clicking on the open button gives you a screen as follows:
   After you click on "open"
   Click on the "write" or "change" icon shown on screen shot
   Select "Execute" on the pop up screen and then click on "save" button
   Similarly, the parameters for "name of RFC to be protected" and "Type of RFC to protect" could be set.
   Using Existing Remote Enabled SAP Function Modules, specify the function group for those function modules (Name of RFC to be protected)
   Alternatively, add the appropriate role to the RFC User
   Set parameters as shown in following screen shot
   Click "Generate"
   Click on "Save"
   Click "Back"
   This is a system generated Profile name; we can edit this information and text.
   Click "Generate" again
73
WS aka Web Scripts (Attended RPA for SAP) / Usage of Leadingspace option
« Last post by Ashfaq Ahmed on October 21, 2019, 09:54:50 PM »
Purpose:

Leadingspace option retains any spaces that may exist before the character entered in an inputfield.

Syntax:

"leadingspace": true

Example:

The following are the steps that Illustrate the Implementation of the leadingspace option.

Steps:

1.Open the Easy Access Script file "SAPLSMTR_NAVIGATION.E0100.sjs" which can be found in the directory folder as Configured in the "guixt.sjs" file.
 And add the following code snippet to the file

 Inputfield ([4,1], "Inputfield Test", [4,8], {"name": "Inputfld"," size":26});

2. Save the File and refresh the SAP screen.
3.Enter the text  "    Testing" into the inputfield.   (using spaces in-front of the Text)
4. You can see that it would not retain any spaces.
5.Now Add leadingspace option as shown below.

   inputfield([4,5], "Inputfield Test", [4,20], {"name":"Inputfld", "size":26,"leadingspace":true});

6. Save the File and refresh the SAP screen.
7.Now You can see that it retains the spaces.

Refer to the attachments for Clarity...
74
WS aka Web Scripts (Attended RPA for SAP) / Structure for making RFC calls
« Last post by Benjamin Dasari on October 02, 2019, 05:59:46 PM »
Purpose:
Structure to make function module calls and capture any errors if the call was not successful or capture any exceptions and display to the user.

NOTE::
To make the function module call, it is required to provide the rfc parameters in the configuration file i.e., guixt.sjs

Liquid UI Code:
----------------------------------------------------------------------------------------------------------------------------------------------
Script File Name: SAPLSMTR_NAVIGATION.E0100.sjs       // SAP Easy Access
----------------------------------------------------------------------------------------------------------------------------------------------
// User Interface
clearscreen();
inputfield([1,0],"User Date Format",[1,20],{"name":"z_user_dateformat","size":2,"readonly":true});
pushbutton([3,1],"Get Date Format","?",{"size":[2,20],"process":Z_FMCallGetData});

// Related functions
// Function trim, to remove blank spaces from variable values

String.prototype.trim = function() {
   return this.replace(/^\s+|\s+$/g,"");
}

// Function to return trimmed string
function getString(strInput) {
   return (typeof(strInput) == 'undefined' || strInput == 'undefined') ? "" : strInput.toString().trim();
}

// Function to check for blank string
// Specifically used to determine if input exist in the edit field

function isBlank(strInput) {
   var strVal = getString(strInput);
   var blank = strVal == "";
   return blank;
}

// Function to call BAPI and display results
function Z_FMCallGetData(){
   onscreen 'SAPLSMTR_NAVIGATION.0100'
      rfcresult = call('BAPI_USER_GET_DETAIL', {"IN.USERNAME":"&V[_user]","OUT.DEFAULTS":"Z_DEFAULTS"});
      if(rfcresult.rfc_rc != 0) {         
         // Cannot Call RFC for any reason
         // RFC call was *NOT* successful.
         // Display message to user, that rfc cannot be called  (you can use the content of rfcresult.rfc_key)

         message('E: Error! RFC Call Failed to Return Data');
         enter("?");
         goto SCRIPT_END;
      } else {
         if(!isBlank(rfcresult.exception)) {
            // RFC Call succeeded, but the ABAP code in the function module generated an exception
            // Display message to user, that rfc exception occured (you can use rfcresult.exception

            message('E: Error! '+rfcresult.exception);
            enter("?");
            goto SCRIPT_END;
         }
      }

      // RFC Call was successful
      if(!isBlank(Z_DEFAULTS)){
         set('V[z_user_dateformat]', Z_DEFAULTS.substring(27,28));   
      }
      message('S: RFC call was successful');
      enter('?');
      
   SCRIPT_END:;   
}


See attachments for code samples!
75
Purpose:
Using the 'view' command with relative positioning.

NOTE::
The usual 'offset' option does not work with view command, instead we use the 'getCoords' function. Make sure this function is loaded before the call.

Liquid UI Code:
----------------------------------------------------------------------------------------------------------------------------------------------
Script File Name: SAPLCOIH.E0101.sjs       // IW32 Initial screen
----------------------------------------------------------------------------------------------------------------------------------------------
// User Interface
box("F[Order]+[5,0]","F[Order]+[28,120]","Testing View");
pushbutton("F[Order]+[2,0]","View WITH relative positioning","?",{"size":[2,24],"process":viewTest,"using":{"PTYPE":"WITHREL"}});
pushbutton("F[Order]+[2,30]","View W/O relative positioning","?",{"size":[2,24],"process":viewTest,"using":{"PTYPE":"WITHOUTREL"}});

if(z_iw32_scr == "WITHREL"){
   //Below relative positioning does not work, instead use the one that is uncommented
   //view("F[Order]+[6,1]","F[Order]+[27,118]","http://www.guixt.com/");
   view(getCoords("F[Order]", [6,1]), getCoords("F[Order]", [27,118]), "http://www.guixt.com/");
} else if(z_iw32_scr == "WITHOUTREL"){   
   view([9,2],[30,118],"http://www.guixt.com/");
}


// Related Functions
function viewTest(param){
   onscreen "SAPLCOIH.0101"
      set("V[z_iw32_scr]",param.PTYPE);
      enter('?');
}

function getCoords(field, offset){
   return [<field>.pos[0] + offset[0], <field>.pos[1] + offset[1]];
}


See attachments for code samples!

76
Purpose:
Maintain a structure to easily implement new languages for existing scripts when working with language independent scripts.

NOTE::
 - Make sure the configuration file guixt.sjs has the below line:
      nolanguagekey = true;
 - Also, the screen files should not have any language key, example below:
      SAPMV45A.0101.sjs

Liquid UI Code:
----------------------------------------------------------------------------------------------------------------------------------------------
Script File Name: SESSION.sjs       // Session file
----------------------------------------------------------------------------------------------------------------------------------------------
switch(_language) {
   case 'E':
      load('languageEN.sjs');
      logonLanguage = languageEN;
      break;
   case 'F':
      load('languageFR.sjs');
      logonLanguage = languageFR;
      break;
   case 'S':
      load('languageES.sjs');
      logonLanguage = languageES;
      break;   
   default:
      logonLanguage = languageEN;
      break;
}

----------------------------------------------------------------------------------------------------------------------------------------------
Script File Name: SAPMV45A.4001.sjs       // VA02 transaction
----------------------------------------------------------------------------------------------------------------------------------------------
// User Interface
if(_page.exists(logonLanguage.pageexists.sales)){
   del(logonLanguage.controls.itemoverview);
   del(logonLanguage.controls.itemdetails);
   del(logonLanguage.controls.ordparty);
   del(logonLanguage.controls.procurement);
   del(logonLanguage.controls.shipping);
   del(logonLanguage.controls.reasonforrej);
   del(logonLanguage.controls.listofsalesorders);
   
   text(logonLanguage.controls.sales, logonLanguage.texts.salesdata);
   
   text([0,89], logonLanguage.texts.headertxt,{ "size":20});
   textbox([1,89], [4,125], {"name":"z_va02_hdrtxt", "textfont":"Arial", "textheight":"12", "textweight":"5"});
   
   columnheader("SAPMV45A_TCTRL_U_ERF_AUFTRAG,2", logonLanguage.texts.matlnum);         //Material column
   inputfield( [4,0], logonLanguage.inputfield.delstatus, [4,17], {"name":"z_va02_delstatus", "size":22});
   
   pushbutton([TOOLBAR], logonLanguage.pushbutton.exit, '/nVA02');
   pushbutton([TOOLBAR], logonLanguage.pushbutton.gotoeasyaccess, '/n', {"group":"A+"});
   
   message("W: "+logonLanguage.message.msgponum);
}

----------------------------------------------------------------------------------------------------------------------------------------------
Script File Name: languageEN.sjs       // English language file
----------------------------------------------------------------------------------------------------------------------------------------------
var languageEN = {
   "inputfield": {   
      "delstatus": "Delivery Status"
   },
   "pushbutton": {      
      "exit": "Exit",                                    
      "gotoeasyaccess": "Goto SAP Easy Access"
   },
   "texts": {      
      "salesdata": "Sales Data",
      "headertxt": "Header Text",
      "matlnum": "Material Number"
   },
   "message": {      
      "msgponum": "Enter PO number"
   },
   "controls": {
      "sales": "P[Sales]",                                 
      "itemoverview": "P[Item overview]",                                 
      "itemdetails": "P[Item detail]",                                    
      "ordparty": "P[Ordering party]",                                    
      "procurement": "P[Procurement]",                  
      "shipping": "P[Shipping]",
      "reasonforrej": "P[Reason for rejection]",
      "listofsalesorders": "P[list of sales orders]"
   },
   "pageexists": {
      "sales": "Sales"
   }
};

----------------------------------------------------------------------------------------------------------------------------------------------
Script File Name: languageES.sjs       // Spanish language file
----------------------------------------------------------------------------------------------------------------------------------------------
var languageES = {
   "inputfield": {   
      "delstatus": "Status entrega"
   },
   "pushbutton": {      
      "exit": "Salida",                                    
      "gotoeasyaccess": "Ir a SAP Easy Access"
   },
   "texts": {      
      "salesdata": "Los datos de ventas",
      "headertxt": "Texto de cabecera",
      "matlnum": "Número material"
   },
   "message": {      
      "msgponum": "Ingrese el número de pedido"
   },
   "controls": {
      "sales": "P[Ventas]",                                 
      "itemoverview": "P[Resumen de posiciones]",                                 
      "itemdetails": "P[Detalle posición]",                                    
      "ordparty": "P[Solicitante]",                                    
      "procurement": "P[Aprovisionamiento]",                  
      "shipping": "P[Expedición]",
      "reasonforrej": "P[Motivo de rechazo]",
      "listofsalesorders": "P[Lista de pedidos]"
   },
   "pageexists": {
      "sales": "Ventas"
   }
};

----------------------------------------------------------------------------------------------------------------------------------------------
Script File Name: languageFR.sjs       // French language file
----------------------------------------------------------------------------------------------------------------------------------------------
var languageFR = {
   "inputfield": {   
      "delstatus": "Statut livr."
   },
   "pushbutton": {      
      "exit": "Sortie",                                    
      "gotoeasyaccess": "Aller à SAP Easy Access"
   },
   "texts": {      
      "salesdata": "Données de vente",
      "headertxt": "En-tête",
      "matlnum": "Numéro d'article"
   },
   "message": {      
      "msgponum": "Entrez le numéro de bon de commande"
   },
   "controls": {
      "sales": "P[Vente]",                                 
      "itemoverview": "P[Synthèse des postes]",                                 
      "itemdetails": "P[Détail du poste]",                                    
      "ordparty": "P[Acheteur]",                                    
      "procurement": "P[Approvisionnement]",                  
      "shipping": "P[Expédition]",
      "reasonforrej": "P[Motif d'annulation]",
      "listofsalesorders": "P[Liste des commandes client]"
   },
   "pageexists": {
      "sales": "Vente"
   }
};


See attachments for code samples!
[/list]
77
Desktop Product (SAP GUI, Excel and PDF) / SAP crash with RFC call
« Last post by rajesh.sabbineni 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



78
GuiXT (Liquid UI) comes bundled with every release of SAP. It provides SAP users with a method to customize SAP screens and transactions without necessitating any ABAP programming. Instead, users can write scripts in JavaScript that will customize SAP, remove unnecessary screens, and simplify the interface. Once you purchase and install a valid WS license in your system, then only you can perform customizations or more advanced tasks, such as combining transactions in SAP. By default, Liquid UI is inactive. To check whether Liquid UI is active or inactive, please do the following:

1. Launch SAP. Press Alt + F12 or click the Customize Local Layout menu icon on the Standard toolbar.






2. You will find various options. Click the Activate GuiXT option.






3. A black check mark will appear in front of the Activate GuiXT option, which indicates that Liquid UI is activated and running successfully.






4. Also, you will find the Cornelius window popped up, which gives us the information on the script execution process. Now, you can execute your Liquid UI scripts successfully.

Note: After installing the Liquid UI for SAP GUI with a valid license, you will need to activate GuiXT in SAP GUI and configure Liquid UI.

79
Developer Toolkit (Designer and Workbench) / Reasons for HOST ID change
« Last post by Rahul Gera on August 20, 2019, 01:12:30 PM »
Purpose: To understand, the change of HOST ID based on the circumstance.

Liquid UI software are license products, and the License is dependent on Host ID, which is a unique identifier, differing from machine to machine.
This HOST ID is generated by Synserialmanager, which is the License Manager for Liquid UI Products.

These are few of the reasons why the Host ID changes, please see below:

1. OS version
2. ROM date
3. System BIOS date (date registry)
4. Hard disk serial number

Note: You'll need a new license key once the HOST ID changes.

If a machine is upgraded, there might be a change from the above that caused a change in HOST ID.
Notice: Running it on a Virtual Machine, the HOST ID usually changes as well.
80
For the successful implementation of Liquid UI on your SAP GUI, you need to add all the required parameters in the configuration file (guixt.sjs) and then save it. This file is generally present in your SAPgui folder (C:\Program Files (x86)\SAP\FrontEnd\SAPgui). You need to add your scripts directory path in your guixt.sjs file for executing Liquid UI scripts.

Defining a directory path in the configuration file helps SAP GUI to find the location of script files used for customizing the SAP screens. SAP screens are customized as per the WS script added in the screen script file.

In the guixt.sjs file, you can define various Liquid UI parameters to work on the WS scripts. You can specify a maximum of four script directory paths in the configuration file, and the Liquid UI will consider the script directory in the sequential order. The script directory paths can be either local, network, HTTP, FTP, or SAP web repository.

Script directories:
Here you can see how to define the directory path of scripts.

Local directory:
Code: [Select]
directory1= "C:\\LiquidUI\\scripts";
Network directory:
Code: [Select]
directory2 = "\\\\server\\directoryName";
Web directory:
Code: [Select]
directory3 = "http://server//directoryName";
FTP directory:
Code: [Select]
directory4 = "ftp://server//directoryName";
SAP Web Repository:
Code: [Select]
directory4 = "sapwr:z.LiquidUI.demo";


Pages: 1 ... 6 7 [8] 9 10