SAP DBCO写入外部数据库

一、 链接Oracle数据库 (basis帮忙)
执行事务码DBCO,点新条目按钮,填写如下图所示信息
连接信息比较隐晦,必须在 SAP 应用服务器上安装 Oracle Client,然后设置连接,并在这里将连接信息指定与连接名一致。
为了防止乱码,我们还应该在链接信息后加如下参数:ZHS16GBK
格式如下:ORCL.WORLD:ZHS16GBK
二、硬代码

PERFORM fr_con. PERFORM fr_insert. FORM fr_con .

**打开连接
EXEC SQL.
CONNECT TO :CNS_YGJK (服务名)
ENDEXEC.
ENDFORM.

FORM fr_insert .

DATA: exec_ref TYPE REF TO cx_sy_native_sql_error,
error_text TYPE string,
cl_sqlerr_ref TYPE REF TO cx_sql_exception.

DATA: lw_jzpz LIKE LINE OF gt_jzpz,
lw_yspz LIKE LINE OF gt_yspz.

DATA: flag TYPE c.

DESCRIBE TABLE gt_jzpz LINES DATA(j_line).
DESCRIBE TABLE gt_yspz LINES DATA(y_line).

***获
TRY.
LOOP AT gt_jzpz INTO lw_jzpz.
IF sy-subrc = 0 .
EXEC SQL .

        INSERT INTO  SAP.SAP_JZPZB ( BKPF_BELNR, BKPF_BUKRS , BKPF_GJAHR ,BKPF_BLDAT, BKPF_BLART, T003T_LTEXT , BKPF_BUDAT,
                                     BSEG_XREF3, BSEG_XREF4,  BSEG_PSWSL, BSEG_BUZEI, BSEG_HKONT, SKAT_TXT20, BSEG_WRBTR, BSEG_DMBTR,
                                     BSEG_MENGE , SGTXT , BSEG_EBELN , BSEG_EBELP , BSEG_REBZG , BSEG_REBZZ , BSEG_VBEL2 , BSEG_POSN2
                                     )

              VALUES             (:LW_jzpz-belnr, :LW_jzpz-bukrs , :LW_jzpz-gjahr, :LW_jzpz-bldat, :LW_jzpz-blart, :LW_jzpz-ltext, :LW_jzpz-budat,
                                  :LW_jzpz-mblnr, :LW_jzpz-zeile, :LW_jzpz-pswsl,  :LW_jzpz-buzei, :LW_jzpz-hkont, :LW_jzpz-txt20, :LW_jzpz-wrbtr, :LW_jzpz-dmbtr,
                                  :LW_jzpz-menge, :LW_jzpz-sgtxt, :LW_jzpz-ebeln, :LW_jzpz-ebelp, :LW_jzpz-rebzg,:LW_jzpz-rebzz, :LW_jzpz-vbel2 , :LW_jzpz-posn2
                                   )

      ENDEXEC.

    ENDIF.
  ENDLOOP.

  IF sy-subrc = 0.
    flag = 'X'.
  ENDIF.


  LOOP AT gt_yspz  INTO lw_yspz.
    IF sy-subrc = 0 .
      EXEC SQL .

        INSERT INTO  SAP.SAP_YSPZB ( MSEG_MBLNR, MSEG_ZEILE , MSEG_BWART ,MKPF_USNAM, MKPF_MJAHR, MKPF_BLDAT , MKPF_BUDAT,
                                     MAKT_MAKTX, MSEG_MATNR,  MSEG_MENGE, MSEG_LGORT, MSEG_CHARG, MSEG_INSMK, MSEG_WERKS, MSEG_LIFNR,
                                     LFA1_NAME1 , MSEG_KUNNR , KNA1_NAME1 , MSEG_EBELN , MSEG_EBELP , MSEG_KDAUF , MSEG_KDPOS
                                     )

              VALUES             (:lw_yspz-mblnr, :lw_yspz-zeile , :lw_yspz-bwart, :lw_yspz-usnam, :lw_yspz-mjahr, :lw_yspz-bldat,:lw_yspz-budat,
                                  :lw_yspz-maktx, :lw_yspz-matnr, :lw_yspz-menge,  :lw_yspz-lgort, :lw_yspz-charg, :lw_yspz-insmk, :lw_yspz-werks, :lw_yspz-lifnr,
                                  :lw_yspz-name1, :lw_yspz-kunnr, :lw_yspz-name1_k, :lw_yspz-ebeln, :lw_yspz-ebelp,:lw_yspz-kdauf, :lw_yspz-kdpos
                                   )

      ENDEXEC.

    ENDIF.
  ENDLOOP.

  IF sy-subrc = 0 AND flag = 'X'.
    EXEC SQL.
      COMMIT
    ENDEXEC.

    MESSAGE |共传输{ j_line }/{ y_line }条数据| TYPE 'S'.
  ELSE.
    EXEC SQL.
      ROLLBACK
    ENDEXEC.
  ENDIF.

**关闭连接
EXEC SQL.
DISCONNECT :CNS_YGJK
ENDEXEC.
**获取异常
CATCH cx_sy_native_sql_error INTO exec_ref.

  error_text = exec_ref->get_text( ).

  MESSAGE error_text TYPE 'S' DISPLAY LIKE 'E'.
CATCH cx_sql_exception INTO cl_sqlerr_ref.

  error_text = cl_sqlerr_ref->get_text( ).
  MESSAGE error_text TYPE 'S' DISPLAY LIKE 'E'.

ENDTRY.
ENDFORM.

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值