ABAP--Field Symbol 的Example(来自SAP的样例)
2007-12-14 17:09
253 查看
Full type specification
REPORT demo_field_symbols_type .
DATA: BEGIN OF line,
col1(1) TYPE c,
col2(1) TYPE c VALUE 'X',
END OF line.
FIELD-SYMBOLS LIKE line.
ASSIGN line TO .
MOVE -col2 TO -col1.
WRITE: -col1, -col2.
Forcing structures
REPORT demo_field_symbols_structure .
DATA: wa(10) TYPE c VALUE '0123456789'.
DATA: BEGIN OF line1,
col1(3) TYPE c,
col2(2) TYPE c,
col3(5) TYPE c,
END OF line1.
DATA: BEGIN OF line2,
col1(2) TYPE c,
col2 TYPE sy-datum,
END OF line2.
* obsolete -------------------------------------------------------------
FIELD-SYMBOLS: STRUCTURE line1 DEFAULT wa,
STRUCTURE line2 DEFAULT wa.
* correct --------------------------------------------------------------
FIELD-SYMBOLS LIKE line1.
ASSIGN wa TO CASTING.
FIELD-SYMBOLS LIKE line2.
ASSIGN wa TO CASTING.
* ----------------------------------------------------------------------
WRITE: / -col1, -col2, -col3,
/ -col1, -col2.
SKIP.
WRITE: / -col1, -col2, -col3,
/ -col1, -col2.
Static assign
REPORT demo_field_symbols_stat_assign .
FIELD-SYMBOLS: TYPE ANY, TYPE i.
DATA: text(20) TYPE c VALUE 'Hello, how are you?',
num TYPE i VALUE 5,
BEGIN OF line1,
col1 TYPE f VALUE '1.1e+10',
col2 TYPE i VALUE '1234',
END OF line1,
line2 LIKE line1.
ASSIGN text TO .
ASSIGN num TO .
DESCRIBE FIELD LENGTH .
WRITE: / , 'has length', num.
ASSIGN line1 TO .
ASSIGN line2-col2 TO .
MOVE TO line2.
ASSIGN 'LINE2-COL2 =' TO .
WRITE: / , .
Assign with offset
REPORT demo_field_symbols_stat_as_off .
FIELD-SYMBOLS TYPE ANY.
DATA: BEGIN OF line,
string1(10) VALUE '0123456789',
string2(10) VALUE 'abcdefghij',
END OF line.
WRITE / line-string1+5.
ASSIGN line-string1+5 TO .
WRITE / .
ASSIGN line-string1+5(*) TO .
WRITE / .
REPORT demo_field_symbols_stat_as_of2 .
FIELD-SYMBOLS TYPE ANY.
DATA: BEGIN OF line,
a TYPE c VALUE '1', b TYPE c VALUE '2',
c TYPE c VALUE '3', d TYPE c VALUE '4',
e TYPE c VALUE '5', f TYPE c VALUE '6',
g TYPE c VALUE '7', h TYPE c VALUE '8',
END OF line,
off TYPE i,
len TYPE i VALUE 2.
DO 2 TIMES.
off = sy-index * 3.
ASSIGN line-a+off(len) TO .
= 'XX'.
ENDDO.
DO 8 TIMES.
off = sy-index - 1.
ASSIGN line-a+off(1) TO .
WRITE .
ENDDO.
Dynamic assign
REPORT demo_field_symbols_dynami_as_2 .
TABLES sbook.
DATA: name1(20) TYPE c VALUE 'SBOOK-FLDATE',
name2(20) TYPE c VALUE 'NAME1'.
FIELD-SYMBOLS TYPE ANY.
ASSIGN TABLE FIELD (name1) TO .
WRITE: / 'SY-SUBRC:', sy-subrc.
ASSIGN TABLE FIELD (name2) TO .
WRITE: / 'SY-SUBRC:', sy-subrc.
Assigning field symbols
REPORT demo_field_symbols_dynami_as_3 .
DATA: BEGIN OF s,
a TYPE c VALUE '1', b TYPE c VALUE '2', c TYPE c VALUE '3',
d TYPE c VALUE '4', e TYPE c VALUE '5', f TYPE c VALUE '6',
g TYPE c VALUE '7', h TYPE c VALUE '8',
END OF s.
DATA off TYPE i.
FIELD-SYMBOLS TYPE ANY.
ASSIGN s-a TO .
DO 4 TIMES.
off = sy-index - 1.
ASSIGN +off(1) TO .
WRITE .
ENDDO.
Assigning a structure by component
REPORT demo_field_symbols_assign_comp .
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) TYPE c VALUE 'COL3'.
FIELD-SYMBOLS: TYPE ANY, TYPE ANY, TYPE ANY.
ASSIGN line TO .
ASSIGN comp TO .
DO 3 TIMES.
ASSIGN COMPONENT sy-index OF STRUCTURE TO .
WRITE .
ENDDO.
ASSIGN COMPONENT OF STRUCTURE TO .
WRITE / .
Casting with field symbol type
REPORT demo_field_symbols_casting.
TYPES: BEGIN OF t_date,
year(4) TYPE n,
month(2) TYPE n,
day(2) TYPE n,
END OF t_date.
FIELD-SYMBOLS TYPE t_date.
ASSIGN sy-datum TO CASTING.
WRITE / sy-datum.
SKIP.
WRITE: / -year , / -month, / -day.
Casting with explicit type
REPORT demo_field_symbols_casting_typ.
TYPES: BEGIN OF t_date,
year(4) TYPE n,
month(2) TYPE n,
day(2) TYPE n,
END OF t_date.
FIELD-SYMBOLS: TYPE ANY,
TYPE n.
ASSIGN sy-datum TO CASTING TYPE t_date.
WRITE / sy-datum.
SKIP.
DO.
ASSIGN COMPONENT sy-index OF STRUCTURE TO .
IF sy-subrc <> 0.
EXIT.
ENDIF.
WRITE / .
ENDDO.
Casting with predefined data types
REPORT demo_field_symbols_assign_type .
DATA txt(8) TYPE c VALUE '19980606'.
DATA mytype(1) VALUE 'X'.
FIELD-SYMBOLS TYPE ANY.
ASSIGN txt TO .
WRITE / .
SKIP.
* obsolete -------------------------------------------------------------
ASSIGN txt TO TYPE 'D'.
WRITE / .
ASSIGN txt TO TYPE mytype.
WRITE / .
SKIP.
* correct --------------------------------------------------------------
ASSIGN txt TO CASTING TYPE d.
WRITE / .
ASSIGN txt TO CASTING TYPE (mytype).
WRITE / .
Casting decimla places
REPORT demo_field_symbols_assign_deci .
DATA: pack1 TYPE p DECIMALS 2 VALUE '400',
pack2 TYPE p DECIMALS 2,
pack3 TYPE p DECIMALS 2.
FIELD-SYMBOLS: TYPE ANY ,
TYPE ANY.
WRITE: / 'PACK1', pack1.
SKIP.
* obsolete -------------------------------------------------------------
ASSIGN pack1 TO DECIMALS 1.
WRITE: / ' ', .
pack2 = .
WRITE: / 'PACK2', pack2.
ASSIGN pack2 TO DECIMALS 4.
WRITE: / ' ', .
pack3 = + .
WRITE: / 'PACK3', pack3.
= '1234.56789'.
WRITE: / ' ', .
WRITE: / 'PACK2', pack2.
SKIP.
* correct --------------------------------------------------------------
ASSIGN pack1 TO CASTING TYPE p DECIMALS 1.
WRITE: / ' ', .
pack2 = .
WRITE: / 'PACK2', pack2.
ASSIGN pack2 TO CASTING TYPE p DECIMALS 4.
WRITE: / ' ', .
pack3 = + .
WRITE: / 'PACK3', pack3.
= '1234.56789'.
WRITE: / ' ', .
WRITE: / 'PACK2', pack2.
Data areas for field symbols
REPORT demo_field_symbols_assign_err .
DATA: text1(10) TYPE c, text2(10) TYPE c, text3(5) TYPE c.
FIELD-SYMBOLS TYPE ANY.
DO 100 TIMES. "Runtime-Error!
ASSIGN text1+sy-index(1) TO .
ENDDO.
Data references
REPORT demo_data_reference.
TYPES: BEGIN OF t_struct,
col1 TYPE i,
col2 TYPE i,
END OF t_struct.
DATA: dref1 TYPE REF TO data,
dref2 TYPE REF TO data.
FIELD-SYMBOLS: TYPE t_struct,
TYPE i.
CREATE DATA dref1 TYPE t_struct.
ASSIGN dref1->* TO .
-col1 = 1.
-col2 = 2.
dref2 = dref1.
ASSIGN dref2->* TO CASTING.
WRITE / .
GET REFERENCE OF -col2 INTO dref2.
ASSIGN dref2->* TO .
WRITE / .
Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=1653907
REPORT demo_field_symbols_type .
DATA: BEGIN OF line,
col1(1) TYPE c,
col2(1) TYPE c VALUE 'X',
END OF line.
FIELD-SYMBOLS LIKE line.
ASSIGN line TO .
MOVE -col2 TO -col1.
WRITE: -col1, -col2.
Forcing structures
REPORT demo_field_symbols_structure .
DATA: wa(10) TYPE c VALUE '0123456789'.
DATA: BEGIN OF line1,
col1(3) TYPE c,
col2(2) TYPE c,
col3(5) TYPE c,
END OF line1.
DATA: BEGIN OF line2,
col1(2) TYPE c,
col2 TYPE sy-datum,
END OF line2.
* obsolete -------------------------------------------------------------
FIELD-SYMBOLS: STRUCTURE line1 DEFAULT wa,
STRUCTURE line2 DEFAULT wa.
* correct --------------------------------------------------------------
FIELD-SYMBOLS LIKE line1.
ASSIGN wa TO CASTING.
FIELD-SYMBOLS LIKE line2.
ASSIGN wa TO CASTING.
* ----------------------------------------------------------------------
WRITE: / -col1, -col2, -col3,
/ -col1, -col2.
SKIP.
WRITE: / -col1, -col2, -col3,
/ -col1, -col2.
Static assign
REPORT demo_field_symbols_stat_assign .
FIELD-SYMBOLS: TYPE ANY, TYPE i.
DATA: text(20) TYPE c VALUE 'Hello, how are you?',
num TYPE i VALUE 5,
BEGIN OF line1,
col1 TYPE f VALUE '1.1e+10',
col2 TYPE i VALUE '1234',
END OF line1,
line2 LIKE line1.
ASSIGN text TO .
ASSIGN num TO .
DESCRIBE FIELD LENGTH .
WRITE: / , 'has length', num.
ASSIGN line1 TO .
ASSIGN line2-col2 TO .
MOVE TO line2.
ASSIGN 'LINE2-COL2 =' TO .
WRITE: / , .
Assign with offset
REPORT demo_field_symbols_stat_as_off .
FIELD-SYMBOLS TYPE ANY.
DATA: BEGIN OF line,
string1(10) VALUE '0123456789',
string2(10) VALUE 'abcdefghij',
END OF line.
WRITE / line-string1+5.
ASSIGN line-string1+5 TO .
WRITE / .
ASSIGN line-string1+5(*) TO .
WRITE / .
REPORT demo_field_symbols_stat_as_of2 .
FIELD-SYMBOLS TYPE ANY.
DATA: BEGIN OF line,
a TYPE c VALUE '1', b TYPE c VALUE '2',
c TYPE c VALUE '3', d TYPE c VALUE '4',
e TYPE c VALUE '5', f TYPE c VALUE '6',
g TYPE c VALUE '7', h TYPE c VALUE '8',
END OF line,
off TYPE i,
len TYPE i VALUE 2.
DO 2 TIMES.
off = sy-index * 3.
ASSIGN line-a+off(len) TO .
= 'XX'.
ENDDO.
DO 8 TIMES.
off = sy-index - 1.
ASSIGN line-a+off(1) TO .
WRITE .
ENDDO.
Dynamic assign
REPORT demo_field_symbols_dynami_as_2 .
TABLES sbook.
DATA: name1(20) TYPE c VALUE 'SBOOK-FLDATE',
name2(20) TYPE c VALUE 'NAME1'.
FIELD-SYMBOLS TYPE ANY.
ASSIGN TABLE FIELD (name1) TO .
WRITE: / 'SY-SUBRC:', sy-subrc.
ASSIGN TABLE FIELD (name2) TO .
WRITE: / 'SY-SUBRC:', sy-subrc.
Assigning field symbols
REPORT demo_field_symbols_dynami_as_3 .
DATA: BEGIN OF s,
a TYPE c VALUE '1', b TYPE c VALUE '2', c TYPE c VALUE '3',
d TYPE c VALUE '4', e TYPE c VALUE '5', f TYPE c VALUE '6',
g TYPE c VALUE '7', h TYPE c VALUE '8',
END OF s.
DATA off TYPE i.
FIELD-SYMBOLS TYPE ANY.
ASSIGN s-a TO .
DO 4 TIMES.
off = sy-index - 1.
ASSIGN +off(1) TO .
WRITE .
ENDDO.
Assigning a structure by component
REPORT demo_field_symbols_assign_comp .
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) TYPE c VALUE 'COL3'.
FIELD-SYMBOLS: TYPE ANY, TYPE ANY, TYPE ANY.
ASSIGN line TO .
ASSIGN comp TO .
DO 3 TIMES.
ASSIGN COMPONENT sy-index OF STRUCTURE TO .
WRITE .
ENDDO.
ASSIGN COMPONENT OF STRUCTURE TO .
WRITE / .
Casting with field symbol type
REPORT demo_field_symbols_casting.
TYPES: BEGIN OF t_date,
year(4) TYPE n,
month(2) TYPE n,
day(2) TYPE n,
END OF t_date.
FIELD-SYMBOLS TYPE t_date.
ASSIGN sy-datum TO CASTING.
WRITE / sy-datum.
SKIP.
WRITE: / -year , / -month, / -day.
Casting with explicit type
REPORT demo_field_symbols_casting_typ.
TYPES: BEGIN OF t_date,
year(4) TYPE n,
month(2) TYPE n,
day(2) TYPE n,
END OF t_date.
FIELD-SYMBOLS: TYPE ANY,
TYPE n.
ASSIGN sy-datum TO CASTING TYPE t_date.
WRITE / sy-datum.
SKIP.
DO.
ASSIGN COMPONENT sy-index OF STRUCTURE TO .
IF sy-subrc <> 0.
EXIT.
ENDIF.
WRITE / .
ENDDO.
Casting with predefined data types
REPORT demo_field_symbols_assign_type .
DATA txt(8) TYPE c VALUE '19980606'.
DATA mytype(1) VALUE 'X'.
FIELD-SYMBOLS TYPE ANY.
ASSIGN txt TO .
WRITE / .
SKIP.
* obsolete -------------------------------------------------------------
ASSIGN txt TO TYPE 'D'.
WRITE / .
ASSIGN txt TO TYPE mytype.
WRITE / .
SKIP.
* correct --------------------------------------------------------------
ASSIGN txt TO CASTING TYPE d.
WRITE / .
ASSIGN txt TO CASTING TYPE (mytype).
WRITE / .
Casting decimla places
REPORT demo_field_symbols_assign_deci .
DATA: pack1 TYPE p DECIMALS 2 VALUE '400',
pack2 TYPE p DECIMALS 2,
pack3 TYPE p DECIMALS 2.
FIELD-SYMBOLS: TYPE ANY ,
TYPE ANY.
WRITE: / 'PACK1', pack1.
SKIP.
* obsolete -------------------------------------------------------------
ASSIGN pack1 TO DECIMALS 1.
WRITE: / ' ', .
pack2 = .
WRITE: / 'PACK2', pack2.
ASSIGN pack2 TO DECIMALS 4.
WRITE: / ' ', .
pack3 = + .
WRITE: / 'PACK3', pack3.
= '1234.56789'.
WRITE: / ' ', .
WRITE: / 'PACK2', pack2.
SKIP.
* correct --------------------------------------------------------------
ASSIGN pack1 TO CASTING TYPE p DECIMALS 1.
WRITE: / ' ', .
pack2 = .
WRITE: / 'PACK2', pack2.
ASSIGN pack2 TO CASTING TYPE p DECIMALS 4.
WRITE: / ' ', .
pack3 = + .
WRITE: / 'PACK3', pack3.
= '1234.56789'.
WRITE: / ' ', .
WRITE: / 'PACK2', pack2.
Data areas for field symbols
REPORT demo_field_symbols_assign_err .
DATA: text1(10) TYPE c, text2(10) TYPE c, text3(5) TYPE c.
FIELD-SYMBOLS TYPE ANY.
DO 100 TIMES. "Runtime-Error!
ASSIGN text1+sy-index(1) TO .
ENDDO.
Data references
REPORT demo_data_reference.
TYPES: BEGIN OF t_struct,
col1 TYPE i,
col2 TYPE i,
END OF t_struct.
DATA: dref1 TYPE REF TO data,
dref2 TYPE REF TO data.
FIELD-SYMBOLS: TYPE t_struct,
TYPE i.
CREATE DATA dref1 TYPE t_struct.
ASSIGN dref1->* TO .
-col1 = 1.
-col2 = 2.
dref2 = dref1.
ASSIGN dref2->* TO CASTING.
WRITE / .
GET REFERENCE OF -col2 INTO dref2.
ASSIGN dref2->* TO .
WRITE / .
Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=1653907
相关文章推荐
- ABAP--Field Symbol 的Example(来自SAP的样例)
- ABAP--Field Symbol 的Example(来自SAP的样例)
- ABAP--Field Symbol 的Example(来自SAP的样例)
- ABAP--Field Symbol 的Example(来自SAP的样例)
- ABAP--Field Symbol 的Example(来自SAP的样例)
- ABAP--C语言调用SAP的RFC的代码样例
- ABAP--How to use TEXTEDIT(SAP 的样例摘抄)
- ABAP--C语言调用SAP的RFC的代码样例
- ABAP--How to use TEXTEDIT(SAP 的样例摘抄)
- ABAP--C语言调用SAP的RFC的代码样例
- ABAP--How to use TEXTEDIT(SAP 的样例摘抄)
- ABAP--How to use TEXTEDIT(SAP 的样例摘抄) Jack wu
- ABAP--C语言调用SAP的RFC的代码样例
- ABAP--How to use Toolbar control(SAP样例摘抄)
- ABAP--How to use Toolbar control(SAP样例摘抄)
- ABAP--How to use Toolbar control(SAP样例摘抄)
- ABAP--How to use Toolbar control(SAP样例摘抄)
- ABAP--How to use Toolbar control(SAP样例摘抄)
- ABAP--C语言调用SAP的RFC的代码样例
- ABAP--C语言调用SAP的RFC的代码样例