我试图从内部表中获取一个字段:
READ TABLE tbl_peps TRANSPORTING ususap INTO lv_responsable WITH KEY usr03 = wa_tbl_prps-usr03.
这句话错了,它给了我一个错误
tbl_peps和lv_responsable是不兼容的
有没有办法通过“运输领域”实现这一目标?
答案 0 :(得分:12)
使用新语法(至少ABAP 7.40),您不再需要工作区了。您的示例的编码将是:
try.
lv_responsable = tbl_peps[ usr03 = wa_tbl_prps-usr03 ]-ususap.
catch CX_SY_ITAB_LINE_NOT_FOUND.
endtry.
可以找到新表格表达式的更多信息here。
答案 1 :(得分:4)
根据READ TABLE
上的ABAP Documentation,如果使用transport-option,则接收数据的工作区必须与您读取的表的行类型兼容。您声明的变量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.
答案 2 :(得分:2)
您只想传输一个字段的原因是为了节省内存并加快处理速度。有一种更好的方法,使用字段符号:
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.
答案 3 :(得分:0)
没有办法。 Lv_responsable
必须定义如下。
DATA: lv_responsable LIKE LINE OF tbl_peps.
只有这样才能将字段lv_responsable-ususap
中的值分配给字段类型的另一个变量。