Please enable JavaScript to view this site.

Prozess Designer

In diesem Kapitel wird das Anlegen eines Funktionsbausteins am Beispiel von Z_ACC_DOCUMENT_POST beschrieben.

Der Funktionsbaustein wird im Object Navigator angelegt. Nähere Information ist im Kapitel Administrationshandbuch Kapitel Konfiguration in SAP beschrieben.

sap_funktionsbaustein_anlegen_dialog

Nach dem Sichern der Eingaben öffnet sich der Dialog Function Builder: Z_ACC_DOCUMENT_POST anzeigen

Eigenschaften

Hier muss der Radiobutton Remote fähiger Baustein ausgewählt werden.

sap_funktionsbaustein_anzeigen

Import

Hier werden Input-Parameter definiert, welche keiner SAP-Tabelle zugeordnet sind.

sap_funktionsbaustein_import

Export

Hier werden Parameter definiert, die von dem Funktionsbaustein zurückgegeben werden und als output-Parameter in dem JobSAP BAPI-Baustein verwendet werden können.

sap_funktionsbaustein_export

Changing

Hier werden keine Einträge benötigt.

Tabellen

Hier werden die Tabellen eingetragen, die von dem Funktionsbaustein BAPI_ACC_DOCUMENT_POST verwendet werden. Diese Tabellen müssen auch in der bapi.xml - Datei des JobSAP BAPI-Bausteins aufgelistet werden.

Hinweis: Falls eine Warnung erscheint, dass TABLES-Parameter obsolet sind, kann diese durch zweimaliges Bestätigen der ENTER-Taste übergangen werden.

sap_funktionsbaustein_tabellen

Ausnahmen

Hier werden keine Einträge benötigt.

Quelltext

In das Textfeld wird der ABAP-Code für den Funktionsbaustein eingefügt.

FUNCTION z_acc_document_post.
*"----------------------------------------------------------------------
*"*"Lokale Schnittstelle:
*"  IMPORTING
*"     VALUE(DOCUMENTHEADER) TYPE  BAPIACHE09
*"     VALUE(CUSTOMERCPD) TYPE  BAPIACPA09 OPTIONAL
*"     VALUE(CONTRACTHEADER) TYPE  BAPIACCAHD OPTIONAL
*"     VALUE(LANGUAGE) TYPE  CHAR_02 DEFAULT 'DE'
*"     VALUE(ONLY_SUCCESS_COMMIT) TYPE  CHAR_01 DEFAULT 'X'
*"     VALUE(COMMIT_AND_WAIT) TYPE  CHAR_01 DEFAULT SPACE
*"  EXPORTING
*"     VALUE(OBJ_TYPE) TYPE  BAPIACHE09-OBJ_TYPE
*"     VALUE(OBJ_KEY) TYPE  BAPIACHE09-OBJ_KEY
*"     VALUE(OBJ_SYS) TYPE  BAPIACHE09-OBJ_SYS
*"     VALUE(RETURNCODE) TYPE  INTEGER
*"     VALUE(MESSAGE_TYPE) TYPE  CHAR_01
*"     VALUE(RETURN_COMMIT) TYPE  BAPIRET2
*"  TABLES
*"      ACCOUNTGL STRUCTURE  BAPIACGL09 OPTIONAL
*"      ACCOUNTRECEIVABLE STRUCTURE  BAPIACAR09 OPTIONAL
*"      ACCOUNTPAYABLE STRUCTURE  BAPIACAP09 OPTIONAL
*"      ACCOUNTTAX STRUCTURE  BAPIACTX09 OPTIONAL
*"      CURRENCYAMOUNT STRUCTURE  BAPIACCR09
*"      CRITERIA STRUCTURE  BAPIACKEC9 OPTIONAL
*"      VALUEFIELD STRUCTURE  BAPIACKEV9 OPTIONAL
*"      EXTENSION1 STRUCTURE  BAPIACEXTC OPTIONAL
*"      RETURN STRUCTURE  BAPIRET2
*"      PAYMENTCARD STRUCTURE  BAPIACPC09 OPTIONAL
*"      CONTRACTITEM STRUCTURE  BAPIACCAIT OPTIONAL
*"      EXTENSION2 STRUCTURE  BAPIPAREX OPTIONAL
*"      REALESTATE STRUCTURE  BAPIACRE09 OPTIONAL
*"      ACCOUNTWT STRUCTURE  BAPIACWT09 OPTIONAL
*"----------------------------------------------------------------------
 
  TYPE-POOLS abap.
  CONSTANTS true  VALUE abap_true.
  CONSTANTS false VALUE abap_false.
 
* =========================================================
* Definitionen & Deklarationen
* =========================================================
 
* Vorbelegungen
  returncode = 0.
  message_type = 'S'.
 
* Referenz zur Exceptionklasse
  DATA r_exception   TYPE REF TO cx_root.
  DATA str_exception TYPE string.
 
