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 [] [] [] 其中: [] 里的内容表示可选项。

:变量名称,最长30个字符,不可含有 + , . , : ( ) 等字符; :长度及变量类型; :初值

:小数位数 例如:

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 正对在资料项的下面显示 NO-GAP 紧接着显示,不留空格

USING EDIT MASK : 使用给定格式显示, 如 12:03:20 USING NO EDIT MASK: 不使用内嵌子元

NO-ZERO: 数字前面 0 的部分不显示 NO-SIGN: 不显示正负号 DECIMALS : 显示 位小数 EXPOENT : F(浮点数)指数的值

ROUND : 四舍五入至小数点后位 CURRENCY : 币别显示

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: AS SYMBOL. WRITE: AS ICON. 例如: INCLUDE . INCLUDE .

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 OCCURS , TYPE , [ TYPE , TYPE , ? ] END OF . 格式二. TYPES: BEGIN OF ,

TYPE , [ TYPE , TYPE , ? ] END OF .

TYPES TYPE OCCURS . 格式三. DATA: BEGIN OF .

INCLUDE STRUCTURE . DATA: END OF .

DATA: LIKE OCCURS . 1、 APPEND LINE

格式: APPEND [ TO ] . 举例一. (使用work area) DATA: BEGIN OF LINE,

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 [FROM ] [TO ] TO . 将的元素加入至中,可选取自的范围. APPEND LINES OF ITAB TO JTAB.

2、 COLLECT LINE

COLLECT 指令也是将元素加入Internal table中,与APPEND 的区别是: COLLECT指令在非数值字段相同的情况下,将数值字段汇总.

格式: COLLECT [ INTO] DATA: BEGIN OF ITAB OCCURS 3, COL1(3) TYPE C, COL2 TYPE I, END OF ITAB.

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 [ INTO] [INITIAL LINE INTO ] [INDEX ]

或者: INSERT LINES OF [FROM TO ] INTO INDEX 其中: 即work area,工作区中的元素.

[INITIAL LINE INTO] :插入一笔初始化的记录. : internal table

[INDEX ]: internal table 的记录号.(新加入的元素放在此记录前面) 读取internal table 格式一:

LOOP AT [INTO ][FROM TO ][WHERE ] ENDLOOP. 格式二:

READ TABLE [INTO ] [INDEX / WITH KEY ] 举例. (格式二)

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 [FROM ][INDEX ][TRANSPORTING ?][WHERE ]

举例一. 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 INDEX .

或: DELETE [FROM TO ] [WHERE ] Internal table 排序

SORT [][BY ?]

其中: 有DESCENDING 和ASCENDING, Default 为ASCENDING. : 为指定排序的字段. 加总 SUM.

总和计算存放与work area中,但只能在LOOP 中使用. 例: LOOP AT ITAB INTO LINE. SUM. ENDLOOP.

WRITE: / LINE-COL1, LINE-COL2. 初始化internal table

REFRESH . 清空中的值.

CLEAR . 清空的Header Line. FREE . 释放记忆体空间.

赋值之MOVE的使用

语法:

MOVE TO

将F1的值存至变数 F2 中, 也可写成 F2 = F1

?使用 Offset 语法:

MOVE [+] TO [+] Example:

DATA: F1(10) VALUE ‘ABCDEFGHIJ’. F2(5).

F2 = F1+3(5). “自第4个位置开始取出5个字符 F2 的内容会变成 DEFGH

语法:

MOVE –CORRESPONDING TO .

将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 () TO Example:

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 [BY PLACES] [] : (1).空白, 字符串往左移一位 (2).LEFT, 字符串往左移 n 位 (3).RIGHT, 字符串往右移 n 位

(4).CIRCULAR: 字符串以环状方式移位 Example:

DATA STRING(10) VALUE ‘ABCDEFGHIJ’. SHIFT STRING. “得到 BCDEFGHI’

SHIFT STRING BY 2 PLACES RIGHT. “得到 ABCDEFGH

2.取代字符串内容 语法:

REPLACE WITH INTO 将字符串 中的 来取代 Example:

DATA: STRING(10) VALUE ‘ABCDEFGHI’, STR1(3) VALUE ‘DEF’, STR2(3) VALUE ‘123’.

REPLACE STR1 WITH STR2 INTO STRING. WRITE / STRING. “得到 ABC123GHI 3.大小写的转换 语法:

TRANSLATE TO UPPER CASE. “转成大写 TRANSLATE TO LOWER CASE. “转成小写 4.在字符串中寻找部分字符串 语法:

SEARCH FOR Example:

DATA STRING(10) VALUE ‘ABCDEFGHIJ’.

会回存至两个变数, SY-SUBRC 和 SY-FDPOS, 若找到则 SY-SUBRC 为 0

SY-FDPOS 存开始位迭, 若找不到则 SY-SUBRC为 4, SY-FDPOS为 0

5.字符串长度 STRLEN() Example:

INT = STRLEN(‘XYZABC’). “得到 6 INT = STRLEN(‘ABC ’ ). “得到 3 6.取部分字符串 [+][] Example:

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 . ….. ELSE.

ENDIF.

(1).在每个判断叙述之后要加上 . Example: IF 3 > 8.

WRITE / ‘3 is less than 8’. ENDIF.

条件选择--CASE

CASE <变量f>.

WHEN . WHEN . ….

WHEN OTHERS. ENDCASE. Example:

S = ‘A’. CASE S.

WHEN ‘X’.

WRITE / ‘String is X’. WHEN OTHERS.

WRITE / ‘String is not X’. ENDCASE.

循环

