Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

SAP BRF+ Kılavuzu

444 views

Published on

BRF+ çalışma notlarım

Published in: Software
  • Be the first to comment

SAP BRF+ Kılavuzu

  1. 1. Dr. Kerem Koseoglu Bu doküman, SAP BRF+ ürününü anlamak ve kullanabilmek için gereken notları içermektedir. h t t p : / / k e r e m . k o s e o g l u . i n f o h t t p : / / w w w . t e s u j i . b i z SAP BRF+
  2. 2. 2 SAP BRF+ Dr. Kerem Köseoğlu Tesuji Consulting http://www.tesuji.biz Table of Contents Kavramlar............................................................................................................................ 4 BRF+.................................................................................................................................................................................4 Application.....................................................................................................................................................................6 Genel Bakış................................................................................................................................................................6 Faydalı Araçlar........................................................................................................................................................8 Application Exit....................................................................................................................................................10 Catalog..........................................................................................................................................................................10 Function.......................................................................................................................................................................11 Genel Bakış.............................................................................................................................................................11 ÇalışmaModları...................................................................................................................................................13 Fonksiyonu Programdan Çağırmak.............................................................................................................15 Fonksiyonu Debug Etmek.................................................................................................................................20 Data Object..................................................................................................................................................................20 Element....................................................................................................................................................................20 Structure.................................................................................................................................................................24 Table.........................................................................................................................................................................25 Expression ..................................................................................................................................................................25 Constant..................................................................................................................................................................26 Decision Table.......................................................................................................................................................27 Formula...................................................................................................................................................................29 Function Call.........................................................................................................................................................30 Loop..........................................................................................................................................................................31 Table Operation...................................................................................................................................................31 Procedure Call......................................................................................................................................................32 Random Number..................................................................................................................................................32 Decision Tree.........................................................................................................................................................33 Case...........................................................................................................................................................................34 DiğerExpression Türleri...................................................................................................................................34 Rule................................................................................................................................................................................34 Ruleset..........................................................................................................................................................................37 Ruleset Element....................................................................................................................................................39 Ruleset Rule...........................................................................................................................................................40 Final..........................................................................................................................................................................41 Action............................................................................................................................................................................42 Log Message..........................................................................................................................................................42 Procedure Call......................................................................................................................................................43 Diğer Aksiyonlar..................................................................................................................................................43 Genişletme / Kişiselleştirme............................................................................................ 44 BRF+ Nesnelerini Z’li Programda Göstermek .............................................................................................44 BRF+ Görünümlerini Kişiselleştirme..............................................................................................................44 Örnek Kodlar..................................................................................................................... 45 Dinamik İşlemler......................................................................................................................................................45 Application Yaratmak.......................................................................................................................................45 Fonksiyon Yaratmak..........................................................................................................................................46 Data Object Yaratmak.......................................................................................................................................46 Ruleset Yaratmak................................................................................................................................................47
  3. 3. SAP BRF+ 3 Dr. Kerem Köseoğlu Tesuji Consulting http://www.tesuji.biz Ruleset Değişkenlerini Tanımlamak............................................................................................................48
  4. 4. 4 SAP BRF+ Dr. Kerem Köseoğlu Tesuji Consulting http://www.tesuji.biz Kavramlar BRF+ Rule’ları barındırmak + işlemek için Framework. Business kurallarını kodun içine ABAP’la IF / Case ile yazmak yerine, BRF+’ta Customize edilebilir şekilde ifade ediyoruz. Bu kurallar ABAP programından çağırılabiliyor ve Power User tarafından uyarlama gibi değiştirilebiliyor. Kullanım mimarisi:
  5. 5. SAP BRF+ 5 Dr. Kerem Köseoğlu Tesuji Consulting http://www.tesuji.biz Avantajları: SAP Netweaver 7.0’dan beri var (2006). SAP TM, SAM CRM ve SAP Business By Design içinde kullanılıyor. Kullanabilmek için; en az SAP Netweaver 7.0 Enhancement PAck 2 gerekiyor. SICF’te aşağıdaki servislerin etkinleştirilmesi lazım:  /SAP/BC/WEBDYNPRO/SAP/ FDT_WD_WORKBENCH
  6. 6. 6 SAP BRF+ Dr. Kerem Köseoğlu Tesuji Consulting http://www.tesuji.biz  /SAP/BC/WEBDYNPRO/SAP/ FDT_WD_OBJECT_MANAGER  /SAP/BC/WEBDYNPRO/SAP/ FDT_WD_CATALOG_BROWSER BRF+’a erişim için, FDT_WORKBENCHişlem kodu kullanılır. Gerekli Authorization’lar: Authority Object Field Remark S_TCODE TCD = ‘FDT_WORKBENCH’ This authority check is only executed if you use the transaction FDT_WORKBENCH. FDT_OBJECT FDT_ACT (Activity) FDT_OBJTYP (Object Type) FDT_APPL (Application) You can define the allowed activities (for example, Create, Change) for an object. It is also possible to specify the application and the object type. FDT_WORKB FDT_WB_ACT (Workbench Activity) This authority object defines the general access to the workbench (Activity: Start Workbe Application Genel Bakış Tüm BRF+ nesneleri için Container. Workbench  Create Application menüsü ile yaratılır.
  7. 7. SAP BRF+ 7 Dr. Kerem Köseoğlu Tesuji Consulting http://www.tesuji.biz Application türleri:  Customizing: Power User’ın değişiklikleri Client’a bağlıdır. Uyarlama olarak ele alınır.  Master data: Tüm değişiklikler yereldir, taşınamaz.
  8. 8. 8 SAP BRF+ Dr. Kerem Köseoğlu Tesuji Consulting http://www.tesuji.biz  System: Kimse değişiklik yapamaz. Değişiklikler ancak Workbench Request ile taşınabilir. Faydalı Araçlar Application Usage: Bu Application’u kimler kullanmış – Where Used List Application Cleanup – Extended Program Check gibi Simulation: Uygulamayı ön planda deneme modunda çalıştırma
  9. 9. SAP BRF+ 9 Dr. Kerem Köseoğlu Tesuji Consulting http://www.tesuji.biz Web Service Generation – Uygulamayı servis olarak yayınlama
  10. 10. 10 SAP BRF+ Dr. Kerem Köseoğlu Tesuji Consulting http://www.tesuji.biz Application Exit Application içerisinde, aynen User Exit veya BADI gibi, uygulamanın çalışmasına ABAP müdahelesi gerektiği durumlarda kullanılır. Detaylar: http://scn.sap.com/docs/DOC-4564 Application Exit Method Description AUTHORITY_CHECK If an object is accessed or shall be manipulated, BRFplus performs an authority check first. This exit allows to enhance or even completely replace the default authority checks of BRFplus. CHECK This method is called whenever a BRFplus object is checked for consistency. Additional checks may be implemented within this exit. The exit also affects the possibility to activate an object. (see below) ACTIVATION_VETO Before a BRFplus object can be activated, it needs to be in a consistent state and is therefore checked accordingly. With the activation veto exit it is possible to prohibit the activation also due to other aspects like external dependencies, that might even only be of temporary nature. CHANGE_NOTIFICATION This exit sends a notification if an object is changed. This might e.g. be used for an automatic update of a dependent BRFplus object. SAVE_NOTIFICATION This exit simply gives a notification, if an object is saved. This might e.g. be used for an automatic update of a dependent BRFplus object. GET_ELEMENT_VALUES With this exit it is possible to define a dynamically retrieved list of valid values for a data element in BRFplus. GET_FORMULA_FUNCTIONALS With this application exit the functions that are available for formula expressions can be set. It is possible to restrict the list of standard functions but also to add custom defined functions . GET_CHANGEABILITY With this application exit the changeability of customizing objects can be altered. GET_CALENDAR This application exit can define the usage of a specific calendar for date and time related operations. The exit is currently not relevant for NW70x releases. It is only used for special application platform systems based on NW710 or higher. Catalog Farklı Application’lardaki nesneler; kullanıcılar tarafından rahat ulaşılabilsin diye Catalog’lar içinde toparlanabilir.
  11. 11. SAP BRF+ 11 Dr. Kerem Köseoğlu Tesuji Consulting http://www.tesuji.biz Function Genel Bakış BRF+ ile ABAP programları arasındaki köprüdür. Input —> Expressions + Rulesets —> Output mantığıyla çalışan bir bloktor. Bir Application altında pek çok Function olabilir. Function’un arkasında sınıf Method’ları türetilir.
  12. 12. 12 SAP BRF+ Dr. Kerem Köseoğlu Tesuji Consulting http://www.tesuji.biz Aldığı parametreler, Signature kısmında tanımlanır: Fonksiyon; ABAP’tan çağırılmanın yanı sıra, Web Service olarak da yayınlanabilir veya doğrudan ön ekranda da simule edilebilmektedir.
  13. 13. SAP BRF+ 13 Dr. Kerem Köseoğlu Tesuji Consulting http://www.tesuji.biz Çalışma Modları Functional Mode: Bildiğimiz fonksiyon gibi; parametre alır, işler ve sonuç döndürür. Simple Use-Cases için uygundur.
  14. 14. 14 SAP BRF+ Dr. Kerem Köseoğlu Tesuji Consulting http://www.tesuji.biz Event Mode: Rule Logic doğrudan fonksiyon içinde yer almaz. Bunun yerine, fonksiyon bir Event tetikler ve bu Event’I dinleyen bir/birkaç Ruleset işlenir. Bu Ruleset’ler; tipik olarak Context değerlerini değiştirir ve aksiyonlar başlatır. Bu mod; genelde doğrudan sonuç beklenmeyen karışık Use Case’ler için kullanılır. Örnek: Kredi kartına başvuran kişi için risk faktörü hesaplama. Functional and Event Mode: İkisinin karışımıdır. Önce basit bir Functional Mode çalışır, akabinde Event Mode gibi Ruleset’ler işlenir.
  15. 15. SAP BRF+ 15 Dr. Kerem Köseoğlu Tesuji Consulting http://www.tesuji.biz Fonksiyonu Programdan Çağırmak Hello World: DATA: lo_function TYPE REF TO if_fdt_function, lo_context TYPE REF TO if_fdt_context, lo_result TYPE REF TO if_fdt_result, lv_result_string TYPE string, lx_fdt TYPE REF TO cx_fdt. FIELD-SYMBOLS: <ls_message> TYPE if_fdt_types=>s_message. CONSTANTS: lc_fct_id TYPE if_fdt_types=>id VALUE ‘00145EF41CBA02DDA8819E3B1652013A’. TRY. lo_function = cl_fdt_factory=>get_instance( )->get_function( iv_id = lc_fct_id ). lo_context = lo_function->get_process_context( ). lo_context->set_value( iv_name = ‘INPUT’ ia_value = ‘Hello World’ ). lo_function->process( EXPORTING io_context = lo_context IMPORTING eo_result = lo_result ). lo_result->get_value( IMPORTING ea_value = lv_result_string ). CATCH cx_fdt_processing. lv_result_string = ‘PROCESSING ERROR!’. CATCH cx_fdt INTO lx_fdt. LOOP AT lx_fdt->mt_message ASSIGNING <ls_message>. WRITE: / <ls_message>-text. ENDLOOP. ENDTRY. WRITE:/ ‘The result is : ‘ , lv_result_string. Örnek 1: * Get singleton instance of the FDT factory.
  16. 16. 16 SAP BRF+ Dr. Kerem Köseoğlu Tesuji Consulting http://www.tesuji.biz lo_factory = cl_fdt_factory=>if_fdt_factory~get_instance( ). * get the function GUID according function name ets_object_id = cl_fdt_persistence=>get_ids( iv_object_type = 'FU' iv_name = ‘ZDEMO_PRICING_FUNC’ ). * get the function object lo_function = lo_factory->get_function( id_result ). * Context itself lo_context = lo_function->get_process_context( ). * Pass the input parameter values lo_context->set_value( iv_name = ‘CUSTOMER' "Customer ia_value = lv_customer ). lo_context->set_value( iv_name = 'ITEM' "Item ia_value = iv_item ). lo_context->set_value( iv_name = 'PRICE’ "Price ia_value = lv_price). lo_context->set_value ( iv_name = 'PROMO' “Promo ia_value = iv_promotion ). * Call function and get result lo_function->process ( EXPORTING io_context = lo_context IMPORTING eo_result = lo_result ). Örnek 2:
  17. 17. SAP BRF+ 17 Dr. Kerem Köseoğlu Tesuji Consulting http://www.tesuji.biz DATA: lo_function TYPE REF TO if_fdt_function, lo_context TYPE REF TO if_fdt_context, lo_result TYPE REF TO if_fdt_result, lx_fdt TYPE REF TO cx_fdt, lv_string type string. FIELD-SYMBOLS <ls_message> TYPE if_fdt_types=>s_message. lo_function = cl_fdt_factory=>if_fdt_factory~get_instance( )->get_function( iv_id = ‘00505683359D02EE98FC41EE6215CAA4’ ). TRY. lo_context = lo_function->get_process_context( ). lo_context->set_value( iv_name = ‘CUSTOMER’ ia_value = ‘SAP’ ). lo_context->set_value( iv_name = ‘ITEM’ ia_value = ‘Pencil’ ). lo_context->set_value( iv_name = ‘PROMOTION’ ia_value = ‘ ‘ ). lo_context->set_value( iv_name = ‘SHELF_PRICE’ ia_value = ‘10’ ). lo_function->process( EXPORTING io_context = lo_context IMPORTING eo_result = lo_result ). lo_result->get_value( IMPORTING ea_value = lv_string ). WRITE lv_string . CATCH cx_fdt INTO lx_fdt. LOOP AT lx_fdt->mt_message ASSIGNING <ls_message>. WRITE / <ls_message>-text. ENDLOOP. ENDTRY. Tam bir program örneği: *---------------------------------------------------------------------* * Report Z_BRFPLUS_TEST * *---------------------------------------------------------------------* * * *---------------------------------------------------------------------*
  18. 18. 18 SAP BRF+ Dr. Kerem Köseoğlu Tesuji Consulting http://www.tesuji.biz REPORT z_brfplus_test. PARAMETERS: p_salary TYPE amount. DATA: lo_fuction TYPE REF TO if_fdt_function, lo_context TYPE REF TO if_fdt_context, lo_result TYPE REF TO if_fdt_result. DATA: lo_message TYPE REF TO cx_fdt. FIELD-SYMBOLS: TYPE if_fdt_types=>s_message. DATA: ls_tax TYPE if_fdt_types=>element_amount, ls_salary TYPE if_fdt_types=>element_amount. START-OF-SELECTION. CLEAR: ls_tax. ls_salary-number = p_salary. ls_salary-currency = 'EUR'. TRY . " Get BRFplus function lo_fuction ?= cl_fdt_factory=>if_fdt_factory~get_instance( )- >get_function( 'D4AE52BE7EF21ED284F8C146EFF7943E' ). " Set the BRFplus function context ( input variables ) lo_context = lo_fuction->get_process_context( ). lo_context->set_value( iv_name = 'GROSS_SALARY' ia_value = ls_salary ). " Process the BRFplus function lo_fuction->process( EXPORTING io_context = lo_context IMPORTING eo_result = lo_result ). " Retrieve the BRFplus function result lo_result->get_value( IMPORTING ea_value = ls_tax ). WRITE ls_tax-number. WRITE ls_tax-currency. CATCH cx_fdt INTO lo_message. LOOP AT lo_message->mt_message ASSIGNING . WRITE: -text. ENDLOOP. ENDTRY. Bu programdaki GUID, fonksiyonun GENERAL Tab’ından alınabilir.
  19. 19. SAP BRF+ 19 Dr. Kerem Köseoğlu Tesuji Consulting http://www.tesuji.biz Simülasyon ekranı: SE38 ekranı:
  20. 20. 20 SAP BRF+ Dr. Kerem Köseoğlu Tesuji Consulting http://www.tesuji.biz Web Dynpro’dan çağırma örneği için: http://scn.sap.com/docs/DOC-4578 Fonksiyonu Debug Etmek BRF+ fonksiyonunu Debug etmek için, CL_FDT_FUNCTION=>IF_FDT_FUNCTION~PROCESS Method’una Break Point koyulabilir. Data Object Bir veriyi tarif etmek için kullanılır, yani veri tipidir. 3 temel Data Object türü vardır: Element, Structure, Table. Element Element için kullanılabilecek hazır türler: Data Object Description TEXT Text type without restrictions.
  21. 21. SAP BRF+ 21 Dr. Kerem Köseoğlu Tesuji Consulting http://www.tesuji.biz NUMBER Number type without restrictions BOOLEAN Boolean type without restrictions AMOUNT Amount type without restrictions QUANTITY Quantity type without restrictions TIMEPOINT Timepoint type without restrictions TIMESTAMP Timepoint of type Universal Time Coordinated (UTC) timestamp, including date and time DATE_TIME Timepoint of type date and time (local) DATE Timpoint of type date TIME Timepoint of type time USER_NAME Text type, bound to DDIC type SYUNAME BACKGROUND Boolean type, bound to DDIC type SYBATCH ACTION Text type, intended to store IDs of actions Type Length (max.) Decimals (max.) Only Positive Dimension BRFplus Type in IF_ FDT_TYPES ABAP Base Types Text 255 – – – ELEMENT_ TEXT SSTRING Number 31 10 x – ELEMENT_ NUMBER DF34_RAW Boolean – – – – ELEMENT_ BOOLEAN CHAR1 Amount 31 – x – ELEMENT_ AMOUNT DF34_RAW, CHAR5 Quantity 31 10 x x ELEMENT_ QUANTITY DF34_RAW, CHAR3 Timepoint – – – – ELEMENT_ TIMEPOINT DATS,TIMS, TIMESTAMP Bunun yanı sıra; Binding özelliği kullanılarak bir DDIC nesnesine referansla da oluşturulabilir. Tek bir Data Object yaratmak:
  22. 22. 22 SAP BRF+ Dr. Kerem Köseoğlu Tesuji Consulting http://www.tesuji.biz Aynı anda birkaç Data Object yaratma adımları:
  23. 23. SAP BRF+ 23 Dr. Kerem Köseoğlu Tesuji Consulting http://www.tesuji.biz
  24. 24. 24 SAP BRF+ Dr. Kerem Köseoğlu Tesuji Consulting http://www.tesuji.biz Bir Element için (Domain gibi) Fix değerler de verilebilir. Mesela Item’ın Computer, Laptop veya Phone olabilmesini istiyoruz diyelim. Bu durumda; Item elementinin “Domain Values” kısmına bu değerleri yazıyoruz. Structure ABAP’tan bildiğimiz Work Area veya SE11’deki Structure’dır.
  25. 25. SAP BRF+ 25 Dr. Kerem Köseoğlu Tesuji Consulting http://www.tesuji.biz Table Belli bir Line Type türünde veri içeren ITAB. Expression Fonksiyonun içine doğrudan yazılabilen; 4 işlem, fonksiyon çağırma gibi işlemlerdir. If, or, unless gibi koşulların arkasından değer hesaplayıp döndürebilir.
  26. 26. 26 SAP BRF+ Dr. Kerem Köseoğlu Tesuji Consulting http://www.tesuji.biz BRFplus mimarisinde Expression’ların yeri: Constant En basit Expression türüdür. Fix bir değer barındırır.
  27. 27. SAP BRF+ 27 Dr. Kerem Köseoğlu Tesuji Consulting http://www.tesuji.biz Decision Table Karar tablosudur. Arka arkaya birden fazla If’I peş peşe koymak yerine Decision Table kullanılabilir. Bitmiş bir Decision Table örneği: Öncelikle; Decision Table sonucunda hesaplanacak olan Output değeri tanımlanır:
  28. 28. 28 SAP BRF+ Dr. Kerem Köseoğlu Tesuji Consulting http://www.tesuji.biz Akabinde, Decision Table koşullarında kullanılacak olan değişkenler tanımlanır:
  29. 29. SAP BRF+ 29 Dr. Kerem Köseoğlu Tesuji Consulting http://www.tesuji.biz Bu noktadan itibaren; her bir koşul için “Insert New Row…” diye diye değerleri tanımlarız. Mesela; “Müşteri ABC ise ve Item Computer ise, %15 indirim uygula” diye tanım yapılabilir. Formula Fonksiyonun herhangi bir yerinde kullanılabilen bir formüldür. Mesela, bir Rule içerisinde bir değer hesaplamak istiyorsak bir formül kullanabiliriz.
  30. 30. 30 SAP BRF+ Dr. Kerem Köseoğlu Tesuji Consulting http://www.tesuji.biz Burada gördüğümüz işlemler (topla, çıkar, COS, SIN, vs) aslında ilgili sınıflardaki Method’lardır: İstersek kendimize özel fonksiyonlar da geliştirebiliriz. Detaylar: http://scn.sap.com/docs/DOC-4582 Function Call Bir Function içerisinden bir başka Function çağırmaya yarar.
  31. 31. SAP BRF+ 31 Dr. Kerem Köseoğlu Tesuji Consulting http://www.tesuji.biz Loop Bildiğimiz döngü. 4 çeşit Loop vardır:  For Each  Repeat n times  Do Until  While Do Table Operation Context içerisindeki ITAB’ın verileriyle ilgili işlemlerdir. Çeşitleri:
  32. 32. 32 SAP BRF+ Dr. Kerem Köseoğlu Tesuji Consulting http://www.tesuji.biz Procedure Call Static Method veya Function çağırmaya yarar (SE24 / SE37). Raw, X, Xstring ve referans parametreler Map’lenemez. Random Number Gelişigüzel sayı üretmeye yarar. İki çeşidi vardır:  Bounded number: Verilen iki sayı arasında bir değer türetir (Decimal verilebilir)  Boolean: True veya False döndürür.
  33. 33. SAP BRF+ 33 Dr. Kerem Köseoğlu Tesuji Consulting http://www.tesuji.biz Decision Tree Decision Table’ın daha karışık, iç içe Condition içeren hali
  34. 34. 34 SAP BRF+ Dr. Kerem Köseoğlu Tesuji Consulting http://www.tesuji.biz Case ABAP Case gibi Diğer Expression Türleri Boolean BRMS Connector: BRFplus harici Bir başka Rule Engine ile bağlantı. Detaylar: http://scn.sap.com/docs/DOC-20056 Database Lookup: Doğrudan doğruya veritabanı okuması. Random Number Search Tree Step Sequence Value Range: Bir değer belli bir aralıkta mı değil mi? XSL Transformation Rule Business Logic’in tarif edildiği yerdir. Bir fonksiyon içinde tek bir Rule olabileceği gibi, Ruleset içerisinde birden fazla Rule da tarif edilebilir. Rule yaratma örneği görelim; şu anda bir Ruleset’teyiz:
  35. 35. SAP BRF+ 35 Dr. Kerem Köseoğlu Tesuji Consulting http://www.tesuji.biz Burada karşımıza If… Then… Else… mantığında bir ekran gelecek. Önce If koşulunu tanımlıyoruz:
  36. 36. 36 SAP BRF+ Dr. Kerem Köseoğlu Tesuji Consulting http://www.tesuji.biz Akabinde; Then kısmına istediğimiz şeyi yerleştirebiliriz. Bu örnekte, bir Formula yerleştiriliyor. Bunun yerine; Decision Table gibi başka bir Expression da yerleştirebilirdik.
  37. 37. SAP BRF+ 37 Dr. Kerem Köseoğlu Tesuji Consulting http://www.tesuji.biz Ruleset Arka arkaya birden fazla Rule içerir. Bu Rule’ların işlenme Condition’larını da belirler (öncelik, vs). Bir fonksiyona birden fazla Ruleset de konabilir. RuleSet tanımlama ekranı:
  38. 38. 38 SAP BRF+ Dr. Kerem Köseoğlu Tesuji Consulting http://www.tesuji.biz  Assign Function: Bu Ruleset’I barındıracak fonksiyon seçilir (sadece bir fonksiyona ait olabilir).  Assign Precondition: Bu Ruleset’in etkinleşmesi için gereken koşullar tanımlanabilir. Bitmiş bir Ruleset:
  39. 39. SAP BRF+ 39 Dr. Kerem Köseoğlu Tesuji Consulting http://www.tesuji.biz Ruleset Element Bu Ruleset içinde; aynen WorkFlow Container gibi, Element yaratabiliyoruz. Buna Ruleset Variable deniyor. Her bir değişkenin nasıl Initialize edileceğini de tanımlayabiliyoruz:
  40. 40. 40 SAP BRF+ Dr. Kerem Köseoğlu Tesuji Consulting http://www.tesuji.biz Ruleset Rule Ruleset içinde çağırılacak her bir Rule’un bir Header bölümü vardır. Burada, Rule’un ne zaman işleyeceğine dair koşullar verilir. Ruleset içine peşi sıra yerleştirilmiş birkaç Rule, şu şekilde gözükecektir:
  41. 41. SAP BRF+ 41 Dr. Kerem Köseoğlu Tesuji Consulting http://www.tesuji.biz Görüldüğü gibi; Rule’lar arasına Exit Condition’lar da konabilmektedir. Bu şekilde, basit uygulama mantıkları geliştirilebilir. Final Ruleset tanımlaması bittikten sonra; Enable Ruleset demeyi unutmuyoruz: İçi dolu bir Ruleset örneği:
  42. 42. 42 SAP BRF+ Dr. Kerem Köseoğlu Tesuji Consulting http://www.tesuji.biz Action Fonksiyon içerisinde yürütülecek işlemleri tanımlar. Log Message Application Log’a mesaj göndermeye yarar.
  43. 43. SAP BRF+ 43 Dr. Kerem Köseoğlu Tesuji Consulting http://www.tesuji.biz Procedure Call ABAP Method / Fonksiyon çağırma işlevidir. Diğer Aksiyonlar  E-Posta gönderme  İş akışı başlatma / tetikleme. o Tetikleme için örnek: http://www.sdn.sap.com/irj/scn/go/portal/prtroot/docs/library/uuid/90109a5 3-d63e-2f10-1eb8- dd45a1559c7a?QuickLink=index&overridelayout=true&53717156077789
  44. 44. 44 SAP BRF+ Dr. Kerem Köseoğlu Tesuji Consulting http://www.tesuji.biz o İş akışı Interaction’u için örnek: http://scn.sap.com/docs/DOC-4568  Context Change: Context değişkenlerinin değerleriyle oynama Genişletme / Kişiselleştirme BRF+ Nesnelerini Z’li Programda Göstermek BRF+ nesnelerini, kendi Z’li Web Dynpro uygulamalarımızda gösterebiliyoruz. Detaylar: http://scn.sap.com/docs/DOC-4578 Bu başlık başta bana ilginç gelse de; kaynakları ve özellikle "FDT_WD_DEMO_EMBED_UI" adlı Web Dynpro uygulamasını incelediğimde şunu gördüm: Buradaki bütün hikaye, BRF kapsamında SAP tarafından geliştirilmiş olan "BRF Object Viewer"ı Z'li Web Dynpro'ya gömmekten ibaret. Z'li Web Dynpro uygulamamıza FDT_IWD_OBJECT_MANAGER'i dahil ediyoruz. Bunun içini de inceledim - CL_FDT_WD_FACTORY=>IF_FDT_WD_FACTORY~GET_VIEWER( ) ile bir Viewer alınıyor ve dönen Component Web Dynpro'ya gömülüyor. Bu sayede, ID'si bilinen bir BRF+ nesnesini (fonksiyon, vs) Z'li Web Dynpro uygulamasında görüntülemek mümkün oluyor. Bu sayede; mesela Z'li bir uygulama ile ilgisi olan bir fonksiyonu, formülü, vs Hotspot mantığında Web Dynpro ekranı içerisinde görüntülemek mümkün olur. Yapılamayacak şey ise; Viewer'ın içerisine müdahele ederek kendi Z'li Property'lerimizi, vs gömmek olur. Toolbar'ı gizlemek gibi basit şeyler yapılabilse de; mesela Function'u gösteren ekranı Screen Exit mantığı ile modifiye edip kendi özelliklerimizi ekleyebileceğimiz ve standart BRF ekranının sadece işimize geldiği kadarını gösterebileceğimiz bir imkan algılayamadım. Viewer'da yapılabilecek basit modifikasyonlar; SE24 -> IF_FDT_WD_CONFIGURATION Method'larında görülebilir; "IF_FDT_WD_USER_CONFIGURATION~SET_*" diye başlayanlara bakabilirsiniz. BRF+ Görünümlerini Kişiselleştirme Farklı kullanıcıların BRF+ ekranında nelerle karşılaşacağını organize edebiliyoruz. Detaylar: http://scn.sap.com/community/brm/blog/2012/12/18/controlling-the- ui-appearance-of-the-brfplus-workbench Simple / Expert Mode Harici Özel Mod: CL_FDT_WD_UI_SIMPLE_MODE sınıfından yeni bir sınıf türeterek, kullanıcının ekranında nasıl bir görüntü istiyorsak onu tanımlayabiliyoruz. Değiştirebileceğimiz parametreler, SE24 - > IF_FDT_WD_USER_CONFIGURATION -> Attributes içerisinde görülebilir (GC_PARAMETER* diye başlayanlar). Burada; sadece belli bir kataloğun açılmasını,
  45. 45. SAP BRF+ 45 Dr. Kerem Köseoğlu Tesuji Consulting http://www.tesuji.biz ya da sadece belli nesnelerin gelmesini (örnek: ZBONUS_TURKEY_*) sağlamak mümkün. Buradaki konfigürasyonu, akabinde (mesela) ZBRF diye bir işlem koduna bağlayarak BRF+'taki Admin görüntüsü yerine basitleştirilmiş görüntünün gelmesini sağlayabiliyoruz. Object Filter: Object Filter'lar sayesinde ise; kullanıcıların karşısına gelecek + değiştirebilecekleri nesneleri baştan tanımlayabiliyoruz. Mesela, sadece ZBONUS_TURKEY_APP_* diye başlayan nesneler üzerinde işlem yapabilsinler diyebiliyoruz. Catalog: Son kullanıcı kataloğu yaratarak, sadece bakımı yapılabilecek nesneleri listeletebiliyoruz. Örnek Kodlar Dinamik İşlemler Application Yaratmak DATA: lo_factory TYPE REF TO if_fdt_factory, lo_application TYPE REF TO if_fdt_application, lt_message TYPE if_fdt_types=>t_message, lv_boolean TYPE abap_bool. FIELD-SYMBOLS: <ls_message> TYPE if_fdt_types=>s_message. lo_factory = cl_fdt_factory=>if_fdt_factory~get_instance( ). lo_application = lo_factory->get_application( ). lo_application->if_fdt_transaction~enqueue( ). lo_application->set_development_package( ‘$TMP’ ). lo_application->if_fdt_admin_data~set_name( ‘PRICING’ ). lo_application->if_fdt_admin_data~set_texts( iv_short_text = ‘Pricing’ ). lo_application->if_fdt_transaction~activate( IMPORTING et_message = lt_message ev_activation_failed = lv_boolean ). write_errors lt_message. “macro, which exits in case of error lo_application->if_fdt_transaction~save( ). lo_application->if_fdt_transaction~dequeue( ).
  46. 46. 46 SAP BRF+ Dr. Kerem Köseoğlu Tesuji Consulting http://www.tesuji.biz “Get an application specific factory instance lo_factory = cl_fdt_factory=>if_fdt_factory~get_instance( iv_application_id = lo_application->mv_id ). Fonksiyon Yaratmak DATA: lo_function TYPE REF TO if_fdt_function, lts_context_id TYPE if_fdt_types=>ts_object_id, lv_result_id TYPE if_fdt_types=>id. lo_function ?= lo_factory->get_function( ). lo_function->if_fdt_transaction~enqueue( ). lo_function->if_fdt_admin_data~set_name( ‘PRICE_CALCULATION’ ). lo_function->if_fdt_admin_data~set_texts( iv_short_text = ‘Price Calculation’ ). lo_function->set_function_mode( if_fdt_function=>gc_mode_event ). * code for context creation (lts_context_id) and result * creation (lv_result_id) to be inserted here lo_function->set_context_data_objects( lts_context_id ). lo_function->set_result_data_object( lv_result_id ). lo_function->if_fdt_transaction~activate( EXPORTING iv_deep = abap_true IMPORTING et_message = lt_message ev_activation_failed = lv_boolean ). write_errors lt_message. “>>> exit in case of error lo_function->if_fdt_transaction~save( EXPORTING iv_deep = abap_true ). lo_function->if_fdt_transaction~dequeue( EXPORTING iv_deep = abap_true ). Data Object Yaratmak Standart bir Data Object yaratan örnek kod: DATA lo_element TYPE REF TO if_fdt_element.
  47. 47. SAP BRF+ 47 Dr. Kerem Köseoğlu Tesuji Consulting http://www.tesuji.biz lo_element ?= lo_factory->get_data_object( iv_data_object_type = if_fdt_constants=>gc_data_object_type_element ). lo_element->if_fdt_transaction~enqueue( ). lo_element->if_fdt_admin_data~set_name( ‘CUSTOMER’ ). lo_element->if_fdt_admin_data~set_texts( iv_short_text = ‘Customer’ ). lo_element->set_element_type( if_fdt_constants=>gc_element_type_text ). lo_element->set_element_type_attributes( iv_length = 30 ). INSERT lo_element->mv_id INTO TABLE lts_context_id. Daha detaylı özellikler içeren bir Data Object yaratan örnek kod: lo_element ?= lo_factory->get_data_object(
