ABAP-函数

杂记

 如果gt_a是为空则取出全部数据. [参考where 字段 in s_字段].

 refresh itab.还是refresh itab[].都是清空内表行.

free itab 才是释放内存区.

 tables语句声明了一个跟数据库表同名的结构.

[重要!]因为我总忘.

 from 子例程名 using value(p_matnr).表示只使用传入的值最终不会更改原值即(gv_matnr).

删除多余空格

 将parameter ID 为mat 的值赋值为lv_value一样

程序跳转到mm03事务码的界面 

 get parameter ID 'MAT' field lv_value.

将parameter ID 为mat 里的值赋值给lv_value.

SUM的用法

sum只能在loop循环中使用,一般和at-endat配合使用

1  1
2  8
3  27
在这个内表中使用sum
at end of col1.
write:col1, col2."省力写法别学
endat.
1 1
2 8
3 27
在这个内表中使用sum
loop at itab into line.
sum.
write:line-col1,line-col2.
endloop 

函数

函数组中Fields指的是在include中定义的全局变量. 

在函数模块中调用include中的from子例程。

Subroutines会自动记录函数组中的子例程。

选中子程序名直接拖拽即可实现调用。

函数模块中Optional表示是否可选  勾选则为可选  不勾则为不可选

Pass value 表示传值还是传参.

检查 - 激活 -执行- 描述清单-信息-删除-复制-重命名-重新分配.(表示修改在组程序位置) 

import中I_开头的为变量IS_开头为结构 IT_开头为内表。 

Function module documention用于查看函数描述与参数概述 

Exception表示函数中可能出现的错误.

意思是若一个函数模块调用时用到并修改了(函数组中)全局变量A则会使同一个函数组的函数模块 

再去调用A时则是改变后的A.

 

 RAISE NO_ZERO.提示异常.

 

 

 

 

 

 函数模式调用(标准情况)

 

 

提示我们应该对异常去做处理. 

当函数中不去执行这样的异常检查则会: 

 程序提示逻辑错误.

在编写和调用函数时应该对可能出现的异常进行捕获和处理.

 

 

 

case  sy-subrc的值为1或2...这些值来源于异常的值可以通过不同的值提示不同的消息或进行不同的处理.

  捕获到异常时,程序和函数都会终止运行.(如数据库表主键不可以插入相同的数据)

如果能找到主键中mandt(主键)但一般不会使用的 ,传入参数结构里应该要有matnr字段

这段话的意思是查找与is_school(输入函数参数)中zschool字段相同的放入ls_school中

这里sy-subrc与查找语句相关,当查询到(即ls_school不为空)则为0,反之则不为0.

 

这里IS_SCHOOL是参照一个没有mandt的字段结构.  

 

  函数组与函数模块的关系

函数模块调用时等同会同时调用它的函数组。

 

 函数调用时参数传入传出,不存在类型的强制转换。

 

 

 

 函数组中全局变量是共享的。

 如何保持局部变量的值不离开子程序(或者函数)就被释放,定义为静态的就可以了

 

 

 系统变量在程序中也是可以修改的.

 SY-BATCH后台运行时值为'X'.前台运行则为空.

点击F8执行按钮为前台执行

 点击F9按钮后台执行

点 √.

点击立刻按钮.

 

点击保存. 

猜你喜欢

转载自blog.csdn.net/qq_53645728/article/details/131015148