2008 Mar 25 9:50 AM
method IF_EX_FI_TAX_BADI_010~TOP_OF_PAGE.
CLASS CL_EXIT_MASTER DEFINITION LOAD.
DATA: EXIT_OBJ_TAB TYPE SXRT_EXIT_TAB.
DATA: exitintf TYPE REF TO IF_EX_FI_TAX_BADI_010,
wa_flt_cache_line TYPE REF TO sxrt_flt_cache_struct,
flt_name TYPE FILTNAME.
DATA: flt_val_db TYPE LAND1,
desc_type(1) TYPE c, comp_num TYPE i.
DESCRIBE FIELD flt_val_db TYPE desc_type COMPONENTS comp_num.
FIELD-SYMBOLS:
<flt_co1> TYPE ANY,
<flt_co2> TYPE ANY.
flt_name = flt_val.
FIELD-SYMBOLS:
<exit_obj> TYPE SXRT_EXIT_TAB_STRUCT,
<flt_cache_line> TYPE sxrt_flt_cache_struct.
READ TABLE INSTANCE_FLT_CACHE ASSIGNING <flt_cache_line>
WITH KEY flt_name = flt_name
method_name = 'TOP_OF_PAGE'
.
IF sy-subrc NE 0.
CREATE DATA wa_flt_cache_line TYPE sxrt_flt_cache_struct.
ASSIGN wa_flt_cache_line->* TO <flt_cache_line>.
<flt_cache_line>-flt_name = flt_name.
<flt_cache_line>-method_name = 'TOP_OF_PAGE'.
READ TABLE INSTANCE_BADI_TABLE ASSIGNING <exit_obj>
WITH KEY flt_val = flt_name
method_name = 'TOP_OF_PAGE'.
If sy-subrc = 0.
<flt_cache_line>-valid = <exit_obj>-active.
IF <flt_cache_line>-valid = sxrt_true.
<flt_cache_line>-obj =
CL_EXIT_MASTER=>instantiate_imp_class(
CALLER = me
imp_name = <exit_obj>-imp_name
imp_class = <exit_obj>-imp_class ).
MOVE <exit_obj>-imp_class to <flt_cache_line>-imp_class.
MOVE <exit_obj>-imp_switch to <flt_cache_line>-imp_switch.
MOVE <exit_obj>-order_num to <flt_cache_line>-order_num.
ENDIF.
ELSE.
LOOP AT INSTANCE_BADI_TABLE ASSIGNING <exit_obj>
WHERE METHOD_NAME = 'TOP_OF_PAGE'.
APPEND <exit_obj> TO EXIT_OBJ_TAB.
ENDLOOP.
IF sy-subrc ne 0.
CALL METHOD CL_EXIT_MASTER=>CREATE_OBJ_BY_INTERFACE_FILTER
EXPORTING
CALLER = me
INTER_NAME = 'IF_EX_FI_TAX_BADI_010'
METHOD_NAME = 'TOP_OF_PAGE'
delayed_instance_creation = sxrt_true
IMPORTING
exit_obj_tab = exit_obj_tab.
APPEND LINES OF exit_obj_tab TO INSTANCE_BADI_TABLE.
ENDIF.
<flt_cache_line>-valid = sxrt_false.
LOOP at exit_obj_tab ASSIGNING <exit_obj>
WHERE ACTIVE = SXRT_TRUE.
<flt_cache_line>-valid = sxrt_true.
flt_val_db = <exit_obj>-flt_val.
IF comp_num = 0.
IF flt_val NP flt_val_db.
<flt_cache_line>-valid = sxrt_false.
ENDIF.
ELSE.
DO comp_num TIMES.
ASSIGN COMPONENT sy-index OF STRUCTURE flt_val
TO <flt_co1>.
ASSIGN COMPONENT sy-index OF STRUCTURE flt_val_db
TO <flt_co2>.
IF <flt_co1> NP <flt_co2>.
<flt_cache_line>-valid = sxrt_false.
EXIT.
ENDIF.
ENDDO.
ENDIF.
IF <flt_cache_line>-valid = sxrt_true.
<flt_cache_line>-obj =
CL_EXIT_MASTER=>instantiate_imp_class(
CALLER = me
imp_name = <exit_obj>-imp_name
imp_class = <exit_obj>-imp_class ).
MOVE <exit_obj>-imp_class to <flt_cache_line>-imp_class.
MOVE <exit_obj>-imp_switch to <flt_cache_line>-imp_switch.
MOVE <exit_obj>-order_num to <flt_cache_line>-order_num.
EXIT.
ENDIF.
ENDLOOP.
ENDIF.
INSERT <flt_cache_line> INTO TABLE INSTANCE_FLT_CACHE.
ENDIF.
IF <flt_cache_line>-valid = sxrt_true.
CALL FUNCTION 'PF_ASTAT_OPEN'
EXPORTING
OPENKEY = 'G4ItarzGIkVX00002XLIem'
TYP = 'UE'.
CASE <flt_cache_line>-imp_switch.
WHEN 'VSR'.
DATA: exc TYPE sfbm_xcptn, "#EC NEEDED
data_ref TYPE REF TO DATA.
IF <flt_cache_line>-eo_object is initial.
CALL METHOD ('CL_FOBU_METHOD_EVALUATION')=>load
EXPORTING
im_class_name = <flt_cache_line>-imp_class
im_interface_name = 'IF_EX_FI_TAX_BADI_010'
im_method_name = 'TOP_OF_PAGE'
RECEIVING
re_fobu_method = <flt_cache_line>-eo_object
EXCEPTIONS
not_found = 1
OTHERS = 2.
IF sy-subrc = 2.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
CHECK sy-subrc = 0.
ENDIF.
CLEAR data_ref.
GET REFERENCE OF FLT_VAL INTO data_ref.
CALL METHOD <flt_cache_line>-eo_object->set_parameter(
im_parmname = 'FLT_VAL'
im_value = data_ref ).
CLEAR data_ref.
GET REFERENCE OF IM_BUKRS INTO data_ref.
CALL METHOD <flt_cache_line>-eo_object->set_parameter(
im_parmname = 'IM_BUKRS'
im_value = data_ref ).
CLEAR data_ref.
GET REFERENCE OF IM_SELECTION_FIELDS INTO data_ref.
CALL METHOD <flt_cache_line>-eo_object->set_parameter(
im_parmname = 'IM_SELECTION_FIELDS'
im_value = data_ref ).
CLEAR data_ref.
GET REFERENCE OF IM_BUPLA INTO data_ref.
CALL METHOD <flt_cache_line>-eo_object->set_parameter(
im_parmname = 'IM_BUPLA'
im_value = data_ref ).
CLEAR data_ref.
GET REFERENCE OF IM_CURR_ITEMS INTO data_ref.
CALL METHOD <flt_cache_line>-eo_object->set_parameter(
im_parmname = 'IM_CURR_ITEMS'
im_value = data_ref ).
CALL METHOD <flt_cache_line>-eo_object->evaluate
IMPORTING
ex_exception = exc
EXCEPTIONS
raise_exception = 1
OTHERS = 2.
IF sy-subrc = 2.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
WHEN OTHERS.
EXITINTF ?= <flt_cache_line>-OBJ.
CALL METHOD EXITINTF->TOP_OF_PAGE
EXPORTING
FLT_VAL = FLT_VAL
IM_BUKRS = IM_BUKRS
IM_SELECTION_FIELDS = IM_SELECTION_FIELDS
IM_BUPLA = IM_BUPLA
CHANGING
IM_CURR_ITEMS = IM_CURR_ITEMS.
ENDCASE.
CALL FUNCTION 'PF_ASTAT_CLOSE'
EXPORTING
OPENKEY = 'G4ItarzGIkVX00002XLIem'
TYP = 'UE'.
ENDIF.
endmethod.
2008 Mar 25 11:52 AM
Hello Methee
Class CL_EX_FI_TAX_BADI_010 is just a dummy implementation of interface IF_EX_FI_TAX_BADI_010.
Reasonable implementations of this interface (on ECC 6.0) are:
IMPPH_TAXREP_010 Tax report implementation BADI 010 for the Philippines PH
IMPTH_TAXREP_010 Tax (VAT) report for Thailand - BADI 010 TH
RFIDBE_TAX_BADI_010 Tax (VAT) report for Belgium - BADI 010 (header + footer) BE
RFIDIT_TAX_BADI_010 Tax (VAT) report for Italy - BADI 010 (header) ITThe implementing classes are:
CL_IM_IMPPH_TAXREP_010
CL_IM_IMPTH_TAXREP_010
CL_IM_RFIDBE_TAX_BADI_010
CL_IM_RFIDIT_TAX_BADI_010As you can see the reasonable implementations are named CL_IM_... (instead of CL_EX_...).
Regards
Uwe
method IF_EX_FI_TAX_BADI_010~TOP_OF_PAGE.
CLASS CL_EXIT_MASTER DEFINITION LOAD.
DATA: EXIT_OBJ_TAB TYPE SXRT_EXIT_TAB.
DATA: exitintf TYPE REF TO IF_EX_FI_TAX_BADI_010,
wa_flt_cache_line TYPE REF TO sxrt_flt_cache_struct,
flt_name TYPE FILTNAME.
DATA: flt_val_db TYPE LAND1,
desc_type(1) TYPE c, comp_num TYPE i.
DESCRIBE FIELD flt_val_db TYPE desc_type COMPONENTS comp_num.
FIELD-SYMBOLS:
<flt_co1> TYPE ANY,
<flt_co2> TYPE ANY.
flt_name = flt_val.
FIELD-SYMBOLS:
<exit_obj> TYPE SXRT_EXIT_TAB_STRUCT,
<flt_cache_line> TYPE sxrt_flt_cache_struct.
READ TABLE INSTANCE_FLT_CACHE ASSIGNING <flt_cache_line>
WITH KEY flt_name = flt_name
method_name = 'TOP_OF_PAGE'
.
IF sy-subrc NE 0.
CREATE DATA wa_flt_cache_line TYPE sxrt_flt_cache_struct.
ASSIGN wa_flt_cache_line->* TO <flt_cache_line>.
<flt_cache_line>-flt_name = flt_name.
<flt_cache_line>-method_name = 'TOP_OF_PAGE'.
READ TABLE INSTANCE_BADI_TABLE ASSIGNING <exit_obj>
WITH KEY flt_val = flt_name
method_name = 'TOP_OF_PAGE'.
If sy-subrc = 0.
<flt_cache_line>-valid = <exit_obj>-active.
IF <flt_cache_line>-valid = sxrt_true.
<flt_cache_line>-obj =
CL_EXIT_MASTER=>instantiate_imp_class(
CALLER = me
imp_name = <exit_obj>-imp_name
imp_class = <exit_obj>-imp_class ).
MOVE <exit_obj>-imp_class to <flt_cache_line>-imp_class.
MOVE <exit_obj>-imp_switch to <flt_cache_line>-imp_switch.
MOVE <exit_obj>-order_num to <flt_cache_line>-order_num.
ENDIF.
ELSE.
LOOP AT INSTANCE_BADI_TABLE ASSIGNING <exit_obj>
WHERE METHOD_NAME = 'TOP_OF_PAGE'.
APPEND <exit_obj> TO EXIT_OBJ_TAB.
ENDLOOP.
IF sy-subrc ne 0.
CALL METHOD CL_EXIT_MASTER=>CREATE_OBJ_BY_INTERFACE_FILTER
EXPORTING
CALLER = me
INTER_NAME = 'IF_EX_FI_TAX_BADI_010'
METHOD_NAME = 'TOP_OF_PAGE'
delayed_instance_creation = sxrt_true
IMPORTING
exit_obj_tab = exit_obj_tab.
APPEND LINES OF exit_obj_tab TO INSTANCE_BADI_TABLE.
ENDIF.
<flt_cache_line>-valid = sxrt_false.
LOOP at exit_obj_tab ASSIGNING <exit_obj>
WHERE ACTIVE = SXRT_TRUE.
<flt_cache_line>-valid = sxrt_true.
flt_val_db = <exit_obj>-flt_val.
IF comp_num = 0.
IF flt_val NP flt_val_db.
<flt_cache_line>-valid = sxrt_false.
ENDIF.
ELSE.
DO comp_num TIMES.
ASSIGN COMPONENT sy-index OF STRUCTURE flt_val
TO <flt_co1>.
ASSIGN COMPONENT sy-index OF STRUCTURE flt_val_db
TO <flt_co2>.
IF <flt_co1> NP <flt_co2>.
<flt_cache_line>-valid = sxrt_false.
EXIT.
ENDIF.
ENDDO.
ENDIF.
IF <flt_cache_line>-valid = sxrt_true.
<flt_cache_line>-obj =
CL_EXIT_MASTER=>instantiate_imp_class(
CALLER = me
imp_name = <exit_obj>-imp_name
imp_class = <exit_obj>-imp_class ).
MOVE <exit_obj>-imp_class to <flt_cache_line>-imp_class.
MOVE <exit_obj>-imp_switch to <flt_cache_line>-imp_switch.
MOVE <exit_obj>-order_num to <flt_cache_line>-order_num.
EXIT.
ENDIF.
ENDLOOP.
ENDIF.
INSERT <flt_cache_line> INTO TABLE INSTANCE_FLT_CACHE.
ENDIF.
IF <flt_cache_line>-valid = sxrt_true.
CALL FUNCTION 'PF_ASTAT_OPEN'
EXPORTING
OPENKEY = 'G4ItarzGIkVX00002XLIem'
TYP = 'UE'.
CASE <flt_cache_line>-imp_switch.
WHEN 'VSR'.
DATA: exc TYPE sfbm_xcptn, "#EC NEEDED
data_ref TYPE REF TO DATA.
IF <flt_cache_line>-eo_object is initial.
CALL METHOD ('CL_FOBU_METHOD_EVALUATION')=>load
EXPORTING
im_class_name = <flt_cache_line>-imp_class
im_interface_name = 'IF_EX_FI_TAX_BADI_010'
im_method_name = 'TOP_OF_PAGE'
RECEIVING
re_fobu_method = <flt_cache_line>-eo_object
EXCEPTIONS
not_found = 1
OTHERS = 2.
IF sy-subrc = 2.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
CHECK sy-subrc = 0.
ENDIF.
CLEAR data_ref.
GET REFERENCE OF FLT_VAL INTO data_ref.
CALL METHOD <flt_cache_line>-eo_object->set_parameter(
im_parmname = 'FLT_VAL'
im_value = data_ref ).
CLEAR data_ref.
GET REFERENCE OF IM_BUKRS INTO data_ref.
CALL METHOD <flt_cache_line>-eo_object->set_parameter(
im_parmname = 'IM_BUKRS'
im_value = data_ref ).
CLEAR data_ref.
GET REFERENCE OF IM_SELECTION_FIELDS INTO data_ref.
CALL METHOD <flt_cache_line>-eo_object->set_parameter(
im_parmname = 'IM_SELECTION_FIELDS'
im_value = data_ref ).
CLEAR data_ref.
GET REFERENCE OF IM_BUPLA INTO data_ref.
CALL METHOD <flt_cache_line>-eo_object->set_parameter(
im_parmname = 'IM_BUPLA'
im_value = data_ref ).
CLEAR data_ref.
GET REFERENCE OF IM_CURR_ITEMS INTO data_ref.
CALL METHOD <flt_cache_line>-eo_object->set_parameter(
im_parmname = 'IM_CURR_ITEMS'
im_value = data_ref ).
CALL METHOD <flt_cache_line>-eo_object->evaluate
IMPORTING
ex_exception = exc
EXCEPTIONS
raise_exception = 1
OTHERS = 2.
IF sy-subrc = 2.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
WHEN OTHERS.
EXITINTF ?= <flt_cache_line>-OBJ.
CALL METHOD EXITINTF->TOP_OF_PAGE
EXPORTING
FLT_VAL = FLT_VAL
IM_BUKRS = IM_BUKRS
IM_SELECTION_FIELDS = IM_SELECTION_FIELDS
IM_BUPLA = IM_BUPLA
CHANGING
IM_CURR_ITEMS = IM_CURR_ITEMS.
ENDCASE.
CALL FUNCTION 'PF_ASTAT_CLOSE'
EXPORTING
OPENKEY = 'G4ItarzGIkVX00002XLIem'
TYP = 'UE'.
ENDIF.
endmethod.
2008 Mar 25 11:52 AM
Hello Methee
Class CL_EX_FI_TAX_BADI_010 is just a dummy implementation of interface IF_EX_FI_TAX_BADI_010.
Reasonable implementations of this interface (on ECC 6.0) are:
IMPPH_TAXREP_010 Tax report implementation BADI 010 for the Philippines PH
IMPTH_TAXREP_010 Tax (VAT) report for Thailand - BADI 010 TH
RFIDBE_TAX_BADI_010 Tax (VAT) report for Belgium - BADI 010 (header + footer) BE
RFIDIT_TAX_BADI_010 Tax (VAT) report for Italy - BADI 010 (header) ITThe implementing classes are:
CL_IM_IMPPH_TAXREP_010
CL_IM_IMPTH_TAXREP_010
CL_IM_RFIDBE_TAX_BADI_010
CL_IM_RFIDIT_TAX_BADI_010As you can see the reasonable implementations are named CL_IM_... (instead of CL_EX_...).
Regards
Uwe
2008 Mar 26 1:57 AM
We are using SAP R/3 version lower than 6.0 and I do see this method related in the program.
If you can explain how this method works so I can edit the pattern of top of page,please tell me.
Appreciate
Methee
| User | Count |
|---|---|
| 3 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 |