SAP ABAP 读取内部表

赛锐信息:SAP ABAP 读取内部表 图1
赛锐信息,SAP ERP定制,ERP定制

我们可以使用READ TABLE语句的以下语法读取表的行:

READ TABLE <internal_table> FROM <work_area_itab>.

在此语法中,< work_area_itab> 表达式表示与< internal_table>的线类型兼容的工作区域。 表。 我们可以通过使用WITH KEY子句在READ语句中指定搜索键,而不是表键,如下面的语法所示:

READ TABLE <internal_table> WITH KEY = <internal_tab_field>.

这里,内部表的整行用作搜索键。 将表的整行的内容与< internal_tab_field>的内容进行比较。 领域。 如果< internal_tab_field> 字段与表的行类型不兼容,则这些值将根据表的行类型进行转换。 搜索键允许在内部表中查找没有结构化行类型的条目,即行是单个字段还是内部表类型。

READ语句的以下语法用于通过使用COMPARING子句指定工作区或字段符号:

READ TABLE <internal_table> <key> INTO <work_area_itab>
   [COMPARING <F1> <F2>...<Fn>].

当使用COMPARING子句时,结构化行类型的指定表字段<F1>,<F2> … <Fn>与传输之前的工作区域的相应字段进行比较。 如果指定了ALL FIELDS子句,SAP系统将比较所有组件。 当SAP系统根据密钥找到条目时,SY-SUBRC变量的值设置为0.此外,如果比较的内容为SY-SUBRC变量的值,则将SY-SUBRC变量的值设置为2或4 字段不同或SAP系统找不到条目。 但是,无论查找结果如何,SAP系统都会将条目复制到目标工作区中。

实例

REPORT  ZREAD_DEMO. 
*/Creating an internal table 
DATA: BEGIN OF Record1, 
ColP TYPE I, 
ColQ TYPE I, 
END OF Record1. 

DATA mytable LIKE HASHED TABLE OF Record1 WITH UNIQUE KEY ColP. 
DO 6 Times.
Record1-ColP = SY-INDEX. 
Record1-ColQ = SY-INDEX + 5. 
INSERT Record1 INTO TABLE mytable. 
ENDDO. 

Record1-ColP = 4. 
Record1-ColQ = 12. 
READ TABLE mytable FROM Record1 INTO Record1 COMPARING ColQ. 

WRITE: 'SY-SUBRC =', SY-SUBRC. 
SKIP. 
WRITE: / Record1-ColP, Record1-ColQ.

上面的代码产生以下输出:

SY-SUBRC =    2 

4         9

在上面的示例中,mytable是散列表类型的内部表,其中Record1作为工作区,ColP作为唯一键。 最初,mytable填充了六行,其中ColP字段包含SY-INDEX变量的值,ColQ字段包含(SY-INDEX + 5)值。

Record1工作区分别填充4和12作为ColP和ColQ字段的值。 在使用COMPARING子句将ColP键字段的值与Record1工作区中的值进行比较之后,READ语句读取表的行,然后复制工作区中读取行的内容。 SY-SUBRC变量的值显示为2,因为当ColP字段中的值为4时,ColQ中的值不是12,而是9。

关于赛锐信息

作为SAP的资深合作伙伴,赛锐信息是一家专业提供SAP行业化管理软件解决方案的顾问公司,致力于为企业提供SAP ERP系统咨询服务、IT规划、业务流程优化、信息系统实施、行业信息系统方案开发,运营外包及售后维护等全面的服务方案。已服务1000+家不同行业、规模的大中小型企业客户。在电子高科技、汽车零部件、印刷包装、医疗器械、快消品、专业服务等行业信息化管理领域具有领导性地位。

相关文章

联系我们

联系我们

130-0752-1773

在线咨询:点击这里给我发消息

邮件:info@sapzx.com

工作时间:周一至周五9:00-18:00,节假日正常休息

关注微信
关注微信
分享本页
返回顶部