DO [n TIMES] [VARYING FROM ENDDO.

Example:

DO 2 TIMES. WRITE / ‘X’.

TO . ENDDO. 执行结果: X X

DO VARYING I FROM 1 TO 10. S = S + I. ENDDO.

WRITE: / ,’1+2+3+…+10=’,S

执行结果: 1+2+3+…+10=55(没试成功,直接报语法错误)

2.条件循环

语法:

WHILE . ENDWHILE Example:

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 ] [LOWER CASE] [OBLIGATORY] [AS CHECKBOX] [RADIOBUTTON GROUP ] Example:

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 FOR

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 TO 设定开始结束范围输入默认值 Example:

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 [] Example:

SELECTION-SCREEN SKIP 2. 产生两列空白列 2.产生底线

语法:

SELECTION-SCREEN ULINE / (length) Example:

SELECTION-SCREEN ULINE /10(30). 自第10格开始产生长度30的底线 3.显示备注说明 语法:

SELECTION-SCREEN COMMENT / (length) Example:

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 ]. ??. </p><p>SELECTION-SCREEN END OF BLOCK <block>. Example: </p><p> 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. </p><p>数据库SQL </p><p>我们在编写ABAP4程序的时候,经常需要从TABLE中根据某些条件读取数据,.读取数据最常用的方法就是通过SQL语法实现的. </p><p>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 </p><p> OPEN SQL 语句包含有: SELECT,INSERT,UPDATE,MODIFY,DELETE,OPEN CURSOR, FETCH,CLOSE CURSOR,COMMIT WORK,ROLLBACK WORK等. 1. SELECT语句 </p><p>语法格式: </p><p>SELECT <result> [INTO <target>] [FROM <source>] [WHERE <condition>] [GROUP BY <fields>] [ORDER BY <sort order>] 其中: <result>指定要抓取(查询)的字段 </p><p> <target>将读取的记录存放在work area中 </p><p> <source>指定从那个TABLE中读取数据 <condition>抓取(查询)的条件 <fields>指定按那些字段分组 <sort order>排序的字段及方式 相关的系统变量: </p><p> SY-SUBRC = 0 表示读取数据成功 </p><p> <> 0 表示未找到符合条件的记录 SY-DBLNT: 被处理过的记录的笔数. 相关的命令: </p><p> EXIT. 退出循环. </p><p> CHECK <logistic statement>.如果逻辑表达式成立,则继续执行,否则,开 始下一次循环. ◆ .利用循环方式读取所有记录 </p><p>SELECT ?.ENDSELECT.是循环方式读取记录的. </p><p> 例如: </p><p>TABLES MARD. </p><p>SELECT [DISTINCT] * FROM MARD WHERE MATNR = ‘3520421700’. <Statements>. ENDSELECT. </p><p>(从MARD中抓取所有料号=3520421700的数据) ◆读取一笔数据 TABLES MARD. </p><p>SELECT SINGLE * FROM MARD WHERE MATNR = ‘3520421700’. (从MARA中抓取一笔料号=3520421700的资料) ◆ 将读取的记录放在work area中,并且加入Internal table 中. 格式有: </p><p> ... INTO <work area> </p><p> ... INTO CORRESPONDING FIELDS OF <work area> ... INTO (f1, ..., fn) 变量组. ... INTO TABLE <internal table> </p><p> ... INTO CORRESPONDING FIELDS OF TABLE <internal table> ... APPENDING TABLE <internal table> </p><p> ... APPENDING CORRESPONDING FIELDS OF TABLE <internal table> 举例一: </p><p>TABLES MARD. </p><p>DATA: BEGIN OF ITAB OCCURS 10, </p><p> MATNR LIKE MARD-MATNR, WERKS LIKE MARD-WERKS, LGORT LIKE MARD-LGORT, LABST LIKE MARD-LABST, END OF ITAB. </p><p>SELECT MATNR WERKS LGORT LABST </p><p> INTO CORRESPONDING FIELDS OF ITAB FROM MARD </p><p> WHERE MATNR = ‘3520421700’. APPEND ITAB. CLEAR ITAB. ENDSELECT. </p><p>(将读取的结果放在Internal table ITAB中) 举例二. </p><p>TABLES MARD. </p><p>SELECT MATNR MTART MAKTX INTO (t_matnr, t_mtart, maktx) FROM MARD </p><p> WHERE MATNR = ‘3520421700’. <Statements>. ENDSELECT. </p><p>(从MARD中抓取料号=3520421700的料号、类型和描述,放在变量t_matnr, t_mtart, maktx中)。 </p><p>◆按指定的字段排序 TABLES SBOOK. </p><p>SELECT * FROM SBOOK WHERE CARRID = ‘LH’ AND </p><p> 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. </p><p>(利用参数ORDER BY所指定的字段排序) ◆ 抓取数据的条件叙述 (1) BETWEEN <g1> AND <g2> </p><p>例如: WHERE YEAR BETWEEN 1995 AND 2000. (2) LIKE <g> </p><p>例如: WHERE NAME LIKE ‘MIKE%’. (‘%’是通配符号) (3) IN (<g1>?<gn>) </p><p>是<g1>?<gn>里面的任意一个值即可. </p><p>例如: WHERE PLANT IN (‘CHUNGLI’, ‘TAOYUAN’,’LIUTU’). </p><p>(表示PLANT 只要是’CHUNGLI’或’TAOYUAN’或’LIUTU’都可以). </p><p>2. INSERT 语句 </p><p>◆ 从work area 加入到Internal Table中 </p><p>格式: INSERT INTO <database> VALUES <work area> 例如: </p><p>DATA: BEGIN OF WA, </p><p> CODE(6) TYPE C, NAME(30) TYPE C, END OF WA. </p><p>DATA: VEN LIKE WA OCCURS 10. ? </p><p>WA-CODE = ‘530120’. </p><p>WA-NAME = ‘XINGDA ELECTRONICS CO.,LTD’. INSERT INTO VEN VALUES WA . </p><p>如果work area的名称就是internal table的名称,可以直接写成: INSERT <internal table> 例如: </p><p>DATA: BEGIN OF WA OCCURS 10, CODE(6) TYPE C, NAME(30) TYPE C, END OF WA. ? </p><p>WA-CODE = ‘530120’. </p><p>WA-NAME = ‘XINGDA ELECTRONICS CO., LTD’. INSERT WA. ◆ 从另外一个Internal table中INSERT 数据 格式: </p><p>INSERT <itab1> FROM TABLE <itab2> [ACCEPTING DUPLICATE KEY] </p><p>将<itab2>中非NULL的数据加入<itab1>中,加上[ACCEPTING DUPLICATE KEY]能限制相同PRIMARY KEY不重复加入. 3. MODIFY 语法 </p><p>MODIFY <internal table> [FROM <work area>]. </p><p>根据 Primary Key 寻找数据文件中符合的记录, 若找到则更新数据, 若找不到则新增记录 语法: </p><p> MODIFY <database> FROM <wa> Example: </p><p> WA-NO=’34051920’. </p><p> WA-COMPANY=’DELTA’. </p><p> MODIFY SPFLI FROM WA. 4.UPDATE语法 </p><p>1.使用 Primary Key 语法: </p><p> UPDATE <database> FROM <wa> Example: </p><p> TABLES SPFLI. </p><p> DATA WA LIKE SPFLI. WA-NO=’34051920’. </p><p> WA-COMPANY=’DELTA’. </p><p> UPDATE SPFLI FROM WA. </p><p> 如 SPFLI 的 Primary Key是 NO, 则会找到 NO=’34051920’ 的记录, 将其 COMPANY字段异动为 DELTA </p><p></p><p>2.使用条件式 语法: </p><p> UPDATE <database> SET < f1>=<values>… WHERE <condition> 根据条件式异动符合条件式的记录 Example: </p><p> UPDATE SPFLI SET NO=’34051920’ </p><p> COMPANY = ‘DELTA’ WHERE TEL=’4526107’. </p><p> </p><p>5.DELETE 语法 </p><p> DELETE <internal table> [FROM <work area>]. 或: DELETE <internal table> [WHERE <conditions>] 6. DATABASE CURSOR </p><p> Database Cursor是一个数据库暂存区, 将经SELECT指令读取的记录存放至此暂存区, 再由此暂存区放至Work Area中, 可减少数据库读取的次数. 1.开启 Database Cursor 语法: </p><p> OPEN CURSOR <c> FOR SELECT ? WHERE <condition> Example: </p><p> TABLES SPFLI. </p><p> DATA: WA LIKE SPFLI, C1 TYPE CURSOR. </p><p> OPEN CURSOR C1 FOR SELECT * FROM SPFLI WHERE AREA =’TAIWAN’. 2.读取 Database Cursor的数据存入 Work Area </p><p>语法: </p><p> FETCH NEXT CURSOR <c> INTO <wa> Example: </p><p> FETCH NEXT CURSOR C1 INTO WA. </p><p> 读取下一笔Cursor位置的数据存入WA, 如果已无数据可读, SY-SUBRC <>0. 关闭 Database Cursor 语法: </p><p> CLOSE CURSOR <c> Example: </p><p> CLOSE CURSOR C1. 7. COMMIT WORK & ROLLBACK WORK </p><p>要确定数据成功写入数据库,可使用COMMIT WORK指令,如: COMMIT WORK. </p><p>相反的, 如果反悔要复原, 可使用 ROLLBACK WORK, 可复原在上个COMMIT WORK指令之后的数据, 如: </p><p> ROLLBACK WORK. </p><p>§使用NATIVE SQL指令 语法格式: </p><p>EXEC SQL [PERFORMING <form>]. <statements> ENDEXEC. 举例一. EXEC SQL. </p><p> CREATE TABLE AVERI_CLNT ( </p><p> CLIENT CHAR(3) NOT NULL, ARG1 CHAR(3) NOT NULL, ARG2 CHAR(3) NOT NULL, FUNCTION CHAR(10) NOT NULL, </p><p> PRIMARY KEY (CLIENT, ARG1, ARG2) ) ENDEXEC. 举例二. </p><p>DATA: F1(3), F2(3), F3(3). F3 = ' 1 ' EXEC SQL. </p><p> SELECT CLIENT, ARG1 INTO :F1, :F2 FROM AVERI_CLNT WHERE ARG2 = :F3 ENDEXEC </p><p>PERFORMING <form name>的使用: </p><p>如果NATIVE SQL的SELECT命令执行结果是抓到多笔记录,我们想要逐笔记录处理时,就用PERFORMING 参数,这个FORM能被逐次调用.如果想中止调用,就用EXIT FORM SQL结束调用. 例如: </p><p>DATA: F1(3), F2(3), F3(3). </p><p>F3 = '010' </p><p>EXEC SQL PERFORMING WRITE_AVERI_CLNT. </p><p> SELECT CLIENT, ARG1 INTO :F1, :F2 FROM AVERI_CLNT WHERE ARG2 = :F3 ENDEXEC. </p><p>FORM WRITE_AVERI_CLNT. WRITE: / F1, F2. ENDFORM. 注意: </p><p>a. NATIVE SQL把TABLE中的MANDT(client)字段当作一般字段使用,所以在抓取数据时必须指定特定的Client; b. NATIVE SQL中的SELECT语句没有CHECK权限的功能; c. 在登入SAP R/3系统时,我们已经自动与Database连接,所以在执行NATIVE SQL时并不需要CONNECT语句; d. 一条NATIVE SQL语句可以以分号;结束,一般情况下是以句号.结束. e. 某些数据库系统对TABLE名字和FIELD名字有大小写区别,要正确书写. f. 在NATIVE SQL中,双引号”不表示注释. </p><p> </p><p>ABAP/4 PROGRAM MODULE ABAP/4中的Module类似于其它语言中的子程序,通常是先定义后调用.主程序传给Module所需要的参数,然后Module返回主程序所需要的值.当然, ABAP/4中也有 ’传值’ 和 ’传址’ 两种参数传递方式. 一. Macro block (宏) </p><p> 宏(Macro block)包括宏定义语句和宏调用语句. 宏定义的格式: </p><p> DEFINE <macro>. </p><p> <macro statements>. END-OF-DEFINITION. 宏调用的格式: </p><p> <macro> [<p1> <p2>?]. </p><p> 其中: [<p1> <p2>?].表示所使用的参数,参数之间要有一个空格. 举例: </p><p> DATA: result TYPE I. DEFINE MULTI. </p><p> result = &1 * &2. </p><p> WRITE: / ‘&1 * &2’, = result. END-OF-DEFINITION. ? </p><p> MULTI 3 7. 输出结果为: 21. </p><p>宏可以调用其它宏,但不可以调用自身. </p><p>DATA: RESULT TYPE I, N1 TYPE I VALUE 5, N2 TYPE I VALUE 6. DEFINE OPERATION. RESULT = &1 &2 &3. </p><p>OUTPUT &1 &2 &3 RESULT. END-OF-DEFINITION. DEFINE OUTPUT. </p><p>WRITE: / ’The result of &1 &2 &3 is’, &4. END-OF-DEFINITION. OPERATION 4 + 3 . OPERATION 2 ** 7. OPERATION N2 - N1. </p><p>输出结果为: </p><p> The result of 4 + 3 is 7 </p><p>The result of 2 ** 7 is 128 The result of N2 - N1 is 1 </p><p> </p><p>二. Include 使用 </p><p>格式: INCLUDE <yixxxxxx>. </p><p>作用: 将某个写好的INCLUDE 程序(代码)加到原程序中,在程序编译(combine)的时候,系统会自动全部展开并且编译. </p><p>注意: </p><p> INCLUDE程序不能传送数据. 如果需要传送数据使用SUBROUTINES(FORM) 或 FUNCTION MODULES. </p><p>INCLUDE 的调用格式. </p><p> INCLUDE <INCL>. 例如: </p><p>REPORT zchn4062. INCLUDE yiauth00. </p><p>.Global 变量宣告应用 语法: </p><p> DATA: BEGIN OF COMMON PART [<name>], <data 宣告> </p><p> END OF COMMON PART [<name>] 此常使用在 Include 的档案中, 如 ***INCLUDE INCOMMON. </p><p> DATA: BEGIN OF COMMON PART NUMBERS, MID(8), </p><p> MNUM TYPE I, </p><p> END OF COMMON PART NUMBERS. 1.Subroutine 的宣告 </p><p> FORM <subr> [<pass>]. </p><p> <subroutine statement block> ENDFORM. 2.调用的方法 </p><p> (1).Internal Call(内部调用) 语法: </p><p> PERFORM <subr> [<pass>] Example: </p><p> NUM1 = 100. NUM2 = 200. PROFORM ADD. FORM ADD. </p><p> SUM = NUM1 + NUM2. </p><p> WRITE: / ‘NUM1 + NUM2 = ‘,SUM. ENDFORM. </p><p> 执行结果: NUM1 + NUM2 = 300 </p><p> (2).External Call 另一程序(外部调用) 语法: </p><p> PERFORM <subr>(<prog>) [<pass>] [IF FOUND] <subr>:子程序名称 </p><p> <prog>:存放子程序的程序名称 IF FOUND: 找到才执行 Example: </p><p> PROGRAM FORMPOOL. FORM HEADER. </p><p> WRITE: / ‘USER NAME: ‘,SY-UNAME. ENDFORM. </p><p> 在程序中呼叫HEADER子程序 PROGRAM YTEST1. </p><p> PERFORM HEADER(FORMPOOL) IF FOUND. </p><p> (3).External Call 另一专存放子程序的程序文件, 所CALL的Subroutine name 和 存放该Subroutine 的子程序名都存放在变量中. 语法: </p><p> PERFORM (<fsubr>) [IN PROGRAM (<fprog>) [<pass>] [IF FOUND] Example: </p><p> 存放子程序的程序文件 PROGRAM FORMPOOL. FORM SUB1. </p><p> WRITE: / ‘USER NAME:’,SY-UNAME. ENDFORM. FORM SUB2. </p><p> WRITE: / ‘HOST SERVER:’,SY-HOST. ENDFORM. </p><p> 在程序中呼叫 FORMPOOL中的SUB2 子程序 SUBNAME = ‘SUB2’. </p><p> PROGNAME = ‘FORMPOOL’. </p><p> PERFORM (SUBNAME) IN PROGRAM (PROGNAME) IF FOUND </p><p> </p><p>参数值的传递 </p><p> 在ABAP/4中参数的传递可分成 1. Call By Reference: </p><p>传参数时将数据的存放地址(address)传至参数中, 也就是子程序中的参数变量与外部实际变量共享地址内的值, 又称为 Call By Address, 若在子程序中地址中的值改变了, 外部实 </p><p>际变量的值也会跟着改变. 语法: </p><p> FORM <subr> [USING <f1> <f2>?] [CHANGING <f1>?] PERFORM <subr> [USING <f1> <f2>?] [CHANGING <f1>?] </p><p> Using 之后接在子程序中不会改变的变量, CHANGING接会改变值的变量 但实际上USING之后的参数在子程序中也可将值改变 </p><p></p><p> Example: SUM = 0. </p><p> NUM1 = 100. NUM2=200. </p><p> PERFORM ADD USING NUM1 NUM2 CHANGING SUM. WRITE: / NUM1,NUM2,SUM “ SUM 由 0 变成 300 FORM ADD USING NUM1 NUM2 CHANGING SUM. SUM = NUM1 + NUM2. ENDFORM. 执行结果: </p><p> 100 200 300 </p><p> </p><p>2. Call By Value </p><p>传参数时将数据的值复制一份至另一地址中, 所以在子程序中参数变量值改变, 并不会影 </p><p>响外部实际变数的值. 语法: </p><p> FORM <subr> USING VALUE(<f1>?) </p><p> 使用 VALUE(<f1>)表示 <f1>是 Call By Value的传递 PERFORM <subr> USING <f1> </p><p> Example: SUM = 0. NUM1 = 5. </p><p> PERFORM MULTI USING NUM1 CHANGING SUM. </p><p> WRITE: / NUM1,SUM “NUM1值还是5, SUM 由 0 变成 120 FORM MULTI USING VALUE(NUM1) CHANGING SUM. SUM = 1. </p><p> WHILE NUM1 > 1 </p><p> SUM = SUM * NUM1. NUM1 = NUM1 – 1. ENDWHILE.. ENDFORM. 执行结果: </p><p> 5 120 </p><p>3. Call By Value and Return Result </p><p>传入参数值的方式同Call By Value, 但在子程序结束执行时会将传入的参数值复制 一份传回给外部实际变数. 执行过程中外部实际参数不变. 语法: </p><p> FORM ?.. CHANGING VALUE(<f1>) PERFORM ?. CHANGING ?. <f1> Example: </p><p> SUM = 0. </p><p> NUM1 = 100. NUM2=200. </p><p> PERFORM ADD USING NUM1 NUM2 CHANGING SUM. </p><p> WRITE: / NUM1,NUM2,SUM “ SUM 由 0 变成 300 </p><p> FORM ADD USING NUM1 NUM2 CHANGING VALUE(S). S = NUM1 + NUM2. </p><p> WRITE: / NUM1,NUM2,SUM “得到结果为 100 200 0 ENDFORM. 执行结果: </p><p> 100 200 0 “在子程序中 SUM值尚未改变 </p><p> 100 200 300 “返回程序时, 将变量 S的值复制给 SUM “所以 SUM值变成 300 </p><p>INTERNAL TABLE的传送. </p><p> 1, PASSING WITH USING AND CHANGING. 2, PASSING WITH TABLES. </p><p> </p><p>函数的调用: 函数的呼叫 语法: </p><p> CALL FUNCTION <module> IMPORTING F1=a1?. EXPORTING F1=a1?. CHANGING F1=a1? TABLES F1=a1? EXCEPTIONS F1=a1? Example: </p><p> DATA: TEXT(20), </p><p> LEN TYPE I. </p><p> TEXT = ‘ABCDEFGHIJ’. </p><p> CALL FUNCTION ‘STRING_LENGTH’ EXPORTING STRING = TEXT IMPORTING LENGTH = LEN. WRITE / LEN. </p><p> 注意 EXPORTING与IMPORTING刚好颠倒, 执行所得结果为 10 </p><p>系统内部的FUNCTION可以通过模式,CALL FUNCTION 然后输入方法名可直接输出其格式。 <1>.Import Parameter: 传入的参数名称, 但实际在程序中使用时刚好与Export 相颠们 <2>.Export Parameter: 传回的参数名称, 程序中变成 Import 的使用 </p><p> <3>.Changing Parameter:使用Call By Value and Return Result方法的参数 <4>.Table Parameter: 使用的 Initial Table参数 <5>.Exceptions: 错误处理参数 </p><p> 如 STRING_LENGTH 为一传回字符串长度的函数, 其设定的参数如下: Import : String 传入一字符串字符串数据 Export: Length 传回的字符串长度值 </p><p> </p><p>Field symbol 指针<字段符号> </p><p>作用: 直接对内表进行操作,而不用再重新定义结构体对目标内表数据进行拷贝, 增大了效率. </p><p>定义指针语法: </p><p>Data: var_a TYPE I VALUE 4. FIELD-SYMBOLS: <fs> TYPE i. ASSIGN var_a TO <fs>. <fs> = 77. </p><p>重要: 定义的指针名,必须加”<>” 例: </p><p>FIELD-SYMBOLS: <FS> LIKE LINE OF ITAB. READ TABLE ITAB INDEX 2 ASSIGNING <FS>. <FS>-ADDRESS = 1000. </p><p>ITAB内表表名,ADDRESS 为内表里工作区里的字段。 </p><p>读取内表中的第二行数据附给指针,修改指针数据,则内表数据也相应被修改。 重要: 不能直接指针对sorted 和 hash表进行操作 </p><p> </p><p>Selction screen events 选择屏幕事件 事件启动流程 </p><p>1. 程序启动后,触发load-of-program或initialization 事件对变量进行初始化 2. 如果有parameters 或 select-options屏幕变量,则会弹出选择屏幕 3. 用户输入值后,点击 回车 或 运行(F8)(有区别,见下文) 完成屏幕输入 </p><p>4. 如果程序中有 at selection-screen 事件的话, 这时它就会被触发,它的功能是 对用户输入的值进行校验, 而最主要的功能是,判断用户是否具有对该数据进行操作的权限. </p><p>5. 当校验成功后, start-of-selection 别触发.并显示Basic list screen 6. 双击其中一条数据, 则会触发 at line-selection…….. 重点: 回车 和 运行(F8)的区别 </p><p>1. 回车: 仅仅具有校验功能, 无论校验成功与否, 程序都不会往下执行 </p><p>2. 运行(F8): 校验成功后 程序才能往下运行, 如果校验失败,程序无法继续运行 注意: at selection screen 的主要功能 是authority check 权限校验 , 如果校验失败,则应该生成一个E (error)类型的message 以通知用户校验失败. </p><p></p> <p>本文来源:<a href="https://www.bwwdw.com/article/acdr.html">https://www.bwwdw.com/article/acdr.html</a></p><span class="doc-download-e"></span> </div> <script type="text/javascript">s("download_bottom");</script> <div class="related_article"> <div class="related_top"><code>相关文章:</code></div> <ul><li><a href="https://www.bwwdw.com/article/acdr.html" target="_blank" title="ABAP基础语法学习笔记">ABAP基础语法学习笔记</a></li><li><a href="https://www.bwwdw.com/article/8jn2.html" target="_blank" title="ABAP基本语法学习关键语句的写法">ABAP基本语法学习关键语句的写法</a></li><li><a href="https://www.bwwdw.com/article/6fn3.html" target="_blank" title="韩语语法学习2">韩语语法学习2</a></li><li><a href="https://www.bwwdw.com/article/15wf.html" target="_blank" title="英语语法学习之术">英语语法学习之术</a></li><li><a href="https://www.bwwdw.com/article/zps6.html" target="_blank" title="语法学生讲义">语法学生讲义</a></li><li><a href="https://www.bwwdw.com/article/4op.html" target="_blank" title="初中英语语法学习资料">初中英语语法学习资料</a></li><li><a href="https://www.bwwdw.com/article/abr.html" target="_blank" title="初中英语语法学习资料">初中英语语法学习资料</a></li><li><a href="https://www.bwwdw.com/article/drp.html" target="_blank" title="5(完整版)英语语法学习资料">5(完整版)英语语法学习资料</a></li><li><a href="https://www.bwwdw.com/article/x5m.html" target="_blank" title="abap基础语法练习">abap基础语法练习</a></li><li><a href="https://www.bwwdw.com/article/oxr.html" target="_blank" title="Dictogloss对英语语法学习质量影响的实证研究">Dictogloss对英语语法学习质量影响的实证研究</a></li></ul> </div> <div class="in_reading"><p class="rel_art_line">正在阅读:</p><p><a target="_blank" href="https://www.bwwdw.com/article/acdr.html" title="ABAP基础语法学习笔记">ABAP基础语法学习笔记</a><span>04-02</span></p><p><a target="_blank" href="https://www.bwwdw.com/article/ichp.html" title="人教版小学英语总复习资料(三- 六年级重点单词、词组、句子)">人教版小学英语总复习资料(三- 六年级重点单词、词组、句子)</a><span>04-18</span></p><p><a target="_blank" href="https://www.bwwdw.com/article/ggwf.html" title="共产党宣言分析">共产党宣言分析</a><span>10-19</span></p><p><a target="_blank" href="https://www.bwwdw.com/article/fh9v.html" title="国土资发〔2012〕162号 国土资源部关于加强土地储备与融资管理的通知">国土资发〔2012〕162号 国土资源部关于加强土地储备与融资管理的通知</a><span>11-09</span></p><p><a target="_blank" href="https://www.bwwdw.com/article/u5sm.html" title="重点项目推进工作方案3篇 重点项目推进方案">重点项目推进工作方案3篇 重点项目推进方案</a><span>07-23</span></p><p><a target="_blank" href="https://www.bwwdw.com/article/5uo3.html" title="医院院内感染管理相关制度目录">医院院内感染管理相关制度目录</a><span>06-25</span></p><p><a target="_blank" href="https://www.bwwdw.com/article/dfd8.html" title="T台秀活动策划书">T台秀活动策划书</a><span>03-17</span></p><p><a target="_blank" href="https://www.bwwdw.com/article/h96r.html" title="中国人民解放军现役军官职务任免条例">中国人民解放军现役军官职务任免条例</a><span>04-09</span></p><p><a target="_blank" href="https://www.bwwdw.com/article/w4vk.html" title="坚持不懈的蜗牛作文300字">坚持不懈的蜗牛作文300字</a><span>07-01</span></p><p><a target="_blank" href="https://www.bwwdw.com/article/n77l.html" title="壁立千仞无欲则刚 壁立千仞,无欲则刚出自哪里?全句是什么?">壁立千仞无欲则刚 壁立千仞,无欲则刚出自哪里?全句是什么?</a><span>04-12</span></p></div> <div class="previous"> <span class="pre">上一篇:<a title="美剧字幕组翻译谈如何提高英语听力口语" href="https://www.bwwdw.com/article/8cdr.html">美剧字幕组翻译谈如何提高英语听力口语</a></span> <span class="next">下一篇:<a title="动物生理学章节测试题及答案" href="https://www.bwwdw.com/article/bcdr.html">动物生理学章节测试题及答案</a></span> </div> </div> </div> <div class="right-side"> <div class="right_fix"> <script type="text/javascript">s("right_top");</script> <div class="hotSearch"><div class="hotSearch_tl"><span></span>相关文章</div><ul><li><span>1</span><a href="https://www.bwwdw.com/article/sabr.html" title="现代汉语语法学案(带答案)" target="_blank">现代汉语语法学案(带答案)</a></li><li><span>2</span><a href="https://www.bwwdw.com/article/ti1b.html" title="韩语语法学习:韩国语被动词和使动词" target="_blank">韩语语法学习:韩国语被动词和使动词</a></li><li><span>3</span><a href="https://www.bwwdw.com/article/5m8o.html" title="现代汉语语法学案(带答案)" target="_blank">现代汉语语法学案(带答案)</a></li><li><span>4</span><a href="https://www.bwwdw.com/article/kmst.html" title="汉语语法学的一份书目" target="_blank">汉语语法学的一份书目</a></li><li><span>5</span><a href="https://www.bwwdw.com/article/sohd.html" title="古汉语语法学学术分歧" target="_blank">古汉语语法学学术分歧</a></li><li><span>6</span><a href="https://www.bwwdw.com/article/meg6.html" title="必修三第一单元语法学案 - 图文" target="_blank">必修三第一单元语法学案 - 图文</a></li><li><span>7</span><a href="https://www.bwwdw.com/article/4rd7.html" title="(0230)古代汉语语法学复习思考题" target="_blank">(0230)古代汉语语法学复习思考题</a></li><li><span>8</span><a href="https://www.bwwdw.com/article/q5i4.html" title="高中英语必修二第五单元语法学案" target="_blank">高中英语必修二第五单元语法学案</a></li><li><span>9</span><a href="https://www.bwwdw.com/article/cr0v.html" title="民法学习笔记" target="_blank">民法学习笔记</a></li><li><span>10</span><a href="https://www.bwwdw.com/article/mcnj.html" title="从所谓“补语” 谈古代汉语语法学体系的参照系" target="_blank">从所谓“补语” 谈古代汉语语法学体系的参照系</a></li></ul></div> <script type="text/javascript">s("right_mid");</script> <div class="right_list"><div class="right_list_t"><i></i><span>最新文章</span></div><ul><li><a href="https://www.bwwdw.com/article/inb.html" target="_blank" title="多层物业服务方案">多层物业服务方案</a></li><li><a href="https://www.bwwdw.com/article/hnb.html" target="_blank" title="(审判实务)习惯法与少数民族地区民间纠纷解决问题(孙 潋)">(审判实务)习惯法与少数民族地区民间纠纷解决问题(孙 潋)</a></li><li><a href="https://www.bwwdw.com/article/mnb.html" target="_blank" title="人教版新课标六年级下册语文全册教案">人教版新课标六年级下册语文全册教案</a></li><li><a href="https://www.bwwdw.com/article/jnb.html" target="_blank" title="词语打卡">词语打卡</a></li><li><a href="https://www.bwwdw.com/article/4nb.html" target="_blank" title="photoshop实习报告">photoshop实习报告</a></li><li><a href="https://www.bwwdw.com/article/1nb.html" target="_blank" title="钢结构设计原理综合测试2">钢结构设计原理综合测试2</a></li><li><a href="https://www.bwwdw.com/article/qnb.html" target="_blank" title="2014年期末练习题">2014年期末练习题</a></li><li><a href="https://www.bwwdw.com/article/enb.html" target="_blank" title="高中数学中的逆向思维解题方法探讨">高中数学中的逆向思维解题方法探讨</a></li><li><a href="https://www.bwwdw.com/article/nnb.html" target="_blank" title="名师原创 全国通用2014-2015学年高二寒假作业 政治(一)Word版">名师原创 全国通用2014-2015学年高二寒假作业 政治(一)Word版</a></li><li><a href="https://www.bwwdw.com/article/lnb.html" target="_blank" title="北航《建筑结构检测鉴定与加固》在线作业三">北航《建筑结构检测鉴定与加固》在线作业三</a></li><li><a href="https://www.bwwdw.com/article/snb.html" target="_blank" title="XX县卫生监督所工程建设项目可行性研究报告">XX县卫生监督所工程建设项目可行性研究报告</a></li><li><a href="https://www.bwwdw.com/article/knb.html" target="_blank" title="小学四年级观察作文经典评语">小学四年级观察作文经典评语</a></li><li><a href="https://www.bwwdw.com/article/znb.html" target="_blank" title="浅谈110KV变电站电气一次设计-程泉焱(1)">浅谈110KV变电站电气一次设计-程泉焱(1)</a></li><li><a href="https://www.bwwdw.com/article/0nb.html" target="_blank" title="安全员考试题库">安全员考试题库</a></li><li><a href="https://www.bwwdw.com/article/cnb.html" target="_blank" title="国家电网公司变电运维管理规定(试行)">国家电网公司变电运维管理规定(试行)</a></li><li><a href="https://www.bwwdw.com/article/9nb.html" target="_blank" title="义务教育课程标准稿征求意见提纲">义务教育课程标准稿征求意见提纲</a></li><li><a href="https://www.bwwdw.com/article/ukb.html" target="_blank" title="教学秘书面试技巧">教学秘书面试技巧</a></li><li><a href="https://www.bwwdw.com/article/ynb.html" target="_blank" title="钢结构工程施工组织设计">钢结构工程施工组织设计</a></li><li><a href="https://www.bwwdw.com/article/6kb.html" target="_blank" title="水利工程概论论文">水利工程概论论文</a></li><li><a href="https://www.bwwdw.com/article/3kb.html" target="_blank" title="09届九年级数学第四次模拟试卷">09届九年级数学第四次模拟试卷</a></li><li><a href="https://www.bwwdw.com/%E8%AF%AD%E6%B3%95/" target="_blank" title="语法">语法</a></li><li><a href="https://www.bwwdw.com/%E5%9F%BA%E7%A1%80/" target="_blank" title="基础">基础</a></li><li><a href="https://www.bwwdw.com/%E7%AC%94%E8%AE%B0/" target="_blank" title="笔记">笔记</a></li><li><a href="https://www.bwwdw.com/%E5%AD%A6%E4%B9%A0/" target="_blank" title="学习">学习</a></li><li><a href="https://www.bwwdw.com/ABAP/" target="_blank" title="ABAP">ABAP</a></li></ul></div> <script type="text/javascript">s("right_bottom");</script> <div class="right_list"><div class="right_list_t"><i></i><span>推荐文章</span></div><ul><li><a href="https://www.bwwdw.com/article/wcdr.html" target="_blank" title="城镇土地定级">城镇土地定级</a></li><li><a href="https://www.bwwdw.com/article/ocdr.html" target="_blank" title="推 荐 高 级 专 业 技 术 职 务 任 职 资 格 人 员 情 况 综 合">推 荐 高 级 专 业 技 术 职 务 任 职 资 格 人 员 情 况 综 合</a></li><li><a href="https://www.bwwdw.com/article/xcdr.html" target="_blank" title="怀仁集《王羲之圣教序》原文译文">怀仁集《王羲之圣教序》原文译文</a></li><li><a href="https://www.bwwdw.com/article/5cdr.html" target="_blank" title="数据库系统原理练习题2">数据库系统原理练习题2</a></li><li><a href="https://www.bwwdw.com/article/tcdr.html" target="_blank" title="特种设备作业人员考试Q4桥门式起重机司机题库(2016年12月完全版">特种设备作业人员考试Q4桥门式起重机司机题库(2016年12月完全版</a></li><li><a href="https://www.bwwdw.com/article/vcdr.html" target="_blank" title="和谐D3B交流电力传动机车">和谐D3B交流电力传动机车</a></li><li><a href="https://www.bwwdw.com/article/2cdr.html" target="_blank" title="全面深化改革,调整编制体制,为新质战斗力建设助力">全面深化改革,调整编制体制,为新质战斗力建设助力</a></li><li><a href="https://www.bwwdw.com/article/fcdr.html" target="_blank" title="河南省雪枫中学2015届高中生物同步培优资料 微专题13 分子组成热">河南省雪枫中学2015届高中生物同步培优资料 微专题13 分子组成热</a></li><li><a href="https://www.bwwdw.com/article/dcdr.html" target="_blank" title="一般将来时+一般过去时 讲解及练习题">一般将来时+一般过去时 讲解及练习题</a></li><li><a href="https://www.bwwdw.com/article/hcdr.html" target="_blank" title="人才梯队建设目的">人才梯队建设目的</a></li><li><a href="https://www.bwwdw.com/article/rcdr.html" target="_blank" title="蓝瑛交游研究">蓝瑛交游研究</a></li><li><a href="https://www.bwwdw.com/article/pcdr.html" target="_blank" title="海尔的零库存案例分析2">海尔的零库存案例分析2</a></li><li><a href="https://www.bwwdw.com/article/gcdr.html" target="_blank" title="华中科技大学土木工程与力学学院考试 B卷(闭卷)">华中科技大学土木工程与力学学院考试 B卷(闭卷)</a></li><li><a href="https://www.bwwdw.com/article/7cdr.html" target="_blank" title="全钢装配式附着升降脚手架">全钢装配式附着升降脚手架</a></li><li><a href="https://www.bwwdw.com/article/6cdr.html" target="_blank" title="汽车设计1-6章复习资料">汽车设计1-6章复习资料</a></li><li><a href="https://www.bwwdw.com/article/3cdr.html" target="_blank" title="暑期“三下乡”社会实践总结表彰大会讲话稿">暑期“三下乡”社会实践总结表彰大会讲话稿</a></li><li><a href="https://www.bwwdw.com/article/ucdr.html" target="_blank" title="浅谈研发项目管理的作用">浅谈研发项目管理的作用</a></li><li><a href="https://www.bwwdw.com/article/y9dr.html" target="_blank" title="机械设备安全防护装置 - 图文">机械设备安全防护装置 - 图文</a></li><li><a href="https://www.bwwdw.com/article/c9dr.html" target="_blank" title="利用分解素因数法解题">利用分解素因数法解题</a></li><li><a href="https://www.bwwdw.com/article/99dr.html" target="_blank" title="小学二年级上学期数学1—4单元测试题">小学二年级上学期数学1—4单元测试题</a></li></ul></div> </div> </div> </div> <div class="footer"> <p>Copyright©<script>timestamp2date(1);</script><a href="https://www.bwwdw.com/" target="_blank" title="博文网">博文网</a>bwwdw.com 版权所有</p> <p class="gray"><a href="https://www.bwwdw.com/article/" target="_blank">最新更新</a> | <a href="https://www.bwwdw.com/hot/" target="_blank">热点专题</a> | <a href="https://www.bwwdw.com/sitemap.html" target="_blank">网站地图</a> | <a href="https://www.bwwdw.com/tag/" target="_blank">TAG专题</a> | <a href="https://www.bwwdw.com/sitemap.xml" target="_blank">XML地图</a> | <a href="https://so.bwwdw.com" target="_blank">范文搜索</a><script type="text/javascript">tj();</script></p> </div> <a href="#0" class="cd-top">Top</a> <script src="/static/fanwen/js/jquery-1.9.1.min.js"></script> <script type="text/javascript"> document.write('<script type="text/javascript" src="/static/fanwen/js/pubuliu.js?'+RAND_STR+'"><\/script>'); document.write('<script type="text/javascript" src="/static/fanwen/js/lazyimg.js?'+RAND_STR+'"><\/script>'); document.write('<script type="text/javascript" src="/static/fanwen/js/gotop.js?'+RAND_STR+'"><\/script>'); </script> <script type="text/javascript"> $.ajax({ "url":"https://www.bwwdw.com/open/doc/readViews.json?id=acdr", "type":"get", "data":"", "dataType":"json", "success":function(res){ $("#read_views").html(res.data); } }); </script> <script type="text/javascript">bottomAction();</script> </body> </html>