ABAP 常用函数

ABAP_DOCU_DOWNLOAD – HTML格式下载ABAP文档

ARFC_GET_TID – 以十六进制形式返回终端的IP地址

BAL_* -容纳了SAP的应用程序日志所有的函数模块

BP_EVENT_RAISE  ABAP/4 程序中触发一个事件。

BP_JOBLOG_READ 获得job log的执行结果。


CLOI_PUT_SIGN_IN_FRONT – 将负号前置, SAP默认将负号放在数字后面。

CLPB_EXPORT 从内表导入到剪贴板。

CLPB_IMPORT – 从剪贴板导入内表。

COMMIT_TEXT -To load long text into SAP 

CONVERSION_EXIT_ALPHA_INPUT - 数字串前补0

example:

input = 123

output = 0000000000000。。。000000000000123

CONVERSION_EXIT_ALPHA_OUTPUT – 消除数字串前的0

example:

input = 00000000000123

output = 123

CONVERT_OTF – SAP文档(SAP Script)转换成其他类型

example:

CALL FUNCTION 'CONVERT_OTF'

EXPORTING

FORMAT = 'PDF'

IMPORTING

BIN_FILESIZE = FILE_LEN

TABLES

OTF = OTFDATA

LINES = PDFDATA

EXCEPTIONS

ERR_MAX_LINEWIDTH = 1

ERR_FORMAT = 2

ERR_CONV_NOT_POSSIBLE = 3

OTHERS = 4

DATE_GET_WEEK – 返回一个日期所在的周数

DATE_CHECK_PLAUSIBILITY – 检查一个日期是否是SAP的有效格式。

DYNP_VALUES_READ – 读取SCREEN字段的值,也可以用来读取报表SELECTION SCREEN

DYNP_VALUES_UPDATE -更新屏幕字段的值

ENQUE_SLEEP 在继续处理之前等待一个指定的时间

ENQUEUE_ESFUNCTION – 锁定一个ABAP程序使它不可以被执行:

RELID = 'ZZ'
SRTF2 = 0
SRTF = (your report name)

注意不要用SY-REPID来传递你的报表名字,当把SY-REPID作为参数传递给函数模块的时候,SY-REPID的值实际上已经发生了变化。

EPS_GET_FILE_ATTRIBUTES – 获得文件属性。

EPS_GET_DIRECTORY_LISTING  返回一个本地或网络目录的文件列表。

F4_DATE - 弹出一个窗口显示一个日历允许用户选择一个日期

F4IF_SHLP_EXIT_EXAMPLE – F4接口模块。

FILENAME_GET  弹出一个文件选择对话框。

FTP_CONNECT – 打开并登陆FTP服务器的连接。

FTP_COMMAND – FTP服务器上执行一个命令。

FTP_DISCONNECT 关闭指向FTP服务器的连接。

FORMAT_MESSAGE - Takes a message id and number, and puts it into a variable Works better than WRITE_MESSAGE, since some messages use $ as a place holder, and WRITE_MESSAGE does not accommodate that, it only replaces the ampersands (&) in the message

GET_GLOBAL_SYMBOLS – 返回一个程序的tables, select options, texts, etc 甚至包含selection screen的文本定义。

GET_INCLUDETAB – 获得一个程序的INCLUDES列表。

GUI_CREATE_DIRECTORY 在显示服务器端创建一个目录 

GUI_DELETE_FILE – 在显示服务器端删除一个文件 

GUI_DOWNLOAD – 从应用服务器下载内表到显示服务器。

GUI_EXEC – 调用一个文件或程序,取代了WS_EXECUTE

GUI_GET_DESKTOP_INFO – 获得客户端桌面信息,取代了WS_QUERY

GUI_REMOVE_DIRECTORY – 从显示服务器删除一个目录 

GUI_RUN – 启动一个文件或程序 

GUI_UPLOAD – 从显示服务器上传文件到应用服务器,取代了WS_UPLOAD

HELP_START – 为一个字段显示帮助 Useful for doing AT SELECTION SCREEN ON VALUE REQUEST for those fields that do not provide F4 help at the DDIC level

