ABAP基础语法学习笔记
更新时间:2024-04-02 14:36:01 阅读量: 综合文库 文档下载
ABAP基础学习笔记
学前说明:
1. ABAP/4每条语句以句号结束;
2. ABAP/4中象= ,>, <,+,-,*,/等符号左右都需要有至少一个空格,否则报错;
3. 整行注释用’*’号,星号要放当前行的第一个才有效, 注释本行后面部分用’”’号;
一、基本数据类型:
Type Length Range Initial Value Description
C 1 1-65535Byte Space 字符串数据, 如’Program’ D 8 8Byte ‘00000000’ 日期数据, 格式为YYYYMMDD F 8 8Byte 0 浮点数 I 4 -2^31至2^31-1 0 整数
N 1 1-65535Byte ‘00…0’ 数值所组成的字符串 P 8 1-16Byte 0 Packed 数, 用在小数点数 T 6 6Byte ‘000000’ 时间数据, 格式为HHMMSS X 1 1-65535Byte X’00’ 16进位数 例:
C: 字符(串), 长度为1, 最大有65535 BYTES, 初始值为: space,例: ‘M’; D: 日期, 格式为YYYYMMDD, 最大是’9999/12/31’ ,例:’1999/12/03’. F: 浮点数, 长度为8, 例如: 4.285714285714286E-01 I: 整数 范围 :-2^31 ~ 2^31-1 N: 数值组成的字符串: 011, ‘302’.
P: packed 数,用于小数点数值,例如: 12.00542;
T: 时间, 格式为HHMMSS,例如: ’14:03:00’, ’21:30:39’. X: 16进制数, 例如 ‘1A03’.
二、变量的声明:
变量宣告包含name, length, type, structure等,语法如下: DATA
DATA:C1 TYPE C, INT1 TYPE I VALUE 1, TEMP TYPE P DECIMAL 2.
DATA后面的冒号表示后面声明多个变量,如果只有一个变量也可以写成: DATA C1 TYPE C.
TYPE 也是用来声明变量的,与DATA差不多,不过TYPE不能直接给变量赋值。 例如:
TYPES: INT1 TYPE I.(不能VALUE 1)
LIKE的使用:
TYPES TEMP LIKE SY-TCODE.(即声明变量TEMP的类型与SY-TCODE的类型一样,当你不知道后面变量是什么类型时好用)
STRUCTURE
DATA: BEGIN OF MAN, NAME(20) TYPE C, PHONE(11) TYPE N, END OF MAN.
结构在后面说到的内表里有说到。
常量的声明:CONSTANTS 临时变量的声明:STATICS
例: CONSTANTS P1 TYPE P DECIMALS 5 VALUE ‘3.14159’.
三、系统专用变量说明:
系统内部专门创建了SYST这个STRUCTURE,里面的字段存放系统变量,常用的系统变量有:
SPACE: 空格。
SY-SUBRC : 系统执行某指令后,表示执行成功与否的变量,’0’ 表示成功 SY-UNAME: 当前使用者登入SAP的USERNAME; SY-DATUM: 当前系统日期; SY-UZEIT: 当前系统时间;
SY-TCODE: 当前执行程序的Transaction code(事务代码) SY-INDEX : 当前LOOP循环过的次数
SY-TABIX: 当前处理的是internal table(内表) 的第几笔 SY-TMAXL: Internal table的总笔数 SY-SROWS: 屏幕总行数; SY-SCOLS: 屏幕总列数;
SY-MANDT: CLIENT NUMBER SY-VLINE: 画竖线 SY-ULINE: 画横线
SY-UCOMM 屏幕指针状态 USREFUS 当前用户表格
还有其他系统变量,可以输入事务代码:SE11 查询系统表SYST
四:WRITE 用于在屏幕输出内容(相当于JAVA 里的 system.out.print())。 例如:
WRITE: ‘USERNAME IS:’ , SY-UNAME. 指定输出位置的语句格式为:
WRITE: [AT] [ / ] [
LEFT-JUSTIFIED 资料靠左对齐
CENTERED 数据靠中间对齐 RIGHT-JUSTIFIED 资料靠右对齐
UNDER
USING EDIT MASK
NO-ZERO: 数字前面 0 的部分不显示 NO-SIGN: 不显示正负号 DECIMALS
ROUND
DD/MM/YY : 日期显示格式 MM/DD/YY: YY/MM/DD: YY/DD/MM MM/DD/YYYY: DD/MM/YYYY YYYY/MM/DD: YYYY/DD/MM:
例如1: WRITE: /10(6) ‘ABCDEFGHIJK’. 输出结果为: ABCDEF
例如2: DATA: X TYPE I VALUE ’11:20:30’, Y(5) TYPE C VALUE ‘AB CDE’. WRITE: / X USING EDIT MASK ‘__:__:__’. WRITE: / X USING EDIT MASK ‘$___,___’. WRITE: / Y NO-GAP. 输出结果为:
11:20:30 $112,030 ABCDEF 显示图示:
语法: WRITE:
WRITE: / ‘Phone symbol:’, SYM_PHONE AS SYMBOL. WRITE: / ‘Alarm Icon:’, ICON_VOICE_OUTPUT AS ICON.
要查看系统所提供有那些符号及图标,可选择’模式’下的’write’确定后,接下来选择要查看的群组,如SYMBOL 或ICON. 跳过指定空白行进行输出: SKIP 5.(跳过五行空白)
SKIP TO LINE 5. (跳到第五行)
WRITE: ‘AAAAAA’.
结果自己去试试就知道了。
五:INTERNAL TALBE (内表)的声明及使用
ABAP/4中的Internal Table是一种Data Structure,类似于其它语言中的STRUCTURE,它可以由几个不同类型的字段(field)组成,用来表示具有不同属性的某一事物,单独一笔资料表示某个事物,多笔数据表示具有相同属性的多个事物.例如: 为了存取或记录某班的同学数据,我们创建如下的internal table: DATA: BEGIN OF STUDENT OCCURS 20, STD_ID TYPE N, NAME(10) TYPE C, AGE TYPE I, BIRTH TYPE D,
SCORE TYPE P DECIMALS 2, END OF STUDENT.
此时我们已经创建了名叫STUDENT的internal table,并且为它预先申请了能够存放20笔数据的Buffer(当然,如果存取数据不止20笔,程序执行时,会自动申请系统Buffer)
Internal table 的定义有以下几种格式:
格式一. DATA: BEGIN OF
TYPES
INCLUDE STRUCTURE . DATA: END OF
DATA:
格式: APPEND [
COL1 TYPE I, COL2 TYPE I, END OF LINE.
DATA ITAB LIKE LINE OCCURS 10.
DO 2 TIMES.
LINE-COL1 = SY-INDEX.
LINE-COL2 = SY-INDEX ** 2. APPEND LINE TO ITAB. ENDDO.
LOOP AT ITAB INTO LINE.
WRITE: / LINE-COL1, LINE-COL2. ENDLOOP. 执行结果为:
1 1 2 4
举例二. (不使用work area)
DATA: BEGIN OF ITAB OCCURS 10, COL1 TYPE I, COL2 TYPE I, END OF ITAB. DO 2 TIMES.
ITAB-COL1 = SY-INDEX.
ITAB-COL2 = SY-INDEX ** 2. APPEND ITAB. ENDDO.
LOOP AT ITAB.
WRITE: / ITAB-COL1, ITAB-COL2. ENDLOOP.
执行结果与举例一相同.
举例三. (加入另一个Internal table的元素)
格式: APPEND LINES OF
2、 COLLECT LINE
COLLECT 指令也是将元素加入Internal table中,与APPEND 的区别是: COLLECT指令在非数值字段相同的情况下,将数值字段汇总.
格式: COLLECT [
ITAB-COL1 = ‘ABC’. ITAB-COL2 = 10. COLLECT ITAB.
ITAB-COL1 = ‘XYZ’. ITAB-COL2 = 20. COLLECT ITAB.
ITAB-COL1 = ‘ABC’. ITAB-COL2 = 80. COLLECT ITAB.
此时, internal table中放的是2笔数据, 分别为:
3、
4、
5、
6、
ITAB-COL1 ITAB-COL2 ‘ABC’ 90 ‘XYZ’ 20 INSERT LINE
将元素插入在指定的internal table位置之前.
格式: INSERT [
或者: INSERT LINES OF
[INITIAL LINE INTO] :插入一笔初始化的记录.
[INDEX
LOOP AT
READ TABLE
DATA: BEGIN OF ITAB OCCURS 10, COL1 TYPE I, COL2 TYPE I, END OF ITAB. DO 10 TIMES.
ITAB-COL1 = SY-INDEX. ITAB-COL2 = SY-INDEX * 2. APPEND ITAB.
ENDDO.
READ TABLE ITAB INDEX 3.
(或者: READ TABLE ITAB WITH KEY COL1 = 3.)
WRITE: / ‘ITAB-COL1 = ‘, ITAB-COL1, ‘ITAB-COL2 = ‘, ITAB-COL2. 执行结果同样是: ITAB-COL1 = 3 ITAB-COL2 = 6. 修改internal table 中的值 格式: MODIFY
举例一. READ TABLE ITAB INDEX 3. LINE-COL1 = 29.
MODIFY ITAB FROM LINE TRANSPORTING COL1. 将第三笔记录的COL1字段的值修改为29. 举例二. T_SALARY – salary = 50.
MODIFY T_SALARY TRANSPORTING salary WHERE birthday = ‘1999/12/06’. DELETE internal table中的字段
7、
8、
9、
格式: DELETE
或: DELETE
SORT
其中:
总和计算存放与work area中,但只能在LOOP 中使用. 例: LOOP AT ITAB INTO LINE. SUM. ENDLOOP.
WRITE: / LINE-COL1, LINE-COL2. 初始化internal table
REFRESH
CLEAR
赋值之MOVE的使用
语法:
MOVE
将F1的值存至变数 F2 中, 也可写成 F2 = F1
?使用 Offset 语法:
MOVE
DATA: F1(10) VALUE ‘ABCDEFGHIJ’. F2(5).
F2 = F1+3(5). “自第4个位置开始取出5个字符 F2 的内容会变成 DEFGH
语法:
MOVE –CORRESPONDING
将Strings1中的field组件的数据复制至String2中, 仅复制相同名称的组件 Example:
DATA: BEGIN OF ADDRESS,
FIRSTNAME(10) VALUE ‘LULU’, LASTNAME(10) VALUE ‘CHOU’, TEL(12) VALUE ‘4660570’, END OF ADDRESS. DATA:BEGIN OF NAME, FIRSTNAME(10), LASTNAME(10),
E_MAIL(30),
END OF NAME.
MOVE-CORRESPONDING ADDRESS TO NAME.
NAME-FIRSTNAME 变成 ‘LULU’, NAME-LASTNAME 变成 ‘CHOU’, 而 NAME-E_MAIL 则不变
在变量的使用上, 可以使用类似Call By Value 的方法 语法:
WRITE (
DATA: NAME(20) VALUE ‘SOURCE’, SOURCE(10) VALUE ‘LILY’, TARGET(10).
WRITE (NAME) TO TARGET. WRITE / TARGET. 屏幕可印出 LILY
注意,NAME一定要用小括号括起,否则打印的是SOURCE (这种用法有实际运用价值吗…)
算术运算符及运算符号:
** 乘幂 * 乘 / 除 + 加 - 减
DIV 整数除法 MOD 余数除法
数值函数
1. 2.
ABS(N): 传回数值 N 的绝对值 SIGN(N): 1 if N > 0
0 if N = 0
-1 if N < 0
3. CEIL(N): 传回大于数值N的最小整数 Example:
WRITE CEIL(-5.65) 印出 –5.00 WRITE CELL(4.54) 印出 5.00 4. FLOOR(N): 传回小于数值N的最大整数 Example:
WRITE FLOOR(-5.65) 印出 –6.00 WRITE FLOOR(4.54) 印出 4.00 5.
TRUNC(N): 传回数值N的整数部分
Example:
WRITE TRUNC(5.65) 印出 5.00 6. FRAC(N): 传回数值 N 的小数部分 Example:
WRITE FRAC(5.65) 印出 0.65
7. COS(A),SIN(A),TAN(A): 传回三角函数 cos A, sin A, tan A 的值, A 为弪度量 8.EXP(N): 传回 e^N 值 8.
LOG(N): 传回 log eN 值
9. LOG10(N): 传回 log N值 10.SQRT(N): 传回 N 的平方根值
日期与时间运算
1.日期数据的运算
日期数据可以直接运算, 如加法与减法的运算 Example:
DATA: Mdata TYPE D.
Mdate = SY-DATUM. “ 如传回 19971015 Mdate+6(2) = ‘01’ “ Mdate 变成 19971001 Mdate = Mdate - 1 “ Mdate 变成 19970931
2.时间数据的运算
时间格式为 ‘hhmmss’, 如 ‘212030’ 表 ’21:20:30’ Example:
DATA: HOURS TYPE I, MINUTES TYPE I,
T2 TYPE T VALUE ‘200000’, T1 TYPE T VALUE ‘183000’. HOURS = (T2 - T1) / 3600. “计算有几小时 MINUTES = (T2 – T1) / 60. “计算几分钟
字符串数据处理
1.字符串移位 语法:
SHIFT
(4).CIRCULAR: 字符串以环状方式移位 Example:
DATA STRING(10) VALUE ‘ABCDEFGHIJ’. SHIFT STRING. “得到 BCDEFGHI’
SHIFT STRING BY 2 PLACES RIGHT. “得到 ABCDEFGH
2.取代字符串内容 语法:
REPLACE
DATA: STRING(10) VALUE ‘ABCDEFGHI’, STR1(3) VALUE ‘DEF’, STR2(3) VALUE ‘123’.
REPLACE STR1 WITH STR2 INTO STRING. WRITE / STRING. “得到 ABC123GHI 3.大小写的转换 语法:
TRANSLATE
SEARCH
DATA STRING(10) VALUE ‘ABCDEFGHIJ’.
会回存至两个变数, SY-SUBRC 和 SY-FDPOS, 若找到则 SY-SUBRC 为 0
SY-FDPOS 存开始位迭, 若找不到则 SY-SUBRC为 4, SY-FDPOS为 0
5.字符串长度 STRLEN(
INT = STRLEN(‘XYZABC’). “得到 6 INT = STRLEN(‘ABC ’ ). “得到 3 6.取部分字符串
DATA T(10) VALUE ‘ABCDEFGHIJ’. WRITE / T+2(4). “得到 CDEF
比较符号
1. = 或 EQ : 等于 2. <> 或 >< 或 NE : 不等于 3. < 或 LT : 小于 4. <= 或 LE : 小于等于 5. > 或 GT : 大于 6. >= 或 GE : 大于等于 7. AND : 且 8. OR : 或
9. NOT : 非
语法之条件判断--IF
语法:
IF
ELSEIF
ELSEIF
(1).在每个判断叙述之后要加上 . Example: IF 3 > 8.
WRITE / ‘3 is less than 8’. ENDIF.
条件选择--CASE
CASE <变量f>.
WHEN
WHEN OTHERS.
S = ‘A’. CASE S.
WHEN ‘X’.
WRITE / ‘String is X’. WHEN OTHERS.
WRITE / ‘String is not X’. ENDCASE.
循环
DO [n TIMES] [VARYING
Example:
DO 2 TIMES. WRITE / ‘X’.
TO
DO VARYING I FROM 1 TO 10. S = S + I. ENDDO.
WRITE: / ,’1+2+3+…+10=’,S
执行结果: 1+2+3+…+10=55(没试成功,直接报语法错误)
2.条件循环
语法:
WHILE
I = 1. S=0.
WHILE I <= 10. S = S+I. I = I+1. ENDWHILE.
WRITE: / ‘ 1+2+3+…+10=’,S. 执行结果为: 1+2+3+…+10=55
循环控制
CONTINUE
跳至循环的下一次(即不执行本次循环) Example:
DO 3 TIMES.
IF SY-INDEX = 2. CONTINUE.
WRITE / SY-INDEX. ENDDO. 执行结果: 1 3
CHECK
CHECK 之后条件成立才继续往下执行循环 Example:
DO 5 TIMES.
CHECK SY-INDEX BETWEEN WRITE / SY-INDEX. ENDDO.
2 AND 4. 执行结果: 2 3 4
EXIT
跳出循环 Example:
DO 10 TIMES.
IF SY-INDEX = 4. EXIT. ENDIF
WRITE / SY-INDEX. ENDDO. 执行结果: 1 2 3
六、屏幕输入命令 在ABAP/4中要从屏幕输入变量, 使用的命令是 PARAMETERS 及SELECTION-OPTIONS: 1. PARAMETER: 输入一个变量
2. SELECTION-OPTIONS: 使用条件筛选画面来输入数据
一. PARAMETERS 指令
基本的输入命令, 类似如BASIC的INPUT命令, 但无法使用F格式(浮点数) 语法:
PARAMETERS
[DEFAULT
PARAMETERS: NAME(8),
AGE TYPE I, BIRTH TYPE D. 执行结果:
可以看出,PARAMETERS后面默认是文本框的格式
在日期的输入格式上为 MM/DD/YY , MM/DD/YYYY, MMDDYY或MMDDYYYY , 如输入 020165表 1965年02月01日, 与02/01/65的输入是一样的, 日期输入范围为公元1950年至2049年 1. DEFAULT
设定输入的默认值 Example:
PARAMETERS: COMPANY(20) DEFAULT ‘DELTA’, BIRTH TYPE D DEFAULT ‘19650201’. 2. LOWER CASE
ABAP/4预设是将字符串输入值自动转换为大写, 加上此参数会将输入的数据转成小写,
3. OBLIGATORY
强制要求输入, 屏幕上会出现一个勾 , 使用者必须要输入才可.
PARAMETERS: A OBLIGATORY. PARAMETERS: B OBLIGATORY.
4. AS CHECKBOX
输入 CHECKBOX的格式 Example:
PARAMETERS: TAX AS CHECKBOX DEFAULT ‘X’, NTD AS CHECKBOX. 执行结果:
5. RADIOBUTTON GROUP
输入 RADIO BUTTON GROUP 的方式 Example:
PARAMETERS: BOY RADIOBUTTON GROUP SEX DEFAULT ‘X’, GIRL RADIOBUTTON GROUP SEX. 执行结果:
注:单选框复选框里面‘X’表示选中,其他则都表示不选中 二. SELECT-OPTIONS
SELECT-OPTIONS所输入的值实际上是放在internal table中的,该Internal table 有四个字段,分别是:SIGN,OPTION,LOW,HIGH.. 条件筛选检查条件输入画面指令, 输入条件后可配合SELECT指令自TABLE读取符合条件的数据, 直接执行或放入 Internal Table中, 条件有四个参数:
Select-options 定义的内表
重要: Select-options 内表具有表头行 该内表有4个字段
1. Sign 符号标示 取值: I (included 被包含) , E (excluded 不被包含). 2. Option 操作 取值: BT(between 在范围之间) , EQ(equal 等于) 3. Low 最小值 取值: 用户输入的最小值
4. High 最大值 取值: 用户输入的最大值
语法:
SELECT-OPTIONS
Example:
TABLES SPFLI.
SELECT-OPTIONS AIRLINE FOR SPFLI-CONNID.
将条件的输入值存放入 AIRLINE, 筛选选择为SPFLI中的CONNID字段 执行结果:
可直接输入起始范围或按下选择画面, 输入完后按下左上角的执行键.
select-options 运行原理
1. 程序运行后, select-options创建的内表中没有数据 2. 屏幕弹出后,用户输入数据
3. 此时,系统将字段范围保存到该内表中
4. 用户确定屏幕后,系统将内表中的信息翻译成对应的native SQL 5. 数据库将符合用户输入范围的数据返回给用户
改变输入格式:
1. DEFAULT
SELECTION-OPTION AIRLINE FOR SPFLI-CONNID DEFAULT ‘2042’ TO ‘4555’.
DEFAULT ‘2042’ TO ‘4555’设定不要Multi-Option输入画面 2. NO INTERVALS
设定不要区间范围输入画面 3. LOWER CASE 输入转换成大写 4. OBLIGATORY 强制要求输入
配合SELECT 使用:
条件输入完后要将符合条件的数据筛选出来, 可配合使用 SELECT 指令 1. 使用WHERE <条件式>
SPFLI 是系统里自带的例表,SPFLI-CONNID表示表里的某个字段 Example:
SELECT-OPTIONS AIRLINE FOR SPFLI-CONNID.
SELECT * FROM SPFLI WHERE CONNID IN AIRLINE. WRITE: / CONNID,FROMCITY,TOCITY.
ENDSELECT. 2.使用CHECK参数 Example:
SELECT-OPTIONS AIRLINE FOR SPFLI-CONNID. SELECT * FROM SPFLI. CHECK AIRLINE.
WRITE: / CONNID,FROMCITY,TOCITY. ENDSELECT. 3.使用 IF ? IN 叙述 Example:
SELECT-OPTIONS AIRLINE FOR SPFLI-CONNID. SELECT * FROM SPFLI.
IF SPFLI-CONNID IN AIRLINE. WRITE: / CONNID,FROMCITY,TOCITY. ENDIF ENDSELECT.
ABAP里面语句基本上是开闭原则,即: SELECT。。。。ENDSELECT。 但也不全是。
选择屏幕: 1.产生空白列
语法:
SELECTION-SCREEN SKIP [
SELECTION-SCREEN SKIP 2. 产生两列空白列 2.产生底线
语法:
SELECTION-SCREEN ULINE /
SELECTION-SCREEN ULINE /10(30). 自第10格开始产生长度30的底线 3.显示备注说明 语法:
SELECTION-SCREEN COMMENT /
REMARK = ‘Pls enter your name’.
SELECTION-SCREEN COMMENT /10(30) REMARK. 4. 同一行中输入数个数据项
语法:
SELECTION-SCREEN BEGIN OF LINE. ??
SELECTION-SCREEN END OF LINE. Example:
SELECTION-SCREEN BEGIN OF LINE. SELECTION-SCREEN POSITION 20. PARAMETERS NAME(10).
SELECTION-SCREEN POSITION 40. PARAMETERS BIRTH TYPE D. SELECTION-SCREEN END OF LINE.
在20格输入NAME内容, 40格输入 BIRTH的内容 结果如下:
5. 绘出BLOCK PANEL
语法:
SELECTION-SCREEN BEGIN OF BLOCK
[WITH FRAME [TITLE
SELECTION-SCREEN END OF BLOCK
SELECTION-SCREEN BEGIN OF BLOCK RADIO WITH FRAME . PARAMETER R1 RADIOBUTTON GROUP GR1. PARAMETER R2 RADIOBUTTON GROUP GR1. PARAMETER R3 RADIOBUTTON GROUP GR1. SELECTION-SCREEN END OF BLOCK RADIO.
数据库SQL
我们在编写ABAP4程序的时候,经常需要从TABLE中根据某些条件读取数据,.读取数据最常用的方法就是通过SQL语法实现的.
ABAP/4中可以利用SQL语法创建或读取TABLE,SQL语法分为DDL(DATA DEFINE LANGUAGE)语言和DML(DATA MULTIPULATION LANGUAGE)语言,DDL语言是指数据定义语言,例如CREATE等, DML语言是数据操作语言,例如SELECT, INSERT等语句. SQL语句有OPEN SQL语句和NATIVE SQL语句. OPEN SQL语句不是标准SQL语句,是ABAP/4语言,利用OPEN SQL语句能在Databases 和 Command 之间产生一个BUFFER,所以它有一个语言转换的过程. 而NATIVE SQL语句则是标准的SQL语句, 它直接针对Databases操作. 一. OPEN SQL
OPEN SQL 语句包含有: SELECT,INSERT,UPDATE,MODIFY,DELETE,OPEN CURSOR, FETCH,CLOSE CURSOR,COMMIT WORK,ROLLBACK WORK等. 1. SELECT语句
语法格式:
SELECT
SY-SUBRC = 0 表示读取数据成功
<> 0 表示未找到符合条件的记录 SY-DBLNT: 被处理过的记录的笔数. 相关的命令:
EXIT. 退出循环.
CHECK
SELECT ?.ENDSELECT.是循环方式读取记录的.
例如:
TABLES MARD.
SELECT [DISTINCT] * FROM MARD WHERE MATNR = ‘3520421700’.
(从MARD中抓取所有料号=3520421700的数据) ◆读取一笔数据 TABLES MARD.
SELECT SINGLE * FROM MARD WHERE MATNR = ‘3520421700’. (从MARA中抓取一笔料号=3520421700的资料) ◆ 将读取的记录放在work area中,并且加入Internal table 中. 格式有:
... INTO
... INTO CORRESPONDING FIELDS OF
... INTO CORRESPONDING FIELDS OF TABLE
... APPENDING CORRESPONDING FIELDS OF TABLE
TABLES MARD.
DATA: BEGIN OF ITAB OCCURS 10,
MATNR LIKE MARD-MATNR, WERKS LIKE MARD-WERKS, LGORT LIKE MARD-LGORT, LABST LIKE MARD-LABST, END OF ITAB.
SELECT MATNR WERKS LGORT LABST
INTO CORRESPONDING FIELDS OF ITAB FROM MARD
WHERE MATNR = ‘3520421700’. APPEND ITAB. CLEAR ITAB. ENDSELECT.
(将读取的结果放在Internal table ITAB中) 举例二.
TABLES MARD.
SELECT MATNR MTART MAKTX INTO (t_matnr, t_mtart, maktx) FROM MARD
WHERE MATNR = ‘3520421700’.
(从MARD中抓取料号=3520421700的料号、类型和描述,放在变量t_matnr, t_mtart, maktx中)。
◆按指定的字段排序 TABLES SBOOK.
SELECT * FROM SBOOK WHERE CARRID = ‘LH’ AND
CONNID = ‘0400’ AND FLDATE = ‘19950228’ ORDER BY BOOKID [ASCENDING/DESCENDING]. WRITE: / SBOOK-BOOKID, SBOOK-CUSTOMID, SBOOK-CUSTTYPE, SBOOK-SMOKER, SBOOK-LUGGWEIGHT, SBOOK-WUNIT, SBOOK-INVOICE. ENDSELECT.
(利用参数ORDER BY所指定的字段排序) ◆ 抓取数据的条件叙述 (1) BETWEEN
例如: WHERE YEAR BETWEEN 1995 AND 2000. (2) LIKE
例如: WHERE NAME LIKE ‘MIKE%’. (‘%’是通配符号) (3) IN (
是
例如: WHERE PLANT IN (‘CHUNGLI’, ‘TAOYUAN’,’LIUTU’).
(表示PLANT 只要是’CHUNGLI’或’TAOYUAN’或’LIUTU’都可以).
2. INSERT 语句
◆ 从work area 加入到Internal Table中
格式: INSERT INTO
DATA: BEGIN OF WA,
CODE(6) TYPE C, NAME(30) TYPE C, END OF WA.
DATA: VEN LIKE WA OCCURS 10. ?
WA-CODE = ‘530120’.
WA-NAME = ‘XINGDA ELECTRONICS CO.,LTD’. INSERT INTO VEN VALUES WA .
如果work area的名称就是internal table的名称,可以直接写成: INSERT
DATA: BEGIN OF WA OCCURS 10, CODE(6) TYPE C, NAME(30) TYPE C, END OF WA. ?
WA-CODE = ‘530120’.
WA-NAME = ‘XINGDA ELECTRONICS CO., LTD’. INSERT WA. ◆ 从另外一个Internal table中INSERT 数据 格式:
INSERT
将
MODIFY
根据 Primary Key 寻找数据文件中符合的记录, 若找到则更新数据, 若找不到则新增记录 语法:
MODIFY
WA-NO=’34051920’.
WA-COMPANY=’DELTA’.
MODIFY SPFLI FROM WA. 4.UPDATE语法
1.使用 Primary Key 语法:
UPDATE
TABLES SPFLI.
DATA WA LIKE SPFLI. WA-NO=’34051920’.
WA-COMPANY=’DELTA’.
UPDATE SPFLI FROM WA.
如 SPFLI 的 Primary Key是 NO, 则会找到 NO=’34051920’ 的记录, 将其 COMPANY字段异动为 DELTA
2.使用条件式 语法:
UPDATE
UPDATE SPFLI SET NO=’34051920’
COMPANY = ‘DELTA’ WHERE TEL=’4526107’.
5.DELETE 语法
DELETE
Database Cursor是一个数据库暂存区, 将经SELECT指令读取的记录存放至此暂存区, 再由此暂存区放至Work Area中, 可减少数据库读取的次数. 1.开启 Database Cursor 语法:
OPEN CURSOR
TABLES SPFLI.
DATA: WA LIKE SPFLI, C1 TYPE CURSOR.
OPEN CURSOR C1 FOR SELECT * FROM SPFLI WHERE AREA =’TAIWAN’. 2.读取 Database Cursor的数据存入 Work Area
语法:
FETCH NEXT CURSOR
FETCH NEXT CURSOR C1 INTO WA.
读取下一笔Cursor位置的数据存入WA, 如果已无数据可读, SY-SUBRC <>0. 关闭 Database Cursor 语法:
CLOSE CURSOR
CLOSE CURSOR C1. 7. COMMIT WORK & ROLLBACK WORK
要确定数据成功写入数据库,可使用COMMIT WORK指令,如: COMMIT WORK.
相反的, 如果反悔要复原, 可使用 ROLLBACK WORK, 可复原在上个COMMIT WORK指令之后的数据, 如:
ROLLBACK WORK.
§使用NATIVE SQL指令 语法格式:
EXEC SQL [PERFORMING
正在阅读:
ABAP基础语法学习笔记04-02
小学语文教研组新学期工作计划01-06
cmos实验 - 图文11-12
床底藏着六十五声笑11-03
鄂豫皖片区红色旅游发展规划 - 图文12-28
贪吃老爸作文400字07-08
文明施工安全生产守则05-10
医学检验技术专业调研报告06-02
审计学作业4 2 110-18
6委办公厅关于地方政府投融资平台公司06-26
- 多层物业服务方案
- (审判实务)习惯法与少数民族地区民间纠纷解决问题(孙 潋)
- 人教版新课标六年级下册语文全册教案
- 词语打卡
- photoshop实习报告
- 钢结构设计原理综合测试2
- 2014年期末练习题
- 高中数学中的逆向思维解题方法探讨
- 名师原创 全国通用2014-2015学年高二寒假作业 政治(一)Word版
- 北航《建筑结构检测鉴定与加固》在线作业三
- XX县卫生监督所工程建设项目可行性研究报告
- 小学四年级观察作文经典评语
- 浅谈110KV变电站电气一次设计-程泉焱(1)
- 安全员考试题库
- 国家电网公司变电运维管理规定(试行)
- 义务教育课程标准稿征求意见提纲
- 教学秘书面试技巧
- 钢结构工程施工组织设计
- 水利工程概论论文
- 09届九年级数学第四次模拟试卷
- 语法
- 基础
- 笔记
- 学习
- ABAP
- 城镇土地定级
- 推 荐 高 级 专 业 技 术 职 务 任 职 资 格 人 员 情 况 综 合
- 怀仁集《王羲之圣教序》原文译文
- 数据库系统原理练习题2
- 特种设备作业人员考试Q4桥门式起重机司机题库(2016年12月完全版
- 和谐D3B交流电力传动机车
- 全面深化改革,调整编制体制,为新质战斗力建设助力
- 河南省雪枫中学2015届高中生物同步培优资料 微专题13 分子组成热
- 一般将来时+一般过去时 讲解及练习题
- 人才梯队建设目的
- 蓝瑛交游研究
- 海尔的零库存案例分析2
- 华中科技大学土木工程与力学学院考试 B卷(闭卷)
- 全钢装配式附着升降脚手架
- 汽车设计1-6章复习资料
- 暑期“三下乡”社会实践总结表彰大会讲话稿
- 浅谈研发项目管理的作用
- 机械设备安全防护装置 - 图文
- 利用分解素因数法解题
- 小学二年级上学期数学1—4单元测试题