Setting the Debug on is always a good idea when you run into something like this. When you are using the intrinsic methods, there are some assumptions made by the framework. In the case of the FillByPrimaryKey, we assume that a primary key has been defined on the BO, for example.
As a side note, there is really no need to create a method to call the intrinsic method. You can direcly call the FillByPrimaryKey and pass it the PK value. If you are going to create a custom method, then you might go ahead and call the FillDataTable method and see if you are having the same problems.
I recommend using an SQLDbCommand and parameterized queries, but just for testing purposes, you can just pass a SELECT statement as well.
this.FillDataTable("SELECT * FROM MyTable WHERE MyPk=123");
See if you get the same response in this scenario. But definitely go through the debug mode as well so we can see what the problem is that you are running into.
Note: Just as a side note, you do not have to provide the pre-qualifying location in .NET (Me or this). If you call the FillByPrimaryKey method it is the same as calling this.FillByPrimeryKey.