<HTML>
<HEAD> <TITLE>SORT</TITLE> </HEAD> <BODY BGCOLOR="#000000" TEXT="#FFFFFF" LINK="#0099FF" VLINK="#AA0000"> <p align="left">⚠ <b class="titulo">
SORT⚠ </b>
</p>
<P align="left">⚠ <B>
Definicin⚠ </B>
</P>
<p align="left">Ordena una tabla interna. </p>
<p align="left">⚠ <B>
Sintaxis:⚠ </B>
</p>
SORT <tabla> [ <orden> ][ AS TEXT ]
[ BY <campo1> [ <orden> ][ AS TEXT ] ... <campon> [ <orden>][ AS TEXT ] ].
<p>El significado de las clusulas es el siguiente:</p>
<ul>
<li>BY -> Si no la utilizamos la tabla interna es ordenada por la clave estndar. Para definir un criterio de ordenacin distinto a la clave estndar se utiliza la clusula BY- Con la clusula BY los campos se ordenarn de acuerdo con los componentes especificados <campo1> ... <campon>. Estos componentes puede ser de cualquier tipo (incluido tablas). El nmero de campos que se pueden ordenar est restringido a 250. El sistema utiliza las opciones utilizadas antes de BY (<orden> y AS TEXT) como valores por defecto para los campos especificados en BY. Se pueden especificar el criterio de ordenacin en tiempo de ejecucin, utilizando ( <nombre> ) en lugar de <campo>. La variable <nombre> contiene el nombre del componente de la tabla interna. Si la variable <nombre> est vaca, el sistema ignorar el criterio de ordenacin, si contiene un nombre de componente invlido, producir un error en tiempo de ejecucin. Para cualquier campo, componente de una tabla interna, se puede indicar un offset (posicin) y longitud. En <orden> se puede especificar cmo se debe ordenar la tabla, de forma descendente, DESCENDING, o de formas ascendente, ASCENDING,. Por defecto el orden es ascendente.</li> <li>AS TEXT -> Influye en el mtodo de ordenacin para campos alfanumricos. Sin esta opcin, el sistema ordena los campos binariamente, de acuerdo con el sistema donde tengamos el sistema SAP R/3. Con la opcin AS TEXT, el sistema ordena los campos alfanumricos de forma alfabtica. Si especificamos AS TEXT antes de la clusula BY, slo afectar a los campo de tipo C. Si lo especificamos despus de la clusula BY slo podr ser utilizada en campos de tipo C, con lo cual la ordenacin no es estable. Esto quiere decir que lneas con la misma clave de ordenacin no tienen por qu ser ordenadas de la misma forma en distintas ejecuciones. Si no hay suficiente espacio en memoria para ordenar la tabla, el sistema escribe los datos en un fichero externo temporal. El nombre de ese fichero est especificado en el parmetro DIR_SORTTMP del perfil de arranque de SAP.</li>
</ul>
<p>⚠ <b>
Ejemplo:⚠ </b>
</p>
<pre>DATA: ONR(7), DATE TYPE D, POSITION(3) TYPE N,
CUSTOMER(16), PNR(5) TYPE N, NAME(10), UNITS TYPE I, ORDERS TYPE I.
FIELD-GROUPS: HEADER, ORDER, PRODUCT, DATE_FIRST.
INSERT ONR DATE POSITION INTO HEADER. INSERT CUSTOMER INTO ORDER. INSERT PNR NAME UNITS INTO PRODUCT. INSERT DATE ONR POSITION INTO DATE_FIRST. ONR = 'GF00012'. DATE = '19921224'. POSITION = '000'. CUSTOMER = 'Good friend (2.)'. EXTRACT ORDER. ADD 1 TO POSITION. PNR = '12345'. NAME = 'Screw'. UNITS = 100. EXTRACT PRODUCT. ADD 1 TO POSITION. PNR = '23456'. NAME = 'Nail'. UNITS = 200. EXTRACT PRODUCT. ONR = 'MM00034'. DATE = '19920401'. POSITION = '000'. CUSTOMER = 'Moneymaker'. EXTRACT ORDER. ADD 1 TO POSITION. PNR = '23456'. NAME = 'Nail'. UNITS = 300. EXTRACT PRODUCT. ADD 1 TO POSITION. PNR = '34567'. NAME = 'Hammer'. UNITS = 4. EXTRACT PRODUCT. ONR = 'GF00011'. DATE = '19921224'. POSITION = '000'. CUSTOMER = 'Good friend (1.)'. EXTRACT ORDER. ADD 1 TO POSITION. PNR = '34567'. NAME = 'Hammer'. UNITS = 5. EXTRACT PRODUCT. SORT BY DATE_FIRST. LOOP.AT ORDER. WRITE: /, / DATE, ONR, POSITION, CUSTOMER, 'ordered:'. ENDAT. AT PRODUCT. WRITE: / DATE, ONR, POSITION, PNR, NAME, UNITS. ENDAT.
ENDLOOP.</pre>
<p>El resultado en pantalla sera:</p> <pre>01041992 MM00034 000 Moneymaker ordered: 01041992 MM00034 001 23456 Nail 300 01041992 MM00034 002 34567 Hammer 4 </pre> <pre>24121992 GF00011 000 Good friend (1.) ordered: 24121992 GF00011 001 34567 Hammer 5 </pre> <pre>24121992 GF00012 000 Good friend (2.) ordered: 24121992 GF00012 001 12345 Screw 100 24121992 GF00012 002 23456 Nail 200 </pre></BODY>
</HTML>