Tengo una curiosidad, quisiera crear un programa el cual lea un archivo excel y esos datos guardarlos en una tabla interna, luego de ello me llame a la transacción SM30 (hay una función, no recuerdo el nombre, se los agradecería si alguien lo sabe), al llamar a la SM30 me posicione en Entradas nuevas, y automáticamente se inserten mis datos de la tabla interna a la transacción y de ahi el usuario pueda Guardar.
¿alguien tiene una idea de como poder realizar esta inserción masiva ? .
me apunto a este tema.
son cosas recurrentes aqui con nosotros esas, y los consultores han pasado de largo con esplicarnos.
Mas adelante pedire yo si existe alguna manera de poder imprimir en modo underground, ya que todas las impresiones mandan a fuerza la ventana de windows o el equivalente en sap y pues eso ya nos lo estan pidiendo a gritos quitarlo sin nostros tener conocimiento
espero te puedan ayudar, y claro me ayudarian igual
Que tal Wleuyacc, me da la impresión que necesitas leer la utilización de la transacción LSMW, básicamente cubre lo que necesitas hacer. Uno de nuestros amigos del foro @Alvan1 elaboró un tutorial muy bien explicado desde inicio a fin. Lo único que debes de considerar es la creación de tu tabla “Z” la cual quieres alimentar.
Hola @Wleuyacc, también otra forma en la que podrías hacer lo que necesitas pero igual y te lleva un poco mas de tiempo o tal vez menos que el LSMW sería crear una grabación en la SM35 haciendo referencia a la SM30 y esa grabación llevarla a código ABAP y ahí hacerle el LOOP a la grabación.
Otra opcion podria ser esta: crear tu propia transacción en la SE93 con los siguientes parámetros
Y crearle la grabación a tu transaccion Z que en este caso es “ZPRB”; y la grabación de la SM35 seria mas directa referenciandola a tu transaccion “Z”.
De igual forma tendrías que hacer tu código ABAP para que funcione al momento de poblarla masivamente.
Ya tienes ahora un par de soluciones, cualquier duda déjanos saber.
-Nota si vas a insertar datos a una tabla transparente ''Z" aclaro solo a una tabla “Z” pues no hay nada mejor que hacerle un insert directo.
1.Subir archivo delimitado con comas desde tu programa ABAP 2.El archivo lo lees y lo separas con el SPLIT y lo metes dentro de una Tabla Interna 3.Lees tu tabla interna y mientras haces el LOOP realizas la sentencia INSERT 4.Y listo con esto quedaría tu actualización de datos
Hola @Alvan1 , gracias por tu apoyo, pues si realizare la grabación y lo llevare a código ABAP, apenas tenga el código lo publicare para un apoyo futuro.
Disculpa, yo también requiero crear un programa Z, que me lea un doc de excel, para que lo procese y me actualice un campo, Actualmente el usuario lo hace directamente desde la LSMW, pero la intensión es quitarle ese permiso y lo haga desde un Z. Disculpa las molestias y saludos.
Hola que tal…si entiendo que es mucho mas facil usar la LSMW, pero en mi caso al usuario se le quitaran los permisos a su rol, por eso requiero de un programa abap que me lea un excel y darle tratamiento a los datos.
Saludos Wleuyacc,Si deseas realizar un proceso masivo en BACKGROUND (El usuario solo ejecutara un botón del proceso y veras el Log respectivo, mas no tendrá la posibilidad de ver,modificar y de darle guardar como indicas, eso se realiza en modo DIALOGO) de insertar registros en la tabla Z, las propuestas de LSMW o BATCH a la SM30 que brindan los compañeros es adecuado.( Ahora en DIALOGO estas opciones tendrías que estar en ejecución de modo visualización lo cual implicaría dar ENTER, ENTER para la opción de BATCH y ver pasar la inserción y guardado cuando usas el LSMW por cada registro del Excel, ademas que se guardara en la tabla Z, a no ser que tenga opciones el LSMW o BATCH para realizar en modo invisible y mostrar en modo visualización la SM30 hasta el ultimo registro a insertar SIN HABER REALIZADO LA OPCIÓN DE GUARDAR que es lo que entiendo que deseas) , pero si es en DIALOGO dado que quieres estar en la SM30 ( por que tiene acceso a visualizar y poder modificar si consideras necesario antes de dar a guardar ) puedes ir por un un ALV con las opciones de CRUD y un botón de Importar data del Excel ( Importas y realizas un Refresh al ALV ) para que el usuario pueda visualizar y modificar si lo considera y guardar finalmente algo equivalente a la SE16N.
Considero que el modo BACKGROUND es acertado, me inclino a que puedas creas un programa de captura de datos del excel y realizas un INSERT masivo a la tabla Z o MODIFY. ahora si tomamos las opciones de los compañeros me voy por el BATCH para temas masivos para usuarios finales, creando un programa Z con permisos pertinentes con las ventajas y desventajas propuestas.El LSMW, lo usa mas el área de tecnologías para cargas iniciales masivas, de cara al usuario estos tienen que ser especializados debido al grado de complejidad, por otro lado es gestionar las autorizaciones al usuario a una transacción critica como lo es el mismo. La opción DIALOGO, un ALV como indique anteriormente.
Amigos tengo un codigo Abap, donde se carga un EXCEL y llena una tabla interna, como lo que busca @Wleuyacc …por si les interesa diganme y lo subo como tema
Considero que sí le sería de ayuda. Si está dentro de sus posibilidades puedes crear un gist que es pegarlo en esta dirección Gist y luego compartir el enlace en una publicación
Gracias amigos por sus comentarios, llegue armar un Programa ABAP, importe el excel y una serie de validaciones a los registros importados, es bueno ver la unión que hay en el grupo , sigamos creciendo ! .
Yo he utilizado una funcion llamada ‘ALSM_EXCEL_TO_INTERNAL_TABLE’
*PASAMOS EL ARCHIVO DE EXCEL A LA TABLA INTERNA
CALL FUNCTION ‘ALSM_EXCEL_TO_INTERNAL_TABLE’
EXPORTING
filename = P_FILE
*COLUMNA DONDE SE EMPIEZA A BUSCAR DATOS
i_begin_col = 1
*RENGLÓN DONDE SE EMPIEZA A BUSCAR DATOS
i_begin_row = 1
*COLUMNA DONDE TERMINA DE BUSCAR DATOS
i_end_col = 3
*RENGLÓN DONDE TERMINA DE BUSCAR DATOS
i_end_row = 10
TABLES
*TABLA INTERNA DONDE ME REGRESA LOS DATOS
intern = it_excel
EXCEPTIONS
inconsistent_parameters = 1
upload_ole = 2
OTHERS = 3.
Ya solo basta usar alguna función para buscar el archivo en el ordenador, o si esta dentro de algún servidor remoto, habrá que ingresar las funciones que requieras