`

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.
分享到:
评论

相关推荐

    sap abap找表的18种方法

    在 SAP ABAP 开发中,查找和操作数据库表是日常任务的重要组成部分。下面将详细介绍标题“sap abap找表的18种方法”所涵盖的知识点,这些方法可以帮助开发人员高效地进行数据检索和处理。 1. **SELECT语句**:最...

    Use Of Cursors And Parallel Cursors In SAP ABAP

    ### 使用游标与并行游标在SAP ABAP中的应用 #### 1. 游标的简介 在SAP ABAP编程中,游标(Cursor)是一种非常重要的控制结构,主要用于处理数据库查询结果集中的数据行。游标可以被视为一个迭代器,用于逐行读取...

    ABAP简介(SAP)

    ### ABAP简介(SAP) #### 第一单元:ABAP简介 ABAP(Advanced Business Application Programming),作为SAP的核心编程语言之一,自1980年代末期以来不断发展完善,成为构建SAP R/3系统应用程序的主要工具。ABAP...

    ABAP内置类型、对象、功能

    cursor的类型和数据类型i相同,用于声明数据库操作中的游标变量。 对于初学者来说,ABAP的内置类型是必须要掌握的基础知识。例如,对于字符类型和数字类型的声明、使用以及操作,了解如何在ABAP程序中使用这些内置...

    abap 练习程序

    4. **数据库操作**:ABAP提供了一系列数据库通信命令,如SELECT、INSERT、UPDATE、DELETE,以及OPEN CURSOR和CLOSE CURSOR用于处理SQL游标。了解如何高效地与数据库交互对于实现业务逻辑至关重要。 5. **函数模块**...

    ABAP读数据

    在ABAP(Advanced Business Application Programming)中,读取数据是编程过程中常见的操作,尤其是在与数据库交互时。ABAP提供了一系列的语句和函数模块来帮助开发者高效地从数据库中提取所需信息。本篇将深入探讨...

    初学ABAP的教程

    ABAP还支持使用SQL语句操作数据库,以下是一些常见的SQL语句: ##### 5.1 SELECT语句 `SELECT`语句用于从数据库中检索数据,基本格式如下: ```abap SELECT &lt;fields&gt; FROM &lt;table_name&gt; INTO &lt;table_variable&gt; ...

Global site tag (gtag.js) - Google Analytics