另外還有一個BAPI:BAPI_PR_CREATE,大體賦值以下api
文本版代碼:ide
*&---------------------------------------------------------------------*函數
*& Report ZLM_TEST_028ui
*&3d
*&---------------------------------------------------------------------*orm
*&blog
*&圖片
*&---------------------------------------------------------------------*get
REPORT zlm_test_028.input
DATA: BEGIN OF gt_data1 OCCURS 0,
bsart TYPE string, "憑證類型
bnfpo TYPE string, "項目
* KNTTP TYPE STRING, "科目分配類別
matnr TYPE string, "商品代碼
* TXZ01 TYPE STRING, "短文本
menge TYPE string, "數量
meins TYPE string, "單位
eeind TYPE string, "交貨日期
* MATKL TYPE STRING, "物料組
werks TYPE string, "工廠
ekgrp TYPE string, "採購組
afnam TYPE string, "申請者
bednr TYPE string, "需求跟蹤號
sakto TYPE string, "總賬科目
kostl TYPE string, "成本中心
anln1 TYPE string, "資產
aufnr TYPE string, "訂單
preis TYPE string, "評估價格
waers TYPE string, "幣種
peinh TYPE string, "價格單位
dispo TYPE string, "MRP控制者
str1 TYPE string,"行項目文本-傳送文本
str2 TYPE string,"行項目文本-預算年度
str3 TYPE string,"行項目文本-資產類別
END OF gt_data1.
DATA: BEGIN OF gt_data OCCURS 0,
bednr TYPE string, "需求跟蹤號
bsart TYPE string, "憑證類型
bnfpo TYPE string, "項目
* KNTTP TYPE STRING, "科目分配類別
matnr TYPE string, "商品代碼
* TXZ01 TYPE STRING, "短文本
menge TYPE string, "數量
meins TYPE string, "單位
eeind TYPE string, "交貨日期
* MATKL TYPE STRING, "物料組
werks TYPE string, "工廠
ekgrp TYPE string, "採購組
afnam TYPE string, "申請者
sakto TYPE string, "總賬科目
kostl TYPE string, "成本中心
anln1 TYPE string, "資產
aufnr TYPE string, "訂單
preis TYPE string, "評估價格
waers TYPE string, "幣種
peinh TYPE string, "價格單位
dispo TYPE string, "MRP控制者
str1 TYPE string,"行項目文本-傳送文本
str2 TYPE string,"行項目文本-預算年度
str3 TYPE string,"行項目文本-資產類別
END OF gt_data.
DATA: BEGIN OF gt_out OCCURS 0,
text(255),
END OF gt_out.
DATA: pr_item LIKE TABLE OF bapiebanc WITH HEADER LINE,
pr_account LIKE TABLE OF bapiebkn WITH HEADER LINE,
pr_item_id LIKE TABLE OF bapiebantx WITH HEADER LINE,
pr_return LIKE TABLE OF bapireturn WITH HEADER LINE.
DATA: l_return LIKE pr_return.
DATA: lv_message(255).
DATA: pr_no TYPE bapiebanc-preq_no.
DATA: bnfpo TYPE bnfpo.
DATA: matnr TYPE matnr.
DATA: pp_file TYPE string.
PARAMETERS:p_file(128) .
AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_file.
PERFORM get_file.
START-OF-SELECTION.
PERFORM get_data.
PERFORM create_pr.
PERFORM write_out.
*&---------------------------------------------------------------------*
*& Form GET_FILE
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM get_file .
CALL FUNCTION 'WS_FILENAME_GET'
EXPORTING
def_filename = p_file
mask = ',*.txt,*.TXT.'
*'',*.xls,*.XLS.'若是讀入txt文件,在後邊就須要用函數
* CALL FUNCTION 'WS_UPLOAD'
mode = 'O'
title = 'File Name'
IMPORTING
filename = p_file
EXCEPTIONS
inv_winsys = 1
no_batch = 2
selection_cancel = 3
selection_error = 4
OTHERS = 5.
pp_file = p_file.
ENDFORM. " GET_FILE
*&---------------------------------------------------------------------*
*& Form GET_DATA
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM get_data .
CALL FUNCTION 'GUI_UPLOAD'
EXPORTING
filename = pp_file
filetype = 'ASC'
has_field_separator = 'X'
* HEADER_LENGTH = 0
read_by_line = 'X'
* DAT_MODE = ' '
* CODEPAGE = ' '
* IGNORE_CERR = ABAP_TRUE
* REPLACEMENT = '#'
* CHECK_BOM = ' '
* VIRUS_SCAN_PROFILE =
* NO_AUTH_CHECK = ' '
* IMPORTING
* FILELENGTH =
* HEADER =
TABLES
data_tab = gt_data1
EXCEPTIONS
file_open_error = 1
file_read_error = 2
no_batch = 3
gui_refuse_filetransfer = 4
invalid_type = 5
no_authority = 6
unknown_error = 7
bad_data_format = 8
header_not_allowed = 9
separator_not_allowed = 10
header_too_long = 11
unknown_dp_error = 12
access_denied = 13
dp_out_of_memory = 14
disk_full = 15
dp_timeout = 16
OTHERS = 17
.
IF sy-subrc <> 0.
CASE sy-subrc.
WHEN 1.MESSAGE 'FILE_OPEN_ERROR ' TYPE 'E'.
WHEN 2.MESSAGE 'FILE_READ_ERROR ' TYPE 'E'.
WHEN 3.MESSAGE 'NO_BATCH' TYPE 'E'.
WHEN 4.MESSAGE 'GUI_REFUSE_FILETRANSFER ' TYPE 'E'.
WHEN 5.MESSAGE 'INVALID_TYPE ' TYPE 'E'.
WHEN 6.MESSAGE ' NO_AUTHORITY' TYPE 'E'.
WHEN 7.MESSAGE 'UNKNOWN_ERROR' TYPE 'E'.
WHEN 8.MESSAGE 'BAD_DATA_FORMAT ' TYPE 'E'.
WHEN 9.MESSAGE 'HEADER_NOT_ALLOWED' TYPE 'E'.
WHEN 10.MESSAGE 'SEPARATOR_NOT_ALLOWED' TYPE 'E'.
WHEN 11.MESSAGE 'HEADER_TOO_LONG ' TYPE 'E'.
WHEN 12.MESSAGE 'UNKNOWN_DP_ERROR' TYPE 'E'.
WHEN 13.MESSAGE ' ACCESS_DENIED ' TYPE 'E'.
WHEN 14.MESSAGE 'DP_OUT_OF_MEMORY ' TYPE 'E'.
WHEN 15.MESSAGE 'DISK_FULL ' TYPE 'E'.
WHEN 16.MESSAGE 'DP_TIMEOUT' TYPE 'E'.
WHEN 17.MESSAGE ' OTHERS ' TYPE 'E'.
WHEN OTHERS.
ENDCASE.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
LOOP AT gt_data1.
MOVE-CORRESPONDING gt_data1 TO gt_data.
APPEND gt_data.
CLEAR: gt_data,gt_data1.
ENDLOOP.
ENDFORM. " GET_DATA
*&---------------------------------------------------------------------*
*& Form CREATE_PR
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM create_pr .
LOOP AT gt_data.
bnfpo = gt_data-bnfpo.
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
EXPORTING
input = bnfpo
IMPORTING
output = bnfpo.
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
EXPORTING
input = gt_data-matnr
IMPORTING
output = matnr.
pr_item-doc_type = gt_data-bsart. "憑證類型
pr_item-preq_item = bnfpo. "項目
* PR_ITEM-ACCTASSCAT = GT_DATA-KNTTP. "科目分配類別
pr_item-material = matnr. "商品代碼
* PR_ITEM-SHORT_TEXT = GT_DATA-TXZ01. "短文本
pr_item-quantity = gt_data-menge. "數量
pr_item-unit = gt_data-meins. "單位
pr_item-deliv_date = gt_data-eeind. "交貨日期
* PR_ITEM-MAT_GRP = GT_DATA-MATKL. "物料組
pr_item-plant = gt_data-werks. "工廠
pr_item-pur_group = gt_data-ekgrp. "採購組
pr_item-preq_name = gt_data-afnam. "申請者
pr_item-trackingno = gt_data-bednr. "需求跟蹤號
pr_item-c_amt_bapi = gt_data-preis. "評估價格
pr_item-currency = gt_data-waers. "貨幣碼
pr_item-price_unit = gt_data-peinh. "價格單位
pr_item-mrp_contr = gt_data-dispo. "MRP控制者
APPEND pr_item.
CLEAR pr_item.
pr_account-preq_item = bnfpo. "項目
pr_account-g_l_acct = gt_data-sakto. "總賬科目
pr_account-cost_ctr = gt_data-kostl. "成本中心
pr_account-asset_no = gt_data-anln1. "資產
pr_account-order_no = gt_data-aufnr. "訂單
pr_account-co_area = 'BELL'.
APPEND pr_account.
CLEAR pr_account.
pr_item_id-preq_item = bnfpo."項目
pr_item_id-text_id = 'B03'.
pr_item_id-text_line = gt_data-str1."行項目文本-傳送文本
APPEND pr_item_id.
CLEAR pr_item_id.
pr_item_id-preq_item = bnfpo."項目
pr_item_id-text_id = 'B07'.
pr_item_id-text_line = gt_data-str2."行項目文本-預算年度
APPEND pr_item_id.
CLEAR pr_item_id.
pr_item_id-preq_item = bnfpo."項目
pr_item_id-text_id = 'B08'.
pr_item_id-text_line = gt_data-str3."行項目文本-資產類別
APPEND pr_item_id.
CLEAR pr_item_id.
AT END OF bednr.
CALL FUNCTION 'BAPI_REQUISITION_CREATE'
* EXPORTING
* SKIP_ITEMS_WITH_ERROR =
* AUTOMATIC_SOURCE = 'X'
IMPORTING
number = pr_no
TABLES
requisition_items = pr_item
requisition_account_assignment = pr_account
requisition_item_text = pr_item_id
* REQUISITION_LIMITS =
* REQUISITION_CONTRACT_LIMITS =
* REQUISITION_SERVICES =
* REQUISITION_SRV_ACCASS_VALUES =
return = pr_return
* REQUISITION_SERVICES_TEXT =
* REQUISITION_ADDRDELIVERY =
* EXTENSIONIN =
.
LOOP AT pr_return WHERE type = 'E' OR type = 'A'.
ENDLOOP.
IF sy-subrc = 0.
CLEAR: lv_message.
CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.
LOOP AT pr_return INTO l_return WHERE type = 'E' .
CONCATENATE lv_message l_return-message ';'
INTO lv_message.
ENDLOOP.
CONCATENATE gt_data-bednr lv_message INTO gt_out-text.
APPEND gt_out.
CLEAR gt_out.
ELSE.
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
EXPORTING
wait = 'X'.
CONCATENATE pr_no '建立成功' INTO gt_out-text.
APPEND gt_out.
CLEAR gt_out.
ENDIF.
FREE pr_item.
FREE pr_account.
FREE pr_item_id.
FREE pr_return.
ENDAT.
ENDLOOP.
ENDFORM. " CREATE_PR
*&---------------------------------------------------------------------*
*& Form WRITE_OUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM write_out .
LOOP AT gt_out.
WRITE: / gt_out-text.
ENDLOOP.
ENDFORM. " WRITE_OUT
*如下爲數據格式(行項目以回車鍵換行,列以TAB分隔):
*ZB 10 100009 10 EA 20100915 D005
*ZB 10 100008 10 EA 20100915 D005s