`
tenn
  • 浏览: 576045 次
  • 性别: Icon_minigender_1
  • 来自: 苏州
文章分类
社区版块
存档分类
最新评论

[转]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.

分享到:
评论

相关推荐

    ABAP 函数&接口 RFC实例

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

    SY字段含义

    ### SAP ABAP SY字段含义详解 #### SY-DYNNR:当前动态编号 在SAP ABAP编程中,`SY-DYNNR`是系统变量之一,它存储了当前屏幕的动态编号。这个编号通常用于识别不同的屏幕或窗口,以便进行特定的操作或处理。例如,...

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

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

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

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

    破解ACCESSKEY

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

    SAP ABAP基本语法.docx

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

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

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

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

    `SY-SUBRC`和`SY-FDPOS`记录搜索结果。 理解并熟练掌握这些字符串处理方法对于编写高效的ABAP代码至关重要,它们在数据处理、文本分析和用户界面交互等场景中都有广泛应用。在实际编程中,可以根据需求灵活运用这些...

    SAP开发权限破解.pdf

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

    abap小结.docx

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

    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 - 当前日期 =...

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

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

    教案ABAP常用函数.pdf

    - `SY-SUBRC`:返回最近一次执行的状态,0表示成功,非0表示有错误。 - `SY-UNAME`:当前用户的用户名,用于权限检查或用户相关记录。 - `SY-UZEIT`:当前时间,用于记录或比较时间戳。 - `SY-TCODE`:当前事务...

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

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

    abap_99乘法表

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

    abap基本语法

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

    ABAP_4语法集锦(中文版)

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

    ABAP常用函数

    6. SY-SUBRC:执行状态为 0,表示成功 7. SY-UNAME:用户名 8. SY-UZEIT:当前时间 9. SY-TCODE:当前的事务代码 10. SY-LSIND:列表索引页 11. SY-LISTI:上一个列表的索引 12. SY-LILLI:绝对列表中选定行的行号 ...

    SAP ABAP开发系统字段

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

Global site tag (gtag.js) - Google Analytics