REPORT ZNADAR_TABLAS NO STANDARD PAGE HEADING.
*---------------------------- Ini
DATA: _TOP TYPE I,
_LAS TYPE I,
_LON TYPE I,
_F_TOP(30),
_F_DET(30),
_V_UP(30),
_V_DO(30),
_V_TOP(30),
_V_BOT(30),
_MAX TYPE I VALUE 5.
AT LINE-SELECTION.
DATA: _CUR_F(30),
_AUX_V TYPE I.
GET CURSOR FIELD _CUR_F.
CASE _CUR_F.
WHEN _V_UP. ADD 1 TO _TOP.
WHEN _V_DO. SUBTRACT 1 FROM _TOP.
WHEN _V_TOP. _TOP = 1.
WHEN _V_BOT. _AUX_V = _LON - _MAX + 1.
IF _AUX_V > 0.
_TOP = _AUX_V.
ELSE.
_TOP = _LON.
ENDIF.
WHEN OTHERS. EXIT.
ENDCASE.
PERFORM W_TAB.
*---------------------------- Fin
*---------------------------- Ini Para las pruebas
END-OF-SELECTION.
TABLES: USR01.
DATA: BEGIN OF ITAB OCCURS 0,
NUM TYPE I,
NOM(12),
END OF ITAB.
DATA: II TYPE I.
CLEAR ITAB.
SELECT * FROM USR01 WHERE BNAME LIKE 'DES%'.
ADD 1 TO ITAB-NUM.
ITAB-NOM = USR01-BNAME.
APPEND ITAB.
ENDSELECT.
DESCRIBE TABLE ITAB LINES II.
DATA: VAR01(6),
VAR02(6),
VAR03(6),
VAR04(6).
VAR01 = '='.
VAR02 = '>'.
VAR03 = 'C'.
VAR04 = 'D'.
PERFORM I_TAB USING 'PINTA_TOP' 'PINTA_DET' II 5
'VAR01' 'VAR02' 'VAR03' 'VAR04'.
FORM PINTA_TOP.
FORMAT HOTSPOT ON.
WRITE: /031 'This is a test for emulate a Table Control inside a',
'report'.
SKIP.
WRITE: /025 VAR01 AS SYMBOL,
VAR02 AS SYMBOL,
VAR03 AS SYMBOL,
VAR04 AS SYMBOL.
FORMAT HOTSPOT OFF.
ENDFORM.
FORM PINTA_DET.
"<********************** ESTA LINEA ES OBLIGATORIA ********************>
READ TABLE ITAB INDEX _LAS.
"<********************** ESTA LINEA ES OBLIGATORIA ********************>
WRITE: /021 SY-VLINE.
ULINE 022(33).
WRITE: 055 SY-VLINE,
/021 SY-VLINE, ITAB-NUM,
040 SY-VLINE, ITAB-NOM,
055 SY-VLINE.
ENDFORM.
*---------------------------- Fin de las pruebas
*---------------------------- Formularios obligatorios.
FORM I_TAB USING FORM_TOP FORM_DET NUM_LINES MAX_LIN
B_01 B_02 B_03 B_04.
* Inicializamos Tabla y la pintamos
_LON = II.
_TOP = 1.
_LAS = _TOP.
_MAX = MAX_LIN.
_F_TOP = FORM_TOP.
_F_DET = FORM_DET.
_V_UP = B_01.
_V_DO = B_02.
_V_TOP = B_03.
_V_BOT = B_04.
PERFORM W_TAB.
ENDFORM.
FORM W_TAB.
* Repintado de la pantalla
SY-LSIND = 0.
PERFORM (_F_TOP) IN PROGRAM (SY-REPID).
IF _TOP <= 0. _TOP = 1. ENDIF.
IF _TOP > _LON. _TOP = _LON. ENDIF.
_LAS = _TOP.
DO _MAX TIMES.
CHECK _LAS <= _LON.
PERFORM (_F_DET) IN PROGRAM (SY-REPID).
ADD 1 TO _LAS.
ENDDO.
SY-LSIND = 0.
ENDFORM.