Tuesday, November 10, 2009

Execute BW Process Chain Program

*&---------------------------------------------------------------------*
*& Report ZBIIP_TAKIM_AC
*&---------------------------------------------------------------------*

REPORT ZBIIP_TAKIM_AC.
TYPE-POOLS: rsplf.
DATA: l_repid TYPE sy-repid.
DATA: ls_column_selection TYPE baldisp,
ls_display_profile TYPE bal_s_prof.
data: l_local_log TYPE RSPC_LOGID.
data: l_chain_status TYPE RSPC_STATE.
data: start_time like SY-UZEIT.
data: end_time like SY-UZEIT.
data: diff_time like SY-UZEIT.
data: curr_time like SY-UZEIT.
data: polling_interval type i value 30.
DATA: l_c_nm TYPE RSPC_CHAIN.
DATA: l_time like SY-UZEIT.
DATA : ZENQ TYPE STANDARD TABLE OF SEQG3.
DATA : wa_ZENQ TYPE SEQG3.
DATA : ANSWER.

CALL FUNCTION 'RSPC_API_CHAIN_START'
EXPORTING
I_CHAIN = 'ZBIIP_TAKIMAC'
IMPORTING
E_LOGID = l_local_log.

do.
CALL FUNCTION 'RSPC_API_CHAIN_GET_STATUS'
EXPORTING
I_CHAIN = l_c_nm
I_LOGID = l_local_log
IMPORTING
E_STATUS = l_chain_status.

case l_chain_status.
when 'G' or 'F'.
write: / 'Chain OK ', sy-uzeit.
exit.

when 'A' or 'P' or 'S' or 'Q' or 'Y'.
wait up to polling_interval seconds.
* curr_time = sy-uzeit.
* diff_time = curr_time - start_time.
* if diff_time > l_time.
* write: / 'Job timed out for chain ', l_c_nm.
* message: E000(Chain_Timeout).
* exit.
* endif.

when 'R'.
write: / 'LOGID = ', l_local_log.
write: / 'Status = ', l_chain_status.
message: E000(Chain_Failed01).
exit.

when others.
write: / 'LOGID = ', l_local_log.
write: / 'Status = ', l_chain_status.
message: E000(Chain_Failed02).
exit.

endcase.

enddo.

* Process Chain contains Planning function below code shows planning function log

CALL FUNCTION 'APPL_LOG_DISPLAY'
EXPORTING
object = rsplf_c_appl_log_planning
object_attribute = 2
subobject = rsplf_c_appl_log_plsq_exec
subobject_attribute = 2
external_number = ' '
external_number_attribute = 2
title_list_screen = ' '
title_selection_screen = ' '
date_from = sy-datum "#EC DOM_EQUAL
date_to = sy-datum "#EC DOM_EQUAL
time_to = '235959' "#EC DOM_EQUAL
external_number_display_length = 20
column_selection = ls_column_selection
i_s_display_profile = ls_display_profile
i_variant_report = l_repid
EXCEPTIONS
no_authority = 01.

Thursday, November 5, 2009

How to change Data Slice Behaviour (BI-IP)

CALL FUNCTION 'Z_SWITCH_DSLICE'
EXPORTING
I_INFOPROV = 'ZICR003'
I_DSNR = 1
I_STATUS = 1.

FUNCTION Z_SWITCH_DSLICE.
*"----------------------------------------------------------------------
*"*"Local Interface:
*" IMPORTING
*" REFERENCE(I_INFOPROV) TYPE RSINFOPROV
*" REFERENCE(I_DSNR) TYPE RSPLS_DSNR
*" REFERENCE(I_STATUS) TYPE I
*"----------------------------------------------------------------------

data wa_ds type rspls_ds.
select single * from rspls_ds
into wa_ds
where infoprov = I_INFOPROV
AND objvers = 'A'
AND dsnr = I_DSNR.

if I_status = 1. wa_ds-used = abap_true.
elseif I_status = 0. wa_ds-used = abap_false.
endif.

update rspls_ds from wa_ds.
COMMIT WORK.

ENDFUNCTION.

