SAP RPA ile Toplu Çeviri – İş Akışı

Share

ABAP objelerinin çeviri süreci ilkel yöntemlerle yapılması sebebiyle her zaman yazılım geliştiricilerin kabusu olmuştur. Bu proje, ABAP objelerinin çeviri sürecini SAP RPA ürünü ile otomatize etmektedir.

1.Giriş

Projenin kullanımı oldukça basit. Yüklenilen excel dosyasından çeviri dili ve çevirisini ABAP objeleriyle eşleştirerek RPA süreci tamamlanmaktadır. Süreç tamamlandıktan sonra, çevrilen objelerin içinde olduğu request (slxt işlem kodu aracılığı ile) RPA tarafından oluşturulmaktadır. Ek olarak bu requesti screen-shot alarak kullanıcıya mail atmaktadır.

2.Kullanım Alanları

  • Roll-out Projeleri
  • Yeni yazılan/çevirisi olmayan ürünün birden fazla dile çeviri ihtiyacı
  • ABAP sözlükte yer alan çevirisi yapılmamış Z’li objelerin (çok sayıda) bu ürün ile kolayca çevirisinin yapılması.

3.Avantajları

  • Çeviriye harcanılan zamandan tasarruf
  • Kullanıcı bazlı çeviri hatalarını minimuma indirme
  • Çeviriye harcanılan eforu oranında düşürme ()
  • Birden fazla dile aynı anda çeviri imkanı

4.ABAP Objeleris

  • Hali hazırda yer alan ABAP Objeleri;
    • Data Element
    • Message Class
    • Smartforms
    • AdobeForms
  • Eklenebilecek ABAP Objeleri;
    • Domain
    • Structure
    • Table
    • Table Type
    • Menu Area
    • Reports (with screens)
  • Proje tasarımına uygun olmayan ABAP Objeleri;
    • Text Tables

5. RPA’ in Detaylı Yapısı

  • Projede her ABAP objesi için ayrı bir workflow oluşturulmuştur.
  • Bir tane REUSE workflow içinde oluşturulan workflowlar çağrılmaktadır.
  • RPA’in hangi workflowu çağıracağını excel içindeki ‘Entry Sheet’ kısmında belirleyebiliyoruz.
  • RPA, ABAP Objelerinin obje ismi, çeviri dili gibi bilgilerini ayrı ayrı oluşturulan ‘Sheet’ lerden (örneğin; Data Element) okumaktadır.
  • Yeni eklenecek ABAP objeleri için yeni bir workflow, bu workflowu MAIN workflowuna REUSE etme ve excel dosyasını güncelleme yeterli olacaktır.
  • RPA’in çeviri işlemini yapacağı sistem bilgileri, kullanıcı ismi ve şifresi, request ismi gibi bilgiler excelden okunabilir, RPA Cloud Factory’den de tanımlanabilir. (Örnek excel dosyasında da ‘Request Sheet’ i mevcut fakat RPA Cloud Factory’den okunması tercih edildi.)

Not: ‘Mesaj, Data Element, Domain, Reports’ gibi ABAP objelerinin çeviri arayüzü hemen hemen aynı olduğu için genel bir ‘Criteria’ tanımlayarak benzer arayüze sahip objelerde dinamik programlama yöntemi de kullanılabilir.

5.1.Workflow

Figure 1: Process Diagrams
5.1.1. Data Element
  • SE63 işlem koduna gidilir .
  • Transport Object tıklanır. Transport Object(Döngü burada başlamalıdır.)
  • Excel dosyasındaki Data element çeviri bilgilerinin satır sayısı kadar döngüye sokulur.
  • Data element objesi bilgileri girilir.
  • Çeviri yapılacak alanlar excel dosyasındaki sütunlarla eşleştirilir.
5.1.2.Mesaj
  • SE63 işlem koduna gidilir .
  • Mesaj Sınıfı, Mesaj Numarası girilir. (Döngü burada başlamalıdır.)
  • Excel dosyasındaki Data element çeviri bilgilerinin satır sayısı kadar döngüye sokulur.
  • Orijinal Dil ve Hedef Dil; Go to-> Translation aşaması ile girilir.
  • Çeviri yapılır.
