狠狠色丁香婷婷综合尤物/久久精品综合一区二区三区/中国有色金属学报/国产日韩欧美在线观看 - 国产一区二区三区四区五区tv

LOGO OA教程 ERP教程 模切知識交流 PMS教程 CRM教程 開發文檔 其他文檔  
 
網站管理員

SAP ERP系統如何使用中間數據庫與其它系統進行數據交互?

admin
2024年3月13日 17:3 本文熱度 690
SAP系統與外部系統之間進行數據交換和通信的接口方式有很多種,比如常用的接口技術有RFC、BAPI、ALE、Webservice、RESTful、中間數據庫等等,不同的接口形式具有不同的特點和適用場景,可以根據具體需求選擇合適的接口形式來實現系統間的數據交互。
前面文章中已介紹Webservice和RESTful的接口技術在SAP中應用,具體文章連接如下,本文重點介紹下中間數據庫作為系統間交互的接口方式的應用。
SAP軟件如何發布和調用RESTful接口

SAP軟件Webservice接口技術應用

中間數據庫作為系統間交互數據的基本機制

一般會部署一個專門的數據平臺,不同業務系統不會直接將要傳輸的數據傳輸給其它業務系統,而是會傳輸給中間的數據庫,要使用數據的業務系統,要主動去中間數據庫取自己需要的數據(如下圖所示
比如:系統A會將數據寫入至中間數據庫,B系統或系統C如果需要用到系統A的數據,它會到中間數據庫去取需要的數據,反之亦然。

使用中間數據庫作為系統間交互數據的優缺點分析

優點:
1、實現比較簡單,對現有其它系統學習成本要求比較低,基本不需要考慮其它系統如何與SAP進行連接。
2、外部系統和SAP系統相對獨立,接口不涉及雙方內部的結構,數據的安全性得到保證。
缺點:
1、因為數據發送方的系統在給中間數據庫寫入數據時,數據接收方的系統并不知道,只能靠定時任務來獲取最新數據,實時性不夠高。
2、多系統集中地使用中間數據庫,意味著如果這個數據庫出現問題,就有可能大面積影響相關系統的正常運轉。

SAP ERP系統如何使用中間數據庫

SAP連接外部數據庫通常是要在DBCO中進行外部數據源配置。
SAP系統利用DBOC建立與中間數據庫的關聯,利用SQL或者TSQL直接對數據庫進行操作,其它系統也對該中間表進行操作。

SAP ERP系統連接中間數據庫的配置

1、配置連接數據庫
執行事務碼DBCO,點新條目按鈕,填寫如下圖所示信息
DB連接:輸入連接的名稱
DBMS:MySQL選擇MSS(目前SAP中可以配置數據源的數據庫有如下)
用戶名:輸入用戶名
數據庫口令:兩次輸入數據庫密碼
連接信息:這里的連接MySQL的連接字符串,指定主機IP、數據庫名即可,其它數據庫參數名略有不同。
永久:勾上
2、測試是否聯通
事務代碼SE38 
程序名 :ADBC_TEST_CONNECTION
輸入連接名稱運行 
上圖表示可以連通中間數據庫。

下面通過一個例子來介紹下SAP如何對中間數據庫的數據進行插入/更新/刪除等操作。

業務需求如下:
某公司需要將SAP系統創建的采購申請(PR)推送至BPM(業務流程管理系統)進行審批,該公司使用中間數據庫的方式進行數據交互。
大體業務流程如下:
1.SAP系統取未審批的采購申請(PR)數據,通過定時任務推送到中間數據庫表。
2.BPM系統定時從中間數據庫表取SAP推送過來的PR的新數據,生成審批流程。
3.BPM生成審批流后和審批完成都會更新中間數據庫的PR狀態。
4. SAP修改PR時候需要取中間數據庫中該采購申請PR的狀態,如果PR在審批中的狀態,不能進行修改。
5. BPM審批完成后調用接口自動審批SAP中采購申請。
實現上面需求的主要關鍵代碼示例

1.SAP取出未審批的PR數據

TYPES : BEGIN OF TY_DATA,

BANFN   TYPE BANFN,  "采購申請號

BNFPO   TYPE BNFPO,  "采購申請項目

MATNR   TYPE MATNR,  "物料編碼

TXZ01   TYPE TXZ01,  "物料描述

MENGE   TYPE MENGE,  "數量

MEINS   TYPE MEINS,  "數量單位

STATUS(1)  TYPE C,   "狀態

END OF ty_data.

DATA : GT_EBAN TYPE TABLE OF TY_DATA,

GS_EBAN TYPE TY_DATA.

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.


DATA:Z_CON_NAME TYPE CHAR40 ."VALUE 'BPM782'.


Z_CON_NAME  = 'BPM80'. "連接名稱       


CLEAR: GS_EBAN,GT_EBAN.

SELECT * INTO CORRESPONDING FIELDS OF TABLE GT_EBAN

FROM EBAN

      WHERE WERKS = '171O'AND FRGKZ = 'X' AND  LOEKZ <> 'X'.

2.連接中間數據庫

*&---------------------------------------------------------------------*

*&     FRM_CONNECT_EXT_DB .

*&---------------------------------------------------------------------*

*      1.連接外部數據庫

*----------------------------------------------------------------------*

FORM FRM_CONNECT_EXT_DB .


  TRY.

      " 連接

      EXEC SQL.

        CONNECT TO :Z_CON_NAME   "連接名稱

      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.


ENDFORM.

3.將取出PR數據推送至中間數據庫

*&---------------------------------------------------------------------*

*&   FRM_INSERT_EXT_DB

*&---------------------------------------------------------------------*

*  3.插入多條數據到外部數據庫

*----------------------------------------------------------------------*

FORM FRM_INSERT_EXT_DB .


  TRY.

    LOOP AT GT_EBAN INTO GS_EBAN.

      EXEC SQL.

        INSERT INTO ZPR_EBAN_DATA

        ( BANFN,

          BNFPO,

          MATNR,

          TXZ01,

          MENGE,

          MEINS,

          STATUS )


         VALUES

        ( :GS_EBAN-BANFN,

          :GS_EBAN-BNFPO,

          :GS_EBAN-MATNR,

          :GS_EBAN-TXZ01,

          :GS_EBAN-MENGE,

          :GS_EBAN-MEINS,

          :GS_EBAN-STATUS

        )

      ENDEXEC.


      IF SY-SUBRC = 0.

        EXEC SQL.

          COMMIT

        ENDEXEC.

      ELSE.

        EXEC SQL.

          ROLLBACK

        ENDEXEC.

      ENDIF.


    ENDLOOP.


  ENDTRY.


ENDFORM.

4.更新中間數據庫的值

*&---------------------------------------------------------------------*

*&   FRM_UPDATE_EXT_DB

*&---------------------------------------------------------------------*

*  4.更新外部數據庫

*----------------------------------------------------------------------*

FORM FRM_UPDATE_EXT_DB USING P_VBELN P_BNFPO .


  TRY.

      EXEC SQL.

        UPDATE ZPR_EBAN_DATA SET STATUS  =  1 WHERE BANFN = :P_BANFN AND BNFPO = :P_BNFPO    "更新表ZPR_EBAN_DATA中PR的狀態

      ENDEXEC.

      COMMIT WORK AND WAIT.

    CATCH CX_SY_NATIVE_SQL_ERROR INTO EXC_REF.

      ERROR_TEXT = EXC_REF->GET_TEXT( ).

      EXEC SQL.

        DISCONNECT :L_CON_NAME

      ENDEXEC.

      MESSAGE E006(Z001) WITH ERROR_TEXT.

  ENDTRY.


ENDFORM.                    "FRM_UPDATE_EXT_DB

5.查詢中間數據庫到SAP程序內表

*&---------------------------------------------------------------------*

*&   FRM_SELECT_EXT_DB_ALL

*&---------------------------------------------------------------------*

*   5.1.查詢數據,查詢多條數據到內表

*----------------------------------------------------------------------*


FORM FRM_SELECT_EXT_DB_ALL .


  TRY.

    EXEC SQL PERFORMING FRM_APPEND_DATA.

      SELECT  BANFN,

              BNFPO,

              MATNR,

              TXZ01,

              MENGE,

              MEINS,

              STATUS

       INTO :GS_EBAN

       FROM ZPR_EBAN_DATA

    ENDEXEC.

  ENDTRY.


ENDFORM.                    "FRM_SELECT_EXT_DB_ALL


*&---------------------------------------------------------------------*

*&   FRM_APPEND_DATA.

*&---------------------------------------------------------------------*

*   5.2.查詢數據,查詢多條數據到內表

*----------------------------------------------------------------------*

FORM FRM_APPEND_DATA .

  APPEND GS_EBAN TO GT_EBAN.

  CLEAR  GS_EBAN.

ENDFORM.                    "FRM_APPEND_DATA

6.刪除中間數據庫

*&---------------------------------------------------------------------*

*&   FRM_APPEND_DATA.

*&---------------------------------------------------------------------*

*   6.刪除外部數據庫表數據

*----------------------------------------------------------------------*

FORM FRM_DELETE_DB .


  TRY.

      EXEC SQL.

        DELETE ZPR_EBAN_DATA.

      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.                    "FRM_DELETE_DB

7.斷開與中間數據庫連接

*&---------------------------------------------------------------------*

*&   FRM_DISCONNECT_EXT_DB .

*&---------------------------------------------------------------------*

*    7.關閉連接

*----------------------------------------------------------------------*

FORM FRM_DISCONNECT_EXT_DB .

  EXEC SQL.

    DISCONNECT :l_CON_NAME

  ENDEXEC.

ENDFORM.                    "FRM_DISCONNECT_EXT_DB


該文章在 2024/3/14 9:58:17 編輯過
關鍵字查詢
相關文章
正在查詢...
點晴ERP是一款針對中小制造業的專業生產管理軟件系統,系統成熟度和易用性得到了國內大量中小企業的青睞。
點晴PMS碼頭管理系統主要針對港口碼頭集裝箱與散貨日常運作、調度、堆場、車隊、財務費用、相關報表等業務管理,結合碼頭的業務特點,圍繞調度、堆場作業而開發的。集技術的先進性、管理的有效性于一體,是物流碼頭及其他港口類企業的高效ERP管理信息系統。
點晴WMS倉儲管理系統提供了貨物產品管理,銷售管理,采購管理,倉儲管理,倉庫管理,保質期管理,貨位管理,庫位管理,生產管理,WMS管理系統,標簽打印,條形碼,二維碼管理,批號管理軟件。
點晴免費OA是一款軟件和通用服務都免費,不限功能、不限時間、不限用戶的免費OA協同辦公管理系統。
Copyright 2010-2025 ClickSun All Rights Reserved