我是靠谱客的博主 积极外套,最近开发中收集的这篇文章主要介绍SAP ABAP 数据库直连,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

项目需求:SAP系统直接连接中间库数据库,定时的获取中间库的数据,中间库是ORACLE数据库。

1)查询出(外部)ORACLE表里所有数据放入内表

2)把内表里面的数据插入到SAP表

3)把(SAP)内表里的数据插入到(外部)ORACLE数据库

4)删除(外部)ORACLE数据库表数据

SAP版本:S/4 75X

1、配置连接数据库
事务代码DBCO,编辑-新建条目

 

 

DB连接:输入连接的名称

DBMS:Oracel选择ORA

用户名:输入用户名

数据库口令:两次输入数据库密码

连接信息: "10.10.1.20:1521/XXX"

输入IP和端口  XXX为ORACLE-SID

永久:勾上

 

2、测试是否联通
事务代码SE38 程序名  ADBC_TEST_CONNECTION

 

 

输入连接名称运行 

可以用 ADBC_QUERY  查询表结构和数据

3、代码:连接外部数据库
DATA :V_EXC_REF TYPE REF TO CX_SY_NATIVE_SQL_ERROR,
      V_ERRTXT TYPE STRING,
      V_SQLERR_REF TYPE REF TO CX_SQL_EXCEPTION.
TRY.
    " 连接
    EXEC SQL.
      CONNECT TO :连接名称
    ENDEXEC.
    CATCH CX_SY_NATIVE_SQL_ERROR INTO V_EXC_REF.
      V_ERRTXT = V_EXC_REF->GET_TEXT( ).
     CATCH CX_SQL_EXCEPTION INTO V_SQLERR_REF.
      IF V_SQLERR_REF->DB_ERROR = 'X'.
        V_ERRTXT = V_SQLERR_REF->SQL_MESSAGE.
        ELSE.
          V_ERRTXT = V_SQLERR_REF->INTERNAL_ERROR.
      ENDIF.
ENDTRY.
IF V_ERRTXT IS NOT  INITIAL.
    E_STATUS = 'E'.
    E_MESSAGE =  V_ERRTXT.
ELSE.
    E_STATUS = 'S'.
    E_MESSAGE =  '连接成功!'.
ENDIF.

4、代码:查询数据,查询多条数据到内表
FORM frm_select_db_all .
 TRY.
  EXEC SQL PERFORMING frm_append_data.
  SELECT  NAME,
          WORKORDER,
          PRODUCTNAME,
          ID,
          QUANTITY,
          SOURCEPRODUCTNAME,
          SOURCEPRODUCTQUANTITY,
          COMPONENTID,
          VENDORLOTID,
          VENDORNAME,
          ISSUEDATE,
          ISSUETIME,
          USERID,
          UPDATETIMES,
          TXNTIMES
   INTO :LS_SOURSE
   FROM SAP.SOURSE
  ENDEXEC.
ENDTRY.
ENDFORM.
 
FORM frm_append_data .
 
  APPEND LS_SOURSE TO LT_SOURSE.
  CLEAR LS_SOURSE.
ENDFORM.

5、代码:删除外部数据库表数据
FORM frm_delete_db .
  TRY.
      EXEC SQL.
        DELETE RSC.USERD
      ENDEXEC.
      IF sy-subrc = 0.
        EXEC SQL.
          COMMIT
        ENDEXEC.
       ELSE.
          EXEC SQL.
            ROLLBACK
          ENDEXEC.
      ENDIF.
       CATCH cx_sy_native_sql_error INTO v_exc_ref.
        v_errtxt = v_exc_ref->get_text( ).
       CATCH cx_sql_exception INTO v_sqlerr_ref.
        IF v_sqlerr_ref->db_error = 'X'.
          v_errtxt = v_sqlerr_ref->sql_message.
          ELSE.
            v_errtxt = v_sqlerr_ref->internal_error.
        ENDIF.
  ENDTRY.
 
ENDFORM.

6、代码:插入多条数据到外部数据库
FORM frm_insert_db .
  TRY.
    LOOP AT gt_userd INTO DATA(gs_userd).
      EXEC SQL.
        INSERT INTO RSC.USERD
        (FA,
        STROE,
        STROE_DSC,
        MATERIAL,
        MATERIAL_NO,
        STROE_N,
        UNIT,
        UNIT_DSC
        ) VALUES
        (:GS_USERD-FA,
        :GS_USERD-STROE,
        :GS_USERD-STROE_DSC,
        :GS_USERD-MATERIAL,
        :GS_USERD-MATERIAL_NO,
        :GS_USERD-STROE_N,
        :GS_USERD-UNIT,
        :GS_USERD-UNIT_DSC
        )
      ENDEXEC.
      IF sy-subrc = 0.
        EXEC SQL.
          COMMIT
        ENDEXEC.
       ELSE.
          EXEC SQL.
            ROLLBACK
          ENDEXEC.
      ENDIF.
    ENDLOOP.
 
 
 
  ENDTRY.
 
ENDFORM.
————————————————
版权声明:本文为CSDN博主「geyulai」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/geyulai/article/details/125273721

最后

以上就是积极外套为你收集整理的SAP ABAP 数据库直连的全部内容,希望文章能够帮你解决SAP ABAP 数据库直连所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(44)

评论列表共有 0 条评论

立即
投稿
返回
顶部