12
返回列表 发新帖
楼主: laziows

[笔记] ABAP动态生成内表

[复制链接]
论坛徽章:
3
奥运会纪念徽章:皮划艇静水
日期:2008-10-24 13:20:44授权会员
日期:2009-01-21 21:49:40ERP板块每日发贴之星
日期:2010-05-21 01:01:01
11#
发表于 2007-6-15 18:51 | 只看该作者
今天下午到网上找了个,仿照着自己写了个。但是当表建好,并倒入数据后,我去不知道怎么去访问里面的数据了。请知道的给个方法:
*&---------------------------------------------------------------------*
*& Report  YTEST_GL_DINAMICTABLE                                       *
*&                                                                     *
*&---------------------------------------------------------------------*
REPORT  YTEST_GL_DINAMICTABLE
        NO STANDARD PAGE HEADING
        LINE-SIZE 170
        LINE-COUNT 40.

TYPE-POOLS: ABAP.
FIELD-SYMBOLS: <IT_TABLE> TYPE STANDARD TABLE,
               <WA_LINE> .

DATA: DY_TABLE TYPE REF TO DATA,
      DY_LINE TYPE REF TO DATA,
      XFC TYPE LVC_S_FCAT,
      IFC TYPE LVC_T_FCAT.
*---------------------------------------------------------------------*
* START-OF-SELECTION                                                  *
*---------------------------------------------------------------------*
START-OF-SELECTION.
  PERFORM GET_DYN_DATA.
  PERFORM WRITE_OUT.
*---------------------------------------------------------------------*
* FORM GET_DYN_DATA                                                   *
*---------------------------------------------------------------------*
FORM GET_DYN_DATA.
  DATA: IDETAILS TYPE ABAP_COMPDESCR_TAB,
        XDETAILS TYPE ABAP_COMPDESCR.
  DATA: REF_TABLE_DES TYPE REF TO CL_ABAP_STRUCTDESCR.

* 从实体表中获得结构.
  REF_TABLE_DES ?= CL_ABAP_TYPEDESCR=>DESCRIBE_BY_NAME( 'YDATATYPE' ).
  IDETAILS[] = REF_TABLE_DES->COMPONENTS[].
* 设置字段
  LOOP AT IDETAILS INTO XDETAILS.
    CLEAR XFC.
    XFC-FIELDNAME = XDETAILS-NAME.
    XFC-DATATYPE  = XDETAILS-TYPE_KIND.
    XFC-INTTYPE   = XDETAILS-TYPE_KIND.
    XFC-INTLEN    = XDETAILS-LENGTH.
    XFC-DECIMALS  = XDETAILS-DECIMALS.
    APPEND XFC TO IFC.
  ENDLOOP.

* 生成内表
  CALL METHOD CL_ALV_TABLE_CREATE=>CREATE_DYNAMIC_TABLE
    EXPORTING
      IT_FIELDCATALOG = IFC
    IMPORTING
      EP_TABLE = DY_TABLE.
* 将生成的内表绑定到SYMBOL
  ASSIGN DY_TABLE->* TO <IT_TABLE>.

* 创建工作区域并将其绑定SYMBOL
  CREATE DATA DY_LINE LIKE LINE OF <IT_TABLE>.
  ASSIGN DY_LINE->* TO <WA_LINE>.
  SELECT *
    INTO CORRESPONDING FIELDS OF TABLE <IT_TABLE>
    FROM YDATATYPE.
ENDFORM.

*---------------------------------------------------------------------*
* WRITE DATA.
*---------------------------------------------------------------------*
FORM WRITE_OUT.
  LOOP AT <IT_TABLE> INTO <WA_LINE>.
     WRITE : / “这里我怎么来访问里面的字段呢?难道每个字段去帮定SYMBOLS
*   请知道的人指教!
  ENDLOOP.
ENDFORM.

使用道具 举报

回复

您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

TOP技术积分榜 社区积分榜 徽章 团队 统计 知识索引树 积分竞拍 文本模式 帮助
  ITPUB首页 | ITPUB论坛 | 数据库技术 | 企业信息化 | 开发技术 | 微软技术 | 软件工程与项目管理 | IBM技术园地 | 行业纵向讨论 | IT招聘 | IT文档
  ChinaUnix | ChinaUnix博客 | ChinaUnix论坛
CopyRight 1999-2011 itpub.net All Right Reserved. 北京盛拓优讯信息技术有限公司版权所有 联系我们 未成年人举报专区 
京ICP备16024965号-8  北京市公安局海淀分局网监中心备案编号:11010802021510 广播电视节目制作经营许可证:编号(京)字第1149号
  
快速回复 返回顶部 返回列表