ABAP开发基础:基础、内表、select语句问题资料课件_第1页
ABAP开发基础:基础、内表、select语句问题资料课件_第2页
ABAP开发基础:基础、内表、select语句问题资料课件_第3页
ABAP开发基础:基础、内表、select语句问题资料课件_第4页
ABAP开发基础:基础、内表、select语句问题资料课件_第5页
已阅读5页,还剩56页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

SAPECC6.0-ABAP2023年7月27日SAPECC6.0一个简单的例子ABAP基础内表的应用select数据选取数据库表查询输入输出销售订单report一个简单的例子最简单的Report(1)一个经典的入门例子通常在程序执行前,需要做以下三件事:1、对所写的代码进行语法检查,避免明显的语法错误。2、保存程序;在程序激活过程中,SAP也会自动对程序进行保存3、激活程序;在SAP中没有激活的程序是不能进行最终使用的。上例最终运行结果如下:

最简单的Report(1)一个经典的入门例子通常在程序执行前最简单的Report(2)report

在ABAP程序中,以report或者program指令开头的程序才能直接运行;其他指令的程序均不可以直接运行。Report程序里,程序的属性类型那需选择“可执行程序”最简单的Report(2)report Report程序里,一个简单的例子ABAP基础内表的应用select数据选取数据库表查询输入输出销售订单report一个简单的例子基本数据类型在ABAP中,基本的数据类型有八种字符型:C(文本字符)N(数字文本字符)T(时间类型)D(日期类型)数字类型:I(整数类型)F(浮点类型)P(压缩数)X(十六进制)另,ABAP还提供对字符串的支持,数据类型为string。基本数据类型在ABAP中,基本的数据类型有八种基本数据类型列表数据类型默认大小有效大小初始值说明示例C11–65535SPACE文本字符(串)‘NAME’N11–65535‘00...0’数字文本‘0123’T66‘000000’时间(HHMMSS)‘193000’D88‘00000000’日期(YYYYMMDD)‘20080808’I440整型(整数)99F880浮点数5E+4P810压缩数99.99X11–65535X‘0’十六进制‘3A’string1无限定SPACE字符串(长度可变)‘AString’基本数据类型列表数据类型默认大小有效大小初始值说明示例C11定义变量(1)定义字段

DATACOLTYPEC.定义行(工作区)

DATA:BEGIN

OFWA,COLTYPEC,

END

OFWA.定义内表

DATA:BEGINOFITABOCCURS0,COLTYPEC,

ENDOFITAB.定义变量(1)定义字段定义变量(2)ABAP中对变量的定义有两种方式:DATA根据内置类型声明基本类型数据对象。TYPES根据内置类型自定义基本数据类型。定义变量(2)ABAP中对变量的定义有两种方式:定义变量(3)TYPES

num

TYPE

i.DATA

num1

TYPE

num.定义变量(3)TYPES

num

TYPE

i.算术运算ABAP中,基本的算术运算有这么几种。(+、-、*、/、DIV、MOD、**)前四种运算意义明确,不再做过多累述。现在,来看看后三种运算。

DIV

整除 除法时,如果除不尽,只取商的整数部分。

MOD

取余 除法时,如果除不尽,只取商的余数部分。

** 乘方 *是做乘法运算;**则是乘方(即幂运算)。例:

6DIV4=1;6MOD4=2.1*2=2;

1**2=1.算术运算ABAP中,基本的算术运算有这么几种。(+、-、*、字符数据处理(1)1)

concatenate

将两个字符串合并成一个字符串。2)split

将一个字符串拆分成多个字符串。3)search

在字符内查找指定字符串4)replace

用其他字符串在字符内替换指定字符串。5)strlen

用于确定字符实际长度。6)condense

用于清除字符内多余的空格。