Monday, November 2, 2009

BI-IP Aggregation Level Activation Program

*&---------------------------------------------------------------------*
*& Report  ZBIIP_ACTIVATE_ALVL
*&---------------------------------------------------------------------*

REPORT  ZBIIP_ACTIVATE_ALVL.
TYPE-POOLS: rs.

PARAMETER: g_iprov TYPE rsinfoprov,
g_objv TYPE rsobjvers DEFAULT 'M'.
DATA p_area TYPE RSINFOAREA .
TYPE-POOLS rsdg.

TYPES: ty_s_rsdcube     LIKE rsdcube.
TYPES: ty_t_rsdcube     TYPE ty_s_rsdcube OCCURS 0.

TABLES rsdcube.
DATA: objvers TYPE rsobjvers .
objvers = rs_c_objvers-modified .

DATA: g_s_rsdcube       TYPE ty_s_rsdcube.
DATA: g_t_rsdcube       TYPE ty_t_rsdcube.
DATA: g_infoarea        TYPE rsd_infoarea.
DATA: g_r_mpro          TYPE REF TO cl_rsd_mpro.

DATA: l_r_exception     TYPE REF TO cx_rs_error.
DATA: l_actvt           TYPE activ_auth.
DATA: l_enqueue         TYPE rs_bool.
DATA: l_with_cto        TYPE rs_bool.
DATA: l_success_pre     TYPE rs_bool.
DATA: l_success_act     TYPE rs_bool.
DATA: l_subrc           LIKE sy-subrc.
DATA: l_cnt(4)          TYPE n.
DATA: l_cnt_ok(4)       TYPE n.
DATA: l_cnt_no(4)       TYPE n.
DATA: l_text1(60)       TYPE c.
DATA: l_text_out(132)   TYPE c.
DATA: l_answer          TYPE rs_answer.
DATA: l_not_all         TYPE rs_bool.
DATA: l_time_from       LIKE sy-uzeit.
DATA: l_time_to         LIKE sy-uzeit.
DATA: l_extnumber       LIKE balhdr-extnumber.

DATA: l_t_return TYPE STANDARD TABLE OF bapiret2,
l_s_return TYPE bapiret2,
l_t_alvl TYPE STANDARD TABLE OF rspls_alvl,
l_s_alvl TYPE rspls_alvl,
l_t_alvl_iobj TYPE STANDARD TABLE OF rspls_s_rfc_alvl_iobj.

PERFORM run.
PERFORM run2.

*&---------------------------------------------------------------------*
*&      Form  run
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
FORM run.

  SELECT * FROM rspls_alvl INTO TABLE l_t_alvl
  WHERE infoprov = g_iprov
  AND objvers = g_objv.
  CHECK l_t_alvl IS NOT INITIAL.

  LOOP AT l_t_alvl INTO l_s_alvl.

    CALL FUNCTION 'RSPLS_ALVL_CHANGE'
      EXPORTING
        i_aggrlevel    = l_s_alvl-aggrlevel
      IMPORTING
        e_subrc        = l_subrc
      TABLES
        i_tk_alvl_iobj = l_t_alvl_iobj
        e_tk_return    = l_t_return.

    CHECK l_subrc = 0.

    CALL FUNCTION 'RSPLS_ALVL_CHECK'
      EXPORTING
        i_aggrlevel = l_s_alvl-aggrlevel
        i_objvers   = rs_c_objvers-active
      IMPORTING
        e_subrc     = l_subrc
      TABLES
        e_tk_return = l_t_return.

    CHECK l_subrc = 0.

    CALL FUNCTION 'RSPLS_ALVL_ACTIVATE'
      EXPORTING
        i_aggrlevel = l_s_alvl-aggrlevel
      IMPORTING
        e_subrc     = l_subrc
      TABLES
        e_tk_return = l_t_return.

  ENDLOOP.

ENDFORM.                    "run

*&---------------------------------------------------------------------*
*&      Form  run2
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
FORM run2.
  SELECT SINGLE INFOAREA INTO p_area FROM RSDCUBE
  WHERE INFOCUBE = g_iprov .

  SELECT * FROM  rsdcube
         INTO TABLE g_t_rsdcube
         WHERE
