ABAP开发笔记原创Word文档格式.docx
《ABAP开发笔记原创Word文档格式.docx》由会员分享,可在线阅读,更多相关《ABAP开发笔记原创Word文档格式.docx(26页珍藏版)》请在冰豆网上搜索。
表工作区提供一个接口,通过该接口可以将数据从数据库表加载到程序,或利用开放式SQL语句修改数据库表的内容。
要显示表的组件及其数据类型的列表,请在ABAP/4编辑器的命令行中(选择“编辑->
其它功能->
命令输入”)键入“SHOW”。
要定址表工作区的组件,可以将表名作为前缀,然后用连字符添加组件:
dbtab>
-
例子:
TABLES:
SPFLI.
Select
*
FROM
SPFLI.
WRITE:
SPFLI-MANDT,
SPFLI-CARRID,
SPFLI-CONNID,
......
ENDSelect.
示例中,TABLES语句创建表工作区SPFLI。
SPFLI与ABAP/4词典中声明的数据库表SPFLI结构相同。
在Select循环中,用属于数据库表SPFLI的行填充表工作区SPFLI。
15.TYPES语句:
使用TYPES语句创建用户定义的基本数据类型和结构化数据类型。
TYPES:
SURNAME(20)
NAME
SURNAME,
....
通过TYPES定义的类型不能直接使用,需要通过DATA进行定义其对应的变量后,使用其变量。
ADDRESS_1
ADDRESS_2
ADDRESS.
16.内表示例:
下列程序是有关如何将结构化数据对象声明为内表的示例。
PROGRAM
SAPMZTST.
MYSTRING,
I,
NAME(10)
MYSTRING.
TYPES
MYTAB
MYSTRING
OCCURS
5.
STRING
ITAB
MYTAB.
STRING-NUMBER
=
1.
STRING-NAME
'
John'
APPEND
TO
ITAB.
2.
Paul'
3.
Ringo'
4.
George'
LOOP
AT
INTO
STRING.
/
STRING-NUMBER,STRING-NAME.
ENDLOOP.
该程序在屏幕上产生下列输出:
1
John
2
Paul
3
Ringo
4
George
示例中,首先将数据类型MYSTRING定义为字段串。
然后,根据字段串MYSTRING,用TYPES语句的OCCURS参数将数据类型MYTAB定义为内表。
利用数据类型MYSTRING和MYTAB声明数据对象STRING和ITAB。
然后逐行填充内表ITAB的字段。
通过使用字段串STRING,在屏幕上显示ITAB的内容。
17.TYPE或TYPES所定义的变量不能直接赋值,只能通过DATA针对TYPE所定义的用户类型进行定义变量,然后使用这个变量。
18.如何确定数据对象的长度?
Data:
text(8),len
type
i.
//定义了两个变量
Describe
field
text
length
len.
//将变量text的长度存放于变量len中
Write
//打印变量text的长度值
19.如何确定数据对象的类型?
TEXT(8)
N,
TYP.
//定义了两个变量TEXT和TYP
DESCRIBE
FIELD
TEXT
//将变量TEXT的类型存放于变量TYP中
WRITE
//打印变量TEXT的类型
19.如何确定数据对象的输出长度?
f,
len
I,
out-len
//定义了三个变量
output-length
out-len.
//将变量text的长度存放于变量中
Write:
len,out-len.
20.如何确定数据对象的小数位数?
p
decimals
2,dec.
dec.
dec
21.如何确定转换例程?
n,
exam
edit
mask
i
//打印变量text的长度值
三、
TERNAL
内表
为了在内存中处理多条记录,不能使用结构,而要使用INTERNAL
TABLE
他有三种形式:
STANDARD
TABLES
SORTED
TABLEHASHED
我们将只讨论STANDARD
1、DECLARING
INERTAL
参照字典内表类型
itab_flightinfo
abc400_t_sbc400focc
[with
header
line].
2、程序中的本地表类型
SYNTAX
(语法)
flightinfo_type
sbc400focc
WITH
NON-UNIQUE
KEY
carrid
connid
fldate
3、使用BEGIN…END
*******
DATA:
itab
0
*Carrid
like
scarr-carrid,
*Carrname
scarr-carrname,
NAME(20),
AGE
……
itab-NAME
Michael'
itab-AGE
25.
itab.
*插入内表数据
Gabriela'
22.
4、EXAMPLE
:
将内表数据显示方法:
3-4-1、使用LOOP
*先申明内表和工作区(结构)declaration
of
internal
table
and
workarea
sbc400_t_sbc400focc,
*参照字典内表
Wa_flightinfo
Like
line
*参照内表结构声明结构(工作区)
Itab_flightinfo
[WITH
HEADER
LINE]
*用工作区与带表头内表的操作区别:
EXAMPLE:
STRUTURES
AND
ASSIGNING
VALUE
/h
打开调试模式
program
code
:
REPORT
sapbc400tss_itab_loop
it_spfli
sbc400_t_spfli.
sbc400_t_spfli为数据字典内表
wa_spfli
spfli.
*参照透明表定义结构(工作区)
(tables
.)
START-OF-SelectION.
spfli
it_spfli.
at
least
one
dataset
selected
IF
sy-subrc
0.
move
each
single
from
to
structure
WA_SPFLI
in
order
write
data
on
list
wa_spfli.
wa_spfli-carrid,
wa_spfli-connid,
wa_spfli-cityfrom,
wa_spfli-cityto,
wa_spfli-deptime,
wa_spfli-arrtime.
ENDIF.
EXAMPLE
2:
sapbc400dds_select_sflight_tab
wa_flight
sbc400focc,
it_flight
sbc400_t_sbc400focc.
PARAMETERS:
pa_car
s_carr_id.
*Select
all
datasets
database
SFLIGHT
corresponding
to
*carrier
PA_CAR
seatsmax
seatsocc
sflight
CORRESPONDING
FIELDS
wa_flight
Where
pa_car.
*Calculate
occupation
flight
wa_flight-percentage
=
100
wa_flight-seatsocc
wa_flight-seatsmax.
Insert
into
table
it_flight.
Alternatively,
you
could
use
the
statement,
if
are
using
standard
tables:
*
it_flight.
ENDSelect.
*sort
SORT
BY
percentage.
*Create
List
sorted
wa_flight.
wa_flight-carrid,
wa_flight-connid,
wa_flight-fldate,
wa_flight-seatsocc,
wa_flight-seatsmax,
wa_flight-percentage,'
%'
ENDLOOP.
补充:
NODES:
spfli,sflight.
定义一个与后面表名结构相同的工作区
原来用TABLES,现在此法也兼容。
更新数据库表格
Update
1、使用工作区更新
Update
2、针对于某个字段的更新
SET
=…
MODIFY
根据Primary
Key寻找数据库中符合条件的记录,若找到则更新相应字段
的值,若找不到则新增该记录。
Delete
1、使用工作区删除
Delete
2、有条件地删除
abap4
SelectION-SCREEN
BC400
USER
Dialog
SelectION
SCREENS
涉及内容:
概念:
PARAMETERS
--
SINGLE
FIELDS
Select-OPTION
---
VALUE
SETS
事件:
INITIALIZATION
SelectTION-SCREEN
系统参数:
MESSAGE
格式命令:
***注:
程序显示行号参考最下图
SAMPLE
SAPBC400DDD_Select_SINGLE
*&
---------------------------------------------------------------------*
Report
SAPBC400DDD_Select_SINGLE
reading
form
---------------------------------------------------------------------*
sapbc400ddd_select_single
workarea
for
datas
database
wa_scarr
scarr.
scarr
wa_scarr
Where
specify
key
fields
in
clause
client
is
specified
by
system
pa_car.
Output
wa_scarr-carrid,
wa_scarr-carrname,
wa_scarr-currcode.
else
write:
text-001
color
col_negative.
SAPBC400UDS_SEL_SCREEN
SAPBC400UDS_SEL_SCREEN
sapbc400uds_sel_screen.
CONSTANTS:
actvt_display
activ_auth
03'
wa_sbook
sbook.
wa_flight-carrid.
Data
complex
restrictions
applied
connection
id
Select-OPTIONS:
so_con
FOR
wa_flight-connid.
First
event
processed
after
leaving
selection
screen
SelectION-SCREEN.
AUTHORITY-CHECK
OBJECT
S_CARRID'
ID
CARRID'
pa_car
ACTVT'
actvt_display.
<
>
Show
screen
again
show
message
status
bar
BC400'
E'
045'
IN
so_con.
HIDE:
wa_flight-carrid,
wa_flight-connid,
wa_flight-fldate.
CLEAR
wa_flight.
LINE-SelectION.
sy-lsind
1.
ULINE.
SKIP.
bookid
customid
custtype
class
order_date
smoker
cancelled
loccuram
loccurkey
sbook
wa_sbook
wa_flight-carrid
wa_flight-connid
wa_sbook-bookid,
wa_sbook-customid,
wa_sbook-custtype,
wa_sbook-class,
wa_sbook-order_date,
wa_sbook-smoker,
wa_sbook-cancelled,
wa_sbook-loccuram
CURRENCY
wa_sbook-loccurkey,
wa_sbook-loccurkey.
CLEAR:
wa_flight,
wa_sbook.
注意:
1、
各类事件出发的时间
2、
选择屏幕也是screen
屏幕的一种
一个报表样例
ZSD_LONG
基础参考
下载
MESSAGE-ID
zmsgtest
line-size
120
****************************************************************
***数据段
声明表
tables
MAKT,
"
material
VBAK,
sale
VBAP,
item
KNA1.
address
声明结构以便内表使用
data:
begin
it_addr
occurs
0,
12/01
add
name1
KNA1-name1,
com
name
orT01
KNA1-ORT01,
city,
STRAS
KNA1-STRAS,
city,street
end
it_addr.
it_header
0,
vbeln
VBAK-vbeln,
no
kunnr
VBAK-kunnr,
erdat
VBAK-erdat,
created
date
addr
it_addr,
rewrite
str可以嵌套
KNA1-ADRNR,
customer
old
bukrs
vbak-BUKRS_V