日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

外行假装内行,我也来谈谈SAP BAPI和BADI

發布時間:2023/12/14 编程问答 62 豆豆
生活随笔 收集整理的這篇文章主要介紹了 外行假装内行,我也来谈谈SAP BAPI和BADI 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

外行假裝內行,我也來談談SAP BAPI和BADI

A, 什么是BAPI?

BAPI是business application programming interface的縮寫,是面向對象程序設計方法中的一組程序接口。它允許程序員通過SAP將第三方軟件整合成R/3專有產品。為了完成一些特殊的商業任務,如上傳交易數據等,R/3系統中內置了BAPI。

1.BAPI – business application programming interface

2.它實際上是一種特殊的Remote Function Modules (RFC)是為了提供使用外部程序來進行交易活動, BAPI是SAP以外程序訪問SAP內部數據和程序的標準方式。

3.它提供的基于企業目標(Business Object) 技術的接口應用界面。

4.SAP采用了Object-oriented技術,邏輯定義了SAP R/3系統的所有功能目標,并且將所有的目標(Objects) 和BAPIs存儲于企業對象庫(Business Objects Repository)。

5.SAP R/3 企業目標的目標類型(Object Type) 相當于目標設計語言中類(Class) 的概念,其定義結構由以下幾部分組成:基本數據,接口界面,鍵(Key Fields),方法(Methods),特征(Attributes),事件(Events)。

6.BAPI在SAP系統內部以Function Module的方式實現.所有的BAPI Function都支持Remote Function Call (RFC),處理過程中不激活對話窗口。

7.BAPI是被定義為Business Object Repository(BOR)中的SAP Business Object類型或SAP interface類型的方法,并且以Function Module方式實現的. 這種定義和實現分離的方式是我們可以通過2種方式訪問BAPI:

- 通過面向對象的方法調用BOR中的BAPI

- 通過RFC直接調用Function Module

需要注意的事項:

在T-CODE:SE11中創建的結構必須保存在開發類中,不可保存為本地對象。

?

BAPI業務應用程序接口(Business Application Programming Interface,簡稱BAPI)是面向對象程序設計方法中的一組程序接口。它允許程序員通過SAP將第三方軟件整合成R/3專有產品。為了完成一些特殊的商業任務,比如上傳交易數據等,系統中內置了BAPI。

BAPI業務應用程序接口是一個標準化的開放接口。有了BAPI,用戶可以通過瀏覽器、Exchange電子郵件來使用ERP系統,用戶可以將這些軟件模塊與非ERP軟件混合匹配使用。

用戶可以按需求單獨更新某一個模塊,而沒有必要為了增強某一個功能對系統進行全面升級。用戶用逐個模塊更新的辦法增強系統的功能,而不必更換整個系統。

BAPI技術對ERP軟件的開發商來說是非常重大的進步。從MRPII到ERP,系統功能越來越多,一個軟件公司無論多么強大,也無法獨自開發包括企業全部專業的全部管理功能的軟件。在技術上必須有能力把第三方軟件接到自己的核心軟件上。SAP的BAPI和Oracle應用的30多個API能夠使自己的軟件具有“無限”的擴展能力。

BAPI是SAP提供的基于業務對象的函數,關鍵是它們處理的對象是R/3的業務相關對象,比如單據類銷售訂單,它們是一系列實體,RFC則是一種系統間通訊的方式(Remote Fcuntion Call),一個BAPI函數是一個RFC函數。

?

B, 如何創建BAPI程序?

主要有如下幾個步驟:

1.定義BAPI Structure (Structure不能在BAPI中重復使用,因為一旦BAPI被釋放,其Structure被凍結)。事務代碼SE11

2.創建FUNCTION MODULE。事務代碼SE80。

每個BAPI必須有自己的Function Group,Function Group屬性必須為RFC。

3.創建Business Object。事務代碼SWO1

