3ABAP语法示例

合集下载

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) 直接批量生成数据到ABAP内表里:* 2017-05-14 7:17PM in Xun's house, WieslochINSERT demo_join1 FROM TABLE @( VALUE #(( a = 'a1' b = 'b1' c = 'c1' d = 'uu' )( a = 'a2' b = 'b2' c = 'c2' d = 'uu' )( a = 'a3' b = 'b3' c = 'c3' d = 'vv' )( a = 'a4' b = 'b4' c = 'c4' d = 'ww' ) ) ).(2) 采用内联方式遍历ABAP内表:DATA address_annos TYPE STANDARD TABLE OF field_anno-annonameWITH EMPTY KEY.address_annos = VALUE #(( '.FULLNAME' )( 'SEMANTICS.ADDRESS.STREET' )( 'SEMANTICS.ADDRESS.CITY' )( 'SEMANTICS.ADDRESS.ZIPCODE' )( 'SEMANTICS.ADDRESS.COUNTRY' ) ).DATA address_components TYPE STANDARD TABLE OF field_anno-fieldnameWITH EMPTY KEY.address_components = VALUE #(FOR address_anno IN address_annos( VALUE #( fieldannos[ annoname = address_anno ]-fieldnameDEFAULT '---' ) ) ).(3) 两个内表间数据的复制,两个内表的列结构可以不同,开发人员需要额外传入一个映射表,告诉corresponding关键字,源内表的哪一列应该赋到目标内表的哪一列。

abap语法

abap语法

abap语法ABAP1 了解ABAP2 ABAP语法概述3 ABAP语言的数据类型4 ABAP的语法格式5 结构类型和结构体6 内表7 数据库操作ABAP(Advanced business application program),是一种高级企业应用编程语言,它支持封装性和继承性,封装性是面向对象的基础,而继承性是建立在封装性基础上的重要特性。

它适合生成报表,支持对数据库的操作,如:Sqlserver,Oracle,DB2等主流数据库系统。

语法概述ABAP基本语法特点由各自独立的语句构成。

每个语句的第一个单词必须是ABAP关键字。

单词之间至少要用一个空格分隔。

每个语句结束必须要用句号。

一个语句可以跨多行,只要不遇到句号,就认为是一个延续的语句。

可以把多个语句放在一行。

ABAP不区分大小写,关键字和用户操作数都一样,为了便于阅读,一般把关键字大写,而操作数小写。

如果连续多行的第一个关键字相同,可以使用链语句方式减少输入 data: id type I.data: name type c.可写为:data: id type I ,name type c.注释:注释行由第一列的星号(*)开头,并且必须写在第一列,前面不能有空格。

在行末的注释用双引号(”)作为前导。

data: id type i. “ 定义一个对象num数据类型为IABAP的命名规则使用至少1个但不超过8个字符。

不要使用下列字符:句点(.);逗号(,);空格( );括号‘(’‘)’;单引号(‘);双引号(“);等号(=);星号(*);百分号(%);ABAP数据类型(八种基本数据类型)D :日期类型,格式为YYYYMMDD,长度为8T :时间类型,格式为HHMMSS,长度为6I :整数类型,默认长度为4,初始值为0F :浮点类型,默认长度为8,初始值为0,常用于计算C :字符串类型,定义变量时指定字符个数N :数字字符串类型,定义变量时指定数值字符个数X :字节序列类型,定义变量时指定字节数P(压缩号) :允许的长度为1 到16 个字节,系统会指定默认值8 个字节(也就是15 位数字)和0 个小数位常用:大小,长度,重量,货币等单位的场合.定义方法:[f1] type I.[f2] type p decimals [num].[f3] type f.如:DATA number(10) type p value '9.876543210' decimals 9.输出:9.876543210如果decimals 8 输出: 9.87654321ABAP运算数值运算(在ABAP中数学表达式可以任意多层嵌套)算术运算二元操作符包括:–+ :加法– - :减法–* :乘法–/ :除法–** :乘方–DIV :整除忽略余数–MOD :取模需要注意,圆括号和操作符都是关键字,需要跟操作数之间至少用一个空格分开。

