In today’s world, financial transactions are becoming virtualized and bank-related transaction flows are essential for organizations’ financial systems. Banks periodically (usually daily) send electronic bank statements to an organization that are imported into the system and processed to do reconciliations with the financial system. This process creates the need for tracking whether or not the organization has received the bank statement at an agreed-upon interval from the bank. If there a missing bank statement, the organization then needs to follow up with the bank to get that missing bank statement. Learn how to use a customized tool to track missing bank statements.
Key Concept
A bank statement is received from banks either electronically or manually. Larger organizations may have multiple accounts with multiple banks and numerous transactions. The timely import of such statements into the SAP Financial Accounting system is important for keeping the accounts reconciled and cash flows accurate. Organizations use interfaces to automatically transfer the electronic bank statement files or to assign a team to load them periodically. If you need to track whether a particular statement is missing for a period (e.g., a particular day), then it has to be checked manually by executing transaction code FEBAN or in the application server where the files are transferred from the bank to the SAP system. You need a faster way than a manual process to track such missing bank statements for timely resolution. In a standard SAP solution, you can track a missing electronic bank statement (EBS) manually using transaction code FF67. It provides you with an overview of various bank accounts being used by an organization and within each account details for various statements available and processed in the SAP system. To see these accounts, execute transaction code FF67 or follow menu path Accounting > Financial Accounting > Banks > Incomings > Bank Statement > FF67 - Manual Entry. In the screen that appears, click the Overview button as shown in Figure 1.

Figure 1
Select an overview for getting details of each EBS
This action opens the screen shown in Figure 2. In this screen, double-click the bank account that you want to track.

Figure 2
Select the relevant bank account from various bank accounts
In the next screen (Figure 3), you can see the various bank statements loaded for the bank account that you selected. Now you can observe from this manual process that tracking a missing EBS is a time-consuming, effort-intensive process that is prone to error because you can miss a statement during the manual scanning on the screen shown in Figure 3, especially when you have scores of bank accounts in an organization.

Figure 3
Select relevant bank statements from various bank accounts
I provide a solution whereby you can automate the internal control for finding the missing bank statement and notify the person responsible for taking the appropriating action (e.g., contacting a bank). The solution is flexible to show different periodicity (daily, weekly, monthly, yearly) of receiving an EBS from a bank.
I have divided the article into three main sections:
- How to install the missing EBS monitoring utility
- How to use the missing EBS monitoring utility
- How to fully automate the process
How to Install the Missing EBS Monitoring Utility
To install the utility for tracking a missing EBS, you need to create a customer-defined report called Z_MISSING_EBS_MONITOR. To install this custom tool, execute transaction code SE38 or follow SAP Easy Access menu path > Tools > ABAP Workbench > Development > SE38 - ABAP Editor. In the initial screen that appears, enter Z_MISSING_EBS_MONITOR in the Program field. In the Subobjects section, select the Attributes option and click the Create button (Figure 4).

Figure 4
The initial screen to create a new report
In the next screen, enter the name of the report title in the Title field. In the Attributes section, select a Type, Status, and Application from the drop-down list of options for these fields. For my example, choose 1 Executable program, K Customer Production Program, and F Financial Accounting for the Type, Status, and Application, respectively (Figure 5). Click the Save button.

Figure 5
Enter attributes for the report
In the main screen after you execute transaction code SE38, select the Source Code option in the Subobjects section and click the Change button (Figure 6).

Figure 6
Create a new report
In the screen shown in Figure 7, copy and paste the source code shown in Figure 8. Click the save icon and then click the activate icon highlighted in Figure 7.

