Anuncio

Colapsar
No hay anuncio todavía.

Urgente abap 7.5

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

  • Urgente abap 7.5

    Hola, sé muy poco de programación en 7.5 y lo que sé de la programación lo aprendi yo sola viendo programas de otros
    hice un amdp pero como no sé como le puedo pasar como parametro los rangos porque no me excluye valores y cosas así entonces lo que hice fue que obtengo todo del amdp y despues es que filtro el campo blart (clase de documento) con lo que trae el filtro de los datos de entrada, pero seguramente hay una forma mas optima de hacerlo en 7.5

    lo hice así, pero claro se demora:

    loop at lt_datos ASSIGNING FIELD-SYMBOL(<lf_datos>).
    if <lf_datos>-blart not in s_blart.
    delete lt_datos INDEX sy-tabix.
    endif.
    endloop.

    Como hago eso ahora en 7.5??
    Editado por última vez por Karlavs2003; 19/11/2021, 23:08:43.

  • #2
    Hola,

    fuera de hacerlo o no en ABAP 7.5, la sentencia que pienso que deberiás usar es la siguiente:

    Código:
    DELETE lt_datos WHERE blart not in s_blart.
    Porque para recomerdarte el AMDP a realizar necesitaría más información de lo que tienes que hacer.

    Saludos!

    Comentario


    • #3
      Ok gracias por responder, si como dije, yo lo que he aprendido ha sido por mi cuenta hay millones de comandos que no conozco, en cuanto al amdp en abap tengo unos datos de entrada, entre ellos s_blart, ahi las usuarias van a excluir algunas clases de documento, el amdp va leer datos de la acdoca, bkpf y no sé como deberia enviar el filtro al amdp para que solamente filtre las clases de documento que seleccione el usuario desde la pantalla de selección en abap.

      Envio
      En este select deberia enviar el campo s_blart
      SELECT FROM zfi_doc_repetidos( p_rldnr = @p_rldnr,
      p_bukrs = @p_bukrs,
      p_tip_bp = @p_tip_bp,"A= Acreedor D=Deudor
      p_bp = @p_bp, "Nro. del BP
      p_status = @p_status,"1=Todos los doumentos 2=Partidas Abiertas 3=Partidas compensadas
      p_augdt_d = @s_augdt-low,
      p_augdt_h = @s_augdt-high,
      p_budat_d = @s_budat-low,
      p_budat_h = @s_budat-high,
      p_xblnr = @p_xblnr )
      FIELDS *
      INTO TABLE @DATA(lt_datos).

      Y para recibir en eclipse
      define table function ZFI_DOC_REPETIDOS
      with parameters
      @Environment.systemField: #CLIENT
      p_clnt : abap.clnt,
      p_rldnr : rldnr,
      p_bukrs : bukrs,
      p_tip_bp : abap.char( 1 ),
      p_bp : lifnr,
      p_status : abap.char( 1 ),
      p_AUGDT_d : augdt,
      p_AUGDT_h : augdt,
      p_budat_d : budat,
      p_budat_h : budat,
      p_xblnr : xblnr
      aqui deberia recibir
      returns
      ......

      Si hay otra forma de hacerlo avísame por fa



      Originalmente publicado por juanma Ver Mensaje
      Hola,

      fuera de hacerlo o no en ABAP 7.5, la sentencia que pienso que deberiás usar es la siguiente:

      Código:
      DELETE lt_datos WHERE blart not in s_blart.
      Porque para recomerdarte el AMDP a realizar necesitaría más información de lo que tienes que hacer.

      Saludos!
      k

      Comentario


      • #4
        Hola, disculpa que he estado ausente, has podido resolver tu problemática?

        Comentario


        • #5
          Originalmente publicado por juanma Ver Mensaje
          Hola, disculpa que he estado ausente, has podido resolver tu problemática?
          Hola si, gracias, con la primera opción que me diste.

          Comentario

          Trabajando...
          X