Ver Mensaje Individual
  #1  
Viejo 23/07/08, 19:33:03
Avatar de Rodolfo Montiel Rivera
Rodolfo Montiel Rivera Rodolfo Montiel Rivera is offline
Member
 
Fecha de Ingreso: oct 2007
Mensajes: 92
Lightbulb 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.
Responder Con Cita