This talk from Decipher is something you may really want to look at: on minute 22:00 Inner Transactions are used to create an ASA.
This is a PyTEAL code snippet from the talk:
appAddr = Global.current_application_address()
Seq(
InnerTxnBuilder.Begin(),
InnerTxnBuilder.SetFields(
{
TxnField.type_enum: TxnType.AssetConfig,
TxnField.config_asset_name: Bytes("PyTEAL Coin"),
TxnField.config_asset_unit_name: Bytes("PyTEAL"),
TxnField.config_asset_url: Bytes("https://pyteal.readthedocs.io/"),
TxnField.config_asset_decimals: Int(6),
TxnField.config_asset_total: Int(800_000_000),
TxnField.config_asset_manager: appAddr,
}
),
InnerTxnBuilder.Submit(), # create a PyTEAL Coin asset
App.globalPut(Bytes("PyTealCoinId"), InnerTxn.created_asset_id()) # remember the asset ID
)