• SAP调用外部数据库


    SAP 中可以通过配置数据库的链接,来完成从SAP链接到外部的数据库中进行处理数据,具体操作如下:

    1、先进入事务:DBCO,设置数据库链接。进入该事务后,如果系统已经有配置过类似链接则会出现在如下画面中,如图1:

    (图1)

    2、在该配置中的难点在于您使用的服务器类型,sap中提供多种选择,如图2:

    (图2)

    3、说其是难点,是因为不同的数据库类型,在‘链接信息’这栏填写的内容格式是不一样的,重点说明MSS和ORA(因为我只用到了这两种);

    a)、SQL Server

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

    b)、Oracel

    oracel的链接信息比较隐晦,必须在 SAP 应用服务器上安装 Oracel client  ,然后设置链接,再在这里的链接信息进行指定。

    4、设置完事务DBCO后,就可以进行编写代码测试链接是否成功。(注:任何数据库配置信息都存放在表DBCON中)

    测试代码:(也可以见附件)

    附件代码:

      1 *&---------------------------------------------------------------------*
      2 *& Report  ZQIU_TEST46
      3 *&
      4 *&---------------------------------------------------------------------*
      5 *& 从SAP获取SRM中的数据
      6 *& SRM的数据库为Oracel
      7 *&---------------------------------------------------------------------*
      8 
      9 REPORT  zqiu_test46.
     10 
     11 TABLES dbcon.
     12 
     13 TYPES: BEGIN OF gs_asn,
     14         vendor_code(100) TYPE c,"供应商代码
     15         vendor_name(100) TYPE c,"供应商名称
     16         ship_date        TYPE d,"发货日期
     17         "creation_date    TYPE d,"创建日期
     18         org_code(100)    TYPE c,"公司代码
     19         item_code(30)    TYPE c,"物料编码
     20         item_name(1000)  TYPE c,"物料描述
     21         "ship_quantity
     22         segment1(30)     TYPE c,"订单号
     23         line_num(30)     TYPE c,"行号
     24        END OF gs_asn.
     25 
     26 DATA: gt_asn TYPE STANDARD TABLE OF gs_asn,
     27       gw_asn TYPE gs_asn.
     28 
     29 FIELD-SYMBOLS:<fs_asn> TYPE gs_asn.
     30 
     31 CONSTANTS p_connr TYPE dbcon-con_name  VALUE 'ZDBC0002'.
     32 
     33 *TRY.
     34 *  EXEC SQL.
     35 *    CONNECT TO :p_connr
     36 *  ENDEXEC.
     37 *  EXEC SQL.
     38 *    SET CONNECTION :p_connr
     39 *  ENDEXEC.
     40 *
     41 *  IF sy-subrc EQ 0.
     42 *    WRITE: / '连接成功!'.
     43 *  ELSE.
     44 *    WRITE: / '连接失败!'.
     45 *  ENDIF.
     46 *ENDTRY.
     47 
     48 START-OF-SELECTION.
     49   PERFORM frm_get_data.
     50 
     51 *&---------------------------------------------------------------------*
     52 *&      Form  frm_get_data
     53 *&---------------------------------------------------------------------*
     54 *       text
     55 *----------------------------------------------------------------------*
     56 FORM frm_get_data.
     57   TRY.
     58     EXEC SQL.
     59       connect to :p_connr
     60     ENDEXEC.
     61     EXEC SQL.
     62       set connection :p_connr
     63     ENDEXEC.
     64     EXEC SQL PERFORMING frm_get_lines.
     65       select a.vendor_code,
     66              a.vendor_name,
     67              a.ship_date,
     68              a.org_code,
     69              b.item_code,
     70              b.item_name,
     71              b.segment1,
     72              b.line_num
     73         into :gw_asn-vendor_code,
     74              :gw_asn-vendor_name,
     75              :gw_asn-ship_date,
     76              :gw_asn-org_code,
     77              :gw_asn-item_code,
     78              :gw_asn-item_name,
     79              :gw_asn-segment1,
     80              :gw_asn-line_num
     81         from inv_asn_headers a inner join inv_asn_lines b on a.asn_header_id = b.asn_header_id
     82         where b.segment1 = '60036078'
     83           and b.status = 'NEW'
     84 
     85     ENDEXEC.
     86 
     87     "关闭连接
     88     EXEC SQL.
     89       DISCONNECT :p_connr
     90     ENDEXEC.
     91   ENDTRY.
     92 
     93   IF gt_asn IS NOT INITIAL.
     94     WRITE:/ '获取数据成功!'.
     95 
     96     PERFORM frm_out_put.
     97   ENDIF.
     98 
     99 ENDFORM.                    "frm_get_data
    100 
    101 
    102 *&---------------------------------------------------------------------*
    103 *&      Form  frm_get_lines
    104 *&---------------------------------------------------------------------*
    105 *       text
    106 *----------------------------------------------------------------------*
    107 FORM frm_get_lines.
    108   APPEND gw_asn TO gt_asn.
    109 ENDFORM.                    "frm_get_lines
    110 
    111 
    112 *&---------------------------------------------------------------------*
    113 *&      Form  frm_out_put
    114 *&---------------------------------------------------------------------*
    115 *       text
    116 *----------------------------------------------------------------------*
    117 FORM frm_out_put.
    118   LOOP AT gt_asn ASSIGNING <fs_asn>.
    119     WRITE: / <fs_asn>-vendor_code,<fs_asn>-vendor_name,<fs_asn>-ship_date,<fs_asn>-
    120 
    121 org_code,<fs_asn>-item_code,<fs_asn>-item_name,<fs_asn>-segment1,<fs_asn>-line_num.
    122   ENDLOOP.
    123 ENDFORM.                    "frm_out_put
    View Code

     (注:参考来源 http://wenku.baidu.com/link?url=NNWN6JwQIEIsCmGX2z56W-GmNiWf0mX99coAK8BBYxylhl8khM-GttTb70RsWS_X2kkGkh591cQIhUqB0smanFJwm5PZGIWkXuKjY6B152K )

    (注:该文是本人在实践中的结果,如果有什么不足与问题望大家能指出,谢谢!O(∩_∩)O~!!!)

  • 相关阅读:
    简单的模板解析函数
    HTML通过事件传递参数到js 二 event
    HTML通过事件传递参数到js一
    通过this获取当前点击选项相关数据
    LeetCode 20. 有效的括号(Valid Parentheses)
    LeetCode 459. 重复的子字符串(Repeated Substring Pattern)
    LeetCode 14. 最长公共前缀(Longest Common Prefix)
    LeetCode 168. Excel表列名称(Excel Sheet Column Title)
    LeetCode 171. Excel表列序号(Excel Sheet Column Number) 22
    LeetCode 665. 非递减数列(Non-decreasing Array)
  • 原文地址:https://www.cnblogs.com/qlb8268/p/3603297.html
Copyright © 2020-2023  润新知