zoukankan      html  css  js  c++  java
  • SYSUBRC 的含义

    ================= 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.

  • 相关阅读:
    LeetCode
    (六)6.5 Neurons Networks Implements of Sparse Autoencoder
    (六)6.4 Neurons Networks Autoencoders and Sparsity
    (六) 6.3 Neurons Networks Gradient Checking
    opencv::调整图像亮度与对比度
    opencv::两张图片的线性融合
    opencv::源码编译
    日志::spdlog
    std::is_same
    json::rapidjson工具
  • 原文地址:https://www.cnblogs.com/hanmos/p/2882576.html
Copyright © 2011-2022 走看看