4.使用BAPI WIZARD創建API Method。

這樣BAPI可以被外部程序調用。

5.Function Module符合BOR Method。

4.釋放BAPI Function Module, 事務代碼SE37、SWO1。

釋放Business Object Type,釋放BAPI作為BOR的一種Method。

?

C,BADI 和BAPI 的區別

BADI是一種面向對象的增強方式,SE19可以實現SAP已定義好的BADI。
而BAPI是SAP業務對象的一個方法,底層多以Function Module來實現。所以在ABAP里更多地是作為FM來使用。

?

BAPI 是函數,你可以輸入T-code:BAPI,查找系統里的BAPI函數。比如采購申請的審批的勾打上,就可以調用BAPI函數來實現。


BADI 是ABAP的一種增強,他的調用方式是CALL METHOD (instance),(相關的TCODE是SE18和SE19),你可以通過EXIT_HANDLER這個單詞查找BADI。


創建增強有多種方法,用CMOD可以創建,用SPRO也可以創建。網上有這段:
針對BADI的增強
?1、BADI對象的信息存儲在SXS_INTER, SXC_EXIT, SXC_CLASS 和SXC_ATTR 這四個表中。
?2、SAP程序都會調用cl_exithandler=>get_instance來判斷對象是否存在,并返回實例;其實get_instance就是對上述幾個表和他們的視圖(V_EXT_IMP 和 V_EXT_ACT)進行查詢和搜索。
?3、基于這個機理,我查用ST05來監控一個TCODE來跟蹤,然后選擇查找有關上述幾個表和視圖的操作,就可獲得相關BADI。

?4、se18 查找接口,se19 實現接口就可以實現用戶增強。

在程序中,查找BAdI的常用方法:

使用事務代碼 SE84 :Repository information system

使用事務代碼 SPRO: Customizing Guide, SAP標準發布的BAdI會在相關應用配置點中說明

在程序中搜索關鍵字CL_EXITHANDLER=>GET_INSTANCE或關鍵字GET BADI

在程序中搜索BAdI相關的接口名稱,其接口的命規范通常為IF_EX_

事務代碼CODE_SCANNER, 可指定在特定的package、program中所有相關的字符串

?

D,SAP 各模塊常用的BAPI

MM模塊

1、 BAPI_MATERIAL_SAVEDATA 創建物料主數據

注意參數EXTENSIONIN的使用,可以創建自定義字段

例如:WA_BAPI_TE_MARA-MATERIAL = ITAB_UP-MATNR.

???????? T_EXTENSIONIN-STRUCTURE = 'BAPI_TE_MARA'.

??????? ?T_EXTENSIONIN-VALUEPART1 = WA_BAPI_TE_MARA.

??????? APPEND T_EXTENSIONIN.

?

??????? WA_BAPI_TE_MARAX-MATERIAL = ITAB_UP-MATNR.

   T_EXTENSIONINX-STRUCTURE = 'BAPI_TE_MARAX'.

??????? T_EXTENSIONINX-VALUEPART1 = WA_BAPI_TE_MARAX.

?????? APPEND T_EXTENSIONINX.

?

2、 BAPI_OBJCL_CREATE 分類視圖的創建?

3、 BAPI_OBJCL_GETCLASSES 分類視圖得到詳細信息?

4、 BAPI_MATERIAL_SAVEREPLICA 物料視圖的擴充?

5、 BAPI_GOODSMVT_CREATE 創建物料憑證 注意表T158G可以決定goodsmvt_code

?

????? GOODSMVT_CODE參數對應值:

  01 MB01

  02 MB31

  03 MB1A

  04 MB1B

  05 MB1C

  06 MB11

  07 MB04

?

6、 BAPI_GOODSMVT_CANCEL 沖銷物料憑證?

7、 BAPI_PR_CREATE 創建PR?

8、 BAPI_PO_CREATE1 創建PO?