Figure 7
Enter source code for the new report
*&---------------------------------------------------------------------*
*& Report Z_MISSING_EBS_MONITOR
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*
REPORT z_missing_ebs_monitor MESSAGE-ID f5.
************************************************************************
*DATA, Variables, Tables etc. declaration
************************************************************************
TABLES : adr6, febko .
CONSTANTS: c_x TYPE char1 VALUE 'X' .
DATA : lw_adrnr LIKE adr6-addrnumber,
lw_pernr LIKE adr6-persnumber,
it_t012 TYPE STANDARD TABLE OF t012,
lw_t012 LIKE LINE OF it_t012,
it_t012k TYPE STANDARD TABLE OF t012k,
lw_t012k LIKE LINE OF it_t012k,
it_t012t TYPE STANDARD TABLE OF t012t,
lw_t012t LIKE LINE OF it_t012t,
it_febko TYPE STANDARD TABLE OF febko,
lw_febko LIKE LINE OF it_febko,
lw_email LIKE adr6-smtp_addr,
l_pdate TYPE sy-datum,
l_monday TYPE sy-datum,
l_sunday TYPE sy-datum,
l_pmonths TYPE sy-datum,
l_pmonthe TYPE sy-datum,
l_pyear TYPE char4,
flag_email TYPE char1.
*Creation of reference object for the CL_BCS to send mail notification
CLASS cl_bcs DEFINITION LOAD.
DATA: go_send_request TYPE REF TO cl_bcs VALUE IS INITIAL.
* Message body and subject
DATA: gt_message_body TYPE STANDARD TABLE OF solisti1,
go_document TYPE REF TO cl_document_bcs VALUE IS INITIAL.
*Sender data
DATA: go_sender TYPE REF TO if_sender_bcs VALUE IS INITIAL,
go_recipient TYPE REF TO if_recipient_bcs VALUE IS INITIAL,
g_sent_to_all(1) TYPE c VALUE IS INITIAL,
g_body(2000) TYPE c,
g_subject(50) TYPE c.
************************************************************************
*Selection Screen
************************************************************************
SELECTION-SCREEN BEGIN OF BLOCK b01 WITH FRAME TITLE text-s01.
PARAMETERS p_bukrs TYPE bukrs MEMORY ID buk OBLIGATORY .
SELECT-OPTIONS s_hbkid FOR febko-hbkid.
SELECT-OPTIONS s_hktid FOR febko-hktid.
SELECTION-SCREEN END OF BLOCK b01.
SELECTION-SCREEN BEGIN OF BLOCK b02 WITH FRAME TITLE text-s02.
SELECTION-SCREEN BEGIN OF LINE.
SELECTION-SCREEN POSITION 1.
PARAMETERS: rb_daily TYPE c RADIOBUTTON GROUP rb1 DEFAULT 'X' USER-COMMAND xyz.
SELECTION-SCREEN COMMENT 4(38) text-s04.
PARAMETERS: p_date TYPE sy-datum MODIF ID id1.
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN BEGIN OF LINE.
SELECTION-SCREEN POSITION 1.
PARAMETERS: rb_week TYPE c RADIOBUTTON GROUP rb1.
SELECTION-SCREEN COMMENT 4(35) text-s05.
SELECT-OPTIONS: s_week FOR sy-datum MODIF ID id2 NO-EXTENSION.
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN BEGIN OF LINE.
SELECTION-SCREEN POSITION 1.
PARAMETERS: rb_month TYPE c RADIOBUTTON GROUP rb1.
SELECTION-SCREEN COMMENT 4(35) text-s06.
SELECT-OPTIONS: s_month FOR sy-datum MODIF ID id3 NO-EXTENSION.
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN BEGIN OF LINE.
SELECTION-SCREEN POSITION 1.
PARAMETERS: rb_year TYPE c RADIOBUTTON GROUP rb1.
SELECTION-SCREEN COMMENT 4(35) text-s07.
SELECT-OPTIONS: s_year FOR sy-datum MODIF ID id4 NO-EXTENSION.
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN END OF BLOCK b02.
SELECTION-SCREEN BEGIN OF BLOCK b03 WITH FRAME TITLE text-s03.
PARAMETERS p_sender TYPE adr6-smtp_addr.
SELECT-OPTIONS: s_email FOR adr6-smtp_addr NO INTERVALS OBLIGATORY.
SELECTION-SCREEN END OF BLOCK b03.
INITIALIZATION.
PERFORM clear_global_data.
PERFORM default_selection_data.
AT SELECTION-SCREEN OUTPUT.
PERFORM enable_disable_fields.
************************************************************************
*Data selection and processing
************************************************************************
START-OF-SELECTION.
PERFORM read_data.
PERFORM prepare_and_send_email.
IF flag_email IS INITIAL.
MESSAGE i899 WITH text-m02.
ENDIF.
END-OF-SELECTION.
*&---------------------------------------------------------------------*
*& Form clear_global_data
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM clear_global_data .
REFRESH: it_t012, it_t012k, it_t012t, it_febko, gt_message_body.
CLEAR: lw_adrnr, lw_pernr, lw_t012, lw_t012k, lw_t012t, lw_febko, lw_email,
l_pdate, l_monday, l_sunday, l_pmonths, l_pmonthe, l_pyear, flag_email,
go_send_request, go_document, go_sender, go_recipient, g_sent_to_all, g_body, g_subject.
ENDFORM. "clear_global_data
*&---------------------------------------------------------------------*
*& Form DEFAULT_SELECTION_DATA
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM default_selection_data.
*Setting current user's email id as sender email as default
SELECT SINGLE addrnumber FROM usr21 INTO lw_adrnr WHERE bname EQ sy-uname.
SELECT SINGLE persnumber FROM usr21 INTO lw_pernr WHERE bname EQ sy-uname.
IF sy-subrc = 0.
SELECT SINGLE smtp_addr FROM adr6 INTO p_sender
WHERE addrnumber EQ lw_adrnr
AND persnumber EQ lw_pernr.
CLEAR: lw_adrnr, lw_pernr.
ENDIF.
*Setting dummy recipient email address
s_email-option = 'EQ'.
s_email-sign = 'I'.
s_email-low = 'abc@xyz.com'.
APPEND s_email.
*Determining dates related parameters
CONCATENATE sy-datum+0(6) '01' INTO l_pdate.
l_pmonthe = l_pdate - 1 .
CONCATENATE l_pmonthe+0(6) '01' INTO l_pmonths.
l_pyear = sy-datum+0(4) - 1.
CALL FUNCTION 'GET_WEEK_INFO_BASED_ON_DATE'
EXPORTING
date = sy-datum
IMPORTING
monday = l_monday
sunday = l_sunday
EXCEPTIONS
OTHERS = 4.
*Setting previous day
p_date = sy-datum - 1 .
*Setting previous week Monday to Sunday
s_week-option = 'BT'.
s_week-sign = 'I'.
s_week-low = l_monday - 7.
s_week-high = l_sunday - 7.
APPEND s_week.
*Setting previous month
s_month-option = 'BT'.
s_month-sign = 'I'.
s_month-low = l_pmonths.
s_month-high = l_pmonthe.
APPEND s_month.
*Setting previous year
s_year-option = 'BT'.
s_year-sign = 'I'.
CONCATENATE l_pyear '0101' INTO s_year-low.
CONCATENATE l_pyear '1231' INTO s_year-high.
APPEND s_year.
ENDFORM. "DEFAULT_SELECTION_DATA
*&---------------------------------------------------------------------*
*& Form ENABLE_DISABLE_FIELDS
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM enable_disable_fields.
LOOP AT SCREEN.
IF screen-name CP 'P_DATE'.
IF rb_daily IS NOT INITIAL.
screen-active = 1.
ELSE.
screen-active = 0.
ENDIF.
MODIFY SCREEN.
ENDIF.
IF screen-name CP '*S_WEEK*'.
IF rb_week IS NOT INITIAL.
screen-active = 1.
ELSE.
screen-active = 0.
ENDIF.
MODIFY SCREEN.
ENDIF.
IF screen-name CP '*S_MONTH*'.
IF rb_month IS NOT INITIAL.
screen-active = 1.
ELSE.
screen-active = 0.
ENDIF.
MODIFY SCREEN.
ENDIF.
IF screen-name CP '*S_YEAR*'.
IF rb_year IS NOT INITIAL.
screen-active = 1.
ELSE.
screen-active = 0.
ENDIF.
MODIFY SCREEN.
ENDIF.
ENDLOOP.
ENDFORM. "ENABLE_DISABLE_FIELDS
*&---------------------------------------------------------------------*
*& Form read_data
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM read_data .
SELECT * FROM t012 INTO TABLE it_t012
WHERE bukrs EQ p_bukrs
AND hbkid IN s_hbkid .
IF sy-subrc EQ 0.
SELECT * FROM t012k INTO TABLE it_t012k
WHERE bukrs EQ p_bukrs
AND hbkid IN s_hbkid
AND hktid IN s_hktid .
IF sy-subrc EQ 0.
IF rb_daily = c_x.
SELECT * FROM febko INTO TABLE it_febko
WHERE azdat EQ p_date
AND bukrs EQ p_bukrs
AND hbkid IN s_hbkid
AND hktid IN s_hktid .
ELSEIF rb_week = c_x.
SELECT * FROM febko INTO TABLE it_febko
WHERE azdat GE s_week-low
AND azdat LE s_week-high
AND bukrs EQ p_bukrs
AND hbkid IN s_hbkid
AND hktid IN s_hktid .
ELSEIF rb_month = c_x.
SELECT * FROM febko INTO TABLE it_febko
WHERE azdat GE s_month-low
AND azdat LE s_month-high
AND bukrs EQ p_bukrs
AND hbkid IN s_hbkid
AND hktid IN s_hktid .
ELSEIF rb_year = c_x.
SELECT * FROM febko INTO TABLE it_febko
WHERE azdat GE s_year-low
AND azdat LE s_year-high
AND bukrs EQ p_bukrs
AND hbkid IN s_hbkid
AND hktid IN s_hktid .
ENDIF.
SELECT * FROM t012t INTO TABLE it_t012t
WHERE spras EQ sy-langu
AND bukrs EQ p_bukrs
AND hbkid IN s_hbkid
AND hktid IN s_hktid .
IF it_t012t IS INITIAL.
SELECT * FROM t012t INTO TABLE it_t012t
WHERE spras EQ 'E'
AND bukrs EQ p_bukrs
AND hbkid IN s_hbkid
AND hktid IN s_hktid .
ENDIF.
ENDIF.
ENDIF.
ENDFORM. " READ_DATA
*&---------------------------------------------------------------------*
*& Form prepare_and_send_email
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM prepare_and_send_email.
LOOP AT it_t012k INTO lw_t012k.
CLEAR flag_email.
READ TABLE it_t012 INTO lw_t012
WITH KEY bukrs = lw_t012k-bukrs
hbkid = lw_t012k-hbkid.
READ TABLE it_t012t INTO lw_t012t
WITH KEY bukrs = lw_t012k-bukrs
hbkid = lw_t012k-hbkid
hktid = lw_t012k-hktid.
READ TABLE it_febko INTO lw_febko
WITH KEY bukrs = lw_t012k-bukrs
hbkid = lw_t012k-hbkid
hktid = lw_t012k-hktid.
IF sy-subrc NE 0.
flag_email = c_x.
ENDIF.
IF flag_email EQ c_x.
*Building email subject
IF rb_daily EQ c_x.
CONCATENATE 'EBS missing- '
lw_t012k-bukrs '/' lw_t012k-hbkid '/' lw_t012k-hktid
' - ' p_date
INTO g_subject RESPECTING BLANKS.
ELSEIF rb_week EQ c_x.
CONCATENATE 'EBS missing- '
lw_t012k-bukrs '/' lw_t012k-hbkid '/' lw_t012k-hktid
' - ' s_week-low '-' s_week-high
INTO g_subject RESPECTING BLANKS.
ELSEIF rb_month EQ c_x.
CONCATENATE 'EBS missing- '
lw_t012k-bukrs '/' lw_t012k-hbkid '/' lw_t012k-hktid
' - ' s_month-low '-' s_month-high
INTO g_subject RESPECTING BLANKS.
ELSEIF rb_year EQ c_x.
CONCATENATE 'EBS missing- '
lw_t012k-bukrs '/' lw_t012k-hbkid '/' lw_t012k-hktid
' - ' s_year-low '-' s_year-high
INTO g_subject RESPECTING BLANKS.
ENDIF.
*Building email body
g_body = 'This is to inform you that bank statement is missing for the below selection:'.
APPEND g_body TO gt_message_body.
g_body = ' ' .
APPEND g_body TO gt_message_body.
IF rb_daily EQ c_x.
CONCATENATE ' For the date : ' p_date
INTO g_body RESPECTING BLANKS.
APPEND g_body TO gt_message_body.
ELSEIF rb_week EQ c_x.
CONCATENATE ' For the week : ' s_week-low '-' s_week-high
INTO g_body RESPECTING BLANKS.
APPEND g_body TO gt_message_body.
ELSEIF rb_month EQ c_x.
CONCATENATE ' For the month : ' s_month-low '-' s_month-high
INTO g_body RESPECTING BLANKS.
APPEND g_body TO gt_message_body.
ELSEIF rb_year EQ c_x.
CONCATENATE ' For the year : ' s_year-low '-' s_year-high
INTO g_body RESPECTING BLANKS.
APPEND g_body TO gt_message_body.
ENDIF.
CONCATENATE ' Company code : ' lw_t012k-bukrs
INTO g_body RESPECTING BLANKS.
APPEND g_body TO gt_message_body.
CONCATENATE ' House bank ID : ' lw_t012k-hbkid
INTO g_body RESPECTING BLANKS.
APPEND g_body TO gt_message_body.
CONCATENATE ' Account ID : ' lw_t012k-hktid
INTO g_body RESPECTING BLANKS.
APPEND g_body TO gt_message_body.
CONCATENATE ' Bank account no. : ' lw_t012k-bankn
INTO g_body RESPECTING BLANKS.
APPEND g_body TO gt_message_body.
CONCATENATE ' Currency : ' lw_t012k-waers
INTO g_body RESPECTING BLANKS.
APPEND g_body TO gt_message_body.
CONCATENATE ' Name of bank a/c : ' lw_t012t-text1
INTO g_body RESPECTING BLANKS.
APPEND g_body TO gt_message_body.
g_body = ' ' .
APPEND g_body TO gt_message_body.
g_body = 'Please take necessary steps for getting the bank statement. The contact details for this bank account are as below:'.
APPEND g_body TO gt_message_body.
CONCATENATE ' Name : ' lw_t012-name1
INTO g_body RESPECTING BLANKS.
APPEND g_body TO gt_message_body.
CONCATENATE ' Telephone No.: ' lw_t012-telf1
INTO g_body RESPECTING BLANKS.
APPEND g_body TO gt_message_body.
PERFORM send_email USING gt_message_body.
REFRESH gt_message_body.
ENDIF.
ENDLOOP.
ENDFORM. " CALL_MAIL
*&---------------------------------------------------------------------*
*& Form send_email
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->U_GT_MESSAGE_BODY text
*----------------------------------------------------------------------*
FORM send_email USING u_gt_message_body. "#EC PF_NO_TYPE
DATA:l_sender_mail TYPE ad_smtpadr.
*Clearing all the local variables to be used
CLEAR: l_sender_mail.
*Create object of the class
TRY.
CALL METHOD cl_bcs=>create_persistent
RECEIVING
result = go_send_request.
CATCH cx_send_req_bcs . "#EC NO_HANDLER
ENDTRY.
* Create document
TRY.
CALL METHOD cl_document_bcs=>create_document
EXPORTING
i_type = 'RAW'
i_subject = g_subject
i_text = u_gt_message_body
RECEIVING
result = go_document.
CATCH cx_document_bcs . "#EC NO_HANDLER
ENDTRY.
* Pass the document to send request
TRY.
go_send_request->set_document( go_document ).
CATCH cx_send_req_bcs. "#EC NO_HANDLER
ENDTRY.
* Create sender
IF p_sender IS NOT INITIAL.
TRY.
CALL METHOD cl_cam_address_bcs=>create_internet_address
EXPORTING
i_address_string = p_sender
RECEIVING
result = go_sender.
CATCH cx_address_bcs . "#EC NO_HANDLER
ENDTRY.
ELSE.
TRY.
CALL METHOD cl_sapuser_bcs=>create
EXPORTING
i_user = sy-uname
RECEIVING
result = go_sender.
CATCH cx_address_bcs . "#EC NO_HANDLER
ENDTRY.
ENDIF.
* Set sender
TRY.
go_send_request->set_sender(
EXPORTING
i_sender = go_sender ).
CATCH cx_address_bcs. "#EC NO_HANDLER
CATCH cx_send_req_bcs. "#EC NO_HANDLER
ENDTRY.
* Create recipient list
LOOP AT s_email INTO lw_email.
TRY.
lw_email = lw_email+3(238).
CALL METHOD cl_cam_address_bcs=>create_internet_address
EXPORTING
i_address_string = lw_email
RECEIVING
result = go_recipient.
CATCH cx_address_bcs . "#EC NO_HANDLER
ENDTRY.
TRY.
go_send_request->add_recipient(
EXPORTING
i_recipient = go_recipient
i_express = 'X' ).
CATCH cx_send_req_bcs. "#EC NO_HANDLER
ENDTRY.
ENDLOOP.
* Send Mail
TRY.
go_send_request->send(
EXPORTING
i_with_error_screen = 'X'
RECEIVING
result = g_sent_to_all ).
COMMIT WORK.
WAIT UP TO 1 SECONDS.
CATCH cx_send_req_bcs. "#EC NO_HANDLER
ENDTRY.
IF sy-subrc = 0.
MESSAGE i899 WITH text-m01.
ENDIF.
ENDFORM. " SEND_MAIL
Figure 8
Source code for the new report
After copying and pasting the source code in the new report, select the menu option Goto > Text Elements > Selection Texts. In the screen that appears, click the Selection Texts and populate the fields as shown in Figure 9.

