Ver Mensaje Individual
  #3  
Viejo 13/12/11, 06:54:30
NKZero NKZero is offline
Junior Member
 
Fecha de Ingreso: jun 2008
Mensajes: 5
Hola Cristiana, te comento un poco el proceso a rasgos generales:
Cada celda de excel tiene un check que indica si está bloqueada o no (Boton derecho encima de la celda, Formato de celdas, Pestaña proteger).
Aunque este flag esté marcado, hasta que no se protege la hoja (Menú Revisar, Proteger Hoja) no se hace efectivo dicho bloqueo.

Por defecto el flag bloqueado viene marcado para todas las celdas (si creas un excel en blanco podrás comprobarlo), por tanto el concepto de bloquear sería a la inversa, tendríamos que desbloquear aquellas celdas que queremos que sean editables.

Todo esto es en excel, una vez compredido los pasos a realizar en excel hay que trasladarlos a SAP (hago un poco copy paste de lo que puse antes XD).

1 - Crear Excel:

* Crear el excel
CREATE OBJECT excel 'EXCEL.APPLICATION'.
SET PROPERTY OF excel 'VISIBLE' = 1. " Lo puedes poner a 0 si quieres que sea un proceso e fondo.

* Se crea el libro
CALL METHOD OF excel 'WORKBOOKS' = workbook.

* Se añade el libro
CALL METHOD OF workbook 'ADD'.

* Se selecciona la Hoja
CALL METHOD OF excel 'WORKSHEETS' = sheet
EXPORTING #1 = 1. " Este es el número de la hoja que seleccionamos

* Se pone como activa la hoja (es como hacer clic en la pestaña de la hoja que tienes seleccionada en Sheet).
CALL METHOD OF sheet 'ACTIVATE'.


2 - Seleccionar Celda con Objetos OLE y bloquear / desbloquear:

* Se selecciona la celda que queremos de la hoja
CALL METHOD OF sheet 'CELLS' = cell
EXPORTING
#1 = gv_row "FILA
#2 = p_j. "Columna (en número)

* Marcamos o desmarcamos el flag de protegido (0 - Desmarcar | 1 - Marcar)
SET PROPERTY OF cell 'LOCKED' = 0. "Unprotect cell

3 - Proteger la hoja (esto hará que las celdas protegidas no sean editables):
Justo antes de guardar los cambios en la hoja (despues de rellenar todas las celdas y demás).

* Protejemos la hoja con este método.
CALL METHOD OF gv_sheet 'PROTECT'
EXPORTING #1 = ''. " Si no se quiere password se deja vacío (ojo son 2 comillas simples).

* Se guarda el excel donde queramos
CALL METHOD OF sheet 'SAVEAS'
EXPORTING
#1 = lv_fullpath " Ruta
#2 = 1.


Tras realizar esto, todas las celdas que tengan activo el flag Bloqueado quedarán bloqueadas.

Consejo: Trata todas las celdas que rellenes con datos o formen parte de la tabla de salida, de esta forma te garantizas que cada una de ellas tiene el formato que deseas. Recorre las celdas una a una y ve marcando si la celda debe ser bloqueada o no (independientemente de como venga por defecto así siempre tendrás controlado cuales se van a desbloquear y cuales no).

Espero que te ayude, si tienes alguna duda más, tan solo tienes que decirlo.
Un saludo.

Úlima edición por NKZero fecha: 13/12/11 a las 06:59:08.
Responder Con Cita