I'm not sure if what type of database you are using, but I believe that you probably can use something like:
select * --you probably should narrow this down instead of using a *
from (table) OM
inner join (table) OL on OM.ORDER = OL.ORDER
inner join (table) C on OM.COMPANY = C.COMPANY
inner join (table) OSD on OSD.ORDER = OL.ORDER
and OSD.LINE = OL.LINE
and OSD.REVISION = OL.REVISION
and OSD.DIM = OSDD.DIM
inner join (table) OSDD on OSDD.SHAPE = OL.SHAPE
This is off the top of my head and not tested, but the idea is that it would show all of the records from OM, OL, C, OSD, and OSDD where it found matches. since you are not using a left join on OSD or OSDD you should not have any null rows.
However you could always change those to left outer joins like:
select * --you probably should narrow this down instead of using a *
from (table) OM
inner join (table) OL on OM.ORDER = OL.ORDER
inner join (table) C on OM.COMPANY = C.COMPANY
left outer join (table) OSD on OSD.ORDER = OL.ORDER
and OSD.LINE = OL.LINE
and OSD.REVISION = OL.REVISION
and OSD.DIM = OSDD.DIM
left outer join (table) OSDD on OSDD.SHAPE = OL.SHAPE
This would give you all rows from OM, OL, and C and only the rows from OSD and OSDD where it found a match. Then you have a number of options to suppress the rows you do not wish to see such as using the he suppress formula in the section expert as rexem suggested.
Hope this helps.