This error annoyed me for a whole week. We have only one formula set up in 2004, and there are a modifier for different OU, how come the error never occured these years. The formula has 2 steps 1 and 2. the formula is quite simple, 1 * 2. According to metalink, we can use a NVL as workaround. So I created a step 3 as 'numeric constant' and componet = 0, then change the formula to NVL(1*2,3). interestingly Oracle consider any number in this formula as a step number instead a real number, so it didn't work as NVL(1*2,0) , even if I use NVL(1*2,'0') didn't work. That's why I have to create an extra step.
But after looking into the modifier and formular feature in oracle QP documentation, I realized that the formular may be used in modifier and thus I select out all the modifier using this formular
select *from qp_list_lines where price_by_formula_id is not null
then I get all the qp_list_headers based on above lines.
Fortunately, I found the trouble maker. One functional guy create a testing modifer using this formular without creating any list qualifier or line qualifier thus this modifier affected all OUs.
Finally this is solved. Later on if I have time, I'd better going through the QP document to get a deep understanding of Oracle advanced pricing.