PDA

Ver la Versión Completa : Que haces este codigo?


jorgeABAP29
13/10/10, 00:33:36
Hola, acá les dejo el código, a continuacion esta la pregunta:

C_BIKER ES UNA CLASE.
CLASS: C_BIKER DEFINITION DEFERRED.

TYPES: BIKER_REF TYPE REF TO C_BIKER,
BIKER_REF_TAB TYPE STANDARD TABLE OF BIKER_REF
WITH DEFAULT KEY,
BEGIN OF STATUS_LINE_TYPE,
FLAG(1) TYPE C,
TEXT1(5) TYPE C,
ID TYPE I,
TEXT2(7) TYPE C,
TEXT3(6) TYPE C,
GEAR TYPE I,
TEXT4(7) TYPE C,
SPEED TYPE I,
END OF STATUS_LINE_TYPE.

DATA:
BIKER_TAB TYPE BIKER_REF_TAB,
BIKER_SELECTION LIKE BIKER_TAB.

METHOD SELECTION.
CLEAR BIKER_SELECTION.
DO.
READ LINE SY-INDEX.
IF SY-SUBRC <> 0. EXIT. ENDIF.
IF SY-LISEL+0(1) = 'X'.
READ TABLE BIKER_TAB INTO BIKER INDEX SY-INDEX.
APPEND BIKER TO BIKER_SELECTION.
ENDIF.
ENDDO.
CALL METHOD WRITE_LIST.
ENDMETHOD.

Quiero saber que hace el método selección, fundamentalmente que hace la instrucción READ LINE SY-INDEX y SY-LISEL+0(1) = 'X'.

espero sus respuestas... gracias.

Tu amo
13/10/10, 02:59:47
Falta mucho contexto.

Pero dirigiéndome a tus dudas con las dos instrucciones, esto es lo que infiero.

READ LINE lee las lineas de un reporte. En este caso, con el DO inicias un loop leyendo todas las lineas hasta que ya no hay nada que leer y sales.
El sy-index se llena en casa paso con un consecutivo, iniciando del 1. Asi que leerías del renglón 1 hasta que termines de procesar todo el reporte

IF SY-LISEL+0(1) = 'X'. Los contenidos del renglón leído se encuentran en sy-lisel. Seguramente en el primer renglón hay un checkbox para seleccionar, así que con el if vez si el renglón fue seleccionado.

jorgeABAP29
13/10/10, 12:47:21
muchas gracias, ya entendí el código.