











To implement the Activation method we need to define Class Constructor

Implement the logic . I.e pass the TRUE value to the gv_activation_vento attribute(for activation). Similarly if we want to work with other scenarios like save , check etc , pass true for those attributes in the constructor.



METHOD if_fdt_application_settings~activation_veto.
*the application guid
CONSTANTS: gc_appl_id TYPE if_fdt_types=>id VALUE '000C2986A9971EE780E0B4AB55C73047'.
*create a structure as per the Decision table
TYPES:BEGIN OF ts_msg_txt_data,
age TYPE char24,
gender TYPE char24,
pension TYPE char50,
END OF ts_msg_txt_data,
*Create a structure for the row count
BEGIN OF ts_table_data,
row_no TYPE int4,
col_no TYPE int4,
expression_id TYPE if_fdt_types=>id,
r_value TYPE REF TO data,
ts_range TYPE if_fdt_range=>ts_range,
END OF ts_table_data .
* data declarations
DATA: lref_decision_table TYPE REF TO cl_fdt_decision_table,
lref_factory TYPE REF TO if_fdt_factory,
lt_msg_data TYPE if_fdt_decision_table=>ts_table_data,
ls_msg_data LIKE LINE OF lt_msg_data,
lt_table_data_msg TYPE TABLE OF ts_table_data,
ls_table_data_msg TYPE ts_table_data,
ls_table_data1 TYPE ts_table_data,
lt_msg_txt_data TYPE STANDARD TABLE OF ts_msg_txt_data,
ls_msg_txt_data TYPE ts_msg_txt_data,
ls_range_msg TYPE if_fdt_range=>s_range,
lt_data_final TYPE TABLE OF ztest_data_2,
ls_data_final TYPE ztest_data_2.
*field symbols declaration
FIELD-SYMBOLS :<fs_lv_value> TYPE any,
<fs_lpw_lv_amount> TYPE if_fdt_types=>element_amount.
*Generic factory instance
lref_factory = cl_fdt_factory=>if_fdt_factory~get_instance( gc_appl_id ).
*get the expression the decision table guid
lref_decision_table ?= lref_factory->get_expression(
iv_id = '000C2986A9971EE780E0B8EDBC32904A' ).
*to get the decision table data based on above expression guid
lref_decision_table->if_fdt_decision_table~get_table_data(
IMPORTING
ets_data = lt_msg_data
).
IF lt_msg_data IS NOT INITIAL.
CLEAR lt_table_data_msg.
* Processing decision table and filling the ls_table_data_msg
LOOP AT lt_msg_data INTO ls_msg_data.
ls_table_data_msg-row_no = ls_msg_data-row_no.
ls_table_data_msg-col_no = ls_msg_data-col_no.
ls_table_data_msg-expression_id = ls_msg_data-expression_id.
ls_table_data_msg-r_value = ls_msg_data-r_value.
ls_table_data_msg-ts_range = ls_msg_data-ts_range.
APPEND ls_table_data_msg TO lt_table_data_msg.
CLEAR ls_table_data_msg.
ENDLOOP.
SORT lt_table_data_msg BY row_no col_no.
* Processing the loop lt_table_data_msg to fill structure as per the decision table
LOOP AT lt_table_data_msg INTO ls_table_data_msg.
ls_table_data1 = ls_table_data_msg.
CASE ls_table_data1-col_no.
* Age
WHEN 1.
IF ls_table_data1-ts_range IS NOT INITIAL.
READ TABLE ls_table_data1-ts_range INTO ls_range_msg INDEX 1.
IF sy-subrc = 0.
ASSIGN ls_range_msg-r_low_value->* TO <fs_lv_value>.
ls_msg_txt_data-age = <fs_lv_value>.
ENDIF.
ENDIF.
* Gender
WHEN 2.
IF ls_table_data1-ts_range IS NOT INITIAL.
READ TABLE ls_table_data1-ts_range INTO ls_range_msg INDEX 1.
IF sy-subrc = 0.
ASSIGN ls_range_msg-r_low_value->* TO <fs_lv_value>.
ls_msg_txt_data-gender = <fs_lv_value>.
ENDIF.
ENDIF.
* PENSION
WHEN 3.
IF ls_table_data1-r_value IS NOT INITIAL.
ASSIGN ls_table_data1-r_value->* TO <fs_lv_value>.
ls_msg_txt_data-pension = <fs_lv_value> .
ENDIF.
ENDCASE.
AT END OF row_no .
APPEND ls_msg_txt_data TO lt_msg_txt_data.
CLEAR ls_msg_txt_data.
ENDAT.
ENDLOOP.
ENDIF.
IF lt_msg_txt_data IS NOT INITIAL.
* Delete all records
DELETE FROM ztest_data_2.
MOVE-CORRESPONDING lt_msg_txt_data TO lt_data_final.
* Modify DB Table
MODIFY ztest_data_2 FROM TABLE lt_data_final.
COMMIT WORK.
ELSE.
DELETE FROM ztest_data_2.
ENDIF.
ENDMETHOD.


You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
| User | Count |
|---|---|
| 26 | |
| 26 | |
| 21 | |
| 21 | |
| 19 | |
| 14 | |
| 14 | |
| 14 | |
| 14 | |
| 10 |