5.1.3.Smartforms
  • SE63 işlem koduna gidilir .
  • Other Text tıklanır .(Döngü burada başlamalı ya da SSF arayüzünde F3 keystroke kullanılarak da başlatılabilir.)
  • Excel dosyasındaki Smartforms bilgileri RPA tarafından filtrelenir. Deep Structure yapısı kullanılarak Smartforms ismi ve bilgileri internal table a atılır. Deep Structure büyüklüğü kadar döngüye sokulur.
  • Arama butonu yardımı ile SSF objesi bulunup tıklanır.
  • Smartforms objesi bilgileri SSF arayüzünde girilir.
  • Burada 2 tane GUI Containersbulunur. Üstte yer alan Container objenin orijinal yapısıdır. Buradaki satır sayısı scroll-down yaparak hesaplanır.
  • Click ‘Copy Source Text’ (SHIFT F8) tıklanarak orijinal yapı kopyalanır.
  • Alttaki Container tipinde Paragraf tipi ’ ile başlamayan satırlar excel dosyasındaki verilerle karşılaştırılıp çeviriler satır satır yapılır. Bottom Container ‘daki ‘/’ excel dosyasındaki verilerle karşılaştırılır ve çeviriler satır satır yapılır.
  • Üstteki Container dan döngü sayısı bittiğinde‘Save and Active’ butonuna tıklanarak çeviri süreci tamamlanır.
5.1.4.Adobeforms
  • SE63 işlem koduna gidilir .
  • Other Text tıklanır .(Döngü burada başlamalı ya da PDFB arayüzünde F3 keystroke kullanılarak da başlatılabilir.)
  • Excel dosyasındaki Adobeforms bilgileri RPA tarafından filtrelenir. Deep Structure yapısı kullanılarak Adobeforms ismi ve bilgileri internal table a atılır. Deep Structure büyüklüğü kadar döngüye sokulur.
  • Burada 2 tane GUI Containers yapısı karşımıza çıkacak. Üstteki Container orijinal yapısıdır. Copy Source Text (SHIFT F8) diyerek orijinal yapı kopyalanır.
  • The data in the ‘/’ veriler bir değişkene atılır. Satır satır veriler excel dosyasındaki verilerle karşılaştırılıp REPLACE fonksiyonu ile yeni bir değişkene atılıp data set edilir.
  • Süreç Save and Active diyerek tamamlanır.
5.1.5.Main Translation
  • RPA Cloud Factory’den veriler Declare-Get metotlarıyla çekilir.
  • Excel yüklemek için UI Designer’dan basit bir excel yükleme Popup ı tasarlanır.
  • Tasarlanan Popup tan dosyanın path i global değişkene atılır.
  • RPA excel metotlarıyla elimizdeki path ile excel verileri çekilir. (Her sheet için ayrı bir global internal table kullanıldı.)
  • Oluşturulan workflow lar Reuse metodu ile çağrılır.
  • Workflow lar bittikten hemen sonra SLXT işlem koduna gidilir ve gerekli bilgiler (Object Processor, Date, All languages, Workbench request gibi) girilerek işlem kodu yürütülür.
  • Gelen ekranda her sayfanın RPA screen-shot metodu ile ekran görüntüsü alınıp RPA Cloud Factory’de tanımlanan mail adresine oluşturulan request ile ilgili bilgiler mail atılır. RPA Cloud Factory.
Figure 2: A section from the Main workflow

6.Önemli Notlar

  • Her Workflow başlangıcında SAP Logon sayfası çağrılmalıdır.
  • killSAP fonksiyonları her Workflow başlangıcında ve bitişlerinde çağrılmalıdır.
  • Her Workflow başlangıcı Start Application ile başlamalıdır, Close Application ile bitmelidir.
  • Excel dosyasındaki Entry Sheet verileri ‘X’ li ise workflow lar başlamalı, ‘X’ li değilse workflowlar sc.endStep() fonksiyonları ile sonlandırılmalıdır.