*      infocube IN so_mpro AND
                objvers  = objvers
         AND    infoarea LIKE p_area
         AND    cubetype = rsd_c_cubetype-multi_ic.

* warning popup
  DESCRIBE TABLE g_t_rsdcube LINES l_cnt.
  l_text1 = text-pt1.
  REPLACE '&1' WITH l_cnt INTO l_text1.
  CALL FUNCTION 'POPUP_TO_CONFIRM_WITH_MESSAGE'
       EXPORTING
            defaultoption  = rs_c_yes
            diagnosetext1  = l_text1
*             DIAGNOSETEXT2  = ' '
*             DIAGNOSETEXT3  = ' '
            textline1      = text-pt2
*             TEXTLINE2      = ' '
            titel          = text-ptt
*             START_COLUMN   = 25
*             START_ROW      = 6
            cancel_display = rs_c_true
       IMPORTING
            answer         = l_answer.

  CHECK: l_answer = rs_c_yes.
  l_success_pre  = rs_c_true.
  l_success_act  = rs_c_true.
  l_actvt    = rssb_c_auth_actvt-maintain.
  l_enqueue  = rs_c_false.
  l_with_cto = rs_c_false.

  LOOP AT g_t_rsdcube INTO g_s_rsdcube.
*     create instance of multiprovider
    CALL METHOD cl_rsd_mpro=>factory
       EXPORTING
         i_infoprov    = g_s_rsdcube-infocube
*          I_REFNM       =
*          I_TXTLG       =
*          I_INFOAREA    =
*          I_BWAPPL      =
      RECEIVING
        r_r_mpro      = g_r_mpro
      EXCEPTIONS
        input_invalid = 1
        cancelled     = 2
        OTHERS        = 3.

    CHECK: sy-subrc = 0.
*   prepare multiprovider
    TRY.
        CALL METHOD g_r_mpro->prepare
          EXPORTING
            i_with_enqueue   = l_enqueue
            i_with_cto_check = l_with_cto
            i_with_authority = rs_c_true
            i_actvt          = l_actvt.
      CATCH cx_rs_display_only INTO l_r_exception.
        l_cnt_no = l_cnt_no + 1.
        l_success_pre = rs_c_false.
        CONTINUE.
      CATCH cx_rs_error INTO l_r_exception.
        l_cnt_no = l_cnt_no + 1.
        l_success_pre = rs_c_false.
        CONTINUE.
    ENDTRY.

*   activate multiprovider
    CALL METHOD g_r_mpro->activate
      EXPORTING
        i_objvers             = objvers
*          I_TH_TLOGO            =
        i_force_activation    = rs_c_true
*          I_SHOW_CHECK_PROTOCOL = RS_C_FALSE
        i_with_cto            = l_with_cto
      IMPORTING
*          E_T_TABLNM_CNV        =
        e_subrc               = l_subrc.

    IF l_subrc   <> space.
      l_success_act = rs_c_false.
      l_cnt_no = l_cnt_no + 1.
    ELSE.
      l_cnt_ok = l_cnt_ok + 1.
    ENDIF.

    SELECT * FROM rspls_alvl INTO TABLE l_t_alvl
    WHERE infoprov = g_s_rsdcube-infocube
    AND objvers = g_objv.
    CHECK l_t_alvl IS NOT INITIAL.

    LOOP AT l_t_alvl INTO l_s_alvl.

      CALL FUNCTION 'RSPLS_ALVL_CHANGE'
        EXPORTING
          i_aggrlevel    = l_s_alvl-aggrlevel
        IMPORTING
          e_subrc        = l_subrc
        TABLES
          i_tk_alvl_iobj = l_t_alvl_iobj
          e_tk_return    = l_t_return.

      CHECK l_subrc = 0.

      CALL FUNCTION 'RSPLS_ALVL_CHECK'
        EXPORTING
          i_aggrlevel = l_s_alvl-aggrlevel
          i_objvers   = rs_c_objvers-active
        IMPORTING
          e_subrc     = l_subrc
        TABLES
          e_tk_return = l_t_return.

      CHECK l_subrc = 0.

      CALL FUNCTION 'RSPLS_ALVL_ACTIVATE'
        EXPORTING
          i_aggrlevel = l_s_alvl-aggrlevel
        IMPORTING
          e_subrc     = l_subrc
        TABLES
          e_tk_return = l_t_return.

    ENDLOOP.
  ENDLOOP.
