实例RFC-临时表的操作

+++++++++++++++++++++++ 实例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

posted @ 2011-08-21 22:56  VerySky  阅读(258)  评论(0)    收藏  举报