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

Der vorliegende Blog enthält von mir im Laufe meiner beruflichen Tätigkeit als SAP-Berater zusammengetragene Informationen / Beispiel-Codings zum Themenkreis SAP, speziell FI/CO.

Automatisierte Anlage von Abrechnungsvorschriften zu Innenaufträgen

Veröffentlicht am 15. Oktober 2013 von sapmandoo in CO

Um eine Abrechnungsvorschrift zu einem Innenauftrag automatisiert anzulegen, sollte in neueren Releases die Standardfunktionalität "automatische Generierung von Abrechnungsvorschriften" verwendet werden. Hierüber steht ein umfassendes Framework zur Verfügung, mit dem die meisten Use-Cases abgedeckt sein sollten. Details hierzu finden sich im Customizing-Leitfaden unter Controlling - Innenaufträge - Istbuchungen - Abrechnung - Automatische Generierung von Abrechnungsvorschriften ...

 

Für Datenübernahmen von Innenaufträgen, d.h. Übernahme der Stammdaten inkl. Abrechnungsvorschrift kann der BAPI BAPI_INTERNALORDER_CREATE verwendet werden.

 

Sollte es in Ausnahmefällen jedoch nötig sein, per Programm Abrechnungsvorschriften zu bestehenden Innenauftragen zu generieren, steht der Funktionsbaustein: K_ORDER_SRULE_ADD  zur Verfügung, der allerdings einen großen Nachteil hat: er wurde von SAP in neueren Releases deaktiviert, d.h. im Coding ist ein sofortiger Rücksprung zur rufenden Anwendung implementiert, der jegliche Ausführung unterbindet:

 

************************************************************
************************************************************

  RETURN"fm will be deleted within the next releases ...

************************************************************
************************************************************

 

D.h., um ihn zu verwenden, muss entweder der oben stehende Befehl per Modifikation ausgebaut oder eine Kopie des Funktionsbausteins im Kundennamensraum angelegt werden.

 

Schade eigentlich, denn der Funktionsbaustein werkelt gut.

 

Der FuBa kann wie folgt gerufen werden:

 

*&---------------------------------------------------------------------*
*& Report  YDEMO_ORDER_SRULE_ADD
*&
*&---------------------------------------------------------------------*
*& maschinelles Anlegen einer Abrechnungsvorschrift zu CO-Innenaufträgen
*&---------------------------------------------------------------------*
REPORT ydemo_order_srule_add.

* Schnittstelle f. BAPI
DATAl_objnr     LIKE aufk-objnr.            "Objektnummer

DATA:
*     Tabelle mit Abrechnungsvorschriften
      lt_srules   TYPE TABLE OF srules_ext,
*     Tabelle f. Übergabe CO-PA Felder bei Abrechnung ins Ergebnis
*     Angabe der Tabelle ist Pflicht, auch wenn nicht ins CO-PA
*     abgerechnet werden soll...
      lt_criteria TYPE TABLE OF bapi_copa_data,
      l_rule_inserted LIKE sy-batch.

DATAls_srule    TYPE srules_ext.

* Objektnummer zusammenbauen oder für einen gegebenen Innenauftrag
* einfach aus der Tab. AUFK nachlesen (Feld AUFK-OBJNR)
* Zusammenbauen ist aber auch recht einfach:
*   Format Objektnummer f. CO-Aufträge: XX999999999999
*   XX           = Objektart OR
*   999999999999 = 12-stellige Innenauftragsnummer
l_objnr(2'OR'.
l_objnr+2(12'000000400000'.

* Abrechnungsvorschrift zusammenbasteln...

* Abrechnungsart (engl. Festwerte)
*   z.B. FUL = Gesamtabrechnung
*        PER = periodische Abrechnung
ls_srule-settl_type    'PER'.

* ls_srule-SOURCE                      "opt: Ursprungszuordnung

* Aufteilung
ls_srule-percentage    100.          "prozentuale Aufteilung ODER
*ls_srule-equiv_number                 "Äquivalenzziffer       ODER
*ls_srule-amount                       "Betrag f. Betragsabrechnung

* Das Abrechungsempfängerobjekt ergibt sich aus der selektiven
* Befüllung der folgenden Felder:
*ls_srule-bus_area                     "Geschäftsbereich
*ls_srule-comp_code                    "Buchungskreis
*ls_srule-gl_account                   "Sachkonto
*ls_srule-profit_ctr                   "Profitcenter
ls_srule-costcenter    '0000002001'"Kostenstelle
*ls_srule-orderid                      "Innenaauftrag
*ls_srule-wbs_element                  "PSP-Element
*ls_srule-asset_no                     "Anlage
* ...

APPEND ls_srule TO lt_srules.

CALL FUNCTION 'K_ORDER_SRULE_ADD'
  EXPORTING
    object_no            l_objnr
  IMPORTING
    flg_rule_inserted    l_rule_inserted
  TABLES
    srules               lt_srules
    criteria             lt_criteria
  EXCEPTIONS
    wrong_input          1
    error_occurred       2
    object_not_found     3
    activity_not_allowed 4
    OTHERS               5.
IF sy-subrc <> 0.
  WRITE'Fehler'sy-subrc'beim Anlegen der Abrechnungsvorschrift'.
ELSE.
  IF l_rule_inserted 'X'.
    WRITE'Abrechnungsvorschrift hinzugefügt'.
    COMMIT WORK.
  ELSE.
    WRITE'Abrechnungsvorschrift nicht hinzugefügt'.
  ENDIF.
ENDIF.

Kommentare