Question concerning the speed and possible acceleration of a 'Type into' activity in SAP with a variable selector

Hi there UiPath community,

I’m currently working on a process that will carry out several actions in SAP, more specifically keying in invoice details in the MIRO transaction. The process works as intended, so I’m not experiencing any fatal errors.
There is however one specific part in the process that takes quite some time, which is keying in the actual invoice details. The reason behind this thread is that I’m trying to find out whether the approach I took to carry out these actions is good as is, or whether there is a better alternative that would result in a shorter processing time.

I will add a short video with an example of the process in action to this thread, so you get an idea of the actions it does and which actions take the most time.

A simplified representation of the process and the activities used would be the following:

  1. SAP is launched and transaction MIRO is called (Activities: SAP Logon + Login & Call transaction)
  2. The workflow opens an XLSX file that contains the details that need to be keyed into SAP.
  3. The workflow builds and fills a data table with all the details that are relevant to one specific invoice.
  4. Once all the invoice lines of one specific invoice have been stored in the data table, the workflow keys in the general details first (Invoice Number / Invoice Date / our reference / Delivery fee, etc.)

  1. Afterwards the workflow extracts all the lines that are in the current Purchase order using the Extract Table Data activity. I will reference to this data table using the term ‘SAP Data Table’.

  1. Using the Lookup Data Table activity the workflow finds a match between one column of the data table built in Step 3 and one column of the SAP Data Table generated from the extraction in Step 5. If a match was found this activity will return the index of the row in which the match has been found. (If no match was found the value is -1 and this line gets skipped)

  2. The workflow saves the returned index in a variable. This variable will be used in a selector as the returned index is the TableRow in the SAP DataTable in which the invoice details need to be keyed into.

  3. The workflow keys the invoice details in the matched TableRow using a Type into activity with a variable selector. The workflow does this for two columns, two variable ‘type into’ activities per matched row. This step is the one that takes up the most time in the process.

  1. If everything is in order, the workflow saves the invoice and continues to build a datatable for the next invoice (if there is one left to process, else it closes the programs and sends me a notification the script has finished running).

In the video below I’m showing an example of the steps above. As mentioned above the majority of the runtime of the workflow is spent on step 8, keying in the line specific details using a ‘Type into’ activity with a variable selector. I am assuming that the reason this activity takes a few seconds per iteration is the fact that it uses a variable selector, but since I am rather inexperienced and this is my first workflow of this level of complexity, I am also unsure whether this approach was the right one to take.

My main question would be: can I accelerate the actual keying in of the line specific details (step 8)?
The immediate follow-up question would be: can this be done with minor tweaks or do I need to completely redesign the process to achieve a better result?

Thing is, the process works as intended and I don’t think that I want to completely redesign it for its current build. If that is a requirement to get a shorter runtime, I will probably try do this in a V2 build at a later stage. In its current state it takes around 1 minute and 50 seconds to process an invoice with 10 lines. In my opinion this is an acceptable result, especially comparing it to a fully manual processing of a similar document and taking into account all the benefits automatic processing brings. However, there is just something in me that says it can be done even quicker, I am probably just not experienced enough just yet to know and apply the optimal setup for this process.

So here’s me reaching out to see if whether there are any tweaks I could apply to speed up the process or whether I should think of a completely alternative approach to achieve a shorter process time.

Thank you in advance for any information and/or advice you can share with me!

Wouter

Video:

Hello @HERRYGERS_Wouter

This looks good. Regarding the reduction of timing, you can reduce the default delay for the project and add timeout in the activities. by this way you can reduce some time.

Also reduce the usage of Delay activities if any.

1 Like

Hi Rahul,

Thank you for getting back to me so swiftly! And thanks for the tip! I took a look at the project default settings.

The default delay of the project is set to 0.3s after and 0.2 before any Ui Automation activity.
They keyboard events are set to 0.02s delay between keys and 0.5s for shortcuts.
I can try putting those a little lower, but I’ll have to check if it’s not going to be too fast for the other activities that use a ‘normal’ selector. :slight_smile:


Yes, keep a delay after testing mulitple times and for loading. :slightly_smiling_face: