gui_upload


Getting started ... Alles für einen gelungenen Start.

Moderatoren: Jan, Steff

gui_upload

Beitragvon suedamer » 20.08.2012, 21:16

hallo, ich bin neu hier und auch im tema abap-programmierung.
bei anwendung der methode cl_gui_frontend_services gui_upload zeigt er mein register das ich lesen moechte nicht an ( das archiv haette keine register ). die struktur des archives hatte ich vorher angegeben wie man sieht. liegt es vielleicht daran? hoffe kann diese frage hier einfach mal so stellen.
der inhalt ist mit in spanisch, danke schon mal im vorraus.
gruss suedamer

* Declaracion de datos
* Tabla de usuarios
DATA: BEGIN OF ti_archivo OCCURS 0,
dni(8) TYPE c,"DNI"
nombre_ape(30) TYPE c, "Nombre y apellido"
estado_usu(1) TYPE c, "Estado del usuario"
direccion(30) TYPE c, "Direccion"
f_nacimiento(8) TYPE c, "Fecha nacimiento"
estado_civil(1) TYPE c, "Estado civil"
END OF ti_archivo.

DATA: wa_archivo LIKE LINE OF ti_archivo.

* Pantalla de seleccion
* Archivo de entrada
PARAMETERS: p_path LIKE rlgrap-filename.

* Abrir ventana de archivoss
PERFORM abrir_ventana_archivos.

START-OF-SELECTION.

* Levanto el archivo de entrada
PERFORM levantar_archivo_entrada.

* Form ABRIR_VENTANA_ARCHIVOS
FORM abrir_ventana_archivos.

DATA: tl_filetable TYPE filetable,
wal_file_table TYPE file_table,
vl_rc TYPE i.

* Busco archivo local en el directorio de PC
CALL METHOD cl_gui_frontend_services=>file_open_dialog
EXPORTING
default_filename = 'C:\Documents and Settings\karola\Escritorio\Usuarios.txt'
CHANGING
rc = vl_rc
file_table = tl_filetable.

READ TABLE tl_filetable INDEX 1 INTO wal_file_table.

IF sy-subrc EQ 0.
MOVE wal_file_table TO p_path.
ENDIF.

ENDFORM.


* Form LEVANTAR_ARCHIVO_ENTRADA
FORM levantar_archivo_entrada.

DATA: vl_file TYPE string.

IF p_path IS INITIAL.
* El path del archivo se encuentra en blanco
MESSAGE s017(Z_PRUEBA).
ELSE.

vl_file = p_path.

* Se abre el archivo de entrada para lectura
CALL METHOD cl_gui_frontend_services=>gui_upload
EXPORTING
FILENAME = vl_file
FILETYPE = 'ASC'
HAS_FIELD_SEPARATOR = ' '
CHANGING
data_tab = ti_archivo[]
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
NOT_SUPPORTED_BY_GUI = 17
ERROR_NO_GUI = 18
OTHERS = 19.

IF sy-subrc NE 0.
* Error al levantar el archivo de entrada
MESSAGE e018(Z_PRUEBA).
ENDIF.

IF ti_archivo IS INITIAL.
* El archivo de entrada no contiene registros
MESSAGE s019(Z_PRUEBA).
ENDIF.

ENDIF.

ENDFORM.
suedamer
ForumUser
 
Beiträge: 15
Registriert: 20.08.2012, 20:22
Dank erhalten: 0 mal
Ich bin: Entwickler/in

Sponsor

Alte ABAP-Entwicklerweisheit: Weißt du weder aus noch ein, baust du einen BADI ein

Re: gui_upload

Beitragvon a-dead-trousers » 21.08.2012, 06:54

hi!

Ich nehme mal an mit Register meinst du die Ordner auf der Festplatte.
cl_gui_frontend_services=>gui_upload zeigt ja keine Ordner an, sondern ladet nur eine vorher zu bestimmende Datei auf dem Applikationsserver.
cl_gui_frontend_services=>file_open_dialog ist dafür zuständig.

Wenn du wirklich einen Fehler bei cl_gui_frontend_services=>gui_upload bekommst, wäre es hilfreich zu wissen welchen genau. Die Methode hat ja in ihrer Schnittstelle 18 unterschiedliche Fehlermöglichkeiten aufgelistet.

lg ADT
Theory is when you know something, but it doesn't work.
Practice is when something works, but you don't know why.
Programmers combine theory and practice: Nothing works and they don't know why.

ECC: 6.05
Basis: 7.02
a-dead-trousers
Top Expert
 
Beiträge: 1789
Registriert: 07.02.2011, 13:40
Dank erhalten: 357 mal
Ich bin: Entwickler/in

Re: gui_upload

Beitragvon black_adept » 21.08.2012, 07:05

Hallo suedamer,

du bist in die Falle der Kopfzeilen getappt.

Code: Alles auswählen
* Tabla de usuarios
DATA: BEGIN OF ti_archivo OCCURS 0,         <--  Tabelle mit Kopfzeile
dni(8) TYPE c,"DNI"
...

