美文网首页
SAP小技巧 动态内表的定义及使用

SAP小技巧 动态内表的定义及使用

作者: syjf1976_abap | 来源:发表于2021-06-18 21:01 被阅读0次

点击蓝字 关注我们

前言

一般情况下,为了程序适用性更好,我们需要定义动态内表.来获取并呈现数据.

标准事务代码SE16N就是一个动态内表的典型应用.

动态报表中大量使用了动态内表定义.

详见链接-动态报表简介无峰,公众号:ABAP 技巧与实战动态报表简介

本文主要介绍动态内表的定义及使用方式

定义方式一

参考数据字典结构定义, 这种方式比较简单, 但是不够灵活. 在一些特定场景推荐使用.

定义方式二

调用静态类方法

cl_alv_table_create=>create_dynamic_table 定义. 这种方式定义动态内表在一个进程中最多只能定义36次. 超过36次会报错.

其中 传递的内表 IT_FIELDCATALOG 可以通过函数

LVC_FIELDCATALOG_MERGE 传入表或结构获取

36次限制原因及处理方式

SPRING

该静态类方法中使用临时生成代码的方式产生数据的定义(这种办法也可以用来创建函数,计算逻辑表达式的结果或者计算表达式的结果,以后又机会写文介绍一下). 这种临时生成的代码池在一个进程中有次数限制. 可以使用SUBMIT <过度程序> 或 CALL FUNCTION IN NEW TASK 启动新的进程解决这个限制.

定义方式三

调用静态类方法 cl_abap_tabledescr=>create 定义. 这种方法没有最大次数限制.推荐使用.

使用该方法,重要是构造内表LT_COMPS.

该内表参考类型ABAP_COMPONENTDESCR 定义.(图一)

其中

  • NAME 用来方字段名称

  • TYPE 用来方字段类型.

TYPE 可以通过类方法

CL_ABAP_ELEMDESCR=>DESCRIBE_BY_NAME 传入一个数据元素定义. 暂时没有发现通过基本类型及长度来定义 TYPE 的方法 图二. 暂时把这个作为这种方式定义动态内表的局限.(如果你有不同的看法, 欢迎加微信392077沟通).

图一

图二

定义动态哈希内表

上述方式定义的都是标准内表. 如果需要定义哈希内表.只需要在定义好的动态内存基础上, 补充主键部分即可.

动态内表的处理

因为内表是动态定义的, 所以对字段的访问也必须使用动态的方式.

如下图 循环动态内表 ASSSIGN 到一个 工作区指针

通过 ASSIGN COMPONENT <字段名> OF STRUCTURE TO FIELD-SYMBOL(<FS>)

动态把指定字段的内容写入指针<FS> . 对指针<FS>的修改将会影响内表中该字段的值.

也可以使用索引的方式动态访问工作区. 详情见ASSIGN 语句的语法帮助.

整合定义动态内表的类

因为常规动态内表的定义方式二与方式三各有优劣,所以通过类整合了动态内表的定义, 一般情况下,使用方式三, 当方式三无法处理时, 使用方式二. 同时整合了动态哈希内表的定义

总结

动态内表的使用将给程序带来极大的灵活性.

使用动态内表,结合动态SQL语句,动态选择屏幕. 我们可以开发出类似与SE16N的程序:指定任意表显示或修改内容.

THE

END

相关文章

  • SAP小技巧 动态内表的定义及使用

    点击蓝字 关注我们 一 前言 一般情况下,为了程序适用性更好,我们需要定义动态内表.来获取并呈现数据. 标准事务代...

  • SAP ABAP动态内表

    动态内表的创建和使用主要有以下几点,其中方法三最简单。: 1.动态内表的创建,首先要定义动态结构,然后再根据定义的...

  • 02数据字典,1根据销售业务模型确定目标及分析

    目标及说明 目标: 掌握SAP数据字典各种对象的定义和使用 能根据业务数据要求,建立存储数据用的表和视图 需求说明...

  • 第六期特训营学习day1

    01 操作与技巧; 02 函数与公式(常用函数); 03 数据透视表及图表; 04 动态透视表及图表; 05 复盘...

  • ABAP动态内表

    使用了动态内表的方法,参考了网上的案例,具体如下

  • SAP ABAP 创建域、数据元素、表、结构和视图

    • SAP ABAP 域• 数据元素• 表• 结构• 视图 01 SAP ABAP 域 用于在ABAP字典中定义数...

  • 动态内表

    动态内表相当于从一张表里捞数据,filecat是不固定的,想用什么传什么。 例子: assign componen...

  • 动态内表

    由于今天碰了这个问题所以特此学习了动态内表。变成自己的知识。总结: 网上面的只是告诉我们怎么做。为什么这么做的底层...

  • 如何从 ABAP 调试器里提取某个内表的内容用于单元测试

    假设我想把内表 gt_tstct 里的所有记录,全部提取出来,用于 ABAP 单元测试里: 我们可以使用 SAP ...

  • 视图

    定义: 一种虚拟存在的表,行和列的数据来自定义视图的查询中使用的表,并且是在使用视图时动态生成的,只保存了sql逻...

网友评论

      本文标题:SAP小技巧 动态内表的定义及使用

      本文链接:https://www.haomeiwen.com/subject/nmylyltx.html