SAPABAP语法实例(二)

SAPABAP语法实例(二)

SAP ABAP语法实例调试1 调试键F8跳过后面所有断点,程序执行完2 外部、会话、调试断点调试断点-debug时打的断点,程序远程完后就会消失会话断点-程序运行前通过会话断点按钮打的断点,在同一登录会话不同窗口都有效,用户注销后消失外部断点-程序运行前通过外部断点按钮打的断点,用户注销后再登录还是有效,但只针对同一用户有效SelectSELECT <result> FROM <source> INTO <target> [WHERE <condition>] [GROUP BY <fields>] [HAVING <cond>] [ORDER BY <fields>].GROUP BY:用于将一组数据条目压缩为一个单行作为选择最终结果;HAVING:用于限定ORDER BY子句子数据目组的选择条件;ORDER BY:用于限定行排序;SELECT整体语法结构。

示例:以上示例查询的是:20170503至20170510期间销售订单为JR01,且销售量大于50的单据的订单号、创建日期、创建者、类型以及合计销量,并按销售订单升序排序。

这里需要强调的是,如果要使用函数(如SUM、MAX、MIN),则需要将其他字段通过GROUP BY 进行分组。

如果需要继续对使用函数进行条件筛选,则可以使用关键字HAVING。

关键字ORDER BY 决定查询结果的排序方法,ASCENDING为升序,DESCENDING为降序。

1 SELECT SINGLE单行数据:SELECT SINGLE <RESULT> INTO <target> FROM <source> ...如果系统找到一个完全符合指定条件的行,SY-SUBRC返回0,否则返回4。

一般不需要指明所有字段,而是在SELECT后用"*"符号, 若指定多个数据对象,则需要将这些对象放在括号中,并用逗号隔开,而且其顺序需要与SELECT子句中指明的表字段顺序一致。

abap open dataset 语法

abap open dataset 语法

abap open dataset 语法摘要:1.ABAP开放数据集概述2.ABAP开放数据集语法结构3.开放数据集的用途和优势4.示例:编写ABAP开放数据集程序5.总结与建议正文:ABAP(Advanced Business Application Programming)是一种用于SAP R/3系统的高级编程语言。

在ABAP中,开放数据集(Open Data Set)是一种用于读取和写入外部数据的技术。

通过使用开放数据集,ABAP程序可以与外部数据源(如文本文件、Excel文件等)进行交互,从而实现数据的导入和导出。

本文将详细介绍ABAP开放数据集的语法、用途和示例程序。

一、ABAP开放数据集概述开放数据集是ABAP中一种重要的数据传输机制,它允许程序直接访问外部数据源。

与传统的数据传输方式(如DML语句)相比,开放数据集具有更高的灵活性和可扩展性。

通过使用开放数据集,开发者可以轻松地在ABAP程序中处理来自不同数据源的数据。

二、ABAP开放数据集语法结构ABAP开放数据集的语法结构如下:```DATA: <数据集名称> TYPE <数据类型> LIKE <外部数据源名称>```其中,- 数据集名称:用于定义开放数据集的名称。

- 数据类型:用于指定开放数据集的数据类型。

- 外部数据源名称:用于表示外部数据源的名称,如文件、数据库等。

例如,以下代码定义了一个名为`my_file`的开放数据集,用于读取名为`example.txt`的文本文件:```abapDATA: my_file TYPE fc LIKE "example.txt".```三、开放数据集的用途和优势1.用途- 读取和写入外部数据:开放数据集可用于在ABAP程序中读取和写入外部数据,如文本文件、Excel文件、数据库等。

- 数据转换:通过开放数据集,可以实现不同数据格式之间的转换,如将从数据库中获取的数据转换为文本文件格式。

abap write语句

abap write语句

