• ABAPField Symbol 的Example(来自SAP的样例)


    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 <fs> LIKE line.

    ASSIGN line TO <fs>.

    MOVE <fs>-col2 TO <fs>-col1.

    WRITE: <fs>-col1, <fs>-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: <f1> STRUCTURE line1 DEFAULT wa,
                   <f2> STRUCTURE line2 DEFAULT wa.

    * correct --------------------------------------------------------------

    FIELD-SYMBOLS <f3> LIKE line1.
    ASSIGN wa TO <f3> CASTING.

    FIELD-SYMBOLS <f4> LIKE line2.
    ASSIGN wa TO <f4> CASTING.

    * ----------------------------------------------------------------------

    WRITE: / <f1>-col1, <f1>-col2, <f1>-col3,
           / <f2>-col1, <f2>-col2.

    SKIP.

    WRITE: / <f3>-col1, <f3>-col2, <f3>-col3,
           / <f4>-col1, <f4>-col2. 


    Static assign

     REPORT demo_field_symbols_stat_assign .

    FIELD-SYMBOLS: <f1> TYPE ANY, <f2> 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 <f1>.
    ASSIGN num TO  <f2>.
    DESCRIBE FIELD <f1> LENGTH <f2>.
    WRITE: / <f1>, 'has length', num.

    ASSIGN line1 TO <f1>.
    ASSIGN line2-col2 TO <f2>.
    MOVE <f1> TO line2.
    ASSIGN 'LINE2-COL2 =' TO <f1>.
    WRITE: / <f1>, <f2>.


    Assign with offset

     REPORT demo_field_symbols_stat_as_off .

    FIELD-SYMBOLS <fs> 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 <fs>.
    WRITE / <fs>.

    ASSIGN line-string1+5(*) TO <fs>.
    WRITE / <fs>.

    REPORT demo_field_symbols_stat_as_of2 .

    FIELD-SYMBOLS <fs> 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 <fs>.
      <fs> = 'XX'.
    ENDDO.

    DO 8 TIMES.
      off = sy-index - 1.
      ASSIGN line-a+off(1) TO <fs>.
      WRITE <fs>.
    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 <fs> TYPE ANY.

    ASSIGN TABLE FIELD (name1) TO <fs>.
    WRITE: / 'SY-SUBRC:', sy-subrc.

    ASSIGN TABLE FIELD (name2) TO <fs>.
    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 <fs> TYPE ANY.

    ASSIGN s-a TO <fs>.

    DO 4 TIMES.
      off = sy-index - 1.
      ASSIGN <fs>+off(1) TO <fs>.
      WRITE <fs>.
    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: <f1> TYPE ANY, <f2> TYPE ANY, <f3> TYPE ANY.

    ASSIGN line TO <f1>.
    ASSIGN comp TO <f2>.

    DO 3 TIMES.
      ASSIGN COMPONENT sy-index OF STRUCTURE <f1> TO <f3>.
      WRITE <f3>.
    ENDDO.

    ASSIGN COMPONENT <f2> OF STRUCTURE <f1> TO <f3>.
    WRITE / <f3>. 


    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 <fs> TYPE t_date.

    ASSIGN sy-datum TO <fs> CASTING.

    WRITE / sy-datum.
    SKIP.
    WRITE: / <fs>-year , / <fs>-month, / <fs>-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: <fs> TYPE ANY,
                   <f>  TYPE n.

    ASSIGN sy-datum TO <fs> CASTING TYPE t_date.

    WRITE / sy-datum.

    SKIP.

    DO.
      ASSIGN COMPONENT sy-index OF STRUCTURE <fs> TO <f>.
      IF sy-subrc <> 0.
        EXIT.
      ENDIF.
      WRITE / <f>.
    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 <fs> TYPE ANY.

    ASSIGN txt TO <fs>.
    WRITE / <fs>.

    SKIP.

    * obsolete -------------------------------------------------------------

    ASSIGN txt TO <fs> TYPE 'D'.
    WRITE / <fs>.

    ASSIGN txt TO <fs> TYPE mytype.
    WRITE / <fs>.

    SKIP.

    * correct --------------------------------------------------------------

    ASSIGN txt TO <fs> CASTING TYPE d.
    WRITE / <fs>.

    ASSIGN txt TO <fs> CASTING TYPE (mytype).
    WRITE / <fs>. 


    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: <f1> TYPE ANY ,
                   <f2> TYPE ANY.

    WRITE: / 'PACK1', pack1.

    SKIP.

    * obsolete -------------------------------------------------------------

    ASSIGN pack1 TO <f1> DECIMALS 1.
    WRITE: / '<F1> ', <f1>.

    pack2 = <f1>.
    WRITE: / 'PACK2', pack2.

    ASSIGN pack2 TO <f2> DECIMALS 4.
    WRITE: / '<F2> ', <f2>.

    pack3 = <f1> + <f2>.
    WRITE: / 'PACK3', pack3.

    <f2> = '1234.56789'.
    WRITE: / '<F2> ', <f2>.
    WRITE: / 'PACK2', pack2.

    SKIP.

    * correct --------------------------------------------------------------

    ASSIGN pack1 TO <f1> CASTING TYPE p DECIMALS 1.
    WRITE: / '<F1> ', <f1>.

    pack2 = <f1>.
    WRITE: / 'PACK2', pack2.

    ASSIGN pack2 TO <f2> CASTING TYPE p DECIMALS 4.
    WRITE: / '<F2> ', <f2>.

    pack3 = <f1> + <f2>.
    WRITE: / 'PACK3', pack3.

    <f2> = '1234.56789'.
    WRITE: / '<F2> ', <f2>.
    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 <fs> TYPE ANY.

    DO 100 TIMES.                          "Runtime-Error!
      ASSIGN text1+sy-index(1) TO <fs>.
    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: <fs1> TYPE t_struct,
                   <fs2> TYPE i.

    CREATE DATA dref1 TYPE t_struct.

    ASSIGN dref1->* TO <fs1>.

    <fs1>-col1 = 1.
    <fs1>-col2 = 2.

    dref2 = dref1.

    ASSIGN dref2->* TO <fs2> CASTING.
    WRITE / <fs2>.

    GET REFERENCE OF <fs1>-col2 INTO dref2.

    ASSIGN dref2->* TO <fs2>.
    WRITE / <fs2>. 


     
  • 相关阅读:
    浅谈 java 比较器
    浅谈lambda表达式
    使用DateLocaleConverter和SimpleDateFormat实现字符串转换成日期
    myeclipse中运行tomcat报错java.lang.NoClassDefFoundError
    《谁说菜鸟不会数据分析》读书笔记(1)
    撰写报告要点
    分析报告_问题界定篇
    数据分析报告
    kaggle入门之Titanic生存预测
    pandas基础
  • 原文地址:https://www.cnblogs.com/xiaomaohai/p/6157311.html
Copyright © 2020-2023  润新知