Anuncio

Colapsar
No hay anuncio todavía.

Problemas con operador IN en una select

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

  • Problemas con operador IN en una select

    Tengo la siguiente select:

    SELECT cab~budat lin~mblnr lin~zeile lin~bwart des~btext
    lin~matnr "descri" lin~werks lin~lgort lin~menge lin~meins
    "pmv" lin~bualt lin~kostl lin~aufnr lin~ps_psp_pnr
    lin~kdauf lin~werks
    INTO itab_resultado
    FROM ( ( mkpf AS cab
    INNER JOIN mseg AS lin
    ON cab~mblnr = lin~mblnr AND
    cab~mjahr = lin~mjahr )
    INNER JOIN t156t AS des
    ON des~bwart = lin~bwart )
    WHERE des~spras = v_es AND
    * lin~matnr IN ('1004002', '10009220').
    lin~matnr IN itab_mat.

    Me da el siguiente error de compilacion:

    The line structure of the table 'itab_mat' is incorrect.

    itab_mat esta definido de la siguiente forma:
    DATA: BEGIN OF itab_mat OCCURS 0.
    DATA: i_mat LIKE mseg-matnr.
    DATA: END OF itab_mat.

    Sin embargo si quito la parte que da error y dejo la parte que esta comentada no me da error.
    Tb. he probado a poner lin~matnr IN itab_mat-i_mat.
    En este caso el error que me da es el siguiente:
    The IN operator with "ITAB_MAT-I_MAT" is followed neither by an
    internal table nor by a value list.

    ¿Como puedo hacer que coja el codigo de material de la tabla interna itab_mat?

    Muchas gracias.
    Un saludo.

  • #2
    Hola jarizkuren,

    tienes que llamar ese select dentro de un loop a la tabla interna o si es sólo un valor después de un READ TABLE.

    Suerte!

    Comentario


    • #3
      Hola jarizkuren.

      Para poder realizar la seleccion de la forma en la que quieres (aplicando un IN a la condicion), debes realizar la seleccion sobre un rango de valores, para esto tienes dos opciones:
      - Declara la tabla como tabla de tipo SELOPT.
      - Declara un Rango del tipo que necesites.

      Es necesario indicar que para rellenar cualquiera de los valores del rango, hay que informar los siguientes valores de la estructura:
      - Signo: Incluido o Excluido.
      - Opcion: Igual a, Mayor que, Menor que, Entre los valores...
      - Valor Bajo: Valor inferior del rango (si la opcion es Entre los valores) o valor del rango.
      - Valor Alto: Valor superior del rango (si la opcion es Entre los valores), si no es esta opción, este valor no se considera en el rango.
      SAP solo es el medio a través del cual se expresa nuestra imaginación.

      Comentario

      Trabajando...
      X