ABAP中创建动态内表的三种方法(转载)

BAP中创建动态内表的三种方法

第一种:

如果我们需要的动态内表字段或者动态工作区和数据字典中的类型一致,可以直接使用CREATE DATA生成,当然也可以是自定义类型。

比如要产生和数据表MARA结构一致的动态内表:

DATA : DY_TABLE TYPE REF TO DATA, WA_LINE TYPE REF TO DATA.

FIELD-SYMBOLS: <DYN_TABLE> TYPE STANDARD TABLE .

CREATE DATA DY_TABLE TYPE TABLE OF MARA. 
ASSIGN DY_TABLE->* TO <DYN_TABLE>.

CREATE DATA WA_LINE LIKE LINE OF <DYN_TABLE>.
ASSIGN WA_LINE->* TO <DYN_WA>.

如果在程序中需要动态生成多个不同的动态内表,可以将表名设置为变量

CREATE DATA DY_TABLE TYPE TABLE OF (tabname).

第二种:

如果需要对动态内表进行输出,控制输出顺序等属性。可以使用下述方法:

CALL FUNCTION 'LVC_FIELDCATALOG_MERGE'
EXPORTING
I_CLIENT_NEVER_DISPLAY = ''
I_STRUCTURE_NAME = TABNAME
CHANGING
CT_FIELDCAT = IT_STRUCTURE
EXCEPTIONS
INCONSISTENT_INTERFACE = 1
PROGRAM_ERROR = 2
OTHERS = 3.

使用该方法创建输入的tabname对应的字段目录

之后根据该字段目录产生与之对应的动态内表结构

CALL METHOD CL_ALV_TABLE_CREATE=>CREATE_DYNAMIC_TABLE
EXPORTING
IT_FIELDCATALOG = IT_STRUCTURE
* I_LENGTH_IN_BYTE = 'X'
IMPORTING
EP_TABLE = DY_TABLE.

ASSIGN DY_TABLE->* TO <DYN_TABLE>.

动态工作区的产生跟第一种一样。

该方法有一种弊端,仅能连续使用36次。即改方法产生动态是使用创建子例程的方法,当连续使用36次时,会出现子例程池溢出的异常,以为该方法是针对ALV技术的处理,所以用于其它地方的时候需要慎重。

第三种:

第三种的基本思路跟第二种是一样的,只是使用的类和方法不一样,导致输入的数据不一样。

首先产生结构

CALL FUNCTION 'LVC_FIELDCATALOG_MERGE'
EXPORTING
I_CLIENT_NEVER_DISPLAY = ''
I_STRUCTURE_NAME = TABNAME
CHANGING
CT_FIELDCAT = IT_STRUCTURE
EXCEPTIONS
INCONSISTENT_INTERFACE = 1
PROGRAM_ERROR = 2
OTHERS = 3.

根据字段产生的字段目录生成相应的接口参数ZCOMPONENTS

DATA ZCOMPONENTS TYPE ABAP_COMPONENT_TAB. 在声明该变量前要声明 TYPE-POOLS:ABAP.

ABAP_COMPONENT_TAB这个结构中的字段如下所示:

name TYPE string,
type TYPE REF TO cl_abap_datadescr,
as_include TYPE abap_bool,
suffix TYPE string,

 

所以循环之前产生的字段目录内表,

name字段是结构名或者表名 即TABNAME

type是一个对象,可以使用 CL_ABAP_DATADESCR=>DESCRIBE_BY_NAME 这个方法得到,其中 P_NAME 这个参数是表名或结构名+字段名 type 使用?=符号来获取 P_DESCR_REF 的实例

后两个可以不填

 


产生结构

CALL METHOD CL_ABAP_STRUCTDESCR=>CREATE
EXPORTING
P_COMPONENTS = ZCOMPONENTS 
RECEIVING
P_RESULT = ZRESULT .

产生表

CALL METHOD CL_ABAP_TABLEDESCR=>CREATE
EXPORTING
P_LINE_TYPE = ZRESULT

RECEIVING
P_RESULT = WRESULT.

CREATE DATA WA_LINE TYPE HANDLE ZRESULT.
CREATE DATA DYN_TABLE TYPE HANDLE WRESULT.

