使用ABAP呼叫BRF function

2021-09-25 05:45:19 字數 1560 閱讀 1674

針對如下的brf+ function:

基於如下輸入,根據rule的規則,計算出的final price應等於 10 / ( 1 + 0.12 ) = 8.93

可以使用如下的report來將上述輸入傳入brf+的api,通過abap **來呼叫function的執行:

report zcall_function.

data: lo_function type ref to if_fdt_function,

lo_context type ref to if_fdt_context,

lo_result type ref to if_fdt_result,

lx_fdt type ref to cx_fdt,

lv_string type string.

field-symbols type if_fdt_types=>s_message.

lo_function =

cl_fdt_factory=>if_fdt_factory~get_instance(

)->get_function( iv_id = 'fa163e8eab031ee48b847adc6a96d5f0' ).

try.

lo_context = lo_function->get_process_context( ).

lo_context->set_value( iv_name = 'customer'

ia_value = 'sap' ).

lo_context->set_value( iv_name = 'item' ia_value = 'pencil' ).

lo_context->set_value( iv_name = 'promotion' ia_value = space ).

lo_context->set_value( iv_name = 'shelf_price'

ia_value = '10' ).

lo_function->process( exporting io_context = lo_context

importing eo_result = lo_result ).

lo_result->get_value( importing ea_value = lv_string ).

write lv_string .

catch cx_fdt into lx_fdt.

loop at lx_fdt->mt_message assigning .

write / -text.

endloop.

endtry.

report輸出和在brf+ workbench裡得到的結果一致:

ABAP標準螢幕呼叫選擇螢幕

有時候標準螢幕不能達到想要的效果,比如 標準螢幕沒有select options 下面實現標準螢幕呼叫選擇螢幕 1 定義乙個標準螢幕 9001.2 定義個subscreen控制項 sub 3 定義選擇螢幕 9999 selection screen begin of screen 9999 as s...

ABAP 呼叫快取池中的資料

寫程式的時候,有些邏輯可能需要呼叫其他程式的子例程,資料,那其實方法很多,這篇文章主要說一下在不改動被呼叫程式的情況下,怎麼呼叫其他程式邏輯。首先,如果是只需要呼叫某個程式的子例程,if found 是確保沒找到此例程不會報錯 perform 子例程名 in program 被呼叫程式名 if fo...

ABAP 動態where 使用

report ztest001 xch.tables makt.data where tab 80 occurs 10 with header line.data wa itab like makt occurs 10with header line.parameters s trx like ma...