Referencia de una tabla por un campo

Hola buenas noches, una consulta.

cuando indican referencia con una tabla por un campo, que significa? se usa el inner join?

Crear un programa Z, para mostrar los siguientes datos:

  • Cod.Material(MARA-MATNR)
  • Tipo.Material(MARA-MTART)
  • Grupo de Articulo (MARA-MATKL)
  • Texto.Material(MAKT-MAKTX) ,Referencia con la tabla MARA por el campo MATNR

Hola, puedes usar un inner join pero no necesariamente, mira este ejemplo:

SELECT matnr mtart matkl 
  FROM MARA 
  INTO gt_mara
  WHERE mtart = p_mtart.
  
  IF sy-subrc EQ 0.

    SELECT matnr MAKTX 
      from MAKT
      into gt_makt
      FOR ALL ENTRIES IN gt_mara
      WHERE matnr = gt_mara-matnr.

  ENDIF.

Lo que te están diciendo ahi es basicamente que para acceder a la MAKT, tienes que ir con el MATNR de la MARA.

Saludos.

1 me gusta

muchas gracias por tu apoyo, probare con lo que me indicaste, me imagino que se mostraria un mismo resultado. :slight_smile:
debo crear dos tablas internas verdad? uno para mara y el otro para makt

claro, para el ejemplo que te pase se deberian crear dos tablas internas.

Una consulta adicional, si deseo mostrar todos los campos en un mismo reporte se debe crear dos loop at o se puede juntar en uno solo?

LOOP AT TI_MARA ASSIGNING <fs_mara>.
WRITE: / <fs_mara>-MATNR, "Cod.Material
<fs_mara>-MTART,"Tipo.Material
<fs_mara>-MATKL,"Grupo de Articulo
ENDLOOP.

LOOP AT TI_MAKT ASSIGNING <fs_makt>.
WRITE: / <fs_makt>-MATNR, "Cod.Material
<fs_makt>-MAKTX."Texto.Material
ENDLOOP.

Con tu permiso te corrijo un cachito tu código:

LOOP AT TI_MARA ASSIGNING <fs_mara>.
WRITE: / <fs_mara>-MATNR, "Cod.Material
<fs_mara>-MTART,"Tipo.Material
<fs_mara>-MATKL,"Grupo de Articulo

      READ TABLE ti_makt ASSIGNING <fs_makt> WITH KEY matnr = <fs_mara>-matnr.
      IF sy-subrc EQ 0.
        WRITE: / <fs_makt>-maktx."Texto.Material
      ENDIF.

ENDLOOP.

De esta manera los juntas en uno solo.
Espero que te sirva!
Saludos.

1 me gusta

muchas gracias, voy a usar lo que me pasaste :slight_smile: :+1:

1 me gusta

Este tema se cerró automáticamente 91 días después del último post. No se permiten nuevas respuestas.