Hi Experts,
Sometimes we need to manage lots of SAP user according to Module, Department, License type, Logon datewise. So if we use a alv report to get the list at a glance, We have created a report for it.
report zsapuser.
type-pools: slis.
tables : usr21, adrp,adcp,adr6, usr02, usr06.
data: wa_fieldcat type slis_fieldcat_alv,
it_fieldcat type slis_t_fieldcat_alv,
wa_event type slis_alv_event,
* it_events TYPE slis_t_event,
it_alv_events type slis_t_event,
wa_header type slis_listheader,
it_header type slis_t_listheader,
wa_sort type slis_sortinfo_alv,
it_sort type slis_t_sortinfo_alv,
gd_repid like sy-repid,
layout type slis_layout_alv,
it_alv_listheader type slis_t_listheader..
data: gt_return type table of ddshretval,
gwa_return type ddshretval.
select-options:
p_user for usr21-bname,
p_dept for adcp-department,
p_funct for adcp-function,
p_lice for usr06-lic_type.
data : begin of it_user occurs 0,
bname like usr21-bname,
persnumber like usr21-persnumber,
addrnumber like usr21-addrnumber,
title like adrp-title,
name_first like adrp-name_first,
name_text like adrp-name_text,
department like adcp-department,
function like adcp-function,
building like adcp-building,
floor like adcp-floor,
tel_number like adcp-tel_number,
tel_extens like adcp-tel_extens,
fax_extens like adcp-fax_extens,
smtp_addr like adr6-smtp_addr,
trdat like usr02-trdat,
lic_type like usr06-lic_type,
end of it_user.
data: begin of t_dept occurs 0,
department like adcp-department,
end of t_dept.
data: begin of t_func occurs 0,
function like adcp-function,
end of t_func.
at selection-screen on value-request for p_dept-low.
select distinct department into table t_dept from adcp where department ne space.
call function 'F4IF_INT_TABLE_VALUE_REQUEST'
exporting
retfield = 'L'
value_org = 'S'
tables
value_tab = t_dept
return_tab = gt_return
exceptions
parameter_error = 1
no_values_found = 2
others = 3.
read table gt_return into gwa_return index 1.
if sy-subrc = 0.
p_dept-low = gwa_return-fieldval.
endif.
at selection-screen on value-request for p_funct-low.
select distinct function into table t_func from adcp where function ne space.
call function 'F4IF_INT_TABLE_VALUE_REQUEST'
exporting
retfield = 'L'
value_org = 'S'
tables
value_tab = t_func
return_tab = gt_return
exceptions
parameter_error = 1
no_values_found = 2
others = 3.
read table gt_return into gwa_return index 1.
if sy-subrc = 0.
p_funct-low = gwa_return-fieldval.
endif.
start-of-selection.
perform data_selection.
perform field_catalog.
perform data_display.
*&---------------------------------------------------------------------*
*& Form data_selection
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
form data_selection.
select usr21~bname
adrp~title adrp~name_first adrp~name_text usr02~trdat usr06~lic_type "ADRP~PERSNUMBER
adcp~department adcp~function adcp~building adcp~floor adcp~tel_number adcp~tel_extens adcp~fax_extens adr6~smtp_addr
into corresponding fields of table it_user
from usr21
inner join adrp on usr21~persnumber = adrp~persnumber
inner join adcp on usr21~persnumber = adcp~persnumber and usr21~addrnumber = adcp~addrnumber
inner join adr6 on usr21~persnumber = adr6~persnumber and usr21~addrnumber = adr6~addrnumber
inner join usr02 on usr21~bname = usr02~bname
inner join usr06 on usr21~bname = usr06~bname
where usr21~bname in p_user and adr6~flgdefault = 'X'
and usr06~lic_type in p_lice
and adcp~function in p_funct
and adcp~department in p_dept.
data : v_count type i.
describe table it_user lines v_count .
endform. "data_selection
*&---------------------------------------------------------------------*
*& Form field_catalog
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
form field_catalog.
wa_fieldcat-fieldname = 'BNAME'.
wa_fieldcat-tabname = 'IT_USER'.
wa_fieldcat-seltext_m = 'User'.
wa_fieldcat-outputlen = 10 .
append wa_fieldcat to it_fieldcat.
free wa_fieldcat.
wa_fieldcat-fieldname = 'NAME_TEXT'.
wa_fieldcat-tabname = 'IT_USER'.
wa_fieldcat-seltext_m = 'Name'.
wa_fieldcat-outputlen = 30 .
append wa_fieldcat to it_fieldcat.
free wa_fieldcat.
wa_fieldcat-fieldname = 'DEPARTMENT'.
wa_fieldcat-tabname = 'IT_USER'.
wa_fieldcat-seltext_m = 'Department'.
wa_fieldcat-outputlen = 20 .
append wa_fieldcat to it_fieldcat.
free wa_fieldcat.
wa_fieldcat-fieldname = 'FUNCTION'.
wa_fieldcat-tabname = 'IT_USER'.
wa_fieldcat-seltext_m = 'Function'.
wa_fieldcat-outputlen = 10 .
append wa_fieldcat to it_fieldcat.
free wa_fieldcat.
*wa_fieldcat-fieldname = 'BUILDING'.
*wa_fieldcat-tabname = 'IT_USER'.
*wa_fieldcat-seltext_m = 'Building'.
*wa_fieldcat-outputlen = 10 .
*APPEND wa_fieldcat TO it_fieldcat.
*FREE wa_fieldcat.
*
*wa_fieldcat-fieldname = 'FLOOR'.
*wa_fieldcat-tabname = 'IT_USER'.
*wa_fieldcat-seltext_m = 'Floor'.
*wa_fieldcat-outputlen = 10 .
*APPEND wa_fieldcat TO it_fieldcat.
*FREE wa_fieldcat.
wa_fieldcat-fieldname = 'TEL_NUMBER'.
wa_fieldcat-tabname = 'IT_USER'.
wa_fieldcat-seltext_m = 'Tel NO'.
wa_fieldcat-outputlen = 10 .
append wa_fieldcat to it_fieldcat.
free wa_fieldcat.
wa_fieldcat-fieldname = 'TEL_EXTENTS'.
wa_fieldcat-tabname = 'IT_USER'.
wa_fieldcat-seltext_m = 'Ext.'.
wa_fieldcat-outputlen = 5 .
append wa_fieldcat to it_fieldcat.
free wa_fieldcat.
wa_fieldcat-fieldname = 'SMTP_ADDR'.
wa_fieldcat-tabname = 'IT_USER'.
wa_fieldcat-seltext_m = 'E_mail'.
wa_fieldcat-outputlen = 30 .
append wa_fieldcat to it_fieldcat.
free wa_fieldcat.
wa_fieldcat-fieldname = 'FAX_EXTENS'.
wa_fieldcat-tabname = 'IT_USER'.
wa_fieldcat-seltext_m = 'Employee ID'.
wa_fieldcat-outputlen = 30 .
append wa_fieldcat to it_fieldcat.
free wa_fieldcat.
wa_fieldcat-fieldname = 'TRDAT'.
wa_fieldcat-tabname = 'IT_USER'.
wa_fieldcat-seltext_m = 'Logon Date'.
wa_fieldcat-outputlen = 30 .
append wa_fieldcat to it_fieldcat.
free wa_fieldcat.
wa_fieldcat-fieldname = 'LIC_TYPE'.
wa_fieldcat-tabname = 'IT_USER'.
wa_fieldcat-seltext_m = 'License'.
wa_fieldcat-outputlen = 30 .
append wa_fieldcat to it_fieldcat.
free wa_fieldcat.
endform. "field_catalog
*&---------------------------------------------------------------------*
*& Form data_display
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
form data_display.
gd_repid = sy-repid.
data:gs_var like disvariant.
call function 'REUSE_ALV_GRID_DISPLAY'
exporting
* I_INTERFACE_CHECK = ' '
i_bypassing_buffer = 'X'
i_buffer_active = 'X'
i_callback_program = gd_repid
* I_CALLBACK_PF_STATUS_SET = ' '
i_callback_user_command = 'USER_COMMAND'
i_callback_top_of_page = 'TOP-OF-PAGE1'
* I_CALLBACK_HTML_TOP_OF_PAGE = ' '
* I_CALLBACK_HTML_END_OF_LIST = ' '
* I_STRUCTURE_NAME =
* I_BACKGROUND_ID = ' '
* I_GRID_TITLE =
* I_GRID_SETTINGS =
* is_layout = layout
it_fieldcat = it_fieldcat
* IT_EXCLUDING =
* IT_SPECIAL_GROUPS =
it_sort = it_sort " FOR SORTING THE DATA
* IT_FILTER =
* IS_SEL_HIDE =
i_default = 'X'
i_save = 'A'
is_variant = gs_var
it_events = it_alv_events[]
* IT_EVENT_EXIT =
* IS_PRINT =
* IS_REPREP_ID =
* I_SCREEN_START_COLUMN = 0
* I_SCREEN_START_LINE = 0
* I_SCREEN_END_COLUMN = 0
* I_SCREEN_END_LINE = 0
* I_HTML_HEIGHT_TOP = 0
* I_HTML_HEIGHT_END = 0
* IT_ALV_GRAPHICS =
* IT_HYPERLINK =
* IT_ADD_FIELDCAT =
* IT_EXCEPT_QINFO =
* IR_SALV_FULLSCREEN_ADAPTER =
* IMPORTING
* E_EXIT_CAUSED_BY_CALLER =
* ES_EXIT_CAUSED_BY_USER =
tables
t_outtab = it_user
* EXCEPTIONS
* PROGRAM_ERROR = 1
* OTHERS = 2
.
refresh it_alv_listheader.
endform. "data_display
*-------------------------------------------------------------------*
* Form TOP-OF-PAGE *
*---------------------------------------------------------------
form top-of-page1.
*ALV Header declarations
data: t_header type slis_t_listheader,
wa_header type slis_listheader,
t_line like wa_header-info,
ld_lines type i,
ld_linesc(10) type c.
* Title
*wa_header-typ = 'H'.
*wa_header-info = 'Batch Confirmation'.
*append wa_header to t_header.
*clear wa_header.
* Date
wa_header-typ = 'S'.
wa_header-key = 'Date: '.
concatenate sy-datum+6(2) '.'
sy-datum+4(2) '.'
sy-datum(4) into wa_header-info. "todays date
append wa_header to t_header.
clear: wa_header.
wa_header-typ = 'S'.
wa_header-key = 'User Name'.
wa_header-info = sy-uname.
append wa_header to t_header.
clear: wa_header, t_line.
* Total No. of Records Selected
describe table it_user lines ld_lines.
ld_linesc = ld_lines.
concatenate 'Total No. of Records Selected: ' ld_linesc
into t_line separated by space.
wa_header-typ = 'A'.
wa_header-info = t_line.
append wa_header to t_header.
clear: wa_header, t_line.
wa_header-typ = 'S'.
wa_header-key = 'Page No.'.
wa_header-info = sy-pagno + 1.
append wa_header to t_header.
clear: wa_header, t_line.
call function 'REUSE_ALV_COMMENTARY_WRITE'
exporting
it_list_commentary = t_header.
* i_logo
endform. "top-of-page1
Thanks
Asad