Introdução
Em alguns casos, pode ser necessário classificar uma tabela interna em ordem ascendente e descendente com base em determinadas colunas para obter uma saída específica. A SAP já forneceu a solução anteriormente. Estou escrevendo esta postagem no blog porque me deparei com uma situação semelhante alguns dias atrás.
Solução
Primeiro de tudo, devemos revisar a sintaxe do comando SORT. Então um pouco de teoria.
SORT <itab> [<orden>] [COMO TEXTO]
[POR <f1> [<orden>] [COMO TEXTO]]... <fn> [<orden>] [COMO TEXTO]].
Se a opção POR não for utilizada, então a tabela interna <itab> será ordenada pela sua chave padrão.
Para definir uma chave de classificação diferente, utilize a opção POR. O sistema classificará o conjunto de dados de acordo com os componentes especificados <f1>... <fn>. Esses campos podem ser de qualquer tipo, incluindo campos do tipo P, I e F, ou tabelas. As opções que você especificar após os campos individuais substituem para esses campos as opções especificadas antes de POR.
Se um critério de classificação não for conhecido até o tempo de execução, você pode configurá-lo dinamicamente escrevendo (<nome>) em vez de <fi>. O campo <nome> contém o nome do campo chave de classificação. Se <nome> estiver vazio no tempo de execução, o sistema o ignora. Se contiver um nome de componente inválido, ocorrerá um erro no tempo de execução.
Você pode especificar a sequência de classificação usando DESCENDENTE ou ASCENDENTE na opção de classificação. O padrão é ascendente.
Sem a opção COMO TEXTO, o sistema classifica os campos de caracteres binariamente e de acordo com sua codificação interna dependente da plataforma. Com a opção COMO TEXTO, o sistema classifica os campos de caracteres alfabeticamente de acordo com o ambiente de texto atual.
Palavra-chave Estável
Permite realizar uma classificação estável, ou seja, a sequência relativa de linhas que não mudam pela classificação não é modificada. Se você não usar a opção ESTÁVEL, a sequência de classificação não será preservada. Se você classificar uma tabela várias vezes pela mesma chave, a sequência das entradas da tabela mudará em cada classificação. No entanto, uma classificação estável leva mais tempo do que uma classificação instável.
Agora, por favor, revise as linhas de código abaixo para mais referência.
Antes de classificar
Depois de classificar
Isso é tudo.
?