I think it could be done through either workflows or even have them check out/in the document. That way there's a history that they touched it. The only problem with workflows would be changing the people who need to see the document every time there's a new document, but it could be done. You could even go all out and have a "voting" workflow where they actually Change State and it collects all of sign-offs (reads in this case) and only then completes ifself.
Perhaps a more practical way to do this is just to have a simple macro that sets a variable with the names of the users who have been trained or read the SOP. Such a macro could place a "I have read and accept this SOP" button into the Word document (assuming) and then a simple variable search could identify who has and who hasn't read it.
BTW, posts are generally better accepted when the caps lock is turned off.
At a medical company I worked at, they sent the training out via email in which you responded to the email saying you read it. I guess they stored the resonse somewhere.
You can also add voting buttons to an Outlook email with a vote of "Complete". The orignator cans tore the email which tracks everyone's date for completing it.....provided they do so. You can easily see who hasn't though.
In Enterprise PDM, you could do the workflow with a transition to say "Complete" which would record in the history who transitioned it. However this wouldn't be easy to read to get a tally of who has and who hasn't done it. And nothing to say that everyone has done it unless you do a parallel transtiion for each user which could be a pain to maintain as people come and go.
An Add-in could be written to handle it more elegantly.
Some combination of revision,workflow notification and work flow condition might work.
Revision, (loopback to the same state) each person that reads the document sign off by using state change, each assigning a variable that change like a rolling revision,
Rev1=user sign off
condition to make sure that all people have read the document before allowing futher workflow change.
check that Rev4 variable is set in the work flow under transition condition (!="")(not empty)