Call Transaccion pasando un rango de valores

Colapsar
X
 
  • Tiempo
  • Mostrar
Limpiar Todo
nuevos mensajes
  • andresf02
    Senior Member
    • nov
    • 190

    #1

    Call Transaccion pasando un rango de valores

    Buenos dias.

    Cree un reporte que muestra todas las ordenes de venta que se quedan retenidas o bloqueadas por algun tema de credito. El reporte es interactivo y al hacer click sobre una linea (Orden de venta por linea) hace un ]"call transaction" a la transaccion VKM3 (Liberacion de credito) pasando como parametro el numero de la orden de venta de la linea donde se hice click.

    Lo anterior funciona perfecto. Lo que estoy pensando ahora es crear un boton en el reporte para que si el usuario quiere liberar todas las ordenes de venta al tiempo, se haga el mismo CALL TRANSACTION a la VKM3 pero pasandole todas las ordenes de venta que se esten mostrando en ese momento en el reporte.
    Por ejemplo:

    El reporte muestra lo siguiente:


    Orden de venta | Status Credito
    --------------------------------
    1000000000001 | B
    1000000000002 | B
    1000000000003 | B


    En este momento si se da click sobre la linea 2 (orden 1000000000002) se llama sin problemas a la VKM3 y se pasa la orden 1000000000002 y el usuario la puede liberar y volver al reporte.

    Pero, lo que quiero es que si se da click al boton "LIBERAR TODO", se haga el mismo CALL TRANSACTION a la VKM3, pero se pasen al mismo tiempo todas las ordenes que muestra el reporte 1000000000001, 1000000000002, 1000000000003. Asi cuando el usuario vea la VKM3, pueda liberar las 3 al mismo tiempo.


    Mi codigo para hacer la llamada por orden de venta individual es:
    Código:
    WHEN 'CMGST'.         " STATUS GLOBAL DE CREDITO
            SET PARAMETER ID 'AUN' FIELD wa_tabcon-vbeln.
            call TRANSACTION 'VKM3' AND SKIP FIRST SCREEN.

    Lo que necesitaria es como poder pasar una lista de valores al ID 'AUN'

    Gracias!
  • kiboqac
    Member
    • mar
    • 55

    #2
    No comprendo mucho el funcionamiento de la transaccion; pero entiendo que quieres pasarle todos los documentos juntos en el Select Option de la transaccion.

    Para eso deberias de utilizar un SUBMIT al reporte RVKRED04 y pasarle tu tabla interna al Select Option del VBELN.

    Tal vez entendi mal el problema, pero la otra opcion seria realizar un Loop a todas las ordenes y realizar tu call transaction.

    Si no es ninguna de las dos, entonces no entendi nada :P
    Kibo

    Comentario

    • javi_garcia18
      Junior Member
      • jun
      • 23

      #3
      Hola andresf02 lo que entiendo es que necesitas pasar todas las ordenes de venta con solo darle click a un boton, entonces ya no se utilizaria un call transaction mas bien como dice kiboqac tendrias que armar un rango con todas las ordenes de venta que muestra tu alv y por ultimo hacerle un submit al programa que tiene la transaccion VKM3 y retornarias el programa. por ejemplo:

      SUBMIT rfitemgl
      WITH sd_bukrs-low EQ p_bukrs
      WITH sd_saknr IN gr_hkont
      WITH x_opsel EQ ' '
      WITH x_aisel EQ 'X'
      WITH x_norm EQ 'X'
      WITH x_park EQ ' '
      WITH x_merk EQ ' '
      WITH so_budat IN s_budat
      WITH FREE SELECTIONS texpr
      WITH pa_vari EQ gv_variante AND RETURN.

      aqui lo que hago estoy haciendo un submit a un programa estandar como es tu caso y ademas le estoy mandando un rango de cuentas en el gr_hkont y por ultimo le estoy haciendo un RETURN para que cuando termine de ejecutar el programa me retorne a mi programa asi es transparente para el usuario.

      espero que te haya servido, cualquier cosa me comentas.
      Si necesitas ayuda solo pidemela!!

      Comentario

      • andresf02
        Senior Member
        • nov
        • 190

        #4
        Muchas gracias a ambos.

        Si, efectivamente lo solucioné con un SUBMIT.

        Aqui esta el codigo por si a alguien mas le sirve


        Código:
        when 'LIBERA_ALL'.    "Click en el boton  LIBERAR TODO
              DATA: WSELTAB LIKE RSPARAMS.    
              DATA: ISELTAB LIKE TABLE OF WSELTAB.
              DATA: wa_tabcon2 LIKE LINE OF it_tabcon.
        
              free: wa_tabcon2,      "Reiniciar las tablas internas y wa para cada 
                      ISELTAB,           "ejecucion
                      wseltab.
        
              if it_tabcon[] is not initial.         "tabla interna con datos del reporte
                WSELTAB-SELNAME = 'VBELN'.
                WSELTAB-KIND = 'S'.
                WSELTAB-SIGN = 'I'.
                WSELTAB-OPTION = 'EQ'.
                LOOP AT it_tabcon into wa_tabcon2.     "leo toda la tabla interna y
                  WSELTAB-LOW = wa_tabcon2-vbeln.  "voy guardando el No. orden
                  APPEND WSELTAB TO ISELTAB.
                ENDLOOP.
        
        
        "Hago el submit pasando todo el rango con los No. de ordenes de venta al "mismo tiempo
                SUBMIT RVKRED04 WITH SELECTION-TABLE ISELTAB AND RETURN
                  WITH MNGRP = 'ACTION'
                  WITH MNCOD = 'CALL'
                  WITH DATUV = '00000000'
                  WITH DATUB = '99991231'
                  WITH STAI1 = 'TSRL'.
              ENDIF.

        Muchas Gracias de nuevo

        Comentario

        Trabajando...