gui_upload

Getting started ... Alles für einen gelungenen Start.
6 Beiträge • Seite 1 von 1
6 Beiträge Seite 1 von 1

gui_upload

Beitrag von suedamer (ForumUser / 15 / 0 / 0 ) »
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.

gesponsert
Stellenangebote auf ABAPforum.com schalten
kostenfrei für Ausbildungsberufe und Werksstudenten


Re: gui_upload

Beitrag von a-dead-trousers (Top Expert / 4271 / 213 / 1140 ) »
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.18
Basis: 7.50

Re: gui_upload

Beitrag von black_adept (Top Expert / 3943 / 105 / 886 ) »
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

Re: gui_upload

Beitrag von suedamer (ForumUser / 15 / 0 / 0 ) »
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

Re: gui_upload

Beitrag von black_adept (Top Expert / 3943 / 105 / 886 ) »
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

Re: gui_upload

Beitrag von suedamer (ForumUser / 15 / 0 / 0 ) »
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.

Seite 1 von 1

Vergleichbare Themen

3
Antw.
3702
Views
PDF Upload
von kaim77 » 26.06.2012 16:16 • Verfasst in ABAP Objects®
1
Antw.
1697
Views
GUI Upload Problem
von Kristian » 17.08.2005 11:09 • Verfasst in ABAP® Core
1
Antw.
1817
Views
Excel upload
von will » 07.11.2005 11:30 • Verfasst in ABAP® für Anfänger
1
Antw.
1164
Views
CSV-Upload Innenauftragsbeplanung
von tml » 12.01.2007 12:48 • Verfasst in Financials
2
Antw.
2148
Views
Excel upload
von will » 25.10.2005 16:31 • Verfasst in ABAP® für Anfänger

Über diesen Beitrag


Unterstütze die Community und teile den Beitrag für mehr Leser und Austausch

Aktuelle Forenbeiträge

Zwischensumme Adobe Forms
vor 2 Tagen von Lucyalison 1 / 64
Interne Tabelle
vor 5 Tagen von black_adept 2 / 133
MaLo-Checker in ABAP
vor einer Woche von A6272 6 / 254

Newsletter Anmeldung

Keine Beiträge verpassen! Wöchentlich versenden wir lesenwerte Beiträge aus unserer Community.
Die letzte Ausgabe findest du hier.
Details zum Versandverfahren und zu Ihren Widerrufsmöglichkeiten findest du in unserer Datenschutzerklärung.

Aktuelle Forenbeiträge

Zwischensumme Adobe Forms
vor 2 Tagen von Lucyalison 1 / 64
Interne Tabelle
vor 5 Tagen von black_adept 2 / 133
MaLo-Checker in ABAP
vor einer Woche von A6272 6 / 254

Unbeantwortete Forenbeiträge

Zwischensumme Adobe Forms
vor 2 Tagen von Lucyalison 1 / 64
Group Items auf einer Filterbar
vor einer Woche von Bright4.5 1 / 107
tRFC Transaktionen SM58
vor 4 Wochen von A6272 1 / 140