Mit dieser Anweisung rufen Sie von Ihnen geschriebene ABAP-Programme auf.
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.
*CALL_CUSTOM_LOGIC COMPLEX_ALLOCATION
*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.
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.
Code (in der EXECUTE-Methode der implementierenden Klasse) für die abnehmende Abschreibung implementieren
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.
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
Vorhandene Werte werden von Planning and Consolidation immer überschrieben.
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
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.
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.
Anweisungen zum Anlegen eines SAP Business Add-In finden Sie in der ABAP-Anwendungshilfe in der SAP-NetWeaver-Bibliothek.