一、 链接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.