Datenladen mit dynamischen Datum

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

Datenladen mit dynamischen Datum

Beitrag von martin_S. (ForumUser / 8 / 0 / 0 ) »
Hallo,
ich habe eine Laderoutine, die mir eine Datei vom SAP-Server via Ladekette automatisch laden soll. Folgender Code ist angelegt:
p_filename = |/sap/Daten/RBS/999/BW/AB/K-Dateien/{ sy-datum
}_054502_ksc-quelldaten.csv|.
Die Ladekette ist leider abgebrochen, weil die Ladezeit sich verändert hat.
Diese wird automatisch bei der Erstellung des Dateinamens mitgeliefert.
Für meinen Code bedeutet das, die Stelle ----> '054502'.
Ist es möglich hier einen Platzhalter einzubauen? So dass es völlig egal ist, welcher
Wert dann auf dem Server steht? Also eine dynamische Uhrzeit?

Lg M.

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


Re: Datenladen mit dynamischen Datum

Beitrag von ewx (Top Expert / 4849 / 313 / 642 ) »
Wenn du einen Dateinamen liest, dann muss er stimmen.
Für deine Anforderung müsstest du die vorhanden Dateien mit entsprechendem Platzhalter einlesen und dann die richtige wählen.
Oder die Datei wird gleich ohne die Uhrzeit erstellt und ihr verwendet stattdessen eine fortlaufende Nummerierung.

Re: Datenladen mit dynamischen Datum

Beitrag von a-dead-trousers (Top Expert / 4399 / 223 / 1182 ) »
Gibt's da nicht einen Funktionsbaustein mit "AL08" oder so ähnlich im Namen, mit dem man beliebige Verzeichnisinhalte einlesen kann?
Ich hab leider grad kein System zu Hand um nachzuschauen.
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: Datenladen mit dynamischen Datum

Beitrag von A6272 (Specialist / 238 / 8 / 36 ) »
Ich habe folgendes bei mir im System gefunden. Liest alle Dateien des Pfades mit entsprechender Suchmaske und ergänzt die Fileliste noch um den Erstellungszeitpunkt der Datei.

gp_path --> Pfad auf den SAP Share entsprechend der TA AL11
gp_file --> Suchmaske mit * als Platzhalter

Code: Alles auswählen.

************************************************************************
FORM get_filelist CHANGING ct_filelist TYPE gtyp_filelist_tab.
************************************************************************
  DATA: lf_filelist    TYPE gtyp_filelist,
        ld_segment     TYPE text255,
        lt_segments    TYPE STANDARD TABLE OF text255,
        ld_filename    TYPE text255,
        ld_string      TYPE text255,
        ld_errno       TYPE char03,
        ld_errmsg      TYPE text40,
        ld_list_errmsg TYPE text40,
        ld_type        TYPE char10,
        ld_tabix       TYPE sy-tabix.

***** Ggf. vorangegangenen Lesevorgang beenden
  CALL 'C_DIR_READ_FINISH' ID 'ERRNO'  FIELD ld_errno
                           ID 'ERRMSG' FIELD ld_list_errmsg.

  CALL 'C_DIR_READ_START' ID 'DIR'    FIELD gp_path
                          ID 'FILE'   FIELD gp_file
                          ID 'ERRNO'  FIELD ld_errno
                          ID 'ERRMSG' FIELD ld_errmsg.
  IF sy-subrc <> 0.
    MESSAGE e204(s1) WITH ld_list_errmsg ld_errmsg.
  ENDIF.

  DO.
    CLEAR: ld_type, lf_filelist, ld_errno, ld_errmsg.
    CALL 'C_DIR_READ_NEXT' ID 'TYPE'   FIELD ld_type
                           ID 'NAME'   FIELD lf_filelist-filename
                           ID 'ERRNO'  FIELD ld_errno
                           ID 'ERRMSG' FIELD ld_errmsg.
    IF sy-subrc = 5.
      sy-subrc = 0.
    ENDIF.

    CASE sy-subrc.
      WHEN 0.
        CLEAR: ld_errno, ld_errmsg.
        CASE ld_type(1).
          WHEN 'F' OR 'f'.
*           do nothing at present
          WHEN OTHERS.
            CLEAR lf_filelist.
        ENDCASE.
      WHEN 1.
        EXIT.
      WHEN OTHERS.                     " SY-SUBRC >= 2
        CLEAR lf_filelist.
    ENDCASE.

    IF lf_filelist IS NOT INITIAL.
      APPEND lf_filelist TO ct_filelist.
    ENDIF.
  ENDDO.

  CALL 'C_DIR_READ_FINISH' ID 'ERRNO'  FIELD ld_errno
                           ID 'ERRMSG' FIELD ld_list_errmsg.
  IF sy-subrc <> 0.
    MESSAGE e204(s1) WITH ld_list_errmsg ld_errmsg.
  ENDIF.

***** Zu jeder Datei wird nun noch das Datum der Erstellung ermittelt
***** und zum Dateinamen hinzugefügt
  LOOP AT ct_filelist INTO lf_filelist.
    ld_tabix = sy-tabix.

    CONCATENATE gp_path lf_filelist-filename INTO ld_filename
      SEPARATED BY gc_slash.

    OPEN DATASET ld_filename FOR INPUT IN TEXT MODE
                             ENCODING NON-UNICODE.
    IF sy-subrc <> 0.
      MESSAGE e203(e0) WITH ld_filename.
