一 函数介绍
1.1 定义
函数:函数在任何编程语言中都是使用非常高频的知识点,同样,函数是ABAP开发中经常使用的,建立函数是在SE37这个事物代码下建立,通常函数和函数组是配合使用,函数组是函数的主程序。
1.2函数界面
以下就是一个函数界面的一些解释;
属性
常规函数:就是在系统中内部使用;
远程函数:也就是RFC,可以让它第三方系统来使用;不过要在SM59里设置;
更新函数:这个主要是用在在系统刚上线的时候,大量的更新系统的时候用,平时我们用的会比较少;
导入
我们传进的值;
导出
系统返回给我们的值;
正在更改
变更参数;
表
也是变更参数;
例外
函数运行的出现的错误;比如用户输的两个数,除数为0 ;
源代码
这个就是我们编写的逻辑;
二 例子
alv展示就只有输入参数; 乘法运算:有输入也有输出;我们通常用SY-SUBRC为0表示运行成功来判断。
2.1创建函数组
创建函数组(不管是创建组还是函数都应该以Z为首字母命名,函数组主要是比如与销售订单相关的都可以在这个组);
可以看出来函数组是函数的主程序;
点主程序运行可以看到以下的代码;
SM59(RFC的远程配置.
2.2函数建立
以下是我开发的,一个是函数组,一个是具体的函数;
ZFG_SALEORDER(函数组)
ZFM_SALEORDER_GETDETAIL(函数)
函数的源代码,当然导入,导出,表,例外我都有设置;
以下的我用的是Like.还输入了几次都完成。
以下是函数的源代码(实现在功能就是把表头和行项目的值全取出来)
SELECT SINGLE * FROM VBAK INTO E_VBAK WHERE vbeln = i_vbeln.
if sy-subrc <> 0.
RAISE SALESORDER_NOT_EXIST.
endif.
SELECT * FROM VBAP INTO TABLE T_VBAP WHERE vbeln = i_vbeln.
在程序中调用函数的方法
三 具体使用函数
以下是这个函数的具体的使用的例子;
PROGRAM zjgltest11.
DATA: lv_vbeln TYPE VBELN_VA.
DATA: ls_vbak TYPE vbak.
DATA: lt_vbap TYPE TABLE OF vbap.
lv_vbeln = '0011000000'.
CALL FUNCTION 'ZFM_SALESORDER_GETDETAIL'
EXPORTING
i_vbeln = lv_vbeln
IMPORTING
e_vbak = ls_vbak
TABLES
t_vbap = lt_vbap
EXCEPTIONS
salesorder_not_exist = 1
OTHERS = 2.
IF sy-subrc = 0.
WRITE: ls_vbak-vbeln .
ELSEIF sy-subrc = 1.
WRITE:'销售凭证不存在'.
ENDIF.
四 常用函数
以下是系统的常用函数
1.前导0函数(由于SAP里面的数查询的时候需要是10位,不然查不到,所以需要通过以下的函数来现实。)
CONVERSION_EXIT_ALPHA_INPUT
2.产生流水单的函数;
ZNUMC4_GET_NEXT
3.下载文件函数
GUI_DOWNLOAD
4.上传文件函数
GUI_UPLOAD
5.获取文件名函数
WS_FILENAME_GET
5.负数号前置函数
CLOI_PUT_SIGN_IN_FRONT