7.Önemli Kod Blokları

  • Excel verilerini çekme

//Get Entry Details

    /****************************************************************************************************************************/

    ctx.excel.sheet.activate(“Entry”);

    var row1 = ctx.excel.sheet.getLastRow(“A1”);

    var col1 = ctx.excel.sheet.getLastColumn(“A1”);

    rootData.ExcelData.Entry = ctx.excel.sheet.getFullRangeValues(“A”,1,String.fromCharCode(64+col1),row1-1,””);

    //Get Data Element Details

    //****************************************************************************************************************************

    ctx.excel.sheet.activate(“Data Element”);

    var row2 = ctx.excel.sheet.getLastRow(“A1”);

    var col2 = ctx.excel.sheet.getLastColumn(“A1”);

    rootData.ExcelData.DataElement = ctx.excel.sheet.getFullRangeValues(“A”,1,String.fromCharCode(64+col2),row2-1,””);

    //Get Smartforms Details

    //****************************************************************************************************************************

    ctx.excel.sheet.activate(“Smartforms”);

    var row3 = ctx.excel.sheet.getLastRow(“A1”);

    var col3 = ctx.excel.sheet.getLastColumn(“A1”);

    rootData.ExcelData.SmartForms = ctx.excel.sheet.getFullRangeValues(“A”,1,String.fromCharCode(64+col3),row3-1,””)

    //Get Adobe Forms Details

    /****************************************************************************************************************************/

    ctx.excel.sheet.activate(“Adobe Forms”);

    var row4 = ctx.excel.sheet.getLastRow(“A1”);

    var col4 = ctx.excel.sheet.getLastColumn(“A1”);

    rootData.ExcelData.AdobeForms = ctx.excel.sheet.getFullRangeValues(“A”,1,String.fromCharCode(64+col4),row4-1,””);

    //Get Message Details

    //****************************************************************************************************************************

    ctx.excel.sheet.activate(“Message”);

    var row5 = ctx.excel.sheet.getLastRow(“A1”);

    var col5 = ctx.excel.sheet.getLastColumn(“A1”);

    rootData.ExcelData.Message = ctx.excel.sheet.getFullRangeValues(“A”,1,String.fromCharCode(64+col5),row5-1,””);

    //Get Request Details

    //****************************************************************************************************************************

    ctx.excel.sheet.activate(“Request”);

    var row6 = ctx.excel.sheet.getLastRow(“A1”);

    var col6 = ctx.excel.sheet.getLastColumn(“A1”);

    rootData.ExcelData.Request= ctx.excel.sheet.getFullRangeValues(“A”,1,String.fromCharCode(64+col6),row6-1,””);

  • killSAP

function killSAP(){

        var __result = ctx.wmi.query(‘Win32_Process’, [ ‘ProcessId’, ‘Name’, ‘ExecutionState’ ], “Name=’saplogon.exe’”);

    if(__result.length > 0) {

      for(var __counter = 0; __counter<__result.length; __counter++) {

            ctx.sleep(500);

        var __result2 = ctx.wmi.query(‘Win32_Process’, [ ‘ProcessId’, ‘Name’, ‘ExecutionState’ ], “ProcessId=”+__result[__counter].ProcessId);

        if(__result2.length > 0) {

          ctx.wmi.killProcess(__result2[0].ProcessId);

        }

      }

      ctx.log(“All running instances of process ‘saplogon.exe’ have been killed.”, e.logIconType.Info);

    }

    else {

      ctx.log(“No found running instance of process ‘saplogon.exe’.”, e.logIconType.Warning);

    }

}

  • Ekran görüntüsü metodu

var path = “C:\\Users\\” + ctx.options.userName + “\\Desktop\\” + “name.png”;

                        ctx.screenshot({ ID: “usr”,

                                                X: 0,

                                              Y: 127,

                                             CX: 1920,

                                             CY: 884,

                                         File: path });

  • Ekran görüntüsü alınan resmi mail body e binary olarak embed etme

