Hola a todos,
A continuación escribiré un código de un programa para la carga masiva de datos directamente en una tabla. Este método no es muy recomendable(se recomienda mediante batch input o LSMW), ya que se tiene que tener especial cuidado a la hora de introducir los datos, puesto que si queremos cargar directamente en tabla con, por ejemplo, el código que pondré a continuación ha de estar los datos del fichero «.txt» en las mismas posiciones que tiene la tabla, si no cuando vayamos a ver la tabla podemos encontrarnos con problemas.
Bueno, el código de carga de una tabla es bastante simple:
report ZPROGRAM no standard page heading.tables pa0006. «Tabla del infotipo 0006 ******************************************************************* * * DECLARACION DE VARIABLES Y ESTRUCTURAS * *******************************************************************data: ztab type table of pa0006. data: l_ztab like line of ztab. data q_return like syst–subrc.******************************************************************* * * CODIGO DE PROGRAMA * ********************************************************************PANTALLA DE SELECCION, en esta zona indicamos que parametros queremos que nos muestre* cuando ejecutamos el programa, en este caso solo será un parámetro obligatorio selection-screen: begin of block a1 with frame title text–001. parameters: p_ruta like rlgrap–filename obligatory lower case. selection-screen: end of block a1. * aquí hacemos que el parámetro pueda seleccionar por medio del matchcode la situación * del fichero de forma cómoda start-of-selection. *Comprobamos que el fichero realmente existe *Recorremos la tabla interna para guardarla directamente en la tabla insert pa0006 from l_ztab. «Comprobamos si hay errores endloop. SKIP. «escritura al finalizar el programa *********************************************************************** *&——————————————————————–* form get_ws_filename. data: l_files type filetable, call method cl_gui_frontend_services=>file_open_dialog *———————————————————————* call function ‘WS_QUERY’ if syst–subrc ne 0 or q_return ne 1. *$——————————————————————–* form subir_fichero. DATA: l_nombre TYPE string. l_nombre = p_ruta. CALL FUNCTION ‘GUI_UPLOAD’ IF sy–subrc <> 0. endform. |
Vuelvo a recordar que siguiendo este ejemplo, en el fichero deberia tener esta estructura EXACTA, ya que de no ser así, en algún campo estaríamos introduciendo la información incorrecta.
La estructura en este caso debería ser la estructura de la tabla PA0006, que se puede comprobar en la SE11:
MANDT | Mandante |
PERNR | Número de personal |
SUBTY | Subtipo |
OBJPS | Identificación de objeto |
SPRPS | Indicador de bloqueo para registro de maestro de personal |
ENDDA | Fin de la validez |
BEGDA | Inicio de la validez |
SEQNR | Número de un registro de infotipo para misma clave |
AEDTM | Fecha última modificación |
UNAME | Nombre del responsable que ha modificado el objeto |
HISTO | Indicador de historial |
ITXEX | Existe texto para infotipo |
REFEX | Existen campos referencia (costes primarios/secundarios) |
ORDEX | Existen campos de notificación |
ITBLD | Control dynpros infotipo |
PREAS | Motivo de modificación Datos maestros |
FLAG1 | Campo de reserva/ campo no utilizado |
FLAG2 | Campo de reserva/ campo no utilizado |
FLAG3 | Campo de reserva/ campo no utilizado |
FLAG4 | Campo de reserva/ campo no utilizado |
RESE1 | Campo de reserva/ Campo no utilizado de longitud 2 |
RESE2 | Campo de reserva/ Campo no utilizado de longitud 2 |
GRPVL | Valor de agrupamiento p.contratos por ocupación |
ANSSA | Clase de registro de direcciones |
NAME2 | Nombre de contacto |
STRAS | Calle y número |
ORT01 | Población |
ORT02 | Distrito |
PSTLZ | Código postal |
LAND1 | Clave de país |
TELNR | Nº teléfono |
ENTKM | Distancia en kilómetros |
WKWNG | Viviendas para el personal |
BUSRT | Ruta del autobús |
LOCAT | Cpo.adicional direc. |
ADR03 | Calle 2 |
ADR04 | Calle 3 |
STATE | Región (Estado federal, «land», provincia, condado) |
HSNMR | Nº (edificio) |
POSTA | Identificación de una vivienda en una casa |
BLDNG | Edificio (número o sigla) |
FLOOR | Planta del edificio |
STRDS | Sigla de vía pública |
ENTK2 | Distancia en kilómetros |
COM01 | Clase de comunicación |
NUM01 | Número de comunicación |
COM02 | Clase de comunicación |
NUM02 | Número de comunicación |
COM03 | Clase de comunicación |
NUM03 | Número de comunicación |
COM04 | Clase de comunicación |
NUM04 | Número de comunicación |
COM05 | Clase de comunicación |
NUM05 | Número de comunicación |
COM06 | Clase de comunicación |
NUM06 | Número de comunicación |
INDRL | Sólo relevante para Japón |
COUNC | Código de condado |
RCTVC | Código de la ciudad |
OR2KK | Sólo relevante para Japón |
CONKK | Sólo relevante para Japón |
OR1KK | Sólo relevante para Japón |
RAILW | Subscripción soc.ferrocarril |
ZSECTOR | Campo character, longitud 40 |
Recuerda:
Si quieres esta página siga en pié pudiendote ayudar en el día a día, dona, cualquier donativo hará que pueda ayudarte más.