Abap 使用读取表从itab获取一个字段
我试图从interal表中获取一个字段,如下所示:Abap 使用读取表从itab获取一个字段,abap,Abap,我试图从interal表中获取一个字段,如下所示: READ TABLE tbl_peps TRANSPORTING ususap INTO lv_responsable WITH KEY usr03 = wa_tbl_prps-usr03. 这个句子是错的,它给了我一个错误 tbl_PEP和lv_Responsible是不兼容的 有没有办法通过“运输场”实现这一目标 根据on读取表格,如果使用传输选项,接收数据的工作区必须与读取表格的线型兼容。您声明的变量lv_responsible似乎与
READ TABLE tbl_peps TRANSPORTING ususap INTO lv_responsable WITH KEY usr03 = wa_tbl_prps-usr03.
这个句子是错的,它给了我一个错误
tbl_PEP和lv_Responsible是不兼容的
有没有办法通过“运输场”实现这一目标 根据on读取表格
,如果使用传输选项,接收数据的工作区必须与读取表格的线型兼容。您声明的变量lv_responsible
似乎与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_Responsible必须定义如下
DATA: lv_responsable LIKE LINE OF tbl_peps.
只有这样,您才能将字段lv_responsable-ususasap
中的值分配给该字段类型的另一个变量。使用新语法(至少ABAP 7.40),您不再需要工作区。您的示例的编码是:
try.
lv_responsable = tbl_peps[ usr03 = wa_tbl_prps-usr03 ]-ususap.
catch CX_SY_ITAB_LINE_NOT_FOUND.
endtry.
有关新表表达式的更多信息,请参见。解决潜在问题
您希望只传输一个字段的原因是为了节省内存和加快处理速度。有一种更好的方法,使用字段符号:
READ TABLE tbl_peps
ASSIGNING FIELD-SYMBOL(<fs_responsable>)
WITH KEY usr03 = wa_tbl_prps-usr03.
读取表tbl\u peps
分配字段-SYMBOL()
按键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.
FIELD-SYMBOLS:类似于tbl\U PEP的行。
阅读表tbl\U peps
分配
按键usr03=wa_tbl_prps-usr03。
恐怕你是对的。。我认为有一种方法不使用工作区。我想避免使用工作区,因为只需要一个字段。@Dirk Trilsbeek在READ TABLE语句中使用TRANSPORTING关键字有明显的好处。不管有没有它,这份声明都会起作用。i、 e:将表tbl_peps读入wa_peps,键usr03=wa_tbl_prps-usr03。将wa_peps-ususap移动到lv_Responsible。@Erik通过传输,您可以选择只将字段的子集传输到目标结构中。例如,如果只希望获取单个字段并将值移动到已填充的工作区域中,则保持WA中其他字段的值不变。由于READ TABLE在内部表上工作,并且在内存中,所以我不认为有任何严重的性能优势。当然取决于数据量。非常好contribution@funkeeiads如果你认为这是一个优秀的贡献,你可以从另一个问题中取消选中已接受的分数,并把它放在这里。