abap write语句ABAP WRITE语句是SAP中一个非常常用的输出功能,它可以在屏幕上或者其他输出设备上显示文本内容。

WRITE语句可以用于输出单行文本,也可以用于输出多行文本。

在ABAP中,使用WRITE语句可以将文本输出到不同的输出设备上,比如屏幕、打印机或者其他外部设备。

它可以显示各种类型的数据,如字符串、数字、日期等。

WRITE语句的基本语法如下:WRITE <文本> [TO <输出设备>].其中,<文本>是要输出的文本内容,可以是字符串常量、变量或者表达式。

TO <输出设备>是可选的,指定要将文本输出到哪个设备上,默认为屏幕。

下面我们来看几个例子,了解如何使用WRITE语句。

例子1:输出单行文本WRITE 'Hello World'.执行以上代码,屏幕上将会显示"Hello World"。

例子2:输出变量的值DATA: lv_name TYPE string.lv_name = 'John Smith'.WRITE lv_name.执行以上代码,屏幕上将会显示"John Smith"。

例子3:输出表达式DATA: lv_value TYPE i.lv_value = 10 + 5.WRITE 'The result is' lv_value.执行以上代码,屏幕上将会显示"The result is 15"。

除了基本的WRITE语句,ABAP还提供了一些特殊功能的WRITE语句,如控制输出格式、设置文本颜色、添加换行等。

这些功能可以通过使用不同的选项来实现。

以下是一些常用的选项:- NO-GAP:在输出时不留空白字符。

- NO-DISPLAY:不显示文本。

- NO-GROUP:不进行分组。

- ULINE:在文本下方添加下划线。

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 语法在字符串中查找子字符
串的示例。

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

abap search语法

abap search语法

abap search语法ABAP Search语法是一种用于在ABAP程序中对内部表或数据库表进行搜索的语法。

以下是ABAP Search语法的一般形式:SEARCH [key] [FROM itab [rez] [lines] INTO target][WHERE condition].[POSITION posLOG entails posVAL]其中:- [key]:要搜索的键值。

- [FROM itab [rez] [lines] INTO target]:指定要搜索的内部表或数据库表以及搜索结果的存储位置。

- [WHERE condition]:可选参数,用于指定搜索的条件。

- [POSITION posLOG entails posVAL]:可选参数,用于指定搜索结果的位置。

以下是ABAP Search语法的一些示例:1. 搜索内部表itab中键值为'ABC'的记录,并将结果存储在目标变量target中。

SEARCH 'ABC' FROM itab INTO target.2. 搜索内部表itab中满足条件的记录,并将结果存储在目标变量target中。

SEARCH [WHERE condition] FROM itab INTO target.3. 搜索数据库表TABLE_NAME中键值为'ABC'的记录,并将结果存储在目标变量target中。

SEARCH 'ABC' FROM TABLE_NAME INTO target.4. 搜索数据库表TABLE_NAME中满足条件的记录,并将结果存储在目标变量target中。

SEARCH [WHERE condition] FROM TABLE_NAME INTO target.注意:ABAP Search语法在新版本的ABAP中已过时,推荐使用更高级的查询语句如SELECT语句进行数据搜索和检索。

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

第三章 ABAP语法示例3.1 FIELD-SYMBOLSFIELD-SYMBOLS是字段符号,类似于FOXPRO的宏,FOXPRO能把一段程序存入一个字符串中,再通过某种方式使该字符串运行。

SAP的FIELD-SYMBOLS,把一个结构定义分配给字段符号,通过字段符号来引用结构中的成员。

【例3.1】REPORT YTEST001.DATA:BEGIN OF MAN,NAME(30) TYPE C,HIGH TYPE P DECIMALS 2,WEIGHT TYPE P DECIMALS 2,END OF MAN.FIELD-SYMBOLS <FSA> LIKE MAN.DATA MAN1 LIKE MAN.MAN1-NAME = '张林'.MAN1-HIGH = '1.78'.MAN1-WEIGHT = 140.ASSIGN MAN1 TO <FSA>.WRITE: / <FSA>-NAME,<FSA>-HIGH,<FSA>-WEIGHT.输出结果如图3-1所示。

