Ausgabe auf einem Verzeichnis im Netz speichern

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

Ausgabe auf einem Verzeichnis im Netz speichern

Postby Taha1380 » Fri Oct 13, 2017 11:08 am

Hallo Zusammen,

unser Fachbereich führt jeden Tag Transaktionen aus und speichert die Ausgaben lokal ab. Das soll jetzt automatisiert werden. Mir fällt dazu nur ein, das im Hintergrund laufen zu lassen und als Spool zu senden, oder einen ABAP-Report schreiben der die Daten auf dem Applikation-Server speichert. Danach muss eine FTP-Übertragung laufen oder dem User CG3Y geben, was die Basis nicht gerne macht.

Habt Ihr noch andere Ideen, bzw. kann man mit ABAP direkt auf ein Netzwerkverzeichnis (lokal) speichern und wie geht das?

Danke!
Exberliner
Taha1380
...
...
 
Posts: 203
Joined: Mon Oct 24, 2011 9:43 am

Re: Ausgabe auf einem Verzeichnis im Netz speichern

Postby Tron » Sat Oct 14, 2017 11:02 am

Moin.
Eine gängige Methode zum Ablegen oder Verarbeiten von Daten im Hintergrund, ist das Verwenden von Clustern.
Beispiel:
Code: [Select all] [Expand/Collapse] [Download] (Untitled.txt)
  1. *&---------------------------------------------------------------------*
  2. *& Report  ZCREATE_CLUSTER_ZA                                          *
  3. *&                                                                     *
  4. *&---------------------------------------------------------------------*
  5. *&                                                                     *
  6. *&                                                                     *
  7. *&---------------------------------------------------------------------*
  8.  
  9. REPORT  zcreate_cluster_za .
  10. DATA lt_data3 TYPE TABLE OF sflight.
  11.  
  12. SELECT * FROM sflight INTO TABLE lt_data3.
  13. PERFORM create_cluster.
  14.  
  15.  
  16. *&---------------------------------------------------------------------*
  17. *&      Form  CREATE_CLUSTER
  18. *&---------------------------------------------------------------------*
  19. *       text
  20. *----------------------------------------------------------------------*
  21. *      -->P_DEST  text
  22. *      <--P_BIN_ID  text
  23. *----------------------------------------------------------------------*
  24.  
  25. FORM create_cluster.
  26.   IF NOT lt_data3[] IS INITIAL.
  27.     DATA: indxkey TYPE indx-srtfd.
  28.     indxkey = sy-repid.
  29.     EXPORT lt_data3 FROM lt_data3 TO DATABASE indx(za) ID indxkey.
  30.   ENDIF.
  31. ENDFORM.                    " CREATE_BIN
GeSHi ©


Die Daten werden in die Tabelle INDX unter dem Schlüssel ZA / Reportname abgelegt.

