Alv: Campo Vacío en Control de Precios

Colapsar
X
 
  • Tiempo
  • Mostrar
Limpiar Todo
nuevos mensajes
  • marilinmendoza
    Junior Member
    • may
    • 17

    #1

    Alv: Campo Vacío en Control de Precios

    Hola a todos,
    Este es un requerimiento del módulo CO, y en la empresa acaba de terminar el año fiscal 2008 , por tanto se comenzó con el periodo 1 del año 2009.

    La funcional me pidió esto:
    Para los materiales que tengan control de precios "V" en la MBEW, entra en la MBEWH con el campo MATNR LFMON (Periodo) y el año LFGJA Toma el campo VERPR, Si el campo está vacío toma el valor anterior registrado en la tabla.

    Yo hice esto:
    SELECT SINGLE verpr
    INTO CORRESPONDING FIELDS OF it_ckis
    FROM mbewh
    WHERE matnr = it_ckis-matnr
    AND vprsv EQ 'V'
    AND lfmon EQ e_buper " Periodo
    AND lfgja EQ ejerc " Año
    AND verpr NE space.

    itab_out-cost_std = it_ckis-verpr.

    Lo cual me trae todos los campos que tienen valores en la tabla MBEWH y el campo VERPR.

    Me faltaría entonces 'Si el campo está vacío toma el valor anterior registrado en la tabla', es decir, si VERPR tiene valores 25 26 27 29, entonces, como no está 28 en su lugar debe salir 27.

    Así sale por los momentos:
    MATNR LFGJA LFMON VPRSV VERPR
    ---------------------------------------------
    11001 2008 05 V 250,5
    11002 2008 05 V 275,5
    11004 2009 02 V 285,7

    Falta que salga el material que esté vacio en VERPR, en este caso el 11003 :

    En caso que el material 11003 esté en el año 2008:

    MATNR LFGJA LFMON VPRSV VERPR
    ---------------------------------------------
    11003 2008 05 V 275,5

    o

    En caso que el material 11003 esté en el año 2009:

    MATNR LFGJA LFMON VPRSV VERPR
    ---------------------------------------------
    11003 2009 01 V 275,5


    Por favor una manito.
    Gracias.
    Marilin Mendoza
  • Bmamba
    Member
    • jun
    • 91

    #2
    Yo no sé si me he enterado de algo. Pero lo que yo haría sería quitar lo de verpr NE space, recuperar así todos (los del verpr vacío también). Y recorrer la tabla guardando el verpr anterior, por si me encuentro alguno vacío endosarselo.
    Algo asi:
    SELECT SINGLE verpr
    INTO CORRESPONDING FIELDS OF it_ckis
    FROM mbewh
    WHERE matnr = it_ckis-matnr
    AND vprsv EQ 'V'
    AND lfmon EQ e_buper " Periodo
    AND lfgja EQ ejerc.

    **Supongo que aquí habría un sort a la tabla
    loop at it_ckis.

    if it_ckis-verpr is initial.
    it_ckis-verpr = g_verpr_ant.
    else.
    g_verpr_ant = it_ckis.
    endif.

    endloop.

    Eso sí, no sé qué pasaría si el primer verpr de la tabla está vacío.

    Comentario

    • marilinmendoza
      Junior Member
      • may
      • 17

      #3
      Hola BMAMBA,
      Estoy haciendo lo que me comentas, le quité lo de verpr NE space, para traérmelos todos, pero estoy trancada aquí:

      if it_ckis-verpr is initial.
      it_ckis-verpr = g_verpr_ant.
      else.
      g_verpr_ant = it_ckis.
      endif.
      Debo traerme el último valor no vacío , pero nada.
      Intenté con esto: pos = sy-tabix - 1, igual sigue sin funcionar.

      Alguna otra idea, please...
      Marilin Mendoza

      Comentario

      • Bmamba
        Member
        • jun
        • 91

        #4
        Originalmente publicado por marilinmendoza
        Hola BMAMBA,
        Estoy haciendo lo que me comentas, le quité lo de verpr NE space, para traérmelos todos, pero estoy trancada aquí:

        if it_ckis-verpr is initial.
        it_ckis-verpr = g_verpr_ant.
        else.
        g_verpr_ant = it_ckis.
        endif.
        Debo traerme el último valor no vacío , pero nada.
        Intenté con esto: pos = sy-tabix - 1, igual sigue sin funcionar.

        Alguna otra idea, please...
        Hola! hay un error en el código que te pasé y es que :
        g_verpr_ant = it_ckis-verpr. (no = a it_ckis) Prueba asi.

        Comentario

        Trabajando...