`

SY-SUBRC

    博客分类:
  • BW
阅读更多
在网上和书上就是找不到多少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
分享到:
评论

相关推荐

    SY字段含义

    `SY-SUBRC`用于记录最近一次子例程调用的结果,通常用来判断子例程是否成功执行。如果`SY-SUBRC`的值为0,则表示子例程执行成功;若非0,则表示存在某种错误。这在处理函数调用后的结果判断时非常关键。 #### SY-...

    ABAP 函数&接口 RFC实例

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

    Abap基础学习文档13_使用文件.doc

    WRITE: / 'SY-SUBRC:', SY-SUBRC, / 'System Message:', MESS. ENDIF. ``` 如果SAP系统运行在UNIX环境下且“hugo.xyz”文件不存在,则上述示例将输出错误代码和系统消息。 #### 打开文件以读取 要打开文件以供...

    破解ACCESSKEY

    进入SE38,输入程序名"LSKEYF00",点击修改按钮(不是显示按钮),用上述方法在任何遇到断点处修改SY-SUBRC = 0。 第七步:修改程序"LSKEYF00"。在步骤6后,你就可以修改程序"LSKEYF00"了,找到“CALL 'GET_...

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

    IF sy-subrc = 0. MESSAGE i101 WITH 'Delete success.'. ENDIF. ENDIF. ``` 在这个例子中,通过检查`p_del`参数是否为`X`来判断是否执行删除操作。如果是,则会调用`DELETE FROM`语句来清空指定表的所有记录。...

    abap处理字符串[参考].pdf

    在字段中搜索中的字符串,如果成功,则将SY-SUBRC的返回代码值设置为0并将SY-FDPOS设置为字段中的该字符串的偏移量,否则将SY-SUBRC设置为4。搜索串可为以下格式之一:目的搜索(任何字符顺序,忽略尾部空格)。....

    SAP ABAP基本语法.docx

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

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

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

    SAP开发权限破解.pdf

    4. **插入可执行代码**:为了永久性地绕过权限检查,可以在断点处插入代码,比如`sy-subrc = 0`,使得每次执行到此处时,权限检查都会自动通过。完成修改后,保存并激活程序。 请注意,这些步骤展示了如何在SAP环境...

    abap小结.docx

    - `SY-SUBRC`:执行语句后的返回值,0表示成功,其他值表示不同类型的错误。 - `SY-DATUM`:记录当前服务器的日期。 - `SY-UZEIT`:获取当前服务器时间。 - `SY-ULINE`:生成255个字符长度的水平线。 - `SY-...

    sap-ABAP权限检查创建教程学习.rar

    4. **处理结果**:根据`sy-subrc`变量的值处理权限检查结果。`sy-subrc=0`表示权限检查通过,否则失败。 5. **角色分配**:在PFCG(Profile Generation)事务码中,为用户角色分配相应的权限对象和字段值,以授予或...

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

    - SY-SUBRC:表示指令执行成功与否,'0'代表成功。 - SY-UNAME:当前用户的用户名。 - SY-DATUM:当前系统日期。 - SY-UZEIT:当前系统时间。 - SY-TCODE:当前执行的事务代码。 - SY-INDEX:循环计数。 - SY-TABIX...

    ABAP function使用笔记

    IF SY-SUBRC <> 0. MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. ENDIF. WRITE: date1, ' - ', date2, ' = ', years. " 输出结果为:20070207 - 当前日期 =...

    ABAP_4语法集锦(中文版)

    - SY-SUBRC:执行操作后的返回码,'0'表示成功。 - SY-UNAME:当前用户登录的用户名。 - SY-DATUM:当前系统日期。 - SY-UZEIT:当前系统时间。 - SY-TCODE:当前执行的事务代码。 - SY-INDEX:循环中的当前迭代次数...

    abap_99乘法表

    WRITE: / 'X', SY-SUBRC UNDER 'SY-SUBRC', " 在STRING3中查找X SY-FDPOS UNDER 'SY-FDPOS'. ``` 通过以上分析,我们可以看到文章不仅详细地介绍了如何使用ABAP编写99乘法表,还介绍了ABAP中的一些实用功能,...

    SAP ABAP开发系统字段

    6. **sy-subrc**:返回最近执行的函数模块或语句的子程序返回代码。0表示成功,非零值表示错误,这在错误处理和调试中非常有用。 7. **sy-datum**和**sy-uzeit**:分别提供当前日期和时间,这些信息可用于记录日志...

    abap基本语法

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

    My ABAP Access Key 破解

    在 ABAP Debugger 中,找到 `JUMP_THE_WALL` 表单内的断点,将 `SY-SUBRC` 的值修改为 0,以跳过权限检查。这一步需要多次执行 `F6` 和 `F8` 操作,确保所有相关位置的 `SY-SUBRC` 值都被修改。 5. 保存并激活更改...

Global site tag (gtag.js) - Google Analytics