加入SY项目不到一周,就被在毫无准备的情况下被指派去参与一个SRM与SAP系统的接口项目里,参与这个需求里预制发票在SRM与SAP系统之间数据传递的场景梳理。要从技术的角度弄清楚各个场景下从SRM系统传入SAP系统,以及从SAP系统回传到SRM系统的数据字段列表。这个需求里最复杂的场景是业务人员在SRM系统上发起预制发票申请,经过审批后,通过接口传入SAP系统,在SAP系统里创建预制发票,然后回传到SRM系统;另外业务人员可能会在SRM系统里对于已经审批过的预制发票申请做修改,这个修改也要通过接口传入SAP系统。这2个场景,SAP都要接受从SRM系统传过来的数据。
我需要与SRM系统运维项目组同行沟通,对字段,即是告诉SRM同事这2个场景里需要传递哪些参数到SAP系统里来。笔者参与的项目里很少使用预制发票功能,几年前的一个跨国企业运维项目里有用到,但是我们只是运维,并没有参与功能实现。所以这个东东对于我,还是比较新的一个东东。为了应付工作需要,并且是迫切的需求,笔者上网查资料,得到了如下的一片文字,对于笔者很有帮助,大大的减少了笔者研究与学习的时间。
SAP
MM BAPI_INCOMINGINVOICE_PARK - Invoice Verification: Park Incoming
Invoice
Functionality
You
can use this method to park incoming invoices.
When
header data is transferred, you use the field INVOICE_IND to determine whether the system generates
a credit memo or an invoice. If you leave the field initial, the system generates a credit memo. If you
enter X, the system generates an
invoice.
You
use this method if information on posting an invoice document is missing in the
invoice document. The balance can be a value other than zero. As in the online
transaction, the following updates take place: for example, informative PO
history, advance tax return, index for checks re duplicate invoices, open
creditor items from parked documents, log of document changes.
You
can use this method to:
-
Park
invoices with multiple account assignment
-
Change
and park invoice account assignments
-
Park
invoices for blanket purchase orders (see also the documentation for the
function module BAPI_INCOMINGINVOICE_CREATE)
-
Park
invoices for purchase orders with planned delivery costs
-
Park
invoices with unplanned delivery costs
-
Park
subsequent credits and debits
-
Use
document types with external number ranges
-
Park
invoices with withholding tax
-
Park
invoices with several creditor lines and different methods and terms of
payment
-
Park
invoices for purchase orders for external services
-
Park
invoices with G/L account postings
-
Park
invoices with material account postings
-
Park
invoices for a one-time supplier
-
Park
invoices with a different payee
-
Create
and post provisional/differential invoices and final invoices in the context of
differential invoicing
(See also documentation for function module BAPI_INCOMINGINVOICE_CREATE (Invoice
Verification: Post Incoming Invoice))
Constraints
You
cannot post invoices for returns orders
The
following fields in Financial Accounting are not passed on:
-
ISR
subscriber number (ISR = inpayment slip with reference number)
Notes
The
following authorization object is checked with activity 77:
-
M_RECH_WRKPlant
authorization for entering incoming invoices
Input
parameters
You
transfer the header data of the incoming invoice using the structure HeaderData.
The
tables ItemData and AccountingData contain the item data of the incoming
invoice. The TaxData table contains the tax
information for the incoming invoice.
The GlAccountData table contains data for posting
to G/L accounts, and the MaterialData table
contains data for posting to material accounts.
You
can use the WithTaxData table to pass on
withholding tax information.
You
can use the VendorItemSplitData table to
distribute the gross amount among several vendor line items with different
methods and terms of payment.
Output
parameters
The
document number of the invoice document and the fiscal year are returned as key
fields of the incoming invoice.
Return
messages
Messages
are returned in the Return parameter. The parameter documentation shows
the return codes and their meanings.
Further
information
Example:
Incoming Invoice
This
example shows which header data you can park in the table HeaderData and which item data you can park in the
table ItemData.
Purchase
Order: 10 pc of material A @ 10 USD
Goods receipt: 10 pc of material
A
For
this purchase order, you receive an incoming invoice referencing PO number
4500007491, PO item 10, for a quantity of 10 pc of material A and an amount of
116 USD incl. 16% VAT. You enter the following data:
HeaderData
table
-
INVOICE_IND
(invoice/credit memo): X
-
DOC_DATE
(document date): 20.05.2000
-
PSTNG_DATE
(Posting date): 23.05.2000
-
COMP_CODE
(company code): 1000
-
GROSS_AMOUNT
(Gross amount): 116,00
-
CURRENCY
(currency key): USD
-
CALC_TAX_IND
(calculate tax): X
ItemData
table
-
INVOICE_DOC_ITEM
(Invoice document item): 00001
-
PO_NUMBER
(purchase order number): 4500007491
-
PO_ITEM
(Purchase order item): 00010
-
ITEM_AMOUNT
(Item amount): 100
-
PO_UNIT
(Unit of measure): pc
For
more information, see the parameter documentation for the HeaderData and ItemData tables.
Example:
Incoming invoice with foreign currency, GR-based invoice verification, and tax
information
This
example specifies the header data that you need to enter in the HeaderData table, the item data that you need to
enter in the Itemdata table, and the tax
information that you need to enter in the TaxDatatable, in order to park an invoice in a
foreign currency.
Purchase
Order: 10 pc of material A @ 10.00 USD
Goods receipt 1: 4 pc of material
A
Goods receipt 2: 6 pc of material A
For
this purchase order, you receive an incoming invoice referencing PO no.
4500007505, PO item 10, goods receipt document 50010095, 2000, item 1. A
quantity of 4 pc of material A and a gross amount of 46.60 USD and 16% tax (6.60
USD) is invoiced. You enter the following data:
HeaderData
table
-
INVOICE_IND
(invoice/credit memo): X
-
DOC_DATE
(document date): 20.05.2000
-
PSTNG_DATE
(Posting date): 23.05.2000
-
COMP_CODE
(company code): 1000
-
CURRENCY
(currency key): USD
-
GROSS_AMOUNT
(Gross amount): 46,60
ItemData
table
-
INVOICE_DOC_ITEM
(Invoice document item): 00001
-
PO_NUMBER
(purchase order number): 4500007505
-
PO_ITEM
(Purchase order item): 00010
-
REF_DOC
(GR document): 50010095
-
REF_DOC_YEAR
(fiscal year of current period): 2000
-
REF_DOC_ITEM
(Item in a GR document): 1
-
ITEM_AMOUNT
(Item amount): 40,00
-
PO_UNIT
(Unit of measure): pc
TaxData
table
-
TAX_AMOUNT
(tax amount in document currency): 6,60
For
more information, see the parameter documentation for the HeaderData, ItemData,
and TaxData tables.
Example:
Change account assignments and add unplanned ones
This
example shows which header data you enter in the HeaderData table, which item data you enter in the ItemData table, and which account assignment
data you enter in the AccountingData table in
order to be able to change account assignments for an incoming invoice. For you
to be able to change account assignments, a non-valuated goods receipt or no
goods receipt must exist. GR-based invoice verification takes place.
Purchase
Order: 300 pc of material A @ 1.00 USD
Goods receipt: 300 pc of material
A
For
this purchase order with multiple account assignments, you receive an incoming
invoice referencing PO number 4500006846, PO item 10, GR document 50008849,
2000, item 1. The quantity invoiced is 100 pc of material A, for a gross amount
of 116.00 USD including 16% VAT. You want to change the planned account
assignment for the second account assignment object and add an unplanned account
assignment. You enter the following data:
HeaderData
table
-
INVOICE_IND
(invoice/credit memo): X
-
DOC_DATE
(document date): 05.08.2000
-
PSTNG_DATE
(Posting date): 08.08.2000
-
COMP_CODE
(company code): 1000
-
CURRENCY
(currency key): USD
-
GROSS_AMOUNT
(Gross amount): 17,40
-
CALC_TAX_IND
(Automatically calculate tax): X
-
PMNTTRMS
(Payment terms key): 0001
ItemData
table
-
INVOICE_DOC_ITEM
(Invoice document item): 00001
-
PO_NUMBER
(purchase order number): 4500006846
-
PO_ITEM
(Purchase order item): 00010
-
REF_DOC
(GR document): 500008849
-
REF_DOC_YEAR
(fiscal year of current period): 2000
-
REF_DOC_ITEM
(Item in a GR document): 1
-
ITEM_AMOUNT
(Item amount): 100
-
PO_UNIT
(Unit of measure): pc
AccountingData
table
Line
1: Change second account assignment item
-
INVOICE_DOC_ITEM
(Document item in invoice document): 0001
-
SERIAL_NO
(Serial number for the account assignment): 02
-
ITEM_AMOUNT
(Amount in document currency): 10,00
-
PO_UNIT
(purchase order unit): pc
-
GL_ACCOUNT
(G/L account number): 890000
-
COSTCENTER
(Cost center): 1200
Line
2: Add unplanned account assignment
-
INVOICE_DOC_ITEM
(Document item in invoice document): 0001
-
XUNPL
(Unplanned account assignment from Invoice Verification): X
-
ITEM_AMOUNT
(Amount in document currency): 5,00
-
PO_UNIT
(purchase order unit): pc
-
GL_ACCOUNT
(G/L account number): 890000
-
COSTCENTER
(Cost center): 1200
For
more information, see the parameter documentation for the tables
HeaderData, ItemData and AccountingData.
Example:
Incoming invoice with planned delivery costs
This
example shows the header data that you need to enter in the HeaderData table, the item data that you need to
enter in the ItemData table, and the tax
information that you need to enter in table TaxData to create an invoice containing planned
delivery costs.
Purchase
Order: 100 pc of material A @ 1.00 USD
Goods receipt: 100 pc of material
A
For
this purchase order, you receive an incoming invoice referencing PO no.
4500006986, PO item 10, for a quantity of 100 pc of material A and an amount of
136.00 USD incl. 16% VAT and 20.00 USD planned delivery costs. You enter the
following data:
HeaderData
table
-
INVOICE_IND
(invoice/credit memo): X
-
DOC_DATE
(document date): 10.08.2000
-
PSTNG_DATE
(Posting date): 12.08.2000
-
COMP_CODE
(company code): 1000
-
CURRENCY
(currency key): USD
-
GROSS_AMOUNT
(Gross amount): 136,00
ItemData
table
Line
1: Entry of PO item
-
INVOICE_DOC_ITEM
(Invoice document item): 00001
-
PO_NUMBER
(purchase order number): 4500006986
-
PO_ITEM
(Purchase order item): 00010
-
ITEM_AMOUNT
(Item amount): 100,00
-
PO_UNIT
(Unit of measure): pc
Line
2: Entry of planned delivery costs
-
INVOICE_DOC_ITEM
(Invoice document item): 00002
-
PO_NUMBER
(purchase order number): 4500006986
-
PO_ITEM
(Purchase order item): 00010
-
ITEM_AMOUNT
(Item amount): 20,00
-
PO_UNIT
(Unit of measure): pc
-
COND_TYPE
(condition type): FRB1
TaxData
table
-
TAX_AMOUNT
(tax amount in document currency): 16,00
For
more information, see the parameter documentation for the HeaderData, ItemData,
and TaxData tables.
Example:
Incoming invoice with withholding tax
This
example shows which header data you can enter in the HeaderData table, which item data you can enter in
the Itemdata table, and which withholding tax
information you can enter in the WithTaxData table, in order to park an incoming invoice with withholding tax.
Purchase
Order: 10 pc of material A @ 10.00 USD
Goods receipt: 10 pc of material
A
For
this purchase order, you receive an incoming invoice referencing PO no.
4500007505, PO item 10, goods receipt document 50010095, 2000, item 1. A
quantity of 10 pc and a gross amount of 100.00 USD is invoiced. You have to pay
10% withholding tax on the gross amount. Enter the following data:
HeaderData
table
-
INVOICE_IND
(invoice/credit memo): X
-
DOC_DATE
(document date): 20.05.2000
-
PSTNG_DATE
(Posting date): 23.05.2000
-
COMP_CODE
(company code): WT01
-
CURRENCY
(currency key): USD
-
GROSS_AMOUNT
(Gross amount): 100,00
ItemData
table
-
INVOICE_DOC_ITEM
(Invoice document item): 00001
-
PO_NUMBER
(purchase order number): 4500007505
-
PO_ITEM
(Purchase order item): 00010
-
REF_DOC
(GR document): 50010095
-
REF_DOC_YEAR
(fiscal year of current period): 2000
-
REF_DOC_ITEM
(Item in a GR document): 1
-
ITEM_AMOUNT
(Item amount): 100,00
-
QUANTITY
(Quantity): 10,00
-
PO_UNIT
(Unit of measure): pc
WithTaxData
table
-
SPLIT_KEY
(grouping key for splitting withholding tax): 0001
-
WI_TAX_TYPE
(indicator for withholding tax type): R1
-
WI_TAX_CODE
(Withholding tax indicator): 01
-
WI_TAX_BASE
(Withholding tax base amount): 100
-
WI_TAX_AMT
(withholding tax amount in document currency): 10,00
For
more information, see the parameter documentation for the HeaderData, ItemData and WithTaxData tables.
Example:
Incoming invoice with amount split
This
example shows which header data you enter in the HeaderData table, which item data you enter in the Itemdata table, and which information you enter
in the VendorItemSplitData table, in order to
generate an incoming invoice with an amount split.
Purchase
Order: 10 pc of material A @ 10.00 USD
Goods receipt: 10 pc of material
A
For
this purchase order, you receive an incoming invoice referencing PO no.
4500007505, PO item 10, goods receipt document 50010095, 2000, item 1. A
quantity of 10 pc and a gross amount of 100.00 USD is invoiced. You want to
distribute the gross amount among two creditor lines. 40% of the gross amount is
to be paid immediately by check, and the remaining 60% of the gross amount is to
be paid within 14 days subject to 3% cash discount. You enter the following
data:
HeaderData
table
-
INVOICE_IND
(invoice/credit memo): X
-
DOC_DATE
(document date): 20.05.2000
-
PSTNG_DATE
(Posting date): 23.05.2000
-
COMP_CODE
(company code): 0001
-
CURRENCY
(currency key): USD
-
GROSS_AMOUNT
(Gross amount): 100,00
ItemData
table
-
INVOICE_DOC_ITEM
(Invoice document item): 00001
-
PO_NUMBER
(purchase order number): 4500007505
-
PO_ITEM
(Purchase order item): 00010
-
REF_DOC
(GR document): 50010095
-
REF_DOC_YEAR
(fiscal year of current period): 2000
-
REF_DOC_ITEM
(Item in a GR document): 1
-
ITEM_AMOUNT
(Item amount): 100,00
-
QUANTITY
(Quantity): 10,00
-
PO_UNIT
(Unit of measure): pc
VendorItemSplitData
table
Vendor
line item 1
-
SPLIT_KEY
(Grouping key for splitting creditor line): 0001
-
SPLIT_AMOUNT
(partial invoice amount in document currency): 40,00
-
PYMT_METH
(payment method): S
-
PMNTTRMS
(Payment terms key): 0001
Vendor
line item 2
-
SPLIT_KEY
(Grouping key for splitting creditor line): 0002
-
SPLIT_AMOUNT
(partial invoice amount in document currency): 60,00
-
PYMT_METH
(payment method): U
-
PMNTTRMS
(Payment terms key): 0003
For
more information, see the parameter documentation for the HeaderData, ItemData and VendorItemSplitData tables.
Example:
Incoming invoice with G/L and material account posting.
This
example shows you which header data you must enter in the HeaderData table, which item data you enter in the ItemData table, which G/L account information
you enter in the GlAccountData table, and which
material account information you enter in the MateralData table in order to park an incoming
invoice.
You
receive an invoice referencing PO no. 4500006846, PO item 10. A quantity of 100
pc of material A for a gross amount of 150.80 USD including 16% VAT is invoiced.
This includes a G/L account posting of 10 USD to account 400000 in company code
1, and a material account posting of 20 USD to the material MAT01. You enter the
following data:
HeaderData
table
-
INVOICE_IND
(post invoice/credit memo): X
-
DOC_DATE
(document date): 05.08.2000
-
PSTNG_DATE
(Posting date): 08.08.2000
-
COMP_CODE
(company code): 1000
-
CURRENCY
(currency key): USD
-
GROSS_AMOUNT
(Gross amount): 150,80
-
CALC_TAX_IND
(Automatically calculate tax): X
-
PMNTTRMS
(Payment terms key): 0001
ItemData
table
-
INVOICE_DOC_ITEM
(Invoice document item): 00001
-
PO_NUMBER
(purchase order number): 4500006846
-
PO_ITEM
(Purchase order item): 00010
-
ITEM_AMOUNT
(Item amount): 100
-
PO_UNIT
(Unit of measure): pc
GlAccountData
table
-
INVOICE_DOC_ITEM
(Document item in invoice document): 00001
-
GL_ACCOUNT
(G/L account): 400000
-
ITEM_AMOUNT
(Item amount): 10,00
-
DB_CR_IND
(Debit/credit indicator): S
-
COMP_CODE
(company code): 0001
-
COSTCENTER
(Cost center): 1
MaterialData
table
-
INVOICE_DOC_ITEM
(Document item in invoice document): 0001
-
MATERIAL
(Material): MAT01
-
PLANT
(Valuation area): 0001
-
DB_CR_INP
(Debit/credit indicator): S
-
ITEM_AMOUNT
(Item amount): 10,00
-
PO_UNIT
(purchase order unit): pc
For
more information, see the parameter documentation for the tables
HeaderData, ItemData, GlAccountData and MaterialData
Example:
Incoming invoice for a purchase order for external services and service-based
invoice verification
This
example shows which header data you must enter in the HeaderData table, which item data you must enter in
the ItemData table, and which account
assignment data you must enter in the AccountingData table in order to enter and post an
incoming invoice.
You
receive an invoice referencing PO no. 4500000191, PO item 10. The invoice is for
two services A and B, each with a quantity of six service units. Service A has a
gross amount of 580 USD incl. 16% VAT. Service B has 812 USD including 16% VAT.
50% of service A was assigned to each of the cost centers 1000 and 2000. 50% of
service B was assigned to each of the cost centers 1000 and 3000. The service
acceptance is performed jointly for both services with the service entry sheet
number 1000000022. The account assignments cannot be changed. You enter the
following data:
HeaderData
table
-
INVOICE_IND
(post invoice/credit memo): X
-
DOC_TYPE
(Document type): RE
-
DOC_DATE
(document date): 10.01.2002
-
PSTNG_DATE
(Posting date): 10.01.2002
-
COMP_CODE
(company code): 0001
-
CURRENCY
(currency key): USD
-
GROSS_AMOUNT
(Gross amount): 1392,00
-
CALC_TAX_IND
(Automatically calculate tax): X
-
PMNTTRMS
(Payment terms key): 0001
ItemData
table
First
entry for service A:
-
INVOICE_DOC_ITEM
(Invoice document item): 000001
-
PO_NUMBER
(purchase order number): 4500000191
-
PO_ITEM
(Purchase order item): 00010
-
ITEM_AMOUNT
(Item amount): 250,00
-
PO_UNIT
(Unit of measure): SU
-
SHEET_NO
(Entry sheet number): 1000000022
-
SHEET_ITEM
(Line number) : 10
Second
entry for service A:
-
INVOICE_DOC_ITEM
(Invoice document item): 000002
-
PO_NUMBER
(purchase order number): 4500000191
-
PO_ITEM
(Purchase order item): 00010
-
ITEM_AMOUNT
(Item amount): 250,00
-
PO_UNIT
(Unit of measure): SU
-
SHEET_NO
(Entry sheet number): 1000000022
-
SHEET_ITEM
(Line number) : 10
First
entry for service B:
-
INVOICE_DOC_ITEM
(Invoice document item): 000003
-
PO_NUMBER
(purchase order number): 4500000191
-
PO_ITEM
(Purchase order item): 00010
-
ITEM_AMOUNT
(Item amount): 350,00
-
PO_UNIT
(Unit of measure): SU
-
SHEET_NO
(Entry sheet number): 1000000022
-
SHEET_ITEM
(Line number) : 20
Second
entry for service B:
-
INVOICE_DOC_ITEM
(Invoice document item): 000004
-
PO_NUMBER
(purchase order number): 4500000191
-
PO_ITEM
(Purchase order item): 00010
-
ITEM_AMOUNT
(Item amount): 350,00
-
PO_UNIT
(Unit of measure): SU
-
SHEET_NO
(Entry sheet number): 1000000022
-
SHEET_ITEM
(Line number) : 20
AccountingData
table
First
account assignment for service A:
-
INVOICE_DOC_ITEM
(Document item in invoice document): 000001
-
SERIAL_NO
(Serial number for the account assignment): 01
-
ITEM_AMOUNT
(Amount in document currency): 250,00
-
PO_UNIT
(purchase order unit): SU
Second
account assignment for service A:
-
INVOICE_DOC_ITEM
(Document item in invoice document): 000002
-
SERIAL_NO
(Serial number for the account assignment): 02
-
ITEM_AMOUNT
(Amount in document currency): 250,00
-
PO_UNIT
(purchase order unit): SU
First
account assignment for service B:
-
INVOICE_DOC_ITEM
(Document item in invoice document): 000003
-
SERIAL_NO
(Serial number for the account assignment): 01
-
ITEM_AMOUNT
(Amount in document currency): 350,00
-
PO_UNIT
(purchase order unit): SU
Second
account assignment for service B:
-
INVOICE_DOC_ITEM
(Document item in invoice document): 000004
-
SERIAL_NO
(Serial number for the account assignment): 03
-
ITEM_AMOUNT
(Amount in document currency): 350,00
-
PO_UNIT
(purchase order unit): SU
For
more information, see the parameter documentation for the tables
HeaderData, ItemData,
and AccountingData.
Example:
Incoming invoice for a one-time supplier
This
example shows how to proceed in order to enter and post an invoice for a
one-time supplier.
It
is not necessary to populate the AddressData table. If you do not enter any data in the AddressData table, the address data for the one-time
supplier from the purchase order is adopted 1:1 in the invoice.
If
you use the AddressData table for the data
transfer, the address data for the one-time supplier is read from the purchase
order into the invoice and is then overwritten or supplemented by the fields in
the AddressData table.
In
the purchase order for the one-time supplier, the name is 'SAP AG', the postal
code is '60000', and the street and building number are 'Neurottstrasse 16'. You
receive an invoice with the one-time supplier address as follows: Name 'SAP AG',
postal code '69190', and place 'Walldorf'. Enter the following data:
AddressData
table
ACC_1_TIME
(One-time supplier indicator): X
NAME
(Name): SAP AG
POSTL_CODE
(Postal code): 69190
CITY
(Place): Walldorf
The
invoice is posted with the following one-time supplier address data: Name 'SAP
AG', street and building number 'Neurottstrasse 16', postal code '69190', place
'Walldorf'.
For
more information, see the parameter documentation for the table
AddressData.
Example:
Incoming invoice for different payee
This
example shows you which address data you must enter in the AddressData table in order to enter and post an
invoice for a different payee.
You
receive an invoice for the different payee with the name 'SAP AG', postal code
'69190', place 'Walldorf', bank number '38070724', and account number '4711'.
Enter the following data:
AddressData
table
ACC_1_TIME
(One-time supplier indicator): ' '
NAME
(Name): SAP AG
POSTL_CODE
(Postal code): 69190
CITY
(Place): Walldorf
BANK_NO
(Bank number): 38070724
BANK_ACCT
(Bank account number): 4711
For
more information, see the parameter documentation for table AddressData.
Example:
Provisional invoice/differential invoice
For
an example of how to create invoices within differential invoicing, see the
documentation for function module BAPI_INCOMINGINVOICE_CREATE (Invoice
Verification: Post Incoming Invoice).
https://www.consolut.com/nc/en/s/sap-ides-access/d/s/doc/F-BAPI_INCOMINGINVOICE_PARK.html
2018-05-25 整理于上海滩