ctx.base64.encodeStream(ctx.fso.file.read(path, e.file.encoding.Binary));

                                body_text += ‘<img src=””data:image/png;base64,’” + ctx.base64.encodestream(ctx.fso.file.read(path, e.file.encoding.binary))+’”>’;

8.Excel Yapısı

Entry Sheet

Work FlowCheck
Message ClassX
Data ElementX
Adobe FormsX
SmartFormsX
Domain
  • Message
Message ClassMessage NumberSource TextTarget TextSource LangTarget Lang
ZMO_TEST000No data found.keine Daten gefundenENDE
ZMO_TEST001Please choose the company code.Lütfen şirket kodunu seçin.ENTR
ZMO_TEST002Tax number is not correct.Vergi numarasi doğru değil.ENTR
  • Data element
Data ElementSource TextDTEXT(55)REPTEXT(40)SCRTEXT_L(40)SCRTEXT_M(20)SCRTEXT_S(10)Source LangTarget Lang
ZMO_DE_01Name and surnameAdı SoyadıAdı SoyadıAdı SoyadıAdı SoyadıAd.Soyad.enUStrTR
ZMO_DE_02Adress InformationAdres BilgileriAdres BilgileriAdres BilgileriAdres BilgileriAdres BlgenUStrTR
ZMO_DE_03Phone NumberTelefon NumarasıTelefon NumarasıTelefon NumarasıTelefon NumarasıTel.NoenUStrTR
  • Adobeforms
Adobe Forms NameSource TextTarget TextSource LangTarget Lang
ZMO_TEST12enUSdeDE
ZMO_TEST12INVOICE NORECHNUNG NRenUSdeDE
ZMO_TEST12INVOICE DATERECHNUNGS DATUMenUSdeDE
ZMO_TEST12SALES ORDER NO/DATEVERKAUFSAUFTRAG NR/DATUMenUSdeDE
  • Smartforms
SmartformsSource TextTarget TextSource LangTarget Lang
ZMO_DENEMEenUStrTR
ZMO_DENEMEPlate Number:Plaka Numarası:enUStrTR
ZMO_DENEMERegionBolgeenUStrTR
ZMO_DENEMEWaybill Number:Irsaliye No:enUStrTR
ZMO_DENEMERegionBolgeenUStrTR
ZMO_DENEMEAmoung of Contrat:Kontrat Miktarı:enUStrTR
ZMO_DENEMEMaterial:Malzeme:enUStrTR
ZMO_DENEMEDriver Name:Sürücü Adı:enUStrTR
ZMO_DENEMEDate:Tarih:enUStrTR
ZMO_DENEMEWeighing No:Tartım No:enUStrTR
ZMO_DENEMETEL :    E-MAIL:TEL :    E-MAIL:enUStrTR
ZMO_DENEMEWEIGHBRIDGE RECEIPTTARTIM FISIenUStrTR
ZMO_DENEMEWeighbridge No :Irsaliye No:enUStrTR
ZMO_DENEMECompany Name:Sirket :enUStrTR
ZMO_DENEMEAmount of Coming:Gelen Miktar:enUStrTR
ZMO_DENEMEAmount of Remaining:Kalan Miktar:enUStrTR
ZMO_DENEMEQuality Inspection Lot:Kalite Muayene Lotu:enUStrTR
ZMO_DENEME PO number:Satin Alma No:enUStrTR
ZMO_DENEMECarrier:NakliyeenUStrTR
  • Request
Request DescriptionProcessing DateProcessor
06.07.2021 Translation6.07.2021mokay

Projenin uygulanışını izlemek için ”SAP iRPA ile Toplu Çeviri” demomuza göz atın.

İş süreçlerinizi gelişen teknolojilerle desteklemek işimizin ana hedefidir.
exp head deco 3
icon our expertise

Thank you

You’ll receive an email with download link shortly.

If not, reach us on solviamarketing@solviads.com

Created by icon 54from the Noun Project

Thank you

You’ll receive an email shortly.

If not, reach us on info@solviads.com