问题标签 [rtts]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
6654 浏览

oop - 使用 RTTS 从内部表中为字段创建范围

我想创建一个接受 2 个参数的函数/自定义类方法:

1) IM_ITAB 类型 ANY TABLE

2) IM_COMPONENT 类型字符串

并返回 1 个参数:

1) EX_RANGE 类型 PIQ_SELOPT_T

所以,算法是这样的:

  • 首先,我们检查具有组件名称的列是否存在
  • 然后,我们检查内部表是否为空。
  • 然后,我们循环遍历内部表分配组件和填充范围表。代码如下。

但我想进一步改进该方法。如果导入的内部表有 255 列,那么遍历该表将需要更长的时间。但我只需要一列来组成范围。

所以我想获取内部表的组件,然后只选择一个组件,创建一个只包含该组件的新线型,然后创建具有该线型的内部表并复制。

这是与我想要实现的目标相对应的伪代码:

如何“剪掉”一个组件并使用 RTTS 创建新的线型?

0 投票
4 回答
3743 浏览

data-structures - 使用包含获取 DDIC 结构的组件

cl_abap_structdescr->get_components用来获取结构中的字段列表。当我在本地声明的结构类型上使用它时它工作得很好,但是当我在 DDIC 结构上使用它时,它并没有给我我期望的结果。

可重现的例子:

结果:

GTY_OUTTAB 没问题:

在此处输入图像描述

P0008尽管它包含更多字段(见下文),但只有两个字段:

在此处输入图像描述

我已经尝试过使用cl_abap_typedescr并用谷歌搜索,但我在网上找到的每个代码看起来都和我的一样?

P0008如您所见,这是包含许多字段的定义:

SE11 Hierarchy 显示中的 DDIC 结构 P0008

0 投票
1 回答
473 浏览

dynamic - CX_SY_STRUCT_COMP_NAME=>illegal_char_in_name 在使用 RTTS 创建类型时

我正在尝试使用 RTTS 类构建动态类型。我已经构建了一个包含列名的组件表'COL_1''COL_2'等等......CL_ABAP_STRUCTDESCR=>CREATE( )在第 73 行的标准方法中类型创建失败:

的验尸comp-name值为COL_1。如您所见,这些字符是有效的。我不明白这里的 IF 条件如何为真。

在以完全相同的方式调用此方法之前,我已经在我自己的模块中测试了列名的有效性,并且 IF 条件在那里返回 FALSE。

重现此错误的最少代码:

0 投票
2 回答
198 浏览

abap - 获取 itab 的表结构失败

我目前正在做一个项目,将数据提取到几个 itabs 中,并将它们全部保存到我本地电脑上的一个 excel 文件中。

为了将我的数据移动到 excel 文件中,我必须遍历似乎可以使用cl_abap_structdescr=>describe_by_dataandcl_abap_tabledescr=>create函数归档的表格字段。在我阅读的原始文章中,作者将它们与 ABAP 字典表一起使用,我的目标是将其与任意内部表一起使用。

我在测试报告中尝试过,并使用 T005 进行测试:

两者都describe_by_name()不起作用describe_by_data(),按名称描述会导致“NOT_FOUND”异常。因为它不是 ABAP 字典表,所以这对我来说很有意义。用数据描述会CX_SY_MOVE_CAST_ERROR告诉我源类型\CLASS=CL_ABAP_TABLEDESC不能转换为"\CLASS=CL_ABAP_STRUCTDESC.

提前致谢

0 投票
2 回答
125 浏览

abap - 使用 TABLE-FIELD 声明变量时如何找出变量的类型

是否可以从变量中找出 TABLE-FIELD 短语?在下面的示例中,如何从字符串中获取jkak-vbeln类型?dref我尝试了一些 RTTI,但没有发现任何有用的东西。