*     Datei '&' konnte nicht geöffnet werden
    ENDIF.

***** Erste 255 Zeichen der Datei lesen und an den Hochkommata in Seg-
***** mente aufspalten
    CLEAR ld_string.
    READ DATASET ld_filename INTO ld_string MAXIMUM LENGTH 255.

    CLOSE DATASET ld_filename.

    SPLIT ld_string AT '''' INTO TABLE lt_segments.

***** Zeitstempel aus dem String isolieren und zur Dateiliste hinzufügen
    LOOP AT lt_segments INTO ld_segment.
      IF ld_segment+0(3) = 'DTM'.
        lf_filelist-timestamp = ld_segment+8(12).
        MODIFY ct_filelist FROM lf_filelist INDEX ld_tabix
          TRANSPORTING timestamp.
        EXIT.
      ENDIF.
    ENDLOOP.

  ENDLOOP.

  SORT ct_filelist BY timestamp ASCENDING.

ENDFORM.      " get_filelist


Und hier noch die fehlenden Definitionen
TYPES: BEGIN OF gtyp_filelist,
          filename  TYPE text120,
          timestamp TYPE char12,
         END OF gtyp_filelist.

TYPES: gtyp_filelist_tab       TYPE STANDARD TABLE OF gtyp_filelist,

PARAMETERS: gp_path  TYPE text128,
            gp_file  TYPE text128,


Re: Datenladen mit dynamischen Datum

Beitrag von IHe (Specialist / 150 / 36 / 49 ) »
Die meisten Funktionen für diese Aufgabe kupfern von dem Fuba EPS2_GET_DIRECTORY_LISTING ab. Das ist natürlich ein nicht freigegebener Funktionsbaustein mit Verwendung von bösen System-Calls - aber anders oder eleganter lässt sich die Aufgabe kaum lösen. Es macht auch Sinn das Coding des SAP-FuBas in eine eigene Methode zu übernehmen, da die SAP nicht freigegebene FuBas zumindest theoretisch jederzeit ändern oder löschen könnte. Zum anderen gibt es auch einiges an Optimierungspotential z.B. mit erweitertem BAPIRET2-Protokoll für Übernahme in ein Application Log etc.
Die vorherige Version EPS_GET_DIRECTORY_LISTING bitte nicht verwenden - da sind Dateinamen und Pfadangaben von der Zeichenlänge unnötig stark begrenzt, was schnell zu Problemen führen kann.

Folgende Benutzer bedankten sich beim Autor IHe für den Beitrag (Insgesamt 2):
a-dead-trousersThomas R.

Ingo Hoffmann

ECC|S/4HANA|BTP
dbh SAP Solutions

Re: Datenladen mit dynamischen Datum

Beitrag von a-dead-trousers (Top Expert / 4399 / 223 / 1182 ) »
IHe hat geschrieben:
20.11.2023 09:16
Die meisten Funktionen für diese Aufgabe kupfern von dem Fuba EPS2_GET_DIRECTORY_LISTING ab.
Den hatte ich mit "AL08" oder so ähnlich im Namen gemeint 😅
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

Seite 1 von 1

Vergleichbare Themen

3
Antw.
371
Views
Datenladen mit dynamischen Dateinamen
von martin_S. » 14.06.2023 17:01 • Verfasst in ABAP® für Anfänger
9
Antw.
3572
Views
Datenladen in BW über Infosource in Infocube
von manuk » 03.01.2006 07:39 • Verfasst in Sonstige Module
1
Antw.
487
Views
SAP BW - Datenladen mit dynamischem Ladepfad (SYSTEM,MANDANT)
von martin_S. » 29.12.2023 14:08 • Verfasst in ABAP® für Anfänger
7
Antw.
6331
Views
Convert Gregorianisches Datum -> Julianisches Datum
von michael baum » 06.06.2005 09:25 • Verfasst in ABAP® Core
4
Antw.
772
Views
Daten zwischen Datum A und Datum B
von cecslucas » 13.10.2022 09:44 • Verfasst in ABAP® für Anfänger

Aktuelle Forenbeiträge

Regex in where
vor 4 Stunden von black_adept 2 / 55
Programm anlegen mit Vorlage
vor 10 Stunden von DeathAndPain 2 / 110
IT0024 Qualifikationen CP-ID
vor 10 Stunden von DeathAndPain 2 / 351
BUSOBJEKT zu CMIS PHIO ermitteln
vor 12 Stunden von snooga87 1 / 84

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

Regex in where
vor 4 Stunden von black_adept 2 / 55
Programm anlegen mit Vorlage
vor 10 Stunden von DeathAndPain 2 / 110
IT0024 Qualifikationen CP-ID
vor 10 Stunden von DeathAndPain 2 / 351
BUSOBJEKT zu CMIS PHIO ermitteln
vor 12 Stunden von snooga87 1 / 84

Unbeantwortete Forenbeiträge

BUSOBJEKT zu CMIS PHIO ermitteln
vor 12 Stunden von snooga87 1 / 84
aRFC im OO-Kontext
vor 5 Wochen von ralf.wenzel 1 / 3260
Hilfe bei SWEC/SWE2
September 2024 von retsch 1 / 9821