*&---------------------------------------------------------------------*
*& Report Z_ROLE_CHANGE_LIST
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*
report Z_ROLE_CHANGE_LIST.
***============ Definition 定义 ============***
tables AGR_DEFINE.
tables AGR_TEXTS.
data: number type I.
data:begin of ROLELIST occurs 0,
MANDT like AGR_DEFINE-MANDT,
AGR_NAME like AGR_DEFINE-AGR_NAME,
TEXT like AGR_TEXTS-TEXT,
CREATE_USR like AGR_DEFINE-CREATE_USR,
CREATE_DAT like AGR_DEFINE-CREATE_DAT,
CHANGE_USR like AGR_DEFINE-CHANGE_USR,
CHANGE_DAT like AGR_DEFINE-CHANGE_DAT,
spras like AGR_texts-spras,
LINE like AGR_texts-LINE,
end of ROLELIST.
***============ Selection Screen 屏幕 ============***
select-options S_CH_DAT for AGR_DEFINE-CHANGE_DAT .
***============ Event Block 事件 ============***
initialization. "初始化触发事件
at selection-screen. "按下回车键屏幕检查事件
perform. READ_DATA.
start-of-selection. "按下执行按钮后触发事件
set pf-status 'Z_ROLE_CHANGE_LIST'.
perform. OUTPUT_DATA.
at line-selection. "单/双击行事件
at user-command. "功能按钮触发事件
perform. DATA_DOWNLOAD using SY-UCOMM.
top-of-page during line-selection. "第二个屏幕处理事件,页头
***============ Logic Process 程序处理 ============***
*&---------------------------------------------------------------------*
*& Form read_data
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
form. READ_DATA.
select A~MANDT A~AGR_NAME A~CREATE_USR A~CREATE_DAT A~CHANGE_USR A~CHANGE_DAT B~TEXT B~SPRAS B~LINE
into corresponding fields of table ROLELIST
from AGR_DEFINE as A
inner join AGR_TEXTS as B
on A~AGR_NAME = B~AGR_NAME
where A~CHANGE_DAT in S_CH_DAT
AND B~SPRAS = 1
AND B~LINE = 00000.
endform. "read_data
*&---------------------------------------------------------------------*
*& Form output_data
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
form. OUTPUT_DATA.
* skip. "换行
number = 0.
* write: / TEXT-001,8 TEXT-002,32 TEXT-003,75 TEXT-004,83 TEXT-005,97 TEXT-006,105 TEXT-007.
write: / '集团',8 '角色名',32 '备注',75 '创建人',83 '创建时间',97 '修改人',105 '修改时间'.
uline. "输出直线
loop at ROLELIST.
write: / ROLELIST-MANDT,8 ROLELIST-AGR_NAME,32 ROLELIST-TEXT,75 ROLELIST-CREATE_USR,83 ROLELIST-CREATE_DAT,97 ROLELIST-CHANGE_USR,105 ROLELIST-CHANGE_DAT.
number = number + 1.
endloop.
uline.
write: /10 '创建者:', 30 SY-UNAME , 75 '共: ' , 80 number ,'条'.
write: /10 '日 期: ', 30 SY-DATUM.
write: /10 '时 间: ', 30 SY-UZEIT.
uline.
endform. "output_data
*&---------------------------------------------------------------------*
*& Form INFORMATION
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
form. PP tables PITAB.
data:PFILE type STRING.
call function 'WS_FILENAME_GET'
exporting
DEF_FILENAME = 'ROLELIST.xls '
DEF_PATH = 'd:\ '
* MASK = ' '
MODE = 'S '
TITLE = 'SAVE FILE '
importing
FILENAME = PFILE
* RC =
exceptions
INV_WINSYS = 1
NO_BATCH = 2
SELECTION_CANCEL = 3
SELECTION_ERROR = 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.
exit.
endif.
call function 'GUI_DOWNLOAD'
exporting
* BIN_FILESIZE =
FILENAME = PFILE
FILETYPE = 'DAT'
* APPEND = ' '
* WRITE_FIELD_SEPARATOR = ' '
* HEADER = '00'
* TRUNC_TRAILING_BLANKS = ' '
* WRITE_LF = 'X'
* COL_SELECT = ' '
* COL_SELECT_MASK = ' '
* DAT_MODE = ' '
* CONFIRM_OVERWRITE = ' '
* NO_AUTH_CHECK = ' '
* CODEPAGE = ' '
* IGNORE_CERR = ABAP_TRUE
* REPLACEMENT = '#'
* WRITE_BOM = ' '
* TRUNC_TRAILING_BLANKS_EOL = 'X'
* WK1_N_FORMAT = ' '
* WK1_N_SIZE = ' '
* WK1_T_FORMAT = ' '
* WK1_T_SIZE = ' '
* WRITE_LF_AFTER_LAST_LINE = ABAP_TRUE
* SHOW_TRANSFER_STATUS = ABAP_TRUE
* IMPORTING
* FILELENGTH =
tables
DATA_TAB = PITAB
* FIELDNAMES =
* EXCEPTIONS
* FILE_WRITE_ERROR = 1
* NO_BATCH = 2
* GUI_REFUSE_FILETRANSFER = 3
* INVALID_TYPE = 4
* NO_AUTHORITY = 5
* UNKNOWN_ERROR = 6
* HEADER_NOT_ALLOWED = 7
* SEPARATOR_NOT_ALLOWED = 8
* FILESIZE_NOT_ALLOWED = 9
* HEADER_TOO_LONG = 10
* DP_ERROR_CREATE = 11
* DP_ERROR_SEND = 12
* DP_ERROR_WRITE = 13
* UNKNOWN_DP_ERROR = 14
* ACCESS_DENIED = 15
* DP_OUT_OF_MEMORY = 16
* DISK_FULL = 17
* DP_TIMEOUT = 18
* FILE_NOT_FOUND = 19
* DATAPROVIDER_EXCEPTION = 20
* CONTROL_FLUSH_ERROR = 21
* OTHERS = 22
.
if SY-SUBRC <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
endif.
endform. " INFORMATION
*&---------------------------------------------------------------------*
*& Form DATA_DOWNLOAD
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_SY_UCOMM text
*----------------------------------------------------------------------*
form. DATA_DOWNLOAD using P_SY_UCOMM.
case P_SY_UCOMM.
when 'ALL'.
* PERFORM information TABLES ITAB.
when 'exit'.
* PERFORM information TABLES ITAB.
when 'SAVE'.
perform. PP tables ROLELIST.
endcase.
endform. " DATA_DOWNLOAD
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/11966239/viewspace-607019/ ,如需转载,请注明出处,否则将追究法律责任。