Recently, I was working on a requirement to add additional fields into ALV report for transaction FINT and the blog post by Marek Turczynski saved me a lot of time for this task. That requirement was addressed by implementation of the BADI FI_INT_CUS01. Upon further analysis of the BADI interface, I found an interesting extension option, which can be used to extend the functionalities of standard interest calculation program. Blog post below describes these findings in detail.

Overview of the resulting changes

Essentially, it is possible to add custom buttons to the toolbar of the FINT report and link custom functionality to these buttons. Screenshot below shows a sample toolbar of the transaction before & after the changes:

Additionally, this new option will be added into the menu “Environment”:

When you press the button, the program will open a new ALV report within the same program with the following aggregated values:

Adding new buttons to the toolbar

Starting point for this enhancement is the transaction SE18, where we manage the implementation of the BADI. You can add up to three custom buttons on the “FCodes”.

Note: The program name in your system might be different. S4 Hana program name is SAPLFI_INT_USERCOMMAND, but that does not change the concept behind this solution.

Technically speaking, SAP put three placeholders into a PF-status INT_GRID for program SAPLFI_IN. These placeholders / buttons are not visible in the report unless they are activated in BADI.

Note: screenshot above shows only one placeholder +CU1 for this PF-status. Additional placeholders can be added via implementation of OSS-note 3143202 – FINT: FCODE +CU2/+CU3 in BAdI FI_INT_CUS01 is missing at GUI-status INT_GRID.

A new button can be added, when BADI is deactivated. Double click o the line and provide the attributes of the new button. Most of the fields are descriptions apart from icon name. You can execute the standard program SHOWICON (via SE38) and it will show you the list of standard icon names that can be used for this field.

Confirm the selection of the button in a prompt:

Save the changes & activate the BADI. New button will be visible on selection screen immediately after this step.

Link custom functionality to the new button

BADI interface offers three methods INT_LIST_0X. These methods are triggered when the user presses the buttons associated with the function codes defined by the users i.e. function code +CU1 triggers the method IF_EX_FI_INT_CUS01~INT_LIST_01.

The screenshot below shows the interface of the method. As you can see, when this method is triggered, it will receive all information related to calculation of interest including all transactional details (e.g., CT_ITEMS) & master data (e.g., IT_KNA1).

Sample source code for this method can be found below:

  method if_ex_fi_int_cus01~int_list_01.

    types:
      begin of ty_item,
        bukrs       type bukrs,
        account     type kunnr,
        name1       type ad_name1,
        name2       type ad_name2,
        int_amount  type int_amount,
      end of ty_item.
    types: tt_items type standard table of ty_item with default key.

    constants:
      begin of lc_status,
        noint    type int_status value 'NOINT',
        ready    type int_status value 'READY',
        process  type int_status value 'PROCESS',
        error    type int_status value 'ERROR',
        clearing type int_status value 'CLEARING',
        new      type int_status value 'NEW',
        done     type int_status value 'DONE',
        nopay    type int_status value 'NOPAY',
        reverse  type int_status value 'REVERSE',
        bundled  type int_status value 'BUNDLED',
      end of lc_status .

    data lt_items type tt_items.

    field-symbols: <i> like line of ct_items.
    field-symbols: <j> like line of lt_items.

    if lines( ct_items ) = 0.
      return.
    endif.

    loop at ct_items assigning <i>.

      if <i>-int_status <> lc_status-ready and <i>-int_status <> lc_status-process.
        continue.
      endif.

      if lines( lt_items ) = 0.
        append initial line to lt_items assigning <j>.
        move-corresponding <i> to <j>.
        continue.
      endif.

      if <i>-account <> <j>-account.
        append initial line to lt_items assigning <j>.
        move-corresponding <i> to <j>.
        continue.
      endif.

      <j>-int_amount = <j>-int_amount + <i>-int_amount.
    endloop.

    field-symbols <md> like line of it_kna1.
    loop at lt_items assigning <j>.
      read table it_kna1 with key kunnr = <j>-account assigning <md>.
      if sy-subrc = 0 and <md> is assigned.
        <j>-name1 = <md>-name1.
        <j>-name2 = <md>-name2.
      endif.
    endloop.

    data lo_view type ref to zcl_alv_factory.
    lo_view = zcl_alv_factory=>create(
      i_tab = lt_items
      iv_title = 'Aggregated details' ).
    lo_view->display( ).

  endmethod.

Note: the class ZCL_ALV_FACTORY is a wrapper class around standard method CL_SALV_TABLE=>FACTORY( ), which can be used for easy generation of ALV report. This wrapper class is not subject of this post and the source code will not be provided.

The example in this post might look trivial. This post might be a bit complicated for functional consultants, but it demonstrates how this standard report can be extended. And I hope it can serve as a useful reference point for those who are looking for options to extend this report.

I hope you do net regret the time you spent if you reached the end of this post and you learnt something useful. I’m looking forward to your comments and remarks.

Sara Sampaio

Sara Sampaio

Author Since: March 10, 2022

0 0 votes
Article Rating
Subscribe
Notify of
0 Comments
Inline Feedbacks
View all comments
0
Would love your thoughts, please comment.x
()
x