Overblog Folge diesem Blog
Edit post Administration Create my blog
SAPManDoo - SAP Resource

Veränderung der Buchungslogik im elektronischen Kontoauszug

24. März 2014 , Geschrieben von sapmandoo Veröffentlicht in #FI

Mithilfe des BadIs FEB_BADI kann bei Bedarf umfänglich Einfluss auf die Buchungslogik des elektronischen Kontoauszugs genommen werden. Der BadI wird nach Interpretation vor der Verbuchung gerufen. Dabei werden die von der Standardverarbeitung generierten Buchungssätze in Tabellenform (Struktur FTPOST) bereitgestellt. Der Aufbau der Buchungstabelle ist dabei wie folgt:

 

STYPE

Satztyp

K = Belegkopf

P = Belegposition

COUNT

Zähler für Belegkopf bzw. Belegzeile (Buchungsschnittstelle)

FNAM

Feldname Batch-Input

FVAL

Feldwert Batch-Input

(Beispielwert)

K

1

BKPF-BUDAT (Buchungsdatum)

01.03.2014

K

1

BKPF-BLDAT

(Belegdatum)

01.03.2014

K

1

BKPF-BUKRS

(Buchungskreis)

0001

K

1

P

1

BSEG-BSCHL

(Buchungsschlüssel)

40

P

1

BSEG-HKONT

(Sachkonto)

471100

P

1

BSEG-WRBTR

(Betrag in Belegwährung)

100,00

P

1

BSEG-ZUONR

(Zuordnung)

123456789

P

1

BSEG-SGTXT

Belegposition 1

P

1

P

2

BSEG-BSCHL

(Buchungsschlüssel)

50

P

2

BSEG-HKONT

(Sachkonto)

471200

P

2

BSEG-WRBTR

(Betrag in Belegwährung)

100,00

P

2

BSEG-ZUONR

(Zuordnung)

123456789

P

2

BSEG-SGTXT

Belegposition 2

P

2

 

 

Der BadI-Aufruf erfolgt zudem getrennt nach Buchungsbereich (Import-Parameter I_POSTING_AREA, 1 = Bankbuchhaltung, 2 = Nebenbuch).

 

Das Verfahren soll an folgendem Beispiel erläutert werden:

 

Im Kontoauszug werden Gutschriften von einem Zahlungskartenprovider gesendet. Der hierbei ausgewiesene Betrag ist bereits um die Transaktionsgebühr reduziert (Zahlung des Kunden über 100,--, gutgeschrieben wird der Betrag abzüglich 3% Provision, also 97,--). Das Unternehmen möchte den Gebührenanteil auf ein separates Gebühren-Konto mit Ausweis der Vorsteuer buchen. In der Standard-Eingangsverarbeitung ist der Geschäftsvorfall entsprechend gecustomized worden, dass im Buchungsbereich 1 (Bankbuchhaltung) folgender Buchungssatz erzeugt wird:

 

Per         Bank (97,--)     an           Zahlungskartenverrechnungskonto (97,--)

 

Mithilfe des vorliegenden BadIs soll die Buchung nun so umgestaltet werden, dass folgender Buchungssatz herauskommt:

 

Per         Bank (97,--)

                Gebühr (2,70)  ->  KST 4711

                VSt (--,30)        an           Zahlungskartenverrechnungskonto (100,--)

 

Hierzu sind demnach folgende Manipulationen an der Buchungstabelle notwendig:

 

  • Anpassen des Betrages in der Belegposition „Zahlungskartenverrechnungskonto
  • Hinzufügen der Gebührenposition unter Angabe des entsprechenden Steuerkennzeichens und der Kostenstelle
  • Aktivieren der Funktion „Steuer rechnen“ im Belegkopf

 

 

Dazu wird mithilfe der Transaktion SE19 eine Implementierung des BadIs FEB_BADI angelegt und geeignetes Coding zur Methode CHANGE_POSTING_DATA eingefügt:

 

METHOD if_ex_feb_badi~change_posting_data.

  DATAls_ftpost TYPE ftpost,
        l_string  TYPE string,
        ls_febre  TYPE febre,
        l_fees    TYPE string,
        l_brutto  TYPE DECIMALS 2,
        l_len     TYPE sy-index,
        l_count   TYPE count_pi.

  CONSTANTSlc_feeaccount TYPE bseg-hkont VALUE '0000456701',
             lc_taxfees    TYPE bseg-mwskz VALUE 'XY'.

 


  CHECK i_febko-anwnd '0001'.              "nur Elko
  CHECK NOT t_ftpost[] IS INITIAL.           "Buchungen?


