Vários erros relacionados a DUMPS
Ao me deparar com novas situações, vou acrescentar a este documento de tempos em tempos.
RAISE_EXCEPTION
Um módulo de função gera uma exceção que não foi interceptada por um programa mais alto na pilha. Se isso ocorrer em um programa do cliente, o desenvolvedor precisará manipular a exceção no programa de chamada. Se isso acontecer em um programa SAP, pode ser uma situação inesperada. Muitas vezes é útil para este tipo de falha olhar os valores de sy-msgid e sy-msgno . Você também deve procurar por notas que contenham o ID e o número da mensagem e / ou palavras-chave importantes da seção "Como corrigir o erro".
RFC_ATTACH_GUI_FAILED
Isso geralmente acontece quando um módulo de função habilitado por RFC é executado, que então faz algo conectado ao manuseio de telas. Como não tem tela, falha. Isso também pode acontecer se o SAPGui (ou componentes dele, como um BEX) tiver um problema ou estiver instalado incorretamente.
LOAD_PROGRAM_LOST
O programa que você estava executando foi alterado enquanto você estava executando. Em um BI (e outros ambientes similares) isso acontece com bastante frequência se você estiver em seções do sistema que geram código - como o desenvolvimento de rotinas em transformações. Não há muito a fazer além de reiniciar a transação que você estava executando. Para evitar isso no RSA1, se você está fazendo um monte de desenvolvimento complicado, é uma boa idéia reiniciar a transação de tempos em tempos.
DBIF_RSQL_SQL_ERROR
Indica um problema ocorrido no banco de dados. Você pode encontrar mais informações no log do sistema via SM21. A natureza exata da falha é geralmente vista na seção "Como corrigir o erro". Se isso ocorrer no código SAP standard, pode haver uma nota corretiva. Ele pode estar conectado com a configuração do banco de dados, portanto, se a causa não for óbvia (como um SQL dinâmico malformado de um de seus próprios programas), talvez valha a pena conversar com sua equipe de base.
MESSAGE_TYPE_X
Se esta mensagem aparecer, significa que o programa encontrou uma situação que simplesmente não sabia o que fazer. Na seção "Análise de erro", você verá o texto curto e longo da mensagem de erro. Às vezes, o erro indica dados inconsistentes, às vezes, como Rob Dielemans aponta, ele pode ser usado deliberadamente durante o processo de desenvolvimento.
Se, durante o desenvolvimento, você simplesmente quer saber se uma determinada parte do código é executada (geralmente em segundo plano, como fluxo de trabalho), você apenas codifica uma mensagem do tipo X com alguns valores, como sy-uname ou outra variável. Essa é uma maneira muito boa de descobrir exatamente o valor de um parâmetro quando as diferenças podem ocorrer na depuração.
ASSIGN_TYPE_CONFLICT
O mais provável é um erro de programação. Esta mensagem indica que está ocorrendo um ASSIGN que está indo para um símbolo de campo digitado incorretamente. Verifique o extrato de código-fonte para ver exatamente onde o problema ocorre e verifique cuidadosamente se a digitação do objeto corresponde.
OBJECTS_OBJREF_NOT_ASSIGNED_NO
Foi feita uma tentativa de acessar um objeto (o tipo de classe é fornecido), que não foi instanciado. O mais provável é um erro de programação.
TSV_TNEW_PAGE_ALLOC_FAILED e MEMORY_NO_MORE_PAGING
Isso indica que seu processo ficou sem memória. Isso pode ser um problema de programação - verifique o tamanho das tabelas internas e a quantidade de dados que você está selecionando. Talvez haja um loop eterno que apenas continua adicionando a uma tabela. Pode ser um problema de hardware - que simplesmente não há memória suficiente disponível. Esse tipo de erro pode ser difícil de rastrear, já que o local onde a memória está realmente esgotada pode variar. “O que você pode fazer” mostra a quantidade de memória dos vários tipos que estavam disponíveis. Pode haver informações na seção “Análise de erros”, que mostra exatamente qual tabela interna não pode mais ser esticada para conter mais dados.
UNCAUGHT_EXCEPTION
Este é o equivalente orientado a objetos de RAISE_EXCEPTION . Isso significa que uma exceção baseada em classe foi levantada em um método / módulo de função / formulário que não foi pego mais alto. Geralmente isso indica um erro de programação. Eu vi tentativas de corrigir isso, usando CATCH cx_root e, em seguida, continuando o processamento. Essa é uma maneira muito ruim de corrigir o erro, já que ele simplesmente ignora a causa da exceção. Ignorar uma exceção como essa é como ignorar a sub-regra não-zero.
COMPUTE_INT_ZERODIVIDE
Exatamente o que diz - foi feita uma tentativa de dividir por zero. Isso é um erro de dados ou programação. Na verdade, é sempre um erro de programação, uma vez que qualquer divisão deve sempre verificar se o denominador é zero e corrigir uma condição de erro, se for.
RFC_NO_AUTHORITY
Simples um presente. O usuário que tentou executar um módulo de função habilitado por RFC, via RFC, não foi autorizado via objeto de autorização S_RFC para executar o módulo de função. O nome do módulo de função está no texto curto. O nome do ID do usuário está na seção “O que aconteceu?”.
TEMPO ESGOTADO
Há uma configuração básica que define um limite para o tempo de execução de uma transação ou relatório, geralmente quinze minutos. Se um processo de diálogo exceder esse limite, o kernel o localizará e interromperá o programa com um dump de TIME_OUT. Causas comuns são:
- Usuário selecionando dados em excesso - como todas as empresas ou todas as áreas de controle.
- Um erro de programação resultando em um loop infinito
- Programação ineficiente. Por exemplo, usando tabelas STANDARD em vez de HASHED ou SORTED, faz loops dentro de loops, selecionando os mesmos dados novamente e novamente, etc.
A solução comum é estender o tempo de execução permitido. No entanto, esse deve ser o último recurso, pois só corrige o sintoma, não a causa raiz e, conforme os volumes de dados aumentam, é provável que você atinja o novo limite eventualmente. É muito melhor consertar o programa. Quando os usuários selecionam muitos dados, por exemplo, a tela de seleção pode ser ajustada para evitar isso. Se uma seleção ampla for necessária, talvez o programa possa ser executado em segundo plano e, se necessário, preencher uma tabela de banco de dados que possa ser relatada.
Nenhum comentário:
Postar um comentário