IF ti_archivo IS INITIAL.
* El archivo de entrada no contiene registros
MESSAGE s019(Z_PRUEBA).
ENDIF.
 


Du willst schauen ob deine Tabelle leer ist, fragst aber auf die Kopfzeile deiner Tabelle ab.
Korrekt sollte es heißen:
IF ti_archivo[] IS INITIAL.
live long and prosper
Stefan Schmöcker

email: stefan@schmoecker.de
black_adept
Top Expert
 
Beiträge: 2003
Registriert: 08.01.2003, 13:33
Wohnort: Lehrte ( bei Hannover )
Dank erhalten: 202 mal
Ich bin: Freiberufler/in

Re: gui_upload

Beitragvon suedamer » 21.08.2012, 14:45

hallo stefan,
vielen lieben dank, haette nicht gedacht, das ich so schnell hilfe bekomme. aber..leider bringt er mir jetzt gar nichts mehr.
ich moechte nicht wissen ob meine tabelle leer ist, im gegenteil moechte ich meine tabelle angezeigt haben, was er nicht macht und mir schreibt das archiv haette keine register, was es aber doch hat.
gruesse und einen super tag..suedamer
suedamer
ForumUser
 
Beiträge: 15
Registriert: 20.08.2012, 20:22
Dank erhalten: 0 mal
Ich bin: Entwickler/in

Re: gui_upload

Beitragvon black_adept » 21.08.2012, 23:59

Hallo suedamer,

mein spanisch ist so schlecht ( nämlich nicht vorhanden ) dass mir einfach schleierhaft ist, was denn nun genau dein Problem ist.

Aber mir ist noch aufgefallen, dass du im Programmablauf die Form levantar_archivo_entrada VOR der Form abrir_ventana_archivos aufrufst ( da die letztere keinem Zeitpunkt explizit zugeordnet ist, wird sie zu END-OF-SELECTION ausgeführt und das kommt später als START-OF-SELECTION ). Mir scheint aber, dass die Reihenfolge genau umgekehrt sein sollte ( erst Filenamen auswählen, danach File hochladen ).

Verschiebe also bitte das Start of selection vor deinen Aufruf der form abrir_ventana_archivos.

Das sollte dann so aussehen.
Code: Alles auswählen
...
PARAMETERS: p_path LIKE rlgrap-filename.

START-OF-SELECTION.                  " <--  move up to this line
* Abrir ventana de archivoss
PERFORM abrir_ventana_archivos.

* START-OF-SELECTION.      " <--- move this line upwards to stand before the first PERFORM

* Levanto el archivo de entrada
PERFORM levantar_archivo_entrada.
...
live long and prosper
Stefan Schmöcker

email: stefan@schmoecker.de
black_adept
Top Expert
 
Beiträge: 2003
Registriert: 08.01.2003, 13:33
Wohnort: Lehrte ( bei Hannover )
Dank erhalten: 202 mal
Ich bin: Freiberufler/in

Re: gui_upload

Beitragvon suedamer » 24.08.2012, 22:13

hallo stefan,

wirklich lieb von dir, vielen dank fuer deine hilfe, aber das war es nicht. habe inzwischen mein programm fertiggestellt. musste natuerlich mein register erst mal anzeigen um das ich es auch sehe. dachte mit dem gui_file_open und dann den upload das waere es schon, aber eben nicht ( hab ich wohl missverstanden ).
hier mein programm, vielleicht kann ich damit einem anderen in dem thema hilfe leisten.

gruesse suedamer.



* Declaracion de datos
* Tabla de usuarios
DATA: BEGIN OF ti_archivo OCCURS 0,
dni(8) TYPE c,"DNI"
nombre_ape(30) TYPE c, "Nombre y apellido"
estado_usu(1) TYPE c, "Estado del usuario"
direccion(30) TYPE c, "Direccion"
f_nacimiento(10) TYPE c, "Fecha nacimiento"
estado_civil(1) TYPE c, "Estado civil"
END OF ti_archivo.
DATA: wa_archivo LIKE LINE OF ti_archivo.


TYPE-POOLS: slis.

* Para mostrar el registro del archivo
* Tabla y estructura del catalogo
DATA: ti_catalogo TYPE slis_t_fieldcat_alv,
wa_catalogo TYPE slis_fieldcat_alv,
* Estructura para la configuracion de la salida
wa_layout TYPE slis_layout_alv,
* Variable con el nombre del programa
v_repid LIKE sy-repid,
* Tabla y estructura para la cabecera
ti_header TYPE slis_t_listheader,
wa_header TYPE slis_listheader.


* Pantalla de seleccion
* Archivo de entrada
PARAMETERS: p_path LIKE rlgrap-filename.


* Abrir ventana de archivoss
PERFORM abrir_ventana_archivos.


START-OF-SELECTION.


* Levanto el archivo de entrada
PERFORM levantar_archivo_entrada.


* Armado del catalogo automatico
PERFORM amar_catalogo_automatico.

* Seteo del layout
PERFORM layout_alv.

* Completo la cabecera
PERFORM llenar_cabecera.

* Ejecucion de la funcion del ALV
PERFORM ejecutar_alv.


