Anuncio

Colapsar
No hay anuncio todavía.

Programa para saber campos comunes entre dos tablas

Colapsar
X
 
  • Filtrar
  • Tiempo
  • Mostrar
Limpiar Todo
nuevos mensajes

  • Programa para saber campos comunes entre dos tablas

    Hola Gente,

    Aquí les dejo un programita donde lo que hace es buscar campo comunes entre dos tablas según sus dominios, espero les sirva.
    "Programar es un juego de niño".
    LuisFarro


    Código:
    REPORT ydummy_lfc NO STANDARD PAGE HEADING.
    
    TYPES: BEGIN OF ty_repeated,
    fieldname TYPE dd03p-fieldname,
    ddtext TYPE dd03p-ddtext,
    END OF ty_repeated.
    
    DATA: dd03p_table1 TYPE STANDARD TABLE OF dd03p,
    dd03p_table2 TYPE STANDARD TABLE OF dd03p,
    t_repeated TYPE STANDARD TABLE OF ty_repeated
    WITH HEADER LINE.
    
    DATA: long_1 TYPE i,
    long_2 TYPE i,
    w_title TYPE string.
    
    FIELD-SYMBOLS: <fs_dd03p> LIKE LINE OF dd03p_table1,
    <fs_dd03p_aux> LIKE LINE OF dd03p_table1,
    <fs_repeated> LIKE LINE OF t_repeated.
    
    SELECTION-SCREEN BEGIN OF BLOCK test.
    PARAMETERS:
    p_tab_1 TYPE dd17s-sqltab,
    p_tab_2 TYPE dd17s-sqltab.
    SELECTION-SCREEN END OF BLOCK test.
    
    START-OF-SELECTION.
    
    CONCATENATE p_tab_1 p_tab_2 INTO
    w_title SEPARATED BY '-'.
    
    sy-title = w_title.
    
    CALL FUNCTION 'DDIF_TABL_GET'
    EXPORTING
    name = p_tab_1
    state = 'A'
    langu = sy-langu
    TABLES
    dd03p_tab = dd03p_table1
    EXCEPTIONS
    illegal_input = 1
    OTHERS = 2.
    
    DELETE dd03p_table1 WHERE rollname EQ space.
    
    CALL FUNCTION 'DDIF_TABL_GET'
    EXPORTING
    name = p_tab_2
    state = 'A'
    langu = sy-langu
    TABLES
    dd03p_tab = dd03p_table2
    EXCEPTIONS
    illegal_input = 1
    OTHERS = 2.
    
    DELETE dd03p_table2 WHERE rollname EQ space.
    
    DESCRIBE TABLE dd03p_table1 LINES long_1.
    DESCRIBE TABLE dd03p_table2 LINES long_2.
    
    IF long_1 GT long_2.
    LOOP AT dd03p_table1 ASSIGNING <fs_dd03p>.
    READ TABLE dd03p_table2 ASSIGNING <fs_dd03p_aux>
    WITH KEY rollname = <fs_dd03p>-rollname.
    IF sy-subrc EQ 0.
    MOVE <fs_dd03p_aux>-fieldname TO t_repeated-fieldname.
    MOVE <fs_dd03p_aux>-ddtext TO t_repeated-ddtext.
    APPEND t_repeated.
    ENDIF.
    ENDLOOP.
    ELSE.
    LOOP AT dd03p_table2 ASSIGNING <fs_dd03p>.
    READ TABLE dd03p_table1 ASSIGNING <fs_dd03p_aux>
    WITH KEY rollname = <fs_dd03p>-rollname.
    IF sy-subrc EQ 0.
    MOVE <fs_dd03p_aux>-fieldname TO t_repeated-fieldname.
    MOVE <fs_dd03p_aux>-ddtext TO t_repeated-ddtext.
    APPEND t_repeated.
    ENDIF.
    ENDLOOP.
    ENDIF.
    
    LOOP AT t_repeated ASSIGNING <fs_repeated>.
    WRITE:/ <fs_repeated>-fieldname,<fs_repeated>-ddtext.
    ENDLOOP.
    Editado por última vez por koken; 07/09/2015, 12:53:15.

  • #2
    Realmente muy útil! gracias por compartir.

    Comentario


    • #3
      Genial! gracias!

      Comentario


      • #4
        Muy útil, se necesita de más gente como LuisFarro para que este sitio siga creciendo.

        Gracias!

        Comentario


        • #5
          Me has hecho un flaco favor, muchas gracias!

          Comentario

          Trabajando...
          X