Skip to Content

Muchas veces me he encontrado con la necesidad de tener que ingresarle textos largos a la descripción verbal (IT1002) de los objetos de OM, por lo que al final he realizando un programa para la carga los textos largos desde un archivo de texto en formato ASCII.

Probablemente muchos lo han resuelto de alguna otra manera, por lo que solamente comparto la forma en la yo lo realice.

Para poder subir la información es necesario indicar el periodo de vigencia del registro, el subtipo, tipo de objeto, código de objeto, lenguaje y la descripción según corresponda.

Para ello utilizo una plantilla de datos similar a la siguiente:

BEGDA

ENDDA

SUBTY

OTYPE

OBJID

LANGU

TEXTO

01.01.1960

31.12.9999

Z005

C

5000

S

Atender llamadas de los médicos de turno para la resolución de emergencias que requieran de servicios especializados, durante 24 horas del día, habiendo declarado que no tiene otro compromiso de trabajo durante las horas contratadas y que no adquirirá ninguno en tanto se mantenga vigente su relación laboral.


01.01.1960

31.12.9999

Z005

C

5001

S

Los salarios que perciban los trabajadores que ocupen puestos de la categoría ejecutiva y de los que se mencionan a continuación, comprenden el pago total de las horas que laboren al servicio, hasta un máximo de doce: Jefes, Subjefes y demás personal que tenga a su cargo funciones de representación, dirección, administración o supervisión…”

El programa me permite indicar la ubicación y el archivo a utilizar para la carga de información; así como poder indicarle los registros a cargar.

Para obtener la ubicación del archivo:

CALL FUNCTION ‘F4_FILENAME’
IMPORTING
file_name
= p_file.

Primeramente, cargo la información hacia una tabla interna a través de la función:

  call function ‘GUI_UPLOAD’
exporting
filename           
= vg_p_file
filetype           
= ‘ASC’
has_field_separator
= ‘X’
tables
data_tab           
= tg_datos
EXCEPTIONS
file_open_error        
= 1
file_read_error        
= 2
no_batch               
= 3
gui_refuse_filetransfer
= 4
invalid_type           
= 5
no_authority           
= 6
unknown_error          
= 7
bad_data_format        
= 8
header_not_allowed     
= 9
separator_not_allowed  
= 10
header_too_long        
= 11
unknown_dp_error       
= 12
access_denied          
= 13
dp_out_of_memory       
= 14
disk_full              
= 15
dp_timeout             
= 16
OTHERS                  = 17.

IF sysubrc <> 0.
write: ‘Error ‘, sysubrc, ‘cargando archivo…’.
skip.
ELSE.
DATA: vl_tregis TYPE i.

DESCRIBE TABLE tg_datos LINES vl_tregis.
READ TABLE tg_datos INTO sl_datos INDEX vl_tregis.
p_ini = 1.
p_reg
= vl_tregis.

La estructura de la tabla interna es la siguiente:

data:
begin of sl_datos,
begda
(10) TYPE c,
endda
(10) TYPE c,
subty
(4) TYPE c,
otype
(2) TYPE c,
objid
(8) type c,
langu
(2) TYPE c,
texto
(5000) type c,
end of sl_datos.

DATA:
tg_datos
like table of sl_datos with header line.

Debido a que la descripción verbal del objeto viene en una sola columna denominada TEXTO, a través de la función SPLIT_LINE hago la separación en líneas indicando el largo de cada línea.   Para ello asigno el resultado hacia una tabla interna de tipo pt1002.

data: ipt1002 type table of pt1002.

vg_texto = sl_datostexto.

call function ‘SPLIT_LINE’
exporting
text                   = vg_texto
len                   
= strlen( vg_texto )
maxlen                
= 72
sep_before            
=
sep_behind            
=
comment                =
tables
result_tab            
= ipt1002.

Finalmente, la carga del registro hacia el Infotipo 1002 la realice a través de la función RH_OBJECT_DESCRIPCION_WRITE.

       call function ‘RH_OBJECT_DESCRIPTION_WRITE’
exporting
langu              
= vg_langu
plvar              
= vg_plvar
otype              
= vg_otype
objid              
= vg_objid
begda              
= vg_begda
endda              
= vg_endda
subty              
= vg_subty
TABLES
ptxt1002
= ipt1002
EXCEPTIONS
object_not_found    
= 1
description_required
= 2
no_authority        
= 3
error_during_insert 
= 4
invalid_date        
= 5
undefined           
= 6
OTHERS               = 7.

Espero a alguien le sirva de referencia.

Saludos,

To report this post you need to login first.

Be the first to leave a comment

You must be Logged on to comment or reply to a post.

Leave a Reply