abap基本语法汇总
- 格式:doc
- 大小:121.25 KB
- 文档页数:72
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中的 Sql编辑关键字:ABAP sqlSQL语法我们在编写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 SQLOPEN SQL 语句包含有: SELECT,INSERT,UPDATE,MODIFY,DELETE,OPEN CURSOR, FETCH,CLOSE CURSOR,COMMIT WORK,ROLLBACK WORK等.1. SELECT语句语法格式:SELECT <result> [INTO <target>] [FROM <source>] [WHERE <condition>][GROUP BY <fields>] [ORDER BY <sort order>]其中: <result>指定要抓取的字段<target>将读取的记录存放在work area中<source>指定从那个TABLE中读取资料<condition>抓取资料的条件<fields>指定按那些字段分组<sort order>排序的字段及方式相关的系统变量:SY-SUBRC = 0 表示读取数据成功<> 0 表示未找到符合条件的记录SY-DBLNT: 被处理过的记录的笔数.相关的命令:EXIT. 退出循环.CHECK <logistic statement>.如果逻辑表达式成立,则继续执行,否则,开始下一次循环..利用循环方式读取所有记录SELECT ….ENDSELECT.是循环方式读取记录的.例如:TABLES MARD.SELECT [DISTINCT] * FROM MARD WHERE MA TNR = ‘3520421700’.<Statements>.ENDSELECT.(从MARD中抓取所有料号=3520421700的资料)◆读取一笔资料TABLES MARD.SELECT SINGLE * FROM MARD WHERE MA TNR = ‘3520421700’.(从MARA中抓取一笔料号=3520421700的资料)将读取的记录放在work area中,并且加入Internal table 中.格式有:... INTO <work area>... INTO CORRESPONDING FIELDS OF <work area>... INTO (f1, ..., fn) 变量组.... INTO TABLE <internal table>... INTO CORRESPONDING FIELDS OF TABLE <internal table>... APPENDING TABLE <internal table>... APPENDING CORRESPONDING FIELDS OF TABLE <internal table>举例一:TABLES MARD.DA TA: BEGIN OF ITAB OCCURS 10,MA TNR LIKE MARD-MA TNR,WERKS LIKE MARD-WERKS,LGORT LIKE MARD-LGORT,LABST LIKE MARD-LABST,END OF ITAB.SELECT MA TNR WERKS LGORT LABSTINTO CORRESPONDING FIELDS OF ITABFROM MARDWHERE MA TNR = ‘3520421700’.APPEND ITAB.CLEAR ITAB.ENDSELECT.(将读取的结果放在Internal table ITAB中)举例二.TABLES MARD.SELECT MA TNR MTART MAKTX INTO (t_matnr, t_mtart, maktx)FROM MARDWHERE MA TNR = ‘3520421700’.<Statements>.ENDSELECT.(从MARD中抓取料号=3520421700的料号、类型和描述,放在变量t_matnr, t_mtart, maktx中)。
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关键字则是用在指定资料型态。
ABAP 字符串操作语法总结CONCATENATE:合并字符串.CONCATENATE f1 … fn INTO g [SEPARATED BY h].1* CONCATENATE合并字符串2DATA: c1(10) TYPE c VALUE 'Sum',3c2(3) TYPE c VALUE 'mer',4c3(5) TYPE c VALUE 'holi ',5c4(10) TYPE c VALUE 'day',6c5(30) TYPE c ,7sep(3) TYPE c VALUE ' - '.8CONCATENATE c1 c2 c3 c4 INTO c5.9WRITE c5.10CONCATENATE c1 c2 c3 c4 INTO c5 SEPARATED BY sep. 11WRITE / c5.--------------------------------------------------------输出结果:SummerholidaySum - mer - holi - day--------------------------------------------------------SPLIT: 字符串拆分.SPLIT f AT g INTO h1 … hn.SPLIT f AT g INTO TABLE itable.1* splitting strings2DATA: string10(60) TYPE c ,3p1(20) TYPE c VALUE '++++++++++++++++++++', 4p2(20) TYPE c VALUE '++++++++++++++++++++', 5p3(20) TYPE c VALUE '++++++++++++++++++++', 6p4(20) TYPE c VALUE '++++++++++++++++++++', 7del10(3) TYPE c VALUE '***'.8 string10 = ' Part 1 *** Part 2 *** Part 3 *** Part 4 *** Part 5'. 9WRITE string10.10SPLIT string10 AT del10 INTO p1 p2 p3 p4.11WRITE / p1.12WRITE / p2.13WRITE / p3.14WRITE / p4.--------------------------------------------------------输出结果:Part 1 *** Part 2 *** Part 3 *** Part 4 *** Part 5Part 1Part 2Part 3Part 4 *** Part 5--------------------------------------------------------SHIFT:字符串整体或者字串进行转移.如果SHIFT 操作的对象是C类型,则所有字节都会向前移动一位,最后一位用空格代替;如果SHIFT操作的对象是String类型,则所有字符都会向前移动一位,最后一位删除;SHIFT c <LEFT/RIGHT/CIRCULAR>.SHIFT c BY n PLACES.SHIFT c UP TO c1.1* SHIFT c BY n PLACES 用法.2DATA: t1(10) TYPE c VALUE 'abcdefghij',3string1 LIKE t1.45 string1 = t1.6WRITE string1.7SHIFT string1.8WRITE / string1.9 string1 = t1.10SHIFT string1 BY3 PLACES LEFT.11WRITE / string1.12 string1 = t1.13SHIFT string1 BY3 PLACES RIGHT.14WRITE / string1.15 string1 = t1.16SHIFT string1 BY3 PLACES CIRCULAR.17WRITE / string1.-------------------------------------------------------- 输出结果:abcdefghij “string1bcdefghijdefghijabcdefgdefghijabc--------------------------------------------------------1* SHIFT c UP TO c12DATA: t2(10) TYPE c VALUE 'abcdefghij',3string2 LIKE t2,4str2(2) TYPE c VALUE 'ef'.56 string2 = t2.7WRITE string2.8SHIFT string2 UP TO str2.9WRITE / string2.10 string2 = t2.11SHIFT string2 UP TO str2 LEFT.12WRITE / string2.13 string2 = t2.14SHIFT string2 UP TO str2 RIGHT.15WRITE / string2.16 string2 = t2.17SHIFT string2 UP TO str2 CIRCULAR.18WRITE / string2.--------------------------------------------------------输出结果:abcdefghijefghijefghijabcdefefghijabcd--------------------------------------------------------移除字符串左/右边的子字符串:SHIFT c LEFT DELETEING LEADING c1.SHIFT c RIGHT DELETEING TRAILING c1.1* SHIFT c LEFT/RIGHT DELETEING LEADING c1 2DATA: t3(14) TYPE c VALUE 'abcdefghij',3string3 LIKE t3,4str3(6) TYPE c VALUE 'ghijkl'.56 string3 = t3.7WRITE string3.8SHIFT string3 LEFT DELETING LEADING space. 9WRITE / string3.10 string3 = t3.11SHIFT string3 RIGHT DELETING TRAILING str3. 12WRITE / string3.--------------------------------------------------------输出结果:abcdefghijabcdefghijabcdef--------------------------------------------------------CONDENSE:重新整合分配字符串.CONDENSE c <NO-GAPS>.1* condensing strings2DATA: string9(25) TYPE c VALUE ' one two three four', 3len9 TYPE i.45 len9 = strlen( string9 ).6WRITE: string9, '!'.7WRITE: / 'Length: ', len9.8CONDENSE string9.9 len9 = strlen( string9 ).10WRITE: string9, '!'.11WRITE: / 'Length: ', len9.12CONDENSE string9 NO-GAPS.13 len9 = strlen( string9 ).14WRITE: string9, '!'.15WRITE: / 'Length: ', len9.--------------------------------------------------------输出结果:one two three four !Length: 25 one two three four !Length: 18 onetwothreefour !Length: 15--------------------------------------------------------TRANSLATE:实现字符串转换.TRANSLATE c TO UPPER CASE.TRANSLATE c TO LOWER CASE.TRANSLATE c USING c1.1* translating signs2DATA: t5(10) TYPE c VALUE 'AbCdEfGhIj',3string5 LIKE t5,4rule5(20) TYPE c VALUE 'AxbXCydYEzfZ'.56 string5 = t5.7WRITE string5.8TRANSLATE string5 TO UPPER CASE. "#EC SYNTCHAR 9WRITE / string5.10 string5 = t5.11TRANSLATE string5 TO LOWER CASE. "#EC SYNTCHAR 12WRITE / string5.13 string5 = t5.14TRANSLATE string5 USING rule5. "#EC SYNTCHAR15WRITE / string5.----------------------------------------------输出结果:AbCdEfGhIjABCDEFGHIJabcdefghijxXyYzZGhIj----------------------------------------------TRANSLATE c … FROM CODE PAGE g1 … TO CODE PAGE g2. OVERLAY:参考字符串对空白字符进行填充.OVERLAY c with c1.REPLACE:字符串按条件取代.REPLACE f … WITH g … INTO h.1* replacing values2DATA: t4(10) TYPE c VALUE 'abcdefghij',3string4 LIKE t4,4str41(4) TYPE c VALUE 'cdef',5str42(4) TYPE c VALUE 'klmn',6str43(2) TYPE c VALUE 'kl',7str44(6) TYPE c VALUE 'klmnop',8len4 TYPE i VALUE 2.910 string4 = t4.11WRITE string4.12REPLACE str41 WITH str42 INTO string4.13WRITE / string4.14 string4 = t4.15REPLACE str41 WITH str42 INTO string4 LENGTH len4. 16WRITE / string4.17 string4 = t4.18REPLACE str41 WITH str43 INTO string4.19WRITE / string4.20 string4 = t4.21REPLACE str41 WITH str44 INTO string4.22WRITE / string4.----------------------------------------------输出结果:abcdefghijabklmnghijabklmnefghabklghijabklmnopgh--------------------------------------------------------SERACH:搜索指定字符串. 通过SY_SUBRC取值得到查询结果. SERACH f FOR g.[ABBREVIATED] : 从指定字符串中按顺序搜索相匹配字符串abbreviated [STARTING AT n1 ]:从字符串第n1个字符串开始搜索[ENDING AT n2 ]:搜索到字符串第n2个字符为止[AND MARK]:从指定字符串中模糊搜索相匹配字符串1*searching strings2DATA string7(30) TYPE c VALUE 'This is a little sentence.'.3WRITE: / 'Searched', 'SY-SUBRC', 'SY-FDPOS'.45ULINE /1(26).6SEARCH string7 FOR'X'.7WRITE: / 'X', sy-subrc UNDER 'SY-SUBRC',8sy-fdpos UNDER 'SY-FDPOS'.9SEARCH string7 FOR'itt '.10WRITE: / 'itt ', sy-subrc UNDER 'SY-SUBRC',11sy-fdpos UNDER 'SY-FDPOS'.12SEARCH string7 FOR'.e .'.13WRITE: / '.e .', sy-subrc UNDER 'SY-SUBRC',14sy-fdpos UNDER 'SY-FDPOS'.15SEARCH string7 FOR'*e'.16WRITE: / '*e ', sy-subrc UNDER 'SY-SUBRC',17sy-fdpos UNDER 'SY-FDPOS'.18SEARCH string7 FOR's*'.19WRITE: / 's* ', sy-subrc UNDER 'SY-SUBRC',20sy-fdpos UNDER 'SY-FDPOS'.----------------------------------------------输出结果:Searched SY-SUBRC SY-FDPOS--------------------------------------------X 4 0itt 0 11.e . 0 15*e 0 10s* 0 17----------------------------------------------1*2DATA: string8(30) TYPE c VALUE 'This is a fast first example.',3pos8 TYPE i,4off8 TYPE i.56WRITE / string8.7SEARCH string8 FOR'ft' ABBREVIATED.8WRITE: / 'SY-FDPOS:', sy-fdpos.9 pos8 = sy-fdpos + 2.10SEARCH string8 FOR'ft' ABBREVIATED STARTING AT pos8 AND MARK. 11WRITE / string8.12WRITE: / 'SY-FDPOS:', sy-fdpos.13 off8 = pos8 + sy-fdpos - 1.14WRITE: / 'Off:', off8.----------------------------------------------输出结果:This is a fast first example.SY-FDPOS: 10This is a fast FIRST example.SY-FDPOS: 4Off: 15----------------------------------------------SERACH itab FOR g.[ABBREVIATED] : 从内表中按顺序逐行搜索相匹配字符串[STARTING AT line1 ]:从字符串第n1个字符串开始搜索[ENDING AT line2 ]:搜索最大范围到内表中具体某行[AND MARK]:从内表中模糊搜索相匹配字符串。
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里translate语法摘要:一、ABAP简介二、Translate语法的作用三、Translate语法的使用方法四、Translate语法与字符串处理函数的结合五、Translate语法的实际应用案例六、总结正文:ABAP(Advanced Business Application Programming)是一种高级企业应用程序编程语言,主要用于SAP ERP系统的开发。
在ABAP中,Translate语法用于将字符串从一个语言翻译成另一个语言,为国际化提供了便利。
Translate语法的主要作用是将源字符串转换为目标字符串。
在ABAP 中,可以使用Translate语法将特定的字符串(如错误信息、提示信息等)根据用户选择的界面语言进行转换。
这使得应用程序能够根据用户的需求以不同的语言显示信息。
使用Translate语法的基本格式如下:```translate(source_string, target_language, source_country,target_country).```其中:- `source_string`:源字符串,即需要翻译的字符串。
- `target_language`:目标语言,用两位字母表示(如"EN"表示英语,"CN"表示中文)。
- `source_country`:源国家,用于指定源字符串所对应的国家或地区。
通常与`target_country`一起使用,以实现特定国家或地区的翻译。
- `target_country`:目标国家,用于指定目标字符串所对应的国家或地区。
通常与`source_country`一起使用,以实现特定国家或地区的翻译。
在实际应用中,Translate语法通常与字符串处理函数(如LEFT、RIGHT、MID等)结合使用,以便对字符串进行更复杂的处理。
例如,可以根据用户输入的关键词,从字典中查找相应的翻译结果。
abap switch 语法摘要:一、ABAP Switch 语法简介二、ABAP Switch 语法详解1.基本语法结构2.变量和表达式3.条件分支4.默认分支5.跳出循环正文:【ABAP Switch 语法简介】ABAP(Advanced Business Application Programming)是一种高级企业应用程序编程语言,主要用于SAP ERP 系统的开发。
Switch 语句是ABAP 中的一种选择结构控制语句,可以根据不同的条件执行不同的代码块。
本文将详细介绍ABAP Switch 语法的相关知识。
【ABAP Switch 语法详解】1.基本语法结构ABAP Switch 语句的基本语法结构如下:```SWITCH (<条件表达式>)WHEN (<条件1>) THEN<代码块1>WHEN (<条件2>) THEN<代码块2>...WHEN (<条件n>) THEN<代码块n>ELSE<默认代码块>END-SWITCH```其中,`<条件表达式>` 是用于判断的条件,`<条件1>`、`<条件2>` 等是具体的条件,`<代码块1>`、`<代码块2>` 等是针对不同条件执行的代码块,`<默认代码块>` 是在所有条件都不满足时执行的代码块。
2.变量和表达式在ABAP Switch 语句中,可以使用变量和表达式作为条件。
需要注意的是,Switch 语句中的条件表达式不能包含函数调用。
3.条件分支在Switch 语句中,可以使用WHEN 子句定义多个条件分支。
当条件表达式的值为某个条件时,将执行对应的代码块。
多个WHEN 子句之间可以有任意数量的空行,但它们必须处于同一缩进级别。
4.默认分支如果Switch 语句中没有满足的条件,将执行ELSE 子句中的代码块。
ABAP Condense 用法ABAP 编程语言作为一种企业级应用开发语言,广泛应用于 SAP 系统中。
在 ABAP 开发中,Condense 是一个常用的关键词,用于对字符串进行处理。
Condense 的主要作用是去除字符串中的空格,并将连续的空格替换为单个空格。
在本文中,我们将就 ABAP 中 Condense 的用法和相关注意事项进行全面评估和探讨,以便读者能更深入地理解这一关键特性。
1. Condense 的基本语法和用法Condense 是由 ABAP 提供的一个字符串处理关键词,其基本语法如下:```CONDENSE <string>.```其中,<string> 表示需要进行处理的字符串。
当执行 Condense 关键词时,系统会自动去除 <string> 中的所有空格,并将连续的空格替换为单个空格。
例如:```DATA: lv_string TYPE string VALUE ' ABAP Condense '. CONDENSE lv_string.```执行以上代码后,lv_string 的值将变为 'ABAP Condense'。
2. Condense 与字符串处理在实际开发中,Condense 经常用于对用户输入的字符串进行处理,以保证数据的准确性和一致性。
当用户输入多个空格或制表符时,为了能够正确地处理这些输入,我们通常会在数据处理的过程中使用Condense 关键词。
Condense 也可以用于对从数据库中检索的数据进行处理,以保证数据的准确性。
3. Condense 的注意事项虽然 Condense 在字符串处理中非常有用,但在使用时还是需要注意一些情况。
由于 Condense 会将连续的空格替换为单个空格,因此在某些情况下可能会影响字符串的原始格式。
在特定的业务场景下,可能需要保留原始的空格格式,因此在使用Condense 时需要谨慎考虑。
abap cond语法
ABAP(Advanced Business Application Programming)是一种
由SAP开发的商业应用编程语言,用于开发SAP应用程序和定制业
务解决方案。
在ABAP中,COND是一种条件表达式,用于简化条件
判断和赋值操作。
COND语法的一般形式如下:
COND #( WHEN condition1 THEN result1。
WHEN condition2 THEN result2。
ELSE result3 ).
在这个语法中,COND#是一个关键字,#表示使用内联数据声明。
接下来是一个或多个WHEN子句,每个子句包括一个条件和一个结果。
最后是一个可选的ELSE子句,用于指定在没有任何条件满足时的默
认结果。
在实际的ABAP代码中,COND语法可以用于简洁地处理复杂的
条件逻辑。
它提供了一种更简洁、更易读的方式来编写条件表达式,尤其是在需要根据多个条件来确定结果时。
使用COND语法可以减少
代码的复杂性,提高可读性和可维护性。
总的来说,ABAP中的COND语法提供了一种简洁而强大的方式来处理复杂的条件逻辑,使开发人员能够更轻松地编写清晰、简洁的代码。
它是ABAP语言中非常有用的一项特性,可以帮助开发人员更高效地开发和维护SAP应用程序。
abap include 语法ABAP Include语法是ABAP(Advanced Business Application Programming)的一种语法结构,用于在ABAP程序中嵌入其他ABAP 程序段。
通过使用Include语法,可以将一个或多个ABAP程序段包含在一个主程序中,以便提高代码的复用性和可维护性。
在ABAP中,Include语法可用于包含全局程序段和局部程序段。
全局程序段是指可以在整个ABAP程序中重复使用的代码段,而局部程序段是指只能在特定上下文中使用的代码段。
在使用Include语法时,需要首先在ABAP程序中定义一个Include 声明,然后在需要包含代码的地方使用该Include声明。
Include 声明的语法如下:INCLUDE program.其中,program是要包含的ABAP程序的名称。
在使用Include声明时,需要注意以下几点:1. Include声明必须位于ABAP程序的开头部分。
2. Include声明后面可以跟随一个或多个Selection-Screen或Selection-Set声明,用于定义ABAP程序的输入参数。
3. Include声明后面可以跟随一个或多个Data或Parameter声明,用于定义ABAP程序的内部数据。
4. Include声明后面可以跟随一个或多个Start-of-Selection或Top-of-Page声明,用于定义ABAP程序的逻辑处理。
使用Include语法可以带来以下几个优点:1. 提高代码的复用性:通过将重复使用的代码段定义为Include,并在需要的地方进行引用,可以避免重复编写相同的代码,提高代码的复用性。
2. 提高代码的可维护性:通过将功能模块化,将不同的功能代码定义为Include,并在需要的地方进行引用,可以使代码结构更加清晰,易于维护和修改。
3. 加快开发速度:通过使用Include语法,可以减少编写代码的工作量,提高开发效率。
. . .. .. 一 数据类型和对象 在ABAP中,可以使用与标准数据声明相似的语法处理数据类型,而与数据对象无关。 在程序中必须声明要使用的全部数据对象。声明过程中,必须给数据对象分配属性,其中最重要的属性就是数据类型。 1.1 基本数据类型 数据类型 默认大小 有效大小 初始值 说明 C 1 1 - 65535 SPACE 文本、字符(字母数字字符) D 8 8 '00000000' 日期(格式: YYYYMMDD) F 8 8 0 浮点数 I 4 4 0 整型(整数) N 1 1 - 65535 '00...0' 数字文本 P 8 1 - 16 0 压缩号 T 6 6 '000000' 时间(格式: HHMMSS) X 1 1 - 65535 X'00' 十六进制
对算术运算的非整型结果(如分数)进行四舍五入,而不是截断。 类型 P 数据允许在小数点后有数字。有效大小可以是从 1 到 16 字节的任何值。将两个十进制数字压缩到一个字节,而最后一个字节包含一个数字和符号。在小数点后最多允许 14 个数字。 1.2 系统定义的数据对象 SPACE 空白字符串 SY-SUBRC 系统执行传回值,0表示成功 SY-UNAME 用户 SY-DATUM 系统日期 SY-UZEIT 系统时间 SY-TCODE 当前执行程序的Transaction code SY-INDEX 当前LOOP循环过的次数 SY-TABIX 当前处理的是Internal Table(部表)的第几行 SY-TMAXL Internal Table(部表)的总行数 SY-SROWS 屏幕总行数 SY-SCOLS 屏幕总列数 SY-VLINE 画竖线 SY-ULINE 画横线 SY-PAGNO 当前页号 SY-LINSZ 当前报表宽度 SY-LINCT 当前报表长度 SY-LISND 列表索引页 SY-LISTI 上一个列表的索引 SY-LILLI 绝对列表中选定的行号 SY-CUROW 屏幕上的行 . . .. .. 光标列 真实行号 选择行的容,长度为255 当前行
1.3 确定数据对象的属性 如果要查明数据对象的数据类型,或者要在程序的运行期间使用其属性,可使用 DESCRIBE 语句。语法如下: DESCRIBE FIELD [LENGTH ] [TYPE [COMPONENTS ]] [OUTPUT-LENGTH ] [DECIMALS ] [EDIT MASK ]. 将由语句的参数指定的数据对象的属性写入参数后的变量。 DESCRIBE FIELDS 语句具有下列参数: 参数 用途 LENGTH 确定字段长度 TYPE 确定数据类型 OUTPUT-LENGTH 确定输出长度 DECIMALS 确定小数位 EDIT MASK 确定转换例程
1.3.1 确定字段长度 要确定数据对象的长度,利用DESCRIBE FIELD 语句使用 LENGTH 参数,如下所示: DESCRIBE FIELD LENGTH . 系统读取字段的长度,并将值写入字段。 1.3.2确定数据类型 要确定字段的数据类型,利用DESCRIBE FIELD 语句使用 TYPE 参数,如下所示: DESCRIBE FIELD TYPE [COMPONENTS ]. 系统读取字段的数据类型,然后将值写入字段。 除返回预定义数据类型 C、D、F、I、N、P、T 和 X 外,该语句还返回 2 s 对于带前导符号的两字节整型 2 b 对于无前导符号的一字节整型 2 h 对于表 2 C 对于组件中没有嵌套结构的结构 2 C 对于组件中至少有一个嵌套结构的结构 1.3.3确定输出长度 要确定字段的输出长度,利用 DESCRIBE FIELD 语句使用 OUTPUT-LENGTH 参数,如下. . .. .. 所示: DESCRIBE FIELD OUTPUT-LENGTH . 系统读取字段的输出长度,并将值写入字段。 1.3.4确定小数位 若要确定类型P字段的小数位的个数,利用 DESCRIBE FIELD语句使用 DECIMALS参数,如下所示: DESCRIBE FIELD DECIMALS . 系统读取字段的小数个数,并将值写入字段。 1.3.5 确定转换例程 要确定 ABAP/4 词典中某字段的转换例程是否存在,如果存在,名称是什么,利用 DESCRIBE FIELD 语句使用 EDIT MASK 参数,如下所示: DESCRIBE FIELD EDIT MASK . 如果 ABAP/4 词典中字段的转换例程存在,则系统将其写入字段,然后将系统字段 SY-SUBRC 中的返回代码设为 0。 可以像下面所显示的那样,在 WRITE 语句中将字段直接用作格式模板: WRITE USING EDIT MASK . 如果字段没有转换例程,则系统将返回代码设为 4。
二数据输出到屏幕 2.1 在屏幕上定位Write输出 通过制定字段名称前面的格式规,可以在屏幕上定位 WRITE 语句的输出: WRITE AT [/][][()] . 此处 3 斜线‘/’表示新的一行 3 是最长为三位数字的数字或变量,表示在屏幕上的位置 3 是最长为三位数字的数字或变量,表示输出长度 如果格式规只包含直接值(即,不是变量),可以忽略关键字 AT。 2.2 格式化选项 对 WRITE 语句,可以使用不同的格式化选项。 WRITE ..... (1)所有数据类型的格式化选项: . . .. .. 选项 用途 LEFT-JUSTIFIED 输出左对齐 CENTERED 输出居中 RIGHT-JUSTIFIED 输出右对齐 UNDER 输出直接开始于字段下 NO-GAP 忽略字段后的空格 USING EDIT MASK 指定格式模板 USING NO EDIT MASK 撤消对 ABAP/4 词典中指定的格式模板的激活。 NO-ZERO 如果字段仅包含零,则用空格代替它们 对类型 C 和 N 字段,将自动代替前导零
(2)数字字段的格式化选项: 选项 用途 NO-SIGN 不输出前导符号 DECIMALS 定义小数点后的数字位数。 EXPONENT 在类型 F 字段中,在中定义幂数 ROUND 用10**(-r) 乘类型P 字段,然后取整 CURRENCY 按表格 TCURX 中的货币格式化。 UNIT 按表格 T006 中为类型 P 字段所指定的单位固定小数位数
(3)日期字段的格式化选项: 选项 用途 DD/MM/YY 用户主记录中定义的分隔符 MM/DD/YY 用户主记录中定义的分隔符 DD/MM/YYYY 用户主记录中定义的分隔符 MM/DD/YYYY 用户主记录中定义的分隔符 DDMMYY 无分隔符 MMDDYY 无分隔符 YYMMDD 无分隔符
2.3输出符号和图标 使用下列语法,可以在屏幕上输出符号和 R/3 图标: WRITE AS SYMBOL. WRITE AS ICON. 符号和图标的名称(和)是定义系统的常量,这些常量在包含程序和(尖括号是名称的一部分)中指定。这些包含程序也包含符号和图标的简短说明。输出符号和图标最简单的方法是使用语句结构。 要使符号和图标对程序可用,必须在程序中输入恰当的包含程序或更易理解的包含程序。 2.4 输出线和空行 . . .. .. (1)水平线 用下列语法,可以在输出屏幕上生成水平线: ULINE [AT [/][][()]]. 它等同于 WRITE [AT [/][][()]] SY-ULINE. AT 后的格式规,与在屏幕上定位 WRITE 输出中为 WRITE 语句说明的格式规完全一样。如果没有格式规,系统则开始新的一行,并用水平线填充该行。否则,只按指定输出水平线。 生成水平线的另一种方法,是在 WRITE 语句中键入恰当数量的连字符,如下所示: WRITE [AT [/][][()]] '-----...'. (2)垂直线 用下列语法,可以在输出屏幕上生成垂直线: WRITE [AT [/][]] SY-VLINE. 或 WRITE [AT [/][]] '|'. (3)空行 用下列语法,可以在输出屏幕上生成空行: SKIP []. 该语句从当前行开始,在输出屏幕上生成个空行。如果没有指定的值,就输出一个空行。 (4)要将输出定位在屏幕的指定行上,使用: SKIP TO LINE . 该语句允许将输出位置向上或向下移动。 2.5 将字段容作为复选框输出 使用下列语法,可以将字段的第一个字符,作为复选框输出到输出屏幕上: WRITE AS CHECKBOX. 如果字段的第一个字符是一个“ X”,就显示复选框已填充。如果字段的第一个字符是 SPACE,就显示复选框为空。 该语句创建的复选框,默认状态是可输入的。就是说,用户可以通过单击鼠标来填充它们或使其为空。
三赋值