PS:字符串string也是字符的一种。和其他字符类型的区别在于,string在定义时,不需要指定字符长度,其字符长度会随着存放数据长度的增加自动扩展。字符数据处理(1)1)concatenatePS:字符串字符数据处理(2)字符数据处理(2)结构语句分支控制IF<condition1>……ELSEIF<condition2>……ELSE……ENDIFCASEfWHENf1……WHENf2……ENDCASE循环控制DO[nTIMES]……ENDDOWHILE<condition>……ENDWHILE结构语句分支控制一个简单的例子ABAP基础内表的应用select数据选取数据库表查询输入输出销售订单report一个简单的例子内表(1)除了数据库表格,还可以创建仅在程序运行时间内存在的内表。ABAP/4提供了针对内表的不同操作。例如,可以搜索、附加、插入或删除行。内表中的行数并不固定。根据需求,系统可实时增加内表的大小。例如,如果想将某个数据库表格读入内表,不必事先知道数据库表格的大小。内表(1)除了数据库表格,还可以创建仅在程序运行时间内存在的内表(2)内表的另一种用处是根据程序需要重新组织数据库表格的内容。例如,可以从一个或多个大客户表格特定的数据中将与创建电话清单有关的数据读入内表中。然后可在程序运行期间直接访问该清单,而不用每次调用时都执行耗时的数据库查询。内表(2)内表的另一种用处是根据程序需要重新组织数据库表格的内表的操作:插入APPEND

DATA:BEGIN

OFITABOCCURS0,COL1TYPEI,

COL2TYPEI,

ENDOFITAB.ITAB-COL1=1.ITAB-COL2=2.

APPENDITAB.INSERTDATALINELIKEITAB.LINE-COL1=3.LINE-COL2=4.INSERTLINEINTOITABINDEX1.数据只能附于内表最后一行数据可以插入内表任意位置内表的操作:插入APPEND数据只能附于内表最后一行数据可以内表的操作:修改MODIFYLOOPATITABWHERECOL1=1.ITAB-COL1=5.

MODIFYITAB.ENDLOOP.MODIFY前MODIFY后内表的操作:修改MODIFYMODIFY前MODIFY后内表的操作:循环读取LOOP使用LOOP语句逐行读取内表。要将内表逐行读入工作区域,可以使用LOOP语句编一个循环。语法如下所示:LOOPAT<itab>[INTO<wa>][FROM<n1>][TO<n2>]

[WHERE<condition>].

.....ENDLOOP.内表的操作:循环读取LOOP内表的操作:删除DELETEDELETE

itab

WHERE

col1

=

1.删除前删除后内表的操作:删除DELETE删除前删除后内表的操作:COLLECTCOLLECT

聚集附加操作时,系统将检查工作区中的标准关键字段值与已存在于内表中的数据行是否相(所有非数字字段)。如果不同,COLLECT语句的作用与APPEND语句相似,将新行附加至内表末尾;如果存在相同表关键字值的行,COLLECT语句不附加新行,而是将工作区中数字字段的内容累加到已有数据行中。LH04003.9DL169924.5LH04005.7LH040236.5DL169924.5LH04005.7LH040236.5LH04003.9CARRCONNUMSATZCARRCONNUMSATZAPPEND<WA>TO<ITAB>COLLECT<WA>TO<ITAB>9.6内表的操作:COLLECTCOLLECT聚集附加LH040内表的操作:SUMSUM该语句只能在LOOP/ENDLOOP块内部使用。如果在AT/ENDAT块中使用SUM,则系统计算当前行组内部所有行的数字字段之和并将其写入目标区域中相应的字段;如果在AT/ENDAT块之外使用SUM语句,则系统计算所有循环过程中(已循环和将要循环的)内表行的数字字段之和并将其写入工作区域中相应的字段。所以,在AT/ENDAT块之外使用SUM语句一般是无意义的。内表的操作:SUMSUM内表的操作:ATATlevel<statementblock>

ENDAT.

该语句只能在LOOP语句内使用,其中行条件level有下列选项:

FIRST当前循环为内表的第一行,即当第一次循环操作时,系统会执行控制块语句

LAST当循环为内表最后一行。

NEWf行组的开头,行组指的是字段f和f前面(即左边)的全部字段,如果行组中的内容不同于上一行,执行语句块中的内容。

