SAP Jobsuche bei DV-Treff
catfish
  • catfish
  • SAP Forum - Profi Thema Starter
vor 15 Jahre

Hallo zusammen,

wir möchten gerne aus verschieden Kassen  (Registierkassen/ Hotelkassen) die Tagesumsätze ins SAP FI einspielen.

BATCH-INPUT (RFBIBL00) oder XI:

Was sind die Vorteile/Nachteile wenn ich via Batch-Input oder via XI solche Verbindungen herstelle ?

Wie kann ich die exakte Struktur beschreiben für eine Schnittstelle via Batch-Input...hier gibts es doch eine feste Struktur - kann ich die vollumfänglich aus den SAP herunterladen als Beispiel für den Kassenhersteller der dann die Schnittstelle programmiert ?

Freu mich wenn jemand seine Erfahrungen oder Anregungen mit mir teilt.

Gruss Catfish

 

 

 

peterl
vor 15 Jahre

Hallo Catfish,

in welchem Format sollen denn die Daten aus dem Kassensystem kommen? - Bei Dateien würde ich das mit der LSMW und RFBIBL00 machen; PI halte ich für unangemessen, da die Tagesumsätze immer erst am Abend feststehen und dafür braucht man keine Online-Schnittstelle. Außerdem hat man mit PI einen Haufen administrativen Aufwand. Man könnte für Dateien auch die Idoc-Schnittstelle bemühen (mit Datei-Port).

Die Strukturen kann man zwar aus SAP herunterladen und damit dem Kassenhersteller die Erstellung entsprechender Dateien oder Nachrichten (für den Idoc-Fall) aufdrücken, aber die Eingangsverarbeitung muß man dann schon selber auf die Beine stellen. - Vorbelegungen (BUKRS usw.) und Umschlüsselungen mitgeben.

Anmerkung zu der Datei-Variante: Man kann das Ganze natürlich auch für eine größere Transparenz mit mehreren Verzeichnissen (Input, Save und Error) und Z-Ladetabellen innerhalb SAP aufbauen. --> Das Input-Verzeichnis wird per Job gescannt und die gefundenen Dateien werden auf Herz und Nieren geprüft und die guten Sätze werden in eine Z-Tabelle gestellt; Fehlersätze werden in das Error-Verzeichnis gestellt (mit entsprechendem Dateinamen) und die anderen in das Save-Verzeichnis (auch mit einem passenden Dateinamen). Anschließend wird im zweiten Job-Step über die Z-Tabelle gegangen und die Sätze werden per Direct-Input oder per Call Transaction (Fehlersätze können in eine Mappe gestellt werden) verarbeitet (Statuskennzeichen, BELNR, BUKRS und GJAHR eintragen).

Bei der Variante mit den Verzeichnissen kann man die Fehlersätze zurück an den Absender zur Korrektur geben (das hat einen hohen pädagogischen Wert ) und später dann mit einer neuen Datei verarbeiten. Bei Idocs hat man meist den Ärger der Nachbearbeitung am Hut. Mit Direct-Input geht es flott und man bekommt auch sofort die Belegnummer zurück (wichtig für die Protokollierung), aber man kann, falls die Eingangsprüfungen zu schwach waren, auch nicht mehr direkt eingreifen. Bei Batch-Input bzw. Call Transaction mit Erstellung von Fehlermappen hat man die Möglichkeit, den Fachbereich die Fehler abarbeiten zu lassen.

Bei grausamer Datenqualität würde ich die Verzeichnis-Variante wählen und dann einen Batch Input aufbauen, aber das muß man immer vom Einzelfall abhängig machen.. 

Hier ein Mini-Beispiel für das Aufbauen einer eigenen Direct-Input-Verarbeitung. Zuvor muß man natürlich die Tabellen mit den Belegdaten aufbauen und noch ein wenig drumherum stricken.

* Belege buchen
      clear: a_gjahr, a_bukrs, a_belnr, a_lotkz.
      CALL FUNCTION 'FI_PSO_DOC_DIRECT_INPUT'
        EXPORTING
          I_NODATA          = '/'
          I_DEL_NODATA      = 'X'
          I_INTLOT          = 'X'
          I_LOTKZ_ALLOC     = 'X'
          I_NO_FIELD_STATUS = 'X'
          i_no_check        = 'X'
        IMPORTING
          E_BUKRS           = a_bukrs
          E_GJAHR           = a_gjahr
          E_BELNR           = a_belnr
          E_LOTKZ           = a_lotkz
        TABLES
          T_BBKPF           = i_bbkpf
          T_BBSEG           = i_bbseg
          T_BBTAX           = i_bbtax
        EXCEPTIONS
          error_message     = 01.

      if sy-subrc eq 0.
        COMMIT WORK and wait.
        CALL FUNCTION 'DEQUEUE_ALL'.

      else.

*-----save system fields
        l_msgid = sy-msgid.
        l_msgno = sy-msgno.
        l_msgv1 = sy-msgv1.
        l_msgv2 = sy-msgv2.
        l_msgv3 = sy-msgv3.
        l_msgv4 = sy-msgv4.
        perform fehlersatz_buchung.

        ROLLBACK WORK.

      endif.

 Das müßte für den Anfang reichen. - Viel Spaß

 

Gruß

 

Peter