REPORT ZNADAR_ORDENA .
* Ini --------- Slo para el ejemplo -----------------------------------
DATA: BEGIN OF IT OCCURS 0, KMPO1(5), KMPO2(5), KMPO3 TYPE I, END OF IT.
* Fin --------- Slo para el ejemplo -----------------------------------
AT LINE-SELECTION.
PERFORM SORT_ME USING 'IT' 'D' 'ESCRIBE'.
* Ini --------- Slo para el ejemplo -----------------------------------
END-OF-SELECTION.
IT-KMPO1 = 'RRRRR'. IT-KMPO2 = 'BBBBB'. IT-KMPO3 = 231. APPEND IT.
IT-KMPO1 = 'LLLLL'. IT-KMPO2 = 'MMMMM'. IT-KMPO3 = 101. APPEND IT.
IT-KMPO1 = 'EEEEE'. IT-KMPO2 = 'AAAAA'. IT-KMPO3 = 325. APPEND IT.
IT-KMPO1 = 'RRRRR'. IT-KMPO2 = 'OOOOO'. IT-KMPO3 = 235. APPEND IT.
PERFORM ESCRIBE.
FORM ESCRIBE.
LOOP AT IT. WRITE: /010 IT-KMPO1, 020 IT-KMPO2, 030 IT-KMPO3. ENDLOOP.
ENDFORM.
* Fin --------- Slo para el ejemplo -----------------------------------
FORM SORT_ME USING TABNAME ORDEDBY PRINTRUTINE.
DATA: DI(20).
GET CURSOR FIELD DI.
SPLIT DI AT '-' INTO DI DI.
IF ORDEDBY = 'A'.
CASE TABNAME. "<--- Pon aqui las tablas que tenga y quieras
* Ini ####### Aqu es obligado cambiar el nombre de la tabla ###########
WHEN 'IT'. SORT IT BY (DI) ASCENDING.
* Fin ####### Aqu es obligado cambiar el nombre de la tabla ###########
ENDCASE.
ELSEIF ORDEDBY = 'D'.
CASE TABNAME. "<--- Pon aqui las tablas que tenga y quieras
* Ini ####### Aqu es obligado cambiar el nombre de la tabla ###########
WHEN 'IT'. SORT IT BY (DI) DESCENDING.
* Fin ####### Aqu es obligado cambiar el nombre de la tabla ###########
ENDCASE.
ENDIF.
SY-LSIND = SY-LSIND - 1.
LEAVE TO LIST-PROCESSING.
PERFORM (PRINTRUTINE) IN PROGRAM (SY-REPID) IF FOUND.
ENDFORM.