2005年11月22日
#
1、PARAMETER:输入一个变量或字段内容
-------------------------------------------------------------
语法:PARAMETERS
[DEFAULT ][LOWER CASE]
[OBLIGATORY][AS CHECKBOX][RADIOBUTTON GROUP ]
2、SELECTION-OPTIONS:使用条件筛选画面来输入数据
-------------------------------------------------------------
语法:SELECTION-OPTIONSFOR
[DEFAULTTO]
[NO-EXTENSION]
[LOWER CASE]
[OBLIGATORY]
[Select 指令]
3、SELECTION-SCREEN: 输出空白列、底线、备注说明、多个数据据、黑线等-------------------------------------------------------------------
语法:SELECTION-SCREENSKIP[]
[ULINE/ (length)] [COMMENT/ (length)]
[BEGINOFLINE.……SELECTION-SCREENENDOFLINE.] [BEGINOFBLOCK[WITHFRAME[TITLE].
…….SELECTION-SCREENENDOFBLOCK.]
2005年11月21日
#
1、宏模块
----------------------------------------------------------------------------------------
(1) 宏定义:
DEFINE.
.END-OF-DEFINITION.
(2) 宏使用:
[….]
* 为传入宏的参数值,在参数间至少要给予一个空白
2、包含子程序
------------------------------------------------------------------
语法:INCLUDE
作用:用于共享数据项,比如全局变量
3、子程序
------------------------------------------------------------------
1、声明:
FORM[].ENDFORM.
2、调用:
(1) 内部调用:PERFORM [](2) 外部调用: ① 调用另一程序
PERFORM() [] [IF FOUND]
② 调用另一专存放子程序的程序文件 PERFORM()[INPROGRAM () [] [IF FOUND]* 参数传递
------------------------------------------------------------------
(1) 地址传递:
FORM[USING …] [CHANGING …]或PERFORM[USING …] [CHANGING …](2) 值传递:
FORMUSINGVALUE(…)
或
PERFORMUSING(3) 传入时值传递,传出时改变返回参数值 FORM….. CHANGINGVALUE(
或PERFORM…. CHANGING ….
* Check控制:CHECK ,只有条件成立才继续往下子程序叙述
4、函数
------------------------------------------------------------------
(1) 查看系统函数
(2) 函数呼叫:
CALL FUNCTION
IMPORTING F1=a1….
EXPORTING F1=a1….
CHANGING F1=a1…
TABLES F1=a1…
EXCEPTIONS F1=a1…
一、SQL分类
--------------------------------------------------------------------------------------
1、按操作分类:DDL和DML
2、按是否有缓存分类:
(1) OPEN SQL :数据库与命令编译器存在缓存,如Select * From .... (2) Native SQL:直接处理
二、创建字典表
--------------------------------------------------------------------------------------
语法:TABLEStable
三、处理字典表
--------------------------------------------------------------------------------------
1、查询
------------------------------
语法:SELECT FROM [INTO ] [WHERE ]
[GROUP BY ] [ORDER BY ].2、插入
------------------------------
(1) Work Area插入:
语法:INSERTINTOVALUES
(2) 表间插入
语法:INSERTFROMTABLE[ACCEPTING DUPLICATE KEY]
3、更改
------------------------------
(1) 更改单行
语法:UPDATE [CLIENT SPECIFIED] FROM .
或
UPDATE [CLIENT SPECIFIED].
(2) 更改多行
语法:UPDATESET< f1>=…WHERE.
(3) 表间更改
语法:UPDATE [CLIENT SPECIFIED] FROM TABLE .
(4) Modify更改(有则更改,无则插入)
语法:MODIFYFROM.
4、删除
------------------------------
(1) 使用关键字删除
语法:DELETEFROM
(2) 使用条件删除
语法:DELETEFROMWHERE
5、使用游标
------------------------------
(1) 打开:
语法:OPENCURSORFORSELECT …WHERE
(2) 使用: 语法:FETCHNEXTCURSORINTO
(3) 关闭: 语法:CLOSECURSOR
四、提交与回退
-------------------------------------------------------------------------------------- (1) 提交:COMMIT WORK
(2) 回退:ROLLBACK WORK
一. 什么是内表
----------------------------------------------------------------------------------------------------------
(1) 内表:仅在程序运行时存在的表格
(2) 作用:
① 系统可实时增加内表的大小
② 可根据程序需要重新组织数据库表格的内容
(3) 内表结构:数据类型和数据对象,相当于类与对象的关系
(4) 标记表格行:内表索引/关键字
(5) 访问内表:按行访问
二、创建内表
----------------------------------------------------------------------------------------------------------
(1) Type创建:先声明,后使用
语法:TYPES OCCURS .
(2) Data创建:使用Work Area
DATA OCCURS [WITH HEADER LINE].
(3) Data创建:不使用Work Area(直接宣告)
语法:DATA: BEGIN OF OCCURS ,
,
..............
END OF .
三、使用内表
----------------------------------------------------------------------------------------------------------
1、增加
(1) 增加行(可能有重复行)
语法:APPEND [ TO|INITIAL LINE TO] .
(2) 根据标准关键字附加行(没有重复行)
语法:COLLECT [ INTO] .
(3) 表外增加
语法:APPEND LINES OF [FROM ] [TO ] TO .
2、插入
(1) 在指定行前插入
语法:INSERT [ INTO|INITIAL LINE INTO] [INDEX ].
(2) 外表插入
语法:INSERT LINES OF [FROM ] [TO ]
INTO [INDEX ].
3、修改
语法:MODIFY [FROM ] [INDEX ].
4、删除
(1) 在循环中删除行
语法:Loop At (Into type)
DELETE .
End Loop.
(2) 用索引删除行
语法:DELETE INDEX .
5、查询
(1) 循环读取
语法:LOOP AT [INTO ] [FROM ] [TO ] [WHERE ].
.....
ENDLOOP.
(2) 用索引读取单行
语法:READ TABLE [INTO ] INDEX .
(3) 读取有关键字的单行
语法:READ TABLE [INTO ] WITH KEY [BINARY SEARCH].
6、排序
语法:SORT [] [AS TEXT]
[BY [] [AS TEXT] ... [] [AS TEXT]].
7、汇总
(1) 非数值汇总
语法:COLLECT [ INTO] .
(2) 数值汇总
语法:Loop At (Into type)
Sum.
End Loop.
8、清除
(1) REFRESH .
解释:初始化没有表头的内表,清除所有元素
(2) CLEAR .
解释:初始化有表头的内表,清除所有元素
(3) FREE .
解释:重置内表并直接释放其内存,须在REFRESH或CLEAR后使用
2005年11月20日
#
1、 顺序
2、选择:IF和CASE
--------------------
(1) IF语法:
IF .
ELSEIF .
ELSEIF .
.....
ELSE.
ENDIF.
(2) CASE语法:
CASE .
WHEN .
WHEN .
WHEN .
WHEN ...
......
WHEN OTHERS.
ENDCASE.
3、 循环:DO和WHILE
------------------------------------
(1) 计次循环:
DO [TIMES] [VARYING FROM NEXT ].
ENDDO.
(2) 无限循环:
DO .ENDDO.
(3) 条件循环:
WHILE [VARY FROM NEXT ].
ENDWHILE.
* 终止循环:
------------------------------------
① 无条件终止循环:CONTINUE
② 有条件终止循环:CHECK
③ 完全终止循环: EXIT
1、数值函数
-----------------------------------------------------------------------------------
abs、sign、ceil、floor、trunc、frac、cos、sin、tan、exp、log、log10、sqrt
2、日期与时间运算
--------------------------------------------------------------------------
(1) 日期数据:
DATA: Mdata TYPE D.
Mdate = SY-DATUM. “ 如传回 19971015
Mdate+6(2) = ‘01’ “ Mdate 变成 19971001
Mdate = Mdate - 1 “ Mdate 变成 19970931
(2) 时间数据:
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. “计算几分钟
3、运算符号:
--------------------------------------------------------------------
(1) 算术符:+ - * / div mod
(2) 比较符:> >= < <= = <> ><
EQ NE GT LT GE LE
And Or Not
(1) 移位:Shift 变量名 [by places] [modes]
(2) 替换:Replace with into
(3) 大小写:Translate to Upper/Lower Case
(4) 寻找: Search for
(5) 长度: Strlen(str)
(6) 取部分:[+][]
* 示例:
DATA T(10) VALUE ‘ABCDEFGHIJ’.
WRITE / T+2(4). “得到 CDEF
1、赋值
---------------------------------------------------------------------------------------
(1) 全部赋值:Move to .
(2) 部分赋值:Move [+] to [+].
(3) 组件(字段)复制:Move Corresponding to .
(4) 传值:WRITE()TO
2、清值
---------------------------------------------------------------------------------------
CLEAR
2005年11月19日
#
1. Write的格式:
-------------------------------------
(1) 不指定位置输出:Write 资料项.
(2) 指定位置输出: Write AT [/] [] [()] 资料项.
(3) 指定显示格式: WRITE 数据项 .
(4) 输出图标: WRITE AS SYMBOL.
WRITE AS ICON.
(5) 输出、垂直线、空行:
① 水平线:write [at [/][][()]] sy-uline.
② 垂直线:write [at [/][]] sy-vline.
③ 空行: WRITE SKIP [].
(6) 输出复选框: Write 标签,变量 As CheckBox.
2. 跳至指定列坐标:Skip to line [].
* 资料项指变量或常量
* 预定义数据类型的输出格式
----------------------------------------------
数据类型 输出长度 定位
C 字段长度 左对齐
D 8 左对齐
F 22 右对齐
I 11 右对齐
N 字段长度 左对齐
P 2*字段长度(+1) 右对齐
T 6 左对齐
X 2*字段长度 左对齐
----------------------------------------------
在屏幕上,输出通常是左对齐的; 但数据类型F、I和P是右对齐的,左边用空格填充。
* 预定义数据类型
--------------------------------------------------------------------------------------------------------------
TypeLengthRangeInitial ValueDescriptionC11-65535ByteSpace字符串数据,如’Program’D88Byte‘00000000’日期数据,格式为YYYYMMDDF88Byte0浮点数I4-2^31至2^31-10整数N11-65535Byte‘00…0’数值所组成的字符串P81-16Byte0Packed数,用在小数点数T66Byte‘000000’时间数据,格式为HHMMSSX11-65535ByteX’00’16进位数
1、定义数据结构
----------------------------------------------------------------
(1) 变量: Data 变量名 Type 变量类型,如:Data S1 Type I.
(2) 常量:Constants 常量名 Type 变量类型,如:Constants PI Type P 3.1415926.
(3) 静态变量:STATICS [] [] [](4) 自定义变量类型:
Types: Begin of 自定义变量类型,
变量名1 Type 变量类型1,
变量名2 Type 变量类型2,
End of 自定义变量类型.
Data 自定义变量 Type 自定义变量类型.(5) 字段变量:
Data: Begin of Address,
Name(10) Type C,
Number Type P,
End of Address.(6) 内表:
Table: 表名.
例:
TABLES: SPFL.
SELECT * FROM SPFL.
WRITE: SPFL-MANDT, SPFL-CARRID,SPFL-CONNECTION.
ENDSELECT.
2、系统定义数据
-----------------------------------------------------------------
SPACE 空白字符串
SY-SUBRC 系统执行传回值, 0 表示成功
SY-UNAME logon帐号
SY-DATUM 系统日期
SY-UZEIT 系统时间
SY-TCODE 目