Show TOC

FunktionsdokumentationBenutzerdefinierte Logik und BAdI Dieses Dokument in der Navigationsstruktur finden

 

Mit dieser Anweisung rufen Sie von Ihnen geschriebene ABAP-Programme auf.

Aktivitäten

Führen Sie die folgende Anweisung aus, um benutzerdefinierte ABAP-Programme aufzurufen:

*CALL_CUSTOM_LOGIC <filter_value_of_the_BADI>

wobei filter_value_of_the_BADI der Name des Filters ist, den Sie während der BAdI-Implementierung von UJ_CUSTOM_LOGIC BADI angegeben haben.

Beispiel für benutzerdefinierte Logik

*CALL_CUSTOM_LOGIC COMPLEX_ALLOCATION

Beispiele für BAdIs

*START_BADI / *END_BADI ruft die gesamte benutzerdefinierte ABAP-Programmierung auf, die mithilfe von UJ_CUSTOM_LOGIC BADI (Transaktion SE19) geschrieben wurde und ermöglicht Ihnen, Parameter in das ABAP-Coding im BAdI zu exportieren.

Syntax

*START_BADI <filter_value_of_your_BADI_implementation>

<key1> = <value1>

<key2> = <value2>

*END_BADI

wobei filter_value_of_your_BADI_implementation der Name des Filters ist, den Sie während der BAdI-Implementierung von UJ_CUSTOM_LOGIC BADI angegeben haben.

Syntaxbeispiel

Im folgenden Beispiel wird gezeigt, wie Sie einen implementierten BAdI mit CALC_ACCT als Filterwert aufrufen, um einem Zielkonto zwei Konten hinzuzufügen:

*START_BADI ROUND

DECIMAL = 2

*END_BADI

Der Parameter DECIMAL ist in der internen Tabelle IT_PARAM in der Methode EXECUTE sichtbar. In die Methode EXECUTE können Sie Ihre eigene benutzerdefinierte Logik schreiben, um eingehende Bewegungsdaten von CT_DATA zu ändern.

Optionale Parameter

