Foro de programación ABAP

SAP / ABAP => Programación ABAP => Mensaje iniciado por: Carlos en 24 de Octubre de 2007, 03:12:25 pm

Título: COPY / PASTE en table control
Publicado por: Carlos en 24 de Octubre de 2007, 03:12:25 pm
Hola, tengo un table control al que le quiero poner el icono de pegar. Lo que intento es copiar desde un excel unos 200 registros y pegarlos a la vez para no tener que ir copiando y pegando de 10 en 10.  :P

No se si me he explicado lo suficiente.


Gracias.
Título: Re: COPY / PASTE en table control
Publicado por: oscar en 24 de Octubre de 2007, 05:15:08 pm
Hola Carlos.

Este es un trozo de código para hacer lo que quieres   ;)

La variable que pone hexa1 yo la utilicé para copiar varias columnas de un excel y el value '09' indica el separador de las columnas.

Código: [Seleccionar]
  DATA: file_table_clip TYPE STANDARD TABLE OF file_table.
  DATA: wa_file(1024).
  DATA: vv_menge(17).
  DATA: hexa1 TYPE x VALUE '09'.

  CALL METHOD cl_gui_frontend_services=>clipboard_import
    IMPORTING
      data                 = file_table_clip
    EXCEPTIONS
      cntl_error           = 1
      error_no_gui         = 2
      not_supported_by_gui = 3
      OTHERS               = 4.
  IF sy-subrc = 3.

    EXIT.
  ELSEIF sy-subrc <> 0.
    EXIT.
  ENDIF.

  LOOP AT file_table_clip INTO wa_file.
    SPLIT wa_file AT hexa1 INTO i_pantalla2-matnr
                              vv_menge
                              i_pantalla2-bstme.
    MOVE: vv_menge TO i_pantalla2-menge.
    APPEND i_pantalla2.
  ENDLOOP.

Un saludo.......
Título: Re: COPY / PASTE en table control
Publicado por: oscar en 30 de Mayo de 2008, 12:39:39 pm
Me ha llegado un correo y me comentan que les da un error al compilar el ejemplo antes comentado.

El error es el siguiente:
"HEXA1" must be a character-type data object (data type C, N, D, T or STRING) .      
Solución para este problema:

Tenéis que ir a: Pasar a / Atributos

Os saltará una pantalla, pues abajo a la izquierda hay que quitar el flag Verif.unicode activas

Un saludo.
Título: Re: COPY / PASTE en table control
Publicado por: spertaculos en 04 de Junio de 2008, 06:10:38 pm
Hola oscar ,
estoy intentando usar ese codigo en un programa z ( es un simple report ) , he encontrado el error
"HEXA1" must be a character-type data object (data type C, N, D, T or STRING) .     

pero cuando he quitado el flag  Verif.unicode activas , tenia otro error :
The program "Y_prog" is not Unicode-compatible, according to its program attributes

que tengo que hacer ?
muchas gracias  :)
Título: Re: COPY / PASTE en table control
Publicado por: Carlos en 05 de Junio de 2008, 09:21:10 am
Hola,
por mi parte he copiado el código y lo he pegado en un programa nuevo.

En un principio me salía el primer mensaje de error pero una vez quitado el flag me ha funcionado correctamente.

Yo he probado con la versión 6.00. Quizás sea un problema de versiones.

Un saludo.
Título: Re: COPY / PASTE en table control
Publicado por: spertaculos en 05 de Junio de 2008, 10:43:01 am
hola Carlos ,
si tienes razon quizás problema de version.
sabes , en el debuger he visto que el separador es '#' .para solocionar el problema del type x , he declarado :
CONSTANTS : hexa1(1) TYPE c VALUE '#'.
pero el SPLIT no toma el esparador en cuenta y copia todo en i_pantalla2-matnr  ??? .

muchas gracias de antemano .
Título: Re: COPY / PASTE en table control
Publicado por: oscar en 05 de Junio de 2008, 11:07:03 am
Hola Mehdi.

Yo trabajo también con la versión 6.00.

No se me ocurre ahora mismo como solucionar tu problema. A ver si hay suerte y alguien lo sabe.

 ???
Título: Re: COPY / PASTE en table control
Publicado por: spertaculos en 05 de Junio de 2008, 04:29:43 pm
Hola Oscar ,
acabo de solucionar el problema , he dejado el flag  Verif.unicode activas . y he combiado la declaracion de la variable hexa1 con eso :
Código: [Seleccionar]
hexa1(1) TYPE c VALUE CL_ABAP_CHAR_UTILITIES=>HORIZONTAL_TAB.
ahora funciona muy bien :) .

pero tambien necesito mucho saber como puedo utilizar el typo X en mis programas  :D

muchas gracias