首页 > Linux操作系统 > Linux操作系统 > TC维护常用的部分代码
1 :对话框
data:w_ret(1) TYPE c.
PERFORM frm_popup_confirm USING text-m06 cos_x CHANGING w_ret.
SPAN {
font-family: "Courier New";
font-size: 10pt;
color: #000000;
background: #FFFFFF;
}
.L1S33 {
color: #4DA619;
}
.L1S52 {
color: #0000FF;
}
IF w_ret = '1'.
process 1
ELSEIF w_ret = '2'.
it_t040 = it_t040bk.
ELSE.
RETURN.
ENDIF.
SPAN {
font-family: "Courier New";
font-size: 10pt;
color: #000000;
background: #FFFFFF;
}
.L1S31 {
font-style. italic;
color: #808080;
}
.L1S32 {
color: #3399FF;
}
.L1S33 {
color: #4DA619;
}
.L1S52 {
color: #0000FF;
}
*&---------------------------------------------------------------------*
* 子程序名称 : 确认对话框
* 子程序名 : frm_popup_confirm
* 概要 : 确认对话框
* 参数 : 无
* 返回值 : 无
*----------------------------------------------------------------------*
FORM frm_popup_confirm USING fw_text TYPE c
fw_disp TYPE c
CHANGING fw_ans TYPE c.
CLEAR fw_ans.
CALL FUNCTION 'POPUP_TO_CONFIRM'
EXPORTING
titlebar = text-p01(确认对话框)
text_question = fw_text
text_button_1 = text-p02(是)
text_button_2 = text-p03(否)
display_cancel_button = fw_disp
IMPORTING
answer = fw_ans
EXCEPTIONS
text_not_found = 1
OTHERS = 2.
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. " frm_popup_confirm
2 下载内表
SPAN { font-family: "Courier New"; font-size: 10pt; color: #000000; background: #FFFFFF; } .L1S52 { color: #0000FF; } PERFORM frm_download TABLES it_t040.
SPAN {
font-family: "Courier New";
font-size: 10pt;
color: #000000;
background: #FFFFFF;
}
.L1S31 {
font-style. italic;
color: #808080;
}
.L1S32 {
color: #3399FF;
}
.L1S33 {
color: #4DA619;
}
.L1S52 {
color: #0000FF;
}
*&---------------------------------------------------------------------*
* 子程序名称 : 数据下载
* 子程序名 : frm_download
* 概要 : 数据下载
* 参数 : 无
* 返回值 : 无
*----------------------------------------------------------------------*
FORM frm_download TABLES fit_data.
DATA: lw_filename TYPE string,
lw_path TYPE string,
lw_fullpath TYPE string,
lw_filter TYPE string.
CLEAR lw_filename.
lw_filter = text-p04.
CALL METHOD cl_gui_frontend_services=>file_save_dialog
EXPORTING
default_extension = 'xls'
file_filter = lw_filter
initial_directory = 'C:\'
CHANGING
filename = lw_filename
path = lw_path
fullpath = lw_fullpath
EXCEPTIONS
cntl_error = 1
error_no_gui = 2
not_supported_by_gui = 3
OTHERS = 4.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
CHECK lw_filename IS NOT INITIAL.
CALL METHOD cl_gui_frontend_services=>gui_download
EXPORTING
filename = lw_filename
write_field_separator = cl_abap_char_utilities=>horizontal_tab
trunc_trailing_blanks = 'X'
codepage = '4110'
write_bom = 'X'
CHANGING
data_tab = fit_data[]
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
not_supported_by_gui = 22
error_no_gui = 23
OTHERS = 24
.
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. " frm_download
3 显示-->更改按钮的实现
SPAN {
font-family: "Courier New";
font-size: 10pt;
color: #000000;
background: #FFFFFF;
}
.L1S31 {
font-style. italic;
color: #808080;
}
.L1S52 {
color: #0000FF;
}
MODULE user_command_9060 INPUT.
DELETE it_t110 WHERE uname = space.
save_ok = ok_code.
CLEAR ok_code.
CASE save_ok.
WHEN cos_anlz.
* 点击显示<->变更
PERFORM frm_anlz_9060.
endcase.
SPAN {
font-family: "Courier New";
font-size: 10pt;
color: #000000;
background: #FFFFFF;
}
.L1S31 {
font-style. italic;
color: #808080;
}
.L1S33 {
color: #4DA619;
}
.L1S52 {
color: #0000FF;
}
*&---------------------------------------------------------------------*
*& Form FRM_ANLZ_9060
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM frm_anlz_9060 .
IF iw_status-mode = cos_u AND it_t110 <> it_t110bk.
* 变更模式下
PERFORM frm_popup_confirm USING text-m06 cos_x CHANGING w_ret.
IF w_ret = '1'.
PERFORM frm_save_9060.
ELSEIF w_ret = '2'.
it_t110 = it_t110bk.
ELSE.
RETURN.
ENDIF.
ENDIF.
IF iw_status-mode = cos_u.
PERFORM frm_unlock_table USING '9'.
ELSEIF iw_status-mode = cos_d.
PERFORM frm_lock_table USING '9'.
mcr_show_msg.
ENDIF.
IF iw_status-mode = cos_u.
mcr_set_status text-t06 text-l04 cos_d sy-dynnr.
ELSEIF iw_status-mode = cos_d.
mcr_set_status text-t05 text-l04 cos_u sy-dynnr.
ENDIF.
ENDFORM. " FRM_ANLZ_9060
PBO里面的两个地方设置
SPAN {
font-family: "Courier New";
font-size: 10pt;
color: #000000;
background: #FFFFFF;
}
.L1S52 {
color: #0000FF;
}
PROCESS BEFORE OUTPUT.
MODULE status_module.
MODULE initial_9060.
SPAN {
font-family: "Courier New";
font-size: 10pt;
color: #000000;
background: #FFFFFF;
}
.L1S31 {
font-style. italic;
color: #808080;
}
.L1S33 {
color: #4DA619;
}
.L1S52 {
color: #0000FF;
}
*&---------------------------------------------------------------------*
*& Module status_module OUTPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE status_module OUTPUT.
IF sy-dynnr = '9040'.
APPEND cos_load TO it_fcode.
ENDIF.
SET PF-STATUS 'STT_010' EXCLUDING it_fcode.
SET TITLEBAR 'TIT_010' WITH iw_status-actxt iw_status-title.
ENDMODULE. " status_module OUTPUT
SPAN {
font-family: "Courier New";
font-size: 10pt;
color: #000000;
background: #FFFFFF;
}
.L1S31 {
font-style. italic;
color: #808080;
}
.L1S32 {
color: #3399FF;
}
.L1S33 {
color: #4DA619;
}
.L1S52 {
color: #0000FF;
}
*&---------------------------------------------------------------------*
*& Module INITIAL_9060 OUTPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE initial_9060 OUTPUT.
IF iw_status-mode = cos_a.
mcr_set_empty_record it_t110.
ENDIF.
w_tabline = LINES( it_t110 ).
ctrl_9060-lines = w_tabline.
IF iw_status-mode = cos_d OR w_tabline = 0.
* 显示模式或没有记录的情况下,设置为只读状态
iw_col_9060-screen-input = '0'.
iw_col_9060-screen-required = '0'.
MODIFY ctrl_9060-cols FROM iw_col_9060
TRANSPORTING screen-input screen-required
WHERE screen-input = '1' OR
screen-input = '0'.
ELSE.
* 新建模式的情况下,设置为可写状态
iw_col_9060-screen-input = '1'.
MODIFY ctrl_9060-cols FROM iw_col_9060 TRANSPORTING screen-input
WHERE screen-input = '0'.
IF iw_status-mode = cos_u.
* 变更模式的情况下,公司代码(主键)列设置为只读状态
iw_col_9060-screen-input = '0'.
MODIFY ctrl_9060-cols FROM iw_col_9060 TRANSPORTING screen-input
WHERE index = 1.
ENDIF.
iw_col_9060-screen-required = '2'.
MODIFY ctrl_9060-cols FROM iw_col_9060
TRANSPORTING screen-required
WHERE index <= 1.
ENDIF.
IF w_tabline = 0.
ctrl_9060-line_sel_mode = '3'.
ELSE.
ctrl_9060-line_sel_mode = '2'.
ENDIF.
ENDMODULE. " INITIAL_9060 OUTPUT
4 on chain-input 和on input的差异
组合字段条件调用
CHAIN.
FIELD:f1,f2,…
MODULE mod1 ON CHAIN-INPUT | CHAIN-QEQUEST.
FIELD:g1,g2,…
MODULE mod2 ON CHAIN-INPUT | CHAIN-QEQUEST.
…
ENDCHAIN.
当fi之一满足条件时,mod1被调用, 当gi或fi满足条件时Mod2被调用
CHAIN.
FIELD:f1,f2.
FIELD: f3 MODULE mod1 ON INPUT.
ENDCHAIN.
只有f3包含非初始值时才调用mod1
CHAIN.
FIELD:f1,f2.
FIELD:f3 MODULE mod1 ON CHAIN-INPUT.
ENDCHAIN.
f1,f2,f3中任一字段包含非初始值時都調用mod1.
注意on input 与on chain-input的不同
5 用户ID明细表路径检查
SPAN {
font-family: "Courier New";
font-size: 10pt;
color: #000000;
background: #FFFFFF;
}
.L1S52 {
color: #0000FF;
}
PERFORM frm_filepath_chk USING p_lcl_ph
CHANGING lw_return.
SPAN {
font-family: "Courier New";
font-size: 10pt;
color: #000000;
background: #FFFFFF;
}
.L1S31 {
font-style. italic;
color: #808080;
}
.L1S32 {
color: #3399FF;
}
.L1S33 {
color: #4DA619;
}
.L1S52 {
color: #0000FF;
}
*&---------------------------------------------------------------------*
* 子程序名称 :文件路径检查
* 子程序名 :frm_filepath_chk
* 概要 :文件路径检查
* 参数1 :fw_path TYPE c
* 参数2 :fw_return TYPE c
*----------------------------------------------------------------------*
FORM frm_filepath_chk USING fw_path TYPE c
CHANGING fw_return TYPE c.
DATA: lw_filename TYPE string,
lw_drive TYPE pcfile-drive,
lw_path TYPE string,
lw_return TYPE abap_bool.
CLEAR fw_return.
lw_filename = fw_path.
CALL FUNCTION 'CH_SPLIT_FILENAME'
EXPORTING
complete_filename = lw_filename
IMPORTING
drive = lw_drive
path = lw_path
EXCEPTIONS
invalid_drive = 1
invalid_path = 2
OTHERS = 3.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
CONCATENATE lw_drive lw_path INTO lw_path SEPARATED BY ':'.
CLEAR lw_return.
CALL METHOD cl_gui_frontend_services=>directory_exist
EXPORTING
directory = lw_path
RECEIVING
result = lw_return
EXCEPTIONS
cntl_error = 1
error_no_gui = 2
wrong_parameter = 3
not_supported_by_gui = 4
OTHERS = 5.
IF sy-subrc <> 0 OR lw_return = space.
fw_return = cos_x.
ENDIF.
ENDFORM. " frm_filepath_chk
6设置status的标题
第一部分:调用屏幕前的部分
SPAN {
font-family: "Courier New";
font-size: 10pt;
color: #000000;
background: #FFFFFF;
}
.L1S31 {
font-style. italic;
color: #808080;
}
.L1S32 {
color: #3399FF;
}
.L1S33 {
color: #4DA619;
}
.L1S52 {
color: #0000FF;
}
mcr_set_status text-t05 text-l01 cos_u sy-dynnr.
mcr_get_t090 'TABNAME = ''ZZZZZT0040'''.
* 锁表处理
PERFORM frm_lock_table USING '4'.
mcr_show_msg.
CALL SCREEN 9000.
SPAN {
font-family: "Courier New";
font-size: 10pt;
color: #000000;
background: #FFFFFF;
}
.L1S31 {
font-style. italic;
color: #808080;
}
.L1S32 {
color: #3399FF;
}
.L1S52 {
color: #0000FF;
}
*----------------------------------------------------------------------*
* 宏定义
*----------------------------------------------------------------------*
DEFINE mcr_set_status.
clear iw_status.
iw_status-actxt = &1.
iw_status-title = &2.
iw_status-mode = &3.
iw_status-dynnr = &4.
refresh it_fcode.
case iw_status-mode.
when cos_a.
append cos_anlz to it_fcode.
append cos_newl to it_fcode.
append cos_load to it_fcode.
when cos_d.
append cos_newl to it_fcode.
append cos_dele to it_fcode.
when cos_u.
endcase.
END-OF-DEFINITION.
SPAN {
font-family: "Courier New";
font-size: 10pt;
color: #000000;
background: #FFFFFF;
}
.L1S32 {
color: #3399FF;
}
.L1S52 {
color: #0000FF;
}
DEFINE mcr_get_t090.
w_where = &1.
refresh: it_t090o, it_t090n.
select * from zzzzzt0090
into table it_t090o
where (w_where).
sort it_t090o by tabname ascending
tabkey ascending
fieldname ascending
datum descending
uzeit descending.
delete adjacent duplicates from it_t090o
comparing tabname tabkey fieldname.
delete it_t090o where zchgtp = cos_d.
END-OF-DEFINITION.
SPAN {
font-family: "Courier New";
font-size: 10pt;
color: #000000;
background: #FFFFFF;
}
.L1S31 {
font-style. italic;
color: #808080;
}
.L1S32 {
color: #3399FF;
}
.L1S33 {
color: #4DA619;
}
.L1S52 {
color: #0000FF;
}
FORM frm_lock_table USING fw_flg TYPE c.
CLEAR iw_return.
CASE fw_flg.
WHEN '4'.
CALL FUNCTION 'ENQUEUE_EZ_ZZZZZT0040_01'
EXPORTING
mode_zzzzzt0040 = 'E'
mandt = sy-mandt
_scope = '3'
EXCEPTIONS
foreign_lock = 1
system_failure = 2
OTHERS = 3.
ENDCASE.
iw_return-subrc = sy-subrc.
iw_return-msgid = sy-msgid.
iw_return-msgty = sy-msgty.
iw_return-msgno = sy-msgno.
iw_return-msgv1 = sy-msgv1.
iw_return-msgv2 = sy-msgv2.
iw_return-msgv3 = sy-msgv3.
iw_return-msgv4 = sy-msgv4.
ENDFORM. " frm_lock_table
SPAN {
font-family: "Courier New";
font-size: 10pt;
color: #000000;
background: #FFFFFF;
}
.L1S32 {
color: #3399FF;
}
.L1S33 {
color: #4DA619;
}
.L1S52 {
color: #0000FF;
}
DEFINE mcr_show_msg.
if iw_return-subrc <> 0.
message id sy-msgid type 'S' number sy-msgno
display like sy-msgty
with sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
return.
endif.
END-OF-DEFINITION.
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/10350860/viewspace-664379/ ,如需转载,请注明出处,否则将追究法律责任。