9、 BAPI_PO_CHANGE 修改PO和刪除PO?

10、WS_REVERSE_GOODS_ISSUE 沖銷交貨單的過賬發貨?

11、BAPI_RESERVATION_CREATE1 創建預留?? 如果要檢查ATP,必須使用

??????BAPI_RESERVATION_CREATE?

12、BAPI_RESERVATION_CHANGE 修改和刪除預留?

13、PRICES_CHANGE PRICES_POST 更改物料移動平均價或者標準價格?

?

SD模塊

1、 BAPI_SALESORDER_CREATEFROMDAT2 創建銷售訂單?

2、 SD_SALESDOCUMENT_CREATE 創建銷售訂單?(如果要檢查ATP,必須使用這個)

3、 BAPI_OUTB_DELIVERY_CREATE_SLS 根據銷售訂單創建交貨單?

4、 BAPI_BILLINGDOC_CREATEMULTIPLE 創建發票,注意參數ref_doc_ca?

5、 BAPI_SALESORDER_CHANGE 修改或者刪除銷售訂單?

6、 MB_CANCEL_GOODS_MOVEMENT 沖銷交貨單的過賬發貨?

7、 BAPI_BILLINGDOC_CANCEL1 發票的沖銷?

8、 BAPI_OUTB_DELIVERY_CHANGE 修改外向交貨單?

9、 SD_DELIVERY_UPDATE_PICKING 修改外向交貨單揀配數量?

10、WS_DELIVERY_UPDATE 外向交貨單的發貨過賬
11、SD_CUSTOMER_MAINTAIN_ALL?? 創建客戶?。

PM模塊

1、BAPI_OBJCL_CREATE 、

???? BAPI_OBJCL_CHANGE

???? BAPI_OBJCL_GETDETAIL

???? 計量點通用屬性導入?

2、MEASUREM_DOCUM_RFC_SINGLE_001 計量憑證創建

?

FI模塊

1、K_HIERARCHY_TABLES_READ 成本要素組明細?

2、BAPI_ACC_DOCUMENT_POST 創建會計憑證?

3、BAPI_ACC_DOCUMENT_REV_POST 反沖會計憑證? ?可以沖銷自開發程序生成的憑證?? 必須傳入交易碼參數
???? BAPI_ACC_GL_POSTING_REV_POST 只能沖銷標準TCODE生成的憑證

?

4FCOM_COSTCENTER_CHANGEMULTIPLE

??????FCOM_COSTCENTER_CREATEMULTIPLE

????? BAPI_COSTCENTER_CHANGEMULTIPLE :Change One or More Cost Centers
????? BAPI_COSTCENTER_CHECKMULTIPLE? :Check One or More Cost Centers
????? BAPI_COSTCENTER_CREATEMULTIPLE :Create One or More Cost Centers
????? BAPI_COSTCENTER_DELETEMULTIPLE :Delete One or More Cost Centers

4、BAPI_INCOMINGINVOICE_CREATE 發票檢驗(miro)?

5、BAPI_INCOMINGINVOICE_CANCEL 發票校驗沖銷(mr8m)

PS模塊

1、BAPI_PS_INITIALIZATION、BAPI_BUS2001_CREATE、BAPI_PS_PRECOMMIT 創建項目定義?

2、BAPI_PS_INITIALIZATION、BAPI_BUS2054_CREATE_MULTI、BAPI_PS_PRECOMMIT 創建WBS

創建WBS的時候,注意參數 wbs_left和 wbs_up,這個是創建有層級的WBS必須要填寫的?

3、KBPP_EXTERN_UPDATE_CO 修改項目和WBS的預算

?

PP模塊?

Routing(工藝路線)

BAPI_ROUTING_CREATE?????????????????????????????????????????????????????創建工藝路線BAPI - ca03

BAPI_ROUTING_EXISTENCE_CHECK???????????????????????????????檢查工藝路線是否存在?

