08-05-2009 12:03 PM
Hi,
in my program i have provided below selection option.
SELECT-OPTIONS: s_vkorg FOR zcrm_r3-vkorg NO INTERVALS OBLIGATORY .
now i want to populate values in s_vkorg on the basis of authorization. e.g. if particular user is not having authorization to company code '2000' then in s_vkorg company code '2000' should not appear at all.
Can you please help me in how to add authorization based population of selection options?
Regards,
08-05-2009 12:15 PM
Build the range, from a
SELECT * FROM TVKO.
Execute an authority check like (find an adequate object to check via transactions SU20, search VKORG or BUKRS) and SU21 on object that use those fields.)
AUTHORITY-CHECK OBJECT 'V_KNA1_VKO'
ID 'VKORG' FIELD tvko-vkorg
ID 'VTWEG' DUMMY
ID 'SPART' DUMMY
ID 'ACTVT' DUMMY.
" or/and
AUTHORITY-CHECK OBJECT 'V_AKKP_ART'
ID 'AKKTP' DUMMY
ID 'AKKRT' DUMMY
ID 'BUKRS' FIELD tvko-bukrs
ID 'ACTVT' DUMMY.
and then on authorized values build the range
s_vkorg-sign = 'I'.
s_vkorg-option = 'EQ'.
s_vkorg-low = tvko-vkorg.
APPEND s_vkorg.
Regards,
Raymond
08-05-2009 12:15 PM
Build the range, from a
SELECT * FROM TVKO.
Execute an authority check like (find an adequate object to check via transactions SU20, search VKORG or BUKRS) and SU21 on object that use those fields.)
AUTHORITY-CHECK OBJECT 'V_KNA1_VKO'
ID 'VKORG' FIELD tvko-vkorg
ID 'VTWEG' DUMMY
ID 'SPART' DUMMY
ID 'ACTVT' DUMMY.
" or/and
AUTHORITY-CHECK OBJECT 'V_AKKP_ART'
ID 'AKKTP' DUMMY
ID 'AKKRT' DUMMY
ID 'BUKRS' FIELD tvko-bukrs
ID 'ACTVT' DUMMY.
and then on authorized values build the range
s_vkorg-sign = 'I'.
s_vkorg-option = 'EQ'.
s_vkorg-low = tvko-vkorg.
APPEND s_vkorg.
Regards,
Raymond
08-05-2009 12:34 PM
i have added below code in INITIALIZATION. it is not working.
DATA : it_tvko TYPE table of tvko with header line.
SELECT * FROM tvko INTO TABLE it_tvko.
AUTHORITY-CHECK OBJECT 'ZDISBURSAL' ID 'VKORG' FIELD it_tvko-vkorg.
IF sy-subrc = 0.
s_vkorg-sign = 'I'.
s_vkorg-option = 'EQ'.
s_vkorg-low = it_tvko-vkorg.
APPEND s_vkorg.
ENDIF.
ENDSELECT.
08-05-2009 12:49 PM
It is even not syntaxically correct, try :
DATA : it_tvko TYPE TABLE OF tvko.
FIELD-SYMBOLS <tvko> TYPE LINE OF it_tvko.
* read whole table
SELECT * FROM tvko INTO TABLE it_tvko.
* Initialize
REFRESH s_vkorg.
* loop at extracted records
LOOP AT it_tvko ASSIGNING <tvko>.
* - check authorization
AUTHORITY-CHECK OBJECT 'ZDISBURSAL' " this one i cannot test
ID 'VKORG' FIELD <tvko>-vkorg.
CHECK sy-subrc EQ 0.
* - if passed, append to range
CLEAR s_vkorg.
s_vkorg-sign = 'I'.
s_vkorg-option = 'EQ'.
s_vkorg-low = <tvko>-vkorg.
APPEND s_vkorg.
ENDLOOP.
Regards,
Raymond