设为首页 收藏本站
查看: 781|回复: 0

[经验分享] SAP RFC定义及实例

[复制链接]

尚未签到

发表于 2015-9-20 14:29:10 | 显示全部楼层 |阅读模式
  在网上和书上就是找不到多少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.

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-116333-1-1.html 上篇帖子: Blogger: SAP FI/CO 下篇帖子: SAP货币单位对应的小数据
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表