Reference operation set:(參考操作集)

BAPI_REFSETOFOPERATIONS_CREATE???????????????????????????創建參考參考工序集

BAPI_REFSETOFOPR_EXISTENCE_CHK???????????????????????????檢查參考參考工序集

Planned order:(計劃訂單)

BAPI_PLANNEDORDER_CHANGE???????????????????????????????????????更改計劃訂單? -md04

BAPI_PLANNEDORDER_CREATE?????????????????????????????????????????創建計劃訂單

BAPI_PLANNEDORDER_DELETE?????????????????????????????????????????刪除計劃訂單

BAPI_PLANNEDORDER_EXIST_CHECK??????????????????????????????檢查計劃訂單是否存在

BAPI_PLANNEDORDER_GET_DETAIL??????????????????????????????? 獲取計劃訂單詳細信息(計劃訂單)?

BAPI_PLANNEDORDER_GET_DET_LIST????????????????????????????獲得計劃訂單信息

Planned Independent Requirement:(計劃獨立需求)

BAPI_REQUIREMENTS_CHANGE?????????????????????????????????????????更改計劃獨立需求 -md61

BAPI_REQUIREMENTS_CREATE???????????????????????????????????????????創建計劃獨立需求

BAPI_REQUIREMENTS_GETDETAIL???????????????????????????????????顯示計劃獨立需求

Production order:(生產訂單)

BAPI_PRODORD_WM_MAT_STAGING????????????????????????????????WM材料分期

BAPI_PRODORD_SETUSERSTATUS???????????????????????????????????????設置用戶狀態

BAPI_PRODORD_SET_DEL_INDICATOR?????????????????????????????設置刪除標識

BAPI_PRODORD_SET_DELETION_FLAG????????????????????????????設置刪除標識

BAPI_PRODORD_SCHEDULE??????????????????????????????????????????????????進行調整

BAPI_PRODORD_REVOKEUSERSTATUS?????????????????????????取消用戶狀態

BAPI_PRODORD_RELEASE????????????????????????????????????????????????發布

BAPI_PRODORD_GET_LIST???????????????????????????????????????????????列表抬頭訂單

BAPI_PRODORD_GET_DETAIL??????????????????????????????????????????抬頭訂單明細

BAPI_PRODORD_EXIST_CHECK??????????????????????????????????????確認檢查性

BAPI_PRODORD_CREATE_FROM_REF??????????????????????????創建模板

BAPI_PRODORD_CREATE_FROM_PLORD?????????????????????創建帶有計劃訂單

BAPI_PRODORD_CREATE_CAP_REQ????????????????????????????????產生能力需求

BAPI_PRODORD_CREATE???????????????????????????????????????????????????創建生產訂單

BAPI_PRODORD_COSTING????????????????????????????????????????????????創建成本估計

BAPI_PRODORD_COMPLETE_TECH???????????????????????????????完整的技術

BAPI_PRODORD_CLOSE??????????????????????????????????????????????????????關閉訂單

BAPI_PRODORD_CHECK_MAT_AVAIL????????????????????????????檢查物料可用性

BAPI_PRODORD_CHANGE??????????????????????????????????????????????????更改生產訂單?

Production order confirmation:(生產訂單確認)

BAPI_PRODORDCONF_GET_TT_PROP????????????????????????????確認計工單

BAPI_PRODORDCONF_GET_TE_PROP????????????????????????????確認計工單

BAPI_PRODORDCONF_GETLIST????????????????????????????????????????生產訂單確認

BAPI_PRODORDCONF_GETDETAIL????????????????????????生產訂單確認詳細信息

BAPI_PRODORDCONF_GET_HDR_PROP?????????????????確認計劃訂單

BAPI_PRODORDCONF_EXIST_CHK???????????????????????????檢查工單是否存在

BAPI_PRODORDCONF_CREATE_TT??????????????????????????確認計劃工單