* Lokale Strukturen & Variablen
  DATA ls_return     TYPE bapiret2.
  DATA lv_msg        TYPE char0128.
 
* =========================================================
* BAPI
* =========================================================
 
  CALL FUNCTION 'BAPI_ACC_DOCUMENT_POST'
    EXPORTING
      documentheader    = documentheader  " (obligatorisch)
      customercpd       = customercpd
      contractheader    = contractheader
    IMPORTING
      obj_type          = obj_type
      obj_key           = obj_key
      obj_sys           = obj_sys
    TABLES
      accountgl         = accountgl
      accountreceivable = accountreceivable
      accountpayable    = accountpayable
      accounttax        = accounttax
      currencyamount    = currencyamount  " Währungspositionen (obligatorisch)
      criteria          = criteria
      valuefield        = valuefield
      extension1        = extension1
      return            = return          " Returnparameter (obligatorisch)
      paymentcard       = paymentcard
      contractitem      = contractitem
      extension2        = extension2
      realestate        = realestate
      accountwt         = accountwt
    . " Point
 
* =========================================================
* Error-Checking
* =========================================================
 
  READ TABLE return INTO ls_return WITH KEY type = 'W'.
 
  IF sy-subrc = 0 AND only_success_commit = true.
    message_type = 'W'.
    returncode = 3.
  ENDIF.
 
  READ TABLE return INTO ls_return WITH KEY type = 'E'.
 
  IF sy-subrc = 0.
    message_type = 'E'.
    returncode = 2.
  ENDIF.
 
* =========================================================
* Translation Messages (RETURN-TABLE)
* =========================================================
 
  LOOP AT return INTO ls_return.
 
    CALL FUNCTION 'FORMAT_MESSAGE'
      EXPORTING
        id        = return-id
        lang      = language
        no        = return-number
        v1        = return-message_v1
        v2        = return-message_v2
        v3        = return-message_v3
        v4        = return-message_v4
      IMPORTING
        msg       = lv_msg
      EXCEPTIONS
        not_found = 1
        OTHERS    = 2
      ." Punkt
 
    " Wenn keine Übersetzung möglich, dann wird
    " die Default-Sprache beibehalten
 
    IF sy-subrc = 0.
 
      ls_return-message  = lv_msg.
      MODIFY return FROM ls_return.
 
    ENDIF.
 
  ENDLOOP.
 
* =========================================================
* COMMIT
* =========================================================
 
  " returncode 0 = BAPI wurde korrekt ausgeführt
  IF returncode = 0.
 
    TRY.
        CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
          EXPORTING
            wait   = commit_and_wait
          IMPORTING
            return = return_commit
          . " Punkt
      CATCH cx_sy_dyn_call_illegal_type INTO r_exception.
    ENDTRY.
 
    "-----------------------------------------------------
    " COMMIT Error-Checking
    "-----------------------------------------------------
    IF return_commit-type = 'E'.
      message_type = 'E'.
      returncode = 4.
    ENDIF.
 
  ELSE.
 
    TRY.
        CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'
          IMPORTING
            return = return_commit
          . " Punkt
      CATCH cx_sy_dyn_call_illegal_type INTO r_exception.
    ENDTRY.
 
    "-----------------------------------------------------
    " ROLLBACK Error-Checking
    "-----------------------------------------------------
    IF return_commit-type = 'E'.
      message_type = 'E'.
      returncode = 5.
    ENDIF.
 
  ENDIF.
 
  " Exception für Ausgabe aufbereiten
  "-----------------------------------
  IF r_exception IS NOT INITIAL.
    CALL METHOD r_exception->if_message~get_text
      RECEIVING
        result = str_exception.
    MESSAGE str_exception TYPE 'I'.
  ENDIF.
 
  "---------------------------------------------------------
  " Translation Messages (RETURN-STRUCTURE)
  "---------------------------------------------------------
 
  CLEAR lv_msg.
 
  CALL FUNCTION 'FORMAT_MESSAGE'
    EXPORTING
      id        = return_commit-id
      lang      = language
      no        = return_commit-number
      v1        = return_commit-message_v1
      v2        = return_commit-message_v2
      v3        = return_commit-message_v3
      v4        = return_commit-message_v4
    IMPORTING
      msg       = lv_msg
    EXCEPTIONS
      not_found = 1
      OTHERS    = 2
    ." Punkt
 
  " Wenn keine Übersetzung möglich, dann wird
  " die Default-Sprache beibehalten
 
  IF sy-subrc = 0.
 
    return_commit-message  = lv_msg.
 
  ENDIF.
 
ENDFUNCTION.

Funktionsbaustein aktivieren

Der Funktionsbaustein wird über die Aktivieren-Schaltfläche aktiviert (alternativ Strg+F3).

sap_funktionsbaustein_aktivieren

Wurde der Funktionsbaustein aktiviert, erscheint folgende Meldung: Objekt(e) wurde(n) aktiviert in der Statusleiste.