ABAP语法完整版

合集下载

abap at语法

abap at语法

abap at语法ABAP(Advanced Business Application Programming)是一种在SAP系统中使用的专用编程语言,用于开发和定制企业应用程序。

下面是ABAP语法的一些常见特征:1. ABAP程序以关键词 "REPORT" 或者 "PROGRAM" 开始,并以句点(.)结尾。

例如:REPORT Z_MY_REPORT.或PROGRAM Z_MY_PROGRAM.2. ABAP程序由不同的块组成,包括 "DATA"、"TYPES"、"BEGIN OF"、"LOOP"、"SELECT"、"IF"、"CASE" 等。

例如:DATA: lv_variable TYPE i. "定义变量TYPES: BEGIN OF ty_structure. "定义结构INCLUDE TYPE standard table of sflight. "包含标准表END OF ty_structure.LOOP AT it_table INTO lv_variable. "遍历表...ENDLOOP.SELECT * FROM sflight INTO TABLE it_table. "从数据库中选择数据IF lv_variable > 10. "条件判断...ENDIF.CASE lv_variable. "多重条件判断WHEN 1....WHEN 2....OTHERWISE....ENDCASE.3. ABAP语句以关键词和句点结尾,如 "DATA"、"WRITE"、"IF"、"ENDIF"等。

ABAP基本语法学习关键语句的写法[精品]

ABAP基本语法学习关键语句的写法[精品]

ABAP基本语法学习关键语句的写法内表建立过程:1、声明一个结构体2、用声明好的结构体作为工作区,声明一个内表内表名称like standard table of 结构体名称,内表名称like sorted table of 结构体名称,内表名称like harshed table of 结构体名称。

后面可以用到with 选项来进行关键字的声明。

基本语法如下:DATA itab { {TYPE tabkind OF [REF TO] type}| {LIKE tabkind OF dobj} }[WITH key] [INITIAL SIZE n][WITH HEADER LINE][VALUE IS INITIAL][READ-ONLY].DATA rtab {TYPE RANGE OF type}|{LIKE RANGE OF dobj}[INITIAL SIZE n][WITH HEADER LINE][VALUE IS INITIAL][READ-ONLY].此语句可以定义一个范围表,在操作数据库时可以用来作为判断数据选择的条件描述。

3、向内表中插入数据,插入数据可以用insert数据into内表语句或者是append数据to内表语句。

可以插入整个内表到另一内表insert lines of 内表名称into table 另一内表名称。

亦可以进行累加插入:collect 数据into 内表名称。

相同的数据进行累积。

4、修改内表数据,利用modify 关键字,modify 内表名称from 数据(用结构体表示的数据)。

可以修改多行,modify 内表名称from 数据transporting 关键字where 条件。

5、读内表数据的几种操作方法:用Include来构造一个结构体INCLUDE { {TYPE struc_type} | {STRUCTURE struc} }[AS name [RENAMING WITH SUFFIX suffix]].TYPES: BEGIN OF t_day,work TYPE c LENGTH 8,free TYPE c LENGTH 16,END OF t_day.DATA BEGIN OF week.INCLUDE TYPE t_day AS monday RENAMING WITH SUFFIX _mon.INCLUDE TYPE t_day AS tuesday RENAMING WITH SUFFIX _tue.INCLUDE TYPE t_day AS wednesday RENAMING WITH SUFFIX _wed. DATA END OF week.可以用两种方式来访问结构体的内容:1、直接用结构体的名称来访问:week-monday-work, week-monday-free, week-tuesday-work2、用重新命名的后缀名字来访问:week-work_mon, week-free_mon, week-work_tue类对象的定义方式:CLASS class DEFINITION [class_options].[PUBLIC SECTION.[components]][PROTECTED SECTION.[components]][PRIVATE SECTION.[components]]ENDCLASS.类对象的实现方式:CLASS class IMPLEMENTATION....METHOD ......ENDMETHOD....ENDCLASS.类对象的继承:CLASS class DEFINITIONLOCAL FRIENDS class1 class2 ...intf1 intf2 ...CLASS class DEFINITION { {DEFERRED [PUBLIC]} | LOAD }.[PUBLIC][INHERITING FROM superclass][ABSTRACT][FINAL][CREATE {PUBLIC|PROTECTED|PRIVATE}][SHARED MEMORY ENABLED][FOR TESTING][[GLOBAL] FRIENDS class1 class2 ...intf1 intf2 ...].Deferred 关键字可以预先声明一个未被定义的类。