ENDOFf行组的结尾,如果下一行行组中的任何字段内容不同于上一行,执行语句块中的内容。内表的操作:ATATlevel一个简单的例子ABAP基础内表的应用select数据选取数据库表查询输入输出销售订单report一个简单的例子Select语句SELECTSELECT

result

FROM

source

INTO|APPENDING

target

[[FORALLENTRIESINitab]WHERE

sql_cond]

[GROUPBY

group][HAVING

group_cond]

[ORDERBY

sort_key].

Select语句SELECT数据选取(1)SELECT

carrid

connid

seatsocc

FROM

sflight

INTO

CORRESPONDING

FIELDS

OF

TABLE

seats

WHERE

carrid

BETWEEN

'AA'

AND

'DL'

GROUP

BY

connid

carrid

seatsocc

HAVING

carrid

BETWEEN

'AA'

AND

'DL'

ORDER

BY

seatsocc.数据选取字段数据库表内表或工作区数据选取范围及输出格式数据选取(1)数据选取字段数据库表内表或工作区数据选取范围及数据选取(2)CARRIDCONNIDSEATSOCCCARRIDCONNIDSEATSOCCSEATSOCCCONNIDCARRIDCARRIDCONNIDSEATSOCCSELECT

carrid

connid

seatsocc

FROM

sflight

INTO

TABLE

seatsSELECT

carrid

connid

seatsocc

FROM

sflight

INTO

CORRESPONDING

FIELDS

OF

TABLE

seats数据库表内表数据选取(2)CARRIDCONNIDSEATSOCCCARselectsingle的使用COL1COL2A1A2A3TABLEselectsingle选择第一个满足条件的值selectsinglecol2intoWAfromTABLEwherecol1=‘A’.结果:COL2值为1。selectsingle的使用COL1COL2A1A2A3表关联JOIN

如果要选取相关联的两个或以上的表内的数据,则需要使用到JOIN。

SELECT

a~aufnr

b~dfrei

INTO

CORRESPONDING

FIELDS

OF

TABLE

itab

FROM

afko

AS

a

JOIN

afpo

AS

b

ON

a~aufnr

=

b~aufnr.表关联JOINselect……endselectSELECT

carrid

connid

seatsocc

FROM

sflight

INTO

CORRESPONDING

FIELDS

OF

TABLE

seats

WHERE

carrid

BETWEEN

'AA'

AND

'DL'

GROUP

BY

connid

carrid

seatsocc

HAVING

carrid

BETWEEN

'AA'

AND

'DL'

ORDER

BY

seatsocc.

SELECT

carrid

connid

seatsocc

FROM

sflight

INTO

CORRESPONDING

FIELDS

OF

seats

WHERE

carrid

BETWEEN

'AA'

AND

'DL'

GROUP

BY

connid

carrid

seatsocc

HAVING

carrid

BETWEEN

'AA'

AND

'DL'

ORDER

BY

seatsocc.

APPEND

seats.

ENDSELECT.select……endselectSELECT

carri一个简单的例子ABAP基础内表的应用select数据选取数据库表查询输入输出销售订单report一个简单的例子字段查询(转账表)1事务代码:QS24显示主检验特性场景:需要用到字段主检验特性,却不知道主检验特性数据的存放处。字段查询(转账表)1事务代码:QS24字段查询(转账表)2在主检验特性栏位按下F1字段查询(转账表)2在主检验特性栏位按下F1字段查询(转账表)3

QPMK是转账表,技术信息里表名和字段名称组合起来就是主文件检验特性的存储位置。字段查询(转账表)3QPMK是转账表,技术信息里表名和字字段查询(转账表)4字段查询(转账表)4字段查询(结构)1这是通过QA33查询到的一笔检验批结果记录。假设,现在需要字段“检验的”的数据。字段查询(结构)1这是通过QA33查询到的一笔检验批结果记录字段查询(结构)2

虽然,在技术信息的表名上写着QAQEE,实际上,QAQEE是一个结构。字段查询(结构)2虽然,在技术信息的表名上写着QAQEE字段查询(结构)3

