【转载】ABAP-如何读取内表的字段名称
*& 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-如何读取内表的字段名称的更多相关文章
- 转载Sql 获取数据库所有表及其字段名称,类型,长度
转载原地址 http://www.cnblogs.com/Fooo/archive/2009/08/27/1554769.html SELECT (case when a.colorder=1 the ...
- ABAP 动态生成内表的几种方法
最近要写个程序,既有更新的,也有删除的,需要涉及到很多系统表,如果一个表一个表进行更新或者删除太慢了,于是就想通过创建动态内表来实现这些功能,在网上找了一些资料,经过多次尝试,终于测试成功了.网上讲述 ...
- Java 通过JDBC查询数据库表结构(字段名称,类型,长度等)
Java 通过JDBC查询数据库表结构(字段名称,类型,长度等) 发布者:唛唛家的豆子 时间:2012-11-20 17:54:02 Java 通过JDBC查询数据库表结构(字段名称,类型,长 ...
- 数据库的表的字段名称与实体类(pojo)不对应解决方案
数据库的表的字段名称与实体类(pojo)不对应解决方案 数据库表 得到connect, 用connect.getMetaData()得到 DatabaseMetaData, 用 DatabaseMetaDa ...
- 获取mssqlserver数据库表的字段名称,字段说明,数据类型,主键等表的信息
sql脚本: SELECT TableName then d.name else '' end,---表名 TableShowsThat then isnull(f.value,'') else '' ...
随机推荐
- C++ static全局变量与全局变量的区别/static全局函数与全局函数的区别
全局变量(外部变量)的说明之前再冠以static 就构成了静态的全局变量.全局变量本身就是静态存储方式, 静态全局变量当然也是静态存储方式.这两者在存储方式上并无不同.这两者的区别虽在于非静态全局变量 ...
- 用Eclipse 开发Dynamic Web Project应用程序 【转】
简介:本文仅简单介绍基于Eclipse开发Dynamic Web Project应用下的JSP,Servlet及TOMCAT数据源的配置和开发. 软件环境: Eclipse Java EE IDE f ...
- c#自动更新+安装程序的制作 (转)
c#自动更新+安装程序的制作 (转) http://blog.csdn.net/myhuli120/article/details/6927588 一.自动更新的实现 让客户端实现自动更新,通常做法 ...
- Excel Skill (1) -- 判断时如何去掉框里的空格
使用命令 TRIM 说明: Purpose. Remove extra spaces from text. Text with extra spaces removed. =TRIM (text) t ...
- UITableView中复用cell显示信息错乱
UITableView继承自UIScrollview,是苹果为我们封装好的一个基于scroll的控件.上面主要是一个个的 UITableViewCell,可以让UITableViewCell响应一些点 ...
- Penetration test
Contents 1 History 2 Standards and certification 3 Tools 3.1 Specialized OS distributions 3.2 Softwa ...
- uva 1453 - Squares
旋转卡壳算法: 直接在这个上面粘的模板 主要用途:用于求凸包的直径.宽度,两个不相交凸包间的最大距离和最小距离··· 这题就是求凸包的直径 #include <cstdio> #inclu ...
- Mongodb与关系型数据库
MongoDB没有固定的关系约束 没有事务, 安全性不高 不一定保证数据的一致性. ACID不符合 NoSQL 放弃了传统关系型数据库严格的事务一致性和范式约束,采用弱一致性模型. http://os ...
- IAR Embedded Workbench 破解方法+工具+授权文件
转自IAR Embedded Workbench 破解方法+工具+授权文件 本文重点阐述了如何手动爆破 IAR EWARM 6.x以及生成License,目的一是和大家分享下,二是自己记录下过程,以便 ...
- Setup SQL Server 2008 Maintenance Plan Email Notifications
一条龙作完,如何设置EXCHANGE的操作员邮件通知.. ~~~~ http://808techblog.com/2009/07/setup-sql-server-2008-maintena.html ...