ABAP语法

ABAP语法

ABAP语法一、格式。

作用:设置或更改有效的输出格式。

注意:由Format设置的格式会影响到清淡的下一个输出操作,下一个输出命令或下一个新行。

附加ON对于转换贴切的输出格式变得更随意。

你也能设置静态的附加ON,OFF和n(对于颜色)。

1、颜色。

Format Color n [ON] or Format Color n[OFF]作用:行背景颜色。

N能有如下的价值。

OFF or COL_BACKGROUND Background (GUI-specific)1 or COL_HEADING Headers (grayish blue)2 or COL_NORMAL List body (bright gray)3 or COL_TOTAL Totals (yellow)4 or COL_KEY Key columns (bluish green)5 or COL_POSITIVE Positive threshold value (green)6 or COL_NEGATIVE Negative threshold value (red)7 or COL_GROUP Control levels (violet)清单颜色注意:每次一个新的事件(START-OF-SELECTION, TOP-OF-PAGE, ...)开始,这个系统的设置回复到COLOR 0。

附加.. INTENSIFIED和... INVERSE影响颜色的显示属性...COLOR对于线不起作用。

WRITE --- OUTPUT AS lineInclude<Line>(或更多广泛的Include<List>)对于行包含关系识别作为永恒,例如:LINE_TOP_LEFT_CORNER, LINE_BOTTOM_MIDDLE_CORNER。

Line不能有其他的显示属性。

如果像颜色(COLOR),背面VIDEO(INVERSE)或变强(INTENSIFIED)被设置,这些忽略输出。

abap find语法

abap find语法

abap find语法
ABAP 的 FIND 语法用于在字符串中查找子字符串,并返回子字
符串的位置。

以下是使用中文编写的 FIND 语法的示例:
FIND 子字符串 IN 目标字符串.
在上述语句中,"子字符串"是要查找的字符串,"目标字符串"是
要在其中进行查找的字符串。

如果找到了子字符串,则系统返回子字
符串在目标字符串中的位置。

示例代码:
DATA: 目标字符串 TYPE STRING,
子字符串 TYPE STRING,
位置 TYPE I.
目标字符串 = 'ABAP 是一种编程语言,用于开发企业级应用程序。

'.
子字符串 = '编程语言'.
FIND 子字符串 IN 目标字符串.
IF sy-subrc = 0.
位置 = sy-fdpos.
WRITE: '子字符串在目标字符串中的位置:', 位置.
ELSE.
WRITE: '未找到子字符串'.
ENDIF.
上述代码中,我们定义了一个目标字符串和一个子字符串,并使
用 FIND 语句在目标字符串中查找子字符串。

如果找到了子字符串,
则将子字符串在目标字符串中的位置存储在位置变量中,并输出结果。

如果没有找到子字符串,则输出 "未找到子字符串"。

这是一个简单的使用 ABAP 的 FIND 语法在字符串中查找子字符
串的示例。

在实际应用中,您可以根据具体需求进行相应的调整和扩展。

ABAP4语法

ABAP4语法

©2008 HAND Enterprise Solutions Co., Ltd. Confidential Not For Public.
9 COLLECT LINE
COLLECT 指令也是将元素加入 指令也是将元素加入Internal table中,与APPEND 的区别是 COLLECT指令在非数值 的区别是: 中与 指令在非数值 字段相同的情况下,将数值字段汇总 字段相同的情况下 将数值字段汇总. 将数值字段汇总 格式: 格式 COLLECT [<work area> INTO ] <itab>
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. 此时, 中放的是2笔数据 此时 internal table中放的是 笔数据 分别为 中放的是 笔数据, 分别为: ITAB-COL1 ITAB-COL2 ‘ABC’ 90 ‘XYZ’ 20
©2008 HAND Enterprise Solutions Co., Ltd. Confidential Not For Public.
5
3 .系统专用变量说明 系统专用变量说明
1 SY-SUBRC : 系统执行某指令后 表示执行成功与否的变量 表示成 系统执行某指令后,表示执行成功与否的变量 表示执行成功与否的变量,’0’
SY-TCODE: 当前执行程序的T_ code 当前执行程序的

