Funktionsbaustein dynamisch mit Parameter aufrufen: Unterschied zwischen den Versionen

Aus SAP Wiki ツ
M1ch3lde (Diskussion | Beiträge)
Keine Bearbeitungszusammenfassung
M1ch3lde (Diskussion | Beiträge)
Keine Bearbeitungszusammenfassung
Zeile 1: Zeile 1:
[[Kategorie:Codeschnipsel]]
<syntaxhighlight lang="abap">
<syntaxhighlight lang="abap">
DATA lt_func_param TYPE abap_func_parmbind_tab.
DATA lt_func_param TYPE abap_func_parmbind_tab.

Version vom 30. Januar 2026, 11:15 Uhr

DATA lt_func_param TYPE abap_func_parmbind_tab.
DATA lv_func_name TYPE funcnam.
DATA ls_vbap type ref to data.
DATA lv_vbeln type ref to data.
DATA lv_posnr type ref to data.

CREATE DATA ls_vbap TYPE vbap.
CREATE DATA lv_vbeln TYPE vbap-vbeln.
CREATE DATA lv_posnr TYPE vbap-posnr.

lv_vbeln->* = '0000010889'.
lv_posnr->* = 000010 .
lv_func_name = 'SD_VBAP_SINGLE_READ'.

lt_func_param = VALUE #( ( kind = abap_func_exporting
                           name = 'I_VBELN'
                           value = lv_vbeln )
                         ( kind = abap_func_exporting
                           name = 'I_POSNR'
                           value = lv_posnr )
                         ( kind = abap_func_importing
                           name = 'E_VBAP'
                           value = ls_vbap )
                        ).

DATA(lt_func_exc) = VALUE abap_func_excpbind_tab(
                        ( name = 'RECORD_NOT_FOUND' value = 1 )
                        ( name = 'OTHERS'           value = 2 ) ).

TRY.
    CALL FUNCTION lv_func_name
      PARAMETER-TABLE lt_func_param
      EXCEPTION-TABLE lt_func_exc.

    IF sy-subrc <> 0.
      IF sy-subrc = 1.
        "not found
      ELSE.
        "others
      ENDIF.
    ELSE.
     FIELD-SYMBOLS: <ls_vbap>.
     ASSIGN ls_vbap->* TO <ls_vbap>.
     ASSIGN COMPONENT 'MATNR' OF STRUCTURE <ls_vbap> TO FIELD-SYMBOL(<lv_material>).
    ENDIF.

  CATCH cx_sy_dyn_call_illegal_func INTO DATA(lx_dyn_call_illegal_func).
  CATCH cx_sy_dyn_call_error INTO DATA(lx_dyn_call_error).
ENDTRY.