Figure 9
Enter selection texts for the new report
The various selection texts are listed in Table 1.
Name | Text |
P_BUKRS | Company code |
P_DATE | Check EBS for date: |
P_SENDER | Sender email |
RB_DAILY | Daily EBS |
RB_MONTH | Monthly EBS |
RB_WEEK | Weekly EBS |
RB_YEAR | Yearly EBS |
S_EMAIL | Notify to email(s) |
S_HBKID | House bank(s) |
S_HKTID | Account ID(s) |
S_MONTH | Check EBS for the month: |
S_WEEK | Check EBS for the week: |
S_YEAR | Check EBS for the year: |
Table 1
Selection texts
In the same screen as the one shown in Figure 9, click the Text Symbols tab and enter the text elements. To activate these elements, click the save icon and then click the activate icon highlighted in Figure 10.

Figure 10
Enter text symbols for the new report
The various selection text symbols are listed in Table 2.
Text symbol | Text |
M01 | Email sent successfully! |
M02 | There is no missing EBS as per selection! |
S01 | Selection Parameters: |
S02 | Processing Options: |
S03 | Email Options: |
S04 | Check daily EBS for the date: |
S05 | Check weekly EBS for the week: |
S06 | Check monthly EBS for the month: |
S07 | Check yearly EBS for the year: |
Table 2
Selection text symbols
You now have completed the installation part for the customized report, and you can start using this report. You can also adjust this program further for any special requirements or to meet the different coding standards followed in your organization.
How to Use the Missing EBS Monitoring Utility
To use this customized report utility, execute transaction code SE38 or follow SAP Easy Access menu path > Tools > ABAP Workbench > Development > SE38 - ABAP Editor. In the screen that appears, enter Z_MISSING_EBS_MONITOR in the Program field and click the execute icon (Figure 11).