abap基本语法汇总

abap基本语法汇总

一数据类型和‎对象在ABAP‎中,可以使用与‎标准数据声‎明相似的语‎法处理数据‎类型,而与数据对‎象无关。

在程序中必‎须声明要使‎用的全部数‎据对象。

声明过程中‎,必须给数据‎对象分配属‎性,其中最重要‎的属性就是‎数据类型。

对算术运算‎的非整型结‎果(如分数)进行四舍五‎入,而不是截断‎。

类型 P 数据允许在‎小数点后有‎数字。

有效大小可‎以是从 1 到 16 字节的任何‎值。

将两个十进‎制数字压缩‎到一个字节‎,而最后一个‎字节包含一‎个数字和符‎号。

在小数点后‎最多允许 14 个数字。

1.3 确定数据对‎象的属性如果要查明‎数据对象的‎数据类型,或者要在程‎序的运行期‎间使用其属‎性,可使用DESCR‎I BE 语句。

语法如下:DESCR‎I BE FIELD‎<f> [LENGT‎H <l>] [TYPE <t> [COMPO‎N ENTS‎<n>]][OUTPU‎T-LENGT‎H <o>] [DECIM‎A LS <d>][EDIT MASK <m>].将由语句的‎参数指定的‎数据对象<f>的属性写入‎参数后的变‎量。

DESCR‎I1.3.1 确定字段长‎度要确定数据‎对象的长度‎,利用DES‎CRIBE‎FIELD‎语句使用 LENGT‎H参数,如下所示:DESCR‎I BE FIELD‎<f> LENGT‎H <l>.系统读取字‎段<f>的长度,并将值写入‎字段<l>。

1.3.2确定数据‎类型要确定字段‎的数据类型‎,利用DES‎CRIBE‎FIELD‎语句使用 TYPE 参数,如下所示:DESCR‎I BE FIELD‎<f> TYPE <t> [COMPO‎N ENTS‎<n>].系统读取字‎段<f>的数据类型‎,然后将值写‎入字段<t>。

abap 语法手册

abap 语法手册

abap 语法手册ABAP语法手册ABAP(Advanced Business Application Programming)是一种用于SAP软件开发的编程语言。

这份手册将介绍ABAP语言的基本语法和常用用法,为开发人员提供一个参考指南。

1. 数据类型和变量声明:ABAP支持多种数据类型,例如整数(INT),浮点数(FLOAT),字符串(STRING)和日期(DATE)。

变量声明可以通过关键字DATA进行,例如:DATA: my_integer TYPE i.DATA: my_string TYPE string.2. 控制结构:ABAP支持常见的控制结构,如条件语句(IF...ELSE...ENDIF)和循环语句(DO...ENDDO,WHILE...ENDWHILE)。

例如:IF my_integer > 10.WRITE: 'The value is greater than 10'.ELSE.WRITE: 'The value is less than or equal to 10'.ENDIF.3. 函数和方法:ABAP允许定义函数和方法来实现特定的功能。

函数可以通过关键字FUNCTION和ENDFUNCTION来定义,而方法可以通过关键字METHOD和ENDMETHOD来定义。

例如:FUNCTION my_function.WRITE: 'Hello, world!'.ENDFUNCTION.4. 数据表和内表:ABAP中的数据表可以通过关键字DATA和TABLE来声明,内表可以通过关键字INTERNAL TABLE和TYPES来声明。

例如:DATA: my_table TYPE TABLE OF my_structure.DATA: my_internal_table TYPE TABLE OF my_structure.5. 数据访问:ABAP提供了方便的数据访问方法,例如通过SELECT语句从数据库中检索数据,或者通过READ TABLE语句从内表中检索数据。

ABAP基本语法

ABAP基本语法