图3-13.2 字符串处理3.2.1 合并字符串【例3.2】REPORT YTEST001.DATA: C1(2) TYPE C,C2(2) TYPE C,C3(2) TYPE C,C4(2) TYPE C,C5(20) TYPE C,C9(2) TYPE C.C1 = 'AB'.C2 = 'CD'.C3 = 'EF'.C4 = 'GH'.C9 = '+'.CONCATENATE C1 C2 C3 C4 INTO C5.WRITE C5.CONCATENATE C1 C2 C3 C4 INTO C5 SEPARATED BY C9.WRITE / C5.输出结果如图3-2所示。

图3-2本例中,先将字符串C1、C2、C3、C4合并到字符串C5,再将字符串C1、C2、C3、C4用间隔符字符串C9合并到字符串C5。

3.2.2 拆分字符串【例3.3】REPORT YTEST001.DATA: C1(2) TYPE C,C2(2) TYPE C,C3(2) TYPE C,C4(2) TYPE C,C5(20) TYPE C V ALUE '11 * 22 * 33 * 44',C9(2) TYPE C.C9 = '*'.WRITE C5.SPLIT C5 AT C9 INTO C1 C2 C3 C4.WRITE: / C1, C2, C3, C4.输出结果如图3-3所示。

图3-33.3 内表带有标题行【例3.4】REPORT YTEST001.DATA: BEGIN OF MAN,NAME(20) TYPE C,HIGH TYPE P DECIMALS 2,WEIGHT TYPE P DECIMALS 2,END OF MAN.DATA: MAN1 LIKE TABLE OF MAN WITH HEADER LINE,MAN2 LIKE TABLE OF MAN.MAN-NAME = '张参'.MAN-HIGH = '1.68'.MAN-WEIGHT = 120.APPEND MAN TO MAN1.MAN-NAME = '刘志'.MAN-HIGH = '1.78'.MAN-WEIGHT = 160.APPEND MAN TO MAN1.MOVE MAN1[] TO MAN2.LOOP AT MAN2 INTO MAN.WRITE: / MAN-NAME,MAN-HIGH, MAN-WEIGHT.ENDLOOP.LOOP AT MAN1.WRITE: / MAN1-NAME,MAN1-HIGH,MAN1-WEIGHT.ENDLOOP.本例中内表MAN1有表头,内表MAN2无表头,输出结果一样,如图3-4所示。

图3-43.4 内表排序【例3.5】REPORT YTEST001.DATA: BEGIN OF MAN,NAME(20) TYPE C,HIGH TYPE P DECIMALS 2,WEIGHT TYPE P DECIMALS 2,END OF MAN.DATA: MAN1 LIKE HASHED TABLE OF MAN WITH UNIQUE KEY NAME.MAN-NAME = '张参'.MAN-HIGH = '1.68'.MAN-WEIGHT = 120.INSERT MAN INTO TABLE MAN1.MAN-NAME = '刘志'.MAN-HIGH = '1.78'.MAN-WEIGHT = 160.INSERT MAN INTO TABLE MAN1.MAN-NAME = '朱强'.MAN-HIGH = '1.72'.MAN-WEIGHT = 130.INSERT MAN INTO TABLE MAN1..LOOP AT MAN1 INTO MAN.WRITE: / MAN-NAME,MAN-HIGH, MAN-WEIGHT.ENDLOOP.SORT MAN1 DESCENDING BY WEIGHT ASCENDING.SKIP.ULINE.LOOP AT MAN1 INTO MAN.WRITE: / MAN-NAME,MAN-HIGH,MAN-WEIGHT.ENDLOOP.输出结果如图3-5所示。