Figure 11
Execute the new report
In the next screen, you see various selection options (Figure 12).

Figure 12
The selection screen for the new report
The screen shown in Figure 12 includes the following selection fields in the Selection Parameters section:
- Company Code: Enter the company code for which you want to track the missing EBS. It is a mandatory field.
- House Bank(s): Enter the house bank or banks for which you want to track a missing EBS. This parameter is optional. If nothing is entered in this field, all house banks within the company code given above would be selected for processing.
- Account ID(s): Enter the account IDs for which you want to track the missing EBS. This parameter is optional. If nothing is entered in this field, all account IDs in the house banks and company code given above would be selected for processing.
Figure 12 - Check the daily EBS for the date: This option is relevant when you expect a daily EBS from a bank. If you select this option, then you can enter the date (the default is for the previous day) for which you want to track.
- Check weekly EBS for the week: This option is relevant when you expect a weekly EBS from a bank. If you select this option, then you can enter the week (the default is for the previous week; that is, the week ending last Sunday) for which you want to track. Figure 13 shows this option.

Figure 13
The selection screen showing the weekly EBS tracking option
- Check monthly EBS for the month: This option is relevant when you expect a monthly EBS from a bank. If you select this option, then you can enter the week (the default is for the previous month) for which you want to track. Figure 14 shows this option.