ABAP基本语法目录1.表声明12.定义变量13.常用算术操作符:14.常用比较操作:15.赋值语句26.IF语句27.CASE语句28.DO语句29.WHILE语句210.从数据库中取数据集211.取出单行记录212.WRITE语句213.ULINE语句314.SKIP语句315.定义常量316.定义结构317.TYPES语句418.LIKE语句419.输入参数520.分块语句521.定义内表522.往内表中添加记录623.用LOOP读取内表数据624.用READ读取内表数据625.把数据库的记录读入内表626.CLEAR清空表头和表记录627.DELETE删除内表记录628.REFRESH删除内表记录629.FREE删除内表记录730.在内表中插入记录731.修改内表记录732.对内表进行排序733.内表的控制语句734.循环跳转语句735.常用系统变量836.子程序的定义837.子程序的调用838.子程序的参数传递839.常用事件840.跳出事件的方法9ABAP/4:Advanced Business Application Programming1.表声明Tables: 表名[,表名]. 声明多个表时可用逗号分隔当你声明了一个数据表的同时,系统也同时自动生成了一个和数据表同名的结构,结构的变量集等于数据表里面的字段。

2.定义变量Data: v1[(l)] [type t] [decimals d] [value 'xxx'].v1 是变量名。

(l) 是变量的长度。

t 是数据类型。

d 是小数位。

'xxx'是缺省值。

如:data num(10) type p decimals 3 value '1.12'.3.常用算术操作符:5.赋值语句total = 10.mess = 'this is a test!'.如果字符串中包括 ' 号,用 '' 进行付值,如:mess = 'this is a ''test''! '.6.IF语句if i = 2.write 'i 等于 2'.[else.write 'i 不等于 2'.]endif.7.CASE语句case i. 类似于VFP中的DO CASE语句when 1. write 'i = 1'.when 2. write 'i = 2'.[when others. write 'i <> 1 and i <> 2'.]endcase.8.DO语句do [n] times. 类似于VFP中的FOR语句[执行代码]enddo.9.WHILE语句while [条件]. 类似于VFP中的DO WHILE语句[执行语句]endwhile.10.从数据库中取数据集select * from 数据表 [where 条件].[操作语句]endselect.如:select * from t000 [where mandt < 200].write: / t000-mandt,t000-mtext.endselect.11.取出单行记录select single * from 数据表 [where 条件]. 注:仅取出符合条件的第一行记录select single 字段 from 数据表 into 变量 [where 条件].12.WRITE语句write: [/][定位][数据1][,[定位] [数据2]]……[/] 为插入一行空行,注意单独write一个[/]和在其它数据之前加 [/] 的效果是不一样的,单独的write[/]在插入空行后光标定位在空行的下面,在其它数据前加[/]在插入空行后光标定位于所插的空行。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

SAP ABAP / 4 基础知识学习数据类型C :字符串D :日期型格式为 YYYYMMDD 例:'1999/12/03'F : 浮点数长度为8I :整数N :数值组成的字符串如:011,'302'P : PACKED数用于小数点数值如:12.00542T : 时间格式为:HHMMSS 如:'14:03:00'X : 16进制数如:'1A03'*-------------------------------------------------------------------------------------* 变量声明DATA <F> [<Length>] <type> [<value>][decimals]<F> 变量名称<length><type> 变量类型及长度<value> 初值<decimals> 小数位数exp:DATA : COUNTER TYPE P DECIMALS 3.NAME(10) TYPE C VALUE 'DELTA'.S_DATE TYPE D VALUE '19991203'.exp:DATA : BEGIN OF PERSON,NAME(10) TYPE C,AGE TYPE I,WEIGHT TYPE DECIMALS 2,END OF PERSON.另外,有关DATA声明的指令还有: CONSTANTS(声明常数)、STATICS(临时变量声明).exp:CONSTANTS PI TYPE P DECIMALS 5 VALUE '3.14159'.STATICS 关键字声明的变量仅在目前的程序中使用, 结束后会自动释放语法:STATICS <c> [<length>] <type> [<value>] [<decimals>]系统专用变量说明系统内部专门创建了SYST这个STRUCTURE,里面的栏位存放系统变量,常用的系统变量有: SY-SUBRC: 系统执行某指令后,表示执行成功与否的变量,'0'表示成功SY-UNAME: 当前使用者登入SAP的USERNAME;SY-DATUM: 当前系统日期;SY-UZEIT: 当前系统时间;SY-TCODE: 当前执行程序的Transaction codeSY-INDEX: 当前LOOP循环过的次数SY-TABIX: 当前处理的是internal table 的第几笔SY-TMAXL: Internal table的总笔数SY-SROWS: 屏幕总行数;SY-SCOLS: 屏幕总列数;SY-MANDT: CLIENT NUMBERSY-VLINE: 画竖线SY-ULINE: 画横线TYPE 关键字用来指定资料型态或声明自定资料型态Example:TYPES: BEGIN OF MYLIST,NAME(10) TYPE C,NUMBER TYPE I,END OF MYLIST.DATA LIST TYPE MYLIST.LIKE 关键字跟TYPE关键字使用格式相同, 如DATA TRANSCODE LIKE SY-TCODE.不同的是 LIKE 用在已有值的资料项, 如系统变量, 而TYPE关键字则是用在指定资料型态。

