zoukankan      html  css  js  c++  java
  • 【ABAP系列】SAP 使用事务码DBCO实现SAP链接外部数据库以及读取例程

    公众号:matinal
    本文作者:matinal
     

    前言部分

    大家可以关注我的公众号,公众号里的排版更好,阅读更舒适。

    正文部分

    一、链接SQLServer数据库

    执行事务码DBCO,点新条目按钮,填写如下图所示信息

    这里的连接信息很接近 Sql Server 的连接字符串,但是参数名略有不同。指定主机IP、数据库名即可。

    二、链接DB2数据库
    执行事务码DBCO,点新条目按钮,填写如下图所示信息

    连接信息看上去比较直接,分别是数据库名、端口号、主机IP地址。

    三、链接Oracle数据库

    执行事务码DBCO,点新条目按钮,填写如下图所示信息

    连接信息比较隐晦,必须在 SAP 应用服务器上安装 Oracle Client,然后设置连接,并在这里将连接信息指定与连接名一致。
    为了防止乱码,我们还应该在链接信息后加如下参数:ZHS16GBK
    格式如下:ORCL.WORLD:ZHS16GBK

    四、链接MaxDB数据库

    执行事务码DBCO,点新条目按钮,填写如下图所示信息

    MaxDB 是 SAP 自己的数据库,这个连接则是 NetWeaver Developer 版中默认创建的一个连接

    访问外部数据库


     
    1. 实例:SAP系统访问PeopleSoft数据库

    *&----------------------------------------------------------------------------------------------------- &*
    *& 定义常量                                                                                           &*
    *&------------------------------------------------------------------------------------------------------&*
    CONSTANTS: CNS_YGJK TYPE C LENGTH 10 VALUE 'HR9DEV'. 
     
    **打开连接
      EXEC SQL.
        CONNECT TO :CNS_YGJK
      ENDEXEC.
     
    ***获取人事数据
      TRY.
          EXEC SQL PERFORMING PF_GET_RS.
            SELECT MANDT,
                   ZID,
                   OTYPE,
                   INFTY,
                   ZUPDATE,
                   OPERA,
                   ZDATA
              INTO :WA_HR01-MANDT,
                   :WA_HR01-ZID,
                   :WA_HR01-OTYPE,
                   :WA_HR01-INFTY,
                   :WA_HR01-ZUPDATE,
                   :WA_HR01-OPERA,
                   :WA_HR01-ZDATA
              FROM z00hrjzlch01
             WHERE SAP_GET = ''
          ENDEXEC.
     
    **处理人事数据
          IF IT_HR01[] IS NOT INITIAL.
            LOOP AT IT_HR01 INTO WA_HR01.
              EXEC SQL.
                UPDATE z00hrjzlch01
                   SET SAP_GET = 'X'
                 WHERE MANDT = :WA_HR01-MANDT
                   AND ZID = :WA_HR01-ZID
              ENDEXEC.
              IF SY-SUBRC = 0.
    *********更新ERP数据库表
                EXEC SQL.
                  COMMIT
                ENDEXEC.
                MODIFY Z00HRJZLCH01 FROM WA_HR01.
                COMMIT WORK.
              ENDIF.
            ENDLOOP.
          ENDIF.
    **关闭连接
          EXEC SQL.
            DISCONNECT :CNS_YGJK
          ENDEXEC.
    **获取异常
        CATCH CX_SY_NATIVE_SQL_ERROR INTO CL_EXEC_REF.
          EXIT.
        CATCH CX_SQL_EXCEPTION INTO CL_SQLERR_REF.
          EXIT.
      ENDTRY*&---------------------------------------------------------------------*
    *&      Form  PF_GET_ZZ
    *&---------------------------------------------------------------------*
    *       组织增量数据
    *----------------------------------------------------------------------*
    FORM PF_GET_ZZ .
      APPEND WA_HR02 TO IT_HR02.
    ENDFORM

    事务代码:DBCO查看,SAP系统现存的连接

    程序中使用的是连接【HR9DEV.WORLD】,双击这行如下图所示:

    先在SAP底层ORACLE数据库编辑TNS文件,一般由BASIS配置完成,配置路径:DIR_ORAHOME->network->admin->tnsnames.ora;配置完成后我们可以用事务码:AL11查看配置是否正确,AL11查看连接【HR9DEV.WORLD】具体配置

  • 相关阅读:
    hdu 4813(2013长春现场赛A题)
    NEFU 628 Garden visiting (数论)
    FZU 2020 组合 (Lucas定理)
    HDU 3304 Interesting Yang Yui Triangle (Lucas定理)
    HDU 3037 Saving Beans (数论,Lucas定理)
    UVa 1161 Objective: Berlin (最大流)
    Vijos P1951 玄武密码 (AC自动机)
    LA 4670 Dominating Patterns (AC自动机)
    HDU 2340 Obfuscation (暴力)
    HDU 5510 Bazinga (KMP)
  • 原文地址:https://www.cnblogs.com/SAPmatinal/p/11184727.html
Copyright © 2011-2022 走看看