abbrechen
Suchergebnisse werden angezeigt für 
Stattdessen suchen nach 
Meintest du: 

Sachkonten-OP mit EB-Einzelvortrag (Warnung)

6
letzte Antwort am 26.07.2023 11:07:34 von Katharina_Schoenweiss
Dieser Beitrag ist geschlossen
0 Personen hatten auch diese Frage
Gelöschter Nutzer
Offline Online
Nachricht 1 von 7
1033 Mal angesehen

Hallo Leute,

 

auch gegebenem Anlass möchte ich noch einmal dringend vor dem automatischen EB-Wertvotrag bei Sachkonten-OP warnen.

 

Suche den Fehler:

 

grafik.png

 

Das kann nicht passieren wenn man echte Einzelbuchungen vortragen würde.

 

Ich kann nur immer wieder dazu raten, auf die Option "Ausziffern EB-Wert mit Einzelbuchungen" zu verzichten und die EB-Werte in echte Einzelbuchungen vorzutragen.

 

grafik.png

 

Hierzu habe ich einmal ein VBSript-Tool vorgestellt.

Hier noch einmal mein Tool (eben getestet):

 

Es muss lediglich diese Zeile für den Exportpfad angepasst werden:

cTargetExportFile="L:\DATEV\DATEN\RWDAT\EXPORT\EB_Werte.csv"

 

Importiert werden die Buchungssätze über:

 

grafik.png

 

 

Und hier der Programmcode.

Einfach kopieren und als EB-Werte.vbs irgendwo abschpeichern.

 

Vorgehensweise:

Sachkonto-OP öffnen und als Excel exportieren. Danach das Tool per Doppelklick starten. Es können auch mehrere Konten hintereinander exportiert und per Tool bearbeitet werden. Anschließend die Buchungssätze importieren.

 

Bei Fragen einfach hier im Forum melden.

 

 

 

    Option Explicit
    Dim objExcel
    Dim shtSource
    Dim shtTarget
    Dim iRow, q, iCol
    Dim sValue(114)           'lt. Feldbeschreibung Buchungsstapel
    Dim sTemp
	

    On Error Resume Next

    Set objExcel = GetObject(,"Excel.Application")

    If err.number<>0  Then
        Err.Clear
        Set objExcel = CreateObject("Excel.Application")
    End if

    objExcel.Visible = True

    'On Error Goto 0

    Dim objFSO

    Set objFSO = CreateObject("Scripting.FileSystemObject")

    Dim cDatum
    Dim cBelegfeld1
    Dim cBelegfeld2
    Dim cBuchungstext
    Dim cUmsatzSoll
    Dim cUmsatzHaben
    Dim cKOST1
    Dim EB_Datum
    Dim sTmp
    Dim GGKto, iLenKonto
    Dim sKtoSplitter

    'Pfade bitte anpassen
    'muss nicht gelöscht werden, da beim Import in DATEV diese Datei gelöscht werden kann.
    'Damit ist es jetzt möglich, mehrere Konten mit EB-Wert vorzutragen (s. ForAppending)
    'If objFSO.FileExists("S:\EB_Werte.csv") then objfso.DeleteFile("S:\EB_Werte.csv")
	Dim  cTargetExportFile 
	cTargetExportFile="L:\DATEV\DATEN\RWDAT\EXPORT\EB_Werte.csv"

    Set shtSource = objExcel.ActiveSheet
        EB_Datum = InputBox( "Geben Sie bitte das EB-Datum in Form dd.mm.jjjj ein.","EB-Datum","01.01." & Year(Now()))

        If EB_Datum="" then
           '[....]  Tu was wenn leer
        Else

          EB_Datum =FormatExt(Day(EB_Datum),1) & FormatExt(Month(EB_Datum),2)

          If InStr(1,shtSource.cells(1,1),"Abschlusskonto",1)<>0 Then    'Export aus Abschluss
           sKtoSplitter="Abschlusskonto"
          ElseIf InStr(1,shtSource.cells(1,1),"Kontoblatt",1)<>0 Then    'Export aus Kontoblatt
           sKtoSplitter="Kontoblatt"
          ElseIf InStr(1,shtSource.cells(1,1),"Arbeitskonto",1)<>0 Then    'Export aus Arbeitskonto
           sKtoSplitter="Arbeitskonto"
          Else
           MsgBox "Der Kontoexport konnte nicht erkannt werden. Es werden nur Arbeitskonto, normales Konto u. Abschlusskonto unterstützt.",vbCritical, "Exportfehler"

           WScript.Quit

          End If

          'sTmp=Split(shtSource.cells(1,1),"Arbeitskonto",0,1)

          sTmp = Split(shtSource.cells(1,1),sKtoSplitter,2,1)       'Auslesen des GGKto.

          GGKto =GetEBKonto(sTmp(1))                                      'letzte Trennung falls mehrere '-' vorhanden
          iLenKonto = LenKonto(GGKto)

          Const xlCellTypeLastCell=11

          'Auslesen der Feldreihenfolge
          For iCol=1 To shtSource.usedrange.specialcells(xlCellTypeLastCell).Column

           Select Case shtSource.cells(2,iCol).Text
            Case "Datum":                       cDatum=iCol
            Case "Belegfeld1":                   cBelegfeld1=iCol
            Case "Belegfeld2":                   cBelegfeld2=iCol
            Case "Buchungstext":               cBuchungstext=iCol
            Case "Umsatz Soll":                   cUmsatzSoll=iCol
            Case "Umsatz Haben":               cUmsatzHaben=iCol
            Case "KOST1":                       cKOST1=iCol
           End Select

          Next

          Dim MyFile
          Const ForReading = 1, ForWriting = 2, ForAppending = 8

          If objFSO.FileExists(cTargetExportFile) = False then   'Pfade bitte anpassen
           'Spaltenüberschriften

           For iCol = 1 To 114
            sTemp = sTemp & "Spalte " & iCol & ";"
           Next

          End If

          Set MyFile = objFSO.OpenTextFile(cTargetExportFile, ForAppending, True)   'Pfade bitte anpassen

          If Len(sTemp)>0 Then    MyFile.Writeline sTemp

          For iRow = 3 To shtSource.usedrange.specialcells(xlCellTypeLastCell).row
           If shtSource.cells(iRow,cUmsatzSoll) <>"" Then
            sValue(1) = shtSource.cells(iRow,cUmsatzSoll)
            sValue(2)="H"
           Else
            sValue(1) = shtSource.cells(iRow,cUmsatzHaben)
            sValue(2)="S"
           End If            

           sValue(7) = "9" & String(iLenKonto-1, "0")
           sValue(8) = Replace(GGKto," ","")
           sValue(10) = EB_Datum

           If Not IsEmpty(cBelegfeld1) Then sValue(11) = Trim(shtSource.cells(iRow,cBelegfeld1))
           If Not IsEmpty(cBelegfeld2) Then sValue(12) = Trim(shtSource.cells(iRow,cBelegfeld2))
           If Not IsEmpty(cBuchungstext) Then sValue(14) = Replace(Trim(shtSource.cells(iRow,cBuchungstext)),";",",")
           If Not IsEmpty(cKOST1) Then sValue(37) = Trim(shtSource.cells(iRow,cKOST1))

           sValue(114) = 0
   
           sTemp=""
       
           For q = 1 To 114
            sTemp = sTemp & sValue(q) & ";"
           Next
       

           MyFile.Writeline sTemp
     
          Next

          MyFile.close

          MsgBox "Fibu-Werte stehen zur Verfügung."
        End if

    'Hilfsfunktion

    Function FormatExt(Zahl,Anzahl)
        FormatExt= Right(String(Anzahl, "0") & zahl,Anzahl)
    End Function

    Function GetEBKonto(EBValue)
         GetEBKonto = Trim(Mid(EBValue, 3, InStr(3, EBValue, " - ", vbTextCompare) - 3))
    End Function

    Function LenKonto(Konto)
        If Len(konto) > 4 Then
            LenKonto = 4 + Len(Right(Konto, Len(Konto) - InStr(1, Konto, " ", vbTextCompare)))
        Else
            LenKonto = 4
        End If       

    End Function

 

 

 

Gruß Achilleus

ivonnevoigt
Einsteiger
Offline Online
Nachricht 2 von 7
939 Mal angesehen

Hallo Achilleus,

 

oje, eigentlich wollte ich mich ja mal um VBA kümmern, aber da kam was dazwischen und ich bin erst mal StBin. Jetzt wollte das Script einmal testen und scheitere kläglich. Wo muss ich es abspeichern und wie muss ich es aufrufen? Noch nie gemacht, ist bestimmt ganz simpel.

 

Gruß Ivonne Voigt

 

 

 

 

0 Kudos
Gelöschter Nutzer
Offline Online
Nachricht 3 von 7
922 Mal angesehen

Hallo @ivonnevoigt,

 