该方法可以避免方法2的弊端。

转载于:https://www.cnblogs.com/yanglikun/p/4177973.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/398660.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

个人简介

我叫范华万&#xff0c;今天22岁&#xff0c;来自于福建省。目前在闽江学院就学。我学的是软件工程软件服务开发专业&#xff0c;能从事网站设计、java工程师、ps技术、c、数据库管理。本人性格乐观、开朗&#xff0c;有上进心、进取心&#xff0c;对学习认真负责&#xff0c;I…

数据库杂谈(八)——查询优化

文章目录8 查询优化8.1 概述8.2 查询数和语法树8.3 代数优化8.4 物理优化8.5 连接操作优化8.5.1 嵌套循环法8.5.2 利用B树索引或哈希索引寻找匹配元组法8.5.3 散列连接法8.6 后话8 查询优化 8.1 概述 我们不管是在数据库软件如MySQL、SQLServer等&#xff0c;还是通过应用程序…

Android-入门学习笔记-使用 CursorLoader 加载数据

3 使用这个代码片段开始练习 也可以参考 Codepath 教程 高级内容补充: 你是否在思考ArrayAdapter’s 的 getView() 方法和CursorAdapter 的 newView() 和 bindView() 方法? 你可以查看 CursorAdapter 类的源码. getView() 方法依然存在, 但是它实际根据是否存在列表项能够被循…

逆向思维求素数

1 #include <stdio.h>2 3 int main(void)4 {5 const int len 100;6 int prime[len];7 for (int i0; i<len; i)8 prime[i] 1; // 1 标记这个序号数为素数&#xff0c;0标记为非素数9 for (int x2; x<len; x) 10 { 11 for (in…

在 Angularjs 中 ui-sref 和 $state.go 如何传递参数

1 ui-sref、$state.go 的区别 ui-sref 一般使用在 <a>...</a>&#xff1b; <a ui-sref"message-list">消息中心</a> $state.go(someState)一般使用在 controller里面&#xff1b; .controller(firstCtrl, function($scope, $state) {$state.…

机器学习的练功方式(七)——决策树

文章目录致谢7 决策树7.1 认识决策树7.2 决策树原理7.3 信息论7.3.1 信息熵7.3.1.1 熵7.3.1.2 信息7.3.1.3 信息熵7.3.2 信息增益7.4 决策树实现7.5 决策图7.6 后话致谢 信息熵是什么&#xff1f; - 知乎 (zhihu.com) 没有免费午餐定理_百度百科 (baidu.com) 7 决策树 决策树(…

[BZOJ3583]杰杰的女性朋友(矩阵快速幂)

杰杰的女性朋友 时间限制&#xff1a;10s 空间限制&#xff1a;256MB 题目描述 杰杰是魔法界的一名传奇人物。他对魔法具有深刻的洞察力&#xff0c;惊人的领悟力&#xff0c;以及令人叹为观止的创造力。自从他从事魔法竞赛以来&#xff0c;短短几年时间&#xff0c;就已经…

13.程序集篇

1.定义 程序集是.net框架应用程序生成块&#xff0c;它包含编译好的代码逻辑单元。 2.结构 程序集有描述他的程序清单、类型元数据&#xff0c;MSIL代码和资源组成。 程序集清单&#xff1a; 每一个程序集都包含描述该程序集中的各个元素彼此如何关联的数据集合。程序集清单包含…

机器学习的练功方式(八)——随机森林

文章目录致谢8 随机森林8.1 引入8.2 决策森林8.2.1 集成学习方法8.2.2 什么是随机森林8.2.3 无偏估计8.2.4 决策森林原理过程8.2.5 决策森林算法实现8.3 总结致谢 如何理解无偏估计&#xff1f;无偏估计有什么用&#xff1f;什么是无偏估计&#xff1f;_司南牧|知乎|博客|易懂教…

E20180219-hm-xa

comparison n. 比较&#xff0c;对照; [语] 比喻; 比较级; conjunction n. 连接; 连词; 联合&#xff0c;结合物; &#xff08;恒星、行星等的&#xff09; 合; [例句] assignment n. 分给&#xff0c;分配; 任务&#xff0c;工作&#xff0c;&#xff08;课外&#xff09;作…