ENDFORM.                                                    "run2

Sunday, November 1, 2009

Şirketinizin cevherini keşfedin...

Yöneticilerin nitelikli işgücünü yoğun rekabet şartlarında yönetebilmek için operasyonel ve stratejik bilgiyle donanımlı olması gerekmektedir. Zamanında ve yerinde kararlar almanın temeli hatasız işlenmiş verilere, bu verileri hızlı şekilde anlamlı bilgiye dönüştürecek şirket zekasını ve kültürünü oluşturabilmeye dayanıyor. Veri, insan kaynağı ve süreçlerini kurumsal kaynak planlama sistemleri sayesinde başarıyla entegre etmiş şirketler için sonraki adım sahip olduğu verileri çok boyutlu analiz etmeyi ve raporlamayı sağlayacak sistemleri kuruyor olmaktır.
İş hayatında doğru hedeflere koşmak için belirsizlikleri minimuma indirgeyecek, rasyonel karar almaya destek olacak etkin bilgi sistemlerine ihtiyacımız olduğu şüphesiz bir gerçek. Verimliliği arttırmak, ürün ve müşteri potansiyelini fırsata dönüştürmek için sorulması gereken sorular ve yanıtları çoğunlukla veri yığınları içerisinde keşfedilmeyi bekliyor. Çok boyutlu veri analizi ve veri madenciliği bu aşamada şirketlere çözüm getiriyor.
Veri madenciliği ve OLAP şirket zekası sistemlerinin (Business Intelligence Systems - BIS) bir parçası olarak karşımıza çıkıyor. Bilgi işçileri ve iş analistleri şirket zekası sistemleri aracılığıyla çeşitli ortamlardan sağlanan verileri veri ambarlarında konsolide ederek çeşitli modellemelere dayalı karar destek sonuçları elde etmektedir. Bu süreç içerisinde şirket hedeflerinin keşfedilmeyi bekleyen sorulara dönüştürülmesi hızlı sonuçlar almak ve veri yığınlarında kaybolmamak için çok önemli. Şirket hedefleriniz çerçevesinde sorduğunuz ve sıkça cevaplarını revize etmeniz gereken sorulardan bazıları şunlar olabilir:
• Müşterilerim kimler, özellikleri nelerdir? (Profil oluşturma)
• En değerli müşterilerim kimler? (Müşteri değerleme)
• En değerli müşterilerimin bir sonraki siparişi ne olacak, ne zaman olabilir? (Olasılık hesaplama)
• Pazarı nasıl bölebiliriz? Müşteri segmentasyonum satışlarımla ne ölçüde tutarlı? (Pazar segmentasyonu)
• Müşterilerime ne tür promosyonları ne sıklıkta yapmalıyım? Hangi iletişim kanalını kullanmalıyım? (Müşteri iletişimi optimizasyonu)
• Müşterilerimin birlikte almayı tercih ettiği ürün veya hizmetler neler? (Birliktelik analizi)
Bunun gibi soruları şirket hedefleri doğrultusunda periyodik olarak sormak, oluşturulan modellerin doğruluğunu sınamak gerekiyor.
Veri madenciliği sürecinde çeşitli istatistik ve matematik tekniklerle birlikte ilişki tanıma teknolojileri kullanılarak, depolama ortamlarında bulunan veri yığınlarının elenmesi ile anlamlı yeni ilişki ve eğilimler keşfedilmektedir. Kurumlar yeni müşteri kazanmanın her geçen gün zorlaştığı rekabet ortamında varolan müşterileri memnun edebilmenin, onları tanıyabilmenin ve ileriye dönük ihtiyaçlarını fırsata dönüştürmenin yollarını arıyorlar. Müşteri segmentasyonu, yeni müşteri kazanma, kârlılığı artırmak için çapraz ve dikey satış fırsatları oluşturma, dolandırıcılık tespiti, müşteriye özel fiyatlandırma gibi daha bir çok konuda ve sektörde veri madenciliği uygulamalarının başarılı örneklerini görebiliriz.
Şirket verilerinin doğru raporlanması, analiz edilmesi ve yorumlanması süreci içinde çeşitli zorlukları barındırıyor. Zorlukların en başında verinin değişik uygulamalara dağıtılmış olması, geçmişe dönük hacminin sınırlı olması ve raporlamadan ziyade veriyi işlemek için optimize edilmiş bir formatta tutuluyor olması gelmektedir. Heterojen yapıdaki verilerin standardize edilmesi, depolanması, geçmişe dönük analiz ve raporlama için operasyonel sistemlerden farklı sistemler kullanılmalıdır.
Veri Madenciliği ve CRM
Müşteri İlişkileri Yönetimini (CRM), müşteri memnuniyetini maksimize ederken, müşterilerin servis masraflarını minimize etmek, müşteri yaşam döngüsünü akıllıca yönetmek için doğru müşterilerle doğru şirket etkileşimini birleştiren müşteri odaklı stratejileri oluşturmayı amaçlayan bir konsept olarak tanımlayabiliriz. CRM aktivitelerinin ana hedeflerinden biri uzun vadede karlılığı arttırmaktır. Bu hedeflere ulaşmak için yeni müşteriler kazanmak, müşteri değerini arttırmak, değerli müşterileri yitirmemek gibi stratejiler geliştirilir. Bu stratejilerde başarılı olabilmek için müşteri ve satın alma davranışlarının analiz edilmesi gerekiyor. Daha büyük veri kümeleri kullanmak istatistiksel olarak daha doğru sonuçlara ulaşmak için en doğru yaklaşımdır fakat veri kümesi büyüdükçe pazar araştırmacısının işi manuel yapılamayacak kadar büyümekte dolayısıyla veri madenciliği konsepti CRM araştırmaları için temel oluşturmaktadır.
Uzun vadede karlılığı sağlamak için yeni müşterilere yönelmektense değerli müşterileri elde tutmak daha doğru bir strateji olarak kabul görüyor. Cevap bulunması gereken soru şu: “Hangi müşterilerimi elde tutmaya yoğunlaşmalıyım?”. Her kurumun geniş yelpazede müşteri çeşitliliği bulunmaktadır. Pazarı gruplara ayırmak, bu grupların özelliklerini profillemek ve değerli müşterileri tanımlamak için veri madenciliği teknikleri uygulanmaktadır. Buradaki mantık grup içerisindeki müşterilerin önceden belirlenmiş değişkenlere göre benzerliklerinin keşfedilmesidir. Örneğin yeni operatörlerin rekabeti kızıştırdığı GSM sektörünü ele alalım, hergün bir kısım müşteri rakip firmaların promosyonlarından etkilenip operatörünü değiştiriyor. Elde bulunan müşteri verisi veri madenciliği kullanılarak bu müşterilerin profilleri çıkarılabiliyor. Kaybedilen müşterilerin yaş grupları, iş durumları ve servis kullanım saatleri gibi değişkenlere göre stratejik sonuçlar çıkarılabiliyor. GSM operatörlerinin öğrenciler, memurlar için promosyonları, gece yapılan konuşmalara getirdiği indirimleri, hediye dakikaları sunmasındaki amaç uzun vadede karlılığı korumak, bunu yaparken müşteriyi ve davranışlarını eldeki imkanlarla en iyi şekilde analiz etmesi, veri madenindeki cevhere ulaşması gerekiyor.

