SAP MM Use ZBAPI_PO_CRATE to load open PO document
SAP MM Use ZBAPI_PO_CRATE to load open PO document
Pls check if this code. I used this to upload po.
*&---------------------------------------------------------------------*
*& Report ZBAPI_PO_CRATE
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*
REPORT ZBAPI_PO_CRATE.
data : PO_HEADER like BAPIEKKOC.
data : PO_HEADER_ADD_DATA like BAPIEKKOA.
data : PO_ITEMS like BAPIEKPOC occurs 0 with header
line.
data : PO_ITEM_SCHEDULES like BAPIEKET occurs 0 with
header line.
data : RETURN like BAPIRETURN occurs 0 with header
line.
DATA : BEGIN OF TAB OCCURS 0,
PO_NUMBER like BAPIEKKOC-PO_NUMBER,
DOC_DATE(10),
DOC_TYPE like BAPIEKKOC-DOC_TYPE,
CO_CODE like BAPIEKKOC-CO_CODE,
PURCH_ORG like BAPIEKKOC-PURCH_ORG,
PUR_GROUP like BAPIEKKOC-PUR_GROUP,
VENDOR like BAPIEKKOC-VENDOR,
PMNTTRMS like BAPIEKKOA-PMNTTRMS,
INCOTERMS1 like BAPIEKKOA-INCOTERMS1,
INCOTERMS2 like BAPIEKKOA-INCOTERMS2,
PO_ITEM like BAPIEKPOC-PO_ITEM,
MATERIAL like BAPIEKPOC-MATERIAL,
PUR_MAT like BAPIEKPOC-PUR_MAT,
ITEM_CAT like BAPIEKPOC-ITEM_CAT,
PLANT like BAPIEKPOC-PLANT,
NET_PRICE like BAPIEKPOC-NET_PRICE,
TAX_CODE like BAPIEKPOC-TAX_CODE,
DELIV_DATE(10),
QUANTITY like BAPIEKET-QUANTITY,
end of tab.
data: itab1 like alsmex_tabline occurs 0 with header
line.
DATA: gd_currentrow type i.
data : PURCHASEORDER like ekko-ebeln.
Data: tot_rec type i, "Total Records
gd_update type i, "Main Table Increement
Counter
gd_lines type i, "Success Table increement
Counter
w_textout like t100-text. "VARIABLE TO GET ERROR
LOG
data : begin of it_success occurs 0,
PURCHASEORDER LIKE ekko-ebeln, "PROJECT
end of it_success.
data : begin of it_error occurs 0,
pono like ekko-ebeln,
err_msg(73) TYPE c, "TO RETREIVE ERROR
MESSAGES
end of it_error.
data : pono like ekko-ebeln.
selection-screen begin of block b1 with frame.
skip 3.
parameter:p_infile like rlgrap-filename obligatory.
skip 3.
selection-screen end of block b1.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_infile.
PERFORM value_help.
start-of-selection.
call function 'ALSM_EXCEL_TO_INTERNAL_TABLE'
EXPORTING
filename = p_infile
i_begin_col = '1'
i_begin_row = '2' "Do not require
headings
i_end_col = '22'
i_end_row = '10000'
TABLES
intern = itab1
EXCEPTIONS
inconsistent_parameters = 1
upload_ole = 2
others = 3.
if sy-subrc <> 0.
message e010(zz) with text-001. "Problem uploading
Excel Spreadsheet
endif.
*perform open_group.
sort itab1 by row col.
* Get first row retrieved
read table itab1 index 1.
* Set first row retrieved to current row
gd_currentrow = itab1-row.
loop at itab1.
* Reset values for next row
if itab1-row ne gd_currentrow.
append tab .
clear tab.
gd_currentrow = itab1-row.
endif.
case itab1-col.
when '0001'. "PGNAM
TAB-PO_NUMBER = itab1-value.
when '0002'. "RONAM
TAB-DOC_DATE = itab1-value.
when '0003'. "JVLEVEL
TAB-DOC_TYPE = itab1-value.
when '0004'. "FTTYPE
TAB-CO_CODE = itab1-value.
when '0005'. "LANG
TAB-PURCH_ORG = itab1-value.
when '0006'. "LTEXT
TAB-PUR_GROUP = itab1-value.
when '0007'. "LTEXT
TAB-VENDOR = itab1-value.
when '0008'. "LTEXT
TAB-PMNTTRMS = itab1-value.
when '0009'. "LTEXT
TAB-INCOTERMS1 = itab1-value.
when '0010'. "FTTYPE
TAB-INCOTERMS2 = itab1-value.
when '0011'. "FTTYPE
TAB-PO_ITEM = itab1-value.
when '0012'. "FTTYPE
TAB-MATERIAL = itab1-value.
when '0013'. "FTTYPE
TAB-PUR_MAT = itab1-value.
when '0014'. "FTTYPE
TAB-ITEM_CAT = itab1-value.
when '0015'. "FTTYPE
shift itab1-value left deleting leading space.
TAB-PLANT = itab1-value.
when '0016'. "FTTYPE
TAB-NET_PRICE = itab1-value.
when '0017'. "FTTYPE
TAB-TAX_CODE = itab1-value.
when '0018'. "FTTYPE
TAB-DELIV_DATE = itab1-value.
when '0019'. "FTTYPE
TAB-QUANTITY = itab1-value.
endcase.
endloop.
append tab.
clear tab.
sort tab by PO_NUMBER.
DELETE TAB WHERE PO_NUMBER = SPACE.
loop at tab.
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
EXPORTING
INPUT = tab-material
IMPORTING
OUTPUT = tab-material.
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
EXPORTING
INPUT = tab-PUR_MAT
IMPORTING
OUTPUT = tab-PUR_MAT.
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
EXPORTING
INPUT = tab-vendor
IMPORTING
OUTPUT = tab-vendor.
concatenate tab-doc_DATE+4(4) tab-doc_DATE+2(2)
tab-doc_DATE+0(2)
into tab-doc_DATE.
concatenate tab-DELIV_DATE+4(4)
tab-DELIV_DATE+2(2)
tab-DELIV_DATE+0(2) into tab-DELIV_DATE.
pono = tab-PO_NUMBER.
if tab-po_number = pono.
PO_HEADER-DOC_DATE = tab-DOC_DATE.
PO_HEADER-DOC_TYPE = tab-DOC_TYPE.
PO_HEADER-CO_CODE = tab-CO_CODE.
PO_HEADER-PURCH_ORG = tab-PURCH_ORG.
PO_HEADER-PUR_GROUP = tab-PUR_GROUP.
PO_HEADER-VENDOR = tab-VENDOR.
PO_HEADER-PO_NUMBER = tab-PO_NUMBER.
PO_HEADER_ADD_DATA-PMNTTRMS = tab-PMNTTRMS.
PO_HEADER_ADD_DATA-INCOTERMS1 = tab-INCOTERMS1.
PO_HEADER_ADD_DATA-INCOTERMS2 = tab-INCOTERMS2.
PO_ITEMS-PO_ITEM = tab-PO_ITEM.
PO_ITEMS-MATERIAL = tab-MATERIAL.
PO_ITEMS-PUR_MAT = tab-PUR_MAT.
PO_ITEMS-ITEM_CAT = tab-ITEM_CAT.
PO_ITEMS-PLANT = tab-PLANT.
PO_ITEMS-NET_PRICE = tab-NET_PRICE.
PO_ITEMS-TAX_CODE = tab-TAX_CODE.
append po_items.
PO_ITEM_SCHEDULES-PO_ITEM = tab-PO_ITEM.
PO_ITEM_SCHEDULES-DELIV_DATE = tab-DELIV_DATE.
PO_ITEM_SCHEDULES-QUANTITY = tab-QUANTITY.
append PO_ITEM_SCHEDULES.
endif.
at end of PO_NUMBER.
CALL FUNCTION 'BAPI_PO_CREATE'
EXPORTING
PO_HEADER = PO_HEADER
PO_HEADER_ADD_DATA =
PO_HEADER_ADD_DATA
* HEADER_ADD_DATA_RELEVANT =
* PO_ADDRESS =
* SKIP_ITEMS_WITH_ERROR = 'X'
* ITEM_ADD_DATA_RELEVANT =
* HEADER_TECH_FIELDS =
IMPORTING
PURCHASEORDER =
PURCHASEORDER
TABLES
PO_ITEMS = PO_ITEMS
* PO_ITEM_ADD_DATA =
PO_ITEM_SCHEDULES =
PO_ITEM_SCHEDULES
* PO_ITEM_ACCOUNT_ASSIGNMENT =
* PO_ITEM_TEXT =
RETURN = RETURN
* PO_LIMITS =
* PO_CONTRACT_LIMITS =
* PO_SERVICES =
* PO_SRV_ACCASS_VALUES =
* PO_SERVICES_TEXT =
* PO_BUSINESS_PARTNER =
* EXTENSIONIN =
* POADDRDELIVERY =
.
if PURCHASEORDER <> space.
.
commit work.
ADD 1 TO gd_update.
it_success-PURCHASEORDER = PURCHASEORDER.
append it_success.
clear:PO_HEADER,PO_HEADER_ADD_DATA,PURCHASEORDER.
refresh : PO_ITEMS,PO_ITEM_SCHEDULES,RETURN.
ELSE.
loop at return.
it_error-pono = tab-PO_NUMBER.
it_error-err_msg = return-MESSAGE .
Append it_error.
ENDLOOP.
clear:PO_HEADER,PO_HEADER_ADD_DATA,PURCHASEORDER.
refresh : PO_ITEMS,PO_ITEM_SCHEDULES,RETURN.
endif.
endat.
endloop.
DESCRIBE TABLE it_success LINES gd_lines.
IF gd_lines GT 0.
* Display result report column headings
PERFORM display_column_headings.
* Display result report
PERFORM DISPLAY_SUCESS.
ENDIF.
* IF SUCESS FAILS Display Error Report
DESCRIBE TABLE it_error LINES gd_lines.
IF gd_lines GT 0.
PERFORM errorheadings.
PERFORM errorreport.
ENDIF.
*&---------------------------------------------------------------------*
*& Form display_column_headings
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM display_column_headings.
WRITE:2 ' Success Report '(014) COLOR COL_POSITIVE.
SKIP.
WRITE:2 'The following records inserted
successfully:'(013).
WRITE:/ sy-uline(15).
FORMAT COLOR COL_HEADING.
WRITE:/ sy-vline,
(10) 'Purchase order'(004), sy-vline.
WRITE:/ sy-uline(15).
ENDFORM. "display_column_headings
*Subroutine to display SUCESS REPORT
FORM DISPLAY_SUCESS.
FORMAT COLOR COL_NORMAL.
LOOP AT it_success.
WRITE:/ sy-vline,
(10) it_success-PURCHASEORDER, sy-vline.
CLEAR it_success.
ENDLOOP.
WRITE:/ sy-uline(15).
REFRESH: it_success.
FORMAT COLOR COL_BACKGROUND.
ENDFORM. "
DISPLAY_REPORT
*&---------------------------------------------------------------------*
*& Form errorreport
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM errorreport.
LOOP AT it_error.
WRITE:/ sy-vline,
(10) it_error-pono, sy-vline,
(40) it_error-err_msg, sy-vline.
ENDLOOP.
WRITE:/ sy-uline(104).
REFRESH: it_error.
endform. "errorreport
*&---------------------------------------------------------------------*
*& Form ERRORHEADINGS
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM ERRORHEADINGS.
SKIP.
WRITE:2 ' Error Report '(007) COLOR COL_NEGATIVE.
SKIP.
WRITE:2 'The following records failed during
update:'(008).
WRITE:/ sy-uline(104).
FORMAT COLOR COL_HEADING.
WRITE:/ sy-vline,
(10) 'ERROR.'(009), sy-vline.
WRITE:/ sy-uline(104).
FORMAT COLOR COL_NORMAL.
ENDFORM. "ERRORHEADINGS
**&---------------------------------------------------------------------
**
**& Form value_help
**&---------------------------------------------------------------------
**
** text
**----------------------------------------------------------------------
**
** --> p1 text
** <-- p2 text
**----------------------------------------------------------------------
**
FORM value_help .
CALL FUNCTION 'DSVAS_DOC_WS_FILENAME_GET_50'
EXPORTING
DEF_FILENAME = ' '
DEF_PATH = ' '
MASK = ',*.*,*.*.'
MODE = 'O'
TITLE = ' '
IMPORTING
FILENAME = p_infile
EXCEPTIONS
INV_WINSYS = 1
NO_BATCH = 2
SELECTION_CANCEL = 3
SELECTION_ERROR = 4
OTHERS = 5.
IF sy-subrc <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
endform. "value_help
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29829936/viewspace-2126212/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- SAP MM 實施專案裡Open PO 遷移思路探討
- SAP MM BAPI_PO_CREATE1的用法API
- SAP MM 物料主資料的Document Data
- SAP MM Table to read PO Header text and item textHeader
- 「SAP技術」SAP MM 向交貨單的存在不阻止PO被刪除
- 「SAP技術」SAP MM 明明有維護源清單,還是不能下PO?
- SAP MM取消採購訂單審批--- BAPI_PO_RESET_RELEASEAPI
- SAP MM 不常用事務程式碼之MBSL - Copy Material Document
- SAP MM PO中的Delivery Date並非儲存在EKPO表裡
- document load 和 document ready 的區別
- document load 和document ready的區別?
- 「SAP技術」 SAP MM 已啟用質檢物料建立PO時候'STOCK TYPE'沒有預設為X?
- SAP MM已經轉成PO的採購申請Item依舊可以被刪除?
- SAP MM 一個含有多個賬號分配物件的行專案的PO及其收貨物件
- 高手sos!!! Unable to load document from file...
- SAP MM ME21N 建立PO時報錯 - Net price in CNY becomes too large – 之原因分析
- SAP MM庫存管理
- SAP MM 事務程式碼MRKO觸發的財務憑證不會出現在PO History裡
- SAP MM Purchase Order History CategoryGo
- SAP MM Stock Tables and Stock Types
- SAP MM Vendor Subrange 學習
- SAP MM 審批策略解析
- SAP MM 移動型別型別
- SAP雲平臺的Document Service
- SAP MM 有了採購訂單歷史的PO行專案裡的採購附加費不允許再改了?
- oracle ebs r12 use loadrunner load dataOracle
- SAP MM Movement Type 503的使用
- SAP MM模組常用表總結
- SAP MM Transportation of PR Release Strategy with Classification
- SAP MM模組中的容差
- SAP MM 庫存相關表格
- SAP MM 外包 - 委外加工流程
- 「SAP技術」SAP MM MPN物料的採購初探
- SAP RETAIL 參考PO建立分配表之一AI
- SAP MM 採購預付款管理初探
- SAP MM (Material Management) Training TutorialAI
- SAP MM Vendor Master International Version ActivationAST
- 【轉】SAP MM模組之散裝物料