Coding-Schnipsel

Auf­ruf einer Fio­ri-App aus einem ABAP-Report

Hier zei­ge ich an Hand des Bei­spiels der App Bestand Ein­zel­ma­te­ri­al (F1076), wie die­se Fio­ri-App aus einem ABAP-Report auf­ge­ru­fen wer­den kann. Die Wer­te für die Kon­stan­ten GC_OBJECT und GC_ACTION kom­men aus den App-Details.

REPORT z_test_fiori.

CONSTANTS:
  gc_object TYPE cl_lsapi_manager=>semantic_object VALUE 'Material',
  gc_action TYPE cl_lsapi_manager=>semantic_action VALUE 'displayStockOverview'.

DATA:
  gt_parameters TYPE tihttpnvp,
  gv_matnr      TYPE matnr,
  gv_werks      TYPE werks_d.


  INITIALIZATION.
    GET PARAMETER ID 'MAT' FIELD gv_matnr.
    GET PARAMETER ID 'WRK' FIELD gv_werks.

 START-OF-SELECTION.

    IF NOT gv_matnr IS INITIAL.
      APPEND INITIAL LINE TO gt_parameters ASSIGNING FIELD-SYMBOL(<gf_param>).
      <gf_param>-name  = 'Product'.
      <gf_param>-value = gv_matnr.
    ENDIF.
    IF NOT gv_werks IS INITIAL.
      APPEND INITIAL LINE TO gt_parameters ASSIGNING <gf_param>.
      <gf_param>-name  = 'Plant'.
      <gf_param>-value = gv_werks.
    ENDIF.

* Call FIORI App
    CALL METHOD cl_lsapi_manager=>navigate_to_intent
      EXPORTING
        object          = gc_object
        action          = GC_action
        parameters      = gt_parameters
*       application_hash  =
*       navigation_mode = if_lsapi=>gc_s_navigation_mode-new_external_window
        navigation_mode = if_lsapi=>gc_s_navigation_mode-shell_default
*       add_source_system = ABAP_FALSE
*       xapp_state      =
      EXCEPTIONS
        error           = 1
        not_supported   = 2
        OTHERS          = 3.
    IF sy-subrc <> 0.
*   Implement suitable error handling here
    ENDIF.