* Form ABRIR_VENTANA_ARCHIVOS
FORM abrir_ventana_archivos.

DATA: tl_filetable TYPE filetable,
wal_file_table TYPE file_table,
vl_rc TYPE i.

* Busco archivo local en el directorio de PC
CALL METHOD cl_gui_frontend_services=>file_open_dialog
EXPORTING
default_filename = 'Registro usuarios.txt'
CHANGING
rc = vl_rc
file_table = tl_filetable.


READ TABLE tl_filetable INDEX 1 INTO wal_file_table.

IF sy-subrc EQ 0.
MOVE wal_file_table TO p_path.
ENDIF.


ENDFORM.


* Form LEVANTAR_ARCHIVO_ENTRADA
FORM levantar_archivo_entrada.

DATA: vl_file TYPE string.

IF p_path IS INITIAL.
* El path del archivo se encuentra en blanco
MESSAGE s017(Z_PRUEBA).
ELSE.

vl_file = p_path.

* Se abre el archivo de entrada para lectura
CALL METHOD cl_gui_frontend_services=>gui_upload
EXPORTING
FILENAME = vl_file
FILETYPE = 'DAT'
HAS_FIELD_SEPARATOR = ' '
CHANGING
data_tab = ti_archivo[]
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
NOT_SUPPORTED_BY_GUI = 17
ERROR_NO_GUI = 18
OTHERS = 19.

IF sy-subrc NE 0.
* Error al levantar el archivo de entrada
MESSAGE e018(Z_PRUEBA).
ENDIF.

ENDIF.

ENDFORM.


FORM amar_catalogo_automatico.

v_repid = sy-repid.

CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
EXPORTING
i_program_name = v_repid
i_internal_tabname = 'TI_ARCHIVO'
i_client_never_display = 'X'
i_inclname = v_repid
CHANGING
ct_fieldcat = ti_catalogo
EXCEPTIONS
inconsistent_interface = 1
program_error = 2
others = 3.

IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.

ENDFORM.


FORM layout_alv.

CLEAR wa_layout.
wa_layout-zebra = 'X'. "Rayado de lineas"
wa_layout-window_titlebar = 'text-001'.
"Titulo ventana principal"

ENDFORM.


FORM llenar_cabecera.

DATA: v_fecha(10) TYPE c.

CONCATENATE sy-datum+6(2) sy-datum+4(2) sy-datum(4) INTO v_fecha
SEPARATED BY '/'.

wa_header-typ = 'H'.
wa_header-info = 'Listado de usuarios'.
APPEND wa_header TO ti_header.
CLEAR wa_header.
wa_header-typ = 'S'.
wa_header-key = 'Tipo de reporte:'.
wa_header-info = 'ALV'.
APPEND wa_header TO ti_header.
CLEAR wa_header.
wa_header-typ = 'S'.
wa_header-key = 'Fecha:'.
wa_header-info = v_fecha.
APPEND wa_header TO ti_header.
CLEAR wa_header.

ENDFORM.


FORM ejecutar_alv.

v_repid = sy-repid.

CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
i_callback_program = v_repid
it_fieldcat = ti_catalogo
i_callback_pf_status_set = 'PF_STATUS'
i_callback_user_command = 'USER_COMMAND'
i_callback_top_of_page = 'TOP_OF_PAGE'
is_layout = wa_layout
TABLES
t_outtab = ti_archivo.

ENDFORM.


FORM top_of_page.

CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
EXPORTING
it_list_commentary = ti_header
i_logo = 'ENJOYSAP_LOGO'.

ENDFORM.


FORM pf_status USING rt_extab TYPE slis_t_extab.

SET PF-STATUS '0100'.

ENDFORM.
suedamer
ForumUser
 
Beiträge: 15
Registriert: 20.08.2012, 20:22
Dank erhalten: 0 mal
Ich bin: Entwickler/in


Zurück zu ABAP® für Anfänger

  Aktuelle Beiträge   
Netweaver Trialversion / VMWare / RFC
vor 6 Stunden von Unit605 0 Antw.
Entkoppeltes Infotypen-Framework: neue Pernr anlegen
Gestern von Knirpsi 0 Antw.
BOPF - deutsche Dokumentation?
Gestern von ralf.wenzel 0 Antw.
gelöst Führende Nullen
Gestern von Thanatos82 9 Antw.
Smartforms, Grafik und Zebra Drucker
Gestern von Thomas R. 5 Antw.

  Ähnliche Beiträge beta
gelöst GUI_UPLOAD
28.08.2014, 12:30 von dyv 9 Antw.
METHOD cl_gui_frontend_services=>gui_upload
21.08.2007, 15:51 von pXo 2 Antw.
GUI_UPLOAD (nochmal) und variabler Dateiname
19.12.2007, 07:32 von TWP 1 Antw.
GUI_UPLOAD-Problem oder kein Durchblick
18.12.2007, 14:45 von ereglam 5 Antw.

 

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder

Feedback ...?

Was können wir verbessern? Hinterlasse deine Kontaktdaten, wenn du eine direkte Antwort möchtest.

... Absenden!