`

<转>SY-SUBRC 的含义

阅读更多

 SY-SUBRC 的含义 收藏 

在网上和书上就是找不到多少RFC的实例,现在将这个实例公开给大家,希望能给大家带来启发!

 

================= FUNCTION MODULE (或RFC中) SY-SUBRC 的含义 ================

使用SELECT语句选择查询:

SY-SUBRC = 0: 至少有一行数据,当ENDSELECT语句执行完,SY-DBCNT中保存着记录的个数。

SY-SUBRC = 4: 没有数据。

SY-SUBRC = 8: 只有使用“SELECT SINGLE FOR UPDATE”时才会有,

              表示: WHERE条件指定的记录不止一行,结果是没有记录被选中。

 

使用INSERT语句,向表中插入一行,必须注意INSERT的顺序与表中字段的顺序一致:

SY-SUBRC = 0: 插入成功,SY-DBCNT包含了插入的行数,0或1。

SY-SUBRC = 4: 由于有相同的KEY存在,所以插入失败。

 

使用LOOP语句来遍历一个内表:

SY-SUBRC = 0: 循环至少被执行一次。

SY-SUBRC = 4: 循环没有被执行,可能是没有数据,也可能是没有符合条件的记录。

 

使用DELETE语句来删除一条记录:

SY-SUBRC = 0: 找到一行并删除之,如果该表有不唯一主键,也就是有多条重复的记录,则只删除第一条记录。

SY-SUBRC = 4: 没有找到符合条件的记录,也没有删除。

 

使用UPDATE语句来更新一条记录:

SY-SUBRC = 0: 找到记录并更新,(如果有多条记录呢?)

SY-SUBRC = 4: 没有找到符合条件的记录,也没有更新。

 

 

+++++++++++++++++++++++ 实例RFC ++++++++++++++++++++++++++++++++++++++++++++++

*建立临时表ZTEST1,字段为:

* ZUSERID CHAR 20

* ZPASSWD CHAR 20

*-------------------------------------------------

FUNCTION ZRFC_01.

*"----------------------------------------------------------------------

*"*"Local Interface:

*"  IMPORTING

*"     VALUE(ACTION) TYPE  /1SAP1/CL_ACH0001  传入参数ACTION,表示CREATE、EDIT、DELETE记录

*"     VALUE(WHEREUSERID) TYPE  /GC1/DTE_MSG_TXT 传入参数WHEREUSERID,按照USERID来查找关键字

*"  EXPORTING

*"     VALUE(RETURN) TYPE  /AIN/ACT_PUB_PARAMNAME 传出参数RETURN,返回是否成功,空串表示成功,非空串表示未成功

*"     VALUE(ERRNUM) TYPE  /AIN/ACTIVITY_COUNTER 传出参数ERRNUM,返回错误代码

*"  TABLES

*"      ZTEMPTABLE STRUCTURE  ZTEST1    传入、传出表,以表为参数

*"----------------------------------------------------------------------

 

  TABLES:ZTEST1.

 

  DATA:

  WA_ZTEMPTABLE LIKE ZTEMPTABLE,

  TRANSACTION_ID LIKE ARFCTID,

  V_VAILD(1) TYPE C.

 

  V_VAILD = 'X'.

 

* OPEN A DATA TRANSACTION

  CALL FUNCTION 'TRANSACTION_BEGIN'

    IMPORTING

      TRANSACTION_ID = TRANSACTION_ID.

 

 

  CASE ACTION .

  *按照关键字ZUSERID查询

     WHEN 'QUERY'.

      SELECT * FROM ZTEST1 INTO TABLE ZTEMPTABLE where ZUSERID = WHEREUSERID.

        IF SY-SUBRC = 0.

        ELSE.

          V_VAILD = ''.

          ERRNUM = SY-SUBRC.

        ENDIF.

 

  *选择所有的记录

    WHEN 'SELECTALL'.

      SELECT * FROM ZTEST1 INTO TABLE ZTEMPTABLE.

        IF SY-SUBRC = 0.

        ELSE.

          V_VAILD = ''.

          ERRNUM = SY-SUBRC.

        ENDIF.

 

 *插入记录

    WHEN 'CREATE'.

 

      LOOP AT ZTEMPTABLE INTO WA_ZTEMPTABLE.

        INSERT ZTEST1 FROM WA_ZTEMPTABLE.

        IF SY-SUBRC = 0.

        ELSE.

          V_VAILD = ''.

          ERRNUM = SY-SUBRC.

        ENDIF.

      ENDLOOP.

 

 *修改记录

    WHEN 'EDIT'.

 

      LOOP AT ZTEMPTABLE INTO WA_ZTEMPTABLE.

        UPDATE ZTEST1 FROM WA_ZTEMPTABLE.

        IF SY-SUBRC = 0.

        ELSE.

          V_VAILD = ''.

          ERRNUM = SY-SUBRC.

        ENDIF.

      ENDLOOP.

 

 *删除记录

    WHEN 'DELETE'.

 

      LOOP AT ZTEMPTABLE INTO WA_ZTEMPTABLE.

        DELETE ZTEST1 FROM WA_ZTEMPTABLE.

        IF SY-SUBRC = 0.

        ELSE.

          V_VAILD = ''.

          ERRNUM = SY-SUBRC.

        ENDIF.

      ENDLOOP.

 

    WHEN OTHERS.

 

  ENDCASE.

 

  *如果V_VALID为X,则表示成功,否则表示失败,并返回RETURN错误代码

  IF V_VAILD = 'X'.

    CALL FUNCTION 'TRANSACTION_END'

      EXPORTING

        TRANSACTION_ID = TRANSACTION_ID.

    RETURN = ''.

  ELSE.

    CALL FUNCTION 'TRANSACTION_ABORT'

      EXPORTING

        TRANSACTION_ID = TRANSACTION_ID.

    RETURN = 'THE CURRENT ACTION IS FAILURE!'.

 

 

  ENDIF.

 

 

ENDFUNCTION.

 

 

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/barongbachi123/archive/2009/05/19/4201521.aspx

分享到:
评论
1 楼 harry_2013 2010-11-22  
 

相关推荐

    ABAP 函数&接口 RFC实例

    SY-SUBRC = 0: 至少有一行数据,当ENDSELECT语句执行完,SY-DBCNT中保存着记录的个数。 SY-SUBRC = 4: 没有数据。 SY-SUBRC = 8: 只有使用“SELECT SINGLE FOR UPDATE”时才会有,  表示: WHERE条件指定的记录不止...

    ABAP中的ALV操作

    IF SY-SUBRC NE 0. MESSAGE E208(00) WITH '?理??'. ELSE. APPEND LS_SPFLI TO DDEL_ROWS. ENDIF. ENDLOOP. ENDMETHOD. "UPDATE_DELTA_TABLES METHOD GET_DELETED_ROWS. "update_delta_tables DELETED_...

    生成XML文件ABAP程序

    生成XML文件ABAP程序 REPORT zams_xml_dom_create . TYPE-POOLS: ixml. ... IF sy-subrc &lt;&gt; 0. MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4. ENDIF.

    ABAP开发环境的安装

    应用服务器:&lt;MachineName&gt;(假设这是你的电脑名) SAP路由字符串:不填 SAP系统:选择R/3 系统编号:00 点击【确定】按钮,返回到登录窗口(SAP Logon 620) 此时在登录窗口(SAP Logon 620),选中“任意...

    SAP屠夫作品汇总

    Table of Contents 2 General Settings 16 检查度量单位(Check Units of Measurement) 16 Financial Accounting 19 Financial Accounting Global Settings 19 例1功能范围的应用. 19 例2业务范围(Business Area) 19 ...

Global site tag (gtag.js) - Google Analytics