If it show items correctly on CA02 then it means it work correctly. When you re-run your program does it read components allocation then?
In item_check and recursive_item_check I do some calculation for multilevel assignment, but if you don't use it then probably you can omit this part.