TABLES 关键字用来声明 Table Work Area 的数据, 对应至 ABAP/4 资料文件(Dictionary Object), 由SQL 指令加载所需数据语法:TABLES <dbtab>Example:TABLES: SPFL.SELECT * FROM SPFL.WRITE: SPFL-MANDT, SPFL-CARRID,SPFL-CONNECTION.ENDSELECT.从ABAP/4 Dictionary 的 SPFL 档载入MANDT,CARRID,CONNECTION 三个字段至SPFL 此Table Work Area*-------------------------------------------------------------------------------------*输出一. WRITE 语句ABAP/4用来在屏幕上输出资料的指令是WRITE指令,例如:WRITE: 'USER NAME IS:', SY-UNAME.二. 指定屏幕输出位置指定输出位置的语句格式为:WRITE: [AT] [ / ] [<pos>] [(<len>)] 资料项 [<par>]其中: / : 在下一行输出<pos>: 指定输出的行号;(<len>):指定输出位数(长度)<par>: 指定显示格式参数,参数有:LEFT-JUSTIFIED 资料*左对齐CENTERED 资料*中间对齐RIGHT-JUSTIFIED 资料*右对齐UNDER <g> 正对在资料项<g>的下面显示NO-GAP 紧接着显示,不留空格USING EDIT MASK <m>: 使用内嵌子元显示, 如 12:03:20USING NO EDIT MASK: 不使用内嵌子元NO-ZER 数字前面 0 的部分不显示NO-SIGN: 不显示正负号DECIMALS <d>: 显示 <d> 位小数EXPOENT <e>: F(浮点数)指数的值ROUND <r>: 四舍五入至小数点后<r>位CURRENCY <c>: 币别显示DD/MM/YY : 日期显示格式MM/DD/YY:YY/MM/DD:YY/DD/MMMM/DD/YYYY:DD/MM/YYYYYYYY/MM/DD:YYYY/DD/MM:例如1: WRITE: /10(6) 'ABCDEFGHIJK'.输出结果为: ABCDEF例如2: DATA: X TYPE I VALUE '11:20:30',A(5) TYPE C VALUE 'AB CDE'.WRITE: / X USING EDIT MASK '__:__:__'.WRITE: / X USING EDIT MASK '$___,___'.WRITE: / Y NO-GAP.输出结果为:11:20:30$112,030ABCDEF例如3: DATA: LEN TYPE I VALUE 10,POS TYPE I VALUE 11,TEXT(10) VALUE '1234567890'WRITE 'The text ------------ appears in the text.'.WRITE AT POS(LEN) TEXT.WRITE TO 语句的基本形式要将值(文字)或源字段内容写入目标字段,可以使用 WRITE TO 语句:语法WRITE <F1> TO <F2> [<option>].DATA: NUMBER TYPE F VALUE '4.3',TEXT(10),FLOAT TYPE F,PACK TYPE P DECIMALS 1.WRITE NUMBER.WRITE NUMBER TO TEXT EXPONENT 2.WRITE / TEXT.WRITE NUMBER TO FLOAT.WRITE / FLOAT.WRITE NUMBER TO PACK.WRITE / PACK.MOVE NUMBER TO PACK.WRITE / PACK.exp:DATA: NAME(10) VALUE 'SOURCE',SOURCE(10) VALUE 'Antony',TARGET(10)....WRITE (NAME) TO TARGET.WRITE: TARGET.exp :DATA: COUNTER TYPE I.COMPUTE COUNTER = COUNTER + 1.COUNTER = COUNTER + 1.ADD 1 TO COUNTER.在此,三条运算语句进行相同算术运算输出屏幕上的线和空行用下列语法,可以在输出屏幕上生成水平线:语法ULINE [AT [/][<pos>][(<len>)]].它等同于WRITE [AT [/][<pos>][(<len>)]] SY-ULINE.AT 后的格式规范,与在在屏幕上定位 WRITE 输出(页 28)中为 WRITE 语句说明的格式规范完全一样。