图3-53.5 修改内表数据【例3.6】REPORT YTEST001.DATA: BEGIN OF MAN,NAME(20) TYPE C,HIGH TYPE P DECIMALS 2,WEIGHT TYPE P DECIMALS 2,END OF MAN.DATA: MAN1 LIKE HASHED TABLE OF MAN WITH UNIQUE KEY NAME.MAN-NAME = '张参'.MAN-HIGH = '1.68'.MAN-WEIGHT = 120.INSERT MAN INTO TABLE MAN1.MAN-NAME = '刘志'.MAN-HIGH = '1.78'.MAN-WEIGHT = 160.INSERT MAN INTO TABLE MAN1.LOOP AT MAN1 INTO MAN.WRITE: / MAN-NAME,MAN-HIGH, MAN-WEIGHT.ENDLOOP.MAN-NAME = '张参'.MAN-HIGH = '2.22'.MAN-WEIGHT = 220.MODIFY TABLE MAN1 FROM MAN.LOOP AT MAN1 INTO MAN.WRITE: / MAN-NAME,MAN-HIGH,MAN-WEIGHT.ENDLOOP.本例根据关键字修改内表,输出结果如图3-6所示。

图3-63.6 删除内表记录【例3.7】REPORT YTEST001.DATA: BEGIN OF MAN,NAME(20) TYPE C,HIGH TYPE P DECIMALS 2,WEIGHT TYPE P DECIMALS 2,END OF MAN.DATA: MAN1 LIKE HASHED TABLE OF MAN WITH UNIQUE KEY NAME.MAN-NAME = '张参'.MAN-HIGH = '1.68'.MAN-WEIGHT = 120.INSERT MAN INTO TABLE MAN1.MAN-NAME = '刘志'.MAN-HIGH = '1.78'.MAN-WEIGHT = 160.INSERT MAN INTO TABLE MAN1.LOOP AT MAN1 INTO MAN.WRITE: / MAN-NAME,MAN-HIGH, MAN-WEIGHT.ENDLOOP.DELETE MAN1 WHERE NAME = '张参'.SKIP.ULINE.LOOP AT MAN1 INTO MAN.WRITE: / MAN-NAME,MAN-HIGH,MAN-WEIGHT.ENDLOOP.输出结果如图3-7所示。

图3-7 3.7 使用索引插入内表行【例3.8】REPORT YTEST001.DATA: BEGIN OF MAN,NAME(20) TYPE C,HIGH TYPE P DECIMALS 2,WEIGHT TYPE P DECIMALS 2,END OF MAN.DATA: MAN1 LIKE TABLE OF MAN.MAN-NAME = '张参'.MAN-HIGH = '1.68'.MAN-WEIGHT = 120.INSERT MAN INTO TABLE MAN1.MAN-NAME = '刘志'.MAN-HIGH = '1.78'.MAN-WEIGHT = 160.INSERT MAN INTO TABLE MAN1.LOOP AT MAN1 INTO MAN.WRITE: / MAN-NAME,MAN-HIGH, MAN-WEIGHT. ENDLOOP.MAN-NAME = '李志'.MAN-HIGH = '1.58'.MAN-WEIGHT = 110.INSERT MAN INTO MAN1 INDEX 2.ULINE.LOOP AT MAN1 INTO MAN.WRITE: / MAN-NAME,MAN-HIGH,MAN-WEIGHT. ENDLOOP.输出结果如图3-8所示。

图3-83.8 格式化输出【例3.9】REPORT YTEST001.DATA WA LIKE SPFLI.WRITE: /.WRITE: 10'航班承运人',40'航班连接',60'国家代码',80'起飞城市',100'起飞机场'.SELECT * INTO WA FROM SPFLI.WRITE: / WA-CARRID UNDER '航班承运人',WA-CONNID UNDER '航班连接',WA-COUNTRYFR UNDER '国家代码',WA-CITYFROM UNDER '起飞城市',WA-AIRPFROM UNDER '起飞机场'.ENDSELECT.本例通过UNDER定位输出位置,输出结果如图3-9所示。

相关文档
最新文档