sap 7.40 的新特性的 VALUE的应用

 文章来自:https://blogs.sap.com/2013/05/27/abap-news-for-release-740-constructor-operator-value/

..value dtype\#()  构造一个任意类型的初始值
...value dtype\#( comp1 = a1 comp2 = a2 ....) 构造一个任意类型的结构体的初始值
...value dtype\#( ( ...) (...) ... )...  构造一个任意类型的内表的初始值

上面dtype\# 意思是可以指定一个dtype的类型或者直接用#,用#时,其类型和被赋值的对象的数据类型一样。

如果value后的dtype是个表,则必须指定key值,或者声明为empty key。http://scn.sap.com/community/abap/blog/2013/06/27/abap-news-for-release-740--internal-tables-with-empty-key。

    CLASS c1 DEFINITION.
      PUBLIC SECTION.
       TYPES: BEGIN OF t_struct,
                  col1 TYPE i,
                  col2 TYPE i,
              END OF t_struct.
       CLASS-METHODS m1 IMPORTING p TYPE t_struct.
       ENDCLASS.
     
    CLASS c1 IMPLEMENTATION.
      METHOD m1.
        WRITE:'col1:' , p-col1,'col2:',p-col2.
      ENDMETHOD.
      ENDCLASS.
     
    START-OF-SELECTION.
      c1=>m1( VALUE #( col1 = 5 col2 = 6 ) ).

"Elementary line type:

TYPES t_itab TYPE TABLE OF i WITH EMPTY KEY.

DATA itab TYPE t_itab.

itab = VALUE #( ( ) ( 1 ) ( 2 ) ).

cl_demo_output=>DISPLAY( itab ).
"Structured line type (RANGES table):

DATA itab TYPE RANGE OF i.

itab = VALUE #( sign = 'I'  option = 'BT' ( low = 1  high = 10 )
                                          ( low = 21 high = 30 )
                                          ( low = 41 high = 50 )
                            option = 'GE' ( low = 61 )  ).

cl_demo_output=>DISPLAY( itab ).

 

TYPES t_date_tab TYPE table of string with empty key.
DATA(date_tab) = VALUE t_date_tab(
  ( | { conv d( sy-datlo - 1 ) DATE = environment } | )
  ( | {         sy-datlo       DATE = environment } | )
  ( | { conv d( sy-datlo + 1 ) DATE = environment } | ) ).

cl_demo_output=>DISPLAY( date_tab ).

这里DATE = environment是用来格式化日期的,表达式里必须有日期类型d才能使用。environment对应的值是CL_ABAP_FORMAT=>D_ENVIRONMENT

另外对日期进行加减时还需conv。如果第二行不用DATE = environment,那么输出就是20180816这样的格式。关于嵌入表达式可以F1看看

扫描二维码关注公众号,回复: 3172953 查看本文章
TYPES:BEGIN OF itab,
      col1 TYPE i,
      col2 TYPE i,
      col3 TYPE i,
      END OF itab.
 DATA:lt_itab TYPE TABLE OF itab,lt_itab1 TYPE TABLE OF itab.
*指定内表的某一行的值
 lt_itab1 = VALUE #( col1 = 1
                            ( col2 = 2 col3 = 3 )
                            ( col2 = 4 col3 = 5 ) ).

 lt_itab = VALUE #( ( col1 = 1 col2 = 2 col3 = 3 )
                    ( col1 = 4 col2 = 5 col3 = 56 ) ) .
  cl_demo_output=>DISPLAY( lt_itab1 ).
  cl_demo_output=>DISPLAY( lt_itab ).

TYPES: BEGIN OF struc1,
         col1 TYPE i,
         col2 TYPE i,
       END OF struc1.

TYPES: BEGIN OF struc2,
         col1 TYPE c LENGTH 1,
         col2 TYPE struc1,
         col3 TYPE c LENGTH 10,
       END OF struc2.

TYPES: BEGIN OF struc3,
         col1 TYPE c LENGTH 1,
         col2 TYPE struc1,
         mod  TYPE c LENGTH 10,
       END OF struc3.

DATA(ls_call2) = VALUE struc2(
     col1 = 'X'
     col2 = VALUE #( col1 = 3
                     col2 = 5 )
     col3 = 'XXX' ).

DATA(ls_call3) = VALUE struc3(
     col1 = 'X'
     col2 = VALUE #( col1 = 3    
                     col2 = 5 )
     mod = 'XXX' ).

猜你喜欢

转载自blog.csdn.net/qq_16116183/article/details/81736323