REPORT ZNADAR1 NO STANDARD PAGE HEADING LINE-SIZE 180.
TABLES: DD03L.
PARAMETERS: TABLA_1(12),
TABLA_2(12).
DATA: BEGIN OF ITAB_1 OCCURS 0,
FIELDNAME LIKE DD03L-FIELDNAME,
KEYFLAG LIKE DD03L-KEYFLAG,
END OF ITAB_1,
BEGIN OF ITAB_2 OCCURS 0,
FIELDNAME LIKE DD03L-FIELDNAME,
KEYFLAG LIKE DD03L-KEYFLAG,
END OF ITAB_2,
BEGIN OF ITAB_3 OCCURS 0,
POSI(2),
FIELDNAME LIKE DD03L-FIELDNAME,
LADO(1),
END OF ITAB_3,
AX TYPE I,
BX TYPE I,
CX(2).
AT LINE-SELECTION.
READ LINE 2.
IF SY-LISEL+16(12) NE TABLA_1 OR SY-LISEL+39(12) NE TABLA_2.
TABLA_1 = SY-LISEL+16(19).
TABLA_2 = SY-LISEL+39(12).
SY-LSIND = SY-LSIND - 1.
PERFORM PINTAR.
ELSE.
PERFORM BUSCAR_Y_MONTAR.
ENDIF.
END-OF-SELECTION.
PERFORM PINTAR.
FORM PINTAR.
REFRESH: ITAB_1, ITAB_2. CLEAR: ITAB_1, ITAB_2.
SELECT * APPENDING CORRESPONDING FIELDS OF TABLE ITAB_1
FROM DD03L WHERE TABNAME = TABLA_1.
SELECT * APPENDING CORRESPONDING FIELDS OF TABLE ITAB_2
FROM DD03L WHERE TABNAME = TABLA_2.
DESCRIBE TABLE ITAB_1 LINES AX.
DESCRIBE TABLE ITAB_2 LINES BX.
IF BX > AX. AX = BX. ENDIF.
BX = 1.
SKIP 1.
INCLUDE <ICON>.
WRITE: AT 10 '@15@' AS ICON HOTSPOT NO-GAP, '@42@' AS ICON HOTSPOT,
AT 17 TABLA_1 INPUT,
AT 30 '--->',
AT 40 TABLA_2 INPUT,
AT 60 'Zona de Resultados'.
SKIP 1.
DO AX TIMES.
WRITE / ' '.
READ TABLE ITAB_1 INDEX BX.
IF SY-SUBRC EQ 0.
FORMAT COLOR OFF.
WRITE AT 17 CX INPUT.
IF ITAB_1-KEYFLAG = 'X'. FORMAT COLOR 4. ENDIF.
WRITE AT 20 ITAB_1-FIELDNAME+0(12).
ENDIF.
READ TABLE ITAB_2 INDEX BX.
IF SY-SUBRC EQ 0.
FORMAT COLOR OFF.
WRITE AT 37 CX INPUT.
IF ITAB_2-KEYFLAG = 'X'. FORMAT COLOR 4. ENDIF.
WRITE AT 40 ITAB_2-FIELDNAME+0(12).
ENDIF.
FORMAT COLOR OFF.
WRITE AT 59 SY-VLINE.
ADD 1 TO BX.
ENDDO.
ENDFORM.
FORM BUSCAR_Y_MONTAR.
DATA: TCADE(72) OCCURS 0 WITH HEADER LINE.
REFRESH ITAB_3. CLEAR ITAB_3. BX = 3.
DO.
READ LINE BX.
IF SY-SUBRC NE 0. EXIT. ENDIF.
ITAB_3-POSI = SY-LISEL+17(2).
ITAB_3-FIELDNAME = SY-LISEL+19(12).
ITAB_3-LADO = '1'.
IF NOT ITAB_3-POSI IS INITIAL. APPEND ITAB_3. ENDIF.
ITAB_3-POSI = SY-LISEL+37(2).
ITAB_3-FIELDNAME = SY-LISEL+39(12).
ITAB_3-LADO = '5'.
IF NOT ITAB_3-POSI IS INITIAL. APPEND ITAB_3. ENDIF.
ADD 1 TO BX.
ENDDO.
SORT ITAB_3 BY POSI LADO.
DATA: CADE(172),
DX TYPE I.
BX = DX = 3.
* Montar iguales
LOOP AT ITAB_3.
AX = SY-TABIX MOD 2.
IF AX NE 0. READ LINE BX. ENDIF.
IF AX NE 0.
CONCATENATE CADE '¬=¬' TABLA_1 '-' ITAB_3-FIELDNAME '.' INTO CADE.
ELSE.
CONCATENATE TABLA_2 '-' ITAB_3-FIELDNAME CADE INTO CADE.
ENDIF.
IF AX EQ 0.
TCADE = CADE. APPEND TCADE.
CLEAR CADE.
ENDIF.
ADD 1 TO BX.
ENDLOOP.
CLEAR TCADE. APPEND TCADE.
LOOP AT ITAB_3.
AX = SY-TABIX MOD 2.
IF AX NE 0. READ LINE BX. ENDIF.
IF AX NE 0.
CONCATENATE 'MOVE¬' TABLA_1 '-' ITAB_3-FIELDNAME CADE
INTO CADE.
ELSE.
CONCATENATE CADE '¬TO¬'
TABLA_2 '-' ITAB_3-FIELDNAME '.' INTO CADE.
ENDIF.
IF AX EQ 0. TCADE = CADE. APPEND TCADE. CLEAR CADE. ENDIF.
ADD 1 TO BX.
ENDLOOP.
CLEAR TCADE. APPEND TCADE.
CONCATENATE 'SELECT¬*¬FROM¬' TABLA_1 '¬WHERE' INTO TCADE.
APPEND TCADE.
LOOP AT ITAB_3.
AX = SY-TABIX MOD 2.
IF AX NE 0. READ LINE BX. ENDIF.
IF AX NE 0.
IF SY-TABIX NE '1'. CADE = 'AND¬'. ENDIF.
CONCATENATE CADE ITAB_3-FIELDNAME '¬=¬' INTO CADE.
ELSE.
CONCATENATE CADE TABLA_2 '-' ITAB_3-FIELDNAME INTO CADE.
ENDIF.
IF AX EQ 0. TCADE = CADE. APPEND TCADE. CLEAR CADE. ENDIF.
ADD 1 TO BX.
ENDLOOP.
BX = 4.
LOOP AT TCADE.
READ LINE BX.
TRANSLATE TCADE USING '¬ '.
SY-LISEL+60 = TCADE.
MODIFY LINE BX.
ADD 1 TO BX.
ENDLOOP.
ENDFORM.