通过读取表TRANSPORTING从itab获取一个字段

fun*_*ads 5 abap

我试图从内部表中获取一个字段,如下所示:

READ TABLE tbl_peps TRANSPORTING ususap INTO lv_responsable WITH KEY usr03 = wa_tbl_prps-usr03.
Run Code Online (Sandbox Code Playgroud)

这句话错了,它给了我一个错误

tbl_peps和lv_responsable是不兼容的

.

有没有办法通过"运输领域"实现这一目标?

小智 14

使用新语法(至少ABAP 7.40),您不再需要工作区.您的示例的编码将是:

try.
    lv_responsable = tbl_peps[ usr03 = wa_tbl_prps-usr03 ]-ususap.
catch CX_SY_ITAB_LINE_NOT_FOUND.
endtry.
Run Code Online (Sandbox Code Playgroud)

可以在此处找到有关新表表达式的更多信息.


Dir*_*eek 5

按照ABAP文档READ 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.
Run Code Online (Sandbox Code Playgroud)