Isso é muito simples... significa que nenhum resultado foi retornado da sua consulta. Você sempre tem que codificar defensivamente e verificar se o array Rows tem algum item antes de tentar indexá-lo. Algo como:
if (dt.Rows.Count > 0)
soptype = dt.Rows[0]["SOPTYPE"].ToString();
else
somethingWentWrong();