Hi Tanmoy,
concerning your original question: The method you have referenced is the right one. The workflow to get the structure of a decision table is:
- Get an instance of the BRFplus factory via:
lo_factory = cl_fdt_factory=>if_fdt_factory~get_instance( ). - Get an instance of the decision table via:
lo_decision_table = lo_factory->get_expression( lv_id ).
lv_id is the UUID of the decison table expression that you want to examine - Now you have to call the method IF_FDT_DECISION_TABLE~GET_COLUMNS on the object you just instantiated
This method returns you a table where each line represnets a column of your decision table. The line type is IF_FDT_DECISION_TABLE~S_COLUMN
The structure contains the following elements:
- col_no (TYPE int4) - this is simply the number of the column
- object_id (TYPE if_fdt_types=>id): this represents the UUID of the dataobject that is linked to the column of the decision table
- is_result (TYPE is_result): this field states if it is a result column (= TRUE) or a condition column (= FALSE) in the decision table
- is_optional (TYPE is_optional): this states if the field is optional
- input_required (TYPE is_required): this states if a input in the field is required
- ui_mode (TYPE if_fdt_types=>ui_mode): this field gives you insight in the UI-mode (hidden, display only, editable)
- is_action (TYPE abap_bool): this field says if this is an action column
This way you have all information at hand to know the structure of the decision table simply by looping over the table and evaluating the information stored there.
One example of such an evaluation can be found in the class CL_FDT_DT_EXCEL Tobias already mentioned i. e. in the private method GET_FORMATTED_DT_COL that iterates over the table and fetches all the information on the columns (including a "dereferencing" of the data objects via their UUID)
Hope that helps
BR
Christian