Optimizacion de codigo?
Saludos Aqui practicando algo de recursividad a mis viejos tiempos con C jajaja bueno pues realice un reacomodo de mayor a menor de una serie de 5 numeros claro esto podria ser loco pero pues era para entretenerme ok, ahora creen que se podria hacer mas chiquito mi codigo algo asi como optimizarlo u otra manera de hacerlo ?
*&---------------------------------------------------------------------*
*& Report ZDUMMY_RMR60 *
*& *
*&---------------------------------------------------------------------*
*& *
*& *
*&---------------------------------------------------------------------*
REPORT zdummy_rmr60.
DATA: BEGIN OF itab_almacen OCCURS 0,
r_num TYPE n,
END OF itab_almacen.
DATA: r_temp LIKE itab_almacen-r_num,
r_temp2 LIKE itab_almacen-r_num.
DATA: r_cont TYPE n VALUE 1.
DATA: r_nomcampo(6) TYPE c.
DATA: r_tabix LIKE sy-tabix.
FIELD-SYMBOLS <fs_valor> TYPE ANY.
SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-t00.
PARAMETERS: r_num1 TYPE n,
r_num2 TYPE n,
r_num3 TYPE n,
r_num4 TYPE n,
r_num5 TYPE n.
SELECTION-SCREEN END OF BLOCK b1.
AT USER-COMMAND.
CASE sy-ucomm.
WHEN '/&PROC'.
PERFORM reordenar_numero.
PERFORM imprimir.
WHEN 'BACK'.
LEAVE TO SCREEN 0.
ENDCASE.
START-OF-SELECTION.
SET TITLEBAR 'STANDARD'.
SET PF-STATUS 'MENU'.
PERFORM llenar_tabla.
PERFORM imprimir.
END-OF-SELECTION.
*&---------------------------------------------------------------------*
*& Form llenar_tabla
*&---------------------------------------------------------------------*
FORM llenar_tabla .
DO 5 TIMES.
CONCATENATE: 'r_num' r_cont INTO r_nomcampo.
ASSIGN (r_nomcampo) TO <fs_valor>.
MOVE: <fs_valor> TO itab_almacen-r_num.
APPEND itab_almacen.
r_cont = r_cont + 1.
ENDDO.
ENDFORM. " llenar_tabla
*&---------------------------------------------------------------------*
*& Form reordenar_numero
*&---------------------------------------------------------------------*
FORM reordenar_numero .
LOOP AT itab_almacen.
r_temp = itab_almacen-r_num.
r_tabix = sy-tabix + 1.
READ TABLE itab_almacen INDEX r_tabix.
IF r_temp LT itab_almacen-r_num.
r_temp2 = itab_almacen-r_num.
MOVE: r_temp TO itab_almacen-r_num.
MODIFY itab_almacen INDEX r_tabix.
r_tabix = sy-tabix - 1.
READ TABLE itab_almacen INDEX r_tabix.
itab_almacen-r_num = r_temp2.
MODIFY itab_almacen.
PERFORM reordenar_numero.
ENDIF.
ENDLOOP.
ENDFORM. " reordenar_numero
*&---------------------------------------------------------------------*
*& Form imprimir
*&---------------------------------------------------------------------*
FORM imprimir .
r_cont = 1.
LOOP AT itab_almacen.
WRITE: / 'Lugar : ', r_cont, '-->', itab_almacen-r_num.
r_cont = r_cont + 1.
ENDLOOP.
ENDFORM. " imprimir
__________________
01010000
01001010
10011000
10100001
De Byte a Beat.
|