Folgende optionale Parameter können Sie mit in einer *START_BADI/*END_BADI-Anweisung verwenden:

  • Query - Führt die Standardabfrage durch. Gültige Werte sind EIN (Standard) und AUS. Setzen Sie Abfrage auf AUS, wenn Sie eine eigene Abfrage ausführen möchten.

  • Write - Schreibt automatisch die Daten zurück. Gültige Werte sind EIN (Standard) und AUS.

Beispiel

Code (in der EXECUTE-Methode der implementierenden Klasse) für die abnehmende Abschreibung implementieren

Hinweis Hinweis

Bevor Sie ein BAdI in der Skriptlogik verwenden können, müssen Sie UJ_CUSTOM_LOGIC BADI aus Transaktion SE19 implementieren. Informationen zum Implementieren eines BAdI finden Sie in der ABAP-Onlinehilfe unter http://help.sap.com/saphelp_nw70/helpdata/de/32/a83942424dac04e10000000a1550b0/content.htm.

Ende des Hinweises

METHOD if_uj_custom_logic~execute.

DATA: ls_param TYPE ujk_s_script_logic_hashentry,

l_log TYPE string,

l_ast_acct(16) TYPE c,

l_year(3) TYPE n,

l_percentage(3) TYPE p,

lo_model TYPE REF TO if_uj_model,

lo_dim TYPE REF TO if_uja_dim_data,

ls_dim TYPE uja_s_dim,

time_dim(16) TYPE c,

lr_rec TYPE REF TO data,

lr_result_rec TYPE REF TO data,

l_intermediate_value TYPE uj_sdata,

lt_final TYPE REF TO data.

FIELD-SYMBOLS: <ls_rec> TYPE ANY,

<ls_result_rec> TYPE ANY,

<ls_time> TYPE ANY,

<ls_signed.data> TYPE ANY,

<lt_final> TYPE STANDARD TABLE

* Sicherstellen, dass alle Parameter übergeben werden.

CLEAR ls_param.

READ TABLE it_param WITH KEY hashkey = 'YEAR' INTO ls_param.

IF sy-subrc NE 0.

l_log = 'You have not specified the parameter ''YEAR'' which is required.'.

cl_ujk_logger=>log( i_object = l_log ).

RAISE EXCEPTION TYPE cx_uj_custom_logic.

EXIT.

ENDIF.

l_year = ls_param-hashvalue.

CLEAR ls_param.

READ TABLE it_param WITH KEY hashkey = 'PERCENTAGE' INTO ls_param.

IF sy-subrc NE 0.

l_log = 'You have not specified the parameter ''PERCENTAGE'' which is required.'.

cl_ujk_logger=>log( i_object = l_log ).

RAISE EXCEPTION TYPE cx_uj_custom_logic.

EXIT.

ENDIF.

l_percentage = ls_param-hashvalue.

* Namen der Kontodimension abrufen

cl_uj_model=>get_model( EXPORTING i_appset_id = i_appset_id

RECEIVING ro_model = lo_model ).

CALL METHOD lo_model->get_dim_data_by_type

EXPORTING

i_dim_type = uj00_cs_dim_type-time

i_appl_id

= i_appl_id

RECEIVING

ro_dim_data = lo_dim.

TRY.

CALL METHOD lo_dim->get_info

IMPORTING

es_dim_info = ls_dim.

ENDTRY.

time_dim = ls_dim-dimension. TRANSLATE time_dim TO UPPER CASE.

CREATE DATA lt_final LIKE ct_data.

ASSIGN lt_final->* TO <lt_final>. CREATE DATA lr_result_rec LIKE LINE OF ct_data. ASSIGN lr_result_rec->* TO <ls_result_rec>. CREATE DATA lr_rec LIKE LINE OF ct_data. ASSIGN lr_rec->* TO <ls_rec>.

* Schleife durch eingehende Daten ausführen und Ergebnissatz anlegen

LOOP AT ct_data ASSIGNING <ls_rec>.

<ls_result_rec> = <ls_rec>.

ASSIGN COMPONENT time_dim OF STRUCTURE <ls_result_rec> TO <ls_time>.

<ls_time>+0(4) = is <ls_time>+0(4) + l_year.

ASSIGN COMPONENT 'SIGNEDDATA' OF STRUCTURE <ls_result_rec> TO <ls_signeddata>.

DO l_year TIMES.

l_intermediate_value = l_intermediate_value + ( <ls_signeddata> - l_intermediate_value ) * l_percentage / 100.

ENDDO.

<ls_signeddata> = <ls_signeddata> - l_intermediate_value.

APPEND <ls_result_rec> TO <lt_final>.

ENDLOOP.

* Resultierende Daten zurücksenden

Hinweis Hinweis

Vorhandene Werte werden von Planning and Consolidation immer überschrieben.

Ende des Hinweises

ct_data = <lt_final>.

ENDMETHOD.

Inhalt der Skriptlogikdatei zum Aufrufen des BAdI:

*START_BADI DECD

QUERY = ON

WRITE = ON

YEAR = 1

PERCENTAGE = 10 *END_BADI

Hinweis Hinweis

ET_MESSAGE im BAdI protokolliert die Nachricht im Datenmanager.

Wenn Sie die Ausführung anhalten möchten, lösen Sie in einer BAdI-Implementierung die Ausnahme cx_uj_custom_logic aus.

Ende des Hinweises

Alle in dieser Dokumentation enthaltenen Software-Quelltextzeilen oder -Strings („Code“) dienen nur als Beispiele und sind nicht für die Anwendung in einem Produktivsystem vorgesehen. Der angegebene Quelltext soll lediglich die Syntax und die Ausdrucksregeln bestimmter Softwarecodes erläutern. SAP übernimmt keine Verantwortung für die Richtigkeit und Vollständigkeit des angegebenen Quelltextes und übernimmt keine Haftung für Fehler oder Schäden, die aus dessen Anwendung entstehen könnten; es sei denn, derartige Schäden wurden von SAP vorsätzlich oder fahrlässig hervorgerufen.

Weitere Informationen

Anweisungen zum Anlegen eines SAP Business Add-In finden Sie in der ABAP-Anwendungshilfe in der SAP-NetWeaver-Bibliothek.