如何确定结构中的字段存储的表?可以通过该字段的数据元素引用处来进行查询。字段查询(结构)3如何确定结构中的字段存储的表?字段查询(结构)4

通过所用处清单来查找出现过数据元素QANZWERTG4的全部转账表。字段查询(结构)4通过所用处清单来查找出现过数据元素QA字段查询(结构)5

通过所用处清单,还可以查找数据元素在更广泛的范围内的应用。字段查询(结构)5通过所用处清单,还字段查询(结构)6

查找结果,数据元素QANZWERTG4在两个表内有被引用。字段查询(结构)6查找结果,数据元素QANZWERT字段查询(结构)7可以看到QAMR是转账表字段查询(结构)7可以看到QAMR是转账表一个简单的例子ABAP基础内表的应用select数据选取数据库表查询输入输出销售订单report一个简单的例子输出控制:WRITEWRITE语句在屏幕上输出数据的基本ABAP语句是WRITE。在屏幕上,输出通常是左对齐的。如果使用几个WRITE语句,输出字段就一个接一个显示,输出之间由列分开(如一个空格)。如果当前行没有足够空间,则开始新行。输出控制:WRITEWRITE语句对齐格式(1)输出屏幕上的数据字段格式,依赖数据类型。预定义数据类型的输出格式数据类型 输出长度 定位 C 字段长度 左对齐 D 8 左对齐 F 22 右对齐 I 11 右对齐 N 字段长度 左对齐 P 2*字段长度(+1) 右对齐 T 6 左对齐 X 2*字段长度 左对齐 数字数据类型F、I和P是右对齐的,左边用空格填充。如果有足够的空间,也输出千位分隔符。如果类型P字段包含小数位,则默认输出长度增加一位。对数据类型D,日期的内部格式与输出格式不同。当输出数据使用WRITE语句时,系统自动以用户主记录中指定的格式(例如,DD/MM/YYYY),输出数据类型D。对齐格式(1)输出屏幕上的数据字段格式,依赖数据类型。对齐格式(2)REPORTSAPMTEST.DATANUMBERTYPEPVALUE'-1234567.89'DECIMALS2.WRITE:'Number',NUMBER,'ispacked'.输出如下:Number1,234,567.89-ispacked

字段NUMBER总长为13,即,9位数字(包括小数点)、前导负号和作为分隔符的两个逗号。因为类型P字段的字段长度为8,所以NUMBER字段的输出长度为2*8+1=17。剩余的位置用四个空格填充。这意味着,在文字‘Number’和数字自身之间有五个空格。对齐格式(2)REPORTSAPMTEST.定位输出:列在屏幕上定位WRITE输出如下所示,通过制定字段名称前面的格式规范,可以在屏幕上定位WRITE语句的输出:语法WRITEAT[/][<pos>][(<len>)]<f>.此处 斜线‘/’表示新的一行

<pos>是最长为三位数字的数字或变量,表示在屏幕上的位置

<len>是最长为三位数字的数字或变量,表示输出长度如果格式规范只包含直接值(即,不是变量),可以忽略关键字AT定位输出:列在屏幕上定位WRITE输出定位输出:行SKIP语法SKIP{[n]

|{TOLINEline}}.

SKIPN

以当前行为基,向下跳转N行。若N无指定,则默认值为1。SKIPTOLINEline

跳转至指定行。定位输出:行SKIP格式化选项对

WRITE语句,可以

使用不同的

格式化选项

。语法WRITE....<f><选项>.所有数据类型的格式化选项选项

用途

LEFT-JUSTIFIED 输

出左对齐。

CENTERED 输

出居中。

RIGHT-JUSTIFIED 输

出右对齐。

UNDER<g> 输出

直接开始于

字段<g>下。

NO-GAP 忽

略字段<f>后的空格。