* Auf hinreichend scharfe Abgrenzung des Geschäftsvorfalls achten!!!!   IF i_febko-absnd(8) = 'XYZ-BANK'     AND    "nur XYZ-Bank
     i_febko-bukrs    'XYZ'     AND         "nur Bk XYZ
     i_febep-vgint    '0016'    AND         "nur Zahlungskarten
     i_ikofi-ktos2    'ZKVERR'  AND         "Buchung auf ZK-Verr. kto
     i_posting_area   '1'.                  "nur Buchungsber. 1

**********************************************************************
*
*  Standard-Buchung:
*      Bank            an Zahlungskarten-Verrechnungskonto 100,--
*
*  Buchung NACH folgendem Eingriff in die Buchungslogik
*    (g sei der Gebührenanteil von 100,-)
*
*      Bank     100,--
*      Gebühren g      an ZK-Verrechnungskonto 100,-- + g
*
*    Die Gebühren werden dabei mit Steuer (Kz. XY) gebucht
**********************************************************************

*   Höchsten Positions-Index holen und nächsthöheren ermitteln
    DESCRIBE TABLE t_ftpost.
    READ TABLE t_ftpost INDEX sy-tfill INTO ls_ftpost.
    IF sy-subrc 0.
      l_count ls_ftpost-count 1.
    ENDIF.
    CHECK l_count GT 0.

*   Gebühr aus Verwendungszweck rausklamüsern
    LOOP AT t_febre INTO ls_febre.
      CONCATENATE l_string ls_febre-vwezw INTO l_string.
    ENDLOOP.
*   Gebühren stehen (in diesem Fall) ganz am Ende des Verwendungszwecks
    l_len strlenl_string 7.
    l_fees l_string+l_len(7).
*   Säubern...
    TRANSLATE l_fees USING ',.- / '.
    CONDENSE l_fees NO-GAPS.
*   Bruttobetrag = gutgeschriebener Betrag + Gebühren
    l_brutto i_febep-kwbtr + l_fees.

*   Buchungstabelle modifizieren

*   1. Betrag der Pos. ZK-Verr. Konto auf brutto anpassen
    LOOP AT t_ftpost INTO ls_ftpost.
      CHECK ls_ftpost-count '002'
        AND ls_ftpost-fnam  'BSEG-WRBTR'.
*     Bruttobetrag auf ZK-Verr.konto buchen
      WRITE l_brutto TO ls_ftpost-fval LEFT-JUSTIFIED.
      MODIFY t_ftpost FROM ls_ftpost.
    ENDLOOP.

*   2. Flag "Steuer rechnen" zum Belegkopf hinzufügen
    ls_ftpost-stype 'K'.
    ls_ftpost-count '001'.
    ls_ftpost-fnam 'BKPF-XMWST'.
    ls_ftpost-fval 'X'.
    INSERT ls_ftpost INTO t_ftpost INDEX 1.

*   3. Separate Buchungszeile hinzufügen: Gebühr auf Gebührenkonto
    ls_ftpost-stype 'P'.
    ls_ftpost-count l_count.

    ls_ftpost-fnam 'BSEG-BSCHL'.
    ls_ftpost-fval '40'.
    APPEND ls_ftpost TO t_ftpost.
    ls_ftpost-fnam 'BSEG-HKONT'.
    ls_ftpost-fval lc_feeaccount.   "Gebührenkonto
    APPEND ls_ftpost TO t_ftpost.
    ls_ftpost-fnam 'BSEG-WRBTR'.
    ls_ftpost-fval l_fees.
    APPEND ls_ftpost TO t_ftpost.
    ls_ftpost-fnam 'BSEG-ZUONR'.
    ls_ftpost-fval i_febep-zuonr.
    APPEND ls_ftpost TO t_ftpost.
    ls_ftpost-fnam 'BSEG-MWSKZ'.
    ls_ftpost-fval lc_taxfees.      "Steuer-Kz.
    APPEND ls_ftpost TO t_ftpost.
    ls_ftpost-fnam 'BSEG-SGTXT'.
    ls_ftpost-fval text-001.        "Buchungstext
    APPEND ls_ftpost TO t_ftpost.
    ls_ftpost-fnam 'COBL-KOSTL'.
    ls_ftpost-fval <my_kostl>.      “Kostenstelle
    APPEND ls_ftpost TO t_ftpost.

  ENDIF.

ENDMETHOD.

Diesen Post teilen

Repost 0
Um über die neuesten Artikel informiert zu werden, abonnieren:

Kommentiere diesen Post