Professional Documents
Culture Documents
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
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
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:
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.
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
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
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
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
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.
*
*
*
*
*
*
*
*
*
*
*
14
Event
tetiklemek
iin
kullanlabilecek
parametrik
bir
rnek
kod:
method event_create.
*PFD_I_EVENT TYPE SWO_EVENT Event ismi
*PFD_I_CLSNAME TYPE SEOCLSNAME
*PIT_I_PARAMETRE
Snf Ad
Commit work
*CX_SWF_EVT_INVALID_OBJTYPE
*CX_SWF_EVT_INVALID_EVENT
Error in Event
15
16
pfd_i_clsname = 'ZIMCL_YATIRIM_TALEBI'
pit_i_parametre = lit_parametre
pfd_i_commit = space ).
Manuel
ak
ilikili
bir
Eventi
manuel
tetiklemek
iin,
SWUE
ilem
kodunu
kullanabilirsiniz.
17
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
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
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
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
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:
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
Taskin
detaylar
yle
olmal:
23
24
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
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
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
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 <cntain>.
Sistemde
temel
alnabilecek
birok
fonksiyon
vardr.
nemli
olan,
fonksiyonun
ACTOR_TAB
ve
AC_CONTAINER
parametrelerine
sahip
olmasdr.
28
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
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
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.
Eer fonksiyondan Containere deer dn olsayd, onu da ayn pencerenin alt tarafnda tanmlayacaktk
31
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
Binding
sonucunda,
deikenlerin
ak
sras
u
ekilde
olur:
33
WorkFlow
Container
Task
Task
Method
Method
Function
34
Buradaki
GC_TASK
deeri,
yaratm
olduunuz
WorkFlowun
IDsi
olmaldr.
35
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
Bu
ekranda,
Otomatik
letim
sekmesinde
Create
dmesine
tklyoruz.
37
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.
Yapm olduumuz bu ayar, SO36 ekrannda birok kullanc iin toplu olarak yaplabilir.
38
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
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
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
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
* <-- 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.
*
*
*
*
*
ENDFORM.
" detect_msg
Java
zm
Netweaver
yok
ise,
darda
yazlacak
bir
Java
program
belli
zaman
aralklarnda
bu
tabloyu
okuyarak
birikmi
mesajlar
E-Posta
olarak
gnderecektir.
E-Posta
iletilerinde,
Java
ile
yazlacak
bir
Web
sayfasna
verilmi
balant
olacaktr.
Aada
bu
ii
(Javaya
ynelik
olarak)
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.
END-OF-SELECTION.
43
*&---------------------------------------------------------------------*
*&
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
* <-- 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
44
*
*
*
*
*
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.
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
45
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
clear ls_vekil.
47
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.
48
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.
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
49
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
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
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
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
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
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
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
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
Dikkat
ederseniz,
ortada
hi
onay
olmad
iin
RELEASE_ALREADY_POSTED
tablosu
botur.
RELEASE_FINAL
tablosunda
ise,
olmas
gereken
onaylar
grebilirsiniz:
58
Ksmen
onaylanm
bir
SAT
kalemi
iin;
fonksiyon,
aadaki
ekilde
veri
dndrecektir:
59
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
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
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
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.
63
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
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
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
Vekillerde
eksik
rol
olursa,
Inboxlarna
dse
bile
onay
veremezler.
Eksik
rolleri
tamamlayan
aadaki
Method,
bir
program
/
Job
olarak
kurulabilir.
67
METHOD
set_auth_to_substitudes.
DATA: lt_agr
TYPE tt_bapiagr,
lt_bapiret2
TYPE bapiret2_tab,
lt_cust
lt_cust_rng
TYPE tt_sub_role,
lt_sub_role
TYPE tt_agr_users,
lt_hrus_d2
lt_t77ro
lv_after
TYPE i,
lv_before
TYPE i.
LE sy-datum
AND endda
GE sy-datum
CHECK sy-subrc EQ 0.
68
EQ lt_hrus_d2-us_name
GE lt_hrus_d2-begda.
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.
= c_sign_i
low
= <ls_cust>-agr_name ) TO <ls_cust_rng>-agr_name_rng.
ENDLOOP.
ENDLOOP.
Her bir vekalet kayd iin inceleme yapp BAPI verilerini hazrla ve ar
69
CLEAR lt_agr[].
= <ls_hrus_d2>-reppr
tclass = <ls_cust_rng>-tclass
] ).
EQ
<ls_hrus_d2>-us_name.
GE <ls_hrus_d2>-begda.
EXIT.
ENDLOOP.
CHECK sy-subrc NE 0.
= <ls_hrus_d2>-endda ) TO lt_agr.
ENDLOOP.
ENDLOOP.
70
= <ls_sub_role>-to_dat ) TO lt_agr.
ENDLOOP.
CLEAR lt_bapiret2[].
= <ls_hrus_d2>-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
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
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