[SAP ABAP开发技术总结]动态语句、动态程序
在ABAP中寫動態的程序,靈活的程序,一定要知道的
1.13.?????????動態語句
1.13.1.?????內表動態訪問
1.13.2.?????動態類型
1.13.3.?????動態SQL
1.13.4.?????動態調用類的方法
1.13.5.?????ASSIGN?動態分配
1.13.5.1.???????????動態訪問類的屬性成員
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>.
總結
以上是生活随笔為你收集整理的[SAP ABAP开发技术总结]动态语句、动态程序的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: oracle的簇与簇表
- 下一篇: oracle11g-expdp-impd