这是我看过最精彩的回答

或许我没见过世面&#xff0c;但是这却是我看过对“怎么成为一个优秀的程序员&#xff0c;而不是一个优秀的码农&#xff1f;”最精彩的回答【全部复制粘贴】 其实我的心一直因为现在的工作【餐饮服务】而动摇&#xff0c;忽而想学网站&#xff0c;忽而c语言根基&#xff0c;忽…

免费LInux主机资源

一、m-net.arbornet.org注冊 &#xff08;1&#xff09;telnet m-net.arbornet.org vista系统默认是关闭telnet的&#xff08;由于不安全&#xff09;&#xff0c;须要开启。cmd->telnet&#xff08;2&#xff09;login:newuser password: (3) ssh m-net.arbornet.org vi的…

并行计算(一)——并行计算机系统及结构模型

致谢 SMP、COW、PVP、MPP计算机相关_神.秘.人的博客-CSDN博客_并行向量处理机 1 并行计算机系统及结构模型 1.1 并行计算 在下面的讲解之前&#xff0c;我们先看一下并行计算的量纲。 1.1.1 并行计算和计算机科学 随着计算机和计算机学科的发展&#xff0c;所有的学科都转向…

十、input与跳转

1.在loginAction&#xff0c;新增result <action name"LoginAction" method"login" class"com.myz.action.LoginAction"><!-- result不配置name表示默认为success,配置了name值则将与action中返回的字符串对应 --><result>/lo…

【机器学习实战】极大似然法

2019独角兽企业重金招聘Python工程师标准>>> http://baike.baidu.com/link?url3Ej1VIItwWd35sXeoRWRhcJkJLCFvzPzNIoTkAfai8ZIS4Ppcch4_maQ25FjNCU1Eplsp4k3oPKLyv6VIsPhsq 一、 最大似然法是一种具有理论性的点估计法&#xff0c;基本思想是&#xff0c;当从模型…

自定义配置节与配置节的读取

一、引子你是否也遇到过这样的问题&#xff1a;项目很多配置都写到了App.Config或Web.Config的AppSettings内&#xff0c;每个人都加了几条&#xff0c;到最后囤积了大量的配置&#xff0c;分不清哪个是有用的、哪个是没用的了。&#xff08;即便加了相关注释&#xff0c;也是乱…

机器学习的练功方式(九)——线性回归

文章目录致谢9 线性回归再相遇9.1 再遇9.1.1 概述9.1.2 矩阵和向量9.1.3 矩阵加减乘除9.1.3.1 矩阵——矩阵加减9.1.3.2 矩阵——标量加减乘9.1.3.3 矩阵——向量相乘9.1.3.4 矩阵——矩阵相乘9.1.3.5 矩阵的逆9.1.3.6 矩阵的转置9.1.4 向量化9.1.5 广义线性模型9.2 正规方程9.…

vsftp服务器搭建

1.FTP的主动模式和被动模式的区别&#xff1a; 最大的区别是数据端口并不总是20&#xff0c; 主动模式和被动模式的优缺点&#xff1a; 主动FTP对FTP服务器的管理和安全很有利&#xff0c;但对客户端的管理不利。因为FTP服务器企图与客户端的高位随机端口建立连接&#xff0c;而…

12个月份统计分组

/** 根据月份来统计trade里面的入账&#xff0c;支出&#xff0c;总盈利*/public function countMonth(){$in array();$out array();$res array();$year date("Y",time());$in_sql SELECT SUM(money) AS mon, FROM_UNIXTIME(cdate, "%m") AS m FR…

深度学习修炼(一)——从机器学习转向深度学习

文章目录1 转变1.1 前言1.2 基本元素1.2.1 张量1.2.2 创建张量1.2.3 操纵张量1.2.3.1 张量乘法1.2.3.2 哈达玛积1.2.3.3 降维1.2.3.4 转置1.2.3.5 范数1.2.3.6 拼接张量1.2.4 张量属性1.2.5 张量和Numpy1.2.5.1 张量变Numpy1.2.5.2 Numpy变张量1.3 后话1 转变 1.1 前言 在之前…