`

<转>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处理字符串[参考].pdf

    在字段&lt;c&gt;中搜索&lt;str&gt;中的字符串,如果成功,则将SY-SUBRC的返回代码值设置为0并将SY-FDPOS设置为字段&lt;c&gt;中的该字符串的偏移量,否则将SY-SUBRC设置为4。搜索串&lt;str&gt;可为以下格式之一:&lt;str&gt;目的&lt;pattern&gt;搜索...

    SAP ABAP基本语法.docx

    * SY-SUBRC:系统执行传回值,0 表示成功 * SY-UNAME:用户 * SY-DATUM:系统日期 * SY-UZEIT:系统时间 * SY-TCODE:当前执行程序的 Transaction code * SY-INDEX:当前 LOOP 循环过的次数 * SY-TABIX:当前处理的...

    abap处理字符串[借鉴].pdf

    - **移动字段串到给定串**:使用`SHIFT &lt;c&gt; UP TO &lt;str&gt; &lt;mode&gt;`可以查找特定子串并移动字符串到边缘,`SY-SUBRC`用于记录操作状态。 - **根据第一个或最后一个字符移动**:`LEFT DELETING LEADING`和`RIGHT ...

    ABAP 函数&接口 RFC实例

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

    abap基本语法

    - SY-SUBRC:系统返回码,0表示成功。 - SY-UNAME:当前登录用户的用户名。 - SY-DATUM:系统日期。 - SY-UZEIT:系统时间。 - SY-TCODE:当前执行的事务代码。 - SY-INDEX:循环计数。 - SY-TABIX:内部表当前行号...

    ABAP4语法祥解(简体中文).doc

    变量声明的语法格式为:DATA &lt;F&gt; [&lt;length&gt;] &lt;type&gt; [&lt;value&gt;] [&lt;decimals&gt;]。 其中:&lt;F&gt; 是变量名称,最大长度为 30 个字符,不能包含特殊字符。&lt;length&gt; 是变量的长度。&lt;type&gt; 是变量的数据类型。&lt;value&gt; 是变量...

    SAP_ABAP4语法详解

    DATA &lt;f&gt; [&lt;length&gt;] &lt;type&gt; [&lt;value&gt;] [&lt;decimals&gt;] 其中:&lt;f&gt; 是变量名称,长度最长为 30 个字符,不能包含 + , . , : ( ) 等字符:&lt;length&gt; 是变量的长度:&lt;type&gt; 是变量的数据类型:&lt;value&gt; 是变量的初始值:...

    ABAP自学基础知识

    STATICS &lt;c&gt; [&lt;Length&gt;] &lt;type&gt; [&lt;value&gt;] [&lt;decimals&gt;] ``` 例如: ```sql STATICS TEMP TYPE I VALUE 10. ``` 这将声明一个名为 TEMP 的临时变量,类型为整数,值为 10。 系统变量 ABAP 中有许多系统变量,用于...

    abap 学习精华

    DATA &lt;F&gt; [&lt;LENGTH&gt;] &lt;TYPE&gt; [&lt;VALUE&gt;] [&lt;DECIMALS&gt;] ``` - `&lt;F&gt;`: 变量名称,最长为 30 个字符,不能包含 +, ., :, () 等特殊字符。 - `&lt;LENGTH&gt; &lt;TYPE&gt;`: 变量类型及其长度。 - `&lt;VALUE&gt;`: 初始值。 - `&lt;DECIMALS&gt;...

    ABAP编程基础.pdf

    其中,&lt;F&gt; 是变数名称,&lt;Length&gt; 是变数长度,&lt;type&gt; 是变数类型,&lt;value&gt; 是变数初始值,&lt;decimals&gt; 是小数位数。 例如: DATA: COUNTER TYPE P DECIMALS 3. NAME(10) TYPE C VALUE 'DELTA'. S_DATE TYPE D VALUE ...

    ABAP Training 語法詳解

    其中,`&lt;F&gt;`是变量名称,`&lt;length&gt;`和`&lt;type&gt;`定义变量的长度和类型,`&lt;value&gt;`是初始值,`&lt;decimals&gt;`指定位数。例如: ```abap DATA: COUNTER TYPE P DECIMALS 3. NAME (10) TYPE C VALUE 'Delta'. S_DATE TYPE ...

    abap讲义

    DATA &lt;F&gt; [ &lt;LENGTH&gt; ] &lt;TYPE&gt; [ &lt;VALUE&gt; ] [ &lt;DECIMALS&gt; ] ``` 其中,`&lt;F&gt;`是变量名称,最长可达30个字符;`&lt;LENGTH&gt;&lt;TYPE&gt;`定义变量类型及其长度;`&lt;VALUE&gt;`为初始化值;`&lt;DECIMALS&gt;`表示小数位数。示例: ```...

    sap abap 基础知识

    其中,&lt;变量名&gt; 是变量的名称:&lt;长度&gt; 是变量的长度:&lt;类型&gt; 是变量的类型:&lt;初值&gt; 是变量的初始值:&lt;小数位数&gt; 是变量的小数位数。 例如: ``` DATA COUNTER TYPE P DECIMALS 3. ``` 这条语句声明了一个名为 ...

    ABAP4编程宝典中文版 abap魔鬼教程

    其中,&lt;F&gt;是变量名,&lt;length&gt;和&lt;type&gt;定义变量的长度和类型,&lt;value&gt;是初始值,&lt;decimals&gt;是小数位数。例如: DATA: COUNTER TYPE P DECIMALS 3, NAME(10) TYPE C VALUE 'Delta', S_DATE TYPE D VALUE '19991203'。 ...

    ABAP语法集锦

    DATA &lt;F&gt; [ &lt;LENGTH&gt; ] &lt;TYPE&gt; [ &lt;VALUE&gt; ] [ &lt;DECIMALS&gt; ] ``` - `&lt;F&gt;`:变量名称,最多可以有 30 个字符,不能包含特殊字符如 `+`, `.`, `:`, `()`. - `&lt;LENGTH&gt; &lt;TYPE&gt;`:变量类型及其长度。 - `&lt;VALUE&gt;`:...

    ABAP程序的数据查询语句SELECT.doc

    1. 比较运算符:如=、&lt;、&gt;、&lt;&gt;、&lt;=、&gt;=等,以及相应的关键字,如EQ、NE、LT、GT、LE、GE等。 2. 范围限定运算符:如BETWEEN g1 AND g2,表示字段值在g1和g2之间。 3. 字符比较运算符:如LIKE g [ESCAPE h],使用...

    ABAP基础.pdf

    - **DATA** 声明:`DATA&lt;F&gt;[&lt;length&gt;]&lt;type&gt;[&lt;value&gt;][&lt;decimals&gt;]`,其中: - `&lt;F&gt;`: 变量名称,最长 30 个字符,不允许包含特殊字符如 +、.、:、() 等。 - `&lt;length&gt;&lt;type&gt;`: 变量类型及其长度。 - `&lt;value&gt;`: ...

    abap基础教程

    DATA: &lt;变量名&gt; [LENGTH &lt;长度&gt;] TYPE &lt;类型&gt; [VALUE &lt;值&gt;] [DECIMALS &lt;小数位数&gt;]. ``` 例如: ```abap DATA: COUNTER TYPE P DECIMALS 3. DATA: NAME(10) TYPE C VALUE 'DELTA'. DATA: S_DATE TYPE D VALUE '...

    ABAP4语法祥解

    - **SY-SUBRC**: 执行某条指令后的返回码,`0`表示成功。 - **SY-UNAME**: 当前登录用户的用户名。 - **SY-DATUM**: 当前系统日期。 - **SY-UZEIT**: 当前系统时间。 - **SY-TCODE**: 当前执行程序的事务代码。 - **...

    sap批量删除、添加、修改透明表数据

    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. ELSE. INSERT (TABLE) FROM TABLE &lt;lt_dtab&gt;. MESSAGE i101 WITH 'Insert successful.'. ...

Global site tag (gtag.js) - Google Analytics