Foro de programacion ABAP
SAP / ABAP => Programación ABAP => Mensaje iniciado por: abapV01 en 18 de Febrero de 2014, 01:55:48 pm
-
Soy nuevo en esto de abap y estoy chocando con un programa que debo hacer. Lo que debo implementar es una pantalla donde pueda copiar los datos de un excel y pegarlos en una pantalla de sap donde queden de igual forma que excel (separados por filas y columnas) y quisiera saber si esto es posible con una table control. Ademas si seria útil algún manual o tutorial donde se implemente algo parecido, me vendría de maravilla.
Si alguien me puede ayudar le estaría muy agradecido. :) :) :)
-
Estimado...
No me queda muy claro tu problema cuando dices :
1. Lo que debo implementar es una pantalla donde pueda copiar los datos de un excel ---> Te refieres a importar desde un archivo excel o hacer copy paste ??
Si tu respuesta es importar los datos desde un archivo excel...la respuesta es utilizar un ALV ... recuerda que puedes utilizar OLE comunicarte con excel desde ABAP.
Para mayor informacion revisa este link : http://www.abap.es/centro_OLE_Excel.html
Aqui te voy a pegar un ejemplo que encontre hace un tiempo...lo puedes modificar para que en lugar de mostrar lo datos leidos los envie a un ALV..Si necesitas mas ayuda avisame.
Aqui va Programa ejemplo para subir archivo excel
REPORT YTEST .
types: begin of ttab ,
fld1(30) type c,
fld2(30) type c,
fld3(30) type c,
fld4(30) type c,
fld5(30) type c,
end of ttab.
data: itab type table of ttab with header line.
selection-screen skip 1.
parameters: p_file type localfile default'C:\test.txt'.
selection-screen skip 1.
at selection-screen on value-request for p_file.
call function 'KD_GET_FILENAME_ON_F4'
exporting
static = 'X'
changing
file_name = p_file.
start-of-selection.
clear itab. refresh itab.
perform upload_data.
loop at itab.
write:/ itab-fld1, itab-fld2, itab-fld3, itab-fld4, itab-fld5.
endloop.
************************************************************************
* Upload_Data
************************************************************************
form upload_data.
data: file type rlgrap-filename.
data: xcel type table of alsmex_tabline with header line.
file = p_file.
call function 'ALSM_EXCEL_TO_INTERNAL_TABLE'
exporting
filename = file
i_begin_col = '1'
i_begin_row = '1'
i_end_col = '200'
i_end_row = '5000'
tables
intern = xcel
exceptions
inconsistent_parameters = 1
upload_ole = 2
others = 3.
loop at xcel.
case xcel-col.
when '0001'.
itab-fld1 = xcel-value.
when '0002'.
itab-fld2 = xcel-value.
when '0003'.
itab-fld3 = xcel-value.
when '0004'.
itab-fld4 = xcel-value.
when '0005'.
itab-fld5 = xcel-value.
endcase.
at end of row.
append itab.
clear itab.
endat.
endloop.
endform.
Subir archivo de tipo CSV
type-POOLs TRUXS.
data ld_filename type string.
data : rawdata type TRUXS_T_TEXT_DATA.
ld_filename = DXFILE-FILENAME.
CALL FUNCTION 'GUI_UPLOAD'
EXPORTING
FILENAME = ld_filename
FILETYPE = 'ASC'
TABLES
DATA_TAB = rawdata
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 SY-SUBRC <> 0.
exit.
ENDIF.
data ls_rawdata like LINE OF rawdata.
loop at rawdata into ls_rawdata.
if sy-tabix = 1. "borrar header
delete rawdata.
exit.
endif.
ENDLOOP.
CALL FUNCTION 'TEXT_CONVERT_CSV_TO_SAP'
EXPORTING
I_FIELD_SEPERATOR = ';'
I_TAB_RAW_DATA = rawdata
TABLES
I_TAB_CONVERTED_DATA = gt_data
EXCEPTIONS
CONVERSION_FAILED = 1
OTHERS = 2
.
TEXT_CONVERT_XLS_TO_SAP
DATA : l_i_tab_raw_data TYPE truxs_t_text_data.
* Read data from Excel shet
CALL FUNCTION 'TEXT_CONVERT_XLS_TO_SAP'
EXPORTING
i_tab_raw_data = l_i_tab_raw_data
i_filename = p_file
TABLES
i_tab_converted_data = gt_data
EXCEPTIONS
conversion_failed = 1
OTHERS = 2.
-
Gracias por tu ayuda.
Lo que quiero hacer es un copy/paste a una table control y de ahi almaceno los datos guardados en una tabla cualquiera, ahora,lo he desarrollado mediante wizard (tablecontrol med. wizard) y sap trae los codigos por defecto de los botones agregar row o eliminar row, pero al ejecutar la dynpro y presionar el boton agregar o eliminar, me borra los datos por completo de la tabla, ahora estoy chocando en esas funciones de los botones. Me falta implementar bien el codigo de agregar fila o eliminar fila, ya que el que viene por defecto no funciona como se requiere.
-
Estimados, alguien tiene algún código donde pueda agregar o eliminar fila de una table control, ya que los que hago con el asistente del dynpro no funcionan!!!
-
Hola, ya es un poco tarde, pero aqui hay mucha informacion en español sobre dynpros
http://abap.facilparami.com/category/curso-abap/creacion-de-dynpros/ (http://abap.facilparami.com/category/curso-abap/creacion-de-dynpros/)