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

LOGO OA教程 ERP教程 模切知識(shí)交流 PMS教程 CRM教程 開發(fā)文檔 其他文檔  
 
網(wǎng)站管理員

SAP ERP系統(tǒng)如何使用中間數(shù)據(jù)庫與其它系統(tǒng)進(jìn)行數(shù)據(jù)交互?

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

SAP軟件Webservice接口技術(shù)應(yīng)用

中間數(shù)據(jù)庫作為系統(tǒng)間交互數(shù)據(jù)的基本機(jī)制

一般會(huì)部署一個(gè)專門的數(shù)據(jù)平臺(tái),不同業(yè)務(wù)系統(tǒng)不會(huì)直接將要傳輸?shù)臄?shù)據(jù)傳輸給其它業(yè)務(wù)系統(tǒng),而是會(huì)傳輸給中間的數(shù)據(jù)庫,要使用數(shù)據(jù)的業(yè)務(wù)系統(tǒng),要主動(dòng)去中間數(shù)據(jù)庫取自己需要的數(shù)據(jù)(如下圖所示
比如:系統(tǒng)A會(huì)將數(shù)據(jù)寫入至中間數(shù)據(jù)庫,B系統(tǒng)或系統(tǒng)C如果需要用到系統(tǒng)A的數(shù)據(jù),它會(huì)到中間數(shù)據(jù)庫去取需要的數(shù)據(jù),反之亦然。

使用中間數(shù)據(jù)庫作為系統(tǒng)間交互數(shù)據(jù)的優(yōu)缺點(diǎn)分析

優(yōu)點(diǎn):
1、實(shí)現(xiàn)比較簡單,對(duì)現(xiàn)有其它系統(tǒng)學(xué)習(xí)成本要求比較低,基本不需要考慮其它系統(tǒng)如何與SAP進(jìn)行連接。
2、外部系統(tǒng)和SAP系統(tǒng)相對(duì)獨(dú)立,接口不涉及雙方內(nèi)部的結(jié)構(gòu),數(shù)據(jù)的安全性得到保證。
缺點(diǎn):
1、因?yàn)閿?shù)據(jù)發(fā)送方的系統(tǒng)在給中間數(shù)據(jù)庫寫入數(shù)據(jù)時(shí),數(shù)據(jù)接收方的系統(tǒng)并不知道,只能靠定時(shí)任務(wù)來獲取最新數(shù)據(jù),實(shí)時(shí)性不夠高。
2、多系統(tǒng)集中地使用中間數(shù)據(jù)庫,意味著如果這個(gè)數(shù)據(jù)庫出現(xiàn)問題,就有可能大面積影響相關(guān)系統(tǒng)的正常運(yùn)轉(zhuǎn)。

SAP ERP系統(tǒng)如何使用中間數(shù)據(jù)庫

SAP連接外部數(shù)據(jù)庫通常是要在DBCO中進(jìn)行外部數(shù)據(jù)源配置。
SAP系統(tǒng)利用DBOC建立與中間數(shù)據(jù)庫的關(guān)聯(lián),利用SQL或者TSQL直接對(duì)數(shù)據(jù)庫進(jìn)行操作,其它系統(tǒng)也對(duì)該中間表進(jìn)行操作。

SAP ERP系統(tǒng)連接中間數(shù)據(jù)庫的配置

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

下面通過一個(gè)例子來介紹下SAP如何對(duì)中間數(shù)據(jù)庫的數(shù)據(jù)進(jìn)行插入/更新/刪除等操作。

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

1.SAP取出未審批的PR數(shù)據(jù)

TYPES : BEGIN OF TY_DATA,

BANFN   TYPE BANFN,  "采購申請(qǐng)?zhí)?/p>

BNFPO   TYPE BNFPO,  "采購申請(qǐng)項(xiàng)目

MATNR   TYPE MATNR,  "物料編碼

TXZ01   TYPE TXZ01,  "物料描述

MENGE   TYPE MENGE,  "數(shù)量

MEINS   TYPE MEINS,  "數(shù)量單位

STATUS(1)  TYPE C,   "狀態(tài)

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.連接中間數(shù)據(jù)庫

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

*&     FRM_CONNECT_EXT_DB .

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

*      1.連接外部數(shù)據(jù)庫

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

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數(shù)據(jù)推送至中間數(shù)據(jù)庫

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

*&   FRM_INSERT_EXT_DB

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

*  3.插入多條數(shù)據(jù)到外部數(shù)據(jù)庫

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

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.更新中間數(shù)據(jù)庫的值

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

*&   FRM_UPDATE_EXT_DB

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

*  4.更新外部數(shù)據(jù)庫

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

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的狀態(tài)

      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.查詢中間數(shù)據(jù)庫到SAP程序內(nèi)表

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

*&   FRM_SELECT_EXT_DB_ALL

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

*   5.1.查詢數(shù)據(jù),查詢多條數(shù)據(jù)到內(nèi)表

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


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.查詢數(shù)據(jù),查詢多條數(shù)據(jù)到內(nèi)表

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

FORM FRM_APPEND_DATA .

  APPEND GS_EBAN TO GT_EBAN.

  CLEAR  GS_EBAN.

ENDFORM.                    "FRM_APPEND_DATA

6.刪除中間數(shù)據(jù)庫

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

*&   FRM_APPEND_DATA.

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

*   6.刪除外部數(shù)據(jù)庫表數(shù)據(jù)

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

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.斷開與中間數(shù)據(jù)庫連接

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

*&   FRM_DISCONNECT_EXT_DB .

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

*    7.關(guān)閉連接

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

FORM FRM_DISCONNECT_EXT_DB .

  EXEC SQL.

    DISCONNECT :l_CON_NAME

  ENDEXEC.

ENDFORM.                    "FRM_DISCONNECT_EXT_DB


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