RE: use of Table.InitValue()
Specifically calling initValue() is a good idea, but there are more detailed explanations in the linked topics.
They usually initialize values which should be populated with a default value, like for SalesTable's Sales status you do not want to have None, but rather the enumeration value which belongs to Open sales order, which is not the first entry for the SalesStatus enum. In that case you'd want to initialize it, and that is done in initValue() call as the first step after the .create() operation on the record buffer. You can also find buffer-based initalization which can be seen as initFromTableName(), to copy over values, like from SalesTable to SalesLine.
TTS block is not required for insert operations, unless you have business logic there that is not for that table in question. TTS block should only be used if you want to roll back the entire section that happens in there in case anything raises an error, so is typically used if you have postings, multiple table inserts, and so on, so you do not leave behind half-baked transactions.