将选择选项转换为内部表

2020-08-19 02:20发布

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


我已将s_field声明为selection -option。

我需要将s_field转换为内部表。

例如。

如果我将值作为1到5(低= 1高= 5)传递给s_field

然后内部表应包含1 2 3 4 5

有人可以建议我如何在abap 7.40中将选择选项更改为内部表吗?

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


我已将s_field声明为selection -option。

我需要将s_field转换为内部表。

例如。

如果我将值作为1到5(低= 1高= 5)传递给s_field

然后内部表应包含1 2 3 4 5

有人可以建议我如何在abap 7.40中将选择选项更改为内部表吗?

付费偷看设置
发送
6条回答
me_for_i
1楼-- · 2020-08-19 02:54

据我所知,尚无一般解决方案。

在大多数情况下,范围的数据类型/域具有固定值或包含有效值的定制表。 您可以使用自己的范围来选择它们。 这样,您会得到一个适合您范围的所有现有值的简单列表。

一般的解决方案不仅必须适合整数值,还必须适合每种数据类型。 另外,范围可以包含多个值或上限和下限,还可以包括和排除规则,模式等。 在大多数情况下,我上面试图描述的选择为我解决了这些问题。

风早神人
2楼-- · 2020-08-19 03:04

如果选择选项为空,应该返回所有整数的无穷列表吗?

< p>或者如果它不是" 3",它是否应该返回除3以外的无穷整数列表?

Baoming ROSE
3楼-- · 2020-08-19 03:01

由于您对要求的了解并不十分清楚,因此我必须基于 描述和示例:

  • 我假设您的选择选项S_FIELD为整数类型
  • 我假设您的可能整数值集受FROM和TO限制
    FROM最有可能为1,TO可能为10(或100,或....)。
    FROM和TO是整数,可以为负或正,并且FROM小于/等于TO
  • < li>因此,结果内部表的类型也为整数

下面的代码将为您提供内部表INT_TAB中从INT_FROM到INT_TO的整数列表,仅包括那些 由选择选项S_FIELD定义:

 REPORT ZSELECT  OPT2INTEGERTAB。

 数据间隔类型i。
 SELECT-OPTIONS s_field FOR间隔。
 选择屏幕跳过1。
 参数int_from TYPE i默认值1。
 参数int_to TYPE I默认10。

 数据int_range TYPE i。
 DATA int_current TYPE i。
 i的数据int_tab类型已排序表,带有唯一键table_line。

 检查int_from <= int_to。
 int_range = int_to-int_from + 1。
 int_current = int_from。

 做int_range TIMES。
   IF int_current IN s_field。
     插入int_current INTO TABLE int_tab。
   万一。
   将1加到int_current。
 ENDDO。

 DATA(out)= cl_demo_output => new()。
 out-> write(s_field [])。
 out-> write(int_tab)。
 out-> display()
 

也许,在看到此"解决方案"之后,您可以在 如果它还不能解决您的问题,那我一定会怀疑。

浮生未央
4楼-- · 2020-08-19 02:55

Muthupandi M

您能证明需要内部表的理由吗?

使用Select选项中的值,您可以直接在选择查询中使用它们,为什么需要内部表? 表格解释选择选项? 背后有任何业务原因吗?

致谢!

Nan4612
5楼-- · 2020-08-19 02:58

您可以使用以下选项-将Selecting选项转换为范围

 APPEND LINES OF:s_field到r_field  

,其中s_field是您的选择选项-r_field是您的范围。

Violet凡
6楼-- · 2020-08-19 02:52

Muthupandi M ,请继续回答您的公开问题。

  • 评论答案或您的问题是否还有未解决的问题。
  • 否则将答案标记为接受,如果它可以帮助您解决问题
  • 或发布您自己的答案并接受 如果您自己找到了另一个有用的解决方案
  • ,或者将您的问题重定向到另一个相关且对解决您的问题有用的问题
  • 最后,请关闭您的问题

一周热门 更多>