ABAP DBCO

  1. INSERT DATA
 DATA:lv_temp TYPE char14,
       gt_log  TYPE TABLE OF zbms_log  WITH HEADER LINE..
  DATA: p_dbname(10) VALUE 'DATA'.
  DATA: l_sql_error  TYPE REF TO cx_sy_native_sql_error,
        l_error_text TYPE string.


  CONCATENATE sy-datum sy-uzeit INTO lv_temp.

  TRY.
      EXEC SQL.
        CONNECT TO :p_dbname
      endexec.

      clear l_error_text.

    catch cx_sy_native_sql_error into l_sql_error.
      call method l_sql_error->get_text
        receiving
          result = l_error_text.
  endtry.
  if not l_error_text is initial.
    gt_log-zname = 'ZFM_PROJWBS'.
    "gt_log-znum
    gt_log-zdate = sy-datum.
    gt_log-ztime = sy-uzeit.
    gt_log-zuser = sy-uname.
    gt_log-zmess = '连接到数据库失败:' && l_error_text && ',请联系管理员!'.
    gt_log-ztype = 'E'.
    "append gt_log.
    modify zbms_log from  gt_log.
    if sy-subrc = 0.
      commit work .
    else.
      rollback work.
    endif.
    message '运行失败!' type 'E'.
    stop.
  endif.

  try.
      loop at t_input INTO DATA(wa_input).
        exec sql.
          insert into ZTBMS_DATA_PROJWBS
          ( ZFCHTWBS,
ZSJBH,
ZFCBH,
ZFCHTMS,
ZFCMC,
ZFCLX,
ZLYXSWBS,
ZXMXSWBS,
ZLYXSMS,
ZXMXSMS,
  LoadTime )
          values(:wa_input-ZFCHTWBS,
  :wa_input-ZSJBH,
  :wa_input-ZFCBH,
  :wa_input-ZFCHTMS,
  :wa_input-ZFCMC,
  :wa_input-ZFCLX,
  :wa_input-ZLYXSWBS,
  :wa_input-ZXMXSWBS,
  :wa_input-ZLYXSMS,
  :wa_input-ZXMXSMS,
  TO_DATE(:lv_temp,'yyyymmddhh24miss'))

        ENDEXEC.
      ENDLOOP.

      CLEAR l_error_text.

*  catch cx_sy_native_sql_error into l_sql_error.
*    l_error_text = l_sql_error->get_text( ).
    CATCH cx_sy_native_sql_error INTO l_sql_error.
      CALL METHOD l_sql_error->get_text
        RECEIVING
          result = l_error_text.
  ENDTRY.
  "操作Oracle数据库时,异常处理
  IF NOT l_error_text IS INITIAL. "如果捕获到异常,记录日志,回滚

    gt_log-zname = 'ZFM_PROJWBS'.
    "gt_log-znum
    gt_log-zdate = sy-datum.
    gt_log-ztime = sy-uzeit.
    gt_log-zuser = sy-uname.
    gt_log-zmess =  l_error_text.
    gt_log-ztype = 'E'.
    "append gt_log.
    MODIFY zbms_log FROM  gt_log.
    IF sy-subrc = 0.
      COMMIT WORK .
    ELSE.
      ROLLBACK WORK.
    ENDIF.

    EXEC SQL.
      rollback
    ENDEXEC.
    MESSAGE '运行失败!' TYPE 'E'.
  ELSE. "如果无异常,提交插入数据

    gt_log-zname = 'ZFM_PROJWBS'.
    gt_log-zdate = sy-datum.
    gt_log-ztime = sy-uzeit.
    gt_log-zuser = sy-uname.
    gt_log-zmess = '成功'.
    gt_log-ztype = 'S'.
    "append gt_log.
    MODIFY zbms_log FROM  gt_log.
    IF sy-subrc = 0.
      COMMIT WORK .
    ELSE.
      ROLLBACK WORK.
    ENDIF.

    EXEC SQL.
      commit
    ENDEXEC.

    MESSAGE '运行成功!' TYPE 'S'.
  ENDIF.

  EXEC SQL.
    DISCONNECT :p_dbname
  endexec.

2.SELECT DATA

try.
  DELETE  from zbms_sjgl.  "' 
EXEC SQL.
  OPEN p_dbname FOR
    SELECT  CRMID , CRMDESC
           FROM ZTBMS_DATA2SAP_CRM
ENDEXEC.

DO.
  EXEC SQL.
    FETCH NEXT p_dbname INTO :WA_ZBMS_SJGL_1
  ENDEXEC.
  IF sy-subrc <> 0.
    EXIT.
  ELSE.
   MOVE-CORRESPONDING WA_ZBMS_SJGL_1 to wa_zbms_sjgl.
  append wa_zbms_sjgl to gt_zbms_sjgl.
  ENDIF.
ENDDO.

    clear l_error_text.
  catch cx_sy_native_sql_error into l_sql_error.
    call method l_sql_error->get_text
      receiving
        result = l_error_text.
endtry.

3.UPDATE DATA
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值