在ABAP中,哪个功能模块用于根据某些条件从表中检索数据?
好吧,如果你正在编写ABAP,你只需直接在代码中编写你的OpenSQL语句。OpenSQL是ABAP语言的一流部分。
但是如果你问如何使用函数模块读取表…
你可以使用RFC_READ_TABLE函数模块进行任意的表读取。令人高兴的是,它支持rfc。它允许你直接传入'where'子句。
唯一需要注意的是,数据在一个只有512个字符宽的表结构中返回。如果从大于这个宽度的表中读取,数据将被截断。此外,它是一个平面字段,因此需要手动解析每个表列/字段。
所以,不是特别友好,但在没有其他选择时很有用。
在4.6C之前的所有版本中都可以使用
通常,您使用ABAP的OPEN SQL语句编写它。这与普通的SQL语句非常相似。编写函数模块要比使用函数模块简单得多,除非你想在远程系统上调用函数模块(远程函数调用,可以从SAP或非SAP系统调用)。
是这样的:
TYPES:
BEGIN OF ty_material,
matnr TYPE mara-matnr,
attyp TYPE mara-attyp,
END OF ty_material.
DATA:
gt_material TYPE STANDARD TABLE OF ty_material,
gs_material LIKE LINE OF gt_material.
*--This is an OPENSQL statement--*
SELECT matnr
attyp
INTO TABLE gt_material
FROM mara
WHERE attyp BETWEEN ('01' AND '03').
LOOP AT gt_material
INTO gs_material.
WRITE: / gs_material-matnr, gs_material-attyp.
CLEAR gs_material.
ENDLOOP.
您可以使用以下fm:
RS_VARIANT_CONTENTS - Values of a variant returned in a table
RS_VARIANT_EXISTS - Checks whether a variant exists for a report
RS_VARIANT_TEXT - Returns short description of variant
RS_VARIANT_VALUES_TECH_DATA - Reads variant parameters of a report
你也可以试试这个
SD_COND_T685_SELECT - to fetch the access sequence for the given condition type.
SD_T682I_SINGLE_READ - to fetch the condition tables.