Figure 14
The selection screen showing the monthly EBS tracking option
- Check the yearly EBS for the year. This option is relevant when you expect a yearly EBS from a bank. If you select this option, then you can enter the year (the default is for the previous year) for which you want to track. Figure 15 shows this option.

Figure 15
The selection screen showing the yearly EBS tracking option
Note
If the organization needs any other frequency for an EBS, then that should have been adjusted in this customized program tool. For example, for an inner-day bank statement that an organization is expected to receive every four hours, then a new parameter can be built in this program to check on a four-hour basis. However, there should be a concrete time-period in which you are expecting a new EBS (e.g., every four hours, every eight hours and so on).
In the Email Options section of the selection screen for the new report (Figure 12), you have these options:
- Sender Email: By default it appears as email if maintained in the master data of the user executing this report.
- Notify to Email(s): This option enables you to specify a single email ID or multiple email IDs to whom you to want to send notification in case the bank statement is missing for the periodicity selected.
After entering the selection screen data, click the execute icon as shown in Figure 16.

Figure 16
Execute the missing EBS monitoring report
After you execute the report, if the system finds the EBS as per the selection available in the SAP system, then it shows a message as shown in Figure 17.

Figure 17
Information message when the EBS is not missing
If you execute the report and the system does not find the EBS as per the selection available in the SAP system, then a message like the one shown in Figure 18 appears.

