cancel
Showing results for 
Search instead for 
Did you mean: 

Call BRFplus-Function through ABAP with Table as Context

0 Kudos

Hey Guys,

i have a problem with calling My BRFplus Function with through ABAP.
BRFplus generates the following Code Snippet. But it doesn't work. My Application dumps at the point:

<lr_te_data_source> = lt_inputbrfplus.

It dumps with the following message: GETWA_NOT_ASSIGNED.

Field Symbol is not assigned. Can someone help me and make my BRfplus-Function-Call work?

  CONSTANTS:lv_function_id TYPE if_fdt_types=>id VALUE '0698F9B4010C1EE8B9E785AFFC000AF0'.
  DATA:lv_timestamp TYPE timestamp,
       lt_name_value TYPE abap_parmbind_tab,
       ls_name_value TYPE abap_parmbind,
       lr_data TYPE REF TO data,
       lx_fdt TYPE REF TO cx_fdt,
       lr_te_data_source TYPE REF TO data.
  FIELD-SYMBOLS: <la_any> TYPE any,
                 <lr_te_data_source> TYPE any.
****************************************************************************************************
* Alle Methodenaufrufe, die innerhalb eines Bearbeitungszyklus dieselbe Funktion aufrufen, müssen denselben Zeitstempel verwenden
* Bei Folgeaufrufen derselben Funktion ist es ratsam, alle Aufrufe mit demselben Zeitstempel auszuführen
* Dies dient zur Verbesserung der System-Performance
****************************************************************************************************
* Wenn Sie Strukturen oder Tabellen ohne DDIC-Bindung verwenden, müssen Sie die jeweiligen Typen
* selbst angeben. Fügen Sie den entsprechenden Datentyp in die jeweilige Zeile des Quellcodes ein.
****************************************************************************************************
  GET TIME STAMP FIELD lv_timestamp.
****************************************************************************************************
* Funktion ohne Aufzeichnung der Trace-Daten bearbeiten, Kontextdatenobjekte per Namen-/Wertetabelle übergeben
****************************************************************************************************
* Funktionsbearbeitung vorbereiten:
****************************************************************************************************
* Lassen Sie BRFplus Ihre Daten in den für BRFplus erforderlichen Typ konvertieren:
****************************************************************************************************
  ls_name_value-name = 'TE_DATA_SOURCE'.
  "CREATE DATA lr_te_data_source TYPE [ENTER DESIRED TYPE HERE] .
  ASSIGN lr_te_data_source->* TO <lr_te_data_source>.
  <lr_te_data_source> = lt_inputbrfplus.
  lr_data = lr_te_data_source.
  cl_fdt_function_process=>move_data_to_data_object( EXPORTING ir_data             = lr_data
                                                               iv_function_id      = lv_function_id
                                                               iv_data_object      = '0698F9B4010C1EE8B9EC2E2AD64454A8' "TE_DATA_SOURCE
                                                               iv_timestamp        = lv_timestamp
                                                               iv_trace_generation = abap_false
                                                               iv_has_ddic_binding = abap_false
                                                     IMPORTING er_data             = ls_name_value-value ).
  INSERT ls_name_value INTO TABLE lt_name_value.
****************************************************************************************************
* Datenobjekt anlegen, um den Ergebniswert nach der Berarbeitung der Funktion zu sichern
* Sie können den folgenden Aufruf überspringen, wenn Sie bereits eine
* Variable für das Ergebnis festgelegt haben. Ersetzen Sie auch den Parameter
* EA_RESULT im Methodenaufruf CL_FDT_FUNCTION_PROCESS=>PROCESS
* mit der gewünschten Variable.
****************************************************************************************************
  cl_fdt_function_process=>get_data_object_reference( EXPORTING iv_function_id      = lv_function_id
                                                                iv_data_object      = '_V_RESULT'
                                                                iv_timestamp        = lv_timestamp
                                                                iv_trace_generation = abap_false
                                                      IMPORTING er_data             = lr_data ).
  ASSIGN lr_data->* TO <la_any>.
  TRY.
      cl_fdt_function_process=>process( EXPORTING iv_function_id = lv_function_id
                                                  iv_timestamp   = lv_timestamp
                                        IMPORTING ea_result      = <la_any>
                                        CHANGING  ct_name_value  = lt_name_value ).
      CATCH cx_fdt into lx_fdt.
****************************************************************************************************
* Sie können zur Fehlerbehandlung CX_FDT->MT_MESSAGE prüfen.
****************************************************************************************************
  ENDTRY.

Accepted Solutions (1)

Accepted Solutions (1)

RaminS
Participant
0 Kudos

You get an error because you haven't created your input data reference object. You have to uncomment the line: "CREATE DATA lr_te_data_source TYPE [ENTER DESIRED TYPE HERE], then put the data type inside the [ ] brackets, and assign some values to it so it can be sent to the BRF function as input.

Answers (0)