sap workflow

72
Dr. Kerem Köseoğlu Tesuji Consulting 11/6/2009 WorkFlow Kurulum Kılavuzu

Upload: dr-kerem-koseoglu

Post on 06-Nov-2015

279 views

Category:

Documents


29 download

DESCRIPTION

Bu dokümanda, SAP WorkFlow geliştirmesi için gerekli temel bilgiler bulunmaktadır.

TRANSCRIPT

  • Dr. Kerem Kseolu

    Tesuji Consulting

    11/6/2009

    WorkFlow Kurulum Klavuzu

  • 2 WorkFlow Kurulum Klavuzu

    Contents WorkFlowa Genel Bak .......................................................................................................................... 4

    WorkFlow Altyapsnn Kurulmas ........................................................................................................... 5

    Olaylarn Etkinletirilmesi ........................................................................................................................ 8

    WorkFlowun Hazrlanmas ................................................................................................................... 11

    WorkFlowun Almas ....................................................................................................................... 11

    WorkFlowu Balatmak ...................................................................................................................... 11

    Batch Input Yntemi ...................................................................................................................... 11

    Event Yntemi ............................................................................................................................... 13

    WorkFlow Admlarnn Oluturulmas ............................................................................................... 16

    Function Module / Class ................................................................................................................ 16

    Business Object / Class .................................................................................................................. 16

    Task ............................................................................................................................................... 18

    WorkFlow Step .............................................................................................................................. 21

    Taski General Task Haline Getirmek ............................................................................................. 21

    Attachment ................................................................................................................................... 21

    kinci Pencere Amak .................................................................................................................... 26

    Agentlarn Atanmas ......................................................................................................................... 26

    Superior Of Workflow Initiator ...................................................................................................... 26

    Rule ............................................................................................................................................... 27

    Role ............................................................................................................................................... 31

    Job ................................................................................................................................................. 31

    Organizational Unit ....................................................................................................................... 31

    Position .......................................................................................................................................... 31

    User ............................................................................................................................................... 31

    Expression ..................................................................................................................................... 31

    Binding lemlerinin Yaplmas ........................................................................................................... 32

    lem Kodunun Balanmas ............................................................................................................... 34

    WorkFlowlarn zlenmesi ...................................................................................................................... 35

    WorkFlow letilerinin E-Posta Olarak Gnderilmesi .............................................................................. 36

    Otomatik Bildirim .............................................................................................................................. 36

    Kullanc Ayarlar ............................................................................................................................ 36

    Dier Ayarlar .................................................................................................................................. 38

    Manuel Bildirim ................................................................................................................................. 40

  • 3 WorkFlow Kurulum Klavuzu

    Netweaver zm ....................................................................................................................... 40

    Java zm .................................................................................................................................. 42

    E-Posta Dn ............................................................................................................................. 44

    Vekalet Durumunda Vekilin Tespiti ................................................................................................... 46

    WorkFlow letilerinin Silinmesi .............................................................................................................. 47

    Faydal Workflow Nesneleri .................................................................................................................. 48

    Tablolar ............................................................................................................................................. 48

    Modllere zel pular ......................................................................................................................... 48

    DMS ................................................................................................................................................... 48

    Dkman Yaratld 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 zmler .............................................................................................................................. 70

    Genel Hatalar .................................................................................................................................... 70

    WorkFlow Tetiklenmiyor ............................................................................................................... 70

    WorkFlowu Tekrar Balatmak ...................................................................................................... 71

    Configure RFC Destination Problemleri ......................................................................................... 71

    Annda Beliren Onay Ekran ........................................................................................................... 71

    Bo OOCU Listesi ........................................................................................................................... 71

    Hata letileri ....................................................................................................................................... 72

    ... grevinin ileme tayini yok ...................................................................................................... 72

    Agents of type A cannot be defined .............................................................................................. 72

    Object Type WF Is Not Valid ........................................................................................................ 72

    SWF_RUN 594 ............................................................................................................................... 72

    Dier Agent hatalar ...................................................................................................................... 72

    Works Cited ........................................................................................................................................... 72

  • 4 WorkFlow Kurulum Klavuzu

    WorkFlowa Genel Bak

  • 5 WorkFlow Kurulum Klavuzu

    WorkFlow Altyapsnn Kurulmas WorkFlow altyapsnn kurulmas ve alr hale getirilmesi iin, SWUD ilem koduna gidilir ve Verify Automatic Customizing adm altrlr.

    Uyarlamada u admlar takip edilmelidir:

    Maintain Runtime Environment

    Configure RFC Destination

    WorkFlow ilerini yrtecek olan Background kullanc hesab belirlenir. Varsaylan deerler korunabilir. Bu adm aktive edemiyorsanz, Configure RFC Destination Problemleri balna gz atn.

    Maintain Workflow System Administrator

    Sistem yneticisi belirlenir. Buraya, teknik mesajlar inceleyip anlayabilecek olan sistem yneticisi hesab girilmelidir.

    Maintain Active Plan Version

    T77S0 tablosundan tek bir satr girilecektir (PLOGI, PLOGI, 01)

    Classify Decision Tas As General

    Bu admda listelenecek btn grevler, General Task olarak iaretlenmelidir.

    Schedule Background Job For Event Queue

    Burada yaplabilecek rnek bir ayar, u ekilde olabilir:

  • 6 WorkFlow Kurulum Klavuzu

  • 7 WorkFlow Kurulum Klavuzu

  • 8 WorkFlow Kurulum Klavuzu

    Schedule Background Job For Clearing Report

    Bu admn bir kez yrtlmesi yeterlidir.

    Maintain Definition Environment

    Maintain Prefix Number

    Bu adm, farkl gelitirme snflarnda kullanlabilecek bir takm nek numaralarnn ayarlanmas iin gereklidir. rnek bir konfigrasyon u ekilde olabilir:

    Classify Tasks As General

    Test Workflows

    Bu adm altndaki Tasklerin tamamnn General Task olarak iaretlenmesi gerekir.

    Customizing With Workflow

    Bu adm altndaki Tasklerin tamamnn General Task olarak iaretlenmesi gerekir.

    Olaylarn Etkinletirilmesi Bu adm; DMS, SAT, SAS gibi standart bir WorkFlow srecindeki olaylarla tetiklenecek bir WorkFlow hazrlayacaksak gereklidir. Bu uyarlama iin OOCU ilem koduna gidiyoruz.

    Bu ekranda, SAPnin eitli modllerine ait arac tayini ve olay balantlarn yapmak mmkndr. Bu iin nasl yaplacan anlamak iin, SAS onay ile ilgili olaylar aktive edelim.

  • 9 WorkFlow Kurulum Klavuzu

    OOCU ana mensnde MM Satnalma admna gidelim.

    Olay Balantsnn Etkinletir

    Bu admda, nce Olay balantsn etkinletir admn takip edeceiz. Karmza, eitli grevleri barndran bir liste kacak. SAS onay iin, bu liste zerinde WS20000075 SAS Onay admna gidip, menden Git Nesneyi Grntle balantsna tklayacaz.

    Bu ekranda yaplmas gereken uyarlama, yle olacaktr:

    Burada girilen nesne tipi, SAS sz konusu olduu iin BUS2012 olarak seilmitir. Eer SAT, DMS gibi farkl bir nesne tipi sz konusu olsayd, farkl bir nesne tipi ve farkl bir olay atanacakt.

    Bu ayardan sonra, bir nceki ekrana girip Ayrntlar dmesine tklyoruz.

  • 10 WorkFlow Kurulum Klavuzu

    Burada tklanmas gereken iki yer vardr:

    Event linkage activated: Sz konusu olay aktif hale getirir Error feedback: ak zerinde bir hata olutuunda, Eventi tamamen durdurmamay

    salamak iin buraya 3 deerini giriyoruz.

    imiz bittiinde, dmesine tklayarak ekrandan kyoruz. Herey yolundaysa, grntnn u hale gelmesi gerekir:

    leyen Tayini

    Bu blmde, kullanlacak olan WorkFlow admlarnn Genel grev olarak belirlenmesi sade bir kurulum iin uygun olacaktr.

  • 11 WorkFlow Kurulum Klavuzu

    WorkFlowun Hazrlanmas

    WorkFlowun Almas WorkFlow emalar, SWDD ilem kodundan oluturulur. Eer standart sreler dahilinde bir WorkFlow oluturuyorsak, sistemin getirdii rnek WorkFlowu kopyalayp Zli bir WorkFlow oluturmak uygun olacaktr. Aksi takdirde; sfrdan Zli bir WorkFlow oluturacaksak, emay batan oluturmak daha uygun olacaktr.

    WorkFlowu Balatmak

    Batch Input Yntemi Bu adm; WorkFlowumuzu dkman yaratma, SAT gncelleme gibi standart bir olay neticesinde tetikleyeceksek gereklidir.

    Alternatif olarak, WorkFlowu balatmasn istediiniz olay (mesela bir belgenin kaydedilmesi) srasnda tetiklenen bir User Exit bulup, o User Exit ierisinden aadaki gibi bir toplu girdi koduyla WorkFlowu 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. bdc_dynpro 'SAPLZSDWF_F' '0100'. bdc_field: 'BDC_OKCODE' '=SAVE', 'GF_100-VBELN' i_vbeln. lf_optio-dismode = 'A'. lf_optio-defsize = 'X'. lf_optio-racommit = 'X'. CALL TRANSACTION 'ZSDWF06' USING lt_bdcdata OPTIONS FROM lf_optio. ENDFUNCTION.

    Yukardaki rnekte ZSDWF06 ilem kodu, i aknn balamasn salayacak olan ilem kodudur. ak balatacak ilem kodlarnn nasl oluturulaca, lem Kodunun Balanmas balnda

  • 12 WorkFlow Kurulum Klavuzu

    anlatlmtr. Bunun almas iin, i aknda bir Start Form yaratm olmanz gerekebilir parametre pas etmeniz bu ekilde olacaktr. Aada, konuyla ilgili bir aklama bulabilirsiniz (Wilson, 2007):

    To define a start form go to the workflow builder and choose menu option Goto Basic Data

    Click the start forms tab

    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.

    Bunu yaptnzda, WorkFlow penceresinde dorudan kullanabileceiniz bir Transaction yaratlm olacaktr. Ancak, bu Transactionu Batch Input ierisinde kullanmaya kalkmayn.

    stteki durumda; i akn zel bir programdan veya kullancya herhangi bir parametre girdirme ihtiyac olmadan (dolaysyla WorkFlow balang ekrann gstermeden) balatmak istiyorsanz, aadaki kod size yardmc 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. PERFORM bdc_dynpro USING 'SAPLSWY_WF_START' '0001'. PERFORM bdc_field USING 'BDC_OKCODE' '/00'. PERFORM bdc_field USING 'GC_TASK' 'WS99900018'. gf_opt-dismode = 'E'. gf_opt-racommit = 'X'. gf_opt-defsize = 'X'.

  • 13 WorkFlow Kurulum Klavuzu

    gf_opt-racommit = 'X'. gf_opt-nobinpt = 'X'. gf_opt-nobiend = 'X'. CALL TRANSACTION 'WF_START' USING bdcdata OPTIONS FROM gf_opt. END-OF-SELECTION.

    Event Yntemi

    Business Object Business Object Eventi tetiklemek iin aadaki kodlardan faydalanabilirsiniz.

    (...) begin of lf_event, objkey type sweinstcou-objkey, evtid type swedumevid-evtid, end of lf_event, (...) lf_event-objkey = lf_01-insid. call function 'SWE_EVENT_CREATE' exporting objtype = 'ZMMBO_PB00' objkey = lf_event-objkey event = 'CREATED' * CREATOR = ' ' * TAKE_WORKITEM_REQUESTER = ' ' * START_WITH_DELAY = ' ' * START_RECFB_SYNCHRON = ' ' * NO_COMMIT_FOR_QUEUE = ' ' * DEBUG_FLAG = ' ' * NO_LOGGING = ' ' * IDENT = importing event_id = lf_event-evtid * RECEIVER_COUNT = * TABLES * EVENT_CONTAINER = exceptions objtype_not_found = 1 others = 2. 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.

    Bu fonksiyonda ZMMBO_PB00, ilgili Business Objectin addr

    Class Class Eventi tetiklemek iin aadaki rnei inceleyebilirsiniz.

    Tetiklenebilecek rnek bir Event (SE24):

  • 14 WorkFlow Kurulum Klavuzu

    Event tetiklemek iin kullanlabilecek parametrik bir rnek kod:

    method event_create.

    *PFD_I_EVENT TYPE SWO_EVENT Event ismi

    *PFD_I_CLSNAME TYPE SEOCLSNAME Snf Ad

    *PIT_I_PARAMETRE TYPE ZBCTT_PARAMETRE Parametreler - Tablo

    *PFD_I_COMMIT TYPE FLAG DEFAULT 'X' Commit work

    *CX_SWF_EVT_INVALID_OBJTYPE Error in Class / Object Type

    *CX_SWF_EVT_INVALID_EVENT Error in Event

    data: l_event_parameters type ref to if_swf_ifs_parameter_container,

    l_cls_instance type sibfinstid,

    lwa_parametre type zbcs_parametre.

    * lgili eventlar ile bo bir konteyner yarat

    call method cl_swf_evt_event=>get_event_container

    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.

    * Deikenleri set et

    loop at pit_i_parametre into lwa_parametre.

  • 15 WorkFlow Kurulum Klavuzu

    call method l_event_parameters->set

    exporting

    name = lwa_parametre-name "Parametre Ad

    value = lwa_parametre-value. " Deeri

    endloop.

    * l_cls_instance = p_qmnum.

    * Eventi tetikle

    call method cl_swf_evt_event=>raise

    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.

    Bu Methodu ararak Event tetikleyen rnek kod:

    REFRESH lit_parametre.

    lwa_parametre-name = 'PFD_I_POSID'.

    lwa_parametre-value = pfd_i_posid.

    APPEND lwa_parametre TO lit_parametre.

    lwa_parametre-name = 'PFD_I_POSNR'.

    lwa_parametre-value = pfd_i_posnr.

    APPEND lwa_parametre TO lit_parametre.

    zbccl_wf=>event_create( pfd_i_event = 'YARATILDI'

  • 16 WorkFlow Kurulum Klavuzu

    pfd_i_clsname = 'ZIMCL_YATIRIM_TALEBI'

    pit_i_parametre = lit_parametre

    pfd_i_commit = space ).

    Bu Eventi dinleyen rnek WorkFlow:

    Manuel ak ilikili bir Eventi manuel tetiklemek iin, SWUE ilem kodunu kullanabilirsiniz.

    WorkFlow Admlarnn Oluturulmas

    Function Module / Class WorkFlowda alacak her bir kod iin, nce bir fonksiyon / Method yazmamz gerekmektedir. Eer ekran zerinden veri girii yaplacaksa; sz konusu fonksiyonun ait olduu grupta bir ekran yaratp, sz konusu ekran fonksiyon ierisinde Call Screen komutuyla ararak aktive edebiliriz.

    Eer standart bir sre ile alacak bir WorkFlow sz konusuysa, normalde ekstra fonksiyon yazma iimizin olmamas gerekir.

    Object Oriented alacaksanz, yazacanz Methodlar Static olmaldr.

    Business Object / Class Bu zmler birbirinin alternatifidir. Daha modern dnyada Class, daha eski dnyada Business Object kullanlr.

    Class WorkFlowun arkasna Class yazmaya karar verirseniz (nerilen yntem), SE24te yeni bir snf yaratp u Interfaceleri uyguladnzdan emin olun:

    BI_OBJECT BI_PERSISTENT

  • 17 WorkFlow Kurulum Klavuzu

    IF_WORKFLOW IF_SWF_EVT_EVENT

    Business Object Business Object, bir WorkFlow arkasnda alacak olan kodlarn Method ve Propertyler baznda toparland yerdir. SWO1 ekranndan eriilebilirler.

    Mesela; SAT onaylar iin BUS2012 adl Business Object, dkman ynetimi iin DRAW adl Business Object vardr. Eer standart bir sre ile alacak bir WorkFlow sz konusuysa, sistemdeki mevcut Business Objecti kullanacaz. Aksi takdirde; kendi Zli yapmza uygun bir Business Objecti sfrdan yaratmamz gerekecek.

    Business Object ierisindeki Methodlarn her biri, bir fonksiyon referans alnarak yaratlr. Key Fields ve Attributes ise, WorkFlowa konu olan tablolarn alanlar referans alnacak yaratlr.

    Bir Business Objecti yaratp hazr hale getirdikten sonra, Edit Change Release Status Object Type To Implemented (veya Released) dememiz gerekir.

    Aada rnek bir Method kodu grebilirsiniz:

    Method ierisinde SWC_GET_ELEMENT makrosu ile Containerden deiken alabilir, SWC_SET_ELEMENT makrosu ile Containere deiken aktarabiliriz. Bu ekilde modifiye edeceimiz deerler, methodu barndran Taskin Container blmnde tanmlanm olmaldr.

  • 18 WorkFlow Kurulum Klavuzu

    Task Bir Class / Business Object methodu ile WorkFlow adm arasndaki kpry Taskler kurar. Yani; bir Methodu WorkFlowda dorudan doruya kullanamayz. Doru balant; Method Task WorkFlow Step eklinde kurulmaldr.

    Taskler; aadaki men admlarndan dzenlenebilir (ilem kodu: PFTC_INS):

    Yeni bir Task yaratacak olursak, tipi TS Standart Grev olacaktr.

    Task ierisindeki kritik alanlar grelim. Temel Veriler Bu blmde; Object Oriented altysanz CL nesne kategorisini, Business Object bazl altysanz BO nesne kategorisini sein. Nesne Tipi olarak ilgili Business Objectin / snfn ad, Method olarak ise ilgili Methodun ismi girilecektir.

  • 19 WorkFlow Kurulum Klavuzu

    Eer yarattnz Task bir kullancnn WorkFlow ekranna dmeden sistem tarafndan ilensin istiyorsanz, aadaki kutucuu da doldurun. Bunun yan sra, WorkFlow ierisinde Taski General olmaktan karp hibir Agent atamayn.

    Tanm Bu blmde, i aknn eitli metinleri tanmlanabilir. Bu metinler SAP ii mesajlarda veya E-Posta iletilerinde kullanlacaktr.

  • 20 WorkFlow Kurulum Klavuzu

    Buradaki metinlerin tercmesi iin SE63 Dier Uzun Metinler mensn kullanabilirsiniz. rnein, 8267 numaral Taskin tercmesi iin kullanmanz gereken kodlar:

    PDTS00008267 0120

    PDTS00008267 0121

    PDTS00008267 ...

    Sondaki 4 haneli rakam, Task ekranndaki metin koduna tekabl etmektedir:

    Yaptnz tercmeleri tamak iin ise Transport Requestiniz altnda yle bir kayt olmaldr:

  • 21 WorkFlow Kurulum Klavuzu

    Konteyner Bu blmde, Taskden (yani WorkFlowdan) Methoda (yani fonksiyona) gnderilecek olan Container deerleri tanmlanr. Fonksiyondan Containere dnecek olan deikenler de burada tanmlanr.

    WorkFlow Step

    Taski General Task Haline Getirmek Bir Taski WorkFlowa mdahele etmeden General Task haline getirmek isterseniz, u admlar izleyin:

    PFTC_CHG ilem koduna girin Ek Veriler Arac Tayini Bakmn Yap mensne gidin zelliklere girip Genel Grevi tklayn OK & Generate

    Attachment Zorunlu olmasa da; WorkFlowa Attachment balamak gerekebilir. Bunun tipik bir rnei; beyaz ekranl Decision Task ekranna, ilgili SAP belgesine gidecek .SAP uzantl bir Attachment eklemektir.

    Bunun iin, i akna yeni bir Task ekliyoruz.

  • 22 WorkFlow Kurulum Klavuzu

    Taskin detaylar yle olmal:

  • 23 WorkFlow Kurulum Klavuzu

  • 24 WorkFlow Kurulum Klavuzu

    Taskin arkasndaki Business Object ile, SWO1de SOFMdan kopyalanmtr. Eklenen ATTACHDOC Methodu ise yledir:

    begin_method attachdoc changing container. data: v_xstring type xstring, v_workitemid type swr_struct-workitemid, v_att_header type swr_att_header, v_att_id type swr_att_id, v_submi type ekko-submi, v_syuname type syuname. * get the input values swc_get_element container 'WorkitemId' v_workitemid. swc_get_element container 'submi' v_submi. call function 'ZMMF_TEKLIF_LINK' exporting pfd_i_submi = v_submi importing pfd_e_xstring = v_xstring. * document file attributes * get the extension name 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. call function 'SAP_WAPI_ATTACHMENT_ADD' exporting workitem_id = v_workitemid att_header = v_att_header att_bin = v_xstring importing att_id = v_att_id.

  • 25 WorkFlow Kurulum Klavuzu

    data: lo_attachment type swc_object. swc_create_object lo_attachment 'SOFM' v_att_id-doc_id. if sy-subrc = 0. swc_set_element container 'SOFM' lo_attachment. else. "raise error endif. * pass attachment id and internal document number for SOFM * SWC_SET_ELEMENT CONTAINER 'ATT_ID' V_ATT_ID. * SWC_SET_ELEMENT CONTAINER 'SOFM' V_ATT_ID-DOC_ID. end_method.

    Buradaki ZMMF_TEKLIF_LINK fonksiyonunun ierii:

    function zmmf_teklif_link . *"---------------------------------------------------------------------- *"*"Local Interface: *" IMPORTING *" REFERENCE(PFD_I_SUBMI) TYPE EKKO-SUBMI *" EXPORTING *" REFERENCE(PFD_E_XSTRING) TYPE XSTRING *"---------------------------------------------------------------------- *** Declaration for shortcut content data : lfd_parameter type text255, lfd_string type string, lfd_ekorg type ekko-ekorg. select single ekorg from zmmt_tklf_log_b into lfd_ekorg where submi eq pfd_i_submi. 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 . *** create the shortcut content for the required transaction call function 'SWN_CREATE_SHORTCUT' exporting i_transaction = '*ZMM001' i_parameter = lfd_parameter i_sysid = sy-sysid i_client = sy-mandt i_user = space i_language = sy-langu i_windowsize = 'Normal window' "Maximized importing shortcut_string = lfd_string exceptions inconsistent_parameters = 1 others = 2. if sy-subrc eq 0. call function 'SCMS_STRING_TO_XSTRING' exporting text = lfd_string importing buffer = pfd_e_xstring. endif.

  • 26 WorkFlow Kurulum Klavuzu

    endfunction.

    kinci Pencere Amak User Decision iinde ikinci bir pencere ap belgeyi grntlemek istersek;

    Opsiyonel adm 1: BORun dinamik yaratlmas. BOR zaten varsa buna gerek yok:

    Adm 2: Taskin iinde Grntle Methodunun arlmas:

    Agentlarn Atanmas Agent atama blmnde seilebilecek birka deer vardr, bunlar aada bulabilirsiniz. Zli program / raporlarda, atanan bir Agentn adn almak iin SWD_AGENT_TEXT_GET fonksiyonu kullanlabilri.

    Superior Of Workflow Initiator Bu deer, WorkFlowu balatan kiinin yneticisini temsil etmektedir.

  • 27 WorkFlow Kurulum Klavuzu

    Rule Dikkat! 4.x sistemlerinde ROLE olarak geen kavram, 5.x itibariyle RULE olarak deitirilmi ve ROLE diye yepyeni bir kavram getirilmitir.

    Rulelar sayesinde, WorkFlowun herhangi bir admndaki Agent dinamik olarak (ABAP kodu ile) belirlenebilir. Bu ilem iin izlenmesi gereken birka adm vardr. Bu admlar bir rnek erevesinde inceleyelim.

    Fonksiyonun Yazlmas Sz konusu fonksiyon, EDI_ROLE_FOR_PROC_CHECKDUMMY kopyalanarak yazlabilir1. Bu fonksiyonun amac, WorkFlowdaki duruma gre muhataplar belirleyip geri dndrmek olacak.

    Fonksiyon grubu ierisinde, Containerden deer almak & Containere deer atamak iin u tanm yaplmaldr:

    include .

    Fonksiyon ierisinde izlenmesi gereken 3 adm vardr:

    1. Containerden gerekli bilgileri almak 2. Zli tablolardan (veya baka bir ekilde) ilgili muhatab/muhataplar tespit etmek 3. Sz konusu muhataplar ACTOR_TAB ierisinde doldurmak

    Yazlm rnek bir muhatap fonksiyonu kodunu inceleyelim:

    function zfakorul1. *"---------------------------------------------------------------------- *"*"Local Interface: *" TABLES *" ACTOR_TAB STRUCTURE SWHACTOR *" AC_CONTAINER STRUCTURE SWCONT *" EXCEPTIONS *" NOBODY_FOUND *" NO_ACTIVE_PLVAR *"---------------------------------------------------------------------- * define variables stored in container * local data data: lf_doc2 type zfakdoc2, lv_docid like zfakdoc2-docid, lv_posnr like zfakdoc2-posnr. swc_get_element ac_container 'DOCID' lv_docid. swc_get_element ac_container 'POSNR' lv_posnr. select single * into lf_doc2 from zfakdoc2 where docid eq lv_docid and posnr eq lv_posnr. if not lf_doc2-user1 is initial. actor_tab-otype = 'US'. actor_tab-objid = lf_doc2-user1. append actor_tab. endif. if not lf_doc2-user2 is initial. actor_tab-otype = 'US'.

    1 Sistemde temel alnabilecek birok fonksiyon vardr. nemli olan, fonksiyonun ACTOR_TAB ve AC_CONTAINER parametrelerine sahip olmasdr.

  • 28 WorkFlow Kurulum Klavuzu

    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.

    Buradaki en basit yaklam, ACTOR_TABe US anahtaryla bir kullanc eklemektir.

    Ruleun Yaratlmas Fonksiyon yazldktan sonra, sra Rule tanmlamasna gelir. Bunun iin PFAC_INS ilem koduna veya ilgili menye gidip yeni bir Rule yaratyoruz.

    Rule Definition blmnde;

    Category ksmnda Function to be Executed deerini seiyoruz Function Module ksmnda, daha nce yaratm olduumuz fonksiyonun ismini giriyoruz

  • 29 WorkFlow Kurulum Klavuzu

    Burada Terminate if Rule Resolution Without Result tknn atldndan emin olun. Aksi takdirde; koddaki bir hatadan dolay Agent belirlenemezse ve Task Generic ise, ilgili onay talebi sistemdeki tm kullanclara gidecektir.

    Container blmnde ise, yazdmz fonksiyon ierisinde SWC_GET_ELEMENT ile deerini aldmz deikenleri (IMPORTING eklinde) tanmlyoruz. Eer SWC_SET_ELEMENT ile fonksiyondan Containere dndreceimiz deerler varsa, onlar da (EXPORTING eklinde) tanmlayabiliriz.

    WorkFlowa Uygulanmas Dinamik muhatap atamas yapacamz admn Agents blmnde, AC Rule deerini seip karsna yarattmz Ruleun kodunu giriyoruz.

  • 30 WorkFlow Kurulum Klavuzu

    Ardndan; Binding dmesine tklayp, Container ve Rule arasnda gidip gelecek olan deikenleri tanmlamamz gerekiyor. Yukardaki rnekte, DOCID ve POSNR deerlerini aktarmamz gerekiyor. 2

    Agent atamas dinamik yaplacandan, sz konusu Taskin Generic Task olarak tanmlanmasnda fayda vardr. Bu ilem iin, nce Task Properties blmndeki Agent Assignmenta tklyoruz.

    2 Eer fonksiyondan Containere deer dn olsayd, onu da ayn pencerenin alt tarafnda tanmlayacaktk

  • 31 WorkFlow Kurulum Klavuzu

    Gittiimiz ekranda Taski seip Attributes... dmesine tklyor ve General Task seeneini tklyoruz.

    Role Bu deer, standart BC yetkilendirmesindeki role karlk gelmektedir.

    Job Bu deer, HR emasndaki bir Jobu temsil eder.

    Organizational Unit Bu deer, HR emasndaki bir organizasyon birimini temsil eder.

    Position Bu deer, HR emasndaki bir pozisyonu temsil eder.

    User Bu deer, sistemdeki bir kullancy temsil eder.

    Expression Buraya, Containerde bulunan SWHACTOR tipindeki bir muhatap deikeni girilebilir.

  • 32 WorkFlow Kurulum Klavuzu

    Binding lemlerinin Yaplmas WorkFlowun her bir admnda, ilgili Taske gnderilecek ve Taskden alnacak deerler tanmlanmaldr. Bu i, adm detaylarndaki Binding dmesi ile yaplr.

    Aada rnek bir Binding grebilirsiniz:

    Binding sonucunda, deikenlerin ak sras u ekilde olur:

  • 33 WorkFlow Kurulum Klavuzu

    WorkFlow Container

    Task

    Method

    Function

    Method

    Task

  • 34 WorkFlow Kurulum Klavuzu

    lem Kodunun Balanmas WorkFlowu bir ilem kodu ile balatmak istiyorsanz, SE93 ekrannda aadaki zelliklere sahip bir Parameter Transaction yaratn:

    Buradaki GC_TASK deeri, yaratm olduunuz WorkFlowun IDsi olmaldr.

  • 35 WorkFlow Kurulum Klavuzu

    WorkFlowlarn zlenmesi WorkFlow hatalar ortaya kyorsa, yaplacak ilk i SWU_OBUF ilem kodunda bir senkronizasyon yaplmasdr. Bunun tesinde, balam WorkFlowlarn izlenmesi iin SWI6 / SWI14 ilem kodlar kullanlabilir. Aada, rnek bir rapor grebilirsiniz:

    Burada seilmi herhangi bir admn detaylarn grmek iin, yukardaki Log dmesine tklanabilir.

    Ayn ekran zerinde, Graphic dmesi ile ak grsel olarak da izlemek mmkndr.

  • 36 WorkFlow Kurulum Klavuzu

    WorkFlow letilerinin E-Posta Olarak Gnderilmesi

    Otomatik Bildirim Bu ilem, NetWeaver ve Web Application Server bulunan yerlerde otomatik olarak yaplabilmektedir.

    Kullanc Ayarlar

    Eski Sistemler ncelikle, E-Posta iletisi almak isteyen kullanc ile Login olup SO12 ekranna gidiyoruz.

    Bu ekranda, Otomatik letim sekmesinde Create dmesine tklyoruz.

  • 37 WorkFlow Kurulum Klavuzu

    Alacak olan pencerede, E-Posta iletilerinin gnderilecei adresi ve gnderim ileminin yaplaca tarih araln giriyoruz. Gerek bir WorkFlow senaryosunda, biti tarihi olarak 31.12.9999 girmek uygun olacaktr. 3

    Yeni Sistemler Yeni sistemlerde, stteki Forward zelliini kullanmaya gerek yoktur. Kullanc ana verilerindeki (SU01) E-Posta adresi otomatik olarak kullanlr.

    3 Yapm olduumuz bu ayar, SO36 ekrannda birok kullanc iin toplu olarak yaplabilir.

  • 38 WorkFlow Kurulum Klavuzu

    Dier Ayarlar Bu andan itibaren, kiinin Inboxuna decek olan SAP ve WorkFlow iletileri, otomatik olarak bu adrese iletilecektir. letim iini yapacak programlarn dzenli Background Joblar eklinde kurulmu olmas gerekmektedir:

    RSWUWFML2

    ak iletilerini gnderir. deal durumda bu program bir varyant ile kurulmaldr. Varyant ierisinde, aadaki seim ekran kriterleri ayarlanmaldr:

    Bu ekran zerinde;

    Message Class for Subject & Message Number For Subject: Gnderilen E-Posta iletisinin konusunu hangi ileti snfnn (SE91) hangi iletisinden oluturacan belirtiyoruz. SE91 mesaj iinde iki parametre belirtebiliyoruz:

    o &1 = Sistem tanm (ARP gibi) o &2 = Taskin iindeki metin

    Before Work Item Description: Gnderilecek iletinin ieriine ait standart metni belirliyoruz. Bu standart metin, SE61 ilem kodunda tanmlanabilir. SE61de; dkman snf DT(Diyalogdaki metin) olarak ayarlanmaldr.

    Farkl i aklar iin farkl metinler sz konusu olacaksa; her bir i ak iin ayr ayr varyantlar oluturup; her bir varyant iin ayr birer Job kurmak iyi bir fikir olacaktr.

  • 39 WorkFlow Kurulum Klavuzu

    Eer gnderilen iletilerin ieriini i ak nesnesinden (onay talebi, vs) dinamik olarak deitirmek istersek, bu ilemi bu programn Zli bir kopyasn alarak yapabiliriz. Deitirilmi rnek bir program, ekte bulunmaktadr:

    ZRSWUWFML2

    Yeni srmlerde ayn ii Enhancementlarla da yapabiliyoruz. Enhancementl bir rnek ektedir:

    RSWUWFML2

    SWN_SELSEN

    Gecikmi / cevaplanmam iletileri tekrar gnderir. Bu program normal artlarda kurmaya gerek yoktur.

    Bu programlarn dzgn almas iin, SCOT ilem kodundaki E-Posta ayarlarnn dzgn bir ekilde yaplm olmas gerekmektedir.

    Gnderilmi olan i ak iletileri, kabaca aadaki grntye sahip olacaktr:

    Kullanc iaretli balantlara tklayarak, ekrannda alacak bir SAP Gui penceresi ierisinde gerekli ilemi yapabilir.

    Bu balantlara tklandnda; kullancnn hangi SAP sistemine Logon olaca una baldr: Gnderilen link (EXECUTE WORK ITEM.SAP) ierisinde, kaynak sistemin 3 haneli kodu bulunmaktadr:

  • 40 WorkFlow Kurulum Klavuzu

    Kullancnn SAPGUIsinde (rneimizde) OXP girdisi hangi sistemde ise, balantya tkladnda o sisteme Login olmaya alacaktr.

    Birden fazla sistemde OXP tanm varsa, daha stte yer alan sisteme Login olunacaktr.

    Manuel Bildirim Netweaver bulunmayan, veya E-Postadaki balantya tklayarak bir Web balants amak isteyen yerlerde ise, WorkFlow Inboxunu periyodik olarak tarayp, yeni mesajlar iin E-Posta iletileri oluturup Zli bir tabloya yazacak bir uygulama gelitirilmesi gerekir.

    Netweaver zm Netweaver var ise, ilgili E-Posta atma fonksiyonu arlarak iletiler gnderilebilir. Aada bu ii yapan rnek bir program grebilirsiniz.

    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 Klavuzu

    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. SELECT SINGLE smtp_addr INTO lt_rece-receiver FROM adr6 WHERE addrnumber EQ ( SELECT addrnumber FROM usr21 WHERE bname EQ gt_uname-uname ) AND persnumber EQ ( SELECT persnumber FROM usr21 WHERE bname EQ gt_uname-uname ). lt_rece-rec_type = 'U'. APPEND lt_rece. CALL FUNCTION 'SO_NEW_DOCUMENT_SEND_API1' EXPORTING document_data = lf_docdat commit_work = 'X' TABLES object_content = lt_cont receivers = lt_rece EXCEPTIONS too_many_receivers = 1 document_not_sent = 2 document_type_not_exist = 3 operation_no_authorization = 4 parameter_error = 5 x_error = 6 enqueue_error = 7 OTHERS = 8. IF sy-subrc EQ 0. lf_sent-wi_id = gt_uname-wi_id. INSERT zwf_sent FROM lf_sent. ENDIF. ENDLOOP. SUBMIT rsconn01 AND RETURN. ENDFORM. " sendmail *&---------------------------------------------------------------------* *& Form detect_msg *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* * --> p1 text

  • 42 WorkFlow Kurulum Klavuzu

    *

  • 43 WorkFlow Kurulum Klavuzu

    *&---------------------------------------------------------------------* *& 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. SELECT SINGLE smtp_addr INTO lf_mail-email FROM adr6 WHERE addrnumber EQ ( SELECT addrnumber FROM usr21 WHERE bname EQ gt_uname-uname ) AND persnumber EQ ( SELECT persnumber FROM usr21 WHERE bname EQ gt_uname-uname ). INSERT zwfmail FROM lf_mail. IF sy-subrc EQ 0. lf_sent-wi_id = gt_uname-wi_id. INSERT zwf_sent FROM lf_sent. ENDIF. ENDLOOP. ENDFORM. " sendmail *&---------------------------------------------------------------------* *& Form detect_msg *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* * --> p1 text *

  • 44 WorkFlow Kurulum Klavuzu

    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. CALL FUNCTION 'SWW_WI_AGENTS_READ' EXPORTING wi_id = gt_uname-wi_id TABLES * DEADLINE_AGENTS = * DESIRED_END_AGENTS = * LATEST_START_AGENTS = * EXCLUDED_AGENTS = * NOTIFICATION_AGENTS = agents = lt_agents. READ TABLE lt_agents INDEX 1. IF sy-subrc EQ 0 AND lt_agents-otype EQ 'US'. gt_uname-uname = lt_agents-objid. MODIFY gt_uname. ENDIF. ENDLOOP. ENDFORM. " detect_msg

    E-Posta Dn E-Posta dnnde Web tabanl bir onay vermek sz konusu ise, bu onayn arkasndaki fonksiyon SWW_WI_ADMIN_EXECUTE fonksiyonunu aracak bir rapor yazlp, bu raporu aran bir Batch Input yrtebilir (SWIA ilem kodunun arkasndaki fonksiyon). Identification parametresi olarak, sz konusu Work Itemin IDsi girilecektir.4

    REPORT zpurap_wi_admin_execute . PARAMETERS: p_wi_id TYPE swwwihead-wi_id. START-OF-SELECTION. CALL FUNCTION 'SWW_WI_ADMIN_EXECUTE' EXPORTING wi_id = p_wi_id * DO_COMMIT = 'X' * AUTHORIZATION_CHECKED = ' ' * PRECONDITIONS_CHECKED = ' ' * EXECUTED_BY_USER = SY-UNAME * EXECUTED_BY_ADDRESS = ' ' * IMPORTING * NEW_STATUS = * EXCEPTIONS * UPDATE_FAILED = 1 * NO_AUTHORIZATION = 2 * INFEASIBLE_STATE_TRANSITION = 3 * INVALID_TYPE = 4 * OTHERS = 5 . IF sy-subrc 0. * MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO * WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. ENDIF.

    4 Bu ID, Containerdan kolayca bulunabilir

  • 45 WorkFlow Kurulum Klavuzu

    END-OF-SELECTION.

    Ancak; SAT/SAS onay gibi baz standart sreler, kendi WorkFlow BAPIlerine sahiptir. Yerine gre bu BAPIler de arlabilir.

    Ekran bu ekilde yrtldnde, sz konusu IDyi ieren Task ekrana gelecektir.

    Sz konusu satr seip Edit Work Item Execute Without Check (veya Execute Work Item) mensne girildiinde, sz konusu admn yrtlecei ekrana eriiyoruz. Aada, SAT onay ile ilgili rnek ekran grebilirsiniz.

  • 46 WorkFlow Kurulum Klavuzu

    Vekalet Durumunda Vekilin Tespiti Bu ihtiya, aadaki rnek kodla karlanabilir.

    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. select * from hrus_d2 into ls_d2 where us_name eq i_bname and active eq 'X' and begda le sy-datum and endda ge sy-datum. clear ls_vekil.

  • 47 WorkFlow Kurulum Klavuzu

    ls_vekil-bname = ls_d2-rep_name. select single smtp_addr into ls_vekil-email from adr6 as a inner join usr21 as u on a~persnumber eq u~persnumber and a~addrnumber eq u~addrnumber where u~bname eq ls_d2-rep_name . collect ls_vekil into e_vekil. endselect. endfunction.

    WorkFlow letilerinin Silinmesi Herhangi bir noktada; belge silinmesi, sre iptali gibi sebeplerden tr kullanclarn Inboxlarnda bekleyen onay taleplerini silmek isteyebilirsiniz. Bu durumda, rswwwide adl standart program arabilirsiniz; ilem kodu: SWWL. Aada, bu program arp onay bekleyen i kalemlerini silen rnek bir fonksiyon bulunmaktadr:

    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. * Gnderilen Work Item ve * Bu Work Item'a ait olabilecek dier iletiler refresh lr_wi_id. lr_wi_id-option = 'EQ'. lr_wi_id-sign = 'I'. lr_wi_id-low = i_wi_id. append lr_wi_id. select wi_id as low appending corresponding fields of table lr_wi_id from swwwihead where wi_chckwi eq i_wi_id. loop at lr_wi_id where option is initial.

  • 48 WorkFlow Kurulum Klavuzu

    lr_wi_id-option = 'EQ'. lr_wi_id-sign = 'I'. modify lr_wi_id. endloop. * Gnder 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 (doal olarak) gnderilmi E-Posta iletilerini silememektedir. Sadece SAP i ak Inboxundaki iletileri silmektedir.

    Faydal Workflow Nesneleri

    Tablolar SWWWIHEAD: Workflow Runtime: Header Table for All Work Item Types SWWLOGHIST: Workflow Runtime: History of a Work Item SWP_HEADER: Workflow Instances: Header Data of a Workflow Execution SWW_CONTOB: Workflow Runtime: Work Item Data Container (Only Objects) SWW_CONT: Workflow Runtime: Work Item Data Container SWWUSERWI: Kullancya ilikin yrrlkteki i kalemleri

    Modllere zel pular

    DMS

    Dkman Yaratld Anda WorkFlow Tetiklemek

    DMS Uyarlamalar SPRO Cross Application Components Document Management Document Distribution General Settings SAP Business Workflow mens alr.

  • 49 WorkFlow Kurulum Klavuzu

    Activate Event-Type Linkage Bu men admna bir kez tklanmas yeterlidir. Bu ekilde, dkman ynetimi olay balantlar aktive edilecektir. Allocate Tasks To Persons Reponsible Buras, btn ilemin en kritik yeridir.

    Activate Event Linking Birinci admda; Activate event linking mensne tklyoruz.

  • 50 WorkFlow Kurulum Klavuzu

    Burada, bizi Change Document Info Record ve Create Object Of Type DRAW Taskleri ilgilendiriyor. Bu Tasklerden ilki bir dkman gncellendiinde, ikincisi ise yaratldnda alacak.

    TS00007842ye tklayarak, Goto Display Object mensne giriyoruz. Karmza gelecek pencerede, Triggering events blmne girip aadaki deerleri giriyoruz:

    Ayn ekranda, Binding de otomatik olarak retilebiliyor olmal. Soldaki butonu yeil hale getirerek adm aktive ediyoruz. Bu ekilde; Biri dkman gncellediinde, DRAW adl Business Objectin CHANGED olayn tetikle demi olduk.

    imdi ayn ilemi TS00408150 iin de yapacaz.

  • 51 WorkFlow Kurulum Klavuzu

    Bu admlar dzgn bir ekilde yapp geri ktmzda, EVENT listesi dolmu olmaldr.

    Artk buradan geriye kabiliriz.

    Assign Agents Bu balantya tkladmzda, karmza eitli DMS grevlerine kimlerin atanacann belirlenecei ekran gelecektir.

    Bizi burada da Change document info record ve Create object of type DRAW admlar ilgilendiriyor. Bu admlara ilgili kiiler (standart Agent mant ile) atanabilir; ama sade bir kurulumda bu Taskleri General Task yapmak iyi bir fikir olacaktr.

    Bunun iin, her bir Taski seip yukardaki Attributes... dmesine tklyoruz ve General Task seeneini iaretliyoruz.

  • 52 WorkFlow Kurulum Klavuzu

    Verify Workflow Customizing Eer gerekiyorsa, bu admda WorkFlow uyarlamalar test edilebilir. Ancak; sistem zerinde dzgn alan baka WorkFlowlar varsa, buraya girmeye gerek yok.

    WorkFlowun Hazrlanmas SWDD ekranna girip yeni bir WorkFlow yaratyoruz. WorkFlow ekrannda Goto Basic data ekranna gidiyoruz. Karmza gelecek ekrann Start Events ksm, DMS balants iin kritik blgedir.

    Buraya, (daha nce DMS Tasklerini balam olduumuz) DRAW CREATED ve DRAW CHANGED olaylarn gireceiz. Sol taraftaki Binding dmesi ile, DRAWdan gelen nesneler ile WorkFlow Container nesneleri arasndaki aktarmlar ayarlanabilir. zellikle _EVT_OBJECT nesnesi, yaratlan/gncellenen dkmanla ilgili btn detaylar getirdii iin bizim amzdan kritik olacaktr.

  • 53 WorkFlow Kurulum Klavuzu

    Bu adm tamamladktan sonra soldaki gri dmeleri yeil hale getirip olaylar aktive ediyoruz. WorkFlow emas artk yle gzkyor olmal:

    Burada Document Changed ve Document Created olaylarna dikkat edin. Ben yaptm rnekte, aaya bir de Dkman yaratld mesaj gnderecek adm ekledim. Gerek bir projede, Eventlerin altna standart WorkFlow ak eklenmelidir.

    Uygulama rnei

    Kullanc, CV01Nye giderek yeni bir dkman yaratyor

  • 54 WorkFlow Kurulum Klavuzu

    Dkman yaratldktan ksa bir sre sonra, ilgili kiiye Yeni dkman yaratld mesaj iletiliyor

    Olaylar Kendi Programmzdan Tetiklemek Eer i akn balatacak olan onay kendi yazdmz bir programdan tetiklemek istiyorsanz, WorkFlowu Balatmak balna gz atn.

    MM

    SAT & SAS in User Exit le Agent Belirleme Onay kodlar ierisine giriyoruz.

    Herhangi bir onay kodunun ak stununda F4e basp, 9 Kullanc k yoluyla rol alm deerini seiyoruz. O andan itibaren, sz konusu kod iin User Exit devreye girecektir.

    Ama hangi User Exit? Bu sorunun cevab iin, Satnalma altndaki Satnalma iin gelitirmeler mensnn yanndaki yardm seiyoruz.

  • 55 WorkFlow Kurulum Klavuzu

    Karmza gelecek ekranda, satnalmaya ait eit eit User Exiti liste halinde grebiliriz. Bu User Exitlerden bir tanesi, SAT dngsnn muhatap seimine tekabl ediyor.

    M06B0001e baktmzda, iinde tek bir Component olduunu gryoruz.

    Bu fonksiyon, btn EBAN deerlerini ve onay kodunu getiriyor. Bu Exit ierisinde yapmamz gereken ey, gelen deerlere gre gerekli deerlendirmeyi yapp, ACTOR_TAB ierisinde onay verecek kiinin Usern (veya personel numarasn, grup numarasn, vs) dndrmek.

  • 56 WorkFlow Kurulum Klavuzu

    Eer ayn ii SAS iin yapmak isteseydik, aadaki User Exiti ayn mantkla kullanabilirdik:

    Onay Durumunun Tespiti BAPI_PO_GETRELINFO fonksiyonu, SAS onay durumunu dndrmektedir. BAPI_REQUISITION_GETRELINFO ise, SAT onay durumunu dndrmektedir.

    SAT durumu iin, bu rnek fonksiyonu inceleyelim.

    Hi onaylanmam bir SAT kalemi iin; fonksiyon, aadaki ekilde veri dndrecektir:

  • 57 WorkFlow Kurulum Klavuzu

    Dikkat ederseniz, ortada hi onay olmad iin RELEASE_ALREADY_POSTED tablosu botur. RELEASE_FINAL tablosunda ise, olmas gereken onaylar grebilirsiniz:

  • 58 WorkFlow Kurulum Klavuzu

    Ksmen onaylanm bir SAT kalemi iin; fonksiyon, aadaki ekilde veri dndrecektir:

  • 59 WorkFlow Kurulum Klavuzu

    Normalde 6 onay verilmi olmas gerekirken; burada henz 4 tanesinin verildiini gryoruz.

    Tamamen onaylam bir SATta ise, tabloda 6 onayn 6s birden gzkecektir:

    Ne var ki; bu fonksiyonda bir SATn reddedildiine dair herhangi bir bilgi bulamazsnz.

    Sradaki onay kodunu dndren rnek bir ABAP kodu aada grlebilir. Bu kod belli bir senaryo iin hazrlanmtr; modifiye etmek gerekebilir.

  • 60 WorkFlow Kurulum Klavuzu

    METHOD get_next_frgab. DATA: lit_final TYPE STANDARD TABLE OF bapirlcorq, lrd_final TYPE REF TO bapirlcorq, lit_gen TYPE STANDARD TABLE OF bapirlgnrq, lrd_gen TYPE REF TO bapirlgnrq, lit_posted TYPE STANDARD TABLE OF bapirlcorq, lrd_posted TYPE REF TO bapirlcorq, lit_return TYPE isi_bapireturn_tt, lfd_bnfpo1 TYPE bnfpo. * Onay bilgilerini okuyalm CALL FUNCTION 'BAPI_REQUISITION_GETRELINFO' EXPORTING number = pfd_i_banfn TABLES general_release_info = lit_gen release_already_posted = lit_posted release_final = lit_final return = lit_return. LOOP AT lit_return TRANSPORTING NO FIELDS WHERE type IN zbccl_log=>get_crit_msgty_range( ). EXIT. ENDLOOP. 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. * Tablo okuma; beklenmedik durumlarda hata READ TABLE lit_final INDEX 1 REFERENCE INTO lrd_final. 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. LOOP AT lit_final REFERENCE INTO lrd_final WHERE preq_item EQ lfd_bnfpo1. ENDLOOP.

  • 61 WorkFlow Kurulum Klavuzu

    READ TABLE: lit_posted INDEX 1 REFERENCE INTO lrd_posted, lit_gen INDEX 1 REFERENCE INTO lrd_gen. 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. IF lrd_gen IS NOT INITIAL AND lrd_gen->rel_ind NE abap_true. RAISE EXCEPTION TYPE zcx_mm_mobile_pr_approval EXPORTING textid = zcx_mm_mobile_pr_approval=>onay_bloke banfn = pfd_i_banfn. ENDIF. * Sradaki onay kodunu dndrelim IF lrd_posted IS INITIAL OR ( lrd_posted->rel_code1 IS INITIAL AND lrd_final->rel_code2 IS NOT INITIAL ). pfd_r_frgab = lrd_final->rel_code1. RETURN. ENDIF. IF lrd_posted->rel_code2 IS INITIAL AND lrd_final->rel_code2 IS NOT INITIAL. pfd_r_frgab = lrd_final->rel_code2. RETURN. ENDIF. IF lrd_posted->rel_code3 IS INITIAL AND lrd_final->rel_code3 IS NOT INITIAL. pfd_r_frgab = lrd_final->rel_code3. RETURN. ENDIF. IF lrd_posted->rel_code4 IS INITIAL AND lrd_final->rel_code4 IS NOT INITIAL. pfd_r_frgab = lrd_final->rel_code4. RETURN. ENDIF. IF lrd_posted->rel_code5 IS INITIAL AND lrd_final->rel_code5 IS NOT INITIAL. pfd_r_frgab = lrd_final->rel_code5. RETURN. ENDIF. IF lrd_posted->rel_code6 IS INITIAL AND lrd_final->rel_code6 IS NOT INITIAL. pfd_r_frgab = lrd_final->rel_code6. RETURN. ENDIF. IF lrd_posted->rel_code7 IS INITIAL AND lrd_final->rel_code7 IS NOT INITIAL. pfd_r_frgab = lrd_final->rel_code7. RETURN.

  • 62 WorkFlow Kurulum Klavuzu

    ENDIF. IF lrd_posted->rel_code8 IS INITIAL AND lrd_final->rel_code8 IS NOT INITIAL. pfd_r_frgab = lrd_final->rel_code8. RETURN. ENDIF. RAISE EXCEPTION TYPE zcx_mm_mobile_pr_approval EXPORTING textid = zcx_mm_mobile_pr_approval=>mevcut_onay_durumu_tespit banfn = pfd_i_banfn. ENDMETHOD.

    Programdan SAT Redddetmek

    method reject_pr. PFD_I_BANFN TYPE BANFN Satnalma talebi numaras PFD_I_FRGAB TYPE FRGAB Satnalma talebi onay kodu data: lit_conta type standard table of swr_cont, lrd_conta type ref to swr_cont, lit_msgl type standard table of swr_messag, lit_msgs type standard table of swr_mstruc, lit_xeban type standard table of ueban, lrd_xeban type ref to ueban, lit_yeban type standard table of ueban, lit_xebkn type standard table of uebkn, lit_yebkn type standard table of uebkn, lfd_okey type swr_struct-object_key. * Mevcut veriler select * into corresponding fields of table: lit_xeban ##too_many_itab_fields from eban where banfn eq pfd_i_banfn, lit_xebkn ##too_many_itab_fields from ebkn where banfn eq pfd_i_banfn. lit_yeban[] = lit_xeban[]. lit_yebkn[] = lit_xebkn[]. * EBAN durum deiiklii

  • 63 WorkFlow Kurulum Klavuzu

    loop at lit_xeban reference into lrd_xeban. lrd_xeban->kz = c_cdchngind_update . "U lrd_xeban->banpr = c_banpr_red . "08 endloop. call function 'ME_UPDATE_REQUISITION' tables xeban = lit_xeban xebkn = lit_xebkn yeban = lit_yeban yebkn = lit_yebkn. call function 'ME_UPDATE_REQUISITION_CHNGDOC' tables xeban = lit_xeban xebkn = lit_xebkn yeban = lit_yeban yebkn = lit_yebkn. commit work and wait. * aknda red Event'ini tetikleme append initial line to lit_conta reference into lrd_conta. lrd_conta->element = 'RELEASECODE'. lrd_conta->value = pfd_i_frgab. loop at lit_xeban reference into lrd_xeban. concatenate lrd_xeban->banfn lrd_xeban->bnfpo into lfd_okey. call function 'SAP_WAPI_CREATE_EVENT' exporting object_type = 'BUS2105' object_key = lfd_okey event = 'REJECTED' commit_work = abap_true tables message_lines = lit_msgl message_struct = lit_msgs. endloop. * Mevcut i aklarn durdurma (Event ie yaramazsa) loop at lit_xeban reference into lrd_xeban. cancel_active_wfs( lrd_xeban->banfn ). endloop. endmethod.

  • 64 WorkFlow Kurulum Klavuzu

    method cancel_active_wfs. PFD_I_BANFN TYPE BANFN Satnalma talebi numaras data: lit_wi type standard table of swr_wihdr, lrd_wi type ref to swr_wihdr, lwa_por type sibflporb. * WF listesi lwa_por-instid = pfd_i_banfn. lwa_por-typeid = 'BUS2105'. lwa_por-catid = 'BO'. call function 'SAP_WAPI_WORKITEMS_TO_OBJECT' exporting object_por = lwa_por tables worklist = lit_wi. check lit_wi[] is not initial. * Cancel loop at lit_wi reference into lrd_wi. call function 'SAP_WAPI_ADM_WORKFLOW_CANCEL' exporting workitem_id = lrd_wi->wi_id. endloop. endmethod.

    Yetkilendirme ak tetikleyecek olan kiilere, S_RFC ve S_WF_WI yetkilerinin verilmi olmas gerekmektedir. Bunun yan sra; bu kiiler, i akna konu olan ilem ile ilgili yetkilere de sahip olmaldr. rnein SAT ile ilgili bir i ak sz konusuysa, SAT aabilecek yetkilere de sahip olmaldr.

    Java zmnn uyguland yerlerde; Web zerinden onay verecek kiilerin de S_RFC yetkisine sahip olmas gerekmektedir. Bunun yan sra, onay verecekleri ekranlara ait yetkilerin de verilmi olmas gerekmektedir.

  • 65 WorkFlow Kurulum Klavuzu

    Vekalet aknda vekalet vermek iin, SBWP ilem kodunda Ayarlar Ak Ayarlar Vekil Bakm mens kullanlabilir. Kaydedilen vekiller, HRUS_D2 tablosunda saklanr.

    Vekil girii srasnda, bir vekalet profili seilmelidir.

    Bu vekaletin geerli olaca Tasklerde, ayn vekil profilinin bulunmas gerekmektedir.

  • 66 WorkFlow Kurulum Klavuzu

    Vekillerde eksik rol olursa, Inboxlarna dse bile onay veremezler. Eksik rolleri tamamlayan aadaki Method, bir program / Job olarak kurulabilir.

  • 67 WorkFlow Kurulum Klavuzu

    METHOD set_auth_to_substitudes.

    DATA: lt_agr TYPE tt_bapiagr,

    lt_bapiret2 TYPE bapiret2_tab,

    lt_cust TYPE STANDARD TABLE OF zbct_wf_sub_role,

    lt_cust_rng TYPE tt_sub_role,

    lt_master_role TYPE tt_agr_users,

    lt_sub_role TYPE tt_agr_users,

    lt_hrus_d2 TYPE STANDARD TABLE OF hrus_d2,

    lt_t77ro TYPE STANDARD TABLE OF t77ro,

    lv_after TYPE i,

    lv_before TYPE i.

    * Verilmi vekaletleri tespit et

    SELECT * INTO TABLE lt_hrus_d2

    FROM hrus_d2

    WHERE begda LE sy-datum

    AND endda GE sy-datum

    AND active EQ abap_true.

    CHECK sy-subrc EQ 0.

    * Vekalet verenlerin ve alann var olan rollerini tespit et

    SELECT agr_name uname from_dat to_dat

    INTO CORRESPONDING FIELDS OF TABLE: lt_sub_role FROM agr_users

    FOR ALL ENTRIES IN lt_hrus_d2

    WHERE uname EQ lt_hrus_d2-rep_name,

  • 68 WorkFlow Kurulum Klavuzu

    lt_master_role FROM agr_users

    FOR ALL ENTRIES IN lt_hrus_d2

    WHERE uname EQ lt_hrus_d2-us_name

    AND from_dat LE lt_hrus_d2-endda

    AND to_dat GE lt_hrus_d2-begda.

    * Vekil profillerinin tanmlarn al

    SELECT * INTO TABLE lt_t77ro

    FROM t77ro

    WHERE EXISTS ( SELECT tclass FROM zbct_wf_sub_role WHERE tclass EQ t77ro~tclass ).

    * Uyarlamay oku

    SELECT * INTO TABLE lt_cust FROM zbct_wf_sub_role.

    IF sy-subrc NE 0.

    RAISE EXCEPTION TYPE zcx_bc_table_content

    EXPORTING

    objectid = 'ROLE'

    tabname = 'ZBCT_WF_SUB_ROLE'

    textid = zcx_bc_table_content=>entry_missing.

    ENDIF.

    lt_cust_rng = CORRESPONDING #( lt_cust ).

    SORT lt_cust_rng BY tclass.

    DELETE ADJACENT DUPLICATES FROM lt_cust_rng COMPARING tclass.

    LOOP AT lt_cust_rng ASSIGNING FIELD-SYMBOL().

    LOOP AT lt_cust ASSIGNING FIELD-SYMBOL() WHERE tclass EQ -tclass.

    APPEND VALUE #( option = -ddoption

    sign = c_sign_i

    low = -agr_name ) TO -agr_name_rng.

    ENDLOOP.

    ENDLOOP.

    * Her bir vekalet kayd iin inceleme yapp BAPI verilerini hazrla ve ar

  • 69 WorkFlow Kurulum Klavuzu

    LOOP AT lt_hrus_d2 ASSIGNING FIELD-SYMBOL().

    CLEAR lt_agr[].

    LOOP AT lt_cust_rng ASSIGNING .

    CHECK line_exists( lt_t77ro[ KEY primary_key COMPONENTS reppr = -reppr

    tclass = -tclass ] ).

    LOOP AT lt_master_role ASSIGNING FIELD-SYMBOL() WHERE agr_name IN -agr_name_rng

    AND uname EQ -us_name.

    LOOP AT lt_agr TRANSPORTING NO FIELDS WHERE agr_name EQ -agr_name

    AND from_dat LE -endda

    AND to_dat GE -begda.

    EXIT.

    ENDLOOP.

    CHECK sy-subrc NE 0.

    MESSAGE s107(zbc) WITH -us_name -rep_name -agr_name.

    co_log->add_sy_msg( ).

    APPEND VALUE #( agr_name = -agr_name

    from_dat = -begda

    to_dat = -endda ) TO lt_agr.

    ENDLOOP.

    ENDLOOP.

    CHECK lt_agr[] IS NOT INITIAL.

  • 70 WorkFlow Kurulum Klavuzu

    LOOP AT lt_sub_role ASSIGNING FIELD-SYMBOL() WHERE uname EQ -rep_name.

    APPEND VALUE #( agr_name = -agr_name

    from_dat = -from_dat

    to_dat = -to_dat ) TO lt_agr.

    ENDLOOP.

    CLEAR lt_bapiret2[].

    CALL FUNCTION 'BAPI_USER_ACTGROUPS_ASSIGN'

    EXPORTING

    username = -rep_name

    TABLES

    activitygroups = lt_agr

    return = lt_bapiret2.

    co_log->add_bapiret2( lt_bapiret2 ).

    ENDLOOP.

    ENDMETHOD.

    Hatalar ve zmler

    Genel Hatalar

    WorkFlow Tetiklenmiyor ncelikle temel WorkFlow ayarlarnn doru olduundan emin olun.

    Tm ayarlar doru olmasna ramen i ak tetiklenmiyorsa, SWUD ilem koduna gidin, yukarya tetiklenmeyen WorkFlowun kodunu girin ve Problem: Task not started dmesine tklayn.

  • 71 WorkFlow Kurulum Klavuzu

    Yeni ekranda, WorkFlowu tetikleyemeyen kiinin kullanc adn girin ve Event Queue (tRFC log) dmesine tklayn. (Bu blmdeki dier dmeler de iinize yarayabilir)

    Burada karnza gelecek olan liste, sz konusu kullancda ortaya km WorkFlow hatalarn listeleyecektir. Bu hatalar inceleyerek gerekli dzeltmeleri yapabilirsiniz.

    WorkFlowu Tekrar Balatmak Hata alm bir i aknn tekrar balatlmas, SWPR ilem kodundan yaplr.

    Hata almadan sonulanm bir i akn, ilgili Eventi tetikleyerek tekrar balatmak iin SWUE ilem kodu kullanlabilir.

    Configure RFC Destination Problemleri Temel Workflow ayarlarn yaparken, Configure RFC Destination blmnde RFC balants veya kullanc ile ilgili hatalar alyorsanz, veya tetiklenmeyen bir WorkFlowun Event Queue blmnde Incorrect Logon tarz bir ileti alyorsanz, problemin zm iin u admlar takip edin:

    SM59a giderek ilgili RFC balantsn silin SU01de (n planda kullanlan bir hesap deilse) sz konusu kullanc hesabn silin SU01de WF-BATCH adnda yeni bir hesap yaratn. Kullanc tipi C olsun (letiim kullanc

    harici RFC) SM59da RFC balantsn tekrar yaratn (balant tipi: L, Unicode: aktif), kaydedin, ve

    kaydettikten sonra tekrar iine girip yeni yarattnz WF-BATCH kullancsnn bilgilerini girin SWUDa giderek RFC Destination ayarlarn tekrar yapn

    Annda Beliren Onay Ekran Diyelim ki bir MM belgesinin arkasnda hemen WorkFlow tetikleniyor. Belgeyi yaratan kii ile onay vermesi gereken ilk kii ayn ise, belge yaratlr yaratlmaz kiinin karsna onay penceresi gelebilir.

    Bunu nlemek iin, WorkFlowun tetiklenme Eventi ile onay ekran arasna Dummy bir Background Step koyabilirsiniz.

    Bo OOCU Listesi OOCU ilem koduna girdiinizde, grevleri ve i aklarn listelemeniz gereken ekranda listeye hibir ey gelmediini gryorsanz, bu problemin sebebi yetkilendirme olabilir. OOSP / OOSB ilem kodlarna giderek, kullancnzn yeterli yetkiye sahip olduundan emin olun ve tekrar deneyin.

  • 72 WorkFlow Kurulum Klavuzu

    Hata letileri

    ... grevinin ileme tayini yok Bu hatay almanzn sebebi byk ihtimalle sz konusu Taskin General Task olmamasdr. Taski General Task haline getirin ve tekrar deneyin.

    Agents of type A cannot be defined Bu hatann alnmas, i ak admndaki muhatabn belirlenemediine iaret eder. Hatay gidermenin en basit ve genel zm, sz konusu Taski General Task haline getirmektir. Daha zel durumlarda; Taskin gnderildii kiinin, Taski ileyebilecek kiilerden biri olduundan emin olun.

    User Exit kullanyorsanz, Taski ileyebilecek herhangi birinin bulunamam olmas da bu hataya yol aabilir.

    Object Type WF Is Not Valid Bu hatay MM satnalma srecinde alyorsanz, bunun sebebi onay stratejisi uyarlamasnda retim yerlerinin girilmemi olmas olabilir.

    SWF_RUN 594 SAS WorkFlowu baladktan sonra ilgili kiinin Inboxuna hibir ey dmyorsa ve WorkFlow yneticisine bu hata iletiliyorsa, 797775 numaral OSS notunun uygulanmas gerekebilir.

    Bunun yan sra, SAS i akndaki (SWDD) onay verme admnn General Task olarak iaretlenmi olmas da gerekebilir.

    Dier Agent hatalar ki Clientl bir sistemde alyorsanz, Generic Task haline getirdiiniz Taskleri SCC1 ile test yaptnz Clienta da tamalsnz. Bunu yapmadysanz, Test Clientnda hata alabilirsiniz.

    Bir Task sistemdeki gm kullanclara gidiyorsa; sebebi muhtemelen esas Agentn belirlenemiyor olmas ve Taskin Generic Task olarak iaretlenmi olmasdr. Agentu Rule ile belirliyorsanz, Ruleun Yaratlmas bal altnda Terminate if Rule Resolution Without Result aklamasna 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 alnd