1. ABAP,取内表中任意两数之和等于已知数,并输出相应的ID

*&---------------------------------------------------------------------*
*& 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.
*** 逻辑处理以上】

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值