W Pub: ABAP Prog Propios Emul SCROLL

  1. REPORT ZNADAR_TABLAS NO STANDARD PAGE HEADING.
  2. *---------------------------- Ini
  3. DATA: _TOP TYPE I,
  4.       _LAS TYPE I,
  5.       _LON TYPE I,
  6.       _F_TOP(30),
  7.       _F_DET(30),
  8.       _V_UP(30),
  9.       _V_DO(30),
  10.       _V_TOP(30),
  11.       _V_BOT(30),
  12.       _MAX TYPE I VALUE 5.
  13.  
  14. AT LINE-SELECTION.
  15. DATA: _CUR_F(30),
  16.       _AUX_V TYPE I.
  17.    GET CURSOR FIELD _CUR_F.
  18.    CASE _CUR_F.
  19.       WHEN _V_UP.  ADD 1 TO _TOP.
  20.       WHEN _V_DO.  SUBTRACT 1 FROM _TOP.
  21.       WHEN _V_TOP. _TOP = 1.
  22.       WHEN _V_BOT. _AUX_V = _LON - _MAX + 1.
  23.                    IF _AUX_V > 0.
  24.                       _TOP = _AUX_V.
  25.                    ELSE.
  26.                      _TOP = _LON.
  27.                    ENDIF.
  28.       WHEN OTHERS. EXIT.
  29.    ENDCASE.
  30.    PERFORM W_TAB.
  31. *---------------------------- Fin
  32. *---------------------------- Ini Para las pruebas
  33. END-OF-SELECTION.
  34. TABLES: USR01.
  35. DATA: BEGIN OF ITAB OCCURS 0,
  36.          NUM TYPE I,
  37.          NOM(12),
  38.       END OF ITAB.
  39. DATA: II TYPE I.
  40. CLEAR ITAB.
  41. SELECT * FROM  USR01 WHERE  BNAME  LIKE 'DES%'.
  42.    ADD 1 TO ITAB-NUM.
  43.    ITAB-NOM = USR01-BNAME.
  44.    APPEND ITAB.
  45. ENDSELECT.
  46.  
  47. DESCRIBE TABLE ITAB LINES II.
  48. DATA: VAR01(6),
  49.       VAR02(6),
  50.       VAR03(6),
  51.       VAR04(6).
  52.    VAR01 = '='.
  53.    VAR02 = '>'.
  54.    VAR03 = 'C'.
  55.    VAR04 = 'D'.
  56. PERFORM I_TAB USING 'PINTA_TOP' 'PINTA_DET' II 5
  57.                      'VAR01' 'VAR02' 'VAR03' 'VAR04'.
  58. FORM PINTA_TOP.
  59.   FORMAT HOTSPOT ON.
  60.   WRITE: /031 'This is a test for emulate a Table Control inside a',
  61.               'report'.
  62.   SKIP.
  63.   WRITE: /025 VAR01 AS SYMBOL,
  64.               VAR02 AS SYMBOL,
  65.               VAR03 AS SYMBOL,
  66.               VAR04 AS SYMBOL.
  67.   FORMAT HOTSPOT OFF.
  68. ENDFORM.
  69.  
  70. FORM PINTA_DET.
  71. "<********************** ESTA LINEA ES OBLIGATORIA ********************>
  72.    READ TABLE ITAB INDEX _LAS.
  73. "<********************** ESTA LINEA ES OBLIGATORIA ********************>
  74.    WRITE: /021 SY-VLINE.
  75.    ULINE 022(33).
  76.    WRITE:  055 SY-VLINE,
  77.           /021 SY-VLINE, ITAB-NUM,
  78.            040 SY-VLINE, ITAB-NOM,
  79.            055 SY-VLINE.
  80. ENDFORM.
  81. *---------------------------- Fin de las pruebas
  82. *---------------------------- Formularios obligatorios.
  83. FORM I_TAB USING FORM_TOP FORM_DET NUM_LINES MAX_LIN
  84.                  B_01 B_02 B_03 B_04.
  85. * Inicializamos Tabla y la pintamos
  86.    _LON   = II.
  87.    _TOP   = 1.
  88.    _LAS   = _TOP.
  89.    _MAX   = MAX_LIN.
  90.    _F_TOP = FORM_TOP.
  91.    _F_DET = FORM_DET.
  92.    _V_UP  = B_01.
  93.    _V_DO  = B_02.
  94.    _V_TOP = B_03.
  95.    _V_BOT = B_04.
  96.    PERFORM W_TAB.
  97. ENDFORM.
  98.  
  99. FORM W_TAB.
  100. * Repintado de la pantalla
  101.    SY-LSIND = 0.
  102.    PERFORM (_F_TOP) IN PROGRAM (SY-REPID).
  103.    IF _TOP <= 0. _TOP = 1. ENDIF.
  104.    IF _TOP > _LON. _TOP = _LON. ENDIF.
  105.    _LAS = _TOP.
  106.    DO _MAX TIMES.
  107.       CHECK _LAS <= _LON.
  108.       PERFORM (_F_DET) IN PROGRAM (SY-REPID).
  109.       ADD 1 TO _LAS.
  110.    ENDDO.
  111.    SY-LSIND = 0.
  112. ENDFORM.