Está en la página 1de 6

BATCH-INPUTS

8.1. INTRODUCCIN:

Un batch-input es un mtodo seguro, fiable y rpido de tran !"rir grandes cantidades de datos a un sistema SAP, para hacer muchas altas, modificaciones o borrados. Se simula un proceso on-line (transaccin donde interacciona el usuario , para someter a los datos a todos los che!ueos y #a$i%aci&n" !ue sufrir"an si se metieran manualmente, para sal#aguardar la integridad de los mismos (cosa !ue no ocurrir"a con un 'ODI() directo a una tabla del $.$., eso es lo importante de los batch-inputs . Pero en cambio n& re!uieren interaccin. %ay * +,t&%& de batch-input& 'clsico( y 'call transaction(. )n el mtodo -c$. ic& se genera una 'sesin batch-input(. Se tiene un fichero con los datos, y un programa Abap*+ de con#ersin !ue crea la sesin (datos, pantallas, transacciones, comandos, .. es un /u"0& %" %at& , !ue simulan la e,istencia de un usuario !ue introducir"a los datos , !ue se almacena y se puede procesar. )ste mtodo es a 1ncr&n&& se procesan los datos ahora pero se actuali-an ms tarde. Permite m.ltiples transacciones. Se genera un $&0 para cada sesin, pero no se pueden generar en paralelo desde el mismo programa (slo puede abrirse un /uego de datos cuando se cierra el anterior . )n el mtodo -ca$$ tran acti&n los datos se crean &n-$in" al e/ecutar el programa de con#ersin, en lugar de crear una sesin. )s mucho ms rpido, pero poco .til para gran cantidad de datos (se perder"an datos si hay errores, pues no se guardan en la sesin batch-input . Se usa para dar de alta rpidamente pocos datos. )s un mtodo 1ncr&n&, #lido para una transaccin, rpido, pero n& se genera log, ni pueden tratarse errores a posteriori. )l proceso tiene * !a " & o (a " %" 2"n"raci3n: Un programa abap*+ 0"n"ra un lote batch-input con los datos a cargar o modificar (llamado 0/u"0& %" %at& 1 . 2a base de datos toda#"a no se modifica. Subtar"a de esta fase& Anlisis de los datos a transferir (saber !u datos hay !ue cargar , generacin de estructuras en $.$. para los nue#os datos (opcional , creacin de un fichero de te,to plano con los datos, desarrollo de un programa batch-input para la lectura, con#ersin y procesado de los datos. )n las primeras tareas colabora el cliente. o (a " %" Pr&c" a+i"nt&:)l lote de batch-input se pr&c" a, es decir, se e/ecuta el batch-input (el /uego de datos , hacindose efecti#as las modificaciones en la base de datos. Subtar"a & Procesado de los datos con el programa batch-input anterior, lan-amiento del /uego de datos (esta tarea no e,iste con el mtodo 'call transaction( , anlisis de los resultados y posibles errores (mucho ms sencillo con el mtodo batch-input 'clsico( .

8.*. (AS4 D4 24N4RACIN:

)s necesario codificar un pr&0ra+a Abap*+ de carga para !ue use, de forma automtica y con los datos !ue se deseen, la tran acci3n SAP !ue se necesita utili-ar en cada caso para la carga o modificacin masi#a de los datos. Pero antes hay !ue asegurarse de !ue n& e,ista ya en SAP un programa estndar (IBIP !ue haga lo mismo, para as" usar ste directamente. Se le llama desde la tran acci3n IBIP. Puede generarse un /uego de datos real, o un testeo con datos de prueba. 3ecesita como entrada un fichero de te,to con los datos a cargar, con un formato especial dado. $ebe indicarse por !u 454P1s se #a pasardo, en orden, y !u transacciones. 2a in!&r+aci3n !ue se re!uiere conocer para escribir este programa es& identificacin de la transaccin a usar (para conocer su cdigo, pulsar en cual!uier dynpro de la misma en Si t"+a 5 Statu 5 Dat& r"p& it&r6 5 Tran acci3n , nombre del(os programa(s !ue e/ecuta(n la transaccin, dynpros (pantallas !ue se atra#iesan (para

conocer su cdigo, pulsar en cada una de ellas en Si t"+a 5 Statu . 6ambin #eremos el nombre del +&%u$" p&&$ , ylos campos !ue se utili-an (para conocer sus nombres tcnicos, situarse sobre ellos y pulsar (15 Dat& t,cnic& , y leer el 'nombre de campo para batch-input( . Para &bt"n"r toda esta informacin hay !ue seguir todos los pasos !ue har"a el usuario. %acer una prueba e ir anotando los nombres de los comandos, dynpros, 7 !ue se usan. )sto para cada pantalla a procesar. 2o mismo si aparece una #entana de dilogo ( p&pup . )l tipo y la longitud de un ca+p& se consigue mirando en la tabla correspondiente, a la !ue se llega haciendo doble clic sobre dicho campo. 2os c3%i0& para pasar de una pantalla a otra pueden ser un 4NT4R, un botn, 7 Se #en pulsando (15 Dat& t,cnic& 5 C3%i0& %" !unci3n. 8tra forma de conseguir la informacin es a tra#s del Scr""n Paint"r, #iendo la lista de campos de cada dynpro. )n el programa hay !ue declarar (para a+b& mtodos de batch-input una tab$a int"rna con una estructura especial para ir guardando en ella toda la informacin anterior, !ue estructura los datos a transferir. )s como un registro de todas las pantallas y campos por los !ue #a a ir a#an-ando la simulacin de la transaccin. $ebe tener la misma estructura de la estructura SAP del$iccionario de $atos llamada BDCDATA& DATA BEGIN OF tabla OCCURS 0. INCLUDE STRUCTURE BDCDATA. DATA END OF tabla.

2os ca+p& !ue componen esta tabla * estructura son 9& PRO2RA' (: caracteres. 3ombre del module pool de la transaccin , D)NPRO (+ caracteres. Su n.mero , D)NB42IN(; carcter. Una <7< indica nue#a pantalla , (NA'(=9 caracteres. 3ombre del campo de la pantalla , (8A9 (:> caracteres. ?alor para dicho campo de la pantalla . %ay !ue guardar una entrada por cada dynpro, rellenando PRO2RA', D)NPRO y D)NB42IN, y luego usar APP4ND. @ por cada campo de pantalla !ue se use en la transaccin hay !ue guardar otra entrada, rellenando los campos (NA' y (8A9, y luego usar APP4ND o CO994CT. R"$$"n& de esta tabla& Para indicar nue#a pantalla (o la primera , guardar el nombre del programa (en PRO2RA' , nA dynpro (en D)NPRO y 071 en D)NB42IN (los otros B campos en blanco @ para cada campo de esa pantalla rellenar su nombre tcnico (en (NA' y su #alor (en (8A9 , !ue es uno de los datos a transferir al sistema. )n la .ltima entrada de por cada pantalla (sal#o la .ltima se guarda el comando BDC:O;COD4 en (NA', y en (8A9 el cdigo para pasar a la pantalla siguiente, como 0)C461, 0*B1 (para (* , ... 6ras cada APP4ND tabla hay !ue hacer un C94AR tabla, para n& de/ar #alores basura para la siguiente entrada. Ca & " p"cia$& campos repetidos #arias #eces en una dynpro (tienen el mismo nombre . Para especificar <u, campo concreto se debe rellenar, indicar entre parntesis el nA de l"nea donde est. )/emplo& 'O84 0sbooD-connid(= 1 TO tablafnam. Eon#iente crear una ubrutina para rellenar la tabla. 9$a+a%a t1pica:

PERFORM llenardynpro USING 0#00 $ .

SAPM!"M

4/"+p$& de tabla.

PROGRAM

DYNPRO

DYNBEGIN

FNAM

FVAL

SAPM38M

0100

X RS38M-program BDC_OKCODE ... ZBCA07F1 '/2' ...

SAPM38M

0200

X ... ...

8.=. OP4RACION4S:

Abrir " i3n:Para abrir o cr"ar una sesin de batch-input (es decir, crear un /uego de datos nue#o, #ac"o se usa el mdulo de funcin BDC:OP4N:2ROUP. )n el include BDCR4C77 hay subrutinas como la OP4N:2ROUP ya preparadas !ue llaman a estas funciones. )n el programa n& se puede abrir otra sesin si hay alguna ya abierta. %ay !ue usarlo antes de insertar ning.n dato.

CALL FUNCTION BDC%OPEN%GROUP & E$PORTING & CLIENT ' ()andante *obre el +,e *e e-e.,tar/ el bat.012np,t. & GROUP ' (no)bre de *e*23n4 .on el +,e *e 2dent252.a el -,e6o de dato* & 7OLDDATE ' (no *e e-e.,tar/ la *e*23n bat.012np,t 0a*ta la 5e.0a 2nd2.ada4 *al8o el ad)2n2*trador & 9EEP ' (*2 e* $ 4 la *e*23n *er/ reten2da4 :podr/ *er borrada por ,n ,*,ar2o .on per)2*o; & USER ' (,*,ar2o prop2etar2o de la *e*23n & E$CEPTIONS & CLIENT%IN<ALID ' # ()andante 2n.orre.to & DESTINATION%IN<ALID ' = & GROUP%IN<ALID ' ! & 7OLDDATE%IN<ALID ' > & INTERNAL%ERROR ' ? & @UEUE%ERROR ' A (error de blo+,eo & RUNNING ' B .

In "rtar %at& :)l mdulo de funcin BDC:INS4RT guarda en el /uego de datos el contenido de la tabla interna de estructura de BDCDATA, una #e- rellena. %ay !ue reali-ar esta operacin una #e- por cada transaccin a almacenar.

CALL FUNCTION BDC%INSERT & E$PORTING & TCODE ' (.3d26o de la tran*a..23n a e-e.,tar pop%lo.al TABLES dynprotab ' (tabla 2nterna .on e*tr,.t,ra BDCDATA & E$CEPTIONS & INTERNAL%ERROR ' # & NOT%OPEN ' = & @UEUE%ERROR ' ! & TCODE%IN<ALID ' > .

C"rrar " i3n:Una #e- completado el lote de batch-input, se cierra la sesin con el mdulo de funcin BDC:C9OS4:2ROUP, una #e- transferidos todos los datos al /uego de datos.

& & & &

CALL FUNCTION BDC%CLOSE%GROUP E$CEPTIONS NOT%OPEN ' # @UEUE%ERROR ' = OT7ERS ' ! .

CA99 TRANSACTION cdigo USIN2 bdcFtabla G 'OD4A H 4 H N I G UPDAT4S H A H 9 I G '4SSA24SINTO tablaFmensa/es I.

Para el mtodo ca$$ tran acti&n se usa esta sentencia Abap*+. Par.+"tr& :

'OD4& 4ndica el tipo de e/ecucin& A (en #isible. Se #en todas las pantallas por las !ue se pasa. Jtil para testeo , 4 (#isuali-acin slo errores , N (in#isible . UPDAT4& 6ipo de actuali-acin& A (as"ncrono , S (s"ncrono& no continua el proceso hasta !ue no se actuali-a la base de datos , 9 (local . '4SSA24S INTO& Eonsigue !ue todos los mensa/es !ue aparecer"an al hacer la transaccin manualmente (pero !ue n& se #en en batch-input se guarden en la tabla indicada, para luego mostrarlos o procesarlos (para poder conocer !u errores se han producido . 3ecesita una tabla interna con la estructura de BDC'S2CD9. Eampos de esa tabla& 'S2T)P (tipo del mensa/e , 'S2ID (clase del mensa/e , 'S28i (parmetro K n.mero i , 'S2NR (n.mero de mensa/e .

8.>. (AS4 D4 PROC4SA'I4NTO:

2a tran acci3n !ue procesa los lotes de batch-input es la S'=?, o bien por men.& Si t"+a 5 S"r#ici& 5 Batch-input 5 Tratar. Eon esta transaccin pueden consultarse, eliminarse y procesarse (haciendo doble clic en ella todas las sesiones batch-input (los /uegos de datos, !ue pueden ser& a procesar, errneos, procesados, en tratamiento y en bacDground . 8tra manera de lan-ar sesiones batch-input es e/ecutar el report RSBDCSUB. Eon l es posible procesar un batch-input /usto despus de ser generado, llamando a este report con los parmetros adecuados desde el mismo programa abap*+ !ue ha generado el lote.

Antes de procesar una sesin de batch-input puede c&+pr&bar " si los datos de entrada y la secuencia de pantallas programada es la esperada. Para ello, desde la transaccin S'=? elegir la sesin a anali-ar y Pa ar a 5 An.$i i @u"0& %" %at& . Eon doble clic en cada una de las dynpros pueden #isuali-arse stas.

9&0: Euando el sistema e/ecuta un batch-input, se #a generando un $&0 con el resultado de cada transaccin indi#idual. Se guarda la hora de inicio de la sesin, la hora de inicio de cada transaccin, los mensa/es !ue se generan (los mismos !ue si se hiciera la transaccin &n-$in" . Al final se generan unas " ta%1 tica & n.mero de transacciones !ue componen el lote, nA de ellas procesadas con ,ito y nA de ellas errneas.

Canc"$are/ecucin& Por el men. Si t"+a 5 S"r#ici& 5 Batch-Input 5 Canc"$ar se puede finali-ar la e/ecucin de un batch-input (no hay otra forma . Se continuar"a sta con 'Siguiente transaccin(.

Ca1%a %" " i3n: Si se cae el sistema durante la e/ecucin de un batch-input, al rearrancarlo aparecer ste como 0procesando1, pero n& est haciendo nada, aun!ue tampoco hemos perdido los datos. %ay !ue $ib"rar la sesin, yendo a la transaccin S'=?, indicar la sesin en cuestin y elegir @u"0& %" %at& 5 9ib"rar. )ntonces ya pueden e/ecutarse las transacciones !ue resten.

Tip& %" pr&c" a+i"nt& de un batch-input&

8i ib$": Se procesa cada transaccin #iendo todas las dynpros por las !ue se pasa. %ay !ue pulsar 4NT4R para pasar de una a otra. Se pueden modificar los #alores !ue automticamente se #an introduciendo en los campos. Se puede saltar alguna transaccin !ue no se desee procesar (poniendo AN en la barra de comandos , o bien para retrasar su e/ecucin. In#i ib$": )l proceso se hace de forma transparente al usuario, en bacDground, sin mostrar ninguna pantalla. Se debe esperar a !ue acabe la e/ecucin, o bien cancelar sta. Para #er el resultado se debe consultar el $&0 (!ue tambin se puede #er mientras se est procesando el /uego de datos . 8i ua$iBaci3n 3$& "rr&r" : )l batch-input se e/ecuta en modo in#isible sal#o cuando se produ-ca un error& entonces se detiene el proceso en la dynpro !ue contiene el campo errneo, para as" poder corregirlo manualmente, o cancelar esa transaccin indi#idual. 6ras esto, continua el proceso en modo in#isible (hasta el siguiente error, o hasta acabar .

También podría gustarte