Ir al contenido

COPY / PASTE en table control

Respuestas
7
Visitas
26
Iniciado por
Carlos
Fecha
24 Oct 2007, 15:12
Tema anterior - Siguiente tema

Carlos

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.

oscar

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.


  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.......

oscar

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.

spertaculos

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  :)
Mehdi

Carlos

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.

spertaculos

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 .
Mehdi

oscar

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.

???

spertaculos

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 :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
Mehdi