HOLIDAY_GET – 基于Factory Calendar&/ Holiday Calendar提供了一个节日表

INIT_TEXT 上传长文本到SAP

K_WERKS_OF_BUKRS_FIND – 返回一个特定公司代码的所有工厂

LIST_TO_ASCII ABAP报表从 OTF形式转换成ASCII 形式。

LIST_FROM_MEMORY  Retrieves the output of a report from memory when the report was executed using SUBMIT。。。EXPORTING LIST TO MEMORY See also WRITE_LIST

MONTH_NAMES_GET  获得所有的月和名字

MS_EXCEL_OLE_STANDARD_OLE  创建一个文件并自动启动Excel 

CONVERT_OTFSPOOLJOB_2_PDF - converts a OTF spool to PDF (ie Sap script document)

CONVERT_ABAPSPOOLJOB_2_PDF -convert ABAP spool output to PDF

POPUP_TO_CONFIRM_LOSS_OF_DATA  弹出一个对话框告知用户有可能丢失数据,询问是否操作继续。

POPUP_TO_CONFIRM_STEP -弹出一个对话框询问用户是否操作继续

POPUP_TO_CONFIRM_WITH_MESSAGE

POPUP_TO_CONFIRM_WITH_VALUE

POPUP_TO_DECIDE

POPUP_TO_DECIDE_WITH_MESSAGE

POPUP_TO_DISPLAY_TEXT

POPUP_TO_SELECT_MONTH 弹出一个对话框供选择月。

POPUP_WITH_TABLE_DISPLAY -Provide a display of a table for user to select one, with the value of the table line returned when selected

PRICING – 获得定价条件

PROFILE_GET - INI文件读取一条记录

PROFILE_SET – INI文件写一条记录


 

READ_TEXT  上传长文本

REGISTRY_GET – 从注册表读取一条记录

REGISTRY_SET  在注册表里设置一条记录

RFC_ABAP_INSTALL_AND_RUN – MODE参数值为‘F’时运行PROGRAM表中的程序'.

RH_GET_ACTIVE_WF_PLVAR – 获得激活的HR计划

RH_START_EXCEL_WITH_DATA  启动Excel并用内表给文件赋值

RH_STRUC_GET 返回所有相关的组织信息

RP_CALC_DATE_IN_INTERVAL – 年月日加减

RP_LAST_DAY_OF_MONTHS  获得一个月的最后一天

RPY_DYNPRO_READ – 读取屏幕

RPY_TRANSACTION_READ – 给定一个事务代码,获得其程序和屏幕;或给定一个程序和屏幕获得事务代码

RS_COVERPAGE_SELECTIONS – 获得一个报表的选择参数列表。

RS_REFRESH_FROM_SELECTOPTIONS 获得当前选择屏幕的内容

RS_SEND_MAIL_FOR_SPOOLLIST  在程序中给SAP office 发送消息

RS_VARIANT_CONTENTS  获得一个变式的内容

RZL_SLEEP  将当前程序挂起

RZL_SUBMIT  提交一个远程报表

RZL_READ_DIR_LOCAL  读取应用服务器的目录

RZL_READ_DIR – 如果服务器名字左部为空,从本地读取目录,否则读取远程服务器的目录

RZL_READ_FILE – 如果为给定服务器名字则读取本地文件,否则读取远程服务器文件。

RZL_WRITE_FILE_LOCAL - 将内表保存到显示服务器(not PC). 不使用OPEN DATASET因此避免了授权检查。

SAPGUI_PROGRESS_INDICATOR – 显示一个进度条

SAVE_TEXT  上传长文本

SCROLLING_IN_TABLE 当编写模块池的时候可以用它来处理滚动

SD_DATETIME_DIFFERENCE – 日期作差

SO_NEW_DOCUMENT_ATT_SEND_API1 - 将文档作为邮件的一部分发送

SO_SPLIT_FILE_AND_PATH  将一个包含路径的全文件名分割为文件名和路径

SO_SPOOL_READ  根据SPOOL号获得printer spool

