abap 调用sql

&---------------------------------------------------------------------
*& Report Z_YY_PRG_005
&---------------------------------------------------------------------
*&
&---------------------------------------------------------------------
REPORT Z_YY_PRG_005.

PARAMETERS P1 TYPE CHAR1 AS CHECKBOX.

TYPES:
BEGIN OF TY_RESULT,
IDX TYPE I,
COL1 TYPE STRING,
COL2 TYPE STRING,
END OF TY_RESULT.

DATA : CONNECTION TYPE DBCON-CON_NAME VALUE ‘DBCO_DF_KFMRP’,
SQL_CONNECTION TYPE REF TO CL_SQL_CONNECTION,
SQL_STATEMENT TYPE REF TO CL_SQL_STATEMENT,
SQL_EXCEPTION TYPE REF TO CX_SQL_EXCEPTION,
LV_TEXT TYPE STRING,
SQL_RESULT TYPE REF TO CL_SQL_RESULT_SET,
D_REF TYPE REF TO DATA,
GT_TAB TYPE TABLE OF TY_RESULT,
GS_LINE TYPE TY_RESULT,
ROW_CNT TYPE I.

  SQL_CONNECTION = CL_SQL_CONNECTION=>GET_CONNECTION( CONNECTION ).
  SQL_STATEMENT = SQL_CONNECTION->CREATE_STATEMENT( ).

data D_REF2 TYPE REF TO DATA.

data : sql type string.

data : key1 type i,
key2 type i.

  TRY.
  •    SQL_RESULT = SQL_STATEMENT->EXECUTE_QUERY( 'SELECT TOP 10000 ROW_NUMBER() OVER (ORDER BY fldItemNoS) AS IDX  , fldItemNoS,fldItemNameS FROM dbo.tbl_Active_Item_1 ' ).
    
  •    SQL_RESULT = SQL_STATEMENT->EXECUTE_QUERY( 'exec sp_testSAP ' ).
    
  •    sql = 'UPDATE dbo.tbl_TestSAP SET col2=''A''; UPDATE dbo.tbl_TestSAP SET col3=''B'' '.
    
  •    SQL_STATEMENT->EXECUTE_UPDATE( sql ).
    
      key1 = 1.
      key2 = 2.
    
      GET REFERENCE OF key1 INTO D_REF.
    
      GET REFERENCE OF key2 INTO D_REF2.
    
    SQL_STATEMENT->set_param( D_REF ).
    SQL_STATEMENT->set_param( D_REF2 ).
    
    
    
      CALL METHOD SQL_STATEMENT->EXECUTE_PROCEDURE
        EXPORTING
          PROC_NAME             = 'sp_testSAP'
    
  •        PROC_SUFFIX           =
    
  •        WRITE_SYSLOG_ON_ERROR = ABAP_TRUE
        RECEIVING
          ROWS_PROCESSED        =  ROW_CNT
          .
    
  •     CATCH CX_SQL_EXCEPTION .
    
        lv_Text = row_cnt.
    
  •    GET REFERENCE OF GT_TAB INTO D_REF.
    

**

  •    SQL_RESULT->SET_PARAM_TABLE( D_REF ).
    
  •    DO.
    
  •    ROW_CNT = SQL_RESULT->NEXT_PACKAGE( ).
    
  •      IF ROW_CNT = 0.
    
  •        EXIT.
    
  •      ENDIF.
    
  •    ENDDO.
    
      CATCH CX_SQL_EXCEPTION INTO SQL_EXCEPTION.
        LV_TEXT =  SQL_EXCEPTION->GET_TEXT( ).
    
    ENDTRY.
    
  •  LOOP AT GT_TAB INTO GS_LINE.
    
  •      WRITE : / 'IDX', GS_LINE-IDX, 'COL1: ',GS_LINE-COL1 ,  'COL2: ' , GS_LINE-COL2.
    
  •  ENDLOOP.
    

    write : / 'row_cnt: ’ ,row_cnt.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值