BAPI_PRODORDCONF_CREATE_TE??????????????????????????確認計劃工單

BAPI_PRODORDCONF_PDC_UPLOAD_TT?????????????????PP 確認計工單

BAPI_PRODORDCONF_PDC_UPLOAD_TE??????????????????PP 確認計工單

BAPI_PRODORDCONF_CREATE_HDR????????????????????????輸入訂單確認

BAPI_PRODORDCONF_CREATE_ACT?????????????????????????輸入訂單激活確認

BAPI_PRODORDCONF_CANCEL??????????????????????????????????取消生產訂單?

BDC Download & Upload for production order:?(下載和上傳的BDC的生產訂單)

BAPI_RCVPRORDCF_RECEIVEPRODORD???????????????PP-PDC: 下載生產訂單

BAPI_RCVPRORDCF_RECEIVEWORKC????????????????????PP-PDC: 下載工作中心

BAPI_RCVPRODCF_REQUEST_CONF???????????????????????PP-PDC: 上傳請求

KANBAN: (看板)

BAPI_KANBAN_CHANGE???????????????????????????????????????????更改kanban數據

BAPI_KANBAN_CHANGESTATUS??????????????????????????更改kanban狀態

BAPI_KANBAN_CHANGESTATUS1????????????????????????更改kanban狀態1

BAPI_KANBAN_GETLIST?????????????????????????????????????????匹配選擇標準KANBAN的測定BAPI_KANBAN_GETLIST_ALL????????????????????????????????匹配選擇標準KANBAN的測定

BAPI_KANBAN_GETLISTFORSUPPLIE1????????????????匹配選擇標準KANBAN的測定

BAPI_KANBAN_GETLISTFORSUPPLIER???????????????為供應商提供kanban數據

BAPI_KANBAN_SETINPROCESS??????????????????????????為供應商提供kanban數據?

KANBAN CONTROL CYCLE:?(看板)

BAPI_KANBANCC_ADDEVENTDRKANBAN???????????Create Event-Driven KANBAN for Control Cycle????

BAPI_KANBANCC_CHANGE?????????????????????????????????Change Control Cycle

BAPI_KANBANCC_CREATE???????????????????????????????????Create Control Cycle

BAPI_KANBANCC_DELETE???????????????????????????????????Delete Control Cycles

BAPI_KANBANCC_EXISTCHECK?????????????????????????Check Existence of Control Cycle

BAPI_KANBANCC_GETLIST?????????????????????????????????Determine Kanban Control Cycles with Selection Criteria

BAPI_KANBANCC_GETLIST_ALL????????????????????????Determine Kanban Control Cycles with Selection Criteria

BAPI_KANBANCC_WITHDRAWQUANTITY??????????Quantity Signal for Kanban Control Cycle

REM Confirmation:?( REM確認)

BAPI_REPMANCONF_CANCEL????????????????????????處理的重復制造取消

BAPI_REPMANCONF_CREATE_MTO???????????????銷售訂單執行重復制造情況

BAPI_REPMANCONF_CREATE_PLOT?????????????執行生產成本

BAPI_REPMANCONF_CREATE_MTS???????????????在很多情況下,執行生產成本

BAPI_REPMANCONF_EXIST_CHK??????????????????檢查對象存在

REM Confirmation1:

BAPI_REPMANCONF1_CANCEL???????????????????????處理的重復制造取消

BAPI_REPMANCONF1_CREATE_MTO???????????銷售訂單執行重復制造情況

BAPI_REPMANCONF1_CREATE_MTP????????????在很多情況下,執行生產成本

BAPI_REPMANCONF1_CREATE_MTS????????????在很多情況下,執行生產成本

BAPI_REPMANCONF1_EXIST_CHK????????????????檢查對象存在?

?

-完-

整理于2021-12-30

總結

以上是生活随笔為你收集整理的外行假装内行,我也来谈谈SAP BAPI和BADI的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。