*&---------------------------------------------------------------------*
*& Report YZB_TEST4
*&
*&---------------------------------------------------------------------*
*&
*& ABAP,取内表中任意两数之和等于已知数,并输出相应的ID
*&---------------------------------------------------------------------*
report yzb_test4.
*-------------------------------------------------------------------*
*** DATA定义以下【
" 自定义内表
data: begin of lw_test,
itm_no type n length 4,
matnr type matnr_d,
menge type menge_d,
id type n length 6,
end of lw_test.
data: lt_test like table of lw_test.
data: lw_test1 like lw_test.
data: lw_test2 like lw_test.
" 循环变量
data: n type i value 1,
w type i value 1,
m type i value 1.
" 内表行数
data: line type i.
" 已知数
data: lv_menge type menge_d value 400.
" 查找标识
data: flag type c.
*** DATA定义以上】
*-------------------------------------------------------------------*
*** 逻辑处理以下【
" 添加内表数据
lw_test-itm_no = 10.
lw_test-matnr = 'A'.
lw_test-menge = 200.
lw_test-id = 1.
append lw_test to lt_test.
lw_test-itm_no = 20.
lw_test-matnr = 'A'.
lw_test-menge = 100.
lw_test-id = 2.
append lw_test to lt_test.
lw_test-itm_no = 30.
lw_test-matnr = 'A'.
lw_test-menge = 200.
lw_test-id = 3.
append lw_test to lt_test.
" 计算内表行数
describe table lt_test lines line.
" 开始循环处理
do line times.
while m < line.
read table lt_test into lw_test1 index n.
w = w + 1.
read table lt_test into lw_test2 index w.
if lw_test1-menge + lw_test2-menge = lv_menge.
write: lw_test1-id, lw_test2-id.
flag = '1'.
exit.
endif.
m = m + 1.
endwhile.
if flag = '1'.
exit.
endif.
n = n + 1.
m = n.
w = n.
enddo.
*** 逻辑处理以上】