[SAP ABAP開發技術總結]動態語句、動態程序


 

在ABAP中寫動態的程序,靈活的程序,一定要知道的

1.13.     動態語句

1.13.1.           內表動態訪問

SORT itab BY (comp1)...(compn)

 

READ TABLE itab WITH KEY(k1)=v1...(kn)=vn

READ TABLE itab...INTOwaCOMPARING(comp1)...(compn) TRANSPORTING(comp1)...

MODIFY [TABLE] itab TRANSPORTING(comp1)...(compn)

DELETE TABLEitabWITH TABLE KEY(comp1)...(compn)

DELETE ADJACENT DUPLICATES FROM itab COMPARING(comp1)...(compn)

 

AT NEW/END OF (comp)

1.13.2.           動態類型

CREATE DATA ... TYPE (type)...

DATA: a TYPE REF TO i.
CREATE DATA a TYPE ('I').
a->* = 1.

CREATE OBJECT ... TYPE (type)...請參考類對象反射章節

1.13.3.           動態SQL

Select請參照后面的動態SQL

MODIFY/UPDATE(dbtab)...

1.13.4.           動態調用類的方法

CALL METHOD (meth_name)
            | cref->(meth_name)
            | iref->(meth_name)
            | (class_name)=>(meth_name)
            | class=>(meth_name)
            | (class_name)=>meth

實例請參考類對象反射章節

1.13.5.           ASSIGN 動態分配

FIELD-SYMBOLS:<fs>.

DATA:str(20) TYPE c VALUE 'Output String',
     name
(20) TYPE c VALUE 'STR'.

"靜態分配:編譯時就知道要分配的對象名
ASSIGN name TO <fs>."結果<fs>name變量等同

"通過變量名動態訪問變量
ASSIGN (name) TO <fs>."結果是是<fs>的值為str變量值

 

DATA: BEGIN OF line,
  col1
TYPE i VALUE '11',
  col2
TYPE i VALUE '22',
  col3
TYPE i VALUE '33',
END OF line.
DATA comp(5) VALUE 'COL3'.
FIELD-SYMBOLS: <f1>, <f2>, <f3>.
ASSIGN line TO <f1>.
ASSIGN comp TO <f2>.

"還可以直接使用以下的語法訪問其他程序中的變量
ASSIGN ('(ZJDEMO)SBOOK-FLDATE') TO <fs>.

"通過索引動態的訪問結構成員
ASSIGN COMPONENT sy-index OF STRUCTURE <f1> TO <f3>.

"通過字段名動態的訪問結構成員
ASSIGN COMPONENT <f2>OF STRUCTURE <f1> TO <f3>.

"如果定義的內表沒有組件名時,可以使用索引為0的組件來訪問這個無名字段(注:不是1)
ASSIGN COMPONENT 0 OF STRUCTURE itab TO  <fs>.

1.13.5.1.       動態訪問類的屬性成員

ASSIGN oref->('attr') TO <attr>.
ASSIGN oref->('static_attr') TO <attr>.
ASSIGN ('C1')=>('static_attr') TO <attr>.
ASSIGN c1=>('static_attr') TO <attr>.
ASSIGN ('C1')=>static_attr TO <attr>.

實例請參考類對象反射章節


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM