Dynamischer Pfad - ABAP Programm

Die Frage ist als "gelöst" markiert. Den entsprechend Beitrag findest du hier.

Getting started ... Alles für einen gelungenen Start.
43 Beiträge • Seite 1 von 3 (current) Nächste
43 Beiträge Seite 1 von 3 (current) Nächste

Dynamischer Pfad - ABAP Programm

Beitrag von Brick (ForumUser / 20 / 2 / 0 ) »
Hi Leute..

bin blutiger Anfänger, also nicht gleich auf mich eindreschen.. ;)

folgendes:

Ich möchte in einem Programm das wir in unserer Testumgebung haben einen Pfad anpassen, der immer
auf das jeweilig richtige System verweist.

Hier ein Beispiel:
'/usr/sap/P24/DVEBM/data/P24/in/datei.asc' lower CASE OBLIGATORY.

Hier ist P24 das System. Wenn wir jetzt aber in unserer Testumgebung sind ist das System die T24...

es gibt ja diese Systemfelder ... hier sicher sinnvoll sy-sysid ... leider hab ich keinen Schimmer,
wie ich das einbauen kann... div. Versuche waren alle Erfolglos.

kann mir da jemand einen Tipp geben

Gruß Brick

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


Re: Dynamischer Pfad - ABAP Programm

Beitrag von Lucyalison (Specialist / 262 / 51 / 26 ) »
Hallo Brick,

das geht wenn Du den Pfad zusammensetzt:

CONCATENATE '/usr/sap/P24/DVEBM/data/' sy-sysid '/in/datei.asc' INTO p_pfad.

Viele Grüsse
Nicola

Re: Dynamischer Pfad - ABAP Programm

Beitrag von Brick (ForumUser / 20 / 2 / 0 ) »
Hi,

danke für die Antwort..

hab jetzt folgendes angefügt:

DATA: p_pfad type c.

CONCATENATE '/usr/sap/P24/DVEBM/data/' sy-sysid '/in/datei.asc' INTO p_pfad.

und hier folgendes geändert:
PARAMETERS AUSGABE(50) DEFAULT
p_pfad lower CASE OBLIGATORY.
SELECTION-SCREEN SKIP 1.

leider bleibt das Pfadfeld beim Testen leer !!

Gruß Brick

Re: Dynamischer Pfad - ABAP Programm

Beitrag von Lucyalison (Specialist / 262 / 51 / 26 ) »
Hallo Brick,

da sehe ich 2 Probleme - zum einen hast Du p_pfad mit nur einer Stelle definiert. C heisst in dem Fall 1 Character und Du willst ja einen längeren String eintragen. Ich bin eh davon ausgegangen das p_pfad ein Parameter ist und dann musst Du ihn eh nicht mit DATA definieren. Dann kommt es darauf an welcher Stelle in Deinem Programm Du das concatenate machst. Ich habe Dir mal die ein funktionierendes Coding zusammengeschrieben:

Code: Alles auswählen.

PARAMETER: p_pfad TYPE localfile.

INITIALIZATION.

  CONCATENATE '/usr/sap/P24/DVEBM/data/' sy-sysid '/in/datei.asc' INTO p_pfad.
Das Initialization wird durchlaufen bevor der Selektionsbildschirm durchlaufen wird und damit hast Du das schon schön am Bildschirm stehen.

Viele Grüsse
Nicola

Re: Dynamischer Pfad - ABAP Programm

Beitrag von GastX (Specialist / 277 / 4 / 18 ) »
Ich würde evtl. mit logischen Dateinamen arbeiten.
Transaktion FILE, Funktionsbaustein FILE_GET_NAME.
http://help.sap.com/erp_hcm_ias_2013_01 ... ameset.htm

Re: Dynamischer Pfad - ABAP Programm

Beitrag von Tron (Top Expert / 1327 / 35 / 331 ) »
Moin.
Vielleicht ist die Verwendung von Funktionbausteinen besser geeignet.
Falls der Pfad zum Verzeichnis in der AL11 gepflegt ist.
E.g.

Code: Alles auswählen.

* Pfad zum Transportverzeichnis
  DATA dir_trans TYPE text255.

* Hole Pfad zum Transportverzeichnis 

  CALL FUNCTION 'RSPO_R_SAPGPARAM'
    EXPORTING
      name   = 'DIR_TRANS'
    IMPORTING
      value  = dir_trans
    EXCEPTIONS
      error  = 1
      OTHERS = 2.
lg Jens
<:: XING-Gruppe Tricktresor::>
Die deutsche Rechtschreibung ist Freeware, du darfst sie kostenlos nutzen –
Aber sie ist nicht Open Source, d. h. du darfst sie nicht verändern oder in veränderter Form veröffentlichen.

Re: Dynamischer Pfad - ABAP Programm

Beitrag von Brick (ForumUser / 20 / 2 / 0 ) »
Tron hat geschrieben:Moin.
Vielleicht ist die Verwendung von Funktionbausteinen besser geeignet.
Falls der Pfad zum Verzeichnis in der AL11 gepflegt ist.
E.g.

Code: Alles auswählen.

* Pfad zum Transportverzeichnis
  DATA dir_trans TYPE text255.

* Hole Pfad zum Transportverzeichnis 

  CALL FUNCTION 'RSPO_R_SAPGPARAM'
    EXPORTING
      name   = 'DIR_TRANS'
    IMPORTING
      value  = dir_trans
    EXCEPTIONS
      error  = 1
      OTHERS = 2.
lg Jens
Hi Jens,

ja der Pfad ist gepflegt.. leider versteh ich dein Beispiel nicht.. (sorry.. wie gesagt. .hab damit eigentlich nichts
am Hut.. soll jetzt aber mal schaun, das ichs hinbekomm :) )

Was ich jetzt mal probiert hab:

aus:

Code: Alles auswählen.

PARAMETERS  AUSGABE(50) DEFAULT
'/usr/sap/P24/DVEBMGS24/data/P24/in/datei.asc' lower CASE OBLIGATORY.
SELECTION-SCREEN SKIP 1.


hab ich :

Code: Alles auswählen.

INITIALIZATION.

   
PARAMETERS  AUSGABE(50).
CONCATENATE '/usr/sap/' sy-sysid '/DVEBMGS24/data/P24/in/datei.asc' INTO AUSGABE.
SELECTION-SCREEN SKIP 1.
gemacht.. da zeigt er mir zwar jetzt den richtigen Pfad an.. leider funktioniert der Report
aber nicht.. die Datei wird nicht erstellt !

wenn ich raten müsste würd ich sagen, der Pfad wird zwar angezeigt.. aber im Programm
nicht richtig übergeben..

Gruß Martin

Re: Dynamischer Pfad - ABAP Programm

Beitrag von Lucyalison (Specialist / 262 / 51 / 26 ) »
Hallo Martin,

wenn Du hier weiteren Rat einholst und gleichzeitig PM schickst, dann laufen die Rückmeldungen auseinander und das ist schade. Wie ich schon geantwortet hatte ist der FB 'UPLOAD' obsolete den Du verwendest. Deswegen würde ich erstmal debuggen ob da überhaupt Daten importiert werden die dann ausgegeben werden sollen. Als nächstes wäre interessant was der sy-subrc sagt beim OPEN DATASET.

Und dann sehen wir weiter :D

Viele Grüsse
Nicola

Re: Dynamischer Pfad - ABAP Programm

Beitrag von GastX (Specialist / 277 / 4 / 18 ) »
wenn ich raten müsste würd ich sagen, der Pfad wird zwar angezeigt.. aber im Programm
nicht richtig übergeben..
Nicht raten, einfach debuggen.

Re: Dynamischer Pfad - ABAP Programm

Beitrag von Murdock (Specialist / 115 / 55 / 8 ) »
Nur mal schnell am Rande erwähnt, in Deinem Beispielpfad ist zweimal "P24" enthalten, Du ersetzt den aber nur einmal...
Brick hat geschrieben:CONCATENATE '/usr/sap/' sy-sysid '/DVEBMGS24/data/P24/in/datei.asc' INTO AUSGABE.
[/code]

Re: Dynamischer Pfad - ABAP Programm

Beitrag von Lucyalison (Specialist / 262 / 51 / 26 ) »
Cool Murdock, das hatte ich übersehen :-)

Re: Dynamischer Pfad - ABAP Programm

Beitrag von Brick (ForumUser / 20 / 2 / 0 ) »
Lucyalison hat geschrieben: wenn Du hier weiteren Rat einholst und gleichzeitig PM schickst, dann laufen die Rückmeldungen auseinander und das ist schade.
Hi,

da hast du vollkommen recht, nur als ich die PN geschickt hatte wars du die einzige die bis dato eine Antwort gegeben hat, wusste
nicht, das hier gleich so viel Feedback kommt !! Soll auch gleich mal ein Lob sein.. find ich gut..

also ich glaub ich stell das ganze Programm jetzt hier nochmal ein, das es jeder sehen kann:

Code: Alles auswählen.

REPORT Y9zfsps008 LINE-COUNT 65 LINE-SIZE 132.
DATA:  INPUTDATEI(128) TYPE C.
DATA:  BEGIN OF ITAB OCCURS 200,
       FILLER(512)     TYPE C,
       END OF ITAB.

DATA:  ANZAHL TYPE I.
DATA:  VERARBEITET TYPE I.
DATA:  AUSGEGEBEN  TYPE I.

PARAMETERS:   VINPUT(50) TYPE C DEFAULT   'c:\einspieldatei.txt'.


SELECTION-SCREEN SKIP 1.

PARAMETERS  AUSGABE(50) DEFAULT
'/usr/sap/SYSTEMID/COMM/KWF/Datei.asc' lower CASE OBLIGATORY.
SELECTION-SCREEN SKIP 1.

START-OF-SELECTION.
MOVE VINPUT TO INPUTDATEI.
write:/ INPUTDATEI.

  CALL FUNCTION 'UPLOAD'
 EXPORTING
          FILENAME            =  INPUTDATEI
      TABLES
            DATA_TAB            =  ITAB.

OPEN DATASET AUSGABE FOR OUTPUT IN TEXT MODE.

LOOP AT ITAB.
ADD 1 TO AUSGEGEBEN.
TRANSFER ITAB TO AUSGABE.
ENDLOOP.
@Murdock, ja das stimmt.. aber im neuen (richtigen Pfad) gibts das nur noch einmal.. P24 war unser altes System..

@ all, der Code oben funktioniert... wenn ich dort den neuen Pfad eingebe wird die Einspieldatei.txt in das Verzeichnis übertragen.
in der AL11 seh ich dann die "Datei.asc"...

bin jetzt einmal hingegangen und hab das mit dem Funktionsbaustein von Tron probiert... leider hat er mir da gar nichts angezeigt..
auch hätte ich das problem, das ich zwar den Pfad bekomme, aber das Anhängsel "Datei.asc" würde ja noch fehlen.. das müsste dann sicher
mit CONCATENATE angebuden werden, oder ?

mit dem Code von Nicola hab ich mal das Progamm angepasst:

Code: Alles auswählen.

REPORT Y9zfsps008 LINE-COUNT 65 LINE-SIZE 132.
DATA:  INPUTDATEI(128) TYPE C.
DATA:  BEGIN OF ITAB OCCURS 200,
       FILLER(512)     TYPE C,
       END OF ITAB.

DATA:  ANZAHL TYPE I.
DATA:  VERARBEITET TYPE I.
DATA:  AUSGEGEBEN  TYPE I.

PARAMETERS:   VINPUT(50) TYPE C DEFAULT   'c:\einspieldatei.txt'.

INITIALIZATION.   

SELECTION-SCREEN SKIP 1.

PARAMETERS  AUSGABE(50).
CONCATENATE '/usr/sap/' sy-sysid '/COMM/KWF/datei.asc' INTO AUSGABE.
SELECTION-SCREEN SKIP 1.

START-OF-SELECTION.
MOVE VINPUT TO INPUTDATEI.
write:/ INPUTDATEI.

  CALL FUNCTION 'UPLOAD'
 EXPORTING
          FILENAME            =  INPUTDATEI
      TABLES
            DATA_TAB            =  ITAB.

OPEN DATASET AUSGABE FOR OUTPUT IN TEXT MODE.

LOOP AT ITAB.
ADD 1 TO AUSGEGEBEN.
TRANSFER ITAB TO AUSGABE.
ENDLOOP.
dadurch wird mir in der Ausgabe tatsächlich der richtige Pfad angezeigt, leider wird die Datei dann aber
beim ausführen nicht übergeben. Also der .../COMM/KWF/ - Pfad bleibt leer.

ich hoff ich hab das jetzt einigermaßen verständlich erklärt.. .wenn nicht, bitte weiter nachfragen.

Gruß und Dank an alle Helfer !

Brick

@GastX .. debuggen .. mit /h glaub ich.. probier ich jetzt mal !!

