To automate the process of submitting Monthly Reconciliation document
SAP FI GL (Bank) Scenario (Tcode: FS10N & FF63)
- Closing
balance received from the respective banks
- If
there are differences between House Bank main account balance and the
statement closing balance received from the banks – A Memo record will be
created in the system as part of record purpose.
- Through
workflow to the concerned manager for approval purpose. The form will send
for each house bank account and currency separately and trigger a workflow
to the respective managers for approval/rejection.
- User
will input the bank account on the initial screen and account ID and will
input the closing balance of the house bank received by them from the
bank.
- Book
Balance from FS10N will be taken into consideration for the month in
Initial Screen
- In The input screen:
·
Selection Screen
ü Company Code – Required Entry
ü Bank Account No
ü Currency
ü Bank GL Account – Required Entry – Verify the field HKONT in the table T012K for a given company code.
ü Once the GL account (HKONT) is available, it will fetch the details of Bank
Account
ü No. (BANKN),
- Currency (WAERS) and
will print in the output
ü Balance as per Bank
Statement – Required Entry –
Manual Input by users.
ü Period
ü Year
·
There are two screens that will be sent printed or sent through email –
one with zero balance and another with balance.
- The user will in input the amount manually the
above rows and the break up.
- The output screen for zero and variable
balances – should be in the same format
- If there is a balance arrived after extracting
balances and input values
- Whatever
main account given in the input screen will reflect and also the balance
should be reflected under uncleared in Bank with variance arrived
after balance calculation.
- If
there is any balance, there should be a pop screen to create a Memo
record, if click on yes, another screen will appear with the following
fields to fill in memo record
ü Company code – BUKRS
ü Planning Type – DSART – Table - FDES
ü Planning Date – DATUM – Table - FDES
ü Expiry Date – AVDAT – Table – FDES
ü Account Name – DISKB – Table – T035D –
check the input GL code in the field and input the
value of DISKB
ü Amount – take the variance arrived
from the input balances and same amount
ü Currency – Input GL account currency
taken from T012K
ü Planning Group
ü Text
– SGTXT – Table - FDES
- After
the above inputs fields, the program should call transaction FF63 and feed
the above values and post the Memo record in the system and after
verification, the system will generate memo record number
- After
this step, the output in PDF form will be sent for approvals for first and
second approvers maintained in Z table
- Work flow process:
- Based
on table maintenance – the document will be sent to SAP inbox as
attachment and approval.
- Once
the Approver 1 approves, it will go to Approver 2 SAP inbox and wait for
his approval.
- After
getting final approval, the mail will be sent to FI department user id
that is maintained in the Z table
- If
any stage it is rejected, the mail will be returned back to originator.
- In the OutPut :
- The
Bank account balances are based on input fields provided in the selection.
For a given GL account, Company code, The balances are calculated as
follows
- Pass
the values – BUKRS & HKONT and fiscal year (GJHAR) to get periodic
values
- Calculation
– Previous balance + Current period Debits – Current period Credits = Accounting
Balance
- The
above statement has zero difference, still it will sent for approval to
Manager and then forward
#Development:
Table, Report, Module-Pool, BDC, Smartform, FM, and Workflow - Template, Single Tasks, Rule, Business Object #Development:
Table Creation:
Transparent Table ZFI_GL_RECONCILE Active
Short Description Bank Reconciliation For The Month
MANDT MANDT CLNT 3 0 Client
WF_KEY ZWFKEY CHAR 18 0 WF Key
ZWFDATE DATUM DATS 8 0 Date
ZWFTIME ZWFTIME TIMS 6 0 WF Time
BUKRS BUKRS CHAR 4 0 Company Code
FLAG ABC_ACTFLG CHAR 1 0 Active Indicator
FYEAR GJAHR NUMC 4 0 Fiscal Year
PERIOD KMONA_FI NUMC 2 0 Calendar Month
POST_DATE BUDAT DATS 8 0 Posting Date in the Document
WAERS WAERS CUKY 5 0 Currency Key
GLACC SAKNR CHAR 10 0 G/L Account Number
SKAT TXT50 CHAR 50 0 Text
BANKN BANKN CHAR 18 0 Bank account number
BANK_BALANCE DMBTR CURR 13 2 Amount in Local Currency
BALANCE DMBTR CURR 13 2 Amount in Local Currency
BALANCE DMBTR CURR 13 2 Amount in Local Currency
CREATED_ON ERDAT DATS 8 0 Date on Which Record Was Created
APPROVERBY1 UNAME CHAR 12 0 User Name
APPROVERNAME1 EMNAM CHAR 40 0 Formatted Name of Employee or Applicant
APPROVERPOS1 PLANS NUMC 8 0 Position
APPROVALDATE1 DATUM DATS 8 0 Date
APPROVERBY2 UNAME CHAR 12 0 User Name
APPROVERNAME2 EMNAM CHAR 40 0 Formatted Name of Employee or Applicant
APPROVERPOS2 PLANS NUMC 8 0 Position
APPROVALDATE2 DATUM DATS 8 0 Date
WF_STATUS ZWFSTATUS CHAR 10 0 Workflow Status
WI_ID SWW_WIID NUMC 12 0 Work item ID
COMMENTS CHAR 255 0 Comments
*********************************************************************************
Report:
REPORT ZFI_GL_RECONCILIATION_ACCOUNTS.
*********************************************************************************
INCLUDE ZFI_GL_RECONCILIATION_ACCOUTOP.
*********************************************************************************
SELECTION-SCREEN: BEGIN OF BLOCK B1 WITH FRAME TITLE TEXT-001.
PARAMETERS:
P_HKONT TYPE BSIS-HKONT OBLIGATORY,
P_BUDAT TYPE BSIS-BUDAT NO-DISPLAY,
P_BUKRS TYPE BUKRS OBLIGATORY,
P_GJAHR TYPE GJAHR OBLIGATORY,
P_KEY TYPE BUDAT OBLIGATORY,
P_DMBTR TYPE DMBTR OBLIGATORY.
SELECTION-SCREEN: END OF BLOCK B1 .
*********************************************************************************
AT SELECTION-SCREEN ON P_GJAHR.
PERFORM VALIDATION. "FORM ZFI_GL_RECONCILIATION_ACCOUF04
START-OF-SELECTION.
PERFORM AUTHORITY_CHECK. "FORM ZFI_GL_RECONCILIATION_ACCOUF05
PERFORM GET_DATA. "FORM ZFI_GL_RECONCILIATION_ACCOUF01
PERFORM PREPARE_FINAL_TABLE. "FORM ZFI_GL_RECONCILIATION_ACCOUF02
END-OF-SELECTION.
PERFORM DISPLAY. "FORM ZFI_GL_RECONCILIATION_ACCOUF03
*********************************************************************************
INCLUDE ZFI_GL_RECONCILIATION_ACCOUO01. "STATUS_0100 OUTPUT
INCLUDE ZFI_GL_RECONCILIATION_ACCOUI01. "USER_COMMAND_0100 INPUT
INCLUDE ZFI_GL_RECONCILIATION_ACCOUO02. "STATUS_0200 OUTPUT
INCLUDE ZFI_GL_RECONCILIATION_ACCOUI02. "USER_COMMAND_0200 INPUT
*********************************************************************************
INCLUDE ZFI_GL_RECONCILIATION_ACCOUF01. "Form GET_DATA
INCLUDE ZFI_GL_RECONCILIATION_ACCOUF02. "Form PREPARE_FINAL_TABLE
INCLUDE ZFI_GL_RECONCILIATION_ACCOUF03. "Form DISPLAY
INCLUDE ZFI_GL_RECONCILIATION_ACCOUF04. "Form VALIDATION
INCLUDE ZFI_GL_RECONCILIATION_ACCOUF05. "Form AUTHORITY_CHECK
*********************************************************************************
INCLUDE ZFI_GL_RECONCILIATION_ACCOUF06. "Form BDC_FF63
INCLUDE ZFI_GL_RECONCILIATION_ACCOUF07. "Form F_FILL_BDC
INCLUDE ZFI_GL_RECONCILIATION_ACCOUF08. "Form CALL_TRNC
INCLUDE ZFI_GL_RECONCILIATION_ACCOUF09. "Form GET_MESSTAB
INCLUDE ZFI_GL_RECONCILIATION_ACCOUI03. "Module Values PAI INPUT
INCLUDE ZFI_GL_RECONCILIATION_ACCOUO03. "Module INIT PBO OUTPUT
INCLUDE ZFI_GL_RECONCILIATION_ACCOUO04. "Module VALUE PBO OUTPUT
INCLUDE ZFI_GL_RECONCILIATION_ACCOUTOP.
*********************************************************************************
SELECTION-SCREEN: BEGIN OF BLOCK B1 WITH FRAME TITLE TEXT-001.
PARAMETERS:
P_HKONT TYPE BSIS-HKONT OBLIGATORY,
P_BUDAT TYPE BSIS-BUDAT NO-DISPLAY,
P_BUKRS TYPE BUKRS OBLIGATORY,
P_GJAHR TYPE GJAHR OBLIGATORY,
P_KEY TYPE BUDAT OBLIGATORY,
P_DMBTR TYPE DMBTR OBLIGATORY.
SELECTION-SCREEN: END OF BLOCK B1 .
*********************************************************************************
AT SELECTION-SCREEN ON P_GJAHR.
PERFORM VALIDATION. "FORM ZFI_GL_RECONCILIATION_ACCOUF04
START-OF-SELECTION.
PERFORM AUTHORITY_CHECK. "FORM ZFI_GL_RECONCILIATION_ACCOUF05
PERFORM GET_DATA. "FORM ZFI_GL_RECONCILIATION_ACCOUF01
PERFORM PREPARE_FINAL_TABLE. "FORM ZFI_GL_RECONCILIATION_ACCOUF02
END-OF-SELECTION.
PERFORM DISPLAY. "FORM ZFI_GL_RECONCILIATION_ACCOUF03
*********************************************************************************
INCLUDE ZFI_GL_RECONCILIATION_ACCOUO01. "STATUS_0100 OUTPUT
INCLUDE ZFI_GL_RECONCILIATION_ACCOUI01. "USER_COMMAND_0100 INPUT
INCLUDE ZFI_GL_RECONCILIATION_ACCOUO02. "STATUS_0200 OUTPUT
INCLUDE ZFI_GL_RECONCILIATION_ACCOUI02. "USER_COMMAND_0200 INPUT
*********************************************************************************
INCLUDE ZFI_GL_RECONCILIATION_ACCOUF01. "Form GET_DATA
INCLUDE ZFI_GL_RECONCILIATION_ACCOUF02. "Form PREPARE_FINAL_TABLE
INCLUDE ZFI_GL_RECONCILIATION_ACCOUF03. "Form DISPLAY
INCLUDE ZFI_GL_RECONCILIATION_ACCOUF04. "Form VALIDATION
INCLUDE ZFI_GL_RECONCILIATION_ACCOUF05. "Form AUTHORITY_CHECK
*********************************************************************************
INCLUDE ZFI_GL_RECONCILIATION_ACCOUF06. "Form BDC_FF63
INCLUDE ZFI_GL_RECONCILIATION_ACCOUF07. "Form F_FILL_BDC
INCLUDE ZFI_GL_RECONCILIATION_ACCOUF08. "Form CALL_TRNC
INCLUDE ZFI_GL_RECONCILIATION_ACCOUF09. "Form GET_MESSTAB
INCLUDE ZFI_GL_RECONCILIATION_ACCOUI03. "Module Values PAI INPUT
INCLUDE ZFI_GL_RECONCILIATION_ACCOUO03. "Module INIT PBO OUTPUT
INCLUDE ZFI_GL_RECONCILIATION_ACCOUO04. "Module VALUE PBO OUTPUT
*********************************************************************************
*&---------------------------------------------------------------------*
*& Include ZFI_GL_RECONCILIATION_ACCOUTOP
*&---------------------------------------------------------------------*
DATA : FM_NAME TYPE RS38L_FNAM.
DATA : JOB_OUTPUT_INFO TYPE SSFCRESCL, " Smart Forms: Return value at end of form printing
DOCUMENT_OUTPUT_INFO TYPE SSFCRESPD, " Smart Forms: Return Document Information
JOB_OUTPUT_OPTIONS TYPE SSFCRESOP, " Smart Forms: Return value at start of form
OUTPUT_OPTIONS TYPE SSFCOMPOP, " spool device printer name "LP01"
CONTROL_PARAMETERS TYPE SSFCTRLOP, " Smart Forms: Control structure
V_LANGUAGE TYPE SFLANGU VALUE 'E',
V_E_DEVTYPE TYPE RSPOPTYPE, " Spool: Device type name
V_BIN_FILESIZE TYPE I,
V_BIN_FILE TYPE XSTRING.
DATA: CONTROL TYPE REF TO CL_GUI_HTML_VIEWER,
CONTAINER TYPE REF TO CL_GUI_CUSTOM_CONTAINER,
PDF_ALIGNMENT TYPE I,
PDF_DATA TYPE XSTRING,
PDF_SIZE TYPE I.
DATA: PRINTER_HAS_OPTIONS TYPE C VALUE '',
JT_TAB TYPE POSS_JOBTICKETTAB,
CUR_PRINTER TYPE RSPOPNAME VALUE '',
NEW_PRINT_OPTIONS TYPE C VALUE 'X'.
DATA: IT_OTF TYPE STANDARD TABLE OF ITCOO, " OTF Structure
IT_DOCS TYPE STANDARD TABLE OF DOCS, " Stored document
IT_LINES TYPE STANDARD TABLE OF TLINE. " SAPscript: Text Lines
FIELD-SYMBOLS TYPE X.
DATA : T_OTF TYPE ITCOO OCCURS 0 WITH HEADER LINE,
* Internal table to hold OTF data recd from the SMARTFORM
T_OTF_FROM_FM TYPE SSFCRESCL ,
* Internal table to hold the data from the FM CONVERT_OTF
T_PDF_TAB LIKE TLINE OCCURS 0 WITH HEADER LINE,
LS_PDF LIKE LINE OF T_PDF_TAB,
DOCS LIKE DOCS OCCURS 0 WITH HEADER LINE,
LV_CONTENT TYPE XSTRING,
LV_URL TYPE CHAR255,
LT_DATA TYPE STANDARD TABLE OF X255.
DATA : CUST_CON TYPE REF TO CL_GUI_CUSTOM_CONTAINER.
* control TYPE REF TO cl_gui_html_viewer.
DATA: OBJ_ID TYPE SWR_STRUCT-OBJECT_KEY.
DATA : RETURN TYPE TABLE OF BAPIRETURN1 WITH HEADER LINE.
TABLES: T012K,
WBRP,
T001,
SKAT,
SKA1,
SKB1,
BSIS,
BSAS,
BSIK,
BSAK,
BSID,
BSAD,
BKPF,
ZFI_GL_RECONCILE,
ZFI_GL_MEMO.
TYPES: BEGIN OF T_T012K,
BUKRS TYPE BUKRS,
HKONT TYPE HKONT,
BANKN TYPE BANKN,
END OF T_T012K.
TYPES : BEGIN OF T_SKB1,
BUKRS TYPE BUKRS,
SAKNR TYPE SAKNR,
MITKZ TYPE MITKZ,
END OF T_SKB1.
TYPES : BEGIN OF T_SKA1,
SAKNR TYPE SAKNR,
XB1LK TYPE XBILK,
END OF T_SKA1.
TYPES : BEGIN OF T_STR,
* zwfdate TYPE datum,
* zwftime TYPE uzeit,
BUKRS TYPE BUKRS,
HKONT TYPE HKONT,
GJAHR TYPE GJAHR,
BELNR TYPE BELNR_D,
BUZEI TYPE BUZEI,
WAERS TYPE WAERS,
SHKZG TYPE SHKZG,
DMBTR TYPE DMBTR,
WRBTR TYPE WRBTR,
DMBE2 TYPE DMBE2,
DMBE3 TYPE DMBE3,
* bankn TYPE bankn,
* balance TYPE wrbtr,
END OF T_STR.
TYPES : BEGIN OF T_FINAL,
WF_KEY TYPE ZFI_GL_RECONCILE-WF_KEY,
ZWFDATE TYPE ZFI_GL_RECONCILE-ZWFDATE,
ZWFTIME TYPE ZFI_GL_RECONCILE-ZWFTIME,
BUKRS TYPE BUKRS,
FYEAR TYPE GJAHR,
PERIOD TYPE KMONA_FI,
POST_DATE TYPE BUDAT,
WAERS TYPE WAERS,
HKONT TYPE HKONT,
SKAT TYPE TXT50,
WRBTR TYPE WRBTR,
WAERS_DC TYPE WAERS,
DMBTR TYPE DMBTR,
WAERS_LC TYPE WAERS,
DMBE2 TYPE DMBE2,
HWAE2 TYPE HWAE2,
DMBE3 TYPE DMBE3,
HWAE3 TYPE HWAE3,
BANKN TYPE BANKN,
BALANCE TYPE WRBTR,
INITIATOR TYPE UNAME,
END OF T_FINAL.
DATA : IT_SKA1 TYPE TABLE OF T_SKA1,
IT_NON_BS TYPE TABLE OF T_SKA1,
IT_BS_ACC TYPE TABLE OF T_SKA1,
IT_RECON_VEN TYPE TABLE OF T_SKA1,
IT_RECON_CUS TYPE TABLE OF T_SKA1,
IT_SKB1 TYPE TABLE OF T_SKB1,
IT_BSIS_NON_BS TYPE TABLE OF T_STR,
IT_BSIS TYPE TABLE OF T_STR,
IT_BSAS TYPE TABLE OF T_STR,
IT_BSIK TYPE TABLE OF T_STR,
IT_BSAK TYPE TABLE OF T_STR,
IT_BSID TYPE TABLE OF T_STR,
IT_BSAD TYPE TABLE OF T_STR,
IT_T012K TYPE TABLE OF T_T012K,
IT_STR TYPE TABLE OF T_STR,
IT_FINAL TYPE TABLE OF T_FINAL,
IS_FINAL TYPE T_FINAL," OCCURS 0 WITH HEADER LINE,
IT_FINAL2 TYPE TABLE OF T_FINAL.
DATA : IS_SKA1 TYPE T_SKA1,
IS_NON_BS TYPE T_SKA1,
IS_BS_ACC TYPE T_SKA1,
IS_RECON_VEN TYPE T_SKA1,
IS_RECON_CUS TYPE T_SKA1,
IS_SKB1 TYPE T_SKB1,
IS_BSIS_NON_BS TYPE T_STR,
IS_BSIS TYPE T_STR,
IS_BSAS TYPE T_STR,
IS_BSIK TYPE T_STR,
IS_BSAK TYPE T_STR,
IS_BSID TYPE T_STR,
IS_BSAD TYPE T_STR,
IS_T012K TYPE T_T012K,
IS_STR TYPE T_STR.
* is_final TYPE t_final.
DATA: IT_TEXT TYPE CHAR255.
DATA: BALANCE TYPE WRBTR,
IS_DATE TYPE SY-DATUM,
IS_TIME TYPE SY-UZEIT,
IS_OBJ_KEY TYPE ZFI_GL_RECONCILE-WF_KEY,
LV_OBJ_KEY TYPE SWR_STRUCT-OBJECT_KEY.
DATA: GC_ZFI_GL_RECONCILE TYPE INRI-OBJECT VALUE 'ZRECONCILE',
GC_01 TYPE INRI-NRRANGENR VALUE '01'.
DATA: IT_ZFI_GL_RECONCILE TYPE ZFI_GL_RECONCILE OCCURS 0 WITH HEADER LINE.
DATA: IT_FLDCAT TYPE SLIS_T_FIELDCAT_ALV,
IS_FLDCAT TYPE SLIS_FIELDCAT_ALV,
IS_LAYOUT TYPE SLIS_LAYOUT_ALV,
IT_SORT TYPE SLIS_T_SORTINFO_ALV,
IS_SORT TYPE SLIS_SORTINFO_ALV,
LV_YEAR TYPE GJAHR.
DATA: IT_BDCDATA LIKE BDCDATA OCCURS 0 WITH HEADER LINE.
DATA: IT_MESSAGES LIKE BDCMSGCOLL OCCURS 0 WITH HEADER LINE,
IS_MESSAGES LIKE BDCMSGCOLL.
DATA: FLAG TYPE C,
VAR1 TYPE C.
DATA: IT_ZFI_GL_MEMO TYPE ZFI_GL_MEMO OCCURS 0 WITH HEADER LINE.
DATA: IS_ZFI_GL_MEMO TYPE ZFI_GL_MEMO.
*DATA: IS_ZFI_GL_MEMO-DATUM TYPE WORKFLDS-GKDAY.
*DATA: IS_ZFI_GL_MEMO-AVDAT TYPE WORKFLDS-GKDAY.
DATA: LOC_TRN LIKE SY-TCODE.
DATA: LOC_MODE.
DATA:WF_RETURNCODE,
WF_ERROR_TEXT(200),
WG_ERROR_FLAG.
DATA: WFKEY1 LIKE ZFI_GL_RECONCILE-WF_KEY.
TYPES: BEGIN OF VALUES,
CARRID TYPE SPFLI-CARRID,
CONNID TYPE SPFLI-CONNID,
END OF VALUES.
DATA: PROGNAME TYPE SY-REPID,
DYNNUM TYPE SY-DYNNR,
DYNPRO_VALUES TYPE TABLE OF DYNPREAD,
FIELD_VALUE LIKE LINE OF DYNPRO_VALUES,
VALUES_TAB TYPE TABLE OF VALUES.
* DYNFIELDS TYPE HELP_INFO OCCURS 0 WITH HEADER LINE.
DATA: BEGIN OF DYNFIELDS OCCURS 0.
INCLUDE STRUCTURE DYNPREAD.
DATA: END OF DYNFIELDS.
DATA : LS_WRSHB(30) TYPE C,
LS_DATUM(10) TYPE C,
LS_AVDAT(10) TYPE C,
LS_DISPW TYPE TCURC-WAERS,
EXT_AMT TYPE BAPICURR-BAPICURR.
DATA : T_OTF TYPE ITCOO OCCURS 0 WITH HEADER LINE,
* Internal table to hold OTF data recd from the SMARTFORM
T_OTF_FROM_FM TYPE SSFCRESCL ,
* Internal table to hold the data from the FM CONVERT_OTF
T_PDF_TAB LIKE TLINE OCCURS 0 WITH HEADER LINE,
LS_PDF LIKE LINE OF T_PDF_TAB,
DOCS LIKE DOCS OCCURS 0 WITH HEADER LINE,
LV_CONTENT TYPE XSTRING,
LV_URL TYPE CHAR255,
LT_DATA TYPE STANDARD TABLE OF X255.
DATA : CUST_CON TYPE REF TO CL_GUI_CUSTOM_CONTAINER.
* control TYPE REF TO cl_gui_html_viewer.
DATA: OBJ_ID TYPE SWR_STRUCT-OBJECT_KEY.
DATA : RETURN TYPE TABLE OF BAPIRETURN1 WITH HEADER LINE.
TABLES: T012K,
WBRP,
T001,
SKAT,
SKA1,
SKB1,
BSIS,
BSAS,
BSIK,
BSAK,
BSID,
BSAD,
BKPF,
ZFI_GL_RECONCILE,
ZFI_GL_MEMO.
TYPES: BEGIN OF T_T012K,
BUKRS TYPE BUKRS,
HKONT TYPE HKONT,
BANKN TYPE BANKN,
END OF T_T012K.
TYPES : BEGIN OF T_SKB1,
BUKRS TYPE BUKRS,
SAKNR TYPE SAKNR,
MITKZ TYPE MITKZ,
END OF T_SKB1.
TYPES : BEGIN OF T_SKA1,
SAKNR TYPE SAKNR,
XB1LK TYPE XBILK,
END OF T_SKA1.
TYPES : BEGIN OF T_STR,
* zwfdate TYPE datum,
* zwftime TYPE uzeit,
BUKRS TYPE BUKRS,
HKONT TYPE HKONT,
GJAHR TYPE GJAHR,
BELNR TYPE BELNR_D,
BUZEI TYPE BUZEI,
WAERS TYPE WAERS,
SHKZG TYPE SHKZG,
DMBTR TYPE DMBTR,
WRBTR TYPE WRBTR,
DMBE2 TYPE DMBE2,
DMBE3 TYPE DMBE3,
* bankn TYPE bankn,
* balance TYPE wrbtr,
END OF T_STR.
TYPES : BEGIN OF T_FINAL,
WF_KEY TYPE ZFI_GL_RECONCILE-WF_KEY,
ZWFDATE TYPE ZFI_GL_RECONCILE-ZWFDATE,
ZWFTIME TYPE ZFI_GL_RECONCILE-ZWFTIME,
BUKRS TYPE BUKRS,
FYEAR TYPE GJAHR,
PERIOD TYPE KMONA_FI,
POST_DATE TYPE BUDAT,
WAERS TYPE WAERS,
HKONT TYPE HKONT,
SKAT TYPE TXT50,
WRBTR TYPE WRBTR,
WAERS_DC TYPE WAERS,
DMBTR TYPE DMBTR,
WAERS_LC TYPE WAERS,
DMBE2 TYPE DMBE2,
HWAE2 TYPE HWAE2,
DMBE3 TYPE DMBE3,
HWAE3 TYPE HWAE3,
BANKN TYPE BANKN,
BALANCE TYPE WRBTR,
INITIATOR TYPE UNAME,
END OF T_FINAL.
DATA : IT_SKA1 TYPE TABLE OF T_SKA1,
IT_NON_BS TYPE TABLE OF T_SKA1,
IT_BS_ACC TYPE TABLE OF T_SKA1,
IT_RECON_VEN TYPE TABLE OF T_SKA1,
IT_RECON_CUS TYPE TABLE OF T_SKA1,
IT_SKB1 TYPE TABLE OF T_SKB1,
IT_BSIS_NON_BS TYPE TABLE OF T_STR,
IT_BSIS TYPE TABLE OF T_STR,
IT_BSAS TYPE TABLE OF T_STR,
IT_BSIK TYPE TABLE OF T_STR,
IT_BSAK TYPE TABLE OF T_STR,
IT_BSID TYPE TABLE OF T_STR,
IT_BSAD TYPE TABLE OF T_STR,
IT_T012K TYPE TABLE OF T_T012K,
IT_STR TYPE TABLE OF T_STR,
IT_FINAL TYPE TABLE OF T_FINAL,
IS_FINAL TYPE T_FINAL," OCCURS 0 WITH HEADER LINE,
IT_FINAL2 TYPE TABLE OF T_FINAL.
DATA : IS_SKA1 TYPE T_SKA1,
IS_NON_BS TYPE T_SKA1,
IS_BS_ACC TYPE T_SKA1,
IS_RECON_VEN TYPE T_SKA1,
IS_RECON_CUS TYPE T_SKA1,
IS_SKB1 TYPE T_SKB1,
IS_BSIS_NON_BS TYPE T_STR,
IS_BSIS TYPE T_STR,
IS_BSAS TYPE T_STR,
IS_BSIK TYPE T_STR,
IS_BSAK TYPE T_STR,
IS_BSID TYPE T_STR,
IS_BSAD TYPE T_STR,
IS_T012K TYPE T_T012K,
IS_STR TYPE T_STR.
* is_final TYPE t_final.
DATA: IT_TEXT TYPE CHAR255.
DATA: BALANCE TYPE WRBTR,
IS_DATE TYPE SY-DATUM,
IS_TIME TYPE SY-UZEIT,
IS_OBJ_KEY TYPE ZFI_GL_RECONCILE-WF_KEY,
LV_OBJ_KEY TYPE SWR_STRUCT-OBJECT_KEY.
DATA: GC_ZFI_GL_RECONCILE TYPE INRI-OBJECT VALUE 'ZRECONCILE',
GC_01 TYPE INRI-NRRANGENR VALUE '01'.
DATA: IT_ZFI_GL_RECONCILE TYPE ZFI_GL_RECONCILE OCCURS 0 WITH HEADER LINE.
DATA: IT_FLDCAT TYPE SLIS_T_FIELDCAT_ALV,
IS_FLDCAT TYPE SLIS_FIELDCAT_ALV,
IS_LAYOUT TYPE SLIS_LAYOUT_ALV,
IT_SORT TYPE SLIS_T_SORTINFO_ALV,
IS_SORT TYPE SLIS_SORTINFO_ALV,
LV_YEAR TYPE GJAHR.
DATA: IT_BDCDATA LIKE BDCDATA OCCURS 0 WITH HEADER LINE.
DATA: IT_MESSAGES LIKE BDCMSGCOLL OCCURS 0 WITH HEADER LINE,
IS_MESSAGES LIKE BDCMSGCOLL.
DATA: FLAG TYPE C,
VAR1 TYPE C.
DATA: IT_ZFI_GL_MEMO TYPE ZFI_GL_MEMO OCCURS 0 WITH HEADER LINE.
DATA: IS_ZFI_GL_MEMO TYPE ZFI_GL_MEMO.
*DATA: IS_ZFI_GL_MEMO-DATUM TYPE WORKFLDS-GKDAY.
*DATA: IS_ZFI_GL_MEMO-AVDAT TYPE WORKFLDS-GKDAY.
DATA: LOC_TRN LIKE SY-TCODE.
DATA: LOC_MODE.
DATA:WF_RETURNCODE,
WF_ERROR_TEXT(200),
WG_ERROR_FLAG.
DATA: WFKEY1 LIKE ZFI_GL_RECONCILE-WF_KEY.
TYPES: BEGIN OF VALUES,
CARRID TYPE SPFLI-CARRID,
CONNID TYPE SPFLI-CONNID,
END OF VALUES.
DATA: PROGNAME TYPE SY-REPID,
DYNNUM TYPE SY-DYNNR,
DYNPRO_VALUES TYPE TABLE OF DYNPREAD,
FIELD_VALUE LIKE LINE OF DYNPRO_VALUES,
VALUES_TAB TYPE TABLE OF VALUES.
* DYNFIELDS TYPE HELP_INFO OCCURS 0 WITH HEADER LINE.
DATA: BEGIN OF DYNFIELDS OCCURS 0.
INCLUDE STRUCTURE DYNPREAD.
DATA: END OF DYNFIELDS.
DATA : LS_WRSHB(30) TYPE C,
LS_DATUM(10) TYPE C,
LS_AVDAT(10) TYPE C,
LS_DISPW TYPE TCURC-WAERS,
EXT_AMT TYPE BAPICURR-BAPICURR.
*********************************************************************************
Text Symbols:
Select Data for Bank
Reconciliation for Month
Selection Texts:
P_BUKRS Company Code
P_DMBTR Amount
P_GJAHR Fiscal Year
P_HKONT G/L Account
P_KEY Posting Date Of that Month
*********************************************************************************
*----------------------------------------------------------------------*
***INCLUDE ZFI_GL_RECONCILIATION_ACCOUF04.
*----------------------------------------------------------------------*
*&---------------------------------------------------------------------*
*& Form VALIDATION
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- nbsp="" p2="" span="" text="">
*----------------------------------------------------------------------*
FORM VALIDATION .
* Validate Year
IF P_KEY IS NOT INITIAL.
LV_YEAR = P_KEY+0(4).
IF P_GJAHR NE LV_YEAR.
MESSAGE E000(ZFI_GL) WITH LV_YEAR.
ENDIF.
ENDIF.
*Validate Company Code
IF P_BUKRS IS NOT INITIAL.
SELECT SINGLE * FROM BSIS
WHERE BUKRS = P_BUKRS.
IF SY-SUBRC <> 0.
MESSAGE E002(ZFI_GL) WITH P_BUKRS .
ENDIF.
ENDIF.
* Validate G/L Account
IF P_HKONT IS NOT INITIAL.
SELECT SINGLE * FROM BSIS
WHERE HKONT = P_HKONT.
IF SY-SUBRC <> 0.
MESSAGE E001(ZFI_GL) WITH P_HKONT .
ENDIF.
ENDIF.
ENDFORM. " VALIDATION -->
***INCLUDE ZFI_GL_RECONCILIATION_ACCOUF04.
*----------------------------------------------------------------------*
*&---------------------------------------------------------------------*
*& Form VALIDATION
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- nbsp="" p2="" span="" text="">
*----------------------------------------------------------------------*
FORM VALIDATION .
* Validate Year
IF P_KEY IS NOT INITIAL.
LV_YEAR = P_KEY+0(4).
IF P_GJAHR NE LV_YEAR.
MESSAGE E000(ZFI_GL) WITH LV_YEAR.
ENDIF.
ENDIF.
*Validate Company Code
IF P_BUKRS IS NOT INITIAL.
SELECT SINGLE * FROM BSIS
WHERE BUKRS = P_BUKRS.
IF SY-SUBRC <> 0.
MESSAGE E002(ZFI_GL) WITH P_BUKRS .
ENDIF.
ENDIF.
* Validate G/L Account
IF P_HKONT IS NOT INITIAL.
SELECT SINGLE * FROM BSIS
WHERE HKONT = P_HKONT.
IF SY-SUBRC <> 0.
MESSAGE E001(ZFI_GL) WITH P_HKONT .
ENDIF.
ENDIF.
ENDFORM. " VALIDATION
*********************************************************************************
*----------------------------------------------------------------------*
***INCLUDE ZFI_GL_RECONCILIATION_ACCOUF05.
*----------------------------------------------------------------------*
*&---------------------------------------------------------------------*
*& Form AUTHORITY_CHECK
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- nbsp="" p2="" span="" text="">
*----------------------------------------------------------------------*
FORM AUTHORITY_CHECK .
AUTHORITY-CHECK OBJECT 'F_BKPF_BUK'
ID 'ACTVT' FIELD '03'
ID 'BUKRS' FIELD P_BUKRS.
IF SY-SUBRC NE 0.
MESSAGE E000(ZFI)
WITH 'No authorization to Company code' P_BUKRS.
ENDIF .
ENDFORM. " AUTHORITY_CHECK -->
***INCLUDE ZFI_GL_RECONCILIATION_ACCOUF05.
*----------------------------------------------------------------------*
*&---------------------------------------------------------------------*
*& Form AUTHORITY_CHECK
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- nbsp="" p2="" span="" text="">
*----------------------------------------------------------------------*
FORM AUTHORITY_CHECK .
AUTHORITY-CHECK OBJECT 'F_BKPF_BUK'
ID 'ACTVT' FIELD '03'
ID 'BUKRS' FIELD P_BUKRS.
IF SY-SUBRC NE 0.
MESSAGE E000(ZFI)
WITH 'No authorization to Company code' P_BUKRS.
ENDIF .
ENDFORM. " AUTHORITY_CHECK
*********************************************************************************
*----------------------------------------------------------------------*
***INCLUDE ZFI_GL_RECONCILIATION_ACCOUF01.
*----------------------------------------------------------------------*
*&---------------------------------------------------------------------*
*& Form GET_DATA
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- nbsp="" p2="" span="" text="">
*----------------------------------------------------------------------*
FORM GET_DATA .
IF P_HKONT IS INITIAL.
SELECT BUKRS SAKNR MITKZ FROM SKB1 INTO TABLE IT_SKB1
WHERE BUKRS = P_BUKRS.
ELSE.
SELECT BUKRS SAKNR MITKZ FROM SKB1 INTO TABLE IT_SKB1
WHERE BUKRS = P_BUKRS
AND SAKNR = P_HKONT.
ENDIF.
IF IT_SKB1[] IS NOT INITIAL.
SELECT SAKNR XBILK FROM SKA1 INTO TABLE IT_SKA1
FOR ALL ENTRIES IN IT_SKB1
WHERE SAKNR = IT_SKB1-SAKNR.
ENDIF.
LOOP AT IT_SKA1 INTO IS_SKA1.
*-----Non-Balance sheet accounts
IF IS_SKA1-XB1LK IS INITIAL.
MOVE IS_SKA1 TO IS_NON_BS .
APPEND IS_NON_BS TO IT_NON_BS.
ENDIF.
READ TABLE IT_SKB1 INTO IS_SKB1
WITH KEY SAKNR = IS_SKA1-SAKNR.
IF SY-SUBRC = 0 .
*-----Purely Balance sheet accounts
IF IS_SKA1-XB1LK = 'X' AND IS_SKB1-MITKZ IS INITIAL.
MOVE IS_SKA1 TO IS_BS_ACC .
APPEND IS_BS_ACC TO IT_BS_ACC.
*-----Reconciliation accounts
ELSEIF IS_SKA1-XB1LK = 'X' AND IS_SKB1-MITKZ = 'K'.
MOVE IS_SKA1 TO IS_RECON_VEN .
APPEND IS_RECON_VEN TO IT_RECON_VEN.
ELSEIF IS_SKA1-XB1LK = 'X' AND IS_SKB1-MITKZ = 'D'.
MOVE IS_SKA1 TO IS_RECON_CUS .
APPEND IS_RECON_CUS TO IT_RECON_CUS.
ENDIF.
ENDIF.
CLEAR : IS_SKA1, IS_SKB1, IS_NON_BS, IS_BS_ACC, IS_RECON_VEN, IS_RECON_CUS.
ENDLOOP.
IF IT_NON_BS[] IS NOT INITIAL.
DATA : LV_KEY TYPE BUDAT.
CONCATENATE P_GJAHR '0101' INTO LV_KEY.
* p_budat-low = lv_key.
* p_budat-high = p_key.
* p_budat-sign = 'I'.
* p_budat-option = 'BT'.
* APPEND s_budat.
SELECT BUKRS HKONT GJAHR BELNR BUZEI WAERS SHKZG DMBTR WRBTR DMBE2 DMBE3 FROM BSIS INTO TABLE IT_BSIS_NON_BS
FOR ALL ENTRIES IN IT_NON_BS
WHERE BUKRS = P_BUKRS
AND HKONT = IT_NON_BS-SAKNR
AND GJAHR = P_GJAHR
AND BUDAT = P_BUDAT.
ENDIF.
IF IT_BS_ACC[] IS NOT INITIAL .
SELECT BUKRS HKONT GJAHR BELNR BUZEI WAERS SHKZG DMBTR WRBTR DMBE2 DMBE3 FROM BSIS INTO TABLE IT_BSIS
FOR ALL ENTRIES IN IT_BS_ACC
WHERE BUKRS = P_BUKRS
AND HKONT = IT_BS_ACC-SAKNR
AND BUDAT LE P_KEY.
SELECT BUKRS HKONT GJAHR BELNR BUZEI WAERS SHKZG DMBTR WRBTR DMBE2 DMBE3 FROM BSAS INTO TABLE IT_BSAS
FOR ALL ENTRIES IN IT_BS_ACC
WHERE BUKRS = P_BUKRS
AND HKONT = IT_BS_ACC-SAKNR
AND AUGDT GT P_KEY
AND BUDAT LE P_KEY.
ENDIF.
IF IT_RECON_VEN[] IS NOT INITIAL.
SELECT BUKRS HKONT GJAHR BELNR BUZEI WAERS SHKZG DMBTR WRBTR DMBE2 DMBE3 FROM BSIK INTO TABLE IT_BSIK
FOR ALL ENTRIES IN IT_RECON_VEN
WHERE BUKRS = P_BUKRS
AND HKONT = IT_RECON_VEN-SAKNR
AND BUDAT LE P_KEY.
SELECT BUKRS HKONT GJAHR BELNR BUZEI WAERS SHKZG DMBTR WRBTR DMBE2 DMBE3 FROM BSAK INTO TABLE IT_BSAK
FOR ALL ENTRIES IN IT_RECON_VEN
WHERE BUKRS = P_BUKRS
AND HKONT = IT_RECON_VEN-SAKNR
AND AUGDT GT P_KEY
AND BUDAT LE P_KEY.
ENDIF.
IF IT_RECON_CUS[] IS NOT INITIAL.
SELECT BUKRS HKONT GJAHR BELNR BUZEI WAERS SHKZG DMBTR WRBTR DMBE2 DMBE3 FROM BSID INTO TABLE IT_BSID
FOR ALL ENTRIES IN IT_RECON_CUS
WHERE BUKRS = P_BUKRS
AND HKONT = IT_RECON_CUS-SAKNR
AND BUDAT LE P_KEY.
SELECT BUKRS HKONT GJAHR BELNR BUZEI WAERS SHKZG DMBTR WRBTR DMBE2 DMBE3 FROM BSAD INTO TABLE IT_BSAD
FOR ALL ENTRIES IN IT_RECON_CUS
WHERE BUKRS = P_BUKRS
AND HKONT = IT_RECON_CUS-SAKNR
AND AUGDT GT P_KEY
AND BUDAT LE P_KEY.
ENDIF.
ENDFORM. " GET_DATA -->
***INCLUDE ZFI_GL_RECONCILIATION_ACCOUF01.
*----------------------------------------------------------------------*
*&---------------------------------------------------------------------*
*& Form GET_DATA
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- nbsp="" p2="" span="" text="">
*----------------------------------------------------------------------*
FORM GET_DATA .
IF P_HKONT IS INITIAL.
SELECT BUKRS SAKNR MITKZ FROM SKB1 INTO TABLE IT_SKB1
WHERE BUKRS = P_BUKRS.
ELSE.
SELECT BUKRS SAKNR MITKZ FROM SKB1 INTO TABLE IT_SKB1
WHERE BUKRS = P_BUKRS
AND SAKNR = P_HKONT.
ENDIF.
IF IT_SKB1[] IS NOT INITIAL.
SELECT SAKNR XBILK FROM SKA1 INTO TABLE IT_SKA1
FOR ALL ENTRIES IN IT_SKB1
WHERE SAKNR = IT_SKB1-SAKNR.
ENDIF.
LOOP AT IT_SKA1 INTO IS_SKA1.
*-----Non-Balance sheet accounts
IF IS_SKA1-XB1LK IS INITIAL.
MOVE IS_SKA1 TO IS_NON_BS .
APPEND IS_NON_BS TO IT_NON_BS.
ENDIF.
READ TABLE IT_SKB1 INTO IS_SKB1
WITH KEY SAKNR = IS_SKA1-SAKNR.
IF SY-SUBRC = 0 .
*-----Purely Balance sheet accounts
IF IS_SKA1-XB1LK = 'X' AND IS_SKB1-MITKZ IS INITIAL.
MOVE IS_SKA1 TO IS_BS_ACC .
APPEND IS_BS_ACC TO IT_BS_ACC.
*-----Reconciliation accounts
ELSEIF IS_SKA1-XB1LK = 'X' AND IS_SKB1-MITKZ = 'K'.
MOVE IS_SKA1 TO IS_RECON_VEN .
APPEND IS_RECON_VEN TO IT_RECON_VEN.
ELSEIF IS_SKA1-XB1LK = 'X' AND IS_SKB1-MITKZ = 'D'.
MOVE IS_SKA1 TO IS_RECON_CUS .
APPEND IS_RECON_CUS TO IT_RECON_CUS.
ENDIF.
ENDIF.
CLEAR : IS_SKA1, IS_SKB1, IS_NON_BS, IS_BS_ACC, IS_RECON_VEN, IS_RECON_CUS.
ENDLOOP.
IF IT_NON_BS[] IS NOT INITIAL.
DATA : LV_KEY TYPE BUDAT.
CONCATENATE P_GJAHR '0101' INTO LV_KEY.
* p_budat-low = lv_key.
* p_budat-high = p_key.
* p_budat-sign = 'I'.
* p_budat-option = 'BT'.
* APPEND s_budat.
SELECT BUKRS HKONT GJAHR BELNR BUZEI WAERS SHKZG DMBTR WRBTR DMBE2 DMBE3 FROM BSIS INTO TABLE IT_BSIS_NON_BS
FOR ALL ENTRIES IN IT_NON_BS
WHERE BUKRS = P_BUKRS
AND HKONT = IT_NON_BS-SAKNR
AND GJAHR = P_GJAHR
AND BUDAT = P_BUDAT.
ENDIF.
IF IT_BS_ACC[] IS NOT INITIAL .
SELECT BUKRS HKONT GJAHR BELNR BUZEI WAERS SHKZG DMBTR WRBTR DMBE2 DMBE3 FROM BSIS INTO TABLE IT_BSIS
FOR ALL ENTRIES IN IT_BS_ACC
WHERE BUKRS = P_BUKRS
AND HKONT = IT_BS_ACC-SAKNR
AND BUDAT LE P_KEY.
SELECT BUKRS HKONT GJAHR BELNR BUZEI WAERS SHKZG DMBTR WRBTR DMBE2 DMBE3 FROM BSAS INTO TABLE IT_BSAS
FOR ALL ENTRIES IN IT_BS_ACC
WHERE BUKRS = P_BUKRS
AND HKONT = IT_BS_ACC-SAKNR
AND AUGDT GT P_KEY
AND BUDAT LE P_KEY.
ENDIF.
IF IT_RECON_VEN[] IS NOT INITIAL.
SELECT BUKRS HKONT GJAHR BELNR BUZEI WAERS SHKZG DMBTR WRBTR DMBE2 DMBE3 FROM BSIK INTO TABLE IT_BSIK
FOR ALL ENTRIES IN IT_RECON_VEN
WHERE BUKRS = P_BUKRS
AND HKONT = IT_RECON_VEN-SAKNR
AND BUDAT LE P_KEY.
SELECT BUKRS HKONT GJAHR BELNR BUZEI WAERS SHKZG DMBTR WRBTR DMBE2 DMBE3 FROM BSAK INTO TABLE IT_BSAK
FOR ALL ENTRIES IN IT_RECON_VEN
WHERE BUKRS = P_BUKRS
AND HKONT = IT_RECON_VEN-SAKNR
AND AUGDT GT P_KEY
AND BUDAT LE P_KEY.
ENDIF.
IF IT_RECON_CUS[] IS NOT INITIAL.
SELECT BUKRS HKONT GJAHR BELNR BUZEI WAERS SHKZG DMBTR WRBTR DMBE2 DMBE3 FROM BSID INTO TABLE IT_BSID
FOR ALL ENTRIES IN IT_RECON_CUS
WHERE BUKRS = P_BUKRS
AND HKONT = IT_RECON_CUS-SAKNR
AND BUDAT LE P_KEY.
SELECT BUKRS HKONT GJAHR BELNR BUZEI WAERS SHKZG DMBTR WRBTR DMBE2 DMBE3 FROM BSAD INTO TABLE IT_BSAD
FOR ALL ENTRIES IN IT_RECON_CUS
WHERE BUKRS = P_BUKRS
AND HKONT = IT_RECON_CUS-SAKNR
AND AUGDT GT P_KEY
AND BUDAT LE P_KEY.
ENDIF.
ENDFORM. " GET_DATA
*********************************************************************************
*----------------------------------------------------------------------*
***INCLUDE ZFI_GL_RECONCILIATION_ACCOUF02.
*----------------------------------------------------------------------*
*&---------------------------------------------------------------------*
*& Form PREPARE_FINAL_TABLE
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- nbsp="" p2="" span="" text="">
*----------------------------------------------------------------------*
FORM PREPARE_FINAL_TABLE .
SELECT SINGLE * FROM BKPF WHERE BUKRS = P_BUKRS.
IF IT_BSIS_NON_BS[] IS NOT INITIAL.
LOOP AT IT_BSIS_NON_BS INTO IS_BSIS_NON_BS.
IS_FINAL-BUKRS = IS_BSIS_NON_BS-BUKRS.
IS_FINAL-HKONT = IS_BSIS_NON_BS-HKONT.
IS_FINAL-FYEAR = P_KEY.
IS_FINAL-WAERS_DC = IS_BSIS_NON_BS-WAERS.
IS_FINAL-HWAE2 = BKPF-HWAE2.
IS_FINAL-HWAE3 = BKPF-HWAE3.
SELECT SINGLE WAERS KTOPL FROM T001 INTO (T001-WAERS,T001-KTOPL)
WHERE BUKRS = IS_BSIS_NON_BS-BUKRS.
IF SY-SUBRC = 0.
IS_FINAL-WAERS_LC = T001-WAERS.
SELECT SINGLE TXT50 FROM SKAT
INTO SKAT-TXT50
WHERE KTOPL = T001-KTOPL
AND SPRAS = SY-LANGU
AND SAKNR = IS_BSIS_NON_BS-HKONT.
IF SY-SUBRC = 0.
IS_FINAL-SKAT = SKAT-TXT50.
ENDIF.
ENDIF.
IF IS_BSIS_NON_BS-SHKZG = 'H'.
IS_FINAL-DMBTR = ( IS_BSIS_NON_BS-DMBTR * -1 ).
IS_FINAL-WRBTR = ( IS_BSIS_NON_BS-WRBTR * -1 ).
IS_FINAL-DMBE2 = ( IS_BSIS_NON_BS-DMBE2 * -1 ).
IS_FINAL-DMBE3 = ( IS_BSIS_NON_BS-DMBE3 * -1 ).
ELSEIF IS_BSIS_NON_BS-SHKZG = 'S'.
IS_FINAL-DMBTR = IS_BSIS_NON_BS-DMBTR .
IS_FINAL-WRBTR = IS_BSIS_NON_BS-WRBTR .
IS_FINAL-DMBE2 = IS_BSIS_NON_BS-DMBE2 .
IS_FINAL-DMBE3 = IS_BSIS_NON_BS-DMBE3 .
ENDIF .
APPEND IS_FINAL TO IT_FINAL.
CLEAR : IS_FINAL,IS_BSIS_NON_BS,T001,SKAT.
ENDLOOP.
ENDIF.
IF IT_BSIS[] IS NOT INITIAL.
LOOP AT IT_BSIS INTO IS_BSIS.
IS_FINAL-BUKRS = IS_BSIS-BUKRS.
IS_FINAL-HKONT = IS_BSIS-HKONT.
IS_FINAL-FYEAR = P_KEY.
IS_FINAL-WAERS_DC = IS_BSIS-WAERS.
IS_FINAL-HWAE2 = BKPF-HWAE2.
IS_FINAL-HWAE3 = BKPF-HWAE3.
SELECT SINGLE WAERS KTOPL FROM T001 INTO (T001-WAERS,T001-KTOPL)
WHERE BUKRS = IS_BSIS-BUKRS.
IF SY-SUBRC = 0.
IS_FINAL-WAERS_LC = T001-WAERS.
SELECT SINGLE TXT50 FROM SKAT
INTO SKAT-TXT50
WHERE KTOPL = T001-KTOPL
AND SPRAS = SY-LANGU
AND SAKNR = IS_BSIS-HKONT.
IF SY-SUBRC = 0.
IS_FINAL-SKAT = SKAT-TXT50.
ENDIF.
ENDIF.
IF IS_BSIS-SHKZG = 'H'.
IS_FINAL-DMBTR = ( IS_BSIS-DMBTR * -1 ).
IS_FINAL-WRBTR = ( IS_BSIS-WRBTR * -1 ).
IS_FINAL-DMBE2 = ( IS_BSIS-DMBE2 * -1 ).
IS_FINAL-DMBE3 = ( IS_BSIS-DMBE3 * -1 ).
ELSEIF IS_BSIS-SHKZG = 'S'.
IS_FINAL-DMBTR = IS_BSIS-DMBTR .
IS_FINAL-WRBTR = IS_BSIS-WRBTR .
IS_FINAL-DMBE2 = IS_BSIS-DMBE2 .
IS_FINAL-DMBE3 = IS_BSIS-DMBE3 .
ENDIF.
APPEND IS_FINAL TO IT_FINAL.
CLEAR : IS_FINAL,IS_BSIS,T001,SKAT.
ENDLOOP.
ENDIF.
IF IT_BSAS[] IS NOT INITIAL.
LOOP AT IT_BSAS INTO IS_BSAS.
IS_FINAL-BUKRS = IS_BSAS-BUKRS.
IS_FINAL-HKONT = IS_BSAS-HKONT.
IS_FINAL-FYEAR = P_KEY.
IS_FINAL-WAERS_DC = IS_BSAS-WAERS.
IS_FINAL-HWAE2 = BKPF-HWAE2.
IS_FINAL-HWAE3 = BKPF-HWAE3.
SELECT SINGLE WAERS KTOPL FROM T001 INTO (T001-WAERS,T001-KTOPL)
WHERE BUKRS = IS_BSAS-BUKRS.
IF SY-SUBRC = 0.
IS_FINAL-WAERS_LC = T001-WAERS.
SELECT SINGLE TXT50 FROM SKAT
INTO SKAT-TXT50
WHERE KTOPL = T001-KTOPL
AND SPRAS = SY-LANGU
AND SAKNR = IS_BSAS-HKONT.
IF SY-SUBRC = 0.
IS_FINAL-SKAT = SKAT-TXT50.
ENDIF.
ENDIF.
IF IS_BSAS-SHKZG = 'H'.
IS_FINAL-DMBTR = ( IS_BSAS-DMBTR * -1 ).
IS_FINAL-WRBTR = ( IS_BSAS-WRBTR * -1 ).
IS_FINAL-DMBE2 = ( IS_BSAS-DMBE2 * -1 ).
IS_FINAL-DMBE3 = ( IS_BSAS-DMBE3 * -1 ).
ELSEIF IS_BSAS-SHKZG = 'S'.
IS_FINAL-DMBTR = IS_BSAS-DMBTR .
IS_FINAL-WRBTR = IS_BSAS-WRBTR .
IS_FINAL-DMBE2 = IS_BSAS-DMBE2 .
IS_FINAL-DMBE3 = IS_BSAS-DMBE3 .
ENDIF.
APPEND IS_FINAL TO IT_FINAL.
CLEAR : IS_FINAL,IS_BSAS,T001,SKAT.
ENDLOOP.
ENDIF.
IF IT_BSIK[] IS NOT INITIAL.
LOOP AT IT_BSIK INTO IS_BSIK.
IS_FINAL-BUKRS = IS_BSIK-BUKRS.
IS_FINAL-HKONT = IS_BSIK-HKONT.
IS_FINAL-FYEAR = P_KEY.
IS_FINAL-WAERS_DC = IS_BSIK-WAERS.
IS_FINAL-HWAE2 = BKPF-HWAE2.
IS_FINAL-HWAE3 = BKPF-HWAE3.
SELECT SINGLE WAERS KTOPL FROM T001 INTO (T001-WAERS,T001-KTOPL)
WHERE BUKRS = IS_BSIK-BUKRS.
IF SY-SUBRC = 0.
IS_FINAL-WAERS_LC = T001-WAERS.
SELECT SINGLE TXT50 FROM SKAT
INTO SKAT-TXT50
WHERE KTOPL = T001-KTOPL
AND SPRAS = SY-LANGU
AND SAKNR = IS_BSIK-HKONT.
IF SY-SUBRC = 0.
IS_FINAL-SKAT = SKAT-TXT50.
ENDIF.
ENDIF.
IF IS_BSIK-SHKZG = 'H'.
IS_FINAL-DMBTR = ( IS_BSIK-DMBTR * -1 ).
IS_FINAL-WRBTR = ( IS_BSIK-WRBTR * -1 ).
IS_FINAL-DMBE2 = ( IS_BSIK-DMBE2 * -1 ).
IS_FINAL-DMBE3 = ( IS_BSIK-DMBE3 * -1 ).
ELSEIF IS_BSIK-SHKZG = 'S'.
IS_FINAL-DMBTR = IS_BSIK-DMBTR .
IS_FINAL-WRBTR = IS_BSIK-WRBTR .
IS_FINAL-DMBE2 = IS_BSIK-DMBE2 .
IS_FINAL-DMBE3 = IS_BSIK-DMBE3 .
ENDIF.
APPEND IS_FINAL TO IT_FINAL.
CLEAR : IS_FINAL,IS_BSIK,T001,SKAT.
ENDLOOP.
ENDIF.
IF IT_BSAK[] IS NOT INITIAL.
LOOP AT IT_BSAK INTO IS_BSAK.
IS_FINAL-BUKRS = IS_BSAK-BUKRS.
IS_FINAL-HKONT = IS_BSAK-HKONT.
IS_FINAL-FYEAR = P_KEY.
IS_FINAL-WAERS_DC = IS_BSAK-WAERS.
IS_FINAL-HWAE2 = BKPF-HWAE2.
IS_FINAL-HWAE3 = BKPF-HWAE3.
SELECT SINGLE WAERS KTOPL FROM T001 INTO (T001-WAERS,T001-KTOPL)
WHERE BUKRS = IS_BSAK-BUKRS.
IF SY-SUBRC = 0.
IS_FINAL-WAERS_LC = T001-WAERS.
SELECT SINGLE TXT50 FROM SKAT
INTO SKAT-TXT50
WHERE KTOPL = T001-KTOPL
AND SPRAS = SY-LANGU
AND SAKNR = IS_BSAK-HKONT.
IF SY-SUBRC = 0.
IS_FINAL-SKAT = SKAT-TXT50.
ENDIF.
ENDIF.
IF IS_BSAK-SHKZG = 'H'.
IS_FINAL-DMBTR = ( IS_BSAK-DMBTR * -1 ).
IS_FINAL-WRBTR = ( IS_BSAK-WRBTR * -1 ).
IS_FINAL-DMBE2 = ( IS_BSAK-DMBE2 * -1 ).
IS_FINAL-DMBE3 = ( IS_BSAK-DMBE3 * -1 ).
ELSEIF IS_BSAK-SHKZG = 'S'.
IS_FINAL-DMBTR = IS_BSAK-DMBTR .
IS_FINAL-WRBTR = IS_BSAK-WRBTR .
IS_FINAL-DMBE2 = IS_BSAK-DMBE2 .
IS_FINAL-DMBE3 = IS_BSAK-DMBE3 .
ENDIF.
APPEND IS_FINAL TO IT_FINAL.
CLEAR : IS_FINAL,IS_BSAK,T001,SKAT.
ENDLOOP.
ENDIF.
IF IT_BSID[] IS NOT INITIAL.
LOOP AT IT_BSID INTO IS_BSID.
IS_FINAL-BUKRS = IS_BSID-BUKRS.
IS_FINAL-HKONT = IS_BSID-HKONT.
IS_FINAL-FYEAR = P_KEY.
IS_FINAL-WAERS_DC = IS_BSID-WAERS.
IS_FINAL-HWAE2 = BKPF-HWAE2.
IS_FINAL-HWAE3 = BKPF-HWAE3.
SELECT SINGLE WAERS KTOPL FROM T001 INTO (T001-WAERS,T001-KTOPL)
WHERE BUKRS = IS_BSID-BUKRS.
IF SY-SUBRC = 0.
IS_FINAL-WAERS_LC = T001-WAERS.
SELECT SINGLE TXT50 FROM SKAT
INTO SKAT-TXT50
WHERE KTOPL = T001-KTOPL
AND SPRAS = SY-LANGU
AND SAKNR = IS_BSID-HKONT.
IF SY-SUBRC = 0.
IS_FINAL-SKAT = SKAT-TXT50.
ENDIF.
ENDIF.
IF IS_BSID-SHKZG = 'H'.
IS_FINAL-DMBTR = ( IS_BSID-DMBTR * -1 ).
IS_FINAL-WRBTR = ( IS_BSID-WRBTR * -1 ).
IS_FINAL-DMBE2 = ( IS_BSID-DMBE2 * -1 ).
IS_FINAL-DMBE3 = ( IS_BSID-DMBE3 * -1 ).
ELSEIF IS_BSID-SHKZG = 'S'.
IS_FINAL-DMBTR = IS_BSID-DMBTR .
IS_FINAL-WRBTR = IS_BSID-WRBTR .
IS_FINAL-DMBE2 = IS_BSID-DMBE2 .
IS_FINAL-DMBE3 = IS_BSID-DMBE3 .
ENDIF.
APPEND IS_FINAL TO IT_FINAL.
CLEAR : IS_FINAL,IS_BSID,T001,SKAT.
ENDLOOP.
ENDIF.
IF IT_BSAD[] IS NOT INITIAL.
LOOP AT IT_BSAD INTO IS_BSAD.
IS_FINAL-BUKRS = IS_BSAD-BUKRS.
IS_FINAL-HKONT = IS_BSAD-HKONT.
IS_FINAL-FYEAR = P_KEY.
IS_FINAL-WAERS_DC = IS_BSAD-WAERS.
IS_FINAL-HWAE2 = BKPF-HWAE2.
IS_FINAL-HWAE3 = BKPF-HWAE3.
SELECT SINGLE WAERS KTOPL FROM T001 INTO (T001-WAERS,T001-KTOPL)
WHERE BUKRS = IS_BSAD-BUKRS.
IF SY-SUBRC = 0.
IS_FINAL-WAERS_LC = T001-WAERS.
SELECT SINGLE TXT50 FROM SKAT
INTO SKAT-TXT50
WHERE KTOPL = T001-KTOPL
AND SPRAS = SY-LANGU
AND SAKNR = IS_BSAD-HKONT.
IF SY-SUBRC = 0.
IS_FINAL-SKAT = SKAT-TXT50.
ENDIF.
ENDIF.
IF IS_BSAD-SHKZG = 'H'.
IS_FINAL-DMBTR = ( IS_BSAD-DMBTR * -1 ).
IS_FINAL-WRBTR = ( IS_BSAD-WRBTR * -1 ).
IS_FINAL-DMBE2 = ( IS_BSAD-DMBE2 * -1 ).
IS_FINAL-DMBE3 = ( IS_BSAD-DMBE3 * -1 ).
ELSEIF IS_BSAD-SHKZG = 'S'.
IS_FINAL-DMBTR = IS_BSAD-DMBTR .
IS_FINAL-WRBTR = IS_BSAD-WRBTR .
IS_FINAL-DMBE2 = IS_BSAD-DMBE2 .
IS_FINAL-DMBE3 = IS_BSAD-DMBE3 .
ENDIF.
APPEND IS_FINAL TO IT_FINAL.
CLEAR : IS_FINAL,IS_BSAD,T001,SKAT.
ENDLOOP.
ENDIF.
IF IT_FINAL[] IS NOT INITIAL.
SORT IT_FINAL BY BUKRS HKONT WAERS_DC .
LOOP AT IT_FINAL INTO IS_FINAL.
COLLECT IS_FINAL INTO IT_FINAL2.
CLEAR : IS_FINAL.
ENDLOOP.
ENDIF.
ENDFORM. " PREPARE_FINAL_TABLE -->
***INCLUDE ZFI_GL_RECONCILIATION_ACCOUF02.
*----------------------------------------------------------------------*
*&---------------------------------------------------------------------*
*& Form PREPARE_FINAL_TABLE
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- nbsp="" p2="" span="" text="">
*----------------------------------------------------------------------*
FORM PREPARE_FINAL_TABLE .
SELECT SINGLE * FROM BKPF WHERE BUKRS = P_BUKRS.
IF IT_BSIS_NON_BS[] IS NOT INITIAL.
LOOP AT IT_BSIS_NON_BS INTO IS_BSIS_NON_BS.
IS_FINAL-BUKRS = IS_BSIS_NON_BS-BUKRS.
IS_FINAL-HKONT = IS_BSIS_NON_BS-HKONT.
IS_FINAL-FYEAR = P_KEY.
IS_FINAL-WAERS_DC = IS_BSIS_NON_BS-WAERS.
IS_FINAL-HWAE2 = BKPF-HWAE2.
IS_FINAL-HWAE3 = BKPF-HWAE3.
SELECT SINGLE WAERS KTOPL FROM T001 INTO (T001-WAERS,T001-KTOPL)
WHERE BUKRS = IS_BSIS_NON_BS-BUKRS.
IF SY-SUBRC = 0.
IS_FINAL-WAERS_LC = T001-WAERS.
SELECT SINGLE TXT50 FROM SKAT
INTO SKAT-TXT50
WHERE KTOPL = T001-KTOPL
AND SPRAS = SY-LANGU
AND SAKNR = IS_BSIS_NON_BS-HKONT.
IF SY-SUBRC = 0.
IS_FINAL-SKAT = SKAT-TXT50.
ENDIF.
ENDIF.
IF IS_BSIS_NON_BS-SHKZG = 'H'.
IS_FINAL-DMBTR = ( IS_BSIS_NON_BS-DMBTR * -1 ).
IS_FINAL-WRBTR = ( IS_BSIS_NON_BS-WRBTR * -1 ).
IS_FINAL-DMBE2 = ( IS_BSIS_NON_BS-DMBE2 * -1 ).
IS_FINAL-DMBE3 = ( IS_BSIS_NON_BS-DMBE3 * -1 ).
ELSEIF IS_BSIS_NON_BS-SHKZG = 'S'.
IS_FINAL-DMBTR = IS_BSIS_NON_BS-DMBTR .
IS_FINAL-WRBTR = IS_BSIS_NON_BS-WRBTR .
IS_FINAL-DMBE2 = IS_BSIS_NON_BS-DMBE2 .
IS_FINAL-DMBE3 = IS_BSIS_NON_BS-DMBE3 .
ENDIF .
APPEND IS_FINAL TO IT_FINAL.
CLEAR : IS_FINAL,IS_BSIS_NON_BS,T001,SKAT.
ENDLOOP.
ENDIF.
IF IT_BSIS[] IS NOT INITIAL.
LOOP AT IT_BSIS INTO IS_BSIS.
IS_FINAL-BUKRS = IS_BSIS-BUKRS.
IS_FINAL-HKONT = IS_BSIS-HKONT.
IS_FINAL-FYEAR = P_KEY.
IS_FINAL-WAERS_DC = IS_BSIS-WAERS.
IS_FINAL-HWAE2 = BKPF-HWAE2.
IS_FINAL-HWAE3 = BKPF-HWAE3.
SELECT SINGLE WAERS KTOPL FROM T001 INTO (T001-WAERS,T001-KTOPL)
WHERE BUKRS = IS_BSIS-BUKRS.
IF SY-SUBRC = 0.
IS_FINAL-WAERS_LC = T001-WAERS.
SELECT SINGLE TXT50 FROM SKAT
INTO SKAT-TXT50
WHERE KTOPL = T001-KTOPL
AND SPRAS = SY-LANGU
AND SAKNR = IS_BSIS-HKONT.
IF SY-SUBRC = 0.
IS_FINAL-SKAT = SKAT-TXT50.
ENDIF.
ENDIF.
IF IS_BSIS-SHKZG = 'H'.
IS_FINAL-DMBTR = ( IS_BSIS-DMBTR * -1 ).
IS_FINAL-WRBTR = ( IS_BSIS-WRBTR * -1 ).
IS_FINAL-DMBE2 = ( IS_BSIS-DMBE2 * -1 ).
IS_FINAL-DMBE3 = ( IS_BSIS-DMBE3 * -1 ).
ELSEIF IS_BSIS-SHKZG = 'S'.
IS_FINAL-DMBTR = IS_BSIS-DMBTR .
IS_FINAL-WRBTR = IS_BSIS-WRBTR .
IS_FINAL-DMBE2 = IS_BSIS-DMBE2 .
IS_FINAL-DMBE3 = IS_BSIS-DMBE3 .
ENDIF.
APPEND IS_FINAL TO IT_FINAL.
CLEAR : IS_FINAL,IS_BSIS,T001,SKAT.
ENDLOOP.
ENDIF.
IF IT_BSAS[] IS NOT INITIAL.
LOOP AT IT_BSAS INTO IS_BSAS.
IS_FINAL-BUKRS = IS_BSAS-BUKRS.
IS_FINAL-HKONT = IS_BSAS-HKONT.
IS_FINAL-FYEAR = P_KEY.
IS_FINAL-WAERS_DC = IS_BSAS-WAERS.
IS_FINAL-HWAE2 = BKPF-HWAE2.
IS_FINAL-HWAE3 = BKPF-HWAE3.
SELECT SINGLE WAERS KTOPL FROM T001 INTO (T001-WAERS,T001-KTOPL)
WHERE BUKRS = IS_BSAS-BUKRS.
IF SY-SUBRC = 0.
IS_FINAL-WAERS_LC = T001-WAERS.
SELECT SINGLE TXT50 FROM SKAT
INTO SKAT-TXT50
WHERE KTOPL = T001-KTOPL
AND SPRAS = SY-LANGU
AND SAKNR = IS_BSAS-HKONT.
IF SY-SUBRC = 0.
IS_FINAL-SKAT = SKAT-TXT50.
ENDIF.
ENDIF.
IF IS_BSAS-SHKZG = 'H'.
IS_FINAL-DMBTR = ( IS_BSAS-DMBTR * -1 ).
IS_FINAL-WRBTR = ( IS_BSAS-WRBTR * -1 ).
IS_FINAL-DMBE2 = ( IS_BSAS-DMBE2 * -1 ).
IS_FINAL-DMBE3 = ( IS_BSAS-DMBE3 * -1 ).
ELSEIF IS_BSAS-SHKZG = 'S'.
IS_FINAL-DMBTR = IS_BSAS-DMBTR .
IS_FINAL-WRBTR = IS_BSAS-WRBTR .
IS_FINAL-DMBE2 = IS_BSAS-DMBE2 .
IS_FINAL-DMBE3 = IS_BSAS-DMBE3 .
ENDIF.
APPEND IS_FINAL TO IT_FINAL.
CLEAR : IS_FINAL,IS_BSAS,T001,SKAT.
ENDLOOP.
ENDIF.
IF IT_BSIK[] IS NOT INITIAL.
LOOP AT IT_BSIK INTO IS_BSIK.
IS_FINAL-BUKRS = IS_BSIK-BUKRS.
IS_FINAL-HKONT = IS_BSIK-HKONT.
IS_FINAL-FYEAR = P_KEY.
IS_FINAL-WAERS_DC = IS_BSIK-WAERS.
IS_FINAL-HWAE2 = BKPF-HWAE2.
IS_FINAL-HWAE3 = BKPF-HWAE3.
SELECT SINGLE WAERS KTOPL FROM T001 INTO (T001-WAERS,T001-KTOPL)
WHERE BUKRS = IS_BSIK-BUKRS.
IF SY-SUBRC = 0.
IS_FINAL-WAERS_LC = T001-WAERS.
SELECT SINGLE TXT50 FROM SKAT
INTO SKAT-TXT50
WHERE KTOPL = T001-KTOPL
AND SPRAS = SY-LANGU
AND SAKNR = IS_BSIK-HKONT.
IF SY-SUBRC = 0.
IS_FINAL-SKAT = SKAT-TXT50.
ENDIF.
ENDIF.
IF IS_BSIK-SHKZG = 'H'.
IS_FINAL-DMBTR = ( IS_BSIK-DMBTR * -1 ).
IS_FINAL-WRBTR = ( IS_BSIK-WRBTR * -1 ).
IS_FINAL-DMBE2 = ( IS_BSIK-DMBE2 * -1 ).
IS_FINAL-DMBE3 = ( IS_BSIK-DMBE3 * -1 ).
ELSEIF IS_BSIK-SHKZG = 'S'.
IS_FINAL-DMBTR = IS_BSIK-DMBTR .
IS_FINAL-WRBTR = IS_BSIK-WRBTR .
IS_FINAL-DMBE2 = IS_BSIK-DMBE2 .
IS_FINAL-DMBE3 = IS_BSIK-DMBE3 .
ENDIF.
APPEND IS_FINAL TO IT_FINAL.
CLEAR : IS_FINAL,IS_BSIK,T001,SKAT.
ENDLOOP.
ENDIF.
IF IT_BSAK[] IS NOT INITIAL.
LOOP AT IT_BSAK INTO IS_BSAK.
IS_FINAL-BUKRS = IS_BSAK-BUKRS.
IS_FINAL-HKONT = IS_BSAK-HKONT.
IS_FINAL-FYEAR = P_KEY.
IS_FINAL-WAERS_DC = IS_BSAK-WAERS.
IS_FINAL-HWAE2 = BKPF-HWAE2.
IS_FINAL-HWAE3 = BKPF-HWAE3.
SELECT SINGLE WAERS KTOPL FROM T001 INTO (T001-WAERS,T001-KTOPL)
WHERE BUKRS = IS_BSAK-BUKRS.
IF SY-SUBRC = 0.
IS_FINAL-WAERS_LC = T001-WAERS.
SELECT SINGLE TXT50 FROM SKAT
INTO SKAT-TXT50
WHERE KTOPL = T001-KTOPL
AND SPRAS = SY-LANGU
AND SAKNR = IS_BSAK-HKONT.
IF SY-SUBRC = 0.
IS_FINAL-SKAT = SKAT-TXT50.
ENDIF.
ENDIF.
IF IS_BSAK-SHKZG = 'H'.
IS_FINAL-DMBTR = ( IS_BSAK-DMBTR * -1 ).
IS_FINAL-WRBTR = ( IS_BSAK-WRBTR * -1 ).
IS_FINAL-DMBE2 = ( IS_BSAK-DMBE2 * -1 ).
IS_FINAL-DMBE3 = ( IS_BSAK-DMBE3 * -1 ).
ELSEIF IS_BSAK-SHKZG = 'S'.
IS_FINAL-DMBTR = IS_BSAK-DMBTR .
IS_FINAL-WRBTR = IS_BSAK-WRBTR .
IS_FINAL-DMBE2 = IS_BSAK-DMBE2 .
IS_FINAL-DMBE3 = IS_BSAK-DMBE3 .
ENDIF.
APPEND IS_FINAL TO IT_FINAL.
CLEAR : IS_FINAL,IS_BSAK,T001,SKAT.
ENDLOOP.
ENDIF.
IF IT_BSID[] IS NOT INITIAL.
LOOP AT IT_BSID INTO IS_BSID.
IS_FINAL-BUKRS = IS_BSID-BUKRS.
IS_FINAL-HKONT = IS_BSID-HKONT.
IS_FINAL-FYEAR = P_KEY.
IS_FINAL-WAERS_DC = IS_BSID-WAERS.
IS_FINAL-HWAE2 = BKPF-HWAE2.
IS_FINAL-HWAE3 = BKPF-HWAE3.
SELECT SINGLE WAERS KTOPL FROM T001 INTO (T001-WAERS,T001-KTOPL)
WHERE BUKRS = IS_BSID-BUKRS.
IF SY-SUBRC = 0.
IS_FINAL-WAERS_LC = T001-WAERS.
SELECT SINGLE TXT50 FROM SKAT
INTO SKAT-TXT50
WHERE KTOPL = T001-KTOPL
AND SPRAS = SY-LANGU
AND SAKNR = IS_BSID-HKONT.
IF SY-SUBRC = 0.
IS_FINAL-SKAT = SKAT-TXT50.
ENDIF.
ENDIF.
IF IS_BSID-SHKZG = 'H'.
IS_FINAL-DMBTR = ( IS_BSID-DMBTR * -1 ).
IS_FINAL-WRBTR = ( IS_BSID-WRBTR * -1 ).
IS_FINAL-DMBE2 = ( IS_BSID-DMBE2 * -1 ).
IS_FINAL-DMBE3 = ( IS_BSID-DMBE3 * -1 ).
ELSEIF IS_BSID-SHKZG = 'S'.
IS_FINAL-DMBTR = IS_BSID-DMBTR .
IS_FINAL-WRBTR = IS_BSID-WRBTR .
IS_FINAL-DMBE2 = IS_BSID-DMBE2 .
IS_FINAL-DMBE3 = IS_BSID-DMBE3 .
ENDIF.
APPEND IS_FINAL TO IT_FINAL.
CLEAR : IS_FINAL,IS_BSID,T001,SKAT.
ENDLOOP.
ENDIF.
IF IT_BSAD[] IS NOT INITIAL.
LOOP AT IT_BSAD INTO IS_BSAD.
IS_FINAL-BUKRS = IS_BSAD-BUKRS.
IS_FINAL-HKONT = IS_BSAD-HKONT.
IS_FINAL-FYEAR = P_KEY.
IS_FINAL-WAERS_DC = IS_BSAD-WAERS.
IS_FINAL-HWAE2 = BKPF-HWAE2.
IS_FINAL-HWAE3 = BKPF-HWAE3.
SELECT SINGLE WAERS KTOPL FROM T001 INTO (T001-WAERS,T001-KTOPL)
WHERE BUKRS = IS_BSAD-BUKRS.
IF SY-SUBRC = 0.
IS_FINAL-WAERS_LC = T001-WAERS.
SELECT SINGLE TXT50 FROM SKAT
INTO SKAT-TXT50
WHERE KTOPL = T001-KTOPL
AND SPRAS = SY-LANGU
AND SAKNR = IS_BSAD-HKONT.
IF SY-SUBRC = 0.
IS_FINAL-SKAT = SKAT-TXT50.
ENDIF.
ENDIF.
IF IS_BSAD-SHKZG = 'H'.
IS_FINAL-DMBTR = ( IS_BSAD-DMBTR * -1 ).
IS_FINAL-WRBTR = ( IS_BSAD-WRBTR * -1 ).
IS_FINAL-DMBE2 = ( IS_BSAD-DMBE2 * -1 ).
IS_FINAL-DMBE3 = ( IS_BSAD-DMBE3 * -1 ).
ELSEIF IS_BSAD-SHKZG = 'S'.
IS_FINAL-DMBTR = IS_BSAD-DMBTR .
IS_FINAL-WRBTR = IS_BSAD-WRBTR .
IS_FINAL-DMBE2 = IS_BSAD-DMBE2 .
IS_FINAL-DMBE3 = IS_BSAD-DMBE3 .
ENDIF.
APPEND IS_FINAL TO IT_FINAL.
CLEAR : IS_FINAL,IS_BSAD,T001,SKAT.
ENDLOOP.
ENDIF.
IF IT_FINAL[] IS NOT INITIAL.
SORT IT_FINAL BY BUKRS HKONT WAERS_DC .
LOOP AT IT_FINAL INTO IS_FINAL.
COLLECT IS_FINAL INTO IT_FINAL2.
CLEAR : IS_FINAL.
ENDLOOP.
ENDIF.
ENDFORM. " PREPARE_FINAL_TABLE
*********************************************************************************
*----------------------------------------------------------------------*
***INCLUDE ZFI_GL_RECONCILIATION_ACCOUF03.
*----------------------------------------------------------------------*
*&---------------------------------------------------------------------*
*& Form DISPLAY
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- nbsp="" p2="" span="" text="">
*----------------------------------------------------------------------*
FORM DISPLAY .
IF NOT IT_FINAL[] IS INITIAL.
READ TABLE IT_FINAL2 INTO IS_FINAL INDEX 1.
* Get Balance Amount
IS_FINAL-BALANCE = IS_FINAL-WRBTR - P_DMBTR.
* Get Bank Account Number
SELECT BUKRS HKONT BANKN FROM T012K INTO TABLE IT_T012K
WHERE BUKRS = P_BUKRS
AND HKONT = P_HKONT.
IF IT_T012K IS NOT INITIAL.
READ TABLE IT_T012K INTO IS_T012K INDEX 1.
IS_FINAL-BANKN = IS_T012K-BANKN.
ENDIF.
*******************************
IF SY-SUBRC = 0.
****
CALL FUNCTION 'SSF_FUNCTION_MODULE_NAME'
EXPORTING
FORMNAME = 'ZFI_RECONCILIATION'
IMPORTING
FM_NAME = FM_NAME.
CALL FUNCTION 'SSF_GET_DEVICE_TYPE'
EXPORTING
I_LANGUAGE = V_LANGUAGE
I_APPLICATION = 'SAPDEFAULT'
IMPORTING
E_DEVTYPE = V_E_DEVTYPE.
OUTPUT_OPTIONS-TDPRINTER = V_E_DEVTYPE.
***********popup of the smartform printer blocking logic
OUTPUT_OPTIONS-TDNOPREV = 'X'.
CONTROL_PARAMETERS-NO_DIALOG = 'X'.
OUTPUT_OPTIONS-TDDEST = 'LP01'.
CONTROL_PARAMETERS-GETOTF = 'X'.
CALL FUNCTION FM_NAME
EXPORTING
* ARCHIVE_INDEX =
* ARCHIVE_INDEX_TAB =
* ARCHIVE_PARAMETERS =
CONTROL_PARAMETERS = CONTROL_PARAMETERS
* MAIL_APPL_OBJ =
* MAIL_RECIPIENT =
* MAIL_SENDER =
OUTPUT_OPTIONS = OUTPUT_OPTIONS
USER_SETTINGS = 'X'
BUDAT = P_KEY
BUKRS = IS_FINAL-BUKRS
GJAHR = IS_FINAL-FYEAR
HKONT = IS_FINAL-HKONT
SKAT = IS_FINAL-SKAT
P_DMBTR = P_DMBTR
BANKN = IS_FINAL-BANKN
WRBTR = IS_FINAL-WRBTR
WAERS = IS_FINAL-WAERS_DC
* dmbtr = is_final-dmbtr
* waers_lc = is_final-waers_lc
* dmbe2 = is_final-dmbe2
* hwae2 = is_final-hwae2
* dmbe3 = is_final-dmbe3
* hwae3 = is_final-hwae3
BANLANCE = IS_FINAL-BALANCE
IMPORTING
DOCUMENT_OUTPUT_INFO = DOCUMENT_OUTPUT_INFO
JOB_OUTPUT_INFO = JOB_OUTPUT_INFO
JOB_OUTPUT_OPTIONS = JOB_OUTPUT_OPTIONS
EXCEPTIONS
FORMATTING_ERROR = 1
INTERNAL_ERROR = 2
SEND_ERROR = 3
USER_CANCELED = 4
* OTHERS = 5
.
IF SY-SUBRC <> 0.
* Implement suitable error handling here
ENDIF.
CALL FUNCTION 'CONVERT_OTF'
EXPORTING
FORMAT = 'PDF'
IMPORTING
BIN_FILESIZE = V_BIN_FILESIZE
* BIN_FILE = V_BIN_FILE
TABLES
OTF = JOB_OUTPUT_INFO-OTFDATA
LINES = T_PDF_TAB
EXCEPTIONS
ERR_MAX_LINEWIDTH = 1
ERR_FORMAT = 2
ERR_CONV_NOT_POSSIBLE = 3
ERR_BAD_OTF = 4
OTHERS = 5.
IF SY-SUBRC <> 0.
****
***** MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
***** WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
****
ENDIF.
LOOP AT T_PDF_TAB INTO LS_PDF.
ASSIGN LS_PDF TO CASTING.
CONCATENATE LV_CONTENT INTO LV_CONTENT IN BYTE MODE.
ENDLOOP.
****
CALL SCREEN 0100.
****
ENDIF.
ENDIF.
ENDFORM. " DISPLAY -->
***INCLUDE ZFI_GL_RECONCILIATION_ACCOUF03.
*----------------------------------------------------------------------*
*&---------------------------------------------------------------------*
*& Form DISPLAY
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- nbsp="" p2="" span="" text="">
*----------------------------------------------------------------------*
FORM DISPLAY .
IF NOT IT_FINAL[] IS INITIAL.
READ TABLE IT_FINAL2 INTO IS_FINAL INDEX 1.
* Get Balance Amount
IS_FINAL-BALANCE = IS_FINAL-WRBTR - P_DMBTR.
* Get Bank Account Number
SELECT BUKRS HKONT BANKN FROM T012K INTO TABLE IT_T012K
WHERE BUKRS = P_BUKRS
AND HKONT = P_HKONT.
IF IT_T012K IS NOT INITIAL.
READ TABLE IT_T012K INTO IS_T012K INDEX 1.
IS_FINAL-BANKN = IS_T012K-BANKN.
ENDIF.
*******************************
IF SY-SUBRC = 0.
****
CALL FUNCTION 'SSF_FUNCTION_MODULE_NAME'
EXPORTING
FORMNAME = 'ZFI_RECONCILIATION'
IMPORTING
FM_NAME = FM_NAME.
CALL FUNCTION 'SSF_GET_DEVICE_TYPE'
EXPORTING
I_LANGUAGE = V_LANGUAGE
I_APPLICATION = 'SAPDEFAULT'
IMPORTING
E_DEVTYPE = V_E_DEVTYPE.
OUTPUT_OPTIONS-TDPRINTER = V_E_DEVTYPE.
***********popup of the smartform printer blocking logic
OUTPUT_OPTIONS-TDNOPREV = 'X'.
CONTROL_PARAMETERS-NO_DIALOG = 'X'.
OUTPUT_OPTIONS-TDDEST = 'LP01'.
CONTROL_PARAMETERS-GETOTF = 'X'.
CALL FUNCTION FM_NAME
EXPORTING
* ARCHIVE_INDEX =
* ARCHIVE_INDEX_TAB =
* ARCHIVE_PARAMETERS =
CONTROL_PARAMETERS = CONTROL_PARAMETERS
* MAIL_APPL_OBJ =
* MAIL_RECIPIENT =
* MAIL_SENDER =
OUTPUT_OPTIONS = OUTPUT_OPTIONS
USER_SETTINGS = 'X'
BUDAT = P_KEY
BUKRS = IS_FINAL-BUKRS
GJAHR = IS_FINAL-FYEAR
HKONT = IS_FINAL-HKONT
SKAT = IS_FINAL-SKAT
P_DMBTR = P_DMBTR
BANKN = IS_FINAL-BANKN
WRBTR = IS_FINAL-WRBTR
WAERS = IS_FINAL-WAERS_DC
* dmbtr = is_final-dmbtr
* waers_lc = is_final-waers_lc
* dmbe2 = is_final-dmbe2
* hwae2 = is_final-hwae2
* dmbe3 = is_final-dmbe3
* hwae3 = is_final-hwae3
BANLANCE = IS_FINAL-BALANCE
IMPORTING
DOCUMENT_OUTPUT_INFO = DOCUMENT_OUTPUT_INFO
JOB_OUTPUT_INFO = JOB_OUTPUT_INFO
JOB_OUTPUT_OPTIONS = JOB_OUTPUT_OPTIONS
EXCEPTIONS
FORMATTING_ERROR = 1
INTERNAL_ERROR = 2
SEND_ERROR = 3
USER_CANCELED = 4
* OTHERS = 5
.
IF SY-SUBRC <> 0.
* Implement suitable error handling here
ENDIF.
CALL FUNCTION 'CONVERT_OTF'
EXPORTING
FORMAT = 'PDF'
IMPORTING
BIN_FILESIZE = V_BIN_FILESIZE
* BIN_FILE = V_BIN_FILE
TABLES
OTF = JOB_OUTPUT_INFO-OTFDATA
LINES = T_PDF_TAB
EXCEPTIONS
ERR_MAX_LINEWIDTH = 1
ERR_FORMAT = 2
ERR_CONV_NOT_POSSIBLE = 3
ERR_BAD_OTF = 4
OTHERS = 5.
IF SY-SUBRC <> 0.
****
***** MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
***** WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
****
ENDIF.
LOOP AT T_PDF_TAB INTO LS_PDF.
ASSIGN LS_PDF TO
CONCATENATE LV_CONTENT
ENDLOOP.
****
CALL SCREEN 0100.
****
ENDIF.
ENDIF.
ENDFORM. " DISPLAY
*********************************************************************************
*----------------------------------------------------------------------*
***INCLUDE ZFI_GL_RECONCILIATION_ACCOUO01.
*----------------------------------------------------------------------*
****
*****&---------------------------------------------------------------------*
*****& Module STATUS_0100 OUTPUT
*****&---------------------------------------------------------------------*
***** text
*****----------------------------------------------------------------------*
****
MODULE STATUS_0100 OUTPUT.
SET PF-STATUS 'HTML'.
SET TITLEBAR 'HTML'.
****
****
CREATE OBJECT CONTAINER
EXPORTING
CONTAINER_NAME = 'CUST_CONT'.
CREATE OBJECT CONTROL
EXPORTING
PARENT = CONTAINER.
* Convert xstring to binary table to pass to the LOAD_DATA method
CALL FUNCTION 'SCMS_XSTRING_TO_BINARY'
EXPORTING
BUFFER = LV_CONTENT
TABLES
BINARY_TAB = LT_DATA.
* Load the HTML
CALL METHOD CONTROL->LOAD_DATA(
EXPORTING
TYPE = 'application'
SUBTYPE = 'pdf'
IMPORTING
ASSIGNED_URL = LV_URL
CHANGING
DATA_TABLE = LT_DATA
EXCEPTIONS
DP_INVALID_PARAMETER = 1
DP_ERROR_GENERAL = 2
CNTL_ERROR = 3
OTHERS = 4 ).
* Show it
CALL METHOD CONTROL->SHOW_URL(
URL = LV_URL
IN_PLACE = 'X' ).
ENDMODULE. " STATUS_0100 OUTPUT
***INCLUDE ZFI_GL_RECONCILIATION_ACCOUO01.
*----------------------------------------------------------------------*
****
*****&---------------------------------------------------------------------*
*****& Module STATUS_0100 OUTPUT
*****&---------------------------------------------------------------------*
***** text
*****----------------------------------------------------------------------*
****
MODULE STATUS_0100 OUTPUT.
SET PF-STATUS 'HTML'.
SET TITLEBAR 'HTML'.
****
****
CREATE OBJECT CONTAINER
EXPORTING
CONTAINER_NAME = 'CUST_CONT'.
CREATE OBJECT CONTROL
EXPORTING
PARENT = CONTAINER.
* Convert xstring to binary table to pass to the LOAD_DATA method
CALL FUNCTION 'SCMS_XSTRING_TO_BINARY'
EXPORTING
BUFFER = LV_CONTENT
TABLES
BINARY_TAB = LT_DATA.
* Load the HTML
CALL METHOD CONTROL->LOAD_DATA(
EXPORTING
TYPE = 'application'
SUBTYPE = 'pdf'
IMPORTING
ASSIGNED_URL = LV_URL
CHANGING
DATA_TABLE = LT_DATA
EXCEPTIONS
DP_INVALID_PARAMETER = 1
DP_ERROR_GENERAL = 2
CNTL_ERROR = 3
OTHERS = 4 ).
* Show it
CALL METHOD CONTROL->SHOW_URL(
URL = LV_URL
IN_PLACE = 'X' ).
ENDMODULE. " STATUS_0100 OUTPUT
*********************************************************************************
*----------------------------------------------------------------------*
***INCLUDE ZFI_GL_RECONCILIATION_ACCOUI01.
*----------------------------------------------------------------------*
*&---------------------------------------------------------------------*
*& Module USER_COMMAND_0100 INPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE USER_COMMAND_0100 INPUT.
DATA : FCODE LIKE SY-UCOMM,
FCODE_CANCEL LIKE SY-TCODE VALUE 'CANC',
RETURN1 TYPE BAPIRETURN1.
FCODE = SY-UCOMM.
CASE FCODE.
WHEN 'STOP' OR 'CANCEL' OR 'EXIT' OR 'BACK'.
CLEAR SY-UCOMM.
****
LEAVE TO SCREEN 0.
* CALL TRANSACTION 'SBWP' AND SKIP FIRST SCREEN.
****
WHEN FCODE_CANCEL.
IF NOT CONTROL IS INITIAL.
CALL METHOD CONTROL->FREE.
IF SY-SUBRC <> 0.
RAISE CNTL_ERROR.
ENDIF.
FREE CONTROL.
ENDIF.
IF NOT CONTAINER IS INITIAL.
CALL METHOD CONTAINER->FREE.
IF SY-SUBRC <> 0.
RAISE CNTL_ERROR.
ENDIF.
FREE CONTAINER.
ENDIF.
LEAVE TO SCREEN 0.
WHEN 'SUBMIT'.
* Get Object Key Company Code, Date and Time
IS_FINAL-ZWFDATE = SY-DATUM.
IS_FINAL-ZWFTIME = SY-UZEIT.
IS_FINAL-DMBTR = P_DMBTR.
IS_FINAL-POST_DATE = P_KEY.
IS_FINAL-PERIOD = P_KEY+4(2).
CONCATENATE IS_FINAL-BUKRS IS_FINAL-ZWFDATE IS_FINAL-ZWFTIME INTO IS_FINAL-WF_KEY.
SHIFT IS_FINAL-WF_KEY LEFT DELETING LEADING SPACE.
WFKEY1 = IS_FINAL-WF_KEY.
SET PARAMETER ID 'WFKEY1' FIELD WFKEY1.
CLEAR WFKEY1.
IF IS_FINAL-BALANCE = '0'.
* Insert values in the table ZFI_GL_RECONCILE
IT_ZFI_GL_RECONCILE-WF_KEY = IS_FINAL-WF_KEY.
IT_ZFI_GL_RECONCILE-ZWFDATE = IS_FINAL-ZWFDATE.
IT_ZFI_GL_RECONCILE-POST_DATE = IS_FINAL-POST_DATE.
IT_ZFI_GL_RECONCILE-PERIOD = IS_FINAL-PERIOD.
IT_ZFI_GL_RECONCILE-WAERS = IS_FINAL-WAERS_DC.
IT_ZFI_GL_RECONCILE-ZWFTIME = IS_FINAL-ZWFTIME.
IT_ZFI_GL_RECONCILE-BUKRS = IS_FINAL-BUKRS.
IT_ZFI_GL_RECONCILE-FYEAR = IS_FINAL-FYEAR.
IT_ZFI_GL_RECONCILE-GLACC = IS_FINAL-HKONT.
IT_ZFI_GL_RECONCILE-SKAT = IS_FINAL-SKAT.
IT_ZFI_GL_RECONCILE-BANK_BALANCE = IS_FINAL-DMBTR.
IT_ZFI_GL_RECONCILE-BANKN = IS_FINAL-BANKN.
IT_ZFI_GL_RECONCILE-BOOK_BALANCE = IS_FINAL-WRBTR.
IT_ZFI_GL_RECONCILE-BALANCE = IS_FINAL-BALANCE.
INSERT ZFI_GL_RECONCILE FROM IT_ZFI_GL_RECONCILE.
ZFI_GL_RECONCILE-WF_KEY = IS_FINAL-WF_KEY.
ZFI_GL_RECONCILE-ZWFDATE = IS_FINAL-ZWFDATE.
ZFI_GL_RECONCILE-ZWFTIME = IS_FINAL-ZWFTIME.
ZFI_GL_RECONCILE-BUKRS = IS_FINAL-BUKRS.
ZFI_GL_RECONCILE-FYEAR = IS_FINAL-FYEAR.
ZFI_GL_RECONCILE-POST_DATE = IS_FINAL-POST_DATE.
ZFI_GL_RECONCILE-PERIOD = IS_FINAL-PERIOD.
ZFI_GL_RECONCILE-WAERS = IS_FINAL-WAERS_DC.
ZFI_GL_RECONCILE-GLACC = IS_FINAL-HKONT.
ZFI_GL_RECONCILE-SKAT = IS_FINAL-SKAT.
ZFI_GL_RECONCILE-BANK_BALANCE = IS_FINAL-DMBTR.
ZFI_GL_RECONCILE-BANKN = IS_FINAL-BANKN.
ZFI_GL_RECONCILE-BOOK_BALANCE = IS_FINAL-WRBTR.
ZFI_GL_RECONCILE-BALANCE = IS_FINAL-BALANCE.
LV_OBJ_KEY = IS_FINAL-WF_KEY.
CLEAR: IS_FINAL. ", IT_ZFI_GL_RECONCILE.
* Triggering Workflow when Zero Balance
CALL FUNCTION 'SAP_WAPI_CREATE_EVENT'
EXPORTING
OBJECT_TYPE = 'ZFI_GL_REC'
OBJECT_KEY = LV_OBJ_KEY
EVENT = 'Submitted'
COMMIT_WORK = 'X'.
LEAVE TO SCREEN 0.
ELSE.
* Insert values in the table ZFI_GL_MEMO
IS_FINAL-INITIATOR = SY-UNAME.
IT_ZFI_GL_MEMO-WF_KEY = IS_FINAL-WF_KEY.
IT_ZFI_GL_MEMO-ZWFDATE = IS_FINAL-ZWFDATE.
IT_ZFI_GL_MEMO-POST_DATE = IS_FINAL-POST_DATE.
IT_ZFI_GL_MEMO-PERIOD = IS_FINAL-PERIOD.
IT_ZFI_GL_MEMO-WAERS = IS_FINAL-WAERS_DC.
IT_ZFI_GL_MEMO-DISPW = IS_FINAL-WAERS_DC.
IT_ZFI_GL_MEMO-ZWFTIME = IS_FINAL-ZWFTIME.
IT_ZFI_GL_MEMO-BUKRS = IS_FINAL-BUKRS.
IT_ZFI_GL_MEMO-FYEAR = IS_FINAL-FYEAR.
IT_ZFI_GL_MEMO-GLACC = IS_FINAL-HKONT.
IT_ZFI_GL_MEMO-SKAT = IS_FINAL-SKAT.
IT_ZFI_GL_MEMO-BANK_BALANCE = IS_FINAL-DMBTR.
IT_ZFI_GL_MEMO-BANKN = IS_FINAL-BANKN.
IT_ZFI_GL_MEMO-BOOK_BALANCE = IS_FINAL-WRBTR.
IT_ZFI_GL_MEMO-BALANCE = IS_FINAL-BALANCE.
IT_ZFI_GL_MEMO-INITIATOR = IS_FINAL-INITIATOR.
INSERT ZFI_GL_MEMO FROM IT_ZFI_GL_MEMO.
ZFI_GL_MEMO-WF_KEY = IS_FINAL-WF_KEY.
ZFI_GL_MEMO-ZWFDATE = IS_FINAL-ZWFDATE.
ZFI_GL_MEMO-POST_DATE = IS_FINAL-POST_DATE.
ZFI_GL_MEMO-PERIOD = IS_FINAL-PERIOD.
ZFI_GL_MEMO-WAERS = IS_FINAL-WAERS_DC.
ZFI_GL_MEMO-DISPW = IS_FINAL-WAERS_DC.
ZFI_GL_MEMO-ZWFTIME = IS_FINAL-ZWFTIME.
ZFI_GL_MEMO-BUKRS = IS_FINAL-BUKRS.
ZFI_GL_MEMO-FYEAR = IS_FINAL-FYEAR.
ZFI_GL_MEMO-GLACC = IS_FINAL-HKONT.
ZFI_GL_MEMO-SKAT = IS_FINAL-SKAT.
ZFI_GL_MEMO-BANK_BALANCE = IS_FINAL-DMBTR.
ZFI_GL_MEMO-BANKN = IS_FINAL-BANKN.
ZFI_GL_MEMO-BOOK_BALANCE = IS_FINAL-WRBTR.
ZFI_GL_MEMO-BALANCE = IS_FINAL-BALANCE.
CALL SCREEN 0200.
LEAVE TO SCREEN 0.
ENDIF.
WHEN OTHERS.
CALL METHOD CL_GUI_CFW=>DISPATCH.
IF SY-SUBRC <> 0.
RAISE CNTL_ERROR.
ENDIF.
ENDCASE.
CLEAR FCODE.
ENDMODULE. " USER_COMMAND_0100 INPUT
***INCLUDE ZFI_GL_RECONCILIATION_ACCOUI01.
*----------------------------------------------------------------------*
*&---------------------------------------------------------------------*
*& Module USER_COMMAND_0100 INPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE USER_COMMAND_0100 INPUT.
DATA : FCODE LIKE SY-UCOMM,
FCODE_CANCEL LIKE SY-TCODE VALUE 'CANC',
RETURN1 TYPE BAPIRETURN1.
FCODE = SY-UCOMM.
CASE FCODE.
WHEN 'STOP' OR 'CANCEL' OR 'EXIT' OR 'BACK'.
CLEAR SY-UCOMM.
****
LEAVE TO SCREEN 0.
* CALL TRANSACTION 'SBWP' AND SKIP FIRST SCREEN.
****
WHEN FCODE_CANCEL.
IF NOT CONTROL IS INITIAL.
CALL METHOD CONTROL->FREE.
IF SY-SUBRC <> 0.
RAISE CNTL_ERROR.
ENDIF.
FREE CONTROL.
ENDIF.
IF NOT CONTAINER IS INITIAL.
CALL METHOD CONTAINER->FREE.
IF SY-SUBRC <> 0.
RAISE CNTL_ERROR.
ENDIF.
FREE CONTAINER.
ENDIF.
LEAVE TO SCREEN 0.
WHEN 'SUBMIT'.
* Get Object Key Company Code, Date and Time
IS_FINAL-ZWFDATE = SY-DATUM.
IS_FINAL-ZWFTIME = SY-UZEIT.
IS_FINAL-DMBTR = P_DMBTR.
IS_FINAL-POST_DATE = P_KEY.
IS_FINAL-PERIOD = P_KEY+4(2).
CONCATENATE IS_FINAL-BUKRS IS_FINAL-ZWFDATE IS_FINAL-ZWFTIME INTO IS_FINAL-WF_KEY.
SHIFT IS_FINAL-WF_KEY LEFT DELETING LEADING SPACE.
WFKEY1 = IS_FINAL-WF_KEY.
SET PARAMETER ID 'WFKEY1' FIELD WFKEY1.
CLEAR WFKEY1.
IF IS_FINAL-BALANCE = '0'.
* Insert values in the table ZFI_GL_RECONCILE
IT_ZFI_GL_RECONCILE-WF_KEY = IS_FINAL-WF_KEY.
IT_ZFI_GL_RECONCILE-ZWFDATE = IS_FINAL-ZWFDATE.
IT_ZFI_GL_RECONCILE-POST_DATE = IS_FINAL-POST_DATE.
IT_ZFI_GL_RECONCILE-PERIOD = IS_FINAL-PERIOD.
IT_ZFI_GL_RECONCILE-WAERS = IS_FINAL-WAERS_DC.
IT_ZFI_GL_RECONCILE-ZWFTIME = IS_FINAL-ZWFTIME.
IT_ZFI_GL_RECONCILE-BUKRS = IS_FINAL-BUKRS.
IT_ZFI_GL_RECONCILE-FYEAR = IS_FINAL-FYEAR.
IT_ZFI_GL_RECONCILE-GLACC = IS_FINAL-HKONT.
IT_ZFI_GL_RECONCILE-SKAT = IS_FINAL-SKAT.
IT_ZFI_GL_RECONCILE-BANK_BALANCE = IS_FINAL-DMBTR.
IT_ZFI_GL_RECONCILE-BANKN = IS_FINAL-BANKN.
IT_ZFI_GL_RECONCILE-BOOK_BALANCE = IS_FINAL-WRBTR.
IT_ZFI_GL_RECONCILE-BALANCE = IS_FINAL-BALANCE.
INSERT ZFI_GL_RECONCILE FROM IT_ZFI_GL_RECONCILE.
ZFI_GL_RECONCILE-WF_KEY = IS_FINAL-WF_KEY.
ZFI_GL_RECONCILE-ZWFDATE = IS_FINAL-ZWFDATE.
ZFI_GL_RECONCILE-ZWFTIME = IS_FINAL-ZWFTIME.
ZFI_GL_RECONCILE-BUKRS = IS_FINAL-BUKRS.
ZFI_GL_RECONCILE-FYEAR = IS_FINAL-FYEAR.
ZFI_GL_RECONCILE-POST_DATE = IS_FINAL-POST_DATE.
ZFI_GL_RECONCILE-PERIOD = IS_FINAL-PERIOD.
ZFI_GL_RECONCILE-WAERS = IS_FINAL-WAERS_DC.
ZFI_GL_RECONCILE-GLACC = IS_FINAL-HKONT.
ZFI_GL_RECONCILE-SKAT = IS_FINAL-SKAT.
ZFI_GL_RECONCILE-BANK_BALANCE = IS_FINAL-DMBTR.
ZFI_GL_RECONCILE-BANKN = IS_FINAL-BANKN.
ZFI_GL_RECONCILE-BOOK_BALANCE = IS_FINAL-WRBTR.
ZFI_GL_RECONCILE-BALANCE = IS_FINAL-BALANCE.
LV_OBJ_KEY = IS_FINAL-WF_KEY.
CLEAR: IS_FINAL. ", IT_ZFI_GL_RECONCILE.
* Triggering Workflow when Zero Balance
CALL FUNCTION 'SAP_WAPI_CREATE_EVENT'
EXPORTING
OBJECT_TYPE = 'ZFI_GL_REC'
OBJECT_KEY = LV_OBJ_KEY
EVENT = 'Submitted'
COMMIT_WORK = 'X'.
LEAVE TO SCREEN 0.
ELSE.
* Insert values in the table ZFI_GL_MEMO
IS_FINAL-INITIATOR = SY-UNAME.
IT_ZFI_GL_MEMO-WF_KEY = IS_FINAL-WF_KEY.
IT_ZFI_GL_MEMO-ZWFDATE = IS_FINAL-ZWFDATE.
IT_ZFI_GL_MEMO-POST_DATE = IS_FINAL-POST_DATE.
IT_ZFI_GL_MEMO-PERIOD = IS_FINAL-PERIOD.
IT_ZFI_GL_MEMO-WAERS = IS_FINAL-WAERS_DC.
IT_ZFI_GL_MEMO-DISPW = IS_FINAL-WAERS_DC.
IT_ZFI_GL_MEMO-ZWFTIME = IS_FINAL-ZWFTIME.
IT_ZFI_GL_MEMO-BUKRS = IS_FINAL-BUKRS.
IT_ZFI_GL_MEMO-FYEAR = IS_FINAL-FYEAR.
IT_ZFI_GL_MEMO-GLACC = IS_FINAL-HKONT.
IT_ZFI_GL_MEMO-SKAT = IS_FINAL-SKAT.
IT_ZFI_GL_MEMO-BANK_BALANCE = IS_FINAL-DMBTR.
IT_ZFI_GL_MEMO-BANKN = IS_FINAL-BANKN.
IT_ZFI_GL_MEMO-BOOK_BALANCE = IS_FINAL-WRBTR.
IT_ZFI_GL_MEMO-BALANCE = IS_FINAL-BALANCE.
IT_ZFI_GL_MEMO-INITIATOR = IS_FINAL-INITIATOR.
INSERT ZFI_GL_MEMO FROM IT_ZFI_GL_MEMO.
ZFI_GL_MEMO-WF_KEY = IS_FINAL-WF_KEY.
ZFI_GL_MEMO-ZWFDATE = IS_FINAL-ZWFDATE.
ZFI_GL_MEMO-POST_DATE = IS_FINAL-POST_DATE.
ZFI_GL_MEMO-PERIOD = IS_FINAL-PERIOD.
ZFI_GL_MEMO-WAERS = IS_FINAL-WAERS_DC.
ZFI_GL_MEMO-DISPW = IS_FINAL-WAERS_DC.
ZFI_GL_MEMO-ZWFTIME = IS_FINAL-ZWFTIME.
ZFI_GL_MEMO-BUKRS = IS_FINAL-BUKRS.
ZFI_GL_MEMO-FYEAR = IS_FINAL-FYEAR.
ZFI_GL_MEMO-GLACC = IS_FINAL-HKONT.
ZFI_GL_MEMO-SKAT = IS_FINAL-SKAT.
ZFI_GL_MEMO-BANK_BALANCE = IS_FINAL-DMBTR.
ZFI_GL_MEMO-BANKN = IS_FINAL-BANKN.
ZFI_GL_MEMO-BOOK_BALANCE = IS_FINAL-WRBTR.
ZFI_GL_MEMO-BALANCE = IS_FINAL-BALANCE.
CALL SCREEN 0200.
LEAVE TO SCREEN 0.
ENDIF.
WHEN OTHERS.
CALL METHOD CL_GUI_CFW=>DISPATCH.
IF SY-SUBRC <> 0.
RAISE CNTL_ERROR.
ENDIF.
ENDCASE.
CLEAR FCODE.
ENDMODULE. " USER_COMMAND_0100 INPUT
*********************************************************************************
*----------------------------------------------------------------------*
***INCLUDE ZFI_GL_RECONCILIATION_ACCOUO02.
*----------------------------------------------------------------------*
* Sub Screen for Create Memo Record
*****&---------------------------------------------------------------------*
*****& Module STATUS_0200 OUTPUT
*****&---------------------------------------------------------------------*
***** text
*****----------------------------------------------------------------------*
MODULE STATUS_0200 OUTPUT.
SET PF-STATUS 'MEMO'.
SET TITLEBAR 'MEMO'.
ENDMODULE. "status_0200 OUTPUT.
***INCLUDE ZFI_GL_RECONCILIATION_ACCOUO02.
*----------------------------------------------------------------------*
* Sub Screen for Create Memo Record
*****&---------------------------------------------------------------------*
*****& Module STATUS_0200 OUTPUT
*****&---------------------------------------------------------------------*
***** text
*****----------------------------------------------------------------------*
MODULE STATUS_0200 OUTPUT.
SET PF-STATUS 'MEMO'.
SET TITLEBAR 'MEMO'.
ENDMODULE. "status_0200 OUTPUT.
*********************************************************************************
*----------------------------------------------------------------------*
***INCLUDE ZFI_GL_RECONCILIATION_ACCOUI02.
*----------------------------------------------------------------------*
*&---------------------------------------------------------------------*
*& Module USER_COMMAND_0200 INPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE USER_COMMAND_0200 INPUT.
* DATA : fcode LIKE sy-ucomm,
* fcode_cancel LIKE sy-tcode VALUE 'CANC',
* return1 TYPE bapireturn1.
FCODE = SY-UCOMM.
CASE FCODE.
WHEN 'STOP' OR 'CANCEL' OR 'EXIT' OR 'BACK'.
CLEAR SY-UCOMM.
****
LEAVE TO SCREEN 0.
LEAVE PROGRAM.
* CALL TRANSACTION 'SBWP' AND SKIP FIRST SCREEN.
****
WHEN FCODE_CANCEL.
IF NOT CONTROL IS INITIAL.
CALL METHOD CONTROL->FREE.
IF SY-SUBRC <> 0.
RAISE CNTL_ERROR.
ENDIF.
FREE CONTROL.
ENDIF.
IF NOT CONTAINER IS INITIAL.
CALL METHOD CONTAINER->FREE.
IF SY-SUBRC <> 0.
RAISE CNTL_ERROR.
ENDIF.
FREE CONTAINER.
ENDIF.
LEAVE TO SCREEN 0.
LEAVE PROGRAM.
WHEN 'MEMO'.
* Update Values in the table ZFI_GL_MEMO
GET PARAMETER ID 'WFKEY1' FIELD WFKEY1.
SELECT SINGLE * FROM ZFI_GL_MEMO INTO IT_ZFI_GL_MEMO
WHERE WF_KEY = WFKEY1.
IF SY-SUBRC = 0.
IS_ZFI_GL_MEMO-WRSHB = IT_ZFI_GL_MEMO-BALANCE.
IS_ZFI_GL_MEMO-DISPW = IT_ZFI_GL_MEMO-DISPW.
*
ENDIF.
UPDATE ZFI_GL_MEMO SET
BUKRS = IS_ZFI_GL_MEMO-BUKRS
DSART = IS_ZFI_GL_MEMO-DSART
DATUM = IS_ZFI_GL_MEMO-DATUM
AVDAT = IS_ZFI_GL_MEMO-AVDAT
DISKB = IS_ZFI_GL_MEMO-DISKB
WRSHB = IS_ZFI_GL_MEMO-WRSHB "Amount
DISPW = IS_ZFI_GL_MEMO-DISPW "Currency
* DMSHB = IS_ZFI_GL_MEMO-DMSHB
* GSBER = IS_ZFI_GL_MEMO-GSBER
REFER = IS_ZFI_GL_MEMO-REFER
BNKKO = IS_ZFI_GL_MEMO-BNKKO
GRUPP = IS_ZFI_GL_MEMO-GRUPP
* WAERS = IS_ZFI_GL_MEMO-WAERS
WHERE WF_KEY = WFKEY1.
* Call BDC for Create Memo Record in FF63.
*****************************************
PERFORM BDC_FF63.
PERFORM CALL_TRNC.
LEAVE TO SCREEN 0.
*****************************************
WHEN OTHERS.
CALL METHOD CL_GUI_CFW=>DISPATCH.
IF SY-SUBRC <> 0.
RAISE CNTL_ERROR.
ENDIF.
ENDCASE.
CLEAR FCODE.
ENDMODULE. " USER_COMMAND_0200 INPUT
***INCLUDE ZFI_GL_RECONCILIATION_ACCOUI02.
*----------------------------------------------------------------------*
*&---------------------------------------------------------------------*
*& Module USER_COMMAND_0200 INPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE USER_COMMAND_0200 INPUT.
* DATA : fcode LIKE sy-ucomm,
* fcode_cancel LIKE sy-tcode VALUE 'CANC',
* return1 TYPE bapireturn1.
FCODE = SY-UCOMM.
CASE FCODE.
WHEN 'STOP' OR 'CANCEL' OR 'EXIT' OR 'BACK'.
CLEAR SY-UCOMM.
****
LEAVE TO SCREEN 0.
LEAVE PROGRAM.
* CALL TRANSACTION 'SBWP' AND SKIP FIRST SCREEN.
****
WHEN FCODE_CANCEL.
IF NOT CONTROL IS INITIAL.
CALL METHOD CONTROL->FREE.
IF SY-SUBRC <> 0.
RAISE CNTL_ERROR.
ENDIF.
FREE CONTROL.
ENDIF.
IF NOT CONTAINER IS INITIAL.
CALL METHOD CONTAINER->FREE.
IF SY-SUBRC <> 0.
RAISE CNTL_ERROR.
ENDIF.
FREE CONTAINER.
ENDIF.
LEAVE TO SCREEN 0.
LEAVE PROGRAM.
WHEN 'MEMO'.
* Update Values in the table ZFI_GL_MEMO
GET PARAMETER ID 'WFKEY1' FIELD WFKEY1.
SELECT SINGLE * FROM ZFI_GL_MEMO INTO IT_ZFI_GL_MEMO
WHERE WF_KEY = WFKEY1.
IF SY-SUBRC = 0.
IS_ZFI_GL_MEMO-WRSHB = IT_ZFI_GL_MEMO-BALANCE.
IS_ZFI_GL_MEMO-DISPW = IT_ZFI_GL_MEMO-DISPW.
*
ENDIF.
UPDATE ZFI_GL_MEMO SET
BUKRS = IS_ZFI_GL_MEMO-BUKRS
DSART = IS_ZFI_GL_MEMO-DSART
DATUM = IS_ZFI_GL_MEMO-DATUM
AVDAT = IS_ZFI_GL_MEMO-AVDAT
DISKB = IS_ZFI_GL_MEMO-DISKB
WRSHB = IS_ZFI_GL_MEMO-WRSHB "Amount
DISPW = IS_ZFI_GL_MEMO-DISPW "Currency
* DMSHB = IS_ZFI_GL_MEMO-DMSHB
* GSBER = IS_ZFI_GL_MEMO-GSBER
REFER = IS_ZFI_GL_MEMO-REFER
BNKKO = IS_ZFI_GL_MEMO-BNKKO
GRUPP = IS_ZFI_GL_MEMO-GRUPP
* WAERS = IS_ZFI_GL_MEMO-WAERS
WHERE WF_KEY = WFKEY1.
* Call BDC for Create Memo Record in FF63.
*****************************************
PERFORM BDC_FF63.
PERFORM CALL_TRNC.
LEAVE TO SCREEN 0.
*****************************************
WHEN OTHERS.
CALL METHOD CL_GUI_CFW=>DISPATCH.
IF SY-SUBRC <> 0.
RAISE CNTL_ERROR.
ENDIF.
ENDCASE.
CLEAR FCODE.
ENDMODULE. " USER_COMMAND_0200 INPUT
*********************************************************************************
*----------------------------------------------------------------------*
***INCLUDE ZFI_GL_RECONCILIATION_ACCOUF06.
*----------------------------------------------------------------------*
*&---------------------------------------------------------------------*
*& Form BDC_FF63
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- nbsp="" p2="" span="" text="">
*----------------------------------------------------------------------*
FORM BDC_FF63 .
* First Screen Company Code and Planning type Update
PERFORM F_FILL_BDC USING 'X' 'SAPMF40E' '0100'.
PERFORM F_FILL_BDC USING ' ' 'BDC_CURSOR' 'FDES-BUKRS'.
* PERFORM F_FILL_BDC USING ' ' 'BDC_OKCODE' '=ONE'.
PERFORM F_FILL_BDC USING ' ' 'FDES-BUKRS' IS_ZFI_GL_MEMO-BUKRS.
PERFORM F_FILL_BDC USING ' ' 'FDES-DSART' IS_ZFI_GL_MEMO-DSART.
* Second Screen Update
PERFORM F_FILL_BDC USING 'X' 'SAPMF40E' '0101'.
* Date Convert to External
CALL FUNCTION 'CONVERT_DATE_TO_EXTERNAL'
EXPORTING
DATE_INTERNAL = IS_ZFI_GL_MEMO-DATUM
IMPORTING
DATE_EXTERNAL = LS_DATUM
EXCEPTIONS
DATE_INTERNAL_IS_INVALID = 1
OTHERS = 2.
*********
CALL FUNCTION 'CONVERT_DATE_TO_EXTERNAL'
EXPORTING
DATE_INTERNAL = IS_ZFI_GL_MEMO-AVDAT
IMPORTING
DATE_EXTERNAL = LS_AVDAT
EXCEPTIONS
DATE_INTERNAL_IS_INVALID = 1
OTHERS = 2.
*********
LS_DISPW = IS_ZFI_GL_MEMO-DISPW.
LS_WRSHB = IS_ZFI_GL_MEMO-WRSHB.
CONDENSE LS_WRSHB.
*Convert Amount to Char
WRITE IS_ZFI_GL_MEMO-WRSHB TO LS_WRSHB.
CONDENSE LS_WRSHB.
*********
PERFORM F_FILL_BDC USING ' ' 'FDES-DATUM' LS_DATUM.
PERFORM F_FILL_BDC USING ' ' 'FDES-AVDAT' LS_AVDAT.
PERFORM F_FILL_BDC USING ' ' 'RF40L-DISKB' IS_ZFI_GL_MEMO-DISKB.
PERFORM F_FILL_BDC USING ' ' 'FDES-WRSHB' LS_WRSHB. "Amount
PERFORM F_FILL_BDC USING ' ' 'FDES-DISPW' IS_ZFI_GL_MEMO-DISPW."CurrenY
PERFORM F_FILL_BDC USING ' ' 'FDES-REFER' IS_ZFI_GL_MEMO-REFER.
PERFORM F_FILL_BDC USING ' ' 'FDES-SGTXT' IS_ZFI_GL_MEMO-SGTXT.
PERFORM F_FILL_BDC USING ' ' 'BDC_OKCODE' '=UPD'.
ENDFORM. " BDC_FF63 -->
*----------------------------------------------------------------------*
FORM BDC_FF63 .
* First Screen Company Code and Planning type Update
PERFORM F_FILL_BDC USING 'X' 'SAPMF40E' '0100'.
PERFORM F_FILL_BDC USING ' ' 'BDC_CURSOR' 'FDES-BUKRS'.
* PERFORM F_FILL_BDC USING ' ' 'BDC_OKCODE' '=ONE'.
PERFORM F_FILL_BDC USING ' ' 'FDES-BUKRS' IS_ZFI_GL_MEMO-BUKRS.
PERFORM F_FILL_BDC USING ' ' 'FDES-DSART' IS_ZFI_GL_MEMO-DSART.
* Second Screen Update
PERFORM F_FILL_BDC USING 'X' 'SAPMF40E' '0101'.
* Date Convert to External
CALL FUNCTION 'CONVERT_DATE_TO_EXTERNAL'
EXPORTING
DATE_INTERNAL = IS_ZFI_GL_MEMO-DATUM
IMPORTING
DATE_EXTERNAL = LS_DATUM
EXCEPTIONS
DATE_INTERNAL_IS_INVALID = 1
OTHERS = 2.
*********
CALL FUNCTION 'CONVERT_DATE_TO_EXTERNAL'
EXPORTING
DATE_INTERNAL = IS_ZFI_GL_MEMO-AVDAT
IMPORTING
DATE_EXTERNAL = LS_AVDAT
EXCEPTIONS
DATE_INTERNAL_IS_INVALID = 1
OTHERS = 2.
*********
LS_DISPW = IS_ZFI_GL_MEMO-DISPW.
LS_WRSHB = IS_ZFI_GL_MEMO-WRSHB.
CONDENSE LS_WRSHB.
*Convert Amount to Char
WRITE IS_ZFI_GL_MEMO-WRSHB TO LS_WRSHB.
CONDENSE LS_WRSHB.
*********
PERFORM F_FILL_BDC USING ' ' 'FDES-DATUM' LS_DATUM.
PERFORM F_FILL_BDC USING ' ' 'FDES-AVDAT' LS_AVDAT.
PERFORM F_FILL_BDC USING ' ' 'RF40L-DISKB' IS_ZFI_GL_MEMO-DISKB.
PERFORM F_FILL_BDC USING ' ' 'FDES-WRSHB' LS_WRSHB. "Amount
PERFORM F_FILL_BDC USING ' ' 'FDES-DISPW' IS_ZFI_GL_MEMO-DISPW."CurrenY
PERFORM F_FILL_BDC USING ' ' 'FDES-REFER' IS_ZFI_GL_MEMO-REFER.
PERFORM F_FILL_BDC USING ' ' 'FDES-SGTXT' IS_ZFI_GL_MEMO-SGTXT.
PERFORM F_FILL_BDC USING ' ' 'BDC_OKCODE' '=UPD'.
ENDFORM. " BDC_FF63
*********************************************************************************
*----------------------------------------------------------------------*
***INCLUDE ZFI_GL_RECONCILIATION_ACCOUF07.
*----------------------------------------------------------------------*
*&---------------------------------------------------------------------*
*& Form F_FILL_BDC
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_0006 text
* -->P_0007 text
* -->P_0008 text
*----------------------------------------------------------------------*
FORM F_FILL_BDC USING LOC_FLAG
LOC_NAME
LOC_VALUE.
CLEAR IT_BDCDATA.
IF LOC_FLAG EQ SPACE.
IT_BDCDATA-FNAM = LOC_NAME.
IT_BDCDATA-FVAL = LOC_VALUE.
CONDENSE IT_BDCDATA-FVAL.
ELSE.
IT_BDCDATA-PROGRAM = LOC_NAME.
IT_BDCDATA-DYNPRO = LOC_VALUE.
CONDENSE IT_BDCDATA-FVAL.
IT_BDCDATA-DYNBEGIN = 'X'.
ENDIF.
APPEND IT_BDCDATA.
ENDFORM. " F_FILL_BDC
*********************************************************************************
*----------------------------------------------------------------------*
***INCLUDE ZFI_GL_RECONCILIATION_ACCOUF08.
*----------------------------------------------------------------------*
*&---------------------------------------------------------------------*
*& Form CALL_TRNC
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- nbsp="" p2="" span="" text="">
*----------------------------------------------------------------------*
FORM CALL_TRNC .
REFRESH:
IT_MESSAGES.
CLEAR:
IT_MESSAGES,
WF_ERROR_TEXT,
WG_ERROR_FLAG.
CALL TRANSACTION 'FF63' USING IT_BDCDATA MODE 'N'
UPDATE 'S' MESSAGES INTO IT_MESSAGES.
IF SY-SUBRC NE 0.
IF SY-BATCH NE SPACE.
WRITE: / 'Transaction:', 'FF63'.
ENDIF.
PERFORM GET_MESSTAB USING WF_ERROR_TEXT.
IF SY-BATCH NE SPACE.
WRITE:/ WF_ERROR_TEXT.
ULINE.
ELSE.
MESSAGE S000(ZWF1) WITH WF_ERROR_TEXT.
ENDIF.
WG_ERROR_FLAG = 'Y'.
ELSE.
WRITE:/ 'Memo Record has been created'.
IS_ZFI_GL_MEMO-WF_KEY = IT_ZFI_GL_MEMO-WF_KEY.
* Triggering Workflow when Zero Balance
LV_OBJ_KEY = IS_ZFI_GL_MEMO-WF_KEY.
* Memo Record Update in Table ZFI_GL_MEMO
READ TABLE IT_MESSAGES INTO IS_MESSAGES INDEX 1.
IS_ZFI_GL_MEMO-IDENR = IS_MESSAGES-MSGV1.
UPDATE ZFI_GL_MEMO SET
IDENR = IS_ZFI_GL_MEMO-IDENR
WHERE WF_KEY = IS_ZFI_GL_MEMO-WF_KEY.
* Trigger Workflow After Memo Record Created
CALL FUNCTION 'SAP_WAPI_CREATE_EVENT'
EXPORTING
OBJECT_TYPE = 'ZFI_GL_REC'
OBJECT_KEY = LV_OBJ_KEY
EVENT = 'APPR_MEMO'
COMMIT_WORK = 'X'.
LEAVE TO SCREEN 0.
ENDIF.
ENDFORM. " CALL_TRNC -->
*----------------------------------------------------------------------*
FORM CALL_TRNC .
REFRESH:
IT_MESSAGES.
CLEAR:
IT_MESSAGES,
WF_ERROR_TEXT,
WG_ERROR_FLAG.
CALL TRANSACTION 'FF63' USING IT_BDCDATA MODE 'N'
UPDATE 'S' MESSAGES INTO IT_MESSAGES.
IF SY-SUBRC NE 0.
IF SY-BATCH NE SPACE.
WRITE: / 'Transaction:', 'FF63'.
ENDIF.
PERFORM GET_MESSTAB USING WF_ERROR_TEXT.
IF SY-BATCH NE SPACE.
WRITE:/ WF_ERROR_TEXT.
ULINE.
ELSE.
MESSAGE S000(ZWF1) WITH WF_ERROR_TEXT.
ENDIF.
WG_ERROR_FLAG = 'Y'.
ELSE.
WRITE:/ 'Memo Record has been created'.
IS_ZFI_GL_MEMO-WF_KEY = IT_ZFI_GL_MEMO-WF_KEY.
* Triggering Workflow when Zero Balance
LV_OBJ_KEY = IS_ZFI_GL_MEMO-WF_KEY.
* Memo Record Update in Table ZFI_GL_MEMO
READ TABLE IT_MESSAGES INTO IS_MESSAGES INDEX 1.
IS_ZFI_GL_MEMO-IDENR = IS_MESSAGES-MSGV1.
UPDATE ZFI_GL_MEMO SET
IDENR = IS_ZFI_GL_MEMO-IDENR
WHERE WF_KEY = IS_ZFI_GL_MEMO-WF_KEY.
* Trigger Workflow After Memo Record Created
CALL FUNCTION 'SAP_WAPI_CREATE_EVENT'
EXPORTING
OBJECT_TYPE = 'ZFI_GL_REC'
OBJECT_KEY = LV_OBJ_KEY
EVENT = 'APPR_MEMO'
COMMIT_WORK = 'X'.
LEAVE TO SCREEN 0.
ENDIF.
ENDFORM. " CALL_TRNC
*********************************************************************************
*----------------------------------------------------------------------*
***INCLUDE ZFI_GL_RECONCILIATION_ACCOUF09.
*----------------------------------------------------------------------*
*&---------------------------------------------------------------------*
*& Form GET_MESSTAB
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_WF_ERROR_TEXT text
*----------------------------------------------------------------------*
FORM GET_MESSTAB USING P_WF_ERROR_TEXT.
DATA: LOC_ERRMSG(80) TYPE C.
CLEAR wg_error_flag.
LOOP AT IT_MESSAGES.
CHECK IT_MESSAGES-MSGTYP EQ 'E' OR
IT_MESSAGES-MSGTYP EQ 'A'.
IF IT_MESSAGES-MSGID EQ 'F5' AND
IT_MESSAGES-MSGNR EQ '308' AND
IT_MESSAGES-MSGTYP EQ 'E'.
wg_error_flag = 'Y'.
ENDIF.
CALL FUNCTION 'FORMAT_MESSAGE'
EXPORTING
ID = IT_MESSAGES-MSGID
LANG = 'EN'
NO = IT_MESSAGES-MSGNR
V1 = IT_MESSAGES-MSGV1
V2 = IT_MESSAGES-MSGV2
V3 = IT_MESSAGES-MSGV3
V4 = IT_MESSAGES-MSGV4
IMPORTING
MSG = LOC_ERRMSG
EXCEPTIONS
NOT_FOUND = 1
OTHERS = 2.
IF SY-SUBRC EQ 0.
MOVE LOC_ERRMSG TO P_WF_ERROR_TEXT.
ENDIF.
EXIT.
ENDLOOP.
IF P_WF_ERROR_TEXT EQ SPACE.
CALL FUNCTION 'FORMAT_MESSAGE'
EXPORTING
ID = SY-MSGID
LANG = 'EN'
NO = SY-MSGNO
V1 = SY-MSGV1
V2 = SY-MSGV2
V3 = SY-MSGV3
V4 = SY-MSGV4
IMPORTING
MSG = LOC_ERRMSG
EXCEPTIONS
NOT_FOUND = 1
OTHERS = 2.
IF SY-SUBRC EQ 0.
MOVE LOC_ERRMSG TO P_WF_ERROR_TEXT.
ENDIF.
ENDIF.
ENDFORM. " GET_MESSTAB
*********************************************************************************
*----------------------------------------------------------------------*
***INCLUDE ZFI_GL_RECONCILIATION_ACCOUI03.
*----------------------------------------------------------------------*
*&---------------------------------------------------------------------*
*& Module F4_DATUM INPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE F4_DATUM INPUT.
CALL FUNCTION 'F4_DATE'
EXPORTING
DATE_FOR_FIRST_MONTH = IS_ZFI_GL_MEMO-DATUM
* DISPLAY = ' '
* FACTORY_CALENDAR_ID = ' '
* GREGORIAN_CALENDAR_FLAG = ' '
* HOLIDAY_CALENDAR_ID = ' '
* PROGNAME_FOR_FIRST_MONTH = ' '
IMPORTING
SELECT_DATE = IS_ZFI_GL_MEMO-DATUM
* SELECT_WEEK =
* SELECT_WEEK_BEGIN =
* SELECT_WEEK_END =
EXCEPTIONS
* CALENDAR_BUFFER_NOT_LOADABLE = 1
* DATE_AFTER_RANGE = 2
* DATE_BEFORE_RANGE = 3
DATE_INVALID = 4
* FACTORY_CALENDAR_NOT_FOUND = 5
* HOLIDAY_CALENDAR_NOT_FOUND = 6
* PARAMETER_CONFLICT = 7
* OTHERS = 8
.
IF SY-SUBRC <> 0.
* Implement suitable error handling here
ENDIF.
ENDMODULE. " F4_DATUM INPUT
*----------------------------------------------------------------------*
***INCLUDE ZFI_GL_RECONCILIATION_ACCOUI03.
*----------------------------------------------------------------------*
*&---------------------------------------------------------------------*
*& Module F4_AVDAT INPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE F4_AVDAT INPUT.
CALL FUNCTION 'F4_DATE'
EXPORTING
DATE_FOR_FIRST_MONTH = IS_ZFI_GL_MEMO-AVDAT
* DISPLAY = ' '
* FACTORY_CALENDAR_ID = ' '
* GREGORIAN_CALENDAR_FLAG = ' '
* HOLIDAY_CALENDAR_ID = ' '
* PROGNAME_FOR_FIRST_MONTH = ' '
IMPORTING
SELECT_DATE = IS_ZFI_GL_MEMO-AVDAT
* SELECT_WEEK =
* SELECT_WEEK_BEGIN =
* SELECT_WEEK_END =
EXCEPTIONS
* CALENDAR_BUFFER_NOT_LOADABLE = 1
* DATE_AFTER_RANGE = 2
* DATE_BEFORE_RANGE = 3
DATE_INVALID = 4
* FACTORY_CALENDAR_NOT_FOUND = 5
* HOLIDAY_CALENDAR_NOT_FOUND = 6
* PARAMETER_CONFLICT = 7
* OTHERS = 8
.
IF SY-SUBRC <> 0.
* Implement suitable error handling here
ENDIF.
ENDMODULE. " F4_AVDAT INPUT
*----------------------------------------------------------------------*
***INCLUDE ZFI_GL_RECONCILIATION_ACCOUI03.
*----------------------------------------------------------------------*
*&---------------------------------------------------------------------*
*& Module VALUE_DSART INPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE VALUE_DSART INPUT.
CALL FUNCTION 'F4IF_FIELD_VALUE_REQUEST'
EXPORTING
TABNAME = 'FDES'
FIELDNAME = 'DSART'
DYNPPROG = PROGNAME
DYNPNR = DYNNUM
DYNPROFIELD = 'IS_ZFI_GL_MEMO-DSART'.
ENDMODULE. " VALUE_DSART INPUT
*----------------------------------------------------------------------*
***INCLUDE ZFI_GL_RECONCILIATION_ACCOUI03.
*----------------------------------------------------------------------*
*&---------------------------------------------------------------------*
*& Module VALUE_GRUPP INPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE VALUE_GRUPP INPUT.
CALL FUNCTION 'F4IF_FIELD_VALUE_REQUEST'
EXPORTING
TABNAME = 'FDES'
FIELDNAME = 'GRUPP'
DYNPPROG = PROGNAME
DYNPNR = DYNNUM
DYNPROFIELD = 'IS_ZFI_GL_MEMO-GRUPP'.
ENDMODULE. " VALUE_GRUPP INPUT
*----------------------------------------------------------------------*
***INCLUDE ZFI_GL_RECONCILIATION_ACCOUI03.
*----------------------------------------------------------------------*
*&---------------------------------------------------------------------*
*& Module VALUE_DISKB INPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE VALUE_DISKB INPUT.
GET PARAMETER ID 'WFKEY1' FIELD WFKEY1.
SELECT SINGLE * FROM ZFI_GL_MEMO INTO IT_ZFI_GL_MEMO
WHERE WF_KEY = WFKEY1.
IF SY-SUBRC = 0.
IS_ZFI_GL_MEMO-BUKRS = IT_ZFI_GL_MEMO-BUKRS.
CALL FUNCTION 'CASH_FORECAST_DISKB_F4_HELP'
EXPORTING
I_BUKRS = IS_ZFI_GL_MEMO-BUKRS
I_XDISPLAY_ONLY = ' '
IMPORTING
E_DISKB = IS_ZFI_GL_MEMO-DISKB.
ENDIF.
ENDMODULE. " VALUE_DISKB INPUT
*********************************************************************************
*----------------------------------------------------------------------*
***INCLUDE ZFI_GL_RECONCILIATION_ACCOUO03.
*----------------------------------------------------------------------*
*&---------------------------------------------------------------------*
*& Module INIT OUTPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE INIT OUTPUT.
PROGNAME = SY-REPID.
DYNNUM = SY-DYNNR.
CLEAR: FIELD_VALUE, DYNPRO_VALUES.
FIELD_VALUE-FIELDNAME = 'IS_ZFI_GL_MEMO-DSART'.
FIELD_VALUE-FIELDNAME = 'IS_ZFI_GL_MEMO-GRUPP'.
FIELD_VALUE-FIELDNAME = 'IS_ZFI_GL_MEMO-DISPW'."Currency
* FIELD_VALUE-FIELDNAME = 'IS_ZFI_GL_MEMO-WAERS'.
FIELD_VALUE-FIELDNAME = 'IS_ZFI_GL_MEMO-WRSHB'."Amount
* FIELD_VALUE-FIELDNAME = 'IS_ZFI_GL_MEMO-GSBER'.
APPEND FIELD_VALUE TO DYNPRO_VALUES.
ENDMODULE. " INIT OUTPUT
*********************************************************************************
*----------------------------------------------------------------------*
***INCLUDE ZFI_GL_RECONCILIATION_ACCOUO04.
*----------------------------------------------------------------------*
*&---------------------------------------------------------------------*
*& Module VALUE_WRSHB OUTPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE VALUE_WRSHB OUTPUT.
GET PARAMETER ID 'WFKEY1' FIELD WFKEY1.
SELECT SINGLE * FROM ZFI_GL_MEMO INTO IT_ZFI_GL_MEMO
WHERE WF_KEY = WFKEY1.
IF SY-SUBRC = 0.
IS_ZFI_GL_MEMO-WRSHB = IT_ZFI_GL_MEMO-BALANCE.
* IS_ZFI_GL_MEMO-DISPW = IT_ZFI_GL_MEMO-DISPW.
***
* REFRESH DYNFIELDS.
* DYNFIELDS-FIELDNAME = 'IS_ZFI_GL_MEMO-DISPW'.
* DYNFIELDS-FLDVALUE = IS_ZFI_GL_MEMO-DISPW.
DYNFIELDS-FIELDNAME = 'IS_ZFI_GL_MEMO-WRSHB'.
DYNFIELDS-FIELDVALUE = IS_ZFI_GL_MEMO-WRSHB.
APPEND DYNFIELDS.
* UPDATE THE DYNPRO VALUES.
CALL FUNCTION 'DYNP_VALUES_UPDATE'
EXPORTING
DYNAME = PROGNAME
DYNUMB = DYNNUM
TABLES
DYNPFIELDS = DYNFIELDS
EXCEPTIONS
OTHERS = 8.
ENDIF.
* IS_ZFI_GL_MEMO-WRSHB = IS_ZFI_GL_MEMO-WRSHB.
ENDMODULE. " VALUE_WRSHB OUTPUT
*----------------------------------------------------------------------*
***INCLUDE ZFI_GL_RECONCILIATION_ACCOUO04.
*----------------------------------------------------------------------*
*&---------------------------------------------------------------------*
*& Module VALUE_DISPW OUTPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE VALUE_DISPW OUTPUT.
GET PARAMETER ID 'WFKEY1' FIELD WFKEY1.
SELECT SINGLE * FROM ZFI_GL_MEMO INTO IT_ZFI_GL_MEMO
WHERE WF_KEY = WFKEY1.
IF SY-SUBRC = 0.
* IS_ZFI_GL_MEMO-WRSHB = IT_ZFI_GL_MEMO-BALANCE.
IS_ZFI_GL_MEMO-DISPW = IT_ZFI_GL_MEMO-DISPW.
***
* REFRESH DYNFIELDS.
DYNFIELDS-FIELDNAME = 'IS_ZFI_GL_MEMO-DISPW'.
DYNFIELDS-FIELDVALUE = IS_ZFI_GL_MEMO-DISPW.
* DYNFIELDS-FIELDNAME = 'IS_ZFI_GL_MEMO-WRSHB'.
* DYNFIELDS-FLDVALUE = IS_ZFI_GL_MEMO-WRSHB.
* APPEND DYNFIELDS.
* UPDATE THE DYNPRO VALUES.
CALL FUNCTION 'DYNP_VALUES_UPDATE'
EXPORTING
DYNAME = PROGNAME
DYNUMB = DYNNUM
TABLES
DYNPFIELDS = DYNFIELDS
EXCEPTIONS
OTHERS = 8.
* IS_ZFI_GL_MEMO-DISPW = IS_ZFI_GL_MEMO-DISPW.
ENDIF.
ENDMODULE. " VALUE_DISPW OUTPUT
*********************************************************************************
Input Screen:
*********************************************************************************
After Execute Output Screen:
*********************************************************************************
Differences in Bank 0,00: - Balance is ZERO
Once Submit then Workflow Approval will be started in this Scenario:
Once Submit then Workflow Approval will be started in this Scenario:
*********************************************************************************
*********************************************************************************
Differences in Bank
100.000.000,00-: - Balance is Varies
Once Submit then Below Input Screen Will be displayed in this
Scenario:
*********************************************************************************Create Memo Input Screen
*********************************************************************************
Background FF63 Creates Memo Record by BDC program.
*********************************************************************************
And then Workflow also will be triggered for Approval
*********************************************************************************
Business Object: ZFI_GL_REC
Object type ZFI_GL_REC FI GL
Bank Reconciliation For The Month
Interfaces
Key
fields
ZFI_GL_RECONCILE.ZWF_KEY
Workflow Key
Attributes
Methods
ZFI_GL_RECONCILE.ExistenceCheck
Check existence of object
ZFI_GL_RECONCILE.Display
Display object
ZFI_GL_RECONCILE.Method_Reconciliation_1 FI GL
Bank Reconciliation For The Month
ZFI_GL_RECONCILE.Method_Reconciliation_2
Method_Reconciliation_2
ZFI_GL_RECONCILE.Initiatoremail
Initiator Email MEMO
ZFI_GL_RECONCILE.Method_MemoRecord_1
FI GL Memo Record
ZFI_GL_RECONCILE.Method_MemoRecord_2
Method_MemoRecord_2
Events
ZFI_GL_RECONCILE.Submitted
Submitted
ZFI_GL_RECONCILE.APPR_MEMO
APPROVE MEMO
Key field ZWF_KEY
Object type ZFI_GL_REC
Release 740
Status implemented
Name Workflow Key
Description Workflow Key
Reference table ZFI_GL_RECONCILE
Reference field WF_KEY
*********************************************************************
***** Implementation of object type *****
INCLUDE .
BEGIN_DATA OBJECT. " Do not change.. DATA is generated
* only private members may be inserted into structure private
DATA:
" begin of private,
" to declare private attributes remove comments and
" insert private attributes here ...
" end of private,
BEGIN OF KEY,
ZWF_KEY LIKE ZFI_GL_RECONCILE-WF_KEY,
END OF KEY.
END_DATA OBJECT. " Do not change.. DATA is generated
TABLES: ZFI_GL_RECONCILE,
ZFI_GL_MEMO.
*
*****************************************************************************************************
* Method for Get Initiator Email ID
BEGIN_METHOD INITIATOREMAIL CHANGING CONTAINER.
DATA: USRID TYPE SYUNAME,
E_ADDRESSSTRINGS TYPE AD_SMTPADR,
TMP_ADDRESSSTRINGS TYPE SOXNA-FULLNAME,
INITIATOR TYPE SY-UNAME.
DATA: BEGIN OF ADDRESSSTRINGS OCCURS 0,
ADDRESSSTRINGS TYPE SOXNA-FULLNAME,
END OF ADDRESSSTRINGS.
DATA: LT_ZFI_GL_MEMO LIKE ZFI_GL_MEMO OCCURS 0 WITH HEADER LINE.
SELECT SINGLE * FROM ZFI_GL_MEMO INTO LT_ZFI_GL_MEMO
WHERE WF_KEY = OBJECT-KEY-ZWF_KEY.
USRID = LT_ZFI_GL_MEMO-INITIATOR.
IF SY-SUBRC = 0.
CALL FUNCTION 'FTR_CORR_CHECK_EMAIL_SAP_USER'
EXPORTING
I_USER = USRID
IMPORTING
E_EMAIL_ADDRESS = E_ADDRESSSTRINGS
EXCEPTIONS
MAIL_ADDRESS = 1
DETERMINATION_ERROR = 2
OTHERS = 3.
IF SY-SUBRC <> 0.
CLEAR E_ADDRESSSTRINGS.
ELSE.
IF SY-SYSID EQ 'SEP' OR SY-SYSID EQ 'SED' OR SY-SYSID EQ 'SEQ'.
TMP_ADDRESSSTRINGS = E_ADDRESSSTRINGS.
ADDRESSSTRINGS-ADDRESSSTRINGS = TMP_ADDRESSSTRINGS.
APPEND ADDRESSSTRINGS.
CLEAR:ADDRESSSTRINGS.
ENDIF.
ENDIF.
SWC_SET_TABLE CONTAINER 'AddressStrings' ADDRESSSTRINGS.
ENDIF.
END_METHOD.
*****************************************************************************************************
* Method for Reconc Approval
BEGIN_METHOD METHOD_RECONCILIATION_1 CHANGING CONTAINER.
DATA: WF_STATUS TYPE ZFI_GL_RECONCILE-WF_STATUS.
DATA: LT_ZFI_GL_RECONCILE LIKE ZFI_GL_RECONCILE OCCURS 0 WITH HEADER LINE.
CALL FUNCTION 'ZFI_GL_RECONCILIATION'
EXPORTING
WF_KEY = OBJECT-KEY-ZWF_KEY
IMPORTING
LT_ZFI_GL_RECONCILE = LT_ZFI_GL_RECONCILE
EXCEPTIONS
EXIT_CANCELLED = 1
ABORT = 2
INVALID_NUMBER = 3
OTHERS = 4.
IF SY-SUBRC <> 0.
* Implement suitable error handling here
ENDIF.
APPEND LT_ZFI_GL_RECONCILE.
SWC_SET_TABLE CONTAINER 'LT_ZFI_GL_RECONCILE' LT_ZFI_GL_RECONCILE.
DATA: LV_WIID TYPE SWW_WIID.
IF LT_ZFI_GL_RECONCILE-WF_STATUS IS INITIAL.
CALL FUNCTION 'SAP_WAPI_PUT_BACK_WORKITEM'
EXPORTING
WORKITEM_ID = LV_WIID.
SET SCREEN 0.
LEAVE SCREEN.
ENDIF.
END_METHOD.
*****************************************************************************************************
* Method for Memo Record Approval
BEGIN_METHOD METHOD_MEMORECORD_1 CHANGING CONTAINER.
DATA: WIID TYPE SWW_WIID.
SWC_GET_ELEMENT CONTAINER 'WIID' WIID.
*GET PARAMETER ID 'WFKEY' FIELD WFKEY.
DATA: WF_STATUS TYPE ZFI_GL_MEMO-WF_STATUS.
DATA: LT_ZFI_GL_MEMO LIKE ZFI_GL_MEMO OCCURS 0 WITH HEADER LINE.
CALL FUNCTION 'ZFI_GL_MEMO_RECORD'
EXPORTING
WF_KEY = OBJECT-KEY-ZWF_KEY
IMPORTING
LT_ZFI_GL_MEMO = LT_ZFI_GL_MEMO
EXCEPTIONS
EXIT_CANCELLED = 1
ABORT = 2
INVALID_NUMBER = 3
OTHERS = 4.
IF SY-SUBRC <> 0.
* Implement suitable error handling here
ENDIF.
APPEND LT_ZFI_GL_MEMO.
SWC_SET_TABLE CONTAINER 'LT_ZFI_GL_MEMO' LT_ZFI_GL_MEMO.
BREAK-POINT.
IF LT_ZFI_GL_MEMO-WF_STATUS IS INITIAL.
CALL FUNCTION 'SAP_WAPI_PUT_BACK_WORKITEM'
EXPORTING
WORKITEM_ID = WIID.
SET SCREEN 0.
LEAVE SCREEN.
ENDIF.
END_METHOD.
******************************************************************************************************
* 2ND LEVEL WF APPROVAL
******************************************************************************************************
* Method for Reconc Approval
BEGIN_METHOD METHOD_RECONCILIATION_2 CHANGING CONTAINER.
DATA: WF_STATUS TYPE ZFI_GL_RECONCILE-WF_STATUS.
DATA: LT_ZFI_GL_RECONCILE LIKE ZFI_GL_RECONCILE OCCURS 0 WITH HEADER LINE.
CALL FUNCTION 'ZFI_GL_RECONCILIATION'
EXPORTING
WF_KEY = OBJECT-KEY-ZWF_KEY
IMPORTING
LT_ZFI_GL_RECONCILE = LT_ZFI_GL_RECONCILE
EXCEPTIONS
EXIT_CANCELLED = 1
ABORT = 2
INVALID_NUMBER = 3
OTHERS = 4.
IF SY-SUBRC <> 0.
* Implement suitable error handling here
ENDIF.
APPEND LT_ZFI_GL_RECONCILE.
SWC_SET_TABLE CONTAINER 'LT_ZFI_GL_RECONCILE' LT_ZFI_GL_RECONCILE.
DATA: LV_WIID TYPE SWW_WIID.
IF LT_ZFI_GL_RECONCILE-WF_STATUS NE '2APPROVED' OR LT_ZFI_GL_RECONCILE-WF_STATUS NE '2REJECTED'.
CALL FUNCTION 'SAP_WAPI_PUT_BACK_WORKITEM'
EXPORTING
WORKITEM_ID = LV_WIID.
SET SCREEN 0.
LEAVE SCREEN.
ENDIF.
END_METHOD.
*****************************************************************************************************
* Method for Memo Record Approval
BEGIN_METHOD METHOD_MEMORECORD_2 CHANGING CONTAINER.
DATA: WIID TYPE SWW_WIID.
SWC_GET_ELEMENT CONTAINER 'WIID' WIID.
*GET PARAMETER ID 'WFKEY' FIELD WFKEY.
DATA: WF_STATUS TYPE ZFI_GL_MEMO-WF_STATUS.
DATA: LT_ZFI_GL_MEMO LIKE ZFI_GL_MEMO OCCURS 0 WITH HEADER LINE.
CALL FUNCTION 'ZFI_GL_MEMO_RECORD'
EXPORTING
WF_KEY = OBJECT-KEY-ZWF_KEY
IMPORTING
LT_ZFI_GL_MEMO = LT_ZFI_GL_MEMO
EXCEPTIONS
EXIT_CANCELLED = 1
ABORT = 2
INVALID_NUMBER = 3
OTHERS = 4.
IF SY-SUBRC <> 0.
* Implement suitable error handling here
ENDIF.
APPEND LT_ZFI_GL_MEMO.
SWC_SET_TABLE CONTAINER 'LT_ZFI_GL_MEMO' LT_ZFI_GL_MEMO.
IF LT_ZFI_GL_MEMO-WF_STATUS NE '2APPROVED' OR LT_ZFI_GL_MEMO-WF_STATUS NE '2REJECTED'.
CALL FUNCTION 'SAP_WAPI_PUT_BACK_WORKITEM'
EXPORTING
WORKITEM_ID = WIID.
SET SCREEN 0.
LEAVE SCREEN.
ENDIF.
END_METHOD.
************************************************************************************************
FUNCTION ZFI_GL_RECONCILIATION.
*"----------------------------------------------------------------------
*"*"Local Interface:
*" IMPORTING
*" REFERENCE(WF_KEY) TYPE ZFI_GL_RECONCILE-WF_KEY
*" EXPORTING
*" REFERENCE(LT_ZFI_GL_RECONCILE) LIKE ZFI_GL_RECONCILE STRUCTURE
*" ZFI_GL_RECONCILE
*" EXCEPTIONS
*" EXIT_CANCELLED
*" ABORT
*" INVALID_NUMBER
*"----------------------------------------------------------------------
TABLES: ZFI_GL_RECONCILE.
SELECT SINGLE * FROM ZFI_GL_RECONCILE INTO LT_ZFI_GL_RECONCILE
WHERE WF_KEY = WF_KEY.
WFKEY = WF_KEY.
SET PARAMETER ID 'WFKEY' FIELD WFKEY.
CLEAR WFKEY.
IF SY-SUBRC = 0.
* READ TABLE LT_ZFI_GL_RECONCILE INTO IS_ZFI_GL_RECONCILE WITH TABLE KEY WF_KEY = WF_KEY.
ENDIF.
* Call Smartform
***************************
IF SY-SUBRC = 0.
****
CALL FUNCTION 'SSF_FUNCTION_MODULE_NAME'
EXPORTING
FORMNAME = 'ZFI_RECONCILIATION'
IMPORTING
FM_NAME = FM_NAME.
CALL FUNCTION 'SSF_GET_DEVICE_TYPE'
EXPORTING
I_LANGUAGE = V_LANGUAGE
I_APPLICATION = 'SAPDEFAULT'
IMPORTING
E_DEVTYPE = V_E_DEVTYPE.
OUTPUT_OPTIONS-TDPRINTER = V_E_DEVTYPE.
***********popup of the smartform printer blocking logic
OUTPUT_OPTIONS-TDNOPREV = 'X'.
CONTROL_PARAMETERS-NO_DIALOG = 'X'.
OUTPUT_OPTIONS-TDDEST = 'LP01'.
CONTROL_PARAMETERS-GETOTF = 'X'.
CALL FUNCTION FM_NAME
EXPORTING
* ARCHIVE_INDEX =
* ARCHIVE_INDEX_TAB =
* ARCHIVE_PARAMETERS =
CONTROL_PARAMETERS = CONTROL_PARAMETERS
* MAIL_APPL_OBJ =
* MAIL_RECIPIENT =
* MAIL_SENDER =
OUTPUT_OPTIONS = OUTPUT_OPTIONS
USER_SETTINGS = 'X'
BUDAT = LT_ZFI_GL_RECONCILE-POST_DATE
BUKRS = LT_ZFI_GL_RECONCILE-BUKRS
GJAHR = LT_ZFI_GL_RECONCILE-FYEAR
HKONT = LT_ZFI_GL_RECONCILE-GLACC
SKAT = LT_ZFI_GL_RECONCILE-SKAT
P_DMBTR = LT_ZFI_GL_RECONCILE-BANK_BALANCE
BANKN = LT_ZFI_GL_RECONCILE-BANKN
WRBTR = LT_ZFI_GL_RECONCILE-BOOK_BALANCE
WAERS = LT_ZFI_GL_RECONCILE-WAERS
* dmbtr = is_final-dmbtr
* waers_lc = is_final-waers_lc
* dmbe2 = is_final-dmbe2
* hwae2 = is_final-hwae2
* dmbe3 = is_final-dmbe3
* hwae3 = is_final-hwae3
BANLANCE = LT_ZFI_GL_RECONCILE-BALANCE
IMPORTING
DOCUMENT_OUTPUT_INFO = DOCUMENT_OUTPUT_INFO
JOB_OUTPUT_INFO = JOB_OUTPUT_INFO
JOB_OUTPUT_OPTIONS = JOB_OUTPUT_OPTIONS
EXCEPTIONS
FORMATTING_ERROR = 1
INTERNAL_ERROR = 2
SEND_ERROR = 3
USER_CANCELED = 4
* OTHERS = 5
.
IF SY-SUBRC <> 0.
* Implement suitable error handling here
ENDIF.
CALL FUNCTION 'CONVERT_OTF'
EXPORTING
FORMAT = 'PDF'
IMPORTING
BIN_FILESIZE = V_BIN_FILESIZE
* BIN_FILE = V_BIN_FILE
TABLES
OTF = JOB_OUTPUT_INFO-OTFDATA
LINES = T_PDF_TAB
EXCEPTIONS
ERR_MAX_LINEWIDTH = 1
ERR_FORMAT = 2
ERR_CONV_NOT_POSSIBLE = 3
ERR_BAD_OTF = 4
OTHERS = 5.
IF SY-SUBRC <> 0.
****
***** MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
***** WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
****
ENDIF.
LOOP AT T_PDF_TAB INTO LS_PDF.
ASSIGN LS_PDF TO CASTING.
CONCATENATE LV_CONTENT INTO LV_CONTENT IN BYTE MODE.
ENDLOOP.
****
CALL SCREEN 0100.
SELECT SINGLE * FROM ZFI_GL_RECONCILE INTO LT_ZFI_GL_RECONCILE
WHERE WF_KEY = WF_KEY.
****
ENDIF.
***************************
ENDFUNCTION.
*"----------------------------------------------------------------------
*"*"Local Interface:
*" IMPORTING
*" REFERENCE(WF_KEY) TYPE ZFI_GL_RECONCILE-WF_KEY
*" EXPORTING
*" REFERENCE(LT_ZFI_GL_RECONCILE) LIKE ZFI_GL_RECONCILE STRUCTURE
*" ZFI_GL_RECONCILE
*" EXCEPTIONS
*" EXIT_CANCELLED
*" ABORT
*" INVALID_NUMBER
*"----------------------------------------------------------------------
TABLES: ZFI_GL_RECONCILE.
SELECT SINGLE * FROM ZFI_GL_RECONCILE INTO LT_ZFI_GL_RECONCILE
WHERE WF_KEY = WF_KEY.
WFKEY = WF_KEY.
SET PARAMETER ID 'WFKEY' FIELD WFKEY.
CLEAR WFKEY.
IF SY-SUBRC = 0.
* READ TABLE LT_ZFI_GL_RECONCILE INTO IS_ZFI_GL_RECONCILE WITH TABLE KEY WF_KEY = WF_KEY.
ENDIF.
* Call Smartform
***************************
IF SY-SUBRC = 0.
****
CALL FUNCTION 'SSF_FUNCTION_MODULE_NAME'
EXPORTING
FORMNAME = 'ZFI_RECONCILIATION'
IMPORTING
FM_NAME = FM_NAME.
CALL FUNCTION 'SSF_GET_DEVICE_TYPE'
EXPORTING
I_LANGUAGE = V_LANGUAGE
I_APPLICATION = 'SAPDEFAULT'
IMPORTING
E_DEVTYPE = V_E_DEVTYPE.
OUTPUT_OPTIONS-TDPRINTER = V_E_DEVTYPE.
***********popup of the smartform printer blocking logic
OUTPUT_OPTIONS-TDNOPREV = 'X'.
CONTROL_PARAMETERS-NO_DIALOG = 'X'.
OUTPUT_OPTIONS-TDDEST = 'LP01'.
CONTROL_PARAMETERS-GETOTF = 'X'.
CALL FUNCTION FM_NAME
EXPORTING
* ARCHIVE_INDEX =
* ARCHIVE_INDEX_TAB =
* ARCHIVE_PARAMETERS =
CONTROL_PARAMETERS = CONTROL_PARAMETERS
* MAIL_APPL_OBJ =
* MAIL_RECIPIENT =
* MAIL_SENDER =
OUTPUT_OPTIONS = OUTPUT_OPTIONS
USER_SETTINGS = 'X'
BUDAT = LT_ZFI_GL_RECONCILE-POST_DATE
BUKRS = LT_ZFI_GL_RECONCILE-BUKRS
GJAHR = LT_ZFI_GL_RECONCILE-FYEAR
HKONT = LT_ZFI_GL_RECONCILE-GLACC
SKAT = LT_ZFI_GL_RECONCILE-SKAT
P_DMBTR = LT_ZFI_GL_RECONCILE-BANK_BALANCE
BANKN = LT_ZFI_GL_RECONCILE-BANKN
WRBTR = LT_ZFI_GL_RECONCILE-BOOK_BALANCE
WAERS = LT_ZFI_GL_RECONCILE-WAERS
* dmbtr = is_final-dmbtr
* waers_lc = is_final-waers_lc
* dmbe2 = is_final-dmbe2
* hwae2 = is_final-hwae2
* dmbe3 = is_final-dmbe3
* hwae3 = is_final-hwae3
BANLANCE = LT_ZFI_GL_RECONCILE-BALANCE
IMPORTING
DOCUMENT_OUTPUT_INFO = DOCUMENT_OUTPUT_INFO
JOB_OUTPUT_INFO = JOB_OUTPUT_INFO
JOB_OUTPUT_OPTIONS = JOB_OUTPUT_OPTIONS
EXCEPTIONS
FORMATTING_ERROR = 1
INTERNAL_ERROR = 2
SEND_ERROR = 3
USER_CANCELED = 4
* OTHERS = 5
.
IF SY-SUBRC <> 0.
* Implement suitable error handling here
ENDIF.
CALL FUNCTION 'CONVERT_OTF'
EXPORTING
FORMAT = 'PDF'
IMPORTING
BIN_FILESIZE = V_BIN_FILESIZE
* BIN_FILE = V_BIN_FILE
TABLES
OTF = JOB_OUTPUT_INFO-OTFDATA
LINES = T_PDF_TAB
EXCEPTIONS
ERR_MAX_LINEWIDTH = 1
ERR_FORMAT = 2
ERR_CONV_NOT_POSSIBLE = 3
ERR_BAD_OTF = 4
OTHERS = 5.
IF SY-SUBRC <> 0.
****
***** MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
***** WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
****
ENDIF.
LOOP AT T_PDF_TAB INTO LS_PDF.
ASSIGN LS_PDF TO
CONCATENATE LV_CONTENT
ENDLOOP.
****
CALL SCREEN 0100.
SELECT SINGLE * FROM ZFI_GL_RECONCILE INTO LT_ZFI_GL_RECONCILE
WHERE WF_KEY = WF_KEY.
****
ENDIF.
***************************
ENDFUNCTION.
Inbox
*********************************************************************
Approval Screen
*********************************************************************
PROCESS BEFORE OUTPUT.
MODULE STATUS_0100.
PROCESS AFTER INPUT.
MODULE USER_COMMAND_0100.
*********************************************************************
*----------------------------------------------------------------------*
***INCLUDE LZFI_GL_MEMOO01.
*----------------------------------------------------------------------*
*&---------------------------------------------------------------------*
*& Module STATUS_0100 OUTPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE status_0100 OUTPUT.
SET PF-STATUS 'WF-STATUS'.
SET TITLEBAR 'WF-STATUS'.
CREATE OBJECT container
EXPORTING
container_name = 'CUST_CONT'.
CREATE OBJECT control
EXPORTING
parent = container.
* Convert xstring to binary table to pass to the LOAD_DATA method
CALL FUNCTION 'SCMS_XSTRING_TO_BINARY'
EXPORTING
buffer = lv_content
TABLES
binary_tab = lt_data.
* Load the HTML
CALL METHOD control->load_data(
EXPORTING
type = 'application'
subtype = 'pdf'
IMPORTING
assigned_url = lv_url
CHANGING
data_table = lt_data
EXCEPTIONS
dp_invalid_parameter = 1
dp_error_general = 2
cntl_error = 3
OTHERS = 4 ).
* Show it
CALL METHOD control->show_url(
url = lv_url
in_place = 'X' ).
ENDMODULE. " STATUS_0100 OUTPUT
***INCLUDE LZFI_GL_MEMOO01.
*----------------------------------------------------------------------*
*&---------------------------------------------------------------------*
*& Module STATUS_0100 OUTPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE status_0100 OUTPUT.
SET PF-STATUS 'WF-STATUS'.
SET TITLEBAR 'WF-STATUS'.
CREATE OBJECT container
EXPORTING
container_name = 'CUST_CONT'.
CREATE OBJECT control
EXPORTING
parent = container.
* Convert xstring to binary table to pass to the LOAD_DATA method
CALL FUNCTION 'SCMS_XSTRING_TO_BINARY'
EXPORTING
buffer = lv_content
TABLES
binary_tab = lt_data.
* Load the HTML
CALL METHOD control->load_data(
EXPORTING
type = 'application'
subtype = 'pdf'
IMPORTING
assigned_url = lv_url
CHANGING
data_table = lt_data
EXCEPTIONS
dp_invalid_parameter = 1
dp_error_general = 2
cntl_error = 3
OTHERS = 4 ).
* Show it
CALL METHOD control->show_url(
url = lv_url
in_place = 'X' ).
ENDMODULE. " STATUS_0100 OUTPUT
*********************************************************************
*----------------------------------------------------------------------*
***INCLUDE LZFI_GL_MEMOI01.
*----------------------------------------------------------------------*
*&---------------------------------------------------------------------*
*& Module USER_COMMAND_0100 INPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE USER_COMMAND_0100 INPUT.
GET PARAMETER ID 'WFKEY' FIELD WFKEY.
FCODE = SY-UCOMM.
CASE FCODE.
WHEN 'STOP' OR 'CANCEL' OR 'EXIT' OR 'BACK'.
CLEAR SY-UCOMM.
****
LEAVE TO SCREEN 0.
* CALL TRANSACTION 'SBWP' AND SKIP FIRST SCREEN.
****
WHEN FCODE_CANCEL.
IF NOT CONTROL IS INITIAL.
CALL METHOD CONTROL->FREE.
IF SY-SUBRC <> 0.
RAISE CNTL_ERROR.
ENDIF.
FREE CONTROL.
ENDIF.
IF NOT CONTAINER IS INITIAL.
CALL METHOD CONTAINER->FREE.
IF SY-SUBRC <> 0.
RAISE CNTL_ERROR.
ENDIF.
FREE CONTAINER.
ENDIF.
LEAVE TO SCREEN 0.
WHEN 'APPROVE'.
SELECT SINGLE * FROM ZFI_GL_MEMO INTO LT_ZFI_GL_MEMO
WHERE WF_KEY = WFKEY.
IF SY-SUBRC = 0.
IF LT_ZFI_GL_MEMO-APPROVERBY1 IS INITIAL AND LT_ZFI_GL_MEMO-APPROVERNAME1 IS INITIAL.
LS_USER-SAPNAME = SY-UNAME.
CALL FUNCTION 'SO_USER_READ_API1'
EXPORTING
USER = LS_USER
* PREPARE_FOR_FOLDER_ACCESS = ' '
IMPORTING
USER_DATA = LS_USERDATA
EXCEPTIONS
USER_NOT_EXIST = 1
PARAMETER_ERROR = 2
X_ERROR = 3
OTHERS = 4.
UPDATE ZFI_GL_MEMO SET WF_STATUS = '1APPROVED'
APPROVERBY1 = SY-UNAME
APPROVERNAME1 = LS_USERDATA-FULLNAME
APPROVALDATE1 = SY-DATUM
WHERE WF_KEY = WFKEY.
COMMIT WORK.
LT_ZFI_GL_MEMO-APPROVERBY1 = SY-UNAME.
LT_ZFI_GL_MEMO-APPROVERNAME1 = LS_USERDATA-FULLNAME.
LT_ZFI_GL_MEMO-APPROVALDATE1 = SY-DATUM.
LT_ZFI_GL_MEMO-WF_STATUS = '1APPROVED'.
APPEND LT_ZFI_GL_MEMO.
COMMIT WORK.
ELSEIF
LT_ZFI_GL_MEMO-APPROVERBY1 IS NOT INITIAL AND LT_ZFI_GL_MEMO-APPROVERNAME1 IS NOT INITIAL AND
LT_ZFI_GL_MEMO-APPROVERBY2 IS INITIAL AND LT_ZFI_GL_MEMO-APPROVERNAME2 IS INITIAL.
LS_USER-SAPNAME = SY-UNAME.
CALL FUNCTION 'SO_USER_READ_API1'
EXPORTING
USER = LS_USER
IMPORTING
USER_DATA = LS_USERDATA
EXCEPTIONS
USER_NOT_EXIST = 1
PARAMETER_ERROR = 2
X_ERROR = 3
OTHERS = 4.
UPDATE ZFI_GL_MEMO SET WF_STATUS = '2APPROVED'
APPROVERBY2 = SY-UNAME
APPROVERNAME2 = LS_USERDATA-FULLNAME
APPROVALDATE2 = SY-DATUM
WHERE WF_KEY = WFKEY.
COMMIT WORK.
LT_ZFI_GL_MEMO-APPROVERBY2 = SY-UNAME.
LT_ZFI_GL_MEMO-APPROVERNAME2 = LS_USERDATA-FULLNAME.
LT_ZFI_GL_MEMO-APPROVALDATE2 = SY-DATUM.
LT_ZFI_GL_MEMO-WF_STATUS = '2APPROVED'.
APPEND LT_ZFI_GL_MEMO.
COMMIT WORK.
ENDIF.
ENDIF.
LEAVE TO SCREEN 0.
WHEN 'REJECT'.
SELECT SINGLE * FROM ZFI_GL_MEMO INTO LT_ZFI_GL_MEMO
WHERE WF_KEY = WFKEY.
IF SY-SUBRC = 0.
IF LT_ZFI_GL_MEMO-APPROVERBY1 IS INITIAL AND LT_ZFI_GL_MEMO-APPROVERNAME1 IS INITIAL.
* Pop-up editor for Reject comments
*-- Calling Text Editor for getting User Comments
CLEAR CH_TEXT.
CALL FUNCTION 'CATSXT_SIMPLE_TEXT_EDITOR'
EXPORTING
IM_TITLE = 'Rejection Reason'
IM_DISPLAY_MODE = SPACE
IM_START_COLUMN = 10
IM_START_ROW = 10
CHANGING
CH_TEXT = CH_TEXT
EXCEPTIONS
OTHERS = 01.
CASE SY-SUBRC.
WHEN 0. " OK
WHEN OTHERS. " to be implemented
ENDCASE.
GIT_TEXT[] = CH_TEXT[].
LOOP AT GIT_TEXT[] INTO LIT_TEXT.
IF SY-TABIX = 1.
IT_TEXT = LIT_TEXT.
ELSE.
CONCATENATE IT_TEXT LIT_TEXT INTO IT_TEXT.
ENDIF.
ENDLOOP.
LT_ZFI_GL_MEMO-COMMENTS = IT_TEXT.
CLEAR IT_TEXT.
* Update data in the table ZFI_GL_MEMO
LS_USER-SAPNAME = SY-UNAME.
CALL FUNCTION 'SO_USER_READ_API1'
EXPORTING
USER = LS_USER
IMPORTING
USER_DATA = LS_USERDATA
EXCEPTIONS
USER_NOT_EXIST = 1
PARAMETER_ERROR = 2
X_ERROR = 3
OTHERS = 4.
UPDATE ZFI_GL_MEMO SET WF_STATUS = '1REJECTED'
APPROVERBY1 = SY-UNAME
APPROVERNAME1 = LS_USERDATA-FULLNAME
APPROVALDATE1 = SY-DATUM
COMMENTS = LT_ZFI_GL_MEMO-COMMENTS
WHERE WF_KEY = WFKEY.
COMMIT WORK.
LT_ZFI_GL_MEMO-APPROVERBY1 = SY-UNAME.
LT_ZFI_GL_MEMO-APPROVERNAME1 = LS_USERDATA-FULLNAME.
LT_ZFI_GL_MEMO-APPROVALDATE1 = SY-DATUM.
LT_ZFI_GL_MEMO-WF_STATUS = '1REJECTED'.
LT_ZFI_GL_MEMO-COMMENTS = LT_ZFI_GL_MEMO-COMMENTS.
APPEND LT_ZFI_GL_MEMO.
COMMIT WORK.
ELSEIF
LT_ZFI_GL_MEMO-APPROVERBY1 IS NOT INITIAL AND LT_ZFI_GL_MEMO-APPROVERNAME1 IS NOT INITIAL AND
LT_ZFI_GL_MEMO-APPROVERBY2 IS INITIAL AND LT_ZFI_GL_MEMO-APPROVERNAME2 IS INITIAL.
LS_USER-SAPNAME = SY-UNAME.
* Pop-up editor for Reject comments
*-- Calling Text Editor for getting User Comments
CLEAR CH_TEXT.
CALL FUNCTION 'CATSXT_SIMPLE_TEXT_EDITOR'
EXPORTING
IM_TITLE = 'Rejection Reason'
IM_DISPLAY_MODE = SPACE
IM_START_COLUMN = 10
IM_START_ROW = 10
CHANGING
CH_TEXT = CH_TEXT
EXCEPTIONS
OTHERS = 01.
CASE SY-SUBRC.
WHEN 0. " OK
WHEN OTHERS. " to be implemented
ENDCASE.
GIT_TEXT[] = CH_TEXT[].
LOOP AT GIT_TEXT[] INTO LIT_TEXT.
IF SY-TABIX = 1.
IT_TEXT = LIT_TEXT.
ELSE.
CONCATENATE IT_TEXT LIT_TEXT INTO IT_TEXT.
ENDIF.
ENDLOOP.
LT_ZFI_GL_MEMO-COMMENTS = IT_TEXT.
CLEAR IT_TEXT.
* Update data in the table ZFI_GL_MEMO
CALL FUNCTION 'SO_USER_READ_API1'
EXPORTING
USER = LS_USER
IMPORTING
USER_DATA = LS_USERDATA
EXCEPTIONS
USER_NOT_EXIST = 1
PARAMETER_ERROR = 2
X_ERROR = 3
OTHERS = 4.
UPDATE ZFI_GL_MEMO SET WF_STATUS = '2REJECTED'
APPROVERBY2 = SY-UNAME
APPROVERNAME2 = LS_USERDATA-FULLNAME
APPROVALDATE2 = SY-DATUM
COMMENTS = LT_ZFI_GL_MEMO-COMMENTS
WHERE WF_KEY = WFKEY.
COMMIT WORK.
LT_ZFI_GL_MEMO-APPROVERBY2 = SY-UNAME.
LT_ZFI_GL_MEMO-APPROVERNAME2 = LS_USERDATA-FULLNAME.
LT_ZFI_GL_MEMO-APPROVALDATE2 = SY-DATUM.
LT_ZFI_GL_MEMO-WF_STATUS = '2REJECTED'.
LT_ZFI_GL_MEMO-COMMENTS = LT_ZFI_GL_MEMO-COMMENTS.
APPEND LT_ZFI_GL_MEMO.
COMMIT WORK.
ENDIF.
ENDIF.
LEAVE TO SCREEN 0.
WHEN OTHERS.
CALL METHOD CL_GUI_CFW=>DISPATCH.
IF SY-SUBRC <> 0.
RAISE CNTL_ERROR.
ENDIF.
ENDCASE.
CLEAR FCODE.
SELECT SINGLE * FROM ZFI_GL_MEMO INTO LT_ZFI_GL_MEMO
WHERE WF_KEY = WFKEY.
ENDMODULE. " USER_COMMAND_0100 INPUT
***INCLUDE LZFI_GL_MEMOI01.
*----------------------------------------------------------------------*
*&---------------------------------------------------------------------*
*& Module USER_COMMAND_0100 INPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE USER_COMMAND_0100 INPUT.
GET PARAMETER ID 'WFKEY' FIELD WFKEY.
FCODE = SY-UCOMM.
CASE FCODE.
WHEN 'STOP' OR 'CANCEL' OR 'EXIT' OR 'BACK'.
CLEAR SY-UCOMM.
****
LEAVE TO SCREEN 0.
* CALL TRANSACTION 'SBWP' AND SKIP FIRST SCREEN.
****
WHEN FCODE_CANCEL.
IF NOT CONTROL IS INITIAL.
CALL METHOD CONTROL->FREE.
IF SY-SUBRC <> 0.
RAISE CNTL_ERROR.
ENDIF.
FREE CONTROL.
ENDIF.
IF NOT CONTAINER IS INITIAL.
CALL METHOD CONTAINER->FREE.
IF SY-SUBRC <> 0.
RAISE CNTL_ERROR.
ENDIF.
FREE CONTAINER.
ENDIF.
LEAVE TO SCREEN 0.
WHEN 'APPROVE'.
SELECT SINGLE * FROM ZFI_GL_MEMO INTO LT_ZFI_GL_MEMO
WHERE WF_KEY = WFKEY.
IF SY-SUBRC = 0.
IF LT_ZFI_GL_MEMO-APPROVERBY1 IS INITIAL AND LT_ZFI_GL_MEMO-APPROVERNAME1 IS INITIAL.
LS_USER-SAPNAME = SY-UNAME.
CALL FUNCTION 'SO_USER_READ_API1'
EXPORTING
USER = LS_USER
* PREPARE_FOR_FOLDER_ACCESS = ' '
IMPORTING
USER_DATA = LS_USERDATA
EXCEPTIONS
USER_NOT_EXIST = 1
PARAMETER_ERROR = 2
X_ERROR = 3
OTHERS = 4.
UPDATE ZFI_GL_MEMO SET WF_STATUS = '1APPROVED'
APPROVERBY1 = SY-UNAME
APPROVERNAME1 = LS_USERDATA-FULLNAME
APPROVALDATE1 = SY-DATUM
WHERE WF_KEY = WFKEY.
COMMIT WORK.
LT_ZFI_GL_MEMO-APPROVERBY1 = SY-UNAME.
LT_ZFI_GL_MEMO-APPROVERNAME1 = LS_USERDATA-FULLNAME.
LT_ZFI_GL_MEMO-APPROVALDATE1 = SY-DATUM.
LT_ZFI_GL_MEMO-WF_STATUS = '1APPROVED'.
APPEND LT_ZFI_GL_MEMO.
COMMIT WORK.
ELSEIF
LT_ZFI_GL_MEMO-APPROVERBY1 IS NOT INITIAL AND LT_ZFI_GL_MEMO-APPROVERNAME1 IS NOT INITIAL AND
LT_ZFI_GL_MEMO-APPROVERBY2 IS INITIAL AND LT_ZFI_GL_MEMO-APPROVERNAME2 IS INITIAL.
LS_USER-SAPNAME = SY-UNAME.
CALL FUNCTION 'SO_USER_READ_API1'
EXPORTING
USER = LS_USER
IMPORTING
USER_DATA = LS_USERDATA
EXCEPTIONS
USER_NOT_EXIST = 1
PARAMETER_ERROR = 2
X_ERROR = 3
OTHERS = 4.
UPDATE ZFI_GL_MEMO SET WF_STATUS = '2APPROVED'
APPROVERBY2 = SY-UNAME
APPROVERNAME2 = LS_USERDATA-FULLNAME
APPROVALDATE2 = SY-DATUM
WHERE WF_KEY = WFKEY.
COMMIT WORK.
LT_ZFI_GL_MEMO-APPROVERBY2 = SY-UNAME.
LT_ZFI_GL_MEMO-APPROVERNAME2 = LS_USERDATA-FULLNAME.
LT_ZFI_GL_MEMO-APPROVALDATE2 = SY-DATUM.
LT_ZFI_GL_MEMO-WF_STATUS = '2APPROVED'.
APPEND LT_ZFI_GL_MEMO.
COMMIT WORK.
ENDIF.
ENDIF.
LEAVE TO SCREEN 0.
WHEN 'REJECT'.
SELECT SINGLE * FROM ZFI_GL_MEMO INTO LT_ZFI_GL_MEMO
WHERE WF_KEY = WFKEY.
IF SY-SUBRC = 0.
IF LT_ZFI_GL_MEMO-APPROVERBY1 IS INITIAL AND LT_ZFI_GL_MEMO-APPROVERNAME1 IS INITIAL.
* Pop-up editor for Reject comments
*-- Calling Text Editor for getting User Comments
CLEAR CH_TEXT.
CALL FUNCTION 'CATSXT_SIMPLE_TEXT_EDITOR'
EXPORTING
IM_TITLE = 'Rejection Reason'
IM_DISPLAY_MODE = SPACE
IM_START_COLUMN = 10
IM_START_ROW = 10
CHANGING
CH_TEXT = CH_TEXT
EXCEPTIONS
OTHERS = 01.
CASE SY-SUBRC.
WHEN 0. " OK
WHEN OTHERS. " to be implemented
ENDCASE.
GIT_TEXT[] = CH_TEXT[].
LOOP AT GIT_TEXT[] INTO LIT_TEXT.
IF SY-TABIX = 1.
IT_TEXT = LIT_TEXT.
ELSE.
CONCATENATE IT_TEXT LIT_TEXT INTO IT_TEXT.
ENDIF.
ENDLOOP.
LT_ZFI_GL_MEMO-COMMENTS = IT_TEXT.
CLEAR IT_TEXT.
* Update data in the table ZFI_GL_MEMO
LS_USER-SAPNAME = SY-UNAME.
CALL FUNCTION 'SO_USER_READ_API1'
EXPORTING
USER = LS_USER
IMPORTING
USER_DATA = LS_USERDATA
EXCEPTIONS
USER_NOT_EXIST = 1
PARAMETER_ERROR = 2
X_ERROR = 3
OTHERS = 4.
UPDATE ZFI_GL_MEMO SET WF_STATUS = '1REJECTED'
APPROVERBY1 = SY-UNAME
APPROVERNAME1 = LS_USERDATA-FULLNAME
APPROVALDATE1 = SY-DATUM
COMMENTS = LT_ZFI_GL_MEMO-COMMENTS
WHERE WF_KEY = WFKEY.
COMMIT WORK.
LT_ZFI_GL_MEMO-APPROVERBY1 = SY-UNAME.
LT_ZFI_GL_MEMO-APPROVERNAME1 = LS_USERDATA-FULLNAME.
LT_ZFI_GL_MEMO-APPROVALDATE1 = SY-DATUM.
LT_ZFI_GL_MEMO-WF_STATUS = '1REJECTED'.
LT_ZFI_GL_MEMO-COMMENTS = LT_ZFI_GL_MEMO-COMMENTS.
APPEND LT_ZFI_GL_MEMO.
COMMIT WORK.
ELSEIF
LT_ZFI_GL_MEMO-APPROVERBY1 IS NOT INITIAL AND LT_ZFI_GL_MEMO-APPROVERNAME1 IS NOT INITIAL AND
LT_ZFI_GL_MEMO-APPROVERBY2 IS INITIAL AND LT_ZFI_GL_MEMO-APPROVERNAME2 IS INITIAL.
LS_USER-SAPNAME = SY-UNAME.
* Pop-up editor for Reject comments
*-- Calling Text Editor for getting User Comments
CLEAR CH_TEXT.
CALL FUNCTION 'CATSXT_SIMPLE_TEXT_EDITOR'
EXPORTING
IM_TITLE = 'Rejection Reason'
IM_DISPLAY_MODE = SPACE
IM_START_COLUMN = 10
IM_START_ROW = 10
CHANGING
CH_TEXT = CH_TEXT
EXCEPTIONS
OTHERS = 01.
CASE SY-SUBRC.
WHEN 0. " OK
WHEN OTHERS. " to be implemented
ENDCASE.
GIT_TEXT[] = CH_TEXT[].
LOOP AT GIT_TEXT[] INTO LIT_TEXT.
IF SY-TABIX = 1.
IT_TEXT = LIT_TEXT.
ELSE.
CONCATENATE IT_TEXT LIT_TEXT INTO IT_TEXT.
ENDIF.
ENDLOOP.
LT_ZFI_GL_MEMO-COMMENTS = IT_TEXT.
CLEAR IT_TEXT.
* Update data in the table ZFI_GL_MEMO
CALL FUNCTION 'SO_USER_READ_API1'
EXPORTING
USER = LS_USER
IMPORTING
USER_DATA = LS_USERDATA
EXCEPTIONS
USER_NOT_EXIST = 1
PARAMETER_ERROR = 2
X_ERROR = 3
OTHERS = 4.
UPDATE ZFI_GL_MEMO SET WF_STATUS = '2REJECTED'
APPROVERBY2 = SY-UNAME
APPROVERNAME2 = LS_USERDATA-FULLNAME
APPROVALDATE2 = SY-DATUM
COMMENTS = LT_ZFI_GL_MEMO-COMMENTS
WHERE WF_KEY = WFKEY.
COMMIT WORK.
LT_ZFI_GL_MEMO-APPROVERBY2 = SY-UNAME.
LT_ZFI_GL_MEMO-APPROVERNAME2 = LS_USERDATA-FULLNAME.
LT_ZFI_GL_MEMO-APPROVALDATE2 = SY-DATUM.
LT_ZFI_GL_MEMO-WF_STATUS = '2REJECTED'.
LT_ZFI_GL_MEMO-COMMENTS = LT_ZFI_GL_MEMO-COMMENTS.
APPEND LT_ZFI_GL_MEMO.
COMMIT WORK.
ENDIF.
ENDIF.
LEAVE TO SCREEN 0.
WHEN OTHERS.
CALL METHOD CL_GUI_CFW=>DISPATCH.
IF SY-SUBRC <> 0.
RAISE CNTL_ERROR.
ENDIF.
ENDCASE.
CLEAR FCODE.
SELECT SINGLE * FROM ZFI_GL_MEMO INTO LT_ZFI_GL_MEMO
WHERE WF_KEY = WFKEY.
ENDMODULE. " USER_COMMAND_0100 INPUT
*********************************************************************
Smartforms
ZFI_RECONCILIATION
Import:
ARCHIVE_INDEX TYPE TOA_DARA
ARCHIVE_INDEX_TAB TYPE TSFDARA
ARCHIVE_PARAMETERS TYPE ARC_PARAMS
CONTROL_PARAMETERS TYPE SSFCTRLOP
MAIL_APPL_OBJ TYPE SWOTOBJID
MAIL_RECIPIENT TYPE SWOTOBJID
MAIL_SENDER TYPE SWOTOBJID
OUTPUT_OPTIONS TYPE SSFCOMPOP
USER_SETTINGS TYPE TDBOOL
BUDAT TYPE BUDAT
BUKRS TYPE BUKRS
GJAHR TYPE GJAHR
HKONT TYPE HKONT
SKAT TYPE TXT50
P_DMBTR TYPE DMBTR
BANKN TYPE BANKNWRBTR TYPE WRBTR
WAERS TYPE WAERS
BANLANCE TYPE WRBTR
Export:
DOCUMENT_OUTPUT_INFO TYPE SSFCRESPDJOB_OUTPUT_INFO TYPE SSFCRESCL
JOB_OUTPUT_OPTIONS TYPE SSFCRESOP
Exceptions:
FORMATTING_ERRORINTERNAL_ERROR
SEND_ERROR
USER_CANCELED
Global Data:
ST_BAL_SHT TYPE ZST_GLT0AMT_CURRENT TYPE STRING
AMT_PREVIOUS TYPE STRING
FORM_NAME TYPE STRING
GV_COUNT TYPE INT4
IT_LINE TYPE INT4
PAGE_BREAK TYPE C1
Currency Fields:
ST_BAL_SHT-TSLVT CURR
ST_BAL_SHT-TSL01 CURR
ST_BAL_SHT-TSL02 CURR
ST_BAL_SHT-HSLVT CURR
ST_BAL_SHT-HSL01 CURR
ST_BAL_SHT-HSL02 CURR
*********************************************************************
ZFI_MEMO_RECORD
Import:
BANKN TYPE BANKN
WRBTR TYPE WRBTR
WAERS TYPE WAERS
BANLANCE TYPE WRBTR
IDENR TYPE IDENR
*********************************************************************
RULE:
FM: ZFI_GL_RECON_MEMO_RULE_AGENT
FUNCTION ZFI_GL_RECON_MEMO_RULE_AGENT.
*"----------------------------------------------------------------------
*"*"Local Interface:
*" TABLES
*" AC_CONTAINER STRUCTURE SWCONT
*" ACTOR_TAB STRUCTURE SWHACTOR
*" EXCEPTIONS
*" NOBODY_FOUND
*"----------------------------------------------------------------------
TABLES: ZFI_GL_REC_AGENT.
INCLUDE.
DATA: BUKRS TYPE ZFI_GL_REC_AGENT-BUKRS,
LEVEL2 TYPE ZFI_GL_REC_AGENT-LEVEL2.
SWC_GET_ELEMENT AC_CONTAINER 'BUKRS' BUKRS.
SWC_GET_ELEMENT AC_CONTAINER 'LEVEL2' LEVEL2.
SELECT SINGLE *
FROM ZFI_GL_REC_AGENT
WHERE BUKRS = BUKRS
AND LEVEL2 = LEVEL2.
IF SY-SUBRC EQ 0.
ACTOR_TAB-OTYPE = 'US'.
ACTOR_TAB-OBJID = ZFI_GL_REC_AGENT-BNAME.
APPEND ACTOR_TAB.
CLEAR ACTOR_TAB.
ELSE.
RAISE NOBODY_FOUND.
ENDIF.
ENDFUNCTION.
*"----------------------------------------------------------------------
*"*"Local Interface:
*" TABLES
*" AC_CONTAINER STRUCTURE SWCONT
*" ACTOR_TAB STRUCTURE SWHACTOR
*" EXCEPTIONS
*" NOBODY_FOUND
*"----------------------------------------------------------------------
TABLES: ZFI_GL_REC_AGENT.
INCLUDE
DATA: BUKRS TYPE ZFI_GL_REC_AGENT-BUKRS,
LEVEL2 TYPE ZFI_GL_REC_AGENT-LEVEL2.
SWC_GET_ELEMENT AC_CONTAINER 'BUKRS' BUKRS.
SWC_GET_ELEMENT AC_CONTAINER 'LEVEL2' LEVEL2.
SELECT SINGLE *
FROM ZFI_GL_REC_AGENT
WHERE BUKRS = BUKRS
AND LEVEL2 = LEVEL2.
IF SY-SUBRC EQ 0.
ACTOR_TAB-OTYPE = 'US'.
ACTOR_TAB-OBJID = ZFI_GL_REC_AGENT-BNAME.
APPEND ACTOR_TAB.
CLEAR ACTOR_TAB.
ELSE.
RAISE NOBODY_FOUND.
ENDIF.
ENDFUNCTION.
*********************************************************************Rule
*********************************************************************
Workflow Template
*********************************************************************