SAP ABAP 游标操作

if not %dbcursor is initial.
close cursor %dbcursor.
endif.
"打开游标
open cursor with hold %dbcursor for
select VDARL~BUKRS VDARL~GSART VDARL~RANL VDARL~RERF VDARL~STITEL VDARL~ZZBH_BZJZH VDARL~BZUSAGE VDARL~SANTWHR VDARL~REFER
VDARL~DABTR VDARL~ZUOND BUT000~PARTNER BUT000~NAME_ORG1 VZZKOKO~DBLFZ VZZKOKO~DELFZ VZZKOKO~RKEY1
from ( VDARL
inner join BUT000
on BUT000~PARTNER = VDARL~RDARNEHM
inner join VZZKOKO
on VZZKOKO~RKEY1 = VDARL~RANL )
where VDARL~BUKRS in SP$00001
and VDARL~GSART in SP$00002
and VDARL~RANL in SP$00003
and VDARL~RERF in SP$00004
and BUT000~PARTNER in SP$00005
and VZZKOKO~DBLFZ in SP$00008
and VZZKOKO~DELFZ in SP$00009 .

if %dbcursor is initial.
raise cursor_not_open.
endif.

"遍历游标
while %l_no_further_fetch = space.
fetch next cursor %dbcursor
into (VDARL-BUKRS , VDARL-GSART , VDARL-RANL , VDARL-RERF , VDARL-STITEL , VDARL-ZZBH_BZJZH , VDARL-BZUSAGE , VDARL-SANTWHR
, VDARL-REFER , VDARL-DABTR , VDARL-ZUOND , BUT000-PARTNER , BUT000-NAME_ORG1 , VZZKOKO-DBLFZ , VZZKOKO-DELFZ
, VZZKOKO-RKEY1 ).
if ( ( %rtmode-acc_check = 'X' and
sy-dbcnt > %rtmode-acc_number )
or sy-subrc <> 0 ).
%l_no_further_fetch = 'X'.
else.
check SP$00001.
check SP$00002.
check SP$00003.
check SP$00004.
check SP$00005.
check SP$00008.
check SP$00009.
call function 'RSAQRT_TEXTFIELD_REFRESH'.
*** additional coding:
ZDONGJIEJINE = VDARL-BZUSAGE * VDARL-zuond / 100.
%dtab-BUKRS = VDARL-BUKRS .
%dtab-GSART = VDARL-GSART .
%dtab-PARTNER = BUT000-PARTNER .
%dtab-NAME_ORG1 = BUT000-NAME_ORG1 .
%dtab-RANL = VDARL-RANL .
%dtab-RERF = VDARL-RERF .
%dtab-STITEL = VDARL-STITEL .
%dtab-ZZBH_BZJZH = VDARL-ZZBH_BZJZH .
%dtab-BZUSAGE = VDARL-BZUSAGE .
%dtab-SANTWHR = VDARL-SANTWHR .
%dtab-REFER = VDARL-REFER .
%dtab-DABTR = VDARL-DABTR .
%dtab-SANTWHR001 = VDARL-SANTWHR .
%dtab-DBLFZ = VZZKOKO-DBLFZ .
%dtab-DELFZ = VZZKOKO-DELFZ .
%dtab-ZDONGJIEJINE = ZDONGJIEJINE .
%dtab-SANTWHR002 = VDARL-SANTWHR .
%dtab-ZUOND = VDARL-ZUOND .
append %dtab.
%l_hits_cnt = %l_hits_cnt + 1.
if %rtmode-pack_on = 'X'
and %l_hits_cnt >= %rtmode-pack_size.
%l_no_further_fetch = 'X'.
endif.
endif.
endwhile.

"关闭游标
if %l_hits_cnt = 0.
if not %dbcursor is initial.
close cursor %dbcursor.
endif.
raise no_data.
endif.
"关闭游标
if %rtmode-pack_on <> 'X'.
close cursor %dbcursor.
endif.
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值