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?
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?
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
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.
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.
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.
Hola Buenos Dias , en primer lugar deberias hacerle un debugin al programa que tiene el batch-input y colocarlo en modo visible para ver que te esta haciendo y saber por que te da el error, para hacer esto debes de hacer lo siguiente :
1.- te vas a parar exactamente antes de la instruccion que llama a la pantalla ejemplo :
CALL TRANSACTION 'F-90’
USING bdcdata
MODE V_MODO
UPDATE 'S’
MESSAGES INTO messtab.
2.- antes de esta instruccion parado en el debuging vas a cambiar el contenido de la variable MODE a ‘A’, al continuar veras el batch-input de forma visible y vas a ver donde se queda y por que.
espero te esto te encamine a solucionar tu problema