SO_WIND_SPOOL_LIST  根据用户浏览printer spool

SX_OBJECT_CONVERT_OTF_PDF – OTF转换为PDF (SAP 脚本转换)

SX_OBJECT_CONVERT_OTF_PRT – OTF转换为打印机格式(SAP 脚本转换)

SX_OBJECT_CONVERT_OTF_RAW  OTF转换为ASCII(SAP 脚本转换)

SXPG_CALL_SYSTEM 检查用户是否有执行某个命令的权限

SXPG_COMMAND_LIST_GET – 获得一个包含所有定义的外部OS命令的列表.

SXPG_COMMAND_DEFINITION_GET – R/3系统数据库读取单个外部OS命令的定义

SXPG_COMMAND_CHECK - 检查用户是否有执行某个命令的权限

SXPG_COMMAND_EXECUTE -检查用户是否有执行某个命令的权限,拥有授权则执行命令

TERMINAL_ID_GET 返回终端ID

TH_DELETE_USER – 剔除一个用户,效果同SM04

TH_ENVIRONMENT – 获得UNIX环境

TH_POPUP 在特定用户屏幕上显示一个系统消息

TH_REMOTE_TRANSACTION – 在远程服务器上运行事务代码

TH_USER_INFO – 获得当前用户的信息 (会话,登陆的工作台等)

TH_USER_LIST 显示登陆到应用服务器的用户列表

UNIT_CONVERSION_SIMPLE 衡量单位转换

UPLOAD 上传文件到显示服务器

UPLOAD_FILES – 上传一个或多个文件

WRITE_LIST 显示一个列表对象

WS_DOWNLOAD 将内表下载到显示服务器

WS_EXCEL 启动EXCEL

WS_EXECUTE 执行一个程序

WS_FILE_DELETE  删除一个文件

WS_FILENAME_GET 调用文件选择对话框

WS_MSG 显示一个对话框显示在线消息

WS_UPLOAD – 从显示服务器上传文件到内表

WS_VOLUME_GET 获得终端设备标签

WWW_LIST_TO_HTML  运行一个报表之后,调用这个方法将列表输出转换成HTML

SD_VBAP_READ_WITH_VBELN 根据销售订单读取表vbap中的信息

EDIT_LINES READ_TEXT返回的LINES中的行按照TDFORMAT=*”重新组织VIEW_MAINTENANCE_CALL 维护表视图

DY_GET_FOCUS 获得屏幕焦点 DY_GET_SET_FIELD_VALUE 获得或者设置屏幕字段的值 F4IF_INT_TABLE_VALUE_REQUEST 显示检索help

CONVERSION_EXIT_CUNIT_OUTPUT 单位转换

SJIS_DBC_TO_SBC 全角转半角