kopieren Sie einfach den Code aus meinem Beitrag in eine Textdatei und speichern diese zentral ab. Vergeben Sie einen gewünschten Dateinamen (z. B. EB-Werte.vbs) ab. VBS ist eine Script-Sprache, die den Programmcode enthält.

 

In der Datei (bitte mit Notepad öffen) müssen Sie lediglich

 

cTargetExportFile="L:\DATEV\DATEN\RWDAT\EXPORT\EB_Werte.csv"

 

anpassen. Das ist der Pfad, wo die Importdatei gespeichert werden soll.

 

Anschließend öffnen Sie in DATEV den Mandanten und wählen ein abgestimmtes Sachkonto-OP aus und exportieren diese nach Excel (s. Kontextmenü). In der offenen Exceldatei brauchen Sie jetzt nur noch das EV-Werte.vbs per Doppelklick starten und es wird aus der offenen Exceldatei die Werte ausgelesen und im Speicherpaf als CSV gespeichert.

 

Das wiederholen Sie bitte für jedes Sachkonto-OP, welches Sie in Einzelbuchungen vortragen möchten.

 

Nachdem alle Sachkonten-OP aufbereitet wurde, wechseln Sie in DATEV in das nächste Jahr und für den Import Buchungsstapel CSV aus und schon haben Sie die Einzelbuchungen aus dem Vorjahr in das nächste Jahr vorgetragen, damit ein sinnvolle und richtige Abstimmung erfolgen kann.

 

Es können alle Kontenarten (Konto, Arbeitskonto, Abschlusskonto*) als Datenbasis verwendet werden.

 


Gruß Achilleus

 

 

 

* Welch ein Schwachsinn diese ganzen Kontenarten mit unterschiedlichsten Funktionsinhalten.

ivonnevoigt
Einsteiger
Offline Online
Nachricht 4 von 7
907 Mal angesehen

Hallo Achilleus,

 

Vielen lieben Dank. Ich war ganz nah dran. Habe die falsche Dateiendung drangehängt, mit *.vbs klappt es jetzt. Erster Test war erfolgreich!

 

LG iv

Gelöschter Nutzer
Offline Online
Nachricht 5 von 7
890 Mal angesehen

Vielen Dank für die Information und viel Spaß bei der Konto-Abstimmung. 😁

Zimmerhandwerk
Beginner
Offline Online
Nachricht 6 von 7
399 Mal angesehen

Das Thema eröffne ich mal wieder. Ich habe das Konto wie folgt angelegt:

Zimmerhandwerk_0-1689930106184.png

 

Wenn ich nun aber die OPs auf Konto anschaue, passt der Saldo oben nicht mit der Summe der Einzelbuchungen, welche mir bei den nicht ausgezifferten angezeigt werden. Das Delta von 1.500 € ist eine Buchung welche aus dem Jahr 2022 vorgetragen wurde und im Jahr 2023 eine Gegenbuchung erhielt welche ich dann über die Funktion "Buchungen ausziffern" ausziffern konnte. Die Summe des EB hat sich aber natürlich nicht um die 1.500 € gemindert. In der Funktion "Buchungen ausziffern" sieht es gut aus. 

Zimmerhandwerk_1-1689930510064.png

Da war meine Lösung vom VJ meines Erachtens besser, dort habe ich einfach die Einzel-OPs vom 31.12. zum 01.01. wieder eingebucht und den EB ausgeglichen. 

 

Ist DATEV hier wirklich so umständlich, oder liegt es an mir? 

 

Danke für sämtlichen Input. 

0 Kudos
DATEV-Mitarbeiter
Katharina_Schoenweiss
DATEV-Mitarbeiter
DATEV-Mitarbeiter
Offline Online
Nachricht 7 von 7
350 Mal angesehen

Hallo @Zimmerhandwerk,


es wird so lange der ganze EB-Wert auf dem Fibu-Konto unter nicht ausziffert angezeigt, bis der gesamte EB-Wert ausgeziffert wurde. Auf dem OPOS-Konto (Debitoren / Kreditoren) setzt sich der EB-Wert ggf. aus mehreren Buchungen zusammen, die einzeln ausgeziffert werden können.


Mit freundlichen Grüßen

 

K. Schönweiß
Service Rechnungswesen (FIBU)
DATEV eG

0 Kudos
6
letzte Antwort am 26.07.2023 11:07:34 von Katharina_Schoenweiss
Dieser Beitrag ist geschlossen
0 Personen hatten auch diese Frage