The procedure is correct, but the handle is actually stored in positions 17 and 18 of the dataList structure.
if ( pMsg->method == ATT_READ_BY_TYPE_RSP && Msg->msg.readByTypeRsp.numPairs > 0 )
{
simpleBLECharHdl = BUILD_UINT16( pMsg->msg.readByTypeRsp.dataList[17],
pMsg->msg.readByTypeRsp.dataList[18] );
LCD_WRITE_STRING( "RESULT:", HAL_LCD_LINE_1 );
LCD_WRITE_STRING_VALUE( "->", simpleBLECharHdl, 10, HAL_LCD_LINE_2 );
}