Zurücklesen der Daten aus dem Cluster.
Code: [Select all] [Expand/Collapse] [Download] (Untitled.txt)
  1. *&---------------------------------------------------------------------*
  2. *& Report  ZREAD_CLUSTER_ZA                                            *
  3. *&                                                                     *
  4. *&---------------------------------------------------------------------*
  5. *&                                                                     *
  6. *&                                                                     *
  7. *&---------------------------------------------------------------------*
  8.  
  9. REPORT  zread_cluster_za .
  10. DATA lt_data3 TYPE TABLE OF sflight.
  11. DATA l_fn TYPE string VALUE 'c:\temp\lt_data3.txt'.
  12.  
  13.  
  14. PERFORM get_cluster.
  15. CALL METHOD cl_gui_frontend_services=>gui_download
  16.   EXPORTING
  17.     filename                = l_fn
  18.   CHANGING
  19.     data_tab                = lt_data3
  20.   EXCEPTIONS
  21.     file_write_error        = 1
  22.     no_batch                = 2
  23.     gui_refuse_filetransfer = 3
  24.     invalid_type            = 4
  25.     no_authority            = 5
  26.     unknown_error           = 6
  27.     header_not_allowed      = 7
  28.     separator_not_allowed   = 8
  29.     filesize_not_allowed    = 9
  30.     header_too_long         = 10
  31.     dp_error_create         = 11
  32.     dp_error_send           = 12
  33.     dp_error_write          = 13
  34.     unknown_dp_error        = 14
  35.     access_denied           = 15
  36.     dp_out_of_memory        = 16
  37.     disk_full               = 17
  38.     dp_timeout              = 18
  39.     file_not_found          = 19
  40.     dataprovider_exception  = 20
  41.     control_flush_error     = 21
  42.     not_supported_by_gui    = 22
  43.     error_no_gui            = 23
  44.     OTHERS                  = 24.
  45.  
  46. *PERFORM delete_cluster.
  47.  
  48.  
  49. *&---------------------------------------------------------------------*
  50. *&      Form  READ_CLUSTER
  51. *&---------------------------------------------------------------------*
  52. *       text
  53. *----------------------------------------------------------------------*
  54. *      -->P_DEST  text
  55. *      <--P_BIN_ID  text
  56. *----------------------------------------------------------------------*
  57.  
  58. FORM get_cluster.
  59.  
  60.   IF lt_data3[] IS INITIAL.
  61.     DATA: indxkey TYPE indx-srtfd.
  62.     indxkey = 'ZCREATE_CLUSTER_ZA'.
  63.     IMPORT lt_data3 TO lt_data3 FROM DATABASE indx(za) ID indxkey.
  64.   ENDIF.
  65. ENDFORM.                    " get_cluster
  66.  
  67. *&---------------------------------------------------------------------*
  68. *&      Form  DELETE_CLUSTER
  69. *&---------------------------------------------------------------------*
  70. *       text
  71. *----------------------------------------------------------------------*
  72. *      -->P_DEST  text
  73. *      <--P_BIN_ID  text
  74. *----------------------------------------------------------------------*
  75.  
  76. FORM delete_cluster.
  77.  
  78.   DATA: indxkey TYPE indx-srtfd.
  79.   indxkey = 'ZCREATE_CLUSTER_ZA'.
  80.   DELETE FROM DATABASE indx(za) ID indxkey.
  81.  
  82. ENDFORM.                    " DELETE_CLUSTER
GeSHi ©


So kann man auch im Hintergrund Daten sammeln, oder zur Hintergrundverarbeitung bereitstellen.
Mit dem 2. Report die Ergebnisse lesen downloaden (und löschen) . Dir fällt bestimmt was dazu ein.
https://wiki.scn.sap.com/wiki/display/S ... +Databases
Gruß Jens
Ps. Der Name der Internen Tabelle (e.g. LT_DATA3) darf nicht mehr als 8 Zeichen haben !!
Tron
.....
.....
 
Posts: 1112
Joined: Sat Aug 04, 2007 10:21 pm

Re: Ausgabe auf einem Verzeichnis im Netz speichern

Postby Taha1380 » Mon Oct 16, 2017 12:32 pm

Vielen Dank, Jens!
Taha1380
...
...
 
Posts: 203
Joined: Mon Oct 24, 2011 9:43 am

Re: Ausgabe auf einem Verzeichnis im Netz speichern

Postby Taha1380 » Wed Nov 08, 2017 4:35 pm

Was mir noch nicht ganz klar ist - ist es generell möglich von einem Hintergrundjob aus Daten auf ein Netzwerklaufwerk zu speichern? Oder müsste man die Daten auf dem Applikationsserver speichern und dann z.B. mittels PI übertragen? Es geht eigentlich um wenig Daten die in einer Tabelle stehen, also eine einfache Abfrage mit SE16H, Report Painter oder eben auch ein ABAP-Programm.

Danke!
Taha1380
...
...
 
Posts: 203
Joined: Mon Oct 24, 2011 9:43 am

Re: Ausgabe auf einem Verzeichnis im Netz speichern

Postby Tron » Wed Nov 08, 2017 9:42 pm

Moin.
exberliner hat geschrieben: ist es generell möglich von einem Hintergrundjob aus Daten auf ein Netzwerklaufwerk zu speichern?

Ja klar. Dazu kann man mit der Transaktion AL11 ein Verzeichnis des eigenen SAP Servers, besser aber eines nicht-SAP Servers definieren/freigeben. Ggf. muß zusätzlich der Netzwerkadmin die Freigabe von Verzeichnissen ermöglichen. So arbeitet prinzipiell ja auch ALE.
Ein anderes Szenario: wir importieren die Zeiterfassungsdaten für CATS aus einem externen Verzeichnis, in das Daten vom Zeiterfassungssystem täglich abgelegt werden.
Es sollte natürlich nicht der eigene lokale PC sein, der ein Verzeichnis freigibt (was aber auch prinzipiell möglich wäre) :wink:

gruß Jens
Tron
.....
.....
 
Posts: 1112
Joined: Sat Aug 04, 2007 10:21 pm


Return to ABAP® für Anfänger

Who is online

Users browsing this forum: No registered users and 1 guest

cron