前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >使用代码创建BRF function

使用代码创建BRF function

作者头像
Jerry Wang
发布2019-07-09 18:53:12
4690
发布2019-07-09 18:53:12
举报

Created by Jerry Wang, last modified on Oct 02, 2014

代码语言:javascript
复制
REPORT zceate_app_function.
DEFINE write_errors.
  IF &1 IS NOT INITIAL.
  LOOP AT &1 ASSIGNING <ls_message>.
  WRITE: <ls_message>-text.
  ENDLOOP.
  RETURN.
  ENDIF.
END-OF-DEFINITION.
START-OF-SELECTION.
  DATA: lo_factory     TYPE REF TO if_fdt_factory,
        lo_application TYPE REF TO if_fdt_application,
        lt_message     TYPE if_fdt_types=>t_message,
        lv_boolean     TYPE abap_bool.
  FIELD-SYMBOLS: <ls_message> TYPE if_fdt_types=>s_message.
  lo_factory = cl_fdt_factory=>if_fdt_factory~get_instance( ).
  lo_application = lo_factory->get_application( ).
  lo_application->if_fdt_transaction~enqueue( ).
  lo_application->set_development_package( '$TMP' ).
  lo_application->if_fdt_admin_data~set_name( 'PRICING2' ).
  lo_application->if_fdt_admin_data~set_texts(
  iv_short_text = 'Pricing2' ).
  lo_application->if_fdt_transaction~activate(
      IMPORTING et_message           = lt_message
                ev_activation_failed = lv_boolean ).
  write_errors lt_message.
  lo_application->if_fdt_transaction~save( ).
  lo_application->if_fdt_transaction~dequeue( ).
  lo_factory = cl_fdt_factory=>if_fdt_factory~get_instance(
  iv_application_id = lo_application->mv_id ).
  BREAK-POINT.
  WRITE:/ lo_application->mv_id.
  DATA: lo_function    TYPE REF TO if_fdt_function,
        lts_context_id TYPE if_fdt_types=>ts_object_id,
        lv_result_id   TYPE if_fdt_types=>id.
  lo_function ?= lo_factory->get_function( ).
  lo_function->if_fdt_transaction~enqueue( ).
  lo_function->if_fdt_admin_data~set_name( 'price_calculation' ).
  lo_function->if_fdt_admin_data~set_texts(
  iv_short_text = 'price calculation' ).
  lo_function->set_function_mode( if_fdt_function=>gc_mode_event ).
* WE NEED TO CREATE DATA OBJECT AND ASSIGN IT TO CONTEXT
  DATA lo_element TYPE REF TO if_fdt_element.
* CREATION: get new element via factory
  lo_element ?= lo_factory->get_data_object(
  iv_data_object_type = if_fdt_constants=>gc_data_object_type_element ).
  lo_element->if_fdt_transaction~enqueue( ).
  lo_element->if_fdt_admin_data~set_name( 'customer' ).
  lo_element->if_fdt_admin_data~set_texts( iv_short_text = 'customer' ).
  lo_element->set_element_type( if_fdt_constants=>gc_element_type_text ).
  lo_element->set_element_type_attributes( iv_length = 30 ).
  INSERT lo_element->mv_id INTO TABLE lts_context_id.
* CREATE RESULT DATA OBJECT
  lo_element ?= lo_factory->get_data_object(
      iv_data_object_type = if_fdt_constants=>gc_data_object_type_element ).
  lo_element->if_fdt_transaction~enqueue( ).
  lo_element->if_fdt_admin_data~set_name( 'final_price' ).
  lo_element->if_fdt_admin_data~set_texts( iv_short_text = 'final price' ).
  lo_element->set_element_type( if_fdt_constants=>gc_element_type_number ).
  lo_element->set_element_type_attributes(
      iv_length        = 7
      iv_decimals      = 2
      iv_only_positive = abap_true ).
  lv_result_id     = lo_element->mv_id.
* WE NEED TO ASSIGN PROPERTY CONTEXT TO FUNCTION INSTANCE
  lo_function->set_context_data_objects( lts_context_id ).
  lo_function->set_result_data_object( lv_result_id ).
  lo_function->if_fdt_transaction~activate(
     EXPORTING
        iv_deep              = abap_true
     IMPORTING
        et_message           = lt_message
        ev_activation_failed = lv_boolean ).
  write_errors lt_message.
  lo_function->if_fdt_transaction~save(
       EXPORTING iv_deep = abap_true ).
  lo_function->if_fdt_transaction~dequeue(
       EXPORTING iv_deep = abap_true ).

function name通过set_name设置:

clipboard1
clipboard1

report里创建了一个data element customer和一个result element final_price:

clipboard2
clipboard2
clipboard3
clipboard3

点击PRICE_CALCULATION的超链接进入function的detail page:

能找到function的technical ID和signature, event mode:

clipboard4
clipboard4
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019年07月07日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Created by Jerry Wang, last modified on Oct 02, 2014
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档