EDIT: ach ja .. noch was.. das Programm ist nicht von mir !! also wenn hier Funktionen obsolet sind,
kann das durch aus sein.. möchte da aber eigentlich möglichst wenig drin rumpfuschen.. wie gesagt,
ich bin alles andere als Profi... !!

Re: Dynamischer Pfad - ABAP Programm

Beitrag von Lucyalison (Specialist / 262 / 51 / 26 ) »
Hallo Martin,

bitte nimm noch das INITIALIZATION zwischen den Parametern raus nach unten vor das START-OF-SELECTION.
So:

Code: Alles auswählen.


PARAMETERS:   VINPUT(50) TYPE C DEFAULT   'c:\einspieldatei.txt'.
SELECTION-SCREEN SKIP 1.
PARAMETERS  AUSGABE(50).

INITIALIZATION.   
CONCATENATE '/usr/sap/' sy-sysid '/COMM/KWF/datei.asc' INTO AUSGABE.
Es funktioniert so zwar auch, ist aber Spaghetti-Code.

Dann fehlt uns noch immer der sy-subrc nach dem open dataset - hast Du das mal nachgeschaut? Vielleicht kann das Verzeichnis aufgrund z.B. fehlender Berechtigungen gar nicht geöffnet werden.

Gruss
Nicola

Re: Dynamischer Pfad - ABAP Programm

Beitrag von Brick (ForumUser / 20 / 2 / 0 ) »
Lucyalison hat geschrieben: Dann fehlt uns noch immer der sy-subrc nach dem open dataset - hast Du das mal nachgeschaut? Vielleicht kann das Verzeichnis aufgrund z.B. fehlender Berechtigungen gar nicht geöffnet werden.
*räusper* ... sy-subrc... open dataset... hilf mir schnell.. wie kann ich das finden ?

(nur zur Info.. mit dem Orginalcode gehts.. also schließ ich irgendwie Berechtigungsprobleme aus..)

Re: Dynamischer Pfad - ABAP Programm

Beitrag von Lucyalison (Specialist / 262 / 51 / 26 ) »
In dem Coding gibt es einen Befehl OPEN DATASET nach dem UPLOAD Funktionsbaustein. Das meine ich. Wenn Du einen Break-Point auf 'Loop at itab' setzt, kannst Du an der Stelle nachschauen was der sy-subrc sagt. Einen Breakt-point setzt man mit dem Stop-Zeichen mit dem Bildschirm drin, sozusagen der 4. Button von rechts oben in der Leiste.

Dann führst Du das Programm ganz normal aus (ohne /h) und das Programm hält an der Stelle an.

Vergleichbare Themen

4
Antw.
11772
Views
Mapping logischer Pfad - physikalischer Pfad
von Gast » 24.06.2005 10:04 • Verfasst in Basis
0
Antw.
2360
Views
LSMW Programm in ABAP Programm überführen
von mherke » 07.02.2007 15:02 • Verfasst in ABAP® für Anfänger
0
Antw.
1506
Views
C Programm aus ABAP aufrufen
von Petwar_pk » 23.07.2009 14:32 • Verfasst in ABAP® Core
13
Antw.
7140
Views
Dynamischer Selection Screen mit dynamischer Suchhilfe
von Johnny11 » 26.03.2014 08:19 • Verfasst in ABAP® Core
1
Antw.
1790
Views
Aus ABAP Programm in Infocube schreiben?
von AlexP. » 19.08.2009 17:08 • Verfasst in Sonstige Module

Über diesen Beitrag


Die Frage ist als "gelöst" markiert. Den entsprechend Beitrag findest du hier.

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

Aktuelle Forenbeiträge

RFC FuBa Call - Korrupte Daten
vor einer Stunde von der_neuling 3 / 33
SELECT CHAR16 in CHAR12-Feld
vor 9 Stunden von Shortcut IT 3 / 38
alv_grid aktualisieren
vor 9 Stunden von a-dead-trousers gelöst 3 / 75

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

RFC FuBa Call - Korrupte Daten
vor einer Stunde von der_neuling 3 / 33
SELECT CHAR16 in CHAR12-Feld
vor 9 Stunden von Shortcut IT 3 / 38
alv_grid aktualisieren
vor 9 Stunden von a-dead-trousers gelöst 3 / 75

Unbeantwortete Forenbeiträge

Zwischensumme Adobe Forms
vor 4 Wochen von Lucyalison 1 / 134
Group Items auf einer Filterbar
vor 5 Wochen von Bright4.5 1 / 168