ABAP中常用的功能函数
1.负号前置:
DATA lv_data(6) TYPE c VALUE '12345-'.
CALL FUNCTION 'CLOI_PUT_SIGN_IN_FRONT'
CHANGINGc
value = lv_data . "-12345"
2.读取长文本:
# 方式一
"定义长文本参数"
DATA: LV_ID TYPE THEAD-TDID, "id"
LV_LANGUAGE TYPE THEAD-TDSPRAS, "language"
LV_NAME TYPE THEAD-TDNAME, "name"
LV_OBJECT TYPE THEAD-TDOBJECT, "object"
LT_LINES TYPE TLINE TABLE OF WITH HEADER LINE, "长文本内容返回结果"
LV_MSG TYPE STRING.
"设置参数值"
LV_ID = ''.
LV_LANGUAGE = SY-LANGU.
LV_NAME = ''.
LV_OBJECT = ''.
"调用读取长文本函数:READ_TEXT"
CALL FUNCTION 'READ_TEXT'
EXPORTING
* CLIENT = SY-MANDT
id = LV_ID
language = LV_LANGUAGE
NAME = LV_NAME
OBJECT = LV_OBJECT
* ARCHIVE_HANDLE = 0
* LOCAL_CAT = ' '
* IMPORTING
* HEADER =
* OLD_LINE_COUNTER =
TABLES
lines = LT_LINES
EXCEPTIONS
ID = 1
LANGUAGE = 2
NAME = 3
NOT_FOUND = 4
OBJECT = 5
REFERENCE_CHECK = 6
WRONG_ACCESS_TO_ARCHIVE = 7
OTHERS = 8.
"调整长文本格式"
IF sy-subrc = 0.
LOOP AT LT_LINES.
CONCATENATE LV_MSG LT_LINES-TDLINE ';' INTO LV_MSG SEPARATED BY SPACE.
ENDLOOP.
ENDIF.
# 方式二
DATA:lv_str TYPE STRING.
"读取长文本---通过id
CALL METHOD cl_eso_extraction_tools=>extract_long_text_by_id
EXPORTING
iv_langu = sy-langu "语言
iv_text_id = 'F01' "文本标识
iv_name = '4500000151' "文本名
iv_object = 'EKKO' "文本对象
IMPORTING
ev_search_terms = lv_str.
WRITE :lv_str.
3.添加前导零
DATA lv_data TYPE aufk-aufnr.
lv_data = '10000001'.
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
EXPORTING
input = lv_data "10000001"
IMPORTING
output = lv_data. "000010000001'
# 在7.4以后的新版本可使用 lv_data = |{ lv_data = ALPHA = IN }|.添加前导零
4.去除前导零
DATA lv_data TYPE aufk-aufnr.
lv_data = '000010000001'.
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_OUTPUT'
EXPORTING
input = lv_data "000010000001"
IMPORTING
output = lv_data. "10000001'
# 在7.4以后的新版本可使用 lv_data = |{ lv_data = ALPHA = OUT }|.去除前导零
5.显示加载进度百分比效果
CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR'
EXPORTING
PERCENTAGE = 65 '显示进度百分比'
TEXT = '数据处理中。。。' . '显示文本'
6.根据结构生成ALV展示数据字段目录:
DATA gt_fieldcat TYPE lvc_t_fieldcat.
CALL FUNCTION 'LVC_FIELDCATALOG_MERGE'
EXPORTING
* I_BUFFER_ACTIVE =
I_STRUCTURE_NAME = 'ZSTRUCTURE' "结构名称"
I_CLIENT_NEVER_DISPLAY = 'X'
* I_BYPASSING_BUFFER =
* I_INTERNAL_TABNAME =
CHANGING
CT_FIELDCAT = gt_fieldcat. "ALV字段目录内表"
7.通用表锁-加锁&解锁
# 加锁
DATA lv_tabname TYPE rstable-tabname.
DATA lv_msg TYPE bapimessage.
CALL FUNCTION 'ENQUEUE_E_TABLE'
EXPORTING
MODE_RSTABLE = 'E'
TABNAME = lv_tabname
EXCEPTIONS
FOREIGN_LOCK = 1
SYSTEM_FAILURE = 2
OTHERS = 3.
IF sy-subrc <> 0.
CONCATENATE '用户' sy-uname '当前正在操作该表!' INTO lv_msg.
MESSAGE lv_msg TYPE 'E'.
ENDIF.
# 解锁
DATA lv_tabname TYPE rstable-tabname.
CALL FUNCTION 'DEQUEUE_E_TABLE'
EXPORTING
mode_rstable = 'E'
tabname = lv_tabname.
8.UUID32位生成器
DATA lv_id TYPE sysuuid_c.
CALL FUNCTION 'ICF_CREATE_GUID'
IMPORTING
id = lv_id. "C0A802DF9AA1606BF06B2B7E00000000"
9.动态设置ALV报表标题
DATA gv_title TYPE sytitle.
CALL FUNCTION 'RECA_GUI_SET_TITLEBAR'
EXPORTING
id_text1 = gv_title. "一般只需要一个参数,如果长度不够,则用下面的额参数进行拼接"
* id_text2 = gv_title
* id_text3 = gv_title
* id_text4 = gv_title.
10.不同物料单位数量比例转换
DATA:
i_matnr LIKE mara-matnr,
i_in_me LIKE mara-meins,
i_out_me LIKE mara-meins,
i_menge LIKE ekpo-menge,
e_menge LIKE ekpo-menge.
CALL FUNCTION 'MD_CONVERT_MATERIAL_UNIT'
EXPORTING
i_matnr = i_matnr "物料"
i_in_me = i_in_me "基本单位"
i_out_me = i_out_me "待转换单位"
i_menge = i_menge "待转换数量"
IMPORTING
e_menge = e_menge "转换后数量"
EXCEPTIONS
error_in_application = 1
error = 2
OTHERS = 3.
11.数字四舍五入转换
CALL FUNCTION 'ROUND'
EXPORTING
decimals = 2 " 保留多少位小数
input = lr_dat
sign = '+' " + 向上取舍 - 向下取舍 (负数也一样)
IMPORTING
output = lr_dat " 输出返回结果
EXCEPTIONS
input_invalid = 1
overflow = 2
type_invalid = 3
OTHERS = 4.
12.BAPI返回消息转换
DATA lv_msg TYPE string.
LOOP AT lt_bapiret2 INTO DATA(ls_return) WHERE type CO 'AEX' .
CALL FUNCTION 'MESSAGE_TEXT_BUILD'
EXPORTING
msgid = ls_return-id
msgnr = ls_return-number
msgv1 = ls_return-message_v1
msgv2 = ls_return-message_v2
msgv3 = ls_return-message_v3
msgv4 = ls_return-message_v4
IMPORTING
message_text_output = lv_msg.
CONCATENATE message lv_msg INTO message SEPARATED BY ';'.
ENDLOOP.
13.调用表维护视图
CALL FUNCTION 'VIEW_MAINTENANCE_CALL'
EXPORTING
action = 'U' "操作模式:S-显示;U-更新;T-传输"
view_name = 'ZMMT001' "视图/表名"
EXCEPTIONS
client_reference = 1
foreign_lock = 2
invalid_action = 3
no_clientindependent_auth = 4
no_database_function = 5
no_editor_function = 6
no_show_auth = 7
no_tvdir_entry = 8
no_upd_auth = 9
only_show_allowed = 10
system_failure = 11
unknown_field_in_dba_sellist = 12
view_not_found = 13
maintenance_prohibited = 14
OTHERS = 15.
IF sy-subrc <> 0.
* Implement suitable error handling here
ENDIF.
14.重置系统运行时间
LOOP AT itab .
lv_time = SY-TABIX MOD 10000.
IF lv_time EQ 0.
CALL FUNCTION 'TH_REDISPATCH'.
ENDIF.
......
ENDLOOP.
觉得博主的文章对你有帮助的,动动鼠标一键三连,激励博主写出更多精彩文章!