在首页输入事务码se80进入ABAP编辑器页面,不在首页搜索事务前面要加/n+事务码跳转到所需页面,/o+事务码是打开新的窗口并跳转。
每个ABAP语句必须以关键字开头,以句号结尾,关键字之间必须有至少一个空格分开。
程序名称要以Z开头,Z保证你的报告驻留在客户命名空间中。
客户命名空间包括所有前缀为Y和Z的对象,ABAP的对象名称不区分大小写,小写会自动改为大写。
注释:通过在行的第一个位置放置星号(*)来指示全行注释,在这种情况下,整个行被系统认为是注释。
部分行注释通过在语句之后输入双引号(“)来表示,双引号后面的所有文本都被系统视为注释。
*TYPES:BEGIN OF ty_table.
* sex type zhrr...
* pernr type..
TYPES : BEGIN OF ty_output, "这是注释
numc TYPE zhr_zht_pernr,
name TYPE zhr_zht_name,
sex TYPE zhr_zht_sex,
tel TYPE zhr_zht_tel,
dayoff TYPE zhr_zht_dayoff,
END OF ty_output.
NO-ZERO命令在DATA语句之后。 它抑制包含空格的数字字段的所有前导零。 输出通常更容易让用户阅读。
DATA: W_NUM(10) TYPE N.
MOVE 23 TO W_NUM.
WRITE W_NUM NO-ZERO.
输出是23,不加N0-ZERO输出是0000000023。
SKIP插入空白行,ULINE是插入空白线。
REPORT zhello.
WRITE: 'hello world' , 'hello world' , 'hello world'.
SKIP.
ULINE.
WRITE: 'hello world' , 'hello world' , 'hello world'.
DATA: w_num(10) TYPE n.
MOVE 23 TO w_num.
WRITE w_num NO-ZERO.
ULINE.
ULINE.
输出结果为:
基本数据类型
一些字段和数字可以使用一个或多个名称来修改,如下所示:
byte
numeric
character-like
复杂和参考类型
复杂类型分为结构类型和表类型。 在结构类型中,基本类型和结构(即,嵌入在结构中的结构)被分组在一起。 你可以只考虑基本类型的分组。 但是你必须意识到结构的嵌套的可用性。
当基本类型被分组在一起时,数据项可以作为分组数据项被访问或者可以访问各个基本类型数据项(结构字段)。 表类型在其他编程语言中更好地称为数组。 数组可以是简单数组或结构数组。 在ABAP中,数组被称为内部表,并且与其他编程语言相比,它们可以以许多方式被声明和操作。 下表显示了表示内部表的参数。
引用类型用于引用类,接口和运行时数据项的实例。 ABAP OOP运行时类型服务(RTTS)允许在运行时声明数据项。
变量的定义。
`DATA zht_line TYPE c LENGTH 40.
zht_line = ‘abcd’.
WRITE zht_line.
DATA zht_string TYPE string .
zht_string = ‘白又白’.
WRITE zht_string.
DATA : zht_date TYPE d .
zht_date = sy-datum.
WRITE zht_date DD/MM/YYYY.
`
加减乘除,用DECIMALS指定小数位。
DATA:gv_int1 TYPE i VALUE 2 ,
gv_int2 TYPE i VALUE 3 ,
gv_iresult TYPE i.
gv_iresult = gv_int1 + gv_int2 .
WRITE : /'1:',gv_iresult.
ADD 1 TO gv_iresult.
WRITE :/'2.',gv_iresult.
ADD gv_int1 TO gv_iresult.
WRITE :/'2.',gv_iresult.
ADD gv_int1 TO gv_int2.
WRITE :/'2.',gv_int2.
DATA:gv_pack1 TYPE p DECIMALS 2 VALUE '2.17' ,
gv_pack2 TYPE p DECIMALS 2 VALUE '5.43' ,
gv_presult TYPE p DECIMALS 2 .
gv_presult = gv_pack2 / gv_pack2.
WRITE:/'3:',gv_presult.
MULTIPLY gv_presult by gv_pack2.
WRITE:/'3:',gv_presult.
DATA:gv_float1 TYPE f VALUE'1.337' ,
gv_float2 TYPE f VALUE'3.7' ,
gv_fresult TYPE f ,
gv_cresult TYPE c LENGTH 16.
gv_fresult = gv_float2 * gv_float1.
WRITE:/'5:',gv_fresult.
CALL FUNCTION'FLTP_CHAR_CONVERSION'
EXPORTING
DECIM = 2
INPUT = gv_fresult
IMPORTING
FLSTR = gv_cresult.
WRITE:/'6:',gv_cresult.
ULINE.
DATA : gv_data TYPE d.
gv_data = sy-datum.
WRITE :/ gv_data YYMMDD.
WRITE :/ gv_data DD/MM/YYYY.
WRITE :/ gv_data .
DATA : gv_time TYPE t.
gv_time = sy-uzeit.
WRITE: / gv_time .
查看表
String相关命令
FIND 判断存在则SY-SUBRC返回值为0.
DATA gv_str TYPE string.
DATA gv_cha(4) TYPE C.
gv_str = 'ABAP'.
gv_cha = 'C'.
DATA gv_str1 TYPE string.
FIND gv_cha IN gv_str .
IF SY-SUBRC EQ 0.
WRITE SY-SUBRC.
ELSE.
WRITE 'Not found'.
ENDIF.
gv_str1 = 'ABAPreat'.
*REPLACE 将A等于C的部分换成B。
REPLACE 'ABAP' IN gv_str1 WITH gv_cha.
WRITE / gv_str1.
*大小写字母转换 TRANSLATE
TRANSLATE gv_str1 TO LOWER CASE .
WRITE / gv_str1.
gv_str = 'ABAP'.
gv_cha = 'C'.
gv_str1 = 'ABAP reat'.
*向左移动SHIFT
SHIFT gv_str1.
WRITE / gv_str1.
*去空格向左看齐CONDENSE NO-GAPS
CONDENSE gv_str1 NO-GAPS.
WRITE / gv_str1.
gv_str = 'ABAP'.
gv_cha = 'C'.
gv_str1 = 'ABAP reat'.
*OVERLAY 填充空格
DATA gv_str2 TYPE string.
gv_str2 = 'OOOOOO'.
DATA gv_str3 TYPE string.
gv_str3 = 'A C R'.
OVERLAY gv_str3 WITH gv_str2.
WRITE / gv_str3.
*连接字符CONCATENATE
CONCATENATE gv_str gv_cha INTO gv_str.
WRITE / gv_str.
*以A为中心拆成两个部分
SPLIT gv_str1 AT ' ' INTO gv_str gv_cha.
WRITE / gv_str.
WRITE / gv_cha.