天天看點

BAPI 一些筆記

大家好,又見面了,我是你們的朋友全棧君。

  • vendor 供應商号:長度必須和系統一緻,10位。如 2000025要寫成 0002000025傳遞給參數。

CALL FUNCTION ‘CONVERSION_EXIT_ALPHA_INPUT’

EXPORTING

input = poheader-vendor

IMPORTING

output = poheader-vendor.

poheaderx-vendor = abap_true.

  • POITEM 中的 PO_ITEM 參數,在 POITEMX中對應的不是X,而是相同的 采購憑證的項目編号.

poitem-po_item = lv_ebelp.”行項目

poitemx-po_item = lv_ebelp.

  • POHEADER中的參數在 POHEADERX一定要有對應的參數。POITEM也一樣。
  • 增強字段在extensionin裡

“擡頭增強字段

ls_te_head-zpslx = ls_head-zpslx.

ls_te_head-zzekkoyl0 = ls_head-zwxsh.”無需送貨辨別

ls_te_headx-zpslx = abap_true.

ls_te_headx-zzekkoyl0 = abap_true.

lt_extensionin-structure = ‘BAPI_TE_MEPOHEADER’.

lt_extensionin-valuepart1 = ls_te_head.

APPEND lt_extensionin.

CLEAR:ls_te_head,lt_extensionin.

lt_extensionin-structure = ‘BAPI_TE_MEPOHEADERX’.

lt_extensionin-valuepart1 = ls_te_headx.

APPEND lt_extensionin.

CLEAR:ls_te_headx,lt_extensionin.

“行項目增強字段

ls_te_item-po_item = lv_ebelp.

ls_te_item-zzeanme = lt_data-zzeanme .

ls_te_item-zzcd = lt_data-zzcd.

ls_te_item-zzjsean = lt_data-ean11.

ls_te_item-zzjssl = lt_data-zzeanme.

ls_te_item-zzjsdw = lt_data-meins.

ls_te_item-zzdgean = lt_data-zzdgean.

ls_te_item-zzeanme = lt_data-zzdgsl.

ls_te_item-zzdgdw = lt_data-zzdgdw.

ls_te_item-zmd = lt_data-zmd.

ls_te_item-zzekpoyl6 = lt_data-zzekpoyl6.”城市代碼

CLEAR:lt_data,poaccount,poaccountx.

lt_extensionin-structure = ‘BAPI_TE_MEPOITEM’.

CALL METHOD cl_abap_container_utilities=>fill_container_c

EXPORTING

im_value = ls_te_item

IMPORTING

ex_container = lt_extensionin-valuepart1

EXCEPTIONS

illegal_parameter_type = 1

OTHERS = 2.

IF sy-subrc <> 0.

* Implement suitable error handling here

ENDIF.

APPEND lt_extensionin.

CLEAR lt_extensionin.

ls_te_itemx-po_item = lv_ebelp.

ls_te_itemx-zzeanme = abap_true.

ls_te_itemx-zzcd = abap_true.

ls_te_itemx-zzjsean = abap_true.

ls_te_itemx-zzjssl = abap_true.

ls_te_itemx-zzjsdw = abap_true.

ls_te_itemx-zzdgean = abap_true.

ls_te_itemx-zzeanme = abap_true.

ls_te_itemx-zzdgdw = abap_true.

ls_te_itemx-zmd = abap_true.

ls_te_itemx-zzekpoyl6 = abap_true.

lt_extensionin-structure = ‘BAPI_TE_MEPOITEMX’.

lt_extensionin-valuepart1 = ls_te_itemx.

APPEND lt_extensionin.

CLEAR lt_extensionin.

BAPI的結構,BAPI裡的代碼可以分為這樣兩部分:

1、一部分是資料校核,檢查傳入的資料是否滿足建立相關業務對象的條件,并且把錯誤消息回報出來;

2、另一部分是更新資料庫,即UPDATE/INSERT/DELETE dbtab這樣的操作。

1 BAPI的優點

bapi是面向對象的設計;

bapi是固定的,一般不能修改;

bapi可以被sap内部部件和非sap程式使用;

bapi的成功和錯誤資訊始終通過RETURN傳回;

bapi可以被許多開發平台使用;

2 何時該考慮使用BAPI設計程式

用VB/JAVA?C++等語言編寫非SAPGUI程式通路和處理sap資料;

SAP不同部件之間通訊;

與非sap程式或者老系統交換資料:

使用異步通信分發資料如:ALE

可以通過SAP Business Connector or Internet Application Components 與網際網路程式內建;

3 關于RETURN

RETURN用于BAPI傳回錯誤和成功的消息,它可以是BAPIRETURN,BAPIRETURN,BAPIRET1,BAPIRET2和BAPIRET2_FIX中的一種類型.這些結構一般都包括以下字段:

SORT return BY type number row.

LOOP AT return WHERE type = ‘E’ OR type = ‘A’.

ENDLOOP.

如果sy-subrc = 0,CALL FUNCTION ‘BAPI_TRANSACTION_ROLLBACK’.

否則

CALL FUNCTION ‘BAPI_TRANSACTION_COMMIT’

EXPORTING

wait = ‘X’ “參數wait指派‘X’,送出完之後才回進行後面的代碼

IMPORTING

return = ls_commit_return.

TYPE CHAR 1

S= success message

E = error message

W = warning message

I = information message

A = termination message (abort)終止消息(中止)

ID CHAR 20 Message ID The structure BAPIRET2 takes into account the name space extension for the message class as of Release 4.0. If you want messages to be compatible with earlier R/3 Releases, use the message classes before Release 4.0.
NUMBER NUMC 3 Message number
MESSAGE CHAR 220 Full message text from the message table. All variables (in fields Message_V1 to Message_V4) have been replaced with text.

MESSAGE_V1

MESSAGE_V2

MESSAGE_V3 MESSAGE_V4

CHAR 50 Fields for the variable texts of the message

釋出者:全棧程式員棧長,轉載請注明出處:https://javaforall.cn/163905.html原文連結:https://javaforall.cn