大家好,又見面了,我是你們的朋友全棧君。
- 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