Professional Documents
Culture Documents
Workflowkurulumadimlariv19kk 170502061459 PDF
Workflowkurulumadimlariv19kk 170502061459 PDF
Workflowkurulumadimlariv19kk 170502061459 PDF
Contents
WorkFlow’a Genel Bakış ................................................................................................................ 4
WorkFlow Altyapısının Kurulması ................................................................................................... 5
Olayların Etkinleştirilmesi .............................................................................................................. 8
WorkFlow’un Hazırlanması ...........................................................................................................11
WorkFlow’un Açılması ..............................................................................................................11
WorkFlow’u Başlatmak .............................................................................................................11
Batch Input Yöntemi .............................................................................................................11
Event Yöntemi ......................................................................................................................13
WorkFlow Adımlarının Oluşturulması ........................................................................................16
Function Module / Class........................................................................................................16
Business Object / Class ..........................................................................................................16
Task .....................................................................................................................................18
WorkFlow Step .....................................................................................................................21
Task’i General Task Haline Getirmek ......................................................................................21
Attachment ..........................................................................................................................21
İkinci Pencere Açmak ............................................................................................................26
Agent’ların Atanması ................................................................................................................26
Superior Of Workflow Initiator...............................................................................................26
Rule .....................................................................................................................................27
Role .....................................................................................................................................31
Job.......................................................................................................................................31
Organizational Unit...............................................................................................................31
Position................................................................................................................................31
User .....................................................................................................................................31
Expression............................................................................................................................31
Binding İşlemlerinin Yapılması ...................................................................................................32
İşlem Kodunun Bağlanması .......................................................................................................34
WorkFlow’ların İzlenmesi..............................................................................................................35
WorkFlow İletilerinin E-Posta Olarak Gönderilmesi.........................................................................36
Otomatik Bildirim .....................................................................................................................36
Kullanıcı Ayarları ...................................................................................................................36
Diğer Ayarlar ........................................................................................................................38
Manuel Bildirim........................................................................................................................40
3 WorkFlow Kurulum Kılavuzu
Netweaver Çözümü...............................................................................................................40
Java Çözümü.........................................................................................................................42
E-Posta Dönüşü ....................................................................................................................44
Vekalet Durumunda Vekilin Tespiti ............................................................................................46
WorkFlow İletilerinin Silinmesi ......................................................................................................47
Faydalı Workflow Nesneleri ..........................................................................................................48
Tablolar ...................................................................................................................................48
Modüllere Özel İpuçları ................................................................................................................48
DMS ........................................................................................................................................48
Döküman Yaratıldığı Anda WorkFlow Tetiklemek ....................................................................48
MM .........................................................................................................................................54
SAT & SAS İçin User Exit İle Agent Belirleme ...........................................................................54
Onay Durumunun Tespiti.......................................................................................................56
Programdan SAT Redddetmek ...............................................................................................62
Yetkilendirme ..............................................................................................................................64
Vekalet........................................................................................................................................65
Hatalar ve Çözümler.....................................................................................................................70
Genel Hatalar...........................................................................................................................70
WorkFlow Tetiklenmiyor .......................................................................................................70
WorkFlow’u Tekrar Başlatmak ...............................................................................................71
Configure RFC Destination Problemleri...................................................................................71
Anında Beliren Onay Ekranı ...................................................................................................71
Boş OOCU Listesi...................................................................................................................71
Hata İletileri .............................................................................................................................72
‘...’ görevinin işleme tayini yok ...............................................................................................72
Agents of type A cannot be defined .......................................................................................72
Object Type ‘WF’ Is Not Valid.................................................................................................72
SWF_RUN 594 ......................................................................................................................72
Diğer Agent hataları ..............................................................................................................72
Works Cited.................................................................................................................................72
4 WorkFlow Kurulum Kılavuzu
WorkFlow işlerini yürütecek olan Background kullanıcı hesabı belirlenir. Varsayılan değerler
korunabilir. Bu adımı aktive edemiyorsanız, Configure RFC Destination Problemleri başlığına
göz atın.
Sistem yöneticisi belirlenir. Buraya, teknik mesajları inceleyip anlayabilecek olan sistem
yöneticisi hesabı girilmelidir.
Test Workflows
Olayların Etkinleştirilmesi
Bu adım; DMS, SAT, SAS gibi standart bir WorkFlow sürecindeki olaylarla tetiklenecek bir WorkFlow
hazırlayacaksak gereklidir. Bu uyarlama için OOCU işlem koduna gidiyoruz.
Bu ekranda, SAP’nin çeşitli modüllerine ait aracı tayini ve olay bağlantılarını yapmak mümkündür. Bu
işin nasıl yapılacağını anlamak için, SAS onayı ile ilgili olayları aktive edelim.
9 WorkFlow Kurulum Kılavuzu
Bu adımda, önce “Olay bağlantısını etkinleştir” adımını takip edeceğiz. Karşımıza, çeşitli görevleri
barındıran bir liste çıkacak. SAS onayı için, bu liste üzerinde “WS20000075 – SAS Onayı” adımına
gidip, menüden Git Nesneyi Görüntüle bağlantısına tıklayacağız.
Burada girilen nesne tipi, SAS söz konusu olduğu için BUS2012 olarak seçilmiştir. Eğer SAT, DMS gibi
farklı bir nesne tipi söz konusu olsaydı, farklı bir nesne tipi ve farklı bir olay atanacaktı.
İşleyen Tayini
Bu bölümde, kullanılacak olan WorkFlow adımlarının “Genel görev” olarak belirlenmesi sade bir
kurulum için uygun olacaktır.
11 WorkFlow Kurulum Kılavuzu
WorkFlow’un Hazırlanması
WorkFlow’un Açılması
WorkFlow şemaları, SWDD işlem kodundan oluşturulur. Eğer standart süreçler dahilinde bir
WorkFlow oluşturuyorsak, sistemin getirdiği örnek WorkFlow’u kopyalayıp Z’li bir WorkFlow
oluşturmak uygun olacaktır. Aksi takdirde; sıfırdan Z’li bir WorkFlow oluşturacaksak, şemayı baştan
oluşturmak daha uygun olacaktır.
WorkFlow’u Başlatmak
Alternatif olarak, WorkFlow’u başlatmasını istediğiniz olay (mesela bir belgenin kaydedilmesi)
sırasında tetiklenen bir User Exit bulup, o User Exit içerisinden aşağıdaki gibi bir toplu girdi koduyla
WorkFlow’u kendi kendinize tetikleyebilirsiniz:
FUNCTION zsdwf_trigger_workflow.
*"----------------------------------------------------------------------
*"*"Local Interface:
*" IMPORTING
*" REFERENCE(I_VBELN) TYPE VBELN_VA
*"----------------------------------------------------------------------
DATA:
lt_bdcdata TYPE bdcdata OCCURS 0 WITH HEADER LINE,
lf_optio TYPE ctu_params.
DEFINE bdc_dynpro.
clear lt_bdcdata.
lt_bdcdata-program = &1.
lt_bdcdata-dynpro = &2.
lt_bdcdata-dynbegin = 'X'.
append lt_bdcdata.
END-OF-DEFINITION.
DEFINE bdc_field.
clear lt_bdcdata.
lt_bdcdata-fnam = &1.
lt_bdcdata-fval = &2.
append lt_bdcdata.
END-OF-DEFINITION.
lf_optio-dismode = 'A'.
lf_optio-defsize = 'X'.
lf_optio-racommit = 'X'.
ENDFUNCTION.
Yukarıdaki örnekte ZSDWF06 işlem kodu, iş akışının başlamasını sağlayacak olan işlem kodudur. İş
akışı başlatacak işlem kodlarının nasıl oluşturulacağı, İşlem Kodunun Bağlanması başlığında
12 WorkFlow Kurulum Kılavuzu
anlatılmıştır. Bunun çalışması için, iş akışında bir Start Form yaratmış olmanız gerekebilir – parametre
pas etmeniz bu şekilde olacaktır. Aşağıda, konuyla ilgili bir açıklama bulabilirsiniz (Wilson, 2007):
To define a start form go to the workflow builder and choose menu option Goto – Basic Data
Click the new form icon to create a new form. Note that you need a structure defined as a
container element that has import as a property in order to use the wizard to create the form
for you. The wizard will bring all the fields from that structure onto the form. After it is
created you can go and edit the form using the normal screen painter.
Üstteki durumda; iş akışını özel bir programdan veya kullanıcıya herhangi bir parametre girdirme
ihtiyacı olmadan (dolayısıyla WorkFlow başlangıç ekranını göstermeden) başlatmak istiyorsanız,
aşağıdaki kod size yardımcı olabilir:
REPORT zsp_hrp_ebo_start_wf
NO STANDARD PAGE HEADING LINE-SIZE 255.
INCLUDE bdcrecxy.
DATA:
gf_opt TYPE ctu_params.
START-OF-SELECTION.
gf_opt-dismode = 'E'.
gf_opt-racommit = 'X'.
gf_opt-defsize = 'X'.
13 WorkFlow Kurulum Kılavuzu
gf_opt-racommit = 'X'.
gf_opt-nobinpt = 'X'.
gf_opt-nobiend = 'X'.
END-OF-SELECTION.
Event Yöntemi
Business Object
Business Object Event’i tetiklemek için aşağıdaki kodlardan faydalanabilirsiniz.
(...)
begin of lf_event,
objkey type sweinstcou-objkey,
evtid type swedumevid-evtid,
end of lf_event,
(...)
lf_event-objkey = lf_01-insid.
if sy-subrc <> 0.
rollback work.
message id sy-msgid type sy-msgty number sy-msgno
with sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4
raising event_error.
endif.
if lf_event-evtid is initial.
rollback work.
message e010(zmmwf) raising wf_not_triggered.
endif.
Class
Class Event’i tetiklemek için aşağıdaki örneği inceleyebilirsiniz.
method event_create.
exporting
im_objcateg = cl_swf_evt_event=>mc_objcateg_cl
im_objtype = pfd_i_clsname
im_event = pfd_i_event
receiving
re_reference = l_event_parameters.
* Değişkenleri set et
exporting
endloop.
* l_cls_instance = p_qmnum.
* Eventi tetikle
exporting
im_objcateg = cl_swf_evt_event=>mc_objcateg_cl
im_objtype = pfd_i_clsname
im_event = pfd_i_event
im_objkey = l_cls_instance
im_event_container = l_event_parameters.
if pfd_i_commit ne space.
commit work.
endif.
endmethod.
REFRESH lit_parametre.
lwa_parametre-name = 'PFD_I_POSID'.
lwa_parametre-value = pfd_i_posid.
lwa_parametre-name = 'PFD_I_POSNR'.
lwa_parametre-value = pfd_i_posnr.
pfd_i_clsname = 'ZIMCL_YATIRIM_TALEBI'
pit_i_parametre = lit_parametre
pfd_i_commit = space ).
Manuel
İş akışı ilişkili bir Event’i manuel tetiklemek için, SWUE işlem kodunu kullanabilirsiniz.
Eğer standart bir süreç ile çalışacak bir WorkFlow söz konusuysa, normalde ekstra fonksiyon yazma
işimizin olmaması gerekir.
Class
WorkFlow’un arkasına Class yazmaya karar verirseniz (önerilen yöntem), SE24’te yeni bir sınıf yaratıp
şu Interface’leri uyguladığınızdan emin olun:
BI_OBJECT
BI_PERSISTENT
17 WorkFlow Kurulum Kılavuzu
IF_WORKFLOW
IF_SWF_EVT_EVENT
Business Object
Business Object, bir WorkFlow arkasında çalışacak olan kodların Method ve Property’ler bazında
toparlandığı yerdir. SWO1 ekranından erişilebilirler.
Mesela; SAT onayları için BUS2012 adlı Business Object, döküman yönetimi için DRAW adlı Business
Object vardır. Eğer standart bir süreç ile çalışacak bir WorkFlow söz konusuysa, sistemdeki mevcut
Business Object’i kullanacağız. Aksi takdirde; kendi Z’li yapımıza uygun bir Business Object’i sıfırdan
yaratmamız gerekecek.
Business Object içerisindeki Method’ların her biri, bir fonksiyon referans alınarak yaratılır. Key Fields
ve Attributes ise, WorkFlow’a konu olan tabloların alanları referans alınacak yaratılır.
Bir Business Object’i yaratıp hazır hale getirdikten sonra, Edit Change Release Status Object
Type To Implemented (veya Released) dememiz gerekir.
Task
Bir Class / Business Object methodu ile WorkFlow adımı arasındaki köprüyü Task’ler kurar. Yani; bir
Method’u WorkFlow’da doğrudan doğruya kullanamayız. Doğru bağlantı; Method Task
WorkFlow Step şeklinde kurulmalıdır.
Temel Veriler
Bu bölümde; Object Oriented çalıştıysanız “CL” nesne kategorisini, Business Object bazlı çalıştıysanız
“BO” nesne kategorisini seçin. “Nesne Tipi” olarak ilgili Business Object’in / sınıfın adı, “Method”
olarak ise ilgili Method’un ismi girilecektir.
19 WorkFlow Kurulum Kılavuzu
Eğer yarattığınız Task bir kullanıcının WorkFlow ekranına düşmeden sistem tarafından işlensin
istiyorsanız, aşağıdaki kutucuğu da doldurun. Bunun yanı sıra, WorkFlow içerisinde Task’i “General”
olmaktan çıkarıp hiçbir Agent atamayın.
Tanım
Bu bölümde, iş akışının çeşitli metinleri tanımlanabilir. Bu metinler SAP içi mesajlarda veya E-Posta
iletilerinde kullanılacaktır.
20 WorkFlow Kurulum Kılavuzu
Buradaki metinlerin tercümesi için SE63 Diğer Uzun Metinler menüsünü kullanabilirsiniz. Örneğin,
8267 numaralı Task’in tercümesi için kullanmanız gereken kodlar:
PDTS00008267 0120
PDTS00008267 0121
PDTS00008267 ...
Yaptığınız tercümeleri taşımak için ise Transport Request’iniz altında şöyle bir kayıt olmalıdır:
21 WorkFlow Kurulum Kılavuzu
Konteyner
Bu bölümde, Task’den (yani WorkFlow’dan) Method’a (yani fonksiyona) gönderilecek olan Container
değerleri tanımlanır. Fonksiyondan Container’e dönecek olan değişkenler de burada tanımlanır.
WorkFlow Step
Attachment
Zorunlu olmasa da; WorkFlow’a Attachment bağlamak gerekebilir. Bunun tipik bir örneği; beyaz
ekranlı Decision Task ekranına, ilgili SAP belgesine gidecek .SAP uzantılı bir Attachment eklemektir.
Task’in arkasındaki Business Object ile, SWO1’de SOFM’dan kopyalanmıştır. Eklenen “ATTACHDOC”
Method’u ise şöyledir:
v_att_header-file_type = 'B'.
v_att_header-file_name = v_submi.
concatenate 'TeklifGrpNo_' v_submi '.SAP' into v_att_header -file_name.
v_att_header-file_extension = 'SAP'.
v_att_header-language = sy-langu.
end_method.
function zmmf_teklif_link .
*"----------------------------------------------------------------------
*"*"Local Interface:
*" IMPORTING
*" REFERENCE(PFD_I_SUBMI) TYPE EKKO-SUBMI
*" EXPORTING
*" REFERENCE(PFD_E_XSTRING) TYPE XSTRING
*"----------------------------------------------------------------------
clear pfd_e_xstring.
lfd_parameter = 'p_action=EXECUTE;'.
concatenate lfd_parameter 'P_SUBMI-LOW=' pfd_i_submi ';P_EKORG=' lfd_ekorg ';'
into lfd_parameter.
concatenate lfd_parameter 'DYNP_OKCODE=/00' into lfd_parameter .
endfunction.
Opsiyonel adım 1: BOR’un dinamik yaratılması. BOR zaten varsa buna gerek yok:
Agent’ların Atanması
Agent atama bölümünde seçilebilecek birkaç değer vardır, bunları aşağıda bulabilirsiniz. Z’li program
/ raporlarda, atanan bir Agent’ın adını almak için SWD_AGENT_TEXT_GET fonksiyonu kullanılabilri.
Rule
Dikkat! 4.x sistemlerinde “ROLE” olarak geçen kavram, 5.x itibariyle “RULE” olarak değiştirilmiş ve
“ROLE” diye yepyeni bir kavram getirilmiştir.
Rule’lar sayesinde, WorkFlow’un herhangi bir adımındaki Agent dinamik olarak (ABAP kodu ile)
belirlenebilir. Bu işlem için izlenmesi gereken birkaç adım vardır. Bu adımları bir örnek çerçevesinde
inceleyelim.
Fonksiyonun Yazılması
Söz konusu fonksiyon, EDI_ROLE_FOR_PROC_CHECKDUMMY kopyalanarak yazılabilir1. Bu
fonksiyonun amacı, WorkFlow’daki duruma göre muhatapları belirleyip geri döndürmek olacak.
Fonksiyon grubu içerisinde, Container’den değer almak & Container’e değer atamak için şu tanım
yapılmalıdır:
include <cntain>.
function zfakorul1.
*"----------------------------------------------------------------------
*"*"Local Interface:
*" TABLES
*" ACTOR_TAB STRUCTURE SWHACTOR
*" AC_CONTAINER STRUCTURE SWCONT
*" EXCEPTIONS
*" NOBODY_FOUND
*" NO_ACTIVE_PLVAR
*"----------------------------------------------------------------------
1Sistemde temel alınabilecek birçok fonksiyon vardır. Önemli olan, fonksiyonun ACTOR_TAB ve AC_CONTAINER
parametrelerine sahip olmasıdır.
28 WorkFlow Kurulum Kılavuzu
actor_tab-objid = lf_doc2-user2.
append actor_tab.
endif.
if not lf_doc2-user3 is initial.
actor_tab-otype = 'US'.
actor_tab-objid = lf_doc2-user3.
append actor_tab.
endif.
endfunction.
Rule’un Yaratılması
Fonksiyon yazıldıktan sonra, sıra Rule tanımlamasına gelir. Bunun için PFAC_INS işlem koduna veya
ilgili menüye gidip yeni bir Rule yaratıyoruz.
Burada “Terminate if Rule Resolution Without Result” tıkının atıldığından emin olun. Aksi takdirde;
koddaki bir hatadan dolayı Agent belirlenemezse ve Task Generic ise, ilgili onay talebi sistemdeki tüm
kullanıcılara gidecektir.
Container bölümünde ise, yazdığımız fonksiyon içerisinde SWC_GET_ELEMENT ile değerini aldığımız
değişkenleri (IMPORTING şeklinde) tanımlıyoruz. Eğer SWC_SET_ELEMENT ile fonksiyondan
Container’e döndüreceğimiz değerler varsa, onları da (EXPORTING şeklinde) tanımlayabiliriz.
WorkFlow’a Uygulanması
Dinamik muhatap ataması yapacağımız adımın Agents bölümünde, AC – Rule değerini seçip karşısına
yarattığımız Rule’un kodunu giriyoruz.
30 WorkFlow Kurulum Kılavuzu
Ardından; “Binding” düğmesine tıklayıp, Container ve Rule arasında gidip gelecek olan değişkenleri
tanımlamamız gerekiyor. Yukarıdaki örnekte, DOCID ve POSNR değerlerini aktarmamız gerekiyor. 2
Agent ataması dinamik yapılacağından, söz konusu Task’in “Generic Task” olarak tanımlanmasında
fayda vardır. Bu işlem için, önce Task Properties bölümündeki Agent Assignment’a tıklıyoruz.
2 Eğer fonksiyondan Container’e değer dönüşü olsaydı, onu da aynı pencerenin alt tarafında tanımlayacaktık
31 WorkFlow Kurulum Kılavuzu
Gittiğimiz ekranda Task’i seçip “Attributes...” düğmesine tıklıyor ve “General Task” seçeneğini
tıklıyoruz.
Role
Bu değer, standart BC yetkilendirmesindeki role karşılık gelmektedir.
Job
Bu değer, HR şemasındaki bir Job’u temsil eder.
Organizational Unit
Bu değer, HR şemasındaki bir organizasyon birimini temsil eder.
Position
Bu değer, HR şemasındaki bir pozisyonu temsil eder.
User
Bu değer, sistemdeki bir kullanıcıyı temsil eder.
Expression
Buraya, Container’de bulunan SWHACTOR tipindeki bir muhatap değişkeni girilebilir.
32 WorkFlow Kurulum Kılavuzu
WorkFlow
Container
Task Task
Method Method
Function
34 WorkFlow Kurulum Kılavuzu
WorkFlow’ların İzlenmesi
WorkFlow hataları ortaya çıkıyorsa, yapılacak ilk iş SWU_OBUF işlem kodunda bir senkronizasyon
yapılmasıdır. Bunun ötesinde, başlamış WorkFlow’ların izlenmesi için SWI6 / SWI14 işlem kodları
kullanılabilir. Aşağıda, örnek bir rapor görebilirsiniz:
Burada seçilmiş herhangi bir adımın detaylarını görmek için, yukarıdaki “Log” düğmesine tıklanabilir.
Aynı ekran üzerinde, “Graphic” düğmesi ile akışı görsel olarak da izlemek mümkündür.
36 WorkFlow Kurulum Kılavuzu
Kullanıcı Ayarları
Eski Sistemler
Öncelikle, E-Posta iletisi almak isteyen kullanıcı ile Login olup SO12 ekranına gidiyoruz.
Açılacak olan pencerede, E-Posta iletilerinin gönderileceği adresi ve gönderim işleminin yapılacağı
tarih aralığını giriyoruz. Gerçek bir WorkFlow senaryosunda, bitiş tarihi olarak 31.12.9999 girmek
uygun olacaktır. 3
Yeni Sistemler
Yeni sistemlerde, üstteki Forward özelliğini kullanmaya gerek yoktur. Kullanıcı ana verilerindeki
(SU01) E-Posta adresi otomatik olarak kullanılır.
3 Yapmış olduğumuz bu ayar, SO36 ekranında birçok kullanıcı için toplu olarak yapılabilir.
38 WorkFlow Kurulum Kılavuzu
Diğer Ayarlar
Bu andan itibaren, kişinin Inbox’una düşecek olan SAP ve WorkFl ow iletileri, otomatik olarak bu
adrese iletilecektir. İletim işini yapacak programların düzenli Background Job’lar şeklinde kurulmuş
olması gerekmektedir:
RSWUWFML2
İş akışı iletilerini gönderir. İdeal durumda bu program bir varyant ile kurulmalıdır. Varyant
içerisinde, aşağıdaki seçim ekranı kriterleri ayarlanmalıdır:
Bu ekran üzerinde;
Message Class for Subject & Message Number For Subject: Gönderilen E-Posta iletisinin
konusunu hangi ileti sınıfının (SE91) hangi iletisinden oluşturacağını belirtiyoruz. SE91
mesajı içinde iki parametre belirtebiliyoruz:
o &1 = Sistem tanımı (ARP gibi)
o &2 = Task’in içindeki metin
Before Work Item Description: Gönderilecek iletinin içeriğine ait standart metni
belirliyoruz. Bu standart metin, SE61 işlem kodunda tanımlanabilir. SE61’de; döküman
sınıfı DT(Diyalogdaki metin) olarak ayarlanmalıdır.
Farklı iş akışları için farklı metinler söz konusu olacaksa; her bir iş akışı için ayrı ayrı varyantlar
oluşturup; her bir varyant için ayrı birer Job kurmak iyi bir fikir olacaktır.
39 WorkFlow Kurulum Kılavuzu
Eğer gönderilen iletilerin içeriğini iş akışı nesnesinden (onay talebi, vs) dinamik olarak değiştirmek
istersek, bu işlemi bu programın Z’li bir kopyasını alarak yapabiliriz. Değiştirilmiş örnek bir
program, ekte bulunmaktadır:
ZRSWUWFML2
Yeni sürümlerde aynı işi Enhancement’larla da yapabiliyoruz. Enhancement’lı bir örnek ektedir:
RSWUWFML2
SWN_SELSEN
Gecikmiş / cevaplanmamış iletileri tekrar gönderir. Bu programı normal şartlarda kurmaya gerek
yoktur.
Bu programların düzgün çalışması için, SCOT işlem kodundaki E-Posta ayarlarının düzgün bir şekilde
yapılmış olması gerekmektedir.
Kullanıcı işaretli bağlantılara tıklayarak, ekranında açılacak bir SAP Gui penceresi içerisinde gerekli
işlemi yapabilir.
Bu bağlantılara tıklandığında; kullanıcının hangi SAP sistemine Logon olacağı şuna bağlıdır: Gönderilen
link (EXECUTE WORK ITEM.SAP) içerisinde, kaynak sistemin 3 haneli kodu bulunmaktadır:
40 WorkFlow Kurulum Kılavuzu
Kullanıcının SAPGUI’sinde (örneğimizde) OXP girdisi hangi sistemde ise, bağlantıya tıkladığında o
sisteme Login olmaya çalışacaktır.
Birden fazla sistemde OXP tanımı varsa, daha üstte yer alan sisteme Login olunacaktır.
Manuel Bildirim
Netweaver bulunmayan, veya E-Posta’daki bağlantıya tıklayarak bir Web bağlantısı açmak isteyen
yerlerde ise, WorkFlow Inbox’unu periyodik olarak tarayıp, yeni mesajlar için E-Posta iletileri
oluşturup Z’li bir tabloya yazacak bir uygulama geliştirilmesi gerekir.
Netweaver Çözümü
Netweaver var ise, ilgili E-Posta atma fonksiyonu çağırılarak iletiler gönderilebilir. Aşağıda bu işi yapan
örnek bir program görebilirsiniz.
REPORT zwfmail .
DATA:
BEGIN OF gt_uname OCCURS 0,
uname LIKE sy-uname,
line TYPE so_text255,
wi_id TYPE sww_wiid,
END OF gt_uname.
START-OF-SELECTION.
PERFORM detect_msg.
PERFORM sendmail.
41 WorkFlow Kurulum Kılavuzu
END-OF-SELECTION.
*&---------------------------------------------------------------------*
*& Form sendmail
*&---------------------------------------------------------------------*
FORM sendmail.
DATA:
lt_cont TYPE STANDARD TABLE OF solisti1 WITH HEADER LINE,
lt_rece TYPE STANDARD TABLE OF somlreci1 WITH HEADER LINE,
lf_docdat TYPE sodocchgi1,
lf_sent TYPE zwf_sent.
lf_docdat-obj_name = 'SAPOFFICE'.
lf_docdat-obj_descr = 'Onay Talebi'.
LOOP AT gt_uname.
REFRESH:
lt_cont,
lt_rece.
lt_cont-line = gt_uname-line.
APPEND lt_cont.
IF sy-subrc EQ 0.
lf_sent-wi_id = gt_uname-wi_id.
INSERT zwf_sent FROM lf_sent.
ENDIF.
ENDLOOP.
* <-- p2 text
*----------------------------------------------------------------------*
FORM detect_msg.
DATA:
lt_agents TYPE swhactor OCCURS 0 WITH HEADER LINE.
SELECT DISTINCT
wi_text AS line
wi_id AS wi_id
FROM sww_outbox
APPENDING CORRESPONDING FIELDS OF TABLE gt_uname
WHERE wi_rh_task EQ 'TS00007986'
AND wi_stat EQ 'READY'
AND NOT wi_id IN ( SELECT wi_id FROM zwf_sent ).
LOOP AT gt_uname.
REFRESH lt_agents.
ENDLOOP.
Java Çözümü
Netweaver yok ise, dışarıda yazılacak bir Java programı belli zaman aralıklarında bu tabloyu okuyarak
birikmiş mesajları E-Posta olarak gönderecektir. E-Posta iletilerinde, Java ile yazılacak bir Web
sayfasına verilmiş bağlantı olacaktır. Aşağıda bu işi (Java’ya yönelik olarak) yapan örnek bir program
görebilirsiniz.
REPORT zwfmail .
DATA:
BEGIN OF gt_uname OCCURS 0,
uname LIKE sy-uname,
line TYPE so_text255,
wi_id TYPE sww_wiid,
END OF gt_uname.
START-OF-SELECTION.
PERFORM detect_msg.
PERFORM sendmail.
END-OF-SELECTION.
43 WorkFlow Kurulum Kılavuzu
*&---------------------------------------------------------------------*
*& Form sendmail
*&---------------------------------------------------------------------*
FORM sendmail.
DATA:
mailname LIKE sood1-objnam,
mailtitlel LIKE sood1-objdes,
soli TYPE soli OCCURS 0 WITH HEADER LINE.
DATA:
lf_sent TYPE zwf_sent.
DATA:
lf_mail TYPE zwfmail.
LOOP AT gt_uname.
* soli-line = gt_uname-line.
* APPEND soli.
*
* CALL FUNCTION 'RS_SEND_MAIL_FOR_SPOOLLIST'
* EXPORTING
** SPOOLNUMBER = SY-SPONO
* mailname = mailname
* mailtitel = mailtitlel
* user = gt_uname-uname
* TABLES
* text = soli
* EXCEPTIONS
* error = 1
* OTHERS = 2.
IF sy-subrc EQ 0.
lf_sent-wi_id = gt_uname-wi_id.
INSERT zwf_sent FROM lf_sent.
ENDIF.
ENDLOOP.
DATA:
lt_agents TYPE swhactor OCCURS 0 WITH HEADER LINE.
SELECT DISTINCT
wi_text AS line
wi_id AS wi_id
FROM sww_outbox
APPENDING CORRESPONDING FIELDS OF TABLE gt_uname
44 WorkFlow Kurulum Kılavuzu
LOOP AT gt_uname.
REFRESH lt_agents.
ENDLOOP.
E-Posta Dönüşü
E-Posta dönüşünde Web tabanlı bir onay vermek söz konusu ise, bu onayın arkasındaki fonksiyon
SWW_WI_ADMIN_EXECUTE fonksiyonunu çağıracak bir rapor yazılıp, bu raporu çağıran bir Batch
Input yürütebilir (SWIA işlem kodunun arkasındaki fonksiyon). “Identification” parametresi olarak,
söz konusu Work Item’in ID’si girilecektir. 4
REPORT zpurap_wi_admin_execute .
PARAMETERS:
p_wi_id TYPE swwwihead-wi_id.
START-OF-SELECTION.
END-OF-SELECTION.
Ancak; SAT/SAS onayı gibi bazı standart süreçler, kendi WorkFlow BAPI’lerine sahiptir. Yerine göre bu
BAPI’ler de çağırılabilir.
Ekran bu şekilde yürütüldüğünde, söz konusu ID’yi içeren Task ekrana gelecektir.
Söz konusu satırı seçip Edit Work Item Execute Without Check (veya Execute Work Item)
menüsüne girildiğinde, söz konusu adımın yürütüleceği ekrana erişiyoruz. Aşağıda, SAT onayı ile ilgili
örnek ekranı görebilirsiniz.
46 WorkFlow Kurulum Kılavuzu
function zrn_mm_sat_wf_get_vekil.
*"-------------------------------------------------------------
---------
*"*"Local Interface:
*" IMPORTING
*" REFERENCE(I_BNAME) TYPE XUBNAME
*" EXPORTING
*" REFERENCE(E_VEKIL) TYPE ZRN_MMT_WF_SMTP
*"-------------------------------------------------------------
---------
data:
ls_d2 type hrus_d2,
ls_vekil like line of e_vekil.
refresh e_vekil.
clear ls_vekil.
47 WorkFlow Kurulum Kılavuzu
ls_vekil-bname = ls_d2-rep_name.
function zsdwf_delete_work_items.
*"----------------------------------------------------------------------
*"*"Local Interface:
*" IMPORTING
*" REFERENCE(I_WI_ID) TYPE SWW_WIID
*"----------------------------------------------------------------------
ranges:
lr_wi_id for swwwihead-wi_id,
lr_wi_type for swwwihead-wi_type,
lr_wi_stat for swwwihead-wi_stat,
lr_wi_cd for swwwihead-wi_cd,
lr_wi_ct for swwwihead-wi_ct,
lr_wi_aed for swwwihead-wi_aed,
lr_wi_aagent for swwwihead-wi_aagent.
lr_wi_id-option = 'EQ'.
lr_wi_id-sign = 'I'.
lr_wi_id-low = i_wi_id.
append lr_wi_id.
lr_wi_id-option = 'EQ'.
lr_wi_id-sign = 'I'.
modify lr_wi_id.
endloop.
* Gönder
submit rswwwide
with it_aagnt in lr_wi_aagent
with it_aed in lr_wi_aed
with it_cd in lr_wi_cd
with it_ct in lr_wi_ct
with it_id in lr_wi_id
with it_stat in lr_wi_stat
with it_type in lr_wi_type
with i_disply eq 'X'
with i_commit eq 'X'
with i_dellog eq 'X'
and return.
endfunction.
Ancak; bu program (doğal olarak) gönderilmiş E-Posta iletilerini silememektedir. Sadece SAP iş akışı
Inbox’undaki iletileri silmektedir.
DMS Uyarlamaları
SPRO Cross Application Components Document Management Document Distribution
General Settings SAP Business Workflow menüsü açılır.
49 WorkFlow Kurulum Kılavuzu
Burada, bizi “Change Document Info Record” ve “Create Object Of Type DRAW” Task’leri
ilgilendiriyor. Bu Task’lerden ilki bir döküman güncellendiğinde, ikincisi ise yaratıldığında çalışacak.
TS00007842’ye tıklayarak, Goto Display Object menüsüne giriyoruz. Karşımıza gelecek pencerede,
“Triggering events” bölümüne girip aşağıdaki değerleri giriyoruz:
Aynı ekranda, Binding de otomatik olarak üretilebiliyor olmalı. Soldaki butonu yeşil hale getirerek
adımı aktive ediyoruz. Bu şekilde; “Biri döküman güncellediğinde, DRAW adlı Business Object’in
CHANGED olayını tetikle” demiş olduk.
Bu adımları düzgün bir şekilde yapıp geri çıktığımızda, EVENT listesi dolmuş olmalıdır.
Assign Agents
Bu bağlantıya tıkladığımızda, karşımıza çeşitli DMS görevlerine kimlerin atanacağının belirleneceği
ekran gelecektir.
Bizi burada da “Change document info record” ve “Create object of type DRAW” adımları
ilgilendiriyor. Bu adımlara ilgili kişiler (standart Agent mantığı ile) atanabilir; ama sade bir kurulumda
bu Task’leri “General Task” yapmak iyi bir fikir olacaktır.
Bunun için, her bir Task’i seçip yukarıdaki “Attributes...” düğmesine tıklıyoruz ve “General Task ”
seçeneğini işaretliyoruz.
52 WorkFlow Kurulum Kılavuzu
WorkFlow’un Hazırlanması
SWDD ekranına girip yeni bir WorkFlow yaratıyoruz. WorkFlow ekranında Goto Basic data
ekranına gidiyoruz. Karşımıza gelecek ekranın “Start Events” kısmı, DMS bağlantısı için kritik bölgedir.
Buraya, (daha önce DMS Task’lerini bağlamış olduğumuz) DRAW CREATED ve DRAW CHANGED
olaylarını gireceğiz. Sol taraftaki Binding düğmesi ile, DRAW’dan gelen nesneler ile WorkFlow
Container nesneleri arasındaki aktarımlar ayarlanabilir. Özellikle _EVT_OBJECT nesnesi,
yaratılan/güncellenen dökümanla ilgili bütün detayları getirdiği için bizim açımızdan kritik olacaktır.
53 WorkFlow Kurulum Kılavuzu
Bu adımı tamamladıktan sonra soldaki gri düğmeleri yeşil hale getirip olayları aktive ediyoruz.
WorkFlow şeması artık şöyle gözüküyor olmalı:
Burada “Document Changed” ve “Document Created” olaylarına dikkat edin. Ben yaptığım örnekte,
aşağıya bir de “Döküman yaratıldı” mesajı gönderecek adım ekledim. Gerçek bir projede, Event’lerin
altına standart WorkFlow akışı eklenmelidir.
Uygulama Örneği
Kullanıcı, CV01N’ye giderek yeni bir
döküman yaratıyor
54 WorkFlow Kurulum Kılavuzu
MM
Herhangi bir onay kodunun “İş akışı” sütununda F4’e basıp, “9 – Kullanıcı çıkışı yoluyla rol açılımı”
değerini seçiyoruz. O andan itibaren, söz konusu kod için User Exit devreye girecektir.
Ama hangi User Exit? Bu sorunun cevabı için, “Satınalma” altındaki “Satınalma için geliştirmeler”
menüsünün yanındaki yardımı seçiyoruz.
55 WorkFlow Kurulum Kılavuzu
Karşımıza gelecek ekranda, satınalmaya ait çeşit çeşit User Exit’i liste halinde görebiliriz. Bu User
Exit’lerden bir tanesi, SAT döngüsünün muhatap seçimine tekabül ediyor.
Bu fonksiyon, bütün EBAN değerlerini ve onay kodunu getiriyor. Bu Exit içerisinde yapmamız gereken
şey, gelen değerlere göre gerekli değerlendirmeyi yapıp, ACTOR_TAB içerisinde onay verecek kişinin
User’ını (veya personel numarasını, grup numarasını, vs) döndürmek.
56 WorkFlow Kurulum Kılavuzu
Eğer aynı işi SAS için yapmak isteseydik, aşağıdaki User Exit’i aynı mantıkla kullanabilirdik:
Hiç onaylanmamış bir SAT kalemi için; fonksiyon, aşağıdaki şekilde veri döndürecektir:
57 WorkFlow Kurulum Kılavuzu
Dikkat ederseniz, ortada hiç onay olmadığı için RELEASE_ALREADY_POSTED tablosu boştur.
RELEASE_FINAL tablosunda ise, olması gereken onayları görebilirsiniz:
58 WorkFlow Kurulum Kılavuzu
Kısmen onaylanmış bir SAT kalemi için; fonksiyon, aşağıdaki şekilde veri döndürecektir:
59 WorkFlow Kurulum Kılavuzu
Normalde 6 onay verilmiş olması gerekirken; burada henüz 4 tanesinin verildiğini görüyoruz.
Tamamen onaylamış bir SAT’ta ise, tabloda 6 onayın 6’sı birden gözükecektir:
Ne var ki; bu fonksiyonda bir SAT’ın reddedildiğine dair herhangi bir bilgi bulamazsınız.
Sıradaki onay kodunu döndüren örnek bir ABAP kodu aşağıda görülebilir. Bu kod belli bir senaryo için
hazırlanmıştır; modifiye etmek gerekebilir.
60 WorkFlow Kurulum Kılavuzu
METHOD get_next_frgab.
DATA:
lit_final TYPE STANDARD TABLE OF bapirlcorq,
lrd_final TYPE REF TO bapirlcorq,
IF sy-subrc EQ 0.
RAISE EXCEPTION TYPE zcx_mm_mobile_pr_approval
EXPORTING
textid = zcx_mm_mobile_pr_approval=>mevcut_onay_durumu_tespit
banfn = pfd_i_banfn
return = lit_return.
ENDIF.
IF lrd_final IS INITIAL.
RAISE EXCEPTION TYPE zcx_mm_mobile_pr_approval
EXPORTING
textid = zcx_mm_mobile_pr_approval=>mevcut_onay_durumu_tespit
banfn = pfd_i_banfn.
ENDIF.
lfd_bnfpo1 = lrd_final->preq_item.
IF lrd_final IS INITIAL.
RAISE EXCEPTION TYPE zcx_mm_mobile_pr_approval
EXPORTING
textid = zcx_mm_mobile_pr_approval=>mevcut_onay_durumu_tespit
banfn = pfd_i_banfn.
ENDIF.
ENDIF.
ENDMETHOD.
method reject_pr.
data:
lit_conta type standard table of swr_cont,
lrd_conta type ref to swr_cont,
* Mevcut veriler
lit_xebkn ##too_many_itab_fields
from ebkn where banfn eq pfd_i_banfn.
lit_yeban[] = lit_xeban[].
lit_yebkn[] = lit_xebkn[].
endloop.
endmethod.
64 WorkFlow Kurulum Kılavuzu
method cancel_active_wfs.
data:
lit_wi type standard table of swr_wihdr,
lrd_wi type ref to swr_wihdr,
* WF listesi
lwa_por-instid = pfd_i_banfn.
lwa_por-typeid = 'BUS2105'.
lwa_por-catid = 'BO'.
* Cancel
endloop.
endmethod.
Yetkilendirme
İş akışı tetikleyecek olan kişilere, S_RFC ve S_WF_WI yetkilerinin verilmiş olması gerekmektedir.
Bunun yanı sıra; bu kişiler, iş akışına konu olan işlem ile ilgili yetkilere de sahip olmalıdır. Örneğin SAT
ile ilgili bir iş akışı söz konusuysa, SAT açabilecek yetkilere de sahip olmalıdır.
Java Çözümü’nün uygulandığı yerlerde; Web üzerinden onay verecek kişilerin de S_RFC yetkisine
sahip olması gerekmektedir. Bunun yanı sıra, onay verecekleri ekranlara ait yetkilerin de verilmiş
olması gerekmektedir.
65 WorkFlow Kurulum Kılavuzu
Vekalet
İş akışında vekalet vermek için, SBWP işlem kodunda Ayarlar İş Akışı Ayarları Vekil Bakımı
menüsü kullanılabilir. Kaydedilen vekiller, HRUS_D2 tablosunda saklanır.
Vekillerde eksik rol olursa, Inbox’larına düşse bile onay veremezler. Eksik rolleri tamamlayan
aşağıdaki Method, bir program / Job olarak kurulabilir.
67 WorkFlow Kurulum Kılavuzu
METHOD set_auth_to_substitudes.
lv_after TYPE i,
lv_before TYPE i.
FROM hrus_d2
CHECK sy-subrc EQ 0.
FROM t77ro
* Uyarlamayı oku
IF sy-subrc NE 0.
EXPORTING
objectid = 'ROLE'
tabname = 'ZBCT_WF_SUB_ROLE'
textid = zcx_bc_table_content=>entry_missing.
ENDIF.
sign = c_sign_i
ENDLOOP.
ENDLOOP.
* Her bir vekalet kaydı için inceleme yapıp BAPI ve rilerini hazırla ve çağır
69 WorkFlow Kurulum Kılavuzu
CLEAR lt_agr[].
tclass = <ls_cust_rng>-tclass
] ).
AND uname EQ
<ls_hrus_d2>-us_name.
EXIT.
ENDLOOP.
CHECK sy-subrc NE 0.
co_log->add_sy_msg( ).
from_dat = <ls_hrus_d2>-begda
ENDLOOP.
ENDLOOP.
from_dat = <ls_sub_role>-from_dat
ENDLOOP.
CLEAR lt_bapiret2[].
EXPORTING
username = <ls_hrus_d2>-rep_name
TABLES
activitygroups = lt_agr
return = lt_bapiret2.
co_log->add_bapiret2( lt_bapiret2 ).
ENDLOOP.
ENDMETHOD.
Hatalar ve Çözümler
Genel Hatalar
WorkFlow Tetiklenmiyor
Öncelikle temel WorkFlow ayarlarının doğru olduğundan emin olun.
Tüm ayarlar doğru olmasına rağmen iş akışı tetiklenmiyorsa, SWUD işlem koduna gidin, yukarıya
tetiklenmeyen WorkFlow’un kodunu girin ve “Problem: Task not started” düğmesine tıklayın.
71 WorkFlow Kurulum Kılavuzu
Yeni ekranda, WorkFlow’u tetikleyemeyen kişinin kullanıcı adını girin ve “Event Queue (tRFC log)”
düğmesine tıklayın. (Bu bölümdeki diğer düğmeler de işinize yarayabilir)
Burada karşınıza gelecek olan liste, söz konusu kullanıcıda ortaya çıkmış WorkFlow hatalarını
listeleyecektir. Bu hataları inceleyerek gerekli düzeltmeleri yapabilirsiniz.
Hata almadan sonuçlanmış bir iş akışını, ilgili Event’i tetikleyerek tekrar başlatmak için SWUE işlem
kodu kullanılabilir.
Bunu önlemek için, WorkFlow’un tetiklenme Event’i ile onay ekranı arasına Dummy bir Background
Step koyabilirsiniz.
Hata İletileri
User Exit kullanıyorsanız, Task’i işleyebilecek herhangi birinin bulunamamış olması da bu hataya yol
açabilir.
SWF_RUN 594
SAS WorkFlow’u başladıktan sonra ilgili kişinin Inbox’una hiçbir şey düşmüyorsa ve WorkFlow
yöneticisine bu hata iletiliyorsa, 797775 numaralı OSS notunun uygulanması gerekebilir.
Bunun yanı sıra, SAS iş akışındaki (SWDD) onay verme adımının “General Task” olarak işaretlenmiş
olması da gerekebilir.
Bir Task sistemdeki güm kullanıcılara gidiyorsa; sebebi muhtemelen esas Agent’ın belirlenemiyor
olması ve Task’in Generic Task olarak işaretlenmiş olmasıdır. Agent’u Rule ile belirliyorsanız, Rule’un
Yaratılması başlığı altında “Terminate if Rule Resolution Without Result” açıklamasına dikkat edin.
Works Cited
Wilson, K. (2007, 06 10). Workflow Start transaction in NetWeaver. 12 15, 2009 tarihinde ERP Genie:
http://www.erpgenie.com/abaptips/content/view/460/1/ adresinden alındı