对于所loop的内表中的数据是只可能有一行或者无,用以下方法
注意事项:
- 需要对所需要查找的关键字进行排序
- 需要判断read语句是否执行成功
- read语句执行成功后需要清空工作区,否则会导致数据的重复写入
SORT gt_t001w by werks.
LOOP AT gt_data INTO gwa_data .
READ TABLE gt_t001W INTO gwa_t001w WITH KEY werks = gwa_data-werks BINARY SEARCH.
IF sy-subrc EQ 0..
gwa_data-NAME2 = gwa_t001w-NAME1.
MODIFY gt_data FROM gwa_data.
ENDIF.
CLEAR gwa_t001w.
CLEAR: gwa_data.
ENDLOOP.
如果所需要查找的内表内容是一对多的内表,则是在read语句后面再加loop语句
注意事项
- 排序,因为是需要用到二分法
- 清除工作区
sort gt_mseg by EBELN EBELP.
LOOP AT gt_data INTO gwa_data .
READ TABLE gt_mseg WITH KEY EBELN = gwa_data-EBELN EBELP = gwa_data-EBELP BINARY SEARCH TRANSPORTING NO FIELDS .
IF sy-subrc eq 0.
LOOP AT gt_mseg INTO gwa_mseg FROM sy-tabix.
IF gwa_mseg-EBELN <> gwa_data-EBELN or gwa_mseg-EBELP <> gwa_data-EBELP.
Exit.
ENDIF.
gwa_data-MENGE3 = gwa_mseg-MENGE.
APPEND gwa_data TO lt_data1.
ENDLOOP.
ENDIF.
CLEAR: gwa_data.
ENDLOOP.