I'm guilty of pasting in the PO type def into every function when needing to get PO values. :/
Your not the only one and it's not going to break anything...it will certainly work, it just takes more effort and complicates things if you ever change the PO template again in the future. Just pick one BSFN .h file, paste the PO Template typedef (the contents of the po .h file that gets generated from OMW) into the BSFN .h file, remove the po typedef from all other BSFN .h files and instead just put an #include to the one BSFN .h that has the po typedef.
Next time you change that PO typedef instead of having to edit all the BSFN .h files where that typedef is pasted into and re-paste the po typedef, you simply edit the one BSFN .h file, do a full build (which forces a recompile of all C code) and then the compiled code for all the other BSFNs that use that PO typedef will be compiled with the new typedef size.
When I say "comment out" I usually do this as a code cleanup thing when I find a PO typedef pasted multiple times, usually in pristine code. Usually when I change a pristine PO template and pristine code has that po typedef pasted multiple times, since I have to edit those pristine BSFNs anyway so that they have the new PO typedef definition, instead of pasting the new po typedef in all the pristine .h files, I comment out the pristine copy of the po typedef and instead add an #include to the ONE .h file where it is defined. Full build for the full recompile and everything is good to go.
This goes for BSFN function structs (DSTRs) as well, all though in normal practice you almost always have a one-to-one relationship between a DSTR and a function so its not really ever an issue. However, there have been situations where I have created a new function but used the DSTR from some other function. Instead of re-pasting the DSTR typedef into my new BSFN .h file I simply do an #include to the .h file where it is all ready defined.
For example, lets say you want to create a wrapper function to F4211FSEndDoc. You create MyF4211FSEndDocWrapper and use D4200310G as the datastruct so you can do your pre/post processing and pass the lpDS straight through to F4211FSEndDoc. Instead of pasting the typedef for D4200310G into B5642001.h simply do an #include to B4200310.h. That way if Oracle ever changes D4200310G (and by extension B4200310) all you have to do is recompile... you don't even need to change any code - no retrofits needed.