zoukankan      html  css  js  c++  java
  • ABAP动态创建局部类型的变量

    REPORT ZDANY_DYN_LOCAL_TYPES.
    ****************** hardcoded "old style" local type*******************
    * This is a normal hardcoded local type
    types : begin of typ_hardcoded,
          l_count type i,
          lt_sflight type sflight.
    types : end of typ_hardcoded.
    * create a table based on hardcoded type
    data : lt_hardcoded type table of typ_hardcoded.
    ****************** dynamic "new wave" local type *******************
    types: typ_count type i.
    field-symbols : <lt_dynamic> type any table.
    data: dref type ref to data,
      itab_type type ref to cl_abap_tabledescr,
      struct_type type ref to cl_abap_structdescr,
      elem_type type ref to cl_abap_elemdescr,
      comp_tab type cl_abap_structdescr=>component_table,
      comp_fld type cl_abap_structdescr=>component.
    * We read information about each fields of SFLIGHT (see ABAP FAQ #2)
    struct_type ?= cl_abap_typedescr=>describe_by_name( 'SFLIGHT' ).
    * We also need the information about the type "typ_count", note that
    * we should use class cl_abap_elemdescr instead of cl_abap_typedescr
    elem_type ?= cl_abap_elemdescr=>describe_by_name( 'TYP_COUNT' ).
    * we read all fleids of SFLIGHT and create a component table
    comp_tab = struct_type->get_components( ).
    * We add manually the counter
    comp_fld-name = 'L_COUNT'.
    comp_fld-type = elem_type.
    insert comp_fld into comp_tab index 1.
    * we create the structure
    struct_type = cl_abap_structdescr=>create( comp_tab ).
    * ... and the internal table
    itab_type = cl_abap_tabledescr=>create( struct_type ).
    * The new thing here is the "type handle" which create a pointer to a handle
    create data dref type handle itab_type.
    * we finally assign a field symbol to the pointer because we cannot directly access a pointer.
    assign dref->* to <lt_dynamic>.
    * At the end of this small program, internal table lt_hardcoded and lt_dynamic are the same
  • 相关阅读:
    ubuntu 15.04默认root用户登陆
    hive的not in
    Spark 1.4.1中Beeline使用的gc overhead limit exceeded
    Sequoiadb该如何选择合适的SQL引擎
    scala的object知识点
    scala中同步块
    英语口语练习系列-C36-城市-谈论活动-登高
    英语口语练习系列-C35-马戏-谈论语言-己亥杂诗
    英语口语练习系列-C34-儿童-谈论物品和人-武陵春
    英语口语练习系列-C33-露营-谈论日期-离思
  • 原文地址:https://www.cnblogs.com/xiaomaohai/p/6157043.html
Copyright © 2011-2022 走看看