Hi Sachin,
In my experience, even I have used the same way of calling the FM you mentioned.
However, if you want to use BAPI, you can use BAPI_CTRACDOCUMENT_CREATE. And after this function call, use BAPI_TRANSACTION_COMMIT. And then you can call BAPI_CTRACCONTRACCOUNT_CLR to clear the new document with open item.
I would also want to know if there is any better way of doing it.
Thanks
Bodhisattwa