ABAP Prog Propios Emul SCROLL
- 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.