SJIS_SBC_TO_DBC 半角转换为全角CO_R0_CHECK_DECIMAL_POINT 根据单位检查数据的小数位POSTAL_CODE_CHECK 检查邮政编码GET_JOB_RUNTIME_INFO 获得job相关信息TERMINAL_ID_GET 获得终端idDATE_CONVERT_TO_FACTORYDATE 把输入日期转为工厂日历日期MESSAGE_TEXT_BUILD 把消息转为文本 CONVERT_TO_LOCAL_CURRENCY 按照指定日期汇率转换金额为指定货币类型SSF_FUNCTION_MODULE_NAME 根据form名取得对应的函数名(SmartFormDATE_CHECK_PLAUSIBILITY 日期CHECKcl_gui_frontend_services=>gui_upload 上传到服务器cl_gui_frontend_services=>gui_download 下载到本地SSF_FUNCTION_MODULE_NAME SMARTFORMS输出报表时,生成一个函数名称,然后CALL这个名称

ABAP中,常用函数分为**字符串处理**、**日期时间处理**、**数学计算**、**内表操作**、**类型转换**和**系统信息获取**等类别。以下是详细分类及示例: --- ## **1. 字符串处理函数** ### **1.1 `CONCATENATE_TEXT`(字符串拼接)** - **功能**:将多个字符串拼接成一个(支持分隔符)。 - **替代方案**:直接使用 `CONCATENATE` 语句或 `&&` 运算符。 ```abap DATA(lv_result) = |{ 'Hello' } { 'World' }|. " ABAP 7.4+ 模板字符串 ``` ### **1.2 `SUBSTRING`(截取子串)** - **功能**:从字符串中提取指定位置的子串。 ```abap DATA(lv_text) = 'ABAP Programming'. DATA(lv_sub) = lv_text+6(11). " 从第6位开始取11个字符 WRITE: / lv_sub. " 输出: Programming ``` ### **1.3 `STRLEN`(获取字符串长度)** ```abap DATA(lv_len) = strlen( 'ABAP' ). " 返回4 ``` ### **1.4 `TO_UPPER` / `TO_LOWER`(大小写转换)** ```abap DATA(lv_upper) = to_upper( 'abap' ). " 返回'ABAP' DATA(lv_lower) = to_lower( 'ABAP' ). " 返回'abap' ``` ### **1.5 `REPLACE`(字符串替换)** ```abap DATA(lv_text) = 'ABAP is great'. REPLACE 'great' WITH 'awesome' IN lv_text. WRITE: / lv_text. " 输出: ABAP is awesome ``` --- ## **2. 日期时间处理函数** ### **2.1 `SY-DATUM` / `SY-UZEIT`(系统日期时间)** - **功能**:获取当前系统日期和时间。 ```abap WRITE: / 'Today is:', sy-datum, 'Time:', sy-uzeit. ``` ### **2.2 `CONVERT_DATE_TO_INTERNAL` / `CONVERT_DATE_TO_EXTERNAL`** - **功能**:在内部格式(YYYYMMDD)和外部格式(DD.MM.YYYY)间转换。 ```abap DATA(lv_ext_date) = '25.12.2023'. DATA(lv_int_date) TYPE d. CONVERT DATE lv_ext_date INTO INTERNAL DATE lv_int_date. WRITE: / lv_int_date. " 输出: 20231225 ``` ### **2.3 `CL_ABAP_TSTMP`(时间戳操作)** - **功能**:处理高精度时间戳(如UTC时间)。 ```abap DATA(lo_tstmp) = cl_abap_tstmp=>utc_now( ). WRITE: / lo_tstmp->get_time( ). ``` ### **2.4 `ADD_DAYS` / `SUBTRACT_DAYS`(日期加减)** ```abap DATA(lv_date) = sy-datum. ADD 7 DAYS TO lv_date. " 加7天 WRITE: / 'Next week:', lv_date. ``` --- ## **3. 数学计算函数** ### **3.1 `ABS`(绝对值)** ```abap DATA(lv_abs) = abs( -10 ). " 返回10 ``` ### **3.2 `ROUND` / `TRUNC`(四舍五入/截断)** ```abap DATA(lv_round) = round( 3.14159, 2 ). " 返回3.14 DATA(lv_trunc) = trunc( 3.14159, 1 ). " 返回3.1 ``` ### **3.3 `SQRT` / `POW`(平方根/幂运算)** ```abap DATA(lv_sqrt) = sqrt( 16 ). " 返回4 DATA(lv_pow) = pow( 2, 3 ). " 返回8(2^3) ``` ### **3.4 `NUMCHECK`(数字格式校验)** ```abap IF numcheck( '123.45' ) = 0. WRITE: / 'Valid number'. ELSE. WRITE: / 'Invalid number'. ENDIF. ``` --- ## **4. 内表操作函数** ### **4.1 `LINES`(获取内表行数)** ```abap DATA: gt_data TYPE TABLE OF string. gt_data = VALUE #( ('A') ('B') ('C') ). WRITE: / 'Table has', lines( gt_data ), 'rows'. " 输出3 ``` ### **4.2 `LINE_EXISTS`(检查行是否存在)** ```abap READ TABLE gt_data WITH KEY table_line = 'B' TRANSPORTING NO FIELDS. IF sy-subrc = 0. WRITE: / 'Row exists'. ENDIF. ``` ### **4.3 `SORT`(内表排序)** ```abap SORT gt_data BY table_line DESCENDING. " 降序排序 ``` ### **4.4 `DELETE_ADJACENT_DUPLICATES`(去重)** ```abap gt_data = VALUE #( ('A') ('A') ('B') ). DELETE ADJACENT DUPLICATES FROM gt_data COMPARING table_line. " 结果: ('A'), ('B') ``` --- ## **5. 类型转换函数** ### **5.1 `CONVERT_STRING_TO_NUMBER`(字符串转数字)** ```abap DATA(lv_num) TYPE i. CONVERT STRING '123' TO NUMBER lv_num. WRITE: / lv_num. " 输出123 ``` ### **5.2 `MOVE_CORRESPONDING`(结构字段映射)** ```abap TYPES: BEGIN OF ty_source, id TYPE i, name TYPE string, END OF ty_source, BEGIN OF ty_target, id TYPE i, desc TYPE string, END OF ty_target. DATA: ls_source TYPE ty_source, ls_target TYPE ty_target. ls_source-id = 1. ls_source-name = 'Test'. MOVE-CORRESPONDING ls_source TO ls_target. " 仅复制同名字段 ``` ### **5.3 `CASTING`(类型强制转换)** ```abap DATA(lv_text) = '42'. DATA(lv_num) = CAST i( lv_text ). " 需确保字符串可转换 ``` --- ## **6. 系统信息函数** ### **6.1 `SY-UNAME`(当前用户名)** ```abap WRITE: / 'Current user:', sy-uname. ``` ### **6.2 `SY-SYSID`(系统ID)** ```abap WRITE: / 'System ID:', sy-sysid. ``` ### **6.3 `CL_GUI_FRONTEND_SERVICES`(前端服务)** - **功能**:获取客户端信息(如屏幕分辨率)。 ```abap DATA: lv_width TYPE i, lv_height TYPE i. cl_gui_frontend_services=>get_screen_size( EXPORTING display_type = cl_gui_frontend_services=>display_type_main IMPORTING width = lv_width height = lv_height ). ``` --- ## **7. 实用工具函数** ### **7.1 `CL_ABAP_RANDOM`(随机数生成)** ```abap DATA(lo_rand) = cl_abap_random=>create( seed = sy-uzeit ). DATA(lv_rand) = lo_rand->intin_range( low = 1 high = 100 ). WRITE: / 'Random number:', lv_rand. ``` ### **7.2 `CL_ABAP_EXCEPTION`(异常处理)** ```abap TRY. DATA(lv_div) = 1 / 0. " 触发除零异常 CATCH cx_sy_zerodivide INTO DATA(lx_error). WRITE: / 'Error:', lx_error->get_text( ). ENDTRY. ``` ### **7.3 `CL_ABAP_CONV_IN_CE`(编码转换)** ```abap DATA(lv_utf8) = cl_abap_conv_in_ce=>create( encoding = 'UTF-8' )->convert( '中文' ). ``` --- ## **8. 完整示例** ```abap REPORT z_abap_functions_demo. " 字符串处理 DATA(lv_name) = 'John'. DATA(lv_greeting) = |Hello, { to_upper( lv_name ) }!|. WRITE: / lv_greeting. " 输出: Hello, JOHN! " 日期计算 DATA(lv_today) = sy-datum. ADD 30 DAYS TO lv_today. WRITE: / '30 days later:', lv_today. " 数学计算 DATA(lv_pi) = round( 3.1415926, 3 ). WRITE: / 'PI:', lv_pi. " 输出: 3.142 " 内表操作 TYPES: BEGIN OF ty_employee, id TYPE i, name TYPE string, END OF ty_employee. DATA: gt_employees TYPE TABLE OF ty_employee, gs_employee TYPE ty_employee. gt_employees = VALUE #( ( id = 1 name = 'Alice' ) ( id = 2 name = 'Bob' ) ). LOOP AT gt_employees INTO gs_employee. WRITE: / 'Employee:', gs_employee-id, gs_employee-name. ENDLOOP. ``` ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值