如果没有格式规范,系统则开始新的一行,并用水平线填充该行。

否则,只按指定输出水平线。

生成水平线的另一种方法,是在 WRITE 语句中键入恰当数量的连字符,如下所示:WRITE [AT [/][<pos>][(<len>)]] '-----...'.垂直线用下列语法,可以在输出屏幕上生成垂直线:语法WRITE [AT [/][<pos>]] SY-VLINE.或WRITE [AT [/][<pos>]] '|'.空行用下列语法,可以在输出屏幕上生成空行:语法SKIP [<n>].该语句从当前行开始,在输出屏幕上生成 <n> 个空行。

如果没有指定 <n> 的值,就输出一个空行。

要将输出定位在屏幕的指定行上,请使用:语法SKIP TO LINE <n>.该语句允许将输出位置向上或向下移动。

四. 显示图示:语法: WRITE: <symbol-name> AS SYMBOL.WRITE: <icon-name> AS ICON.例如: INCLUDE <SYMBOL>.INCLUDE <ICON>.WRITE: / 'Phone symbol:', SYM_PHONE AS SYMBOL.WRITE: / 'Alarm Icon:', ICON_VOICE_OUTPUT AS ICON.要查看系统所提供有那些符号及图示,可选择'EDIT'下的'Insert Statement',选择'Write',接下来选择要查看的群组,如SYMBOL 或ICON, 接下来按'Display'即可.*-------------------------------------------------------------------------------------*一. Internal Table 的声明ABAP/4中的Internal Table是一种Data Structure,类似于其他语言中的STRUTURE,它可以由几个不同类型的栏位(field)组成,用来表示具有不同属性的某一事物,单独一笔资料表示某个事物,多笔资料表示具有相同属性的多个事物.Internal table 的定义有以下几种格式:格式一. DATA: BEGIN OF <internal table> OCCURS <n>,<field 1> TYPE <type1>,[<field 2> TYPE <type 2>,<field 3> TYPE <type 3>,… ]END OF <internal table>.语法:DATA <f> <type> OCCURS <n> [WITH HEADER LINE]Example:DATA VECTOR TYPE I OCCURS 10 WITH HEADER LINE.格式二. TYPES: BEGIN OF <work area>,<field 1> TYPE <type1>,[<field 2> TYPE <type 2>,<field 3> TYPE <type 3>,… ]END OF <work area>.TYPES <internal table> TYPE <work area> OCCURS <n>.格式三. DATA: BEGIN OF <work area>.INCLUDE STRUCTURE <table name>.DATA: END OF <work area>.DATA: <internal table> LIKE <work area> OCCURS <n>.exp:TYPES VECTOR TYPE I OCCURS 10.TYPES: BEGIN OF LINE,COLUMN1 TYPE I,COLUMN2 TYPE I,COLUMN3 TYPE I,END OF LINE.TYPES ITAB TYPE LINE OCCURS 10.TYPES: BEGIN OF DEEPLINE,TABLE1 TYPE VECTOR,TABLE2 TYPE ITAB,END OF DEEPLINE.TYPES DEEPTABLE TYPE DEEPLINE OCCURS 10.本示例创建与上例相同的内表数据类型(VECTOR 和 ITAB)。

相关文档
最新文档