Problemas con Batch-Input y ventanas dinámicas

Saludos,

Reuslta ser que estoy llamando a la VA01 usando la opcion de crear con referencia con Batch input, pero dependiendo de la clase de pedido la ventana de referencia abre con una o multiples pestañas.

La grabacion la hice con múltiples pestañas así que cuando se abre solo una pestaña me da error diciendo que las demás pestañas no existen.

Como me puedo librar de esto?

@Smota ilumíname Sr. de los iluminatis.

Hay otro problema, resulta ser que depende del tipo de pedido en referencia se abren dos tipos de ventanas diferentes, entonces el batch se vuelve loco cuando encuentra o no encuentra la ventana X, pero lo más que puedo hacer es condicionarla.

Una sola pestaña:

Un reguero de pestañas con otra clase de pedido diferente wtf?:

Para el batch input puedes hacer lo siguiente, una la clasica, condiciona sentecias batch por clase de pedido, si sabes cuales levantan multiple ventas y cuales no, podras condicionar las sentencias, esto es haciendo dos grabaciones, una con multiple ventanas y otra con single screen.

La otra manera, es preguntar si el campo que requieres existe, y si no existe no enviar la sentencia correspondiente a ese dato inesistente.

Asi solucionas, trabajar con batch siempre resulta hard, pero despues que esta hecho es una delicia, al final los usuarios finales no ven el trabajo sucio. Por eso le llamamos de dark side of SAP.

@smota lo de condicionar según clase de pedido es lo que tenía pensado hacer, pero como pregunto si el campo existe antes de hacer el call transaction?

GET PARAMETER ID ‘CAC’ FIELD l_kokrs.

  IF l_kokrs IS INITIAL.
            sentencia batch
  endif.

si tiene valor entonces existe, pero si no tiene valor entonces no existe.
Asi lo condicionas, y con eso solucionas.

Imposible, porque tengo acceso a esos parameters ids después de hacer el CALL TRANSACTION, pero es antes de llenar mi tabla de batch-input que necesito saber si existirán o no las pestañas.

La única opción es preguntar por las clases de pedido como dices y llamar una grabación u la otra, pero veré si existe un simular batch-input porque me resulta tedioso preguntar por todas esas clases de pedido.

no man, mira como funciona, el batch input va por parte.

sentencia batch uno
sentencia batch dos…
ect…
sentencia que llama la subscreen… OJO aqui.
GET PARAMETER ID ‘CAC’ FIELD l_kokrs.
IF l_kokrs IS INITIAL.
sentencia batch que sigue si el parametro existe.
else.
sentencia batch que sigue si no existe el parametro.
endif.

luego mas sentencias batch.
Y ahora el call transaccion.

A cuales sentencias te refieres?? Porque antes del call transaction lo que hago es llenar una tabla interna con los datos de las pantallas. A esas te refieres? Si es así entonces lo que me dices es que haga el GET PARAMETER despues de que llene el subscreen?

Dejame ir probando a ver.

Pega un poco del codigo que estas usando o mejor dejame buscar un ejemplo para que veas lo qeu digo.

DATA: l_kokrs TYPE kokrs.


******** Grabacion Batch-input **************************


  PERFORM batch_input USING 'X' 'SAPMKBUD' '0300' .
  PERFORM batch_input USING ' ' 'BDC_CURSOR' 'CODIA-AUFNR' .
  PERFORM batch_input USING ' ' 'BDC_OKCODE' '/00' .

  GET PARAMETER ID 'CAC' FIELD l_kokrs.

  IF l_kokrs IS INITIAL.
    PERFORM batch_input USING 'X' 'SAPLSPO4' '0300' .
    PERFORM batch_input USING ' ' 'BDC_CURSOR' 'SVALD-VALUE(01)' .
    PERFORM batch_input USING ' ' 'BDC_OKCODE' '=FURT' .
    PERFORM batch_input USING ' ' 'SVALD-VALUE(01)' input3 ."Aqui Va La Sociedad
  ENDIF.

  PERFORM batch_input USING 'X' 'SAPMKBUD' '0300' .
  PERFORM batch_input USING ' ' 'BDC_CURSOR' 'CODIA-AUFNR' .
  PERFORM batch_input USING ' ' 'BDC_OKCODE' '/00' .

Lo hice así pero no funciona para los campos del tab, probé con el campo cl. de pedido y sí lo trae.

Pero como es que ese GET PARAMETER trae el dato si el PERFORM batch_input lo que hace es llenar una simple tablita interna?? Eso es nuevo para mí.

Es magia, mi teoria es que el batch se ejecuta regresando a la sentencia origen, paso por paso, y hay se encuentra el GET y entonces funciona, listo, has el get al pedido o a la factura, si ves la factura, entonces metes los batch de la factura, si ves el pedido metes los batch que mueven el tab de factura. con eso vas a solucionar

Lo estoy haciendo al pedido y/o factura pero no viene nada (SUBRC = 4).

Y que paso con la frase de que para el pedido si te trae algo? tampoco te sirve con eso?

No, lo que digo es que probé con el campo Clase de pedido que está afuera, que ese siempre tendrá valor.
Solo probé con eso para confirmar que esté funcionando el GET PARAMETER. dejame intentar otras cosas y al final digo con que me quedé pa resolver.

Gracias por tu time dude.

Hola @Haden_Yasser_ espero no contestar demasiando tarde y como observo que aun no posteas la forma en que lo resolviste, me atrevo a comentar.

Según pude entenderte el problema lo presentas al colocar una clase de documento debido que el control de copia te define que pestaña se activara y que campos te solicitara como es el caso de los pedido, oferta, factura etc.

Observa que el campo que te solicita independientemente de la clase de documento que coloques siempre es VBELN y lo unico que cambia es la tabla.

Por ejemplo - para factura

Para Pedido

Para Oferta

mi sugerencia es que intentes crear una tabla “Z” donde leas envies a leer la tabla y la dynpro que debe de tomar dependiendo la clase de pedido y en tu grabación solo debes de comentar las lineas de codigo que no son requeridas.

Por ejemplo, al momento de ingresar una clase de pedido donde el control de copia te pide el # de pedido, debes de comentar el resto del codigo de esa dynpro.

Saludos.

1 me gusta

Gracias @mpalomo,

Si sé cuales son los campos de cada pestaña, al final utilizaremos una sola clase de pedido que llama el tab referencia con factura y así no tengo problemas. Antes la grabación se volvia loca porque solo salía un tab en algunos casos y en otros salían varios tabs.

Buenas,

en vez de hacer un Batch Input, no te sirve ninguna bapi? Por ejemplo:

BAPI_SALESORDER_CREATEFROMDAT1
BAPI_SALESORDER_CREATEFROMDAT2

Un saludo.

La 1 creo que no te va a servir, pero la 2 no tiene mala pinta,

BAPI_SALESORDER_CREATEFROMDAT2

Ohhhh @Haden_Yasser_, también estás por aquí, placer leerte.

Orlando Cuevas (AriasMotors)

1 me gusta