USINGEDITMASK<m> 指定格式模板<m>。 USINGNOEDITMASK 撤消对ABAP/4词典中指定的格式模板的激活。 NO-ZERO 如果字段仅包含零,则用空格代替它们。对类型C和N字段,将自动代替前导零。COLOR<n> 输出字段填充颜色。格式化选项对WRITE语句,可以使用不同的格式化选项ABAP屏幕输出DATA:G(5)VALUE'Hello', F(5)VALUE'Dolly'. WRITE:G,F. HelloDolly

WRITE:/10G, Hello /FUNDERG. Dolly WRITE:/GNO-GAP,F. HelloDolly DATATIMETYPETVALUE'154633'. WRITE:TIME, 154633 /(8)TIMEUSINGEDITMASK'__:__:__'. 15:46:33 WRITE:'000123', 000123 /'000123'NO-ZERO. 123 DATAFLOATTYPEFVALUE'123456789.0'. WRITEFLOATEXPONENT3. 1.23E+08 DATAPACKTYPEPVALUE'123.456' DECIMALS3. WRITEPACKDECIMALS2. 123.46 WRITE:/PACKROUND-2, 12,345.60 /PACKROUND-1, 1,234.56

/PACKROUND1, 12.346 /PACKROUND2. 1.235 WRITE:SY-DATUM, 06/27/1995 /SY-DATUMYYMMDD. 950627 ABAP屏幕输出DATA:G(5)VALUE'Hell初始化数据语法CLEAR<f>.该语句将数据对象<f>的内容初始化,可以用CLEAR语句重置任何数据对象值。REFRESHitab.该语句将内表中的数据重置为初始值。初始化数据语法选择屏幕的制作PARAMETERS

COL(11)

TYPE

C

default

'Hello

World‘.WRITE

:

10

'输出:',

16

COL.选择屏幕的制作PARAMETERS

COL(11)

TYPE选择屏幕(1)选择屏幕的制作,有两种方式parameters select-optionsparameters:输入的参数值是单值select-options:输入的参数值是多值,也可以是一个范围选择屏幕(1)选择屏幕的制作,有两种方式选择屏幕(2)

TABLES

afko.

PARAMETERS

aufnr2

LIKE

afko-aufnr.

SELECT-OPTIONS

aufnr1

FOR

afko-aufnr.选择屏幕(2)TABLES

afko.

PARAMETE一个简单的例子ABAP基础内表的应用select数据选取数据库表查询输入输出销售订单report一个简单的例子输入屏幕TABLES

:

vbak.PARAMETERS

vbeln

LIKE

vbak-vbeln.输入屏幕TABLES

:

vbak.定义变量定义表头DATA

:

BEGIN

OF

wa_head,

vbeln

LIKE

vbak-vbeln,

audat

LIKE

vbak-audat,

kunnr

LIKE

vbak-kunnr,

name1

LIKE

kna1-name1,

END

OF

wa_head.

定义行项目

DATA

:

BEGIN

OF

it_item

OCCURS

0,

vbeln

LIKE

vbap-vbeln,

posnr

LIKE

vbap-posnr,

matnr

LIKE

vbap-matnr,

arktx

LIKE

vbap-arktx,

kwmeng

LIKE

vbap-kwmeng,

meins

LIKE

vbap-meins,

netwr

LIKE

vbap-netwr,

waerk

LIKE

vbap-waerk,

END

OF

it_item.定义行数计数器DATA

line

TYPE

i.定义变量定义表头数据选取选取表头数据

SELECT

SINGLE

vbeln

audat

kunnr

INTO

(wa_head-vbeln,

wa_head-audat,

wa_head-kunnr)

FROM

vbak

WHERE

vbeln

=

vbeln.

SELECT

SINGLE

name1

INTO

wa_head-name1

FROM

kna1

WHERE

kunnr

=

wa_head-kunnr.

选取行项目数据

SELECT

vbeln

posnr

matnr

arktx

kwmeng

meins

netwr

waerk

INTO

CORRESPONDING

FIELDS

OF

TABLE

it_item

FROM

vbap

WHERE

vbeln

=

vbeln.

数据选取选取表头数据

屏幕输出DESCRIBE

TABLE

it_item

LINES

line."获取内表行数,设置

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论