使用 read table TRANSPORTING 从 itab 获取一个字段
get one field from itab with read table TRANSPORTING
我试图从内部 table 中获取一个字段,如下所示:
READ TABLE tbl_peps TRANSPORTING ususap INTO lv_responsable WITH KEY usr03 = wa_tbl_prps-usr03.
这句话错了,给我报错
tbl_peps and lv_responsable are incompatibles
.
有没有办法使用 "transporting fields" 来实现?
根据 READ TABLE
上的 ABAP Documentation,如果您使用传输选项,接收数据的工作区必须与您读取的 table 的行类型兼容.您声明的变量 lv_responsable
似乎与 tbl_peps
不兼容,因此在检查您的代码时出现错误。
这应该有效:
DATA:
wa_peps like line of tbl_peps.
READ TABLE tbl_peps TRANSPORTING ususap INTO wa_peps WITH KEY usr03 = wa_tbl_prps-usr03.
MOVE wa_peps-ususap TO lv_responsable.
没有办法。 Lv_responsable
必须定义如下。
DATA: lv_responsable LIKE LINE OF tbl_peps.
才能将字段lv_responsable-ususap
中的值赋值给该字段类型的另一个变量
使用新语法(至少 ABAP 7.40)您不再需要工作区。您的示例的编码为:
try.
lv_responsable = tbl_peps[ usr03 = wa_tbl_prps-usr03 ]-ususap.
catch CX_SY_ITAB_LINE_NOT_FOUND.
endtry.
有关新 table 表达式的更多信息,请参见 here。
解决根本问题
您只想传输一个字段的原因是为了节省内存和加快处理速度。有更好的方法,使用字段符号:
READ TABLE tbl_peps
ASSIGNING FIELD-SYMBOL(<fs_responsable>)
WITH KEY usr03 = wa_tbl_prps-usr03.
内联定义仅适用于 ABAP 740 及更高版本,但您可以在早期版本中执行此操作:
FIELD-SYMBOLS: <fs_responsable> LIKE LINE OF tbl_peps.
READ TABLE tbl_peps
ASSIGNING <fs_responsable>
WITH KEY usr03 = wa_tbl_prps-usr03.
我试图从内部 table 中获取一个字段,如下所示:
READ TABLE tbl_peps TRANSPORTING ususap INTO lv_responsable WITH KEY usr03 = wa_tbl_prps-usr03.
这句话错了,给我报错
tbl_peps and lv_responsable are incompatibles
.
有没有办法使用 "transporting fields" 来实现?
根据 READ TABLE
上的 ABAP Documentation,如果您使用传输选项,接收数据的工作区必须与您读取的 table 的行类型兼容.您声明的变量 lv_responsable
似乎与 tbl_peps
不兼容,因此在检查您的代码时出现错误。
这应该有效:
DATA:
wa_peps like line of tbl_peps.
READ TABLE tbl_peps TRANSPORTING ususap INTO wa_peps WITH KEY usr03 = wa_tbl_prps-usr03.
MOVE wa_peps-ususap TO lv_responsable.
没有办法。 Lv_responsable
必须定义如下。
DATA: lv_responsable LIKE LINE OF tbl_peps.
才能将字段lv_responsable-ususap
中的值赋值给该字段类型的另一个变量
使用新语法(至少 ABAP 7.40)您不再需要工作区。您的示例的编码为:
try.
lv_responsable = tbl_peps[ usr03 = wa_tbl_prps-usr03 ]-ususap.
catch CX_SY_ITAB_LINE_NOT_FOUND.
endtry.
有关新 table 表达式的更多信息,请参见 here。
解决根本问题
您只想传输一个字段的原因是为了节省内存和加快处理速度。有更好的方法,使用字段符号:
READ TABLE tbl_peps
ASSIGNING FIELD-SYMBOL(<fs_responsable>)
WITH KEY usr03 = wa_tbl_prps-usr03.
内联定义仅适用于 ABAP 740 及更高版本,但您可以在早期版本中执行此操作:
FIELD-SYMBOLS: <fs_responsable> LIKE LINE OF tbl_peps.
READ TABLE tbl_peps
ASSIGNING <fs_responsable>
WITH KEY usr03 = wa_tbl_prps-usr03.