Veri madenciliğinde dikkat edilmesi gereken hususlar vardır. Büyük miktarlardaki  ham veriden doğru sonuçlar çıkarabilmek için öncelikle verinin güvenilir ve hatalardan arındırılmış olması gerekiyor. Çıkarılacak kuralların kalitesi veri kaynağının kalitesine bağlıdır. Bir başka önemli husus bu konudaki uzmanların yetkinliğidir. Veri madenciliği kendi başına bir çözüm değildir, şirket süreçleri ve verilerin gerekli işlemler sonucu modellenmesiyle anlamlı sonuçlara ulaşılabilir. Dolayısıyla bu modellemeleri yapacak bilgi işçisiyle, iş süreçlerine vakıf analistlerin vizyonlarının geniş olması ve doğru soruları sorabilecek yetkinlikte olması gerekmektedir. Çalışma sonucunda çıkacak verilerin doğru yorumlanması da ancak konunun uzmanları tarafından yapılabilir. Unutulmaması gereken bir konu da veri madenciliğinin kurulup hemen sonuçlar çıkaran bir yazılım olmadığıdır. Veri madenciliği sabır isteyen bir süreçtir, doğru modeller oluşturuluncaya dek defalarca deneme gerektirebilir ve sonuçların alınması veri kümesinin büyüklüğüne göre uzayabilir. Bu sebeple çalışan ekibin ve yönetimin kısa vadede büyük beklentiler içinde olmaması gerekir. Şirket zekası yazılımlarının ihtiyacı ne kadar karşılayabilir olduğu ve pazardaki uygulamalardan hangisinin kullanılacağı sorusu ise projenin daha başlangıçta başarı veya başarısızlık ayrımını belirliyor.
Veri madenciliğinin gelecek yıllardaki pozisyonu hakkında fikir sahibi olmak için dünyanın önde gelen araştırma ve danışmanlık firmalarından açıklanan rakamları dikkate aldığımızda, veri madenciliğinin oldukça popüler bir konu olacağını görebiliyoruz. Örneğin, Gartner Group Araştırma Şirketi, gelecek on yıl içinde, hedef pazarlarda veri madenciliği kullanımının yüzde 80'lere ulaşacağı tahmininde bulunuyor. Öte yandan şirket zekası yazılımlarının yeni lisans gelirlerinin 2009 senesinde üç milyar dolar seviyelerinde olacağı öngörülüyor. Sektördeki markalardan kompozit çözümler sunan Microsoft ve SAP’nin gücüyle pazarı canlandırdığını görüyoruz. Microsoft ürünü “Analysis and Reporting Services” yazılım geliştiriciler tarafından yoğun ilgi görerek 2004 yılında %53’lük bir büyüme başarısı elde etti. SAP ise R/3 kullanıcıları için full entegre çözümü olan SEM(Strategic Enterprise Management) ile pazardaki OLAP, veri madenciliği, bütçeleme, konsolidasyon gibi süreçlerde kullanıcılara tatmin edici sonuçlar vermektedir. Geçtiğimiz yıllarda IBM, SAS Institute, Business Objects ve Informatica gibi BI pazarındaki firmaların stratejik satınalmalar ve birleşmeler yoluyla güçlerini arttırdığını görmekteyiz.
Sonuç olarak her geçen gün büyüyen BI sektörü, kullanıcılara doğru bilgiyle ve analiz yeteneğiyle kararlarında destek olacak çözümler sunmaktadır. Bugün çoğu bilişim firması BI uygulamaları için bütçelerini arttırmakta ve şirket zekasını departman bağımlı olmaktan çok şirket tabanına yayacak uygulamalara doğru gitmektedir. Büyük firmalar sadece raporlama amacının dışında BI tabanlı diğer uygulamalarıyla (Bütçeleme, Şirket Performans Yönetimi, Konsolidasyon, Portal vb.) entegre çalışacak çözümler satın almakta ve efektif şekilde kullanmaktadır. Kullanıcı ihtiyaçlarını karşılayacak, şirket hedefleriyle uyumlu çalışacak, yetenekli ve ölçeklenebilir BI yazılımlarıyla şirketinizin en değerli sermayesi olan verilerinizin içerisinde gizli kalmış bilgileri keşfetmek için siz de gerekli adımları atın. Şirketinizin cevherini keşfedin...

Ergin ÖZTÜRK
SAP BI Danışmanı