iv_data_object_type = if_fdt_constants=>gc_data_object_type_element ). lo_element->if_fdt_transaction~enqueue( ). lo_element- >if_fdt_admin_data~set_name( ‘FINAL_PRICE’ ). lo_element- >if_fdt_admin_data~set_texts( iv_short_text = ‘Final Price’ ).
lo_element->set_element_type( if_fdt_constants=>gc_element_type_number ). lo_element- >set_element_type_attributes( iv_length = 7 iv_decimals = 2 iv_only_positive = abap_true ). lv_result_id = lo_element->mv_id. Ruleset Yaratmak Aşağıdaki kod 3 temel adımdan oluşmaktadır: Değişkenleri tanımlamak (LTS_VARIABLE), Expression’ları tanımlamak (LTS_EXPRESSION), Rule’ları tanımlamak (LTS_RULE) DATA: lo_ruleset TYPE REF TO if_fdt_ruleset, lts_rule TYPE if_fdt_ruleset=>ts_rule, lts_variable TYPE if_fdt_ruleset=>ts_variable, lts_expression TYPE if_fdt_ruleset=>ts_init_expr. lo_factory = cl_fdt_factory=>if_fdt_factory~get_instance( iv_application_id = ‘00505683359D02EE98FC41ECA7650AA3’ ). lo_ruleset ?= lo_factory->get_ruleset( ). lo_ruleset->if_fdt_transaction~enqueue( ).
  48. 48. 48 SAP BRF+ Dr. Kerem Köseoğlu Tesuji Consulting http://www.tesuji.biz lo_ruleset->set_ruleset_switch( iv_switch = if_fdt_ruleset=>gc_switch_on ). lo_ruleset->if_fdt_admin_data~set_name( ‘PRICE_CALCULATION_RULES’ ). lo_ruleset->if_fdt_admin_data~set_texts( iv_short_text = ‘Price Calc. Rules’ iv_text = ‘Price Calculation Rules’ ). lo_ruleset->set_function_restriction( iv_function_id = ‘00505683359D02EE98FC41EE6215CAA4’ ). * code for ruleset variables (lts_variable) to be inserted here lo_ruleset->set_ruleset_variables( lts_variable ). * code for ruleset initializations (lts_expression) to be * inserted here lo_ruleset->set_ruleset_initializations( lts_expression ). * code for rules (lts_rule) to be inserted here lo_ruleset->set_rules( lts_rule ). lo_ruleset->if_fdt_transaction~activate( EXPORTING iv_deep = abap_true IMPORTING et_message = lt_message ev_activation_failed = lv_boolean ). write_errors lt_message. “>>> exit in case of error lo_ruleset->if_fdt_transaction~save( EXPORTING iv_deep = abap_true ). lo_ruleset->if_fdt_transaction~dequeue( EXPORTING iv_deep = abap_true ). Ruleset Değişkenlerini Tanımlamak Aşağıdaki örnekte; iki RuleSet değişkeni tanımlanmıştır. DATA: lo_element TYPE REF TO if_fdt_element, ls_variable TYPE if_fdt_ruleset=>s_variable, lv_pro_discount TYPE if_fdt_types=>id, lv_cus_discount TYPE if_fdt_types=>id. lo_element ?= lo_factory->get_data_object( iv_data_object_type =
  49. 49. SAP BRF+ 49 Dr. Kerem Köseoğlu Tesuji Consulting http://www.tesuji.biz if_fdt_constants=>gc_data_object_type_element ). lo_element->if_fdt_transaction~enqueue( ). lo_element->if_fdt_admin_data~set_name( ‘CUSTOMER_DISCOUNT’ ). lo_element->if_fdt_admin_data~set_texts( iv_short_text = ‘Customer Discount’ ). lo_element->set_element_type( if_fdt_constants=>gc_element_type_number ). lo_element->set_element_type_attributes( iv_length = 3 iv_decimals = 2 iv_only_positive = abap_true ). ls_variable-position = 1. ls_variable-data_object_id = lo_element->mv_id. INSERT ls_variable INTO TABLE lts_variable. lv_cus_discount = lo_element->mv_id. lo_element ?= lo_factory->get_data_object(
iv_data_object_type = if_fdt_constants=>gc_data_object_type_element ). lo_element->if_fdt_transaction~enqueue( ). lo_element->if_fdt_admin_data~set_name( ‘PROMOTION_DISCOUNT’ ). lo_element->if_fdt_admin_data~set_texts( iv_short_text = ‘Promotion Discount’ ). lo_element->set_element_type( if_fdt_constants=>gc_element_type_number ). lo_element->set_element_type_attributes( iv_length = 3 iv_decimals = 2 iv_only_positive = abap_true ). ls_variable-position = 2. ls_variable-data_object_id = lo_element->mv_id. INSERT ls_variable INTO TABLE lts_variable. lv_pro_discount = lo_element->mv_id.

×