Error F5 351 – Why do you need the sold-to-party when releasing an invoice to accounting?
When an invoice is released in transaction VF02 to accounting (by clicking on the button with the green flag – or alternatively pressing keys SHIFT + F4) the error message F5 351 (Account & & is blocked for posting) may occur:
The root cause of this error message is in this case, that the sold-to-party partner (in the example: customer number 67 for company code 0001) is blocked for accounting – in transaction FD05 for the involved company code:
However in the invoice the payer and bill-to-party partners are different and not blocked as the sold-to-party:
So why does the creation of the accounting document fail with error message F5 351? What relevance does the sold-to party partner play for accounting in this process?
The reason is explained in the Knowledge Base Article 1592428, which I have created in 2011:
Not only the payer is transferred to accounting as debitor, but also the sold-to-party partner – as the branch (field “BSEG-FILKD“).
Therefore both customer accounts are checked for the existence of a lock set in FD05, and if this is the case then the error message is raised:
As mentioned in the KBA, two alternative solutions exist in this case. Either the block for the sold-to-party in FD05 will have to be removed, or in a user-exit the transfer of the sold-to-party as the branch (FILKD) will have to be prevented.
Thank you for sharing the helpful document. Keep sharing 🙂
Hi Srinu S, Error F5 351 - Why do you need the sold-to-party when releasing an invoice to accounting?
thanks for the positive feed-back and the high rating!
Thank you for this document!
I like the fact that your explanations touch both the functional and technical points!
Could you please comment on the following -
1. In what business scenarios are customers blocked in FD05?
2. In what business scenarios would a client make use of the userexit (as you mentioned)?
Hi TW Typewriter,
thanks, I am pleased that you like the blog.
Also great that you always want to know more 😉 .
Your first question, well it could be that the customer number in question should no longer be used, see for example thread http://scn.sap.com/thread/3213832.
Second question, well I would be surprised, if somebody implements the exit with this idea to clear the sold-to-party, since it is more simple to temporarily remove the block, and since the issue should not occur so often, as well as the drawbacks that then FILKD is no longer available.
In real time business, before a SP is blocked, does the business investigate the number of open order, deliveries and billing documents for this SP?
What about creation of delivery, with a different SH and a blocked SP?
Does creation of delivery, or PGI possible?
Hi TW Typewriter,
yes sure, such an investigation will have to be done and open processes need to be closed and changed, or re-created with the new customer number.
In the SD area the block can be set in transaction VD05:
With the help of this transaction further order creation with the customer number, that should no longer be used, can be prevented.
Thank you for sharing
Good document,thanks for posting
I should learn Debugging.
Suppose if we maintain Branch or Head Office field as B-Payer.Then we wont face any problem?
thank you for the sharing. 🙂
Thanks a lot For sharing your dynamic knowledge on Debugging really it helps a lot
Thanks a lot
Today i took a initiative in learning Debugging.I blocked Sold to party .Created Order-->Delivery-->Billing.
In the VF01 screen ,i entered /h,i was entering F5 for nearly 1 hour i could not get into the right area.Please share us some tips how to debug in this kind of situation.
Hi Pradeep Mani,
in this case the place, where the error is raised in the coding, is known.
Before you start to debug aimlessly, you should go to transaction SE38 enter include LFACSU10, choose source code and execute (F8). Here search for FORM LOCK_CHECK and the line MESSAGE e351 WITH i_account i_bukrs as shown in my screen shot.
Double click directly in the column before this line to set a break point.
Thereafter in debugging, go ahead with pressing F8, the process will stop at the breakpoint.