*&---------------------------------------------------------------------*
*& Report  ZTRAINING29 如何得到内表的字段名称与字段类型                *
*& T-code                                                              *
*&---------------------------------------------------------------------*
*& Created by Xavery hsueh(薛现军) on 2011-06-08                       *
*& Last edited date:                                                   *
*&---------------------------------------------------------------------*
REPORT  ztraining29 NO STANDARD PAGE HEADING .

************************************************************************
**  声明数据库表 Declaration of database                              **
************************************************************************
TABLES:mara,
       makt.    "
************************************************************************
**  定义结构类型 Define the structure's type                          **
************************************************************************
*     物料编号的内表
TYPES:BEGIN OF typ_mara,
        matnr TYPE matnr,
        meins TYPE meins,
        maktx TYPE maktx,
      END OF typ_mara.
*     保存内表的字段名称
TYPES:BEGIN OF typ_field,
        fieldnm TYPE txt30,
      END OF typ_field.
************************************************************************
**  定义变量与内表 Define the variants and Internal tables            **
************************************************************************
DATA:gt_mara TYPE TABLE OF typ_mara WITH HEADER LINE.
DATA:gt_field TYPE TABLE OF typ_field WITH HEADER LINE.

DATA:cl_descr TYPE REF TO cl_abap_structdescr.

FIELD-SYMBOLS:<fs_comp> TYPE abap_compdescr.
FIELD-SYMBOLS <fs_name> TYPE ANY.
************************************************************************
**  宏定义 Define the macro                                           **
************************************************************************
DEFINE mcr_range.
  clear &1.
  &1-sign = 'I'.
  &1-option = &2.
  &1-low = &3.
  &1-high = &4.
  append &1.
END-OF-DEFINITION.
************************************************************************
**  选择屏幕 Customize the selection-screen                           **
************************************************************************
SELECTION-SCREEN BEGIN OF BLOCK xavery WITH FRAME TITLE text_001.
PARAMETERS: p_erdat TYPE erdat DEFAULT sy-datum.      "统计日期
SELECT-OPTIONS s_matnr FOR mara-matnr.                "物料编号
SELECTION-SCREEN END OF BLOCK xavery.
************************************************************************
**  执行程序事件 Executing the program's events                       **
************************************************************************
INITIALIZATION.
  PERFORM sub_init_cond.

START-OF-SELECTION.
  PERFORM sub_process_fieldname.

END-OF-SELECTION.
*@---------------------------------------------------------------------*
*@      Form  SUB_INIT_COND
*@---------------------------------------------------------------------*
*       初始化选择条件
*----------------------------------------------------------------------*
FORM sub_init_cond .
  text_001 = '选择屏幕'.
ENDFORM.                    " SUB_INIT_COND
*&---------------------------------------------------------------------*
*&      Form  sub_process_fieldname
*&---------------------------------------------------------------------*
*       取得内表字段名称与类型
*----------------------------------------------------------------------*
FORM sub_process_fieldname .
  DATA:g_fieldnm TYPE txt30.
  cl_descr ?= cl_abap_typedescr=>describe_by_data( gt_mara ).
  LOOP AT cl_descr->components ASSIGNING <fs_comp>.
    WRITE: / <fs_comp>-name,             "字段名称
             <fs_comp>-type_kind,        "字段类型
             <fs_comp>-length,           "字段长度
             <fs_comp>-decimals.         "字段小数位
    APPEND <fs_comp>-name TO gt_field.
  ENDLOOP.

LOOP AT gt_field.
    CONCATENATE 'GT_MARA-' gt_field-fieldnm INTO gt_field.
    MODIFY gt_field.
  ENDLOOP.

SELECT * FROM mara
      INTO CORRESPONDING FIELDS OF TABLE gt_mara
      WHERE matnr IN s_matnr.
* 使用得到的字段名称,输出字段结果
  LOOP AT gt_mara.
    WRITE /.
    LOOP AT gt_field.
      ASSIGN (gt_field-fieldnm) TO <fs_name>.
      WRITE: <fs_name>.
    ENDLOOP.
  ENDLOOP.
ENDFORM.                    " sub_process_fieldname

 

