ABAP指针

来源:互联网 发布:湖南北大青鸟学校java 编辑:程序博客网 时间:2024/05/16 19:37
1、定義指針:
指針的定義主要有以下語句

定義任意類型的指針,但是不具備欄位結構(僅僅是一個地址)
FIELD-SYMBOLS <carrid> TYPE ANY.


參考數據庫表定義(這種指針是含有欄位結構的,參考內表同理)
FIELD-SYMBOLS <sflight> TYPE sflight.
FIELD-SYMBOLS <sflight> LIKE sflight.
FIELD-SYMBOLS <sflight> LIKE LINE OF sflight.



動態定義具有欄位結構的指針類型
DATA: tabname TYPE tabname VALUE 'SFLIGHT' ,

dref TYPE REF TO data.
FIELD-SYMBOLS: <itab> TYPE ANY TABLE.


CREATE DATA dref TYPE TABLE OF (tabname).
ASSIGN dref->* TO <itab>.


2、指針的分配(常用句法)分配某個變量給指針
ASSIGN var TO <field-symbols>

分配结构中的某个字段给指针
ASSIGN COMPONENT name OF STRUCTURE struc TO <field-symbols>.



分配整個內表行給指針(指針必須定義為有欄位結構的類型)
READ TABLE itab INDEX/WITH KEY ASSIGNING
<field-symbols>.

LOOP AT itab
ASSIGNING
<field-symbols>.
ENDLOOP.



分配类的方法或接口给指针
ASSIGN dref->* TO <field-symbols>.



直接在SQL語句中分配
SELECT *
FROM (tabname) UP TO 20 ROWS
INTO TABLE <itab>.



新增--怎樣在動態表格中使用Read 和 Loop
*定義動態表格容器
data:name type tabname value 'SFLIGHT'.
data dref type ref to data.

create data dref type table of (name).
field-symbols <itab> type any table.
assign dref->* to <itab>.

*抓取數據
select * up to 100 rows
  from (name)
  into table <itab>.

*定義讀取容器
data dyn_line type ref to data.
create data dyn_line like line of <itab>.
field-symbols:<wa> type any.
assign dyn_line->* to <wa>.

*定義讀取條件&讀取內表
data:fieldname01 type string value 'CARRID',
     fieldname02 type string value 'FLDATE'.
read table <itab> with key (fieldname01) = 'AA'
                           (fieldname02) = '20070831d'
                            assigning <wa>.


*定義輸出的欄位并輸出
field-symbols:<carrid> type any,
              <fldate> type any,
              <price> type any.
assign:component 'CARRID' of structure <wa> to <carrid>,
       component 'FLDATE' of structure <wa> to <fldate>,
       component 'PRICE' of structure <wa> to <price>.
write:<carrid>,<fldate>,<price>.


0 0
原创粉丝点击