W Pub: ABAP Prog Propios Emul TABS

  1. REPORT ZNADAR_TABSTIPEMULATOR.
  2. *------------------------------------ Definicin de las pestanyas
  3. CONSTANTS: VARTEX(3) VALUE 'TEX'.
  4. SELECTION-SCREEN PUSHBUTTON 01(10) TEX001 USER-COMMAND K001.
  5. SELECTION-SCREEN PUSHBUTTON 11(10) TEX002 USER-COMMAND K002.
  6. SELECTION-SCREEN PUSHBUTTON 21(10) TEX003 USER-COMMAND K003.
  7. SELECTION-SCREEN PUSHBUTTON 31(10) TEX004 USER-COMMAND K004.
  8. SELECTION-SCREEN PUSHBUTTON 41(10) TEX005 USER-COMMAND K005.
  9. *------------------------------------ Definicin de la subpantallas
  10. DATA: BEGIN OF ITAB OCCURS 0,
  11.         BLOQ(3) TYPE N.
  12.         INCLUDE STRUCTURE SCREEN.
  13. DATA: END OF ITAB.
  14. DATA: P_ACTUAL LIKE ITAB-BLOQ.
  15. *------------------------------------ Pestanya 001
  16. *------------------------------------ Los campos de dentro son ejemplos
  17. SELECTION-SCREEN BEGIN OF BLOCK B001 WITH FRAME TITLE T001.
  18. PARAMETERS: KMPO1(40).
  19. SELECTION-SCREEN SKIP 1.
  20. SELECT-OPTIONS: FECHA FOR ITAB-NAME.
  21. SELECTION-SCREEN END OF BLOCK B001.
  22. *------------------------------------ Pestanya 002
  23. SELECTION-SCREEN BEGIN OF BLOCK B002 WITH FRAME TITLE T002.
  24. PARAMETERS: KMPO2 LIKE SY-DATUM.
  25. SELECTION-SCREEN END OF BLOCK B002.
  26. *------------------------------------ Pestanya 003
  27. SELECTION-SCREEN BEGIN OF BLOCK B003 WITH FRAME TITLE T003.
  28. SELECTION-SCREEN COMMENT 10(60) COME1.
  29. SELECTION-SCREEN END OF BLOCK B003.
  30. *------------------------------------ Pestanya 004
  31. SELECTION-SCREEN BEGIN OF BLOCK B004 WITH FRAME TITLE T004.
  32. SELECTION-SCREEN COMMENT 10(60) COME2.
  33. SELECTION-SCREEN END OF BLOCK B004.
  34. *------------------------------------ Pestanya 005
  35. SELECTION-SCREEN BEGIN OF BLOCK B005 WITH FRAME TITLE T005.
  36. SELECTION-SCREEN COMMENT 10(60) COME3.
  37. SELECTION-SCREEN END OF BLOCK B005.
  38.  
  39. AT SELECTION-SCREEN OUTPUT.
  40.    LOOP AT SCREEN.
  41.       READ TABLE ITAB WITH KEY NAME = SCREEN-NAME.
  42.       CHECK SY-SUBRC EQ '0'.
  43.       MOVE-CORRESPONDING ITAB TO SCREEN.
  44.       IF P_ACTUAL NE ITAB-BLOQ.
  45.          SCREEN-INVISIBLE = '1'.
  46.          SCREEN-INPUT     = SCREEN-REQUIRED  = '0'.
  47.       ENDIF.
  48.       MODIFY SCREEN.
  49.    ENDLOOP.
  50.  
  51. AT SELECTION-SCREEN.
  52. FIELD-SYMBOLS: <F>.
  53. DATA: AUX(6).
  54. *------------------------------------ Bucle de pestanyas
  55.    CASE SY-UCOMM+0(1).
  56.       WHEN 'K'. LOOP AT SCREEN.
  57.                     CHECK SCREEN-NAME+0(3) = VARTEX.
  58.                     ASSIGN (SCREEN-NAME) TO <F>.
  59.                     IF SCREEN-NAME+3(3) = SY-UCOMM+1(3).
  60.                        TRANSLATE <F> TO UPPER CASE.
  61.                     ELSE.
  62.                        TRANSLATE <F> TO LOWER CASE.
  63.                     ENDIF.
  64.                 ENDLOOP.
  65.                 P_ACTUAL = SY-UCOMM+1(3).
  66.    ENDCASE.
  67. INITIALIZATION.
  68. *------------------------------------ Texto de las pestanyas
  69. TEX001 = T001 = 'CELL 001'.
  70. TEX002 = T002 = 'cell 002'.
  71. TEX003 = T003 = 'cell 003'.
  72. TEX004 = T004 = 'cell 004'.
  73. TEX005 = T005 = 'cell 005'.
  74. * Ini ------------------------------- Slo como ejemplo.
  75. COME1 = '*** Opcin no disponible, gracias por intentarlo.'.
  76. COME2 = COME3 = COME1.
  77. * Fin ------------------------------- Slo como ejemplo.
  78. *------------------------------------ Buscamos los campos por bloques
  79. DATA: CX LIKE ITAB-BLOQ,
  80.       CR(1).
  81.    CX = '000'. CLEAR CR.
  82.    LOOP AT SCREEN.
  83.      CHECK SCREEN-NAME+0(5) NE '%_10N'.
  84.      IF SCREEN-NAME+0(5) = '%B%_F' OR
  85.         ( SCREEN-NAME+0(1) = 'T' AND
  86.           SCREEN-NAME+1(3) CO '0987654321' ).
  87.         CR = 'X'.
  88.         ADD 1 TO CX.
  89.      ENDIF.
  90.      CHECK CR = 'X'.
  91.      ITAB-BLOQ = CX.
  92.      MOVE-CORRESPONDING SCREEN TO ITAB.
  93.      APPEND ITAB.
  94.    ENDLOOP.
  95.    P_ACTUAL = '001'.