【转载】ABAP-如何读取内表的字段名称的更多相关文章

  1. 转载Sql 获取数据库所有表及其字段名称,类型,长度

    转载原地址 http://www.cnblogs.com/Fooo/archive/2009/08/27/1554769.html SELECT (case when a.colorder=1 the ...

  2. ABAP 动态生成内表的几种方法

    最近要写个程序,既有更新的,也有删除的,需要涉及到很多系统表,如果一个表一个表进行更新或者删除太慢了,于是就想通过创建动态内表来实现这些功能,在网上找了一些资料,经过多次尝试,终于测试成功了.网上讲述 ...

  3. Java 通过JDBC查询数据库表结构(字段名称,类型,长度等)

    Java 通过JDBC查询数据库表结构(字段名称,类型,长度等) 发布者:唛唛家的豆子   时间:2012-11-20 17:54:02   Java 通过JDBC查询数据库表结构(字段名称,类型,长 ...

  4. 数据库的表的字段名称与实体类(pojo)不对应解决方案

    数据库的表的字段名称与实体类(pojo)不对应解决方案 数据库表 ![image-20200429130200825](C:%5CUsers%5C%E6%9E%97%E6%AD%A3%E6%98%8E ...

  5. ABAP工作区,内表,标题行的定义和区别

         工作区域跟变量一样,是用来保存数据的.区别是变量只能从中保存一个数据.而工作区域可以存放多个.把多个数据合在一起就成工作区域了.下面我们来看看工作区域是如何定义的吧.定义有四种方法,如下:1 ...

  6. PHP获取mysql数据表的字段名称和详细信息的方法

    首先我们需要了解下查询MySQL数据库/表相关信息的SQL语句: 代码如下: SHOW DATABASES                                //列出 MySQL Serv ...

  7. SAP abap 内表增加字段方法,结构复用

    1.include data: begin of gth_qamr.         include structure qamr. data: kurztext like qamv-kurztext ...

  8. java怎样读取数据库表中字段的数据类型?

    用DriverManager.getConnection()得到connect, 用connect.getMetaData()得到 DatabaseMetaData, 用 DatabaseMetaDa ...

  9. 获取mssqlserver数据库表的字段名称,字段说明,数据类型,主键等表的信息

    sql脚本: SELECT TableName then d.name else '' end,---表名 TableShowsThat then isnull(f.value,'') else '' ...

随机推荐

  1. libiconv2.dll

    一.问题描述 在我使用MinGW的mingw32-make工具的时候,提示错误“libiconv-2.dll找不到”. 二.问题解决 1.从脚本之家下载“libiconv-2.dll”,下载地址“ht ...

  2. python多线程threading.Lock锁用法实例

    本文实例讲述了python多线程threading.Lock锁的用法实例,分享给大家供大家参考.具体分析如下: python的锁可以独立提取出来 mutex = threading.Lock() #锁 ...

  3. Ubuntu使用wget下载jdk问题

    使用以下命令可下载成功,否则下载下来的可能是一个html文档. wget --no-cookies --no-check-certificate --header "Cookie:gpw_e ...

  4. c#中总是提示“在代码运行时或者在禁用“只要一个进程中断,就中断所有进程”选项时,不允许进行更改。

    但是根据它提示的修改方法,还是提示这个. “此选项可在“工具”->“选项”->“调试”中启用.” 根本不起作用,后来试着,要这样操作: 工具->选项->调试->编辑并继续 ...

  5. 在ubuntu12.04下编译android4.1.2添加JNI层出现问题

    tiny4412学习者,在ubuntu12.04下编译android4.1.2添加JNI层出现问题: (虚心请教解决方法) trouble writing output: Too many metho ...

  6. Handler sendMessage 与 obtainMessage (sendToTarget)

    这篇文章讲的很好: http://www.cnblogs.com/android007/archive/2012/05/10/2494766.html 两种用法: 1. private void se ...

  7. oracle稳定执行计划1

    稳定执行计划 1 策略: Oracle的sql 执行计划在一些场景下会发生变化,导致系统会发生不可知的情况,影响系统的稳定性,特别是关键业务的sql. 比如下面的场景: 统计信息过老,重新收集了统计信 ...

  8. SharePoint2010沙盒解决方案基础开发——关于TreeView树形控件读取列表数据(树形导航)的webpart开发及问题

    转:http://blog.csdn.net/miragesky2049/article/details/7204882 SharePoint2010沙盒解决方案基础开发--关于TreeView树形控 ...

  9. CentOS升级内核的方法

    升级前的内核版本为:2.6.32-431.el6.x86_64 升级后的内核版本为:3.10.101-1.el6.elrepo.x86_64 升级方法: 1.导入key rpm --import ht ...

  10. 模拟(堆):USACO Jan11 瓶颈

    题目描述 Farmer John is gathering the cows. His farm contains a network of N (1 <= N <= 100,000) f ...