Figure 18
Information message when the EBS is missing
For each missing EBS, the system sends a separate notification to email ID(s) mentioned on the selections screen. An example email is shown in Figure 19.

Figure 19
Example email for weekly tracking of missing EBS
This email contains the information of the bank account for which the EBS is missing. It also provides the contact details from that house bank master (defined in customization transaction code FI12).
How to Fully Automate the Process
You can fully automate the process by scheduling this report to run in the background with defined periodicity and it will enable that whenever the EBS is missing. Per the defined periodicity, the person specified automatically gets the notification.
To schedule the background job, follow these steps:
- Create a variant for the program Z_MISSING_EBS_MONITOR using transaction code SE38. In that variant, include the periodicity parameters as dynamic parameter.
- Schedule a background job as per needed frequency using transaction code SM36 for the variant created above (e.g., a daily background job for the EBS being received daily).
Your background job is ready to automatically monitor the missing bank statements.
Gaurav Agarwal
Gaurav Aggarwal is SAP S/4HANA lead consultant at Infosys Limited. He has more than 14 years of experience, including 11 years in SAP Finance. He has expertise in both SAP FI and Controlling (CO) with integration to other modules in manufacturing and process industries. He is a chartered accountant and SAP Certified Financial Consultant. He holds a bachelor’s degree in commerce and is a techno-functional expert with thorough knowledge of the necessary ABAP for functional experts. He is a veteran in G/L, AR, AP, banking, FA, Travel Management, and closing cockpit and has handled greenfield implementation, upgrades and conversions, rollouts, and support projects.
You may contact the author at gka2707@gmail.com.
If you have comments about this article or publication, or would like to submit an article idea, please contact the editor.