ABAP 7.40:在内部表的内联声明之后添加列

2020-09-04 19:39发布

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

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


你好

在内部表被声明为内联之后,是否可以添加其他列?

例如,为了查找具有特定表条目的传输,我想添加一个类似于E071K-TABKEY的附加列TABKEY,然后再添加传输所有者和描述。

选择*从T184到表@DATA(lt_t184)中,AUART ='AA'。
如果sy-subrc = 0。 "向lt_t184添加一个额外的TABKEY列 ENDIF。



我能否在select语句中声明一个附加的随机字段(与所涉及的表无关)?

 SELECT T〜*,random_field类型的tabkey作为tabkey
 从T184到表@DATA(lt_t184),其中AUART ='AA'。

谢谢。

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

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


你好

在内部表被声明为内联之后,是否可以添加其他列?

例如,为了查找具有特定表条目的传输,我想添加一个类似于E071K-TABKEY的附加列TABKEY,然后再添加传输所有者和描述。

选择*从T184到表@DATA(lt_t184)中,AUART ='AA'。
如果sy-subrc = 0。 "向lt_t184添加一个额外的TABKEY列 ENDIF。



我能否在select语句中声明一个附加的随机字段(与所涉及的表无关)?

 SELECT T〜*,random_field类型的tabkey作为tabkey
 从T184到表@DATA(lt_t184),其中AUART ='AA'。

谢谢。

付费偷看设置
发送
4条回答
Haoba3210
1楼 · 2020-09-04 20:24.采纳回答

更新:CAST自7.40 SP5开始可用,但功能非常有限; 自7.50起(参考注释),它才可以真正完全使用。

自7.50起,您可以使用 CAST 以根据预定义的DDIC类型进行输入:

 SELECT T〜*,CAST(''AS CHAR(120))AS  random_field
 从T184 AS T
 AUART ='AA'
 进入表@DATA(lt_t184)。

主机表达式以根据DDIC数据元素(也为7.50)键入:

 SELECT T〜*,@(VALUE tabkey())AS random_field
 从T184 AS T
 AUART ='AA'
 插入表@DATA(lt_t184)。
haha101010
2楼-- · 2020-09-04 20:35

。 R. Koppolu 感谢您的反馈。 您的评论应该作为答案发布,以便将来的访问者可以看到,并且您可以将"最佳答案"切换为您的答案!

Tong__Ming
3楼-- · 2020-09-04 20:34

嗨,

此解决方案也应适用于7.40 SP8等较旧的系统。

lg约翰

报告zyfoes01。

 DATA data_ref类型REF TO数据。
 数据table_ref类型参考cl_abap_tabledescr。
 数据stru_ref类型参考cl_abap_structdescr。
 数据elem_ref类型参考cl_abap_elemdescr。
 数据组件类型cl_abap_structdescr => component_table。
 cl_abap_structdescr => component_table的数据组件类型线。
 DATA result2_ref TYPE REF TO数据。

 选择一个〜合作伙伴AS partner_number,
        一个〜
        b〜addrnumber
   来自but000 AS
   内联接but020 AS b
      开b〜合作伙伴= a〜合作伙伴
   到表@DATA(结果)。

 "获取表格详细信息
 将结果参考存入data_ref。
 table_ref?= cl_abap_tabledescr => describe_by_data_ref(data_ref)。
 stru_ref?= table_ref-> get_table_line_type()。
 组件= stru_ref-> get_components()。

 "根据数据元素MATNR创建新组件
 component-name ='MATNR'。
 组件类型?= cl_abap_elemdescr => describe_by_name('MATNR')。
 将组件追加到组件。

 "创建新的结构和表
 stru_ref?= cl_abap_structdescr => create(p_components = components)。
 table_ref?= cl_abap_tabledescr => create(p_line_type = stru_ref)。
 创建数据result2_ref类型句柄table_ref。

 分配参考,并将数据从结果移至result2。
 ASSIGN result2_ref-> *至FIELD-SYMBOL()。

 "  =对应的#(结果)。"> 7.50
 将结果移动到
葫芦娃快救爷爷
4楼-- · 2020-09-04 20:18

你好约翰,

感谢您的回复。 在ABAP 7.40中,您的解决方案对我也适用。

但是,如果可能的话,我希望通过内联声明来实现。 此外,该解决方案还利用了额外的内存。

但是,如果在实例条件记录(Axxx)表中进行选择的时间点未知,那么我确实会看到这种方法的优点。

此致,
S.R.K

一周热门 更多>