GL account issue with Electronic Bank Statement

Hi Gurus,
I need your help and advice with the following issue. We are using ECC 6.0 and have implemented electronic bank statement. It is working fine but we havea new requirements.
Presently all the incoming ACH (ACH in) are being posted to one GL account set- up for such payments +++++++++1. Going forward, we want to post customer incoming ACH payments to seperate GL account and all the other incoming ACH's should keep on posted to the old account +++++++++1. I do not have exposure to configuring EBS and not sure how should I configure this.
I would really apreciate if you can guide me with step by step details to do this set-up.
Thanks,
Best Regards,
Shalu

Usually ACH in or outgoing, the corresponding bank will send you a code.
so once you get into the config item for EBS
1. you create account symbols( ACHPAY and ACHPAY2) and assign accounts (++++1 and a debit account ++++2) respectively
2. Create posting keys, usually this is mimicked with a Z attached to the bank code for ACH payments (EX: 675 is the BAI code for ACH, create a posting key with Z675)
3. create rules for the same posting keys like debit and credit account symbols, doc types, what kind of postings it should post( clearing entry or posting to GL)
4. Create a transaction type and in the following step create external transaction types (usually bank BAI codes) and map them to posting rules and the processing types
5. finally map bank accounts to transaction types

Similar Messages

  • Issue with electronic bank statement upload

    Hi All,
              Presently I face an inssue in posting electronic bank statement upload (Tcode - ff_5).
    The scenario goes like this.
             First we do payment to vendor using 'f110' transaction.Here the document currency is different from local currency.Let us say we paid 100 EBP i.e, approximately 177 USD.
    After the payment we get statement from Bank (in this case BAI format).In the bank statement due to exchange rate difference the amount will not be exactly 177 USD but slightly different like 185 USD or may be 170 USD.
           At this point we have to upload this statement using transaction 'FF_5' to system.Here obviously the differential amount goes to the system ( 185 USD or 170 USD).
    Now the issue is we have to post this difference amount like USD 8 or USD 7 to a specific GL account ( 11800 or any other GL acc number ).
    The 'FF_5' transaction updates the tables 'FEBKO,FEBEP' by using the programs 'RFEBBU00',
    'RFEBBU10'.There is an exit also like 'FEB00001'. We can put this difference amount in one of the fields of FEBEP table by using this exit.
       But the point I don't know is how to post this difeerence amount 8 or 7 USD to a specific G/l account ? I could not locate in the above program 'RFEBBU00' where the posting happens ?
    Thanks for any help.
    Vinod.

    Hi Sharaad & Naga,
                         Thanks for the replies.One more doubt, Will I have to use these function modules inside the exit or do I need to change the sap standard program to incorporate these FM calls ?
    Thanks
    Vinod.

  • Issue with Electroni bank statement

    Hi Gurus
    while uplaoding the EBS file i got the error message tht do not have authrorization for FB01, i was not tried to post any thing with FB01 but i understood that i this program might caled the FB01 transactin in back ground
    when i see the statemtnt in FF67 it got posted for few documents and for few it was showing that to be posted
    what is the problme i cont understand, once it says that i dont have authorization it shuld not post all the transacton,
    any one can explain the reason ond the soltuion what to do with this
    regards
    Sunitha

    Yes you are right. Please give to your user authrorization for FB01and I think that EBS will be posted.
    Cheers

  • Automatic bank reconciliation with Electronic bank statement

    Deal All,
    As mentioned in the subject of this mail, this is to request for your inputs to advice the configuration steps with process for Configuration of Electronic Bank Statment in R3 to eneble the user for automatic bank reconciliation with clearing customer/vendor open items.Please send confi doc.
    Request you to provide documentation if possible along with your valuble advices.
    cvs

    Hi
    I implemented the EBS in my company 4 month ago and here are some advises on the problems i experienced in the setup process. As for the setup process it is straightforward just read the manual at help.sap.com.
    We used the MT940 format for importing bank statements from our bank.
    The first thing i would advice you to do is make a list of all the possible transactions that are to be handled by the EBS application.
    Then make estimation of how many payments that are recieved in constant structured way which the EBS can handle. (invoice number in the text)
    The people in our accounting department complained alot about the output format in the EBS not being userfreindly compared to the advises they recieved in e-mail form from the bank so if not the bulk of your payments can be processed automatically it might not be worth the trouble to implement it. (i still think they uses the the email to postprocess the transactions that was not automatically cleraed)
    Make sure you havent got any other applications handling some of the transactions that are contained in the bank statement because this wont work. eg. we had a program automatically placing fx trades on customer and bank account which meant that when we recieved the fx trade on the statement it was already placed and therefore had to be placed on a interims account for later reversal.
    We get alot of bankcharges on our payments and we set up the EBS to place them automatically on a bankcharge account if the difference between the recieved amount on the invoice was less that 30 dollars.(we just assume that a difference is a bank charge) This means that a customer if he wants to always can pay x dollars under the invoice amount because it will be automatically processed and therefore go unnoticed.
    Establish a contact in your bank who knows how their MT940 format has been structured. 
    Then contact your bank and get them to provide some test statements of old bank statements.
    Make sure that you are not the first customer for using the MT940 format or else you will end up being ginny pig for the banks possible mistakes.
    As i learned the way banks interpret the MT940 format guidelines can varry quite alot eg. the ocmt field our bank interpreted as the original payed amount in its original currency. SAP inprets this field as the recieved amount in its original currency and therefore it always try to clear the OCMT amount if availleble which meant it always tried to clear the original amount even though there had been taken som bankcharges underways.
    I also found out that our bank didnt really bother to specify the type of transaction (interest, fx contract, bank charges, check and so on) which meant we only had two external transaction codes availleble s103 for incomming payments and ntrf for outgoing payments. This gave alot of trouble as i had to identify the type of transaction through seach algorithms.
    Our bank also had trouble creating the MT940 file because it has a limited number of characters availleble which meant in the initial file that it only gave the first x characters of each line and then left out the rest. This meant that the text was broken into alot of pieces and you hardly ever had a complete invoice number to clear on. We had the bank altering their format so they now leave out text at the end of the transaction instead.
    In the implementation process we experienced that the EBS application created a payment advice each time the amount of the payment didnt match the invoice in the system. We implemented a note from service.sap which disabled this and just assigned the difference to a bankcharge account.
    I dont know if you can use these advices but just felt i would try to warn you about the potential problems that i experienced in the process. .
    If you have concrete questions to the EBS setup feel free to contact me and i will see if i can help you.

  • Thomson Treasura - replace with Electronic Bank Statement

    Hi All,
    We are planning to implement EBS in our co and replace an external Software called Thomson treasura. I would like to know what sort of reports are availble through the EBS in SAP. Thomson treasura gives the ability to generate several reports, so I was just curious to know if we replace this with EBS, will we be able to get the desired reports.
    Thanks in advance
    Krishna

    Hi,
    This link would provide the complete information about the setting up of EBS
    https://www.sdn.sap.com/irj/scn/go/portal/prtroot/docs/library/uuid/a97fa590-0201-0010-04ba-beed13d6cc7e?overridelayout=true
    http://help.sap.com/bp_bblibrary/500/Documentation/J03_BankStmt_EN_US.doc#_Toc55367415
    http://srilogix.com/casesWhitepapers/Electronic%20Bank%20Statement.pdf
    SAP has provided several reports for the EBS. the EBS report can be accessed through FF.6. As the data gets stored in at table level, there is an option to create custom specific reports as per the user requirements.
    regards,
    radhika

  • Electronic Bank Statement and Bank Accounts change...Statement Upload

    Hi,
    I have an issue with electronic bank processing.
    Currently my client is using A100 company code and bank account 123456 gl code 45000 and they are updating bank statements through electronic bank statement.
    Now they have activated A200 company code and they want to use same bank account 123456 and gl code 45000 in new company code and the entire electronic bank statements need to be updated into A200 and A100 company code will exist in sap but client dont want to use this.
    What customizations need to be done in SAP and how system will come to know A200 company code need to be updated when they update electronic bank statement next time?
    Is there any specific customization in sap that shifts company codes and gl codes for electronic bank statement uploads?
    What will happen to historic data when the same gl codes are used with different company codes?
    Once the F110 is executed there will be batch job which will run to upload file...do we need to change anything here....
    Jaya.

    Hello-
    Are you saying going forward you are are not going to use A100 and start using A200? If so, from an EBS config standpoint, all you would have to do is use the same transaction type and remove the assignment of old company code & bank account + bank key to the transaction type and enter the new assignment to new company code.
    Next, make sure to create all the bank accounts and clearing accounts in the new company code (assuming all the config related to bank is completed).
    This is it. When you upload using FF.5, it will look at the bank account number from the upload file and look for the company code.
    Hope this helps.
    Shail

  • Electronic Bank statement - Configuration

    Dear All,
    Anybody have complete configuration steps for Electronic Bank statement. If you have plse send me .
    Raj

    Hi Raja
    please go through the follwoing steps for configs
    To set up Electronic Bank Statements (EBS) 
    1. Create House Bank and Account ID (FI12) 
    2. Setup EDI Partner Profile for FINSTA Message Type (WE20) 
    3. Configure Global Settings for EBS (IMG) 
         - Create Account Symbols 
         - Assign Accounts to Account Symbols 
         - Create Keys for Posting Rules 
         - Define Posting Rules 
         - Create Transaction Types 
         - Assign External Transaction Types to Posting Rules 
         - Assign Bank Accounts to Transaction Types 
    4. Define Search String for EBS(Optional) 
        - Search String Definition 
        - Search String Use 
    5. Define Program and Variant Selection 
    Additional information is also available in the SAP Library under:
    Financial Accounting > Bank Accounting (FI-BL) > Electronic Bank Statement > 
    Electronic Account Statement Customizing.
    The following are the steps for BRS:
    Create Bank Master Data - This can be created through T.Code FI01 or you can also create the house bank through IMG/FA/Bank accounting/Bank account
    2. Define House Bank
    3. Set up Bank selection payment programe-  IMG/FA/ARAP/BT/AUTOIP/PM/Bank selection for payment prg.
       a. setup all co codes for payment transaction - Customer and vendors
       b.setup paying co codes for payment transactions
       c.setup payment method per country
       d.setup payment method per co code for payment transaction
       e.setup bank determination for payment transaction
    Please go for Cheque mangement using T code FCHI     (IMG/FA/ARAP/BT/OP/AutoOp/PaymentMedia/CheckManagement) and for void reasons FCHV. You can create Bank Reconcilliation statement by TC FF67 (SAP/AC/Treasury/CashManagement/Incomings/ManualBankStatement) . Don't forget to keep the opening Balance as zero. Use FBEA for post process.
    All the steps together will lead to (FF67) Bank reconciliation statement.
    and furthur notes see the below site
    http://help.sap.com/saphelp_erp2005vp/helpdata/en/25/a6c52add1cb44a86ff77c175baf907/frameset.htm
    if you feel it is useful award points by way of thanks.
    nagesh

  • BAI file clearing cheque outgoing sub account - Electronic Bank Statement

    Hi,
    I am facing problem with clearing the cheque when uploaded bank statement through FF_5 (electronic)
    If I use the following file, there is no problem in clearing the cheque (this prepared by me for test purpose)
    01,EBSTest,EBSTest,101005,0944,1,99,99,2,,,,,,,/
    02,EBSTest,609242,1,101005,0944,GBP,,,,,,,,,/
    03,0077503702,GBP,010,200000,,,015-100000,,,045-100000,,,/
    16,475,100000,Z,,,Check #150000,,,,,,,,,/
    49,100000,99,,,,,,,,,,,,,/
    98,100000,1,99,,,,,,,,,,,,/
    99,100000,1,99,,,,,,,,,,,,/
    The following is the real file (where it is failing to recognise the cheque number)
    16,475,52378,0,GB84197,0000000027827/
    88,YOUR REF=027827,CHECK NO=00027827,REMARK=RPS BATCH 26390434 027827 SECTION 1
    88, ITEMS 027827
    I tested interpretation algorithms 11 and 13, but still not use.
    Can you please tell how can I clear the items in sub account (cheque outgoing account) based on the cheque number when I upload the bank statement.
    Any valid suggestions will be highly apprecicated.
    Regards,
    Ravi

    Thank you very much for your answer.
    I tested with leading exactly same as FCHN but still somehow it is not working. Changing the electronic bank statement manually may not be possible due to security concern. They the bank statement is week and it has high volume of entries.

  • Electronic bank statement with CTX payment advice

    Hi:
    I'm trying to figure out how I can process an electronic bank statement that contains the payment advice embedded as a CTX addendum. I'm finding info how to issue an ACH and add the CTX addendi. But how can I process it when that info comes back from the bank on the electronic bank statement and I'm on the receiving end of that transaction?
    Of course I'm looking to clear the corresponding customer open items along the provided payment advice info.
    I do see an interpretation algorithm 032, which will look at a payment advice that has already been received prior to the bank statement. That's close, but not quite it.
    Maybe the answer is 'functionality not available in SAP standard' and that will be just fine. I've got the list of all the various enhancement points for the process and if that's the route I need to take, I'll be on my merry enhancing way...
    Any pointers highly welcome!
    Thanks
    Stephen

    Hello,
    From FF.5, if you are using interpretation algorithms 11, 12 or 13,
    the check encashment date ( PAYR-BANCD ) will be updated in PAYR when
    the check is neither voided nor cashed. The relevant code is as under
    RFEBBU10. Source Code :
    CASE FEBEP-INTAG.
          WHEN '000'.                 <- A when for every Int. Algorithm
          WHEN '011'.
                PERFORM SEARCH_CHECK_IN_PAYR.
    FORM SEARCH_CHECK_IN_PAYR.
      check is not voided nor cashed
        SELECT SINGLE * FROM BKPF WHERE BUKRS = FEBKO-BUKRS
                                    AND BELNR = PAYR-VBLNR
                                    AND GJAHR = PAYR-GJAHR.
        IF SY-SUBRC = 0.
          PAYR-XBANC = 'X'.
          PAYR-BANCD = FEBEP-VALUT.
      So, the field PAYR-BANC is always updated with FEBEP-VALUT
      (Value Date) and there is no standard way to avoid it.
    If the check number in the statement is wrong, then the interpretation
    algorithm could not update the encashment date. The interpretation
    algorithm run only when the electronic bank statement is loaded
    (hence only once) and not when FEBA is processed.
    In FEBA (SAPMF40A), there is no further update in PAYR, and hence you
    need to go to the Cheque Register and change the date manually in this case.
    Check Note 115147 for further information.
    Regards,
    REnan

  • Electronic Bank Statement - Check register not updated with encashment date

    I need help in Electronic Bank Statement. After uploading the bank statement file, i got the document number posted, but when i looked in Check register for the checks it's still showing up as outstanding check and there is no encashment date updated with this check.
    We received file from bank in BAI format and use t.code ff_5 to upload the bank statement file. Algorithm 011 already assigned in Config. Please help me to solve this issue.

    Encashment field did not get updated....
    This happens to us in the following instance...
    Our checks numbers are as follows with zeroes in front... 0000000121558
    The BAI file from the bank has the number listed as 121558. We have a process to convert the BAI file to a .txt format and add seven zeroes in front of the number in the file before processing. We had a new user that forgot this step. Without the zeroes added to the file to match the check numbers, our encashment field did not get updated. We had to do it manually.

  • Electronic bank statement MT940 post with FB05

    Hi expert,
    I am configuring Electronic bank statement with MT940 (field 86 unstructure) format and when i upload the text file in FF_5. The system will post to FB01 but i would like to post FB05 and searching for vendor open item and make clearing.
    My text file as below:
    :20:20100524
    :25:50070010/10000100
    :28C:20210/05
    :60F:D100524EUR346
    :61:100524DX50NC01//CHQ
    :86:C01?20?1500000002?145001
    :62F:D100524EUR396
    Please advice which field or word i need to change to post with FB05?
    Thanks.
    regards,
    ng chong chuan

    hi  Anand Raichura,
    7 Clear deb.subledg.ac & 8 Clear cred.subl.acct is maintain in create account symbols? or assign accounts to account symbol? or create keys for posting rules? or define posting rules? or create transaction type? or assign external transaction types to posting rules? or assign bank account to transaction types?
    Beside, is my text file as below is correct? or need to add some word to define on FB05 vendor clearing?
    :20:20100524
    :25:50070010/10000100
    :28C:20210/05
    :60F:D100524EUR346
    :61:100524DX50NC01//CHQ
    :86:C01?20?1500000002?145001
    :62F:D100524EUR396
    thanks.
    regards,
    ng chong chuan

  • Electronic bank statement processing failed with error

    Hi All,
    While processing the electronic bank statement incoming file, it created an error like
    'Total of Line Items in line item file not the same as in statement file"
    how do I check if the control totals matches..?
    rgds,

    You should give the exact message, with message number.
    If it is FB 777, "DTAUS: Number of line items not equal to control total; see long text", you should see the long text. I think it contains sufficient information:
    Text                                                                               
    DTAUS: Number of line items not equal to control total; see long text
    Diagnosis                                                                               
    data records of record type 'C' were handed over in the file you    
        imported. There must be  data records according to the control total 
        from the fourth field of record type 'E'.                                                                               
    Processing was therefore terminated.                                                                               
    The DTAUS file was not imported into the bank data clipboard. No     
        postings were generated.                                                                               
    Procedure                                                                               
    Inform your credit institution about the error which has occurred and
        let them give you a correct DTAUS file.                                                                               
    No actions are necessary in the SAP System.

  • Electronic bank statement config- account determination

    Hi,
    I want to post the following entry through electronic bank statement upload.
    Bank Main GL account DR
    TO Bank collection clearing account(Sub account)
    In the posting rule I have given debit posting key& account symbol for main account posting. But credit side i did not give posting key and account symbol. I have selected the option Clear credit GL account.
    However system is not picking credit GL account automatically eventhough algaritham is matching to clear automatically.
    Some peoples in team  are advising to add House bank and account ID fields in the create/bank/interest tab of Collection clearing account GL. Some other experts are advising to maintain credit side  posting key & account symbol also in the posting rule itself.
    Please let us know what should be done to propose credit GL and clear automatically by the system .
    Regards,
    Seetha  Ramaiah
    91-8978977978

    In the posting rule, you need to maintain an account symbol for the credit side.  Since you have selected the clear credit GL account option, you need to leave the posting key blank on the credit site.
    Regards,
    Shannon

  • Automatic Import of Electronic Bank Statements (EBS)

    Hi SAP Gurus,
    We want to solve the following issue:
    Daily we receive multiple Electronic Bank Statements by means of banking Communication Software (BCS).
    Those EBS files are stored on our SAP Application Server, filetype = SWIFT MT940 format,
    and the file name contains a date and time stamp.
    File name example: MT940.90910077527_20101124_210421_167660
    Currently the import of these EBS-files is done manually via transaction FF_5 (program: RFEBKA00).
    We want to automate this import process.
    Every time a new EBS-files arrives (in a specific directory) on the application sever
    a signal (including the filename) should be send to SAP, so SAP knows there is a new EBS-file available for import.
    SAP now runs program RFEBKA00, with the provide filename, in the background.  
    Any ideas how to do this?
    Some tech. info:
    Windows Server 2003 R2 SP2 64-bit
    Oracle 10.2.0.4
    SAP R/3 Enterprise 47x200  
    Thanks,
    Roger Vanaubel

    Hi
    I think there are several ways to do it. In our case, we have a program which concatenates all received files into a single file and which launches RFEBKA00. It runs at fixed time, outside the working hours of accounting clerks. It is possible to trigger the program at file receipt, but there are problems if somebody is working in FEBA at the same time RFEBKA00 is working on the same bank account: then RFEBKA00 stops without doing all postings.
    If you trigger RFEBKA00 at file receipt, you may have several jobs running in parallel, and if 2 bank statements received in separate files are for the same account, you will have the same problem.

  • Electronic Bank Statement (EBS)

    Hi All,
    My Client is implemented Electronic Bank Statement using BAI format.
    GL Accounts set up is wrong (all bank accounts should be clearing type accounts (Open Item managed, except Operating Account (Main bank account))),but these accounts are not set up as open item management.
    How can I handle this issue and is it possible to create new accounts or any other alternative solution? Any help is appreciated.
    I will assign points.
    Thanks,
    Rau

    HI
    Before executing the programe RFSEPA02 ask your ABAP person to convert the programe to Zprograme as below so that this problem will solve you
    *ZFI_OPEN_ITEM_MANAGE-TO APPLY OPEN ITEM MANAGE TICK
    *& Report  ZFI_OPEN_ITEM_MANAGE
    REPORT  ZFI_OPEN_ITEM_MANAGE MESSAGE-ID FH LINE-SIZE 80.
    THIS IS NOT A STANDARD PROGRAM.
    IT IS ONLY INCLUDED FOR CONVENIENCE IN CASE IT WILL BE NEEDED.
    ONLY USE IT AFTER CONSULTING WITH SAP. S6DK909852
    *REPORT RFSEPA02 MESSAGE-ID FH LINE-SIZE 80.
    INCLUDE FSACHCDF.
    INCLUDE FSACHCDV.
    TABLES: BSIS,
            BSAS,
            BSEG,
            BKPF,
            GLT0,
            T001.
    DATA: BEGIN OF T_BSXX OCCURS 100.
            INCLUDE STRUCTURE BSIS.
    DATA: END OF T_BSXX.
    DATA: BEGIN OF T_LISTE OCCURS 300,
            GJAHR    LIKE BKPF-GJAHR,
            BELNR    LIKE BKPF-BELNR,
            SORT     TYPE I,
            TABLE(4) TYPE C,
            TYPE     TYPE C,
            OK       TYPE C,
          END OF T_LISTE.
    DATA: D_MAX         LIKE SY-TFILL VALUE '100',
          D_BELNR       LIKE BSEG-BELNR,
        D_TFILL       LIKE SY-TFILL.        "<<<< DELETE - NOTE 70203
          D_TFILL       LIKE SY-TFILL,     "<<<< INSERT - NOTE 70203
          D_STORNO      TYPE C.            "<<<< INSERT - NOTE 70203
    DATA: BALANCE_ITEMS   LIKE GLT0-HSL01,
          BALANCE_ACCOUNT LIKE GLT0-HSL01.
    *>>>> BEGIN OF INSERTION - NOTE 66156 <<<<
    DATA: XGLEDTAB LIKE GLEDTAB OCCURS 1 WITH HEADER LINE.
    DATA: BEGIN OF BK_METHODE,
            HWAE1 LIKE T001-WAERS,
            HWAE2 LIKE T001-WAERS,
            HWAE3 LIKE T001-WAERS,
            CURT1 LIKE X001-CURT2,
            CURT2 LIKE X001-CURT2,
            CURT3 LIKE X001-CURT2,
          END OF BK_METHODE.
    DATA: BEGIN OF T_BALANCE_ITEMS_HW OCCURS 1,
            WAERS1 LIKE T001-WAERS,
            VALUE1 LIKE GLT0-HSLVT,
            WAERS2 LIKE T001-WAERS,
            VALUE2 LIKE GLT0-HSLVT,
            WAERS3 LIKE T001-WAERS,
            VALUE3 LIKE GLT0-HSLVT,
          END OF T_BALANCE_ITEMS_HW.
    DATA: BEGIN OF T_BALANCE_ACCOUNT_HW OCCURS 1,
            WAERS1 LIKE T001-WAERS,
            VALUE1 LIKE GLT0-HSLVT,
            WAERS2 LIKE T001-WAERS,
            VALUE2 LIKE GLT0-HSLVT,
            WAERS3 LIKE T001-WAERS,
            VALUE3 LIKE GLT0-HSLVT,
          END OF T_BALANCE_ACCOUNT_HW.
    DATA: BEGIN OF T_BALANCE_ITEMS_TW OCCURS 1,
            WAERS LIKE GLT0-RTCUR,
            VALUE LIKE GLT0-TSLVT,
          END OF T_BALANCE_ITEMS_TW.
    DATA: BEGIN OF T_BALANCE_ACCOUNT_TW OCCURS 10,
            WAERS LIKE GLT0-RTCUR,
            VALUE LIKE GLT0-TSLVT,
          END OF T_BALANCE_ACCOUNT_TW.
    *>>>> END OF INSERTION - NOTE 66156 <<<<
    DATA: NUM_BSEG_SELECT LIKE SY-TFILL,
          NUM_BSEG_UPDATE LIKE SY-TFILL,
          NUM_BSIS_INSERT LIKE SY-TFILL,
          NUM_BSIS_SELECT LIKE SY-TFILL,
          NUM_BSIS_UPDATE LIKE SY-TFILL,
          NUM_BSAS_INSERT LIKE SY-TFILL,
          NUM_BSAS_SELECT LIKE SY-TFILL,
          NUM_BSAS_UPDATE LIKE SY-TFILL.
    CONSTANTS: CHAR_I     TYPE C VALUE 'I',
               CHAR_S     TYPE C VALUE 'S',
               CHAR_U     TYPE C VALUE 'U'.
    *PARAMETER:     P_BUKRS  LIKE BSEG-BUKRS OBLIGATORY.
                                           "<<<< DELETE NOTE - 62751
    *PARAMETER:     P_SAKNR  LIKE BSEG-HKONT OBLIGATORY.
                                           "<<<< DELETE NOTE - 62751
    *>>>> BEGIN OF INSERTION - NOTE 62751 <<<<
    PARAMETERS:     P_BUKRS  LIKE BKPF-BUKRS OBLIGATORY.
    PARAMETERS:     P_SAKNR  LIKE SKA1-SAKNR OBLIGATORY
                                      MATCHCODE OBJECT SAKO.
    *>>>> END OF INSERTION - NOTE 62751 <<<<
    SELECT-OPTIONS P_BELNR  FOR  BSEG-BELNR.
    SELECTION-SCREEN SKIP 1.
    SELECTION-SCREEN BEGIN OF BLOCK B01 WITH FRAME TITLE TEXT-B01.
    PARAMETERS:    P_LISTE  AS CHECKBOX DEFAULT 'X'.    " list protocol on
    SELECTION-SCREEN END OF BLOCK B01.
    INITIALIZATION.
      CALL FUNCTION 'POPUP_DISPLAY_TEXT'
           EXPORTING
                POPUP_TITLE    = ' '
                TEXT_OBJECT    = 'RFSEPA02'
           EXCEPTIONS
                TEXT_NOT_FOUND = 1
                OTHERS         = 2.
    *{   DELETE         DMUK903910                                        1
    LEAVE PROGRAM.
    *}   DELETE
    AT SELECTION-SCREEN ON P_SAKNR.
      PERFORM CHECK_ACCOUNT.               " locked for posting?
      PERFORM CHECK_ACCOUNT2.              "<<<< INSERT - NOTE 66156
    PERFORM ENQUEUE_ACCOUNT.             "<<<< DELETE - NOTE 65191
    START-OF-SELECTION.
      PERFORM ENQUEUE_ACCOUNT.             "<<<< INSERT - NOTE 65191
      PERFORM CHECK_AUTHORITY_SKA1_BUK.
      PERFORM CHECK_AUTHORITY_SKA1_BES.
    PERFORM CHECK_ACCOUNT_BALANCE.       "<<<< DELETE - NOTE 66156
      PERFORM CHECK_ACCOUNT_BALANCE_2.     "<<<< INSERT - NOTE 66156
    *--- BSIS -
      CLEAR D_BELNR.
      CLEAR T_LISTE. REFRESH T_LISTE.
      CLEAR T_BSXX.  REFRESH T_BSXX.
      DO.
        PERFORM SELECT_ITEMS USING 'BSIS' D_TFILL.
        IF D_TFILL EQ 0.
          EXIT.
        ENDIF.
        LOOP AT T_BSXX.
          PERFORM BKPF_UPDATE.             "<<<< INSERT - NOTE 70203
          PERFORM BSEG_UPDATE.
          PERFORM BSXX_UPDATE USING 'BSIS'.
        ENDLOOP.
        PERFORM WRITE_LIST_PROTOCOL.
        COMMIT WORK.
      ENDDO.
    *--- BSAS -
      CLEAR D_BELNR.
      CLEAR T_LISTE. REFRESH T_LISTE.
      CLEAR T_BSXX.  REFRESH T_BSXX.
      DO.
        PERFORM SELECT_ITEMS USING 'BSAS' SY-TFILL.
        IF SY-TFILL EQ 0.
          EXIT.
        ENDIF.
        LOOP AT T_BSXX.
          PERFORM BSEG_UPDATE.
          PERFORM BSXX_UPDATE USING 'BSAS'.
        ENDLOOP.
        PERFORM WRITE_LIST_PROTOCOL.
        COMMIT WORK.
      ENDDO.
      PERFORM WRITE_PROTOCOL.
    END-OF-SELECTION.
      PERFORM CHANGE_ACCOUNT.
      PERFORM DEQUEUE_ACCOUNT.
    TOP-OF-PAGE.
      ULINE.
      WRITE:/   SY-VLINE,
             2  TEXT-001,
             25 P_SAKNR INTENSIFIED OFF,
             80 SY-VLINE.
      WRITE:/   SY-VLINE,
             2  TEXT-002,
             25 P_BUKRS INTENSIFIED OFF,
             80 SY-VLINE.
      ULINE.
      IF P_LISTE = 'X'.
        WRITE:/          SY-VLINE,
                  2(10)  TEXT-S01 COLOR COL_HEADING,
                  12     SY-VLINE,
                  13(4)  TEXT-S02 COLOR COL_HEADING,
                  17     SY-VLINE,
                  18(62) TEXT-S03 COLOR COL_HEADING,
                  80     SY-VLINE.
      ENDIF.
    *&      Form  SELECT_ITEMS
    FORM SELECT_ITEMS USING TABLE TYPE C
                            FILL  LIKE SY-TFILL.
      SELECT * FROM (TABLE) INTO TABLE T_BSXX
                            UP TO D_MAX ROWS
                           WHERE BUKRS EQ P_BUKRS
                             AND HKONT EQ P_SAKNR
                             AND BELNR IN P_BELNR
                             AND XOPVW EQ SPACE.
      FILL = SY-DBCNT.
    *--- PROTOCOL -
      LOOP AT T_BSXX.
        PERFORM SAVE_PROTOCOL USING T_BSXX-BELNR T_BSXX-GJAHR
                                    1 TABLE CHAR_S 1.
      ENDLOOP.
      SORT T_BSXX BY MANDT BUKRS BELNR GJAHR.
    ENDFORM.                               " SELECT_ITEMS
    *&      Form  BSEG_UPDATE
    FORM BSEG_UPDATE.
      SELECT SINGLE * FROM BSEG WHERE BUKRS = T_BSXX-BUKRS
                                AND   GJAHR = T_BSXX-GJAHR
                                AND   BELNR = T_BSXX-BELNR
                                AND   BUZEI = T_BSXX-BUZEI.
      IF BSEG-KTOSL = 'MVA' OR BSEG-KTOSL = 'VVA'.
        MESSAGE A145(FH) WITH BSEG-HKONT.
      ENDIF.
      IF BSEG-KOART = 'M'.
        MESSAGE A144(FH) WITH P_SAKNR BSEG-BSCHL.
      ENDIF.
      UPDATE BSEG SET XOPVW = 'X'
                WHERE BUKRS EQ T_BSXX-BUKRS
                  AND GJAHR EQ T_BSXX-GJAHR
                  AND BELNR EQ T_BSXX-BELNR
                  AND BUZEI EQ T_BSXX-BUZEI.
    *--- PROTOCOL -
      PERFORM SAVE_PROTOCOL USING T_BSXX-BELNR T_BSXX-GJAHR
                                  2 'BSEG' CHAR_U SY-DBCNT.
    ENDFORM.                               " BSEG_UPDATE
    *&      Form  BSIS_UPDATE
    FORM BSXX_UPDATE USING TABLE TYPE C.
      T_BSXX-XOPVW = 'X'.
      IF D_STORNO = 'X' AND TABLE = 'BSIS'."<<<< INSERT - NOTE 70203
        T_BSXX-XSTOV = SPACE.              "<<<< INSERT - NOTE 70203
      ENDIF.                               "<<<< INSERT - NOTE 70203
      UPDATE (TABLE) FROM T_BSXX.
    *--- PROTOCOL -
      PERFORM SAVE_PROTOCOL USING T_BSXX-BELNR T_BSXX-GJAHR
                                  1 TABLE CHAR_U SY-DBCNT.
    ENDFORM.                               " BSIS_UPDATE
    *&      Form  CHECK_ACCOUNT_BALANCE
    FORM CHECK_ACCOUNT_BALANCE.
      DATA:   D_GJAHR LIKE BSEG-GJAHR.
    Account balance
      PERFORM READ_T001 USING P_BUKRS.
      PERFORM READ_CURRENT_YEAR CHANGING D_GJAHR.
      PERFORM READ_GLDB USING P_BUKRS P_SAKNR D_GJAHR.
      PERFORM READ_BSIS USING P_BUKRS P_SAKNR.
      IF BALANCE_ITEMS NE BALANCE_ACCOUNT.
        MESSAGE E099.
      Summe der Einzelposten stimmt nicht mit Kontensaldo überein. ->
      ENDIF.
    ENDFORM.                               " CHECK_ACCOUNT_BALANCE
    *&      Form  READ_T001
    FORM READ_T001 USING BUKRS LIKE T001-BUKRS.
      SELECT SINGLE * FROM T001 WHERE BUKRS = BUKRS.
      IF SY-SUBRC <> 0.
        MESSAGE E001 WITH BUKRS.
      ENDIF.
    ENDFORM.                               " READ_T001
    *&      Form  READ_CURRENT_YEAR
    FORM READ_CURRENT_YEAR CHANGING GJAHR LIKE T009B-BDATJ.
      CALL FUNCTION 'DATE_TO_PERIOD_CONVERT'
           EXPORTING
                I_DATE         = SY-DATUM
                I_PERIV        = T001-PERIV
           IMPORTING
                E_GJAHR        = GJAHR
           EXCEPTIONS
                T009_NOTFOUND  = 1
                INPUT_FALSE    = 1
                T009B_NOTFOUND = 1.
    ENDFORM.                               " READ_CURRENT_YEAR
    *&      Form  READ_GLDB
    FORM READ_GLDB USING XBUKRS LIKE GLT0-BUKRS
                         XSAKNR LIKE GLT0-RACCT
                         XGJAHR LIKE GLT0-RYEAR.
      SELECT * FROM GLT0
               WHERE RLDNR = '00'
               AND   RRCTY = '0'
               AND   RVERS = '001'
               AND   BUKRS = XBUKRS
               AND   RYEAR = XGJAHR
               AND   RACCT = XSAKNR.
        PERFORM CALCULATE_BALANCE.
      ENDSELECT.
    ENDFORM.                               " READ_GLDB
          FORM CALCULATE_BALANCE                                        *
    FORM CALCULATE_BALANCE.
      DATA: BALANCE  LIKE GLT0-TSL01.
      BALANCE_ACCOUNT = BALANCE_ACCOUNT + GLT0-HSLVT.
      DO GLT0-RPMAX TIMES
         VARYING BALANCE FROM GLT0-HSL01 NEXT GLT0-HSL02.
        BALANCE_ACCOUNT = BALANCE_ACCOUNT + BALANCE.
      ENDDO.
    ENDFORM.                               " CALCULATE_BALANCE
    *&      Form  READ_BSIS
    FORM READ_BSIS USING BUKRS LIKE BSIS-BUKRS
                         SAKNR LIKE BSIS-HKONT.
      SELECT * FROM  BSIS
             WHERE  BUKRS = BUKRS
             AND    HKONT = SAKNR.
        IF BSIS-SHKZG = 'S'.
          BALANCE_ITEMS = BALANCE_ITEMS  + BSIS-DMBTR.
        ELSE.
          BALANCE_ITEMS = BALANCE_ITEMS  - BSIS-DMBTR.
        ENDIF.
      ENDSELECT.
    ENDFORM.                               " READ_BSIS
    *&      Form  CHANGE_ACCOUNT
    FORM CHANGE_ACCOUNT.
      SKB1       = *SKB1.
      SKB1-XOPVW = 'X'.
      OBJECTID    = T001-KTOPL.
      OBJECTID+4  = SKB1-SAKNR.
      OBJECTID+14 = SKB1-BUKRS.
      UPD_SKB1    = 'U'.
      UTIME       = SY-UZEIT.
      UDATE       = SY-DATUM.
      USERNAME    = SY-UNAME.
      PERFORM CD_CALL_SACH.
      CALL FUNCTION 'GL_ACCOUNT_IN_COMPANY_UPDATE'
           EXPORTING
                I_SKB1 = SKB1.
      COMMIT WORK.
    ENDFORM.                               " CHANGE_ACCOUNT
    *&      Form  ENQUEUE_ACCOUNT
    FORM ENQUEUE_ACCOUNT.
      CALL FUNCTION 'ENQUEUE_EFSKB1'
           EXPORTING
                BUKRS          = P_BUKRS
                SAKNR          = P_SAKNR
           EXCEPTIONS
                FOREIGN_LOCK   = 1
                SYSTEM_FAILURE = 2.
      CASE SY-SUBRC.
        WHEN 1.
          MESSAGE E042 WITH P_SAKNR P_BUKRS.
        WHEN 2.
          MESSAGE E038 WITH P_SAKNR P_BUKRS.
      ENDCASE.
    ENDFORM.                               " ENQUEUE_ACCOUNT
    *&      Form  DEQUEUE_ACCOUNT
    FORM DEQUEUE_ACCOUNT.
      CALL FUNCTION 'DEQUEUE_EFSKB1'
           EXPORTING
                BUKRS          = P_BUKRS
                SAKNR          = P_SAKNR
           EXCEPTIONS
                SYSTEM_FAILURE = 1.
    ENDFORM.                               " DEQUEUE_ACCOUNT
          FORM WRITE_LIST_PROTOCOL                                      *
          writes list protocol                                          *
    FORM WRITE_LIST_PROTOCOL.
      DATA: TEXT(62)   TYPE C,
            SAVE_BELNR LIKE BKPF-BELNR.
      DESCRIBE TABLE T_LISTE LINES SY-TFILL.
      CHECK P_LISTE = 'X'.
      CHECK SY-TFILL > 0.
      SORT T_LISTE BY GJAHR BELNR SORT TYPE.
      LOOP AT T_LISTE.
        CHECK T_LISTE-OK = 1.
        CASE T_LISTE-TABLE.
          WHEN 'BSEG'.
            CASE T_LISTE-TYPE.
              WHEN CHAR_S.
                TEXT = TEXT-BE1.
              WHEN CHAR_U.
                TEXT = TEXT-BE2.
            ENDCASE.
          WHEN 'BSIS'.
            CASE T_LISTE-TYPE.
              WHEN CHAR_S.
                TEXT = TEXT-XX1.
                REPLACE '&TAB' WITH T_LISTE-TABLE INTO TEXT.
              WHEN CHAR_U.
                TEXT = TEXT-XX2.
                REPLACE '&TAB' WITH T_LISTE-TABLE INTO TEXT.
              WHEN CHAR_I.
                TEXT = TEXT-XX3.
                REPLACE '&TAB' WITH T_LISTE-TABLE INTO TEXT.
            ENDCASE.
          WHEN 'BSAS'.
            CASE T_LISTE-TYPE.
              WHEN CHAR_S.
                TEXT = TEXT-XX1.
                REPLACE '&TAB' WITH T_LISTE-TABLE INTO TEXT.
              WHEN CHAR_U.
                TEXT = TEXT-XX2.
                REPLACE '&TAB' WITH T_LISTE-TABLE INTO TEXT.
              WHEN CHAR_I.
                TEXT = TEXT-XX3.
                REPLACE '&TAB' WITH T_LISTE-TABLE INTO TEXT.
            ENDCASE.
        ENDCASE.
        AT NEW BELNR.
          ULINE.
          WRITE:/       SY-VLINE,
                  2     T_LISTE-BELNR COLOR COL_KEY,
                  12    SY-VLINE,
                  13    T_LISTE-GJAHR COLOR COL_KEY,
                  17    SY-VLINE.
        ENDAT.
        IF SAVE_BELNR <> T_LISTE-BELNR.
          WRITE: 18(62) TEXT COLOR COL_NORMAL INTENSIFIED OFF,
                    80  SY-VLINE.
          SAVE_BELNR = T_LISTE-BELNR.
        ELSE.
          WRITE:/       SY-VLINE,
                 12     SY-VLINE,
                 17     SY-VLINE,
                 18(62) TEXT COLOR COL_NORMAL INTENSIFIED OFF,
                 80     SY-VLINE.
        ENDIF.
      ENDLOOP.
      ULINE.
    ENDFORM.                               " WRITE_LIST_PROTOCOL
          FORM WRITE_PROTOCOL                                           *
          writes normal protocol                                        *
    FORM WRITE_PROTOCOL.
      DATA: TEXT(62)   TYPE C.
    *- selected items-----
      IF NOT ( NUM_BSIS_SELECT = 0  ).
        TEXT = TEXT-NX1.
        REPLACE '&TAB' WITH 'BSIS' INTO TEXT.
        WRITE:/        SY-VLINE,
                2(58)  TEXT COLOR COL_KEY INTENSIFIED ON,
                60(1)  SY-VLINE,
                61(19) NUM_BSIS_SELECT COLOR COL_NORMAL INTENSIFIED OFF,
                80     SY-VLINE.
      ENDIF.
      IF NOT ( NUM_BSAS_SELECT = 0 ).
        TEXT = TEXT-NX1.
        REPLACE '&TAB' WITH 'BSAS' INTO TEXT.
        WRITE:/        SY-VLINE,
                2(58)  TEXT COLOR COL_KEY INTENSIFIED ON,
                60(1)  SY-VLINE,
                61(19) NUM_BSAS_SELECT COLOR COL_NORMAL INTENSIFIED OFF,
                80     SY-VLINE.
      ENDIF.
      IF NOT ( NUM_BSEG_SELECT = 0 ).
        WRITE:/       SY-VLINE,
                2(58) TEXT-NB1 COLOR COL_KEY INTENSIFIED ON,
                60(1)  SY-VLINE,
                61(19) NUM_BSEG_SELECT COLOR COL_NORMAL INTENSIFIED OFF,
                80     SY-VLINE.
      ENDIF.
    *- changed items-----
      IF NUM_BSIS_UPDATE > 0.
        TEXT = TEXT-NX2.
        REPLACE '&TAB' WITH 'BSIS' INTO TEXT.
        WRITE:/        SY-VLINE,
                 2(58) TEXT COLOR COL_KEY INTENSIFIED ON,
                60(1)  SY-VLINE,
                61(19) NUM_BSIS_UPDATE COLOR COL_NORMAL INTENSIFIED OFF,
                80     SY-VLINE.
      ENDIF.
      IF NUM_BSAS_UPDATE > 0.
        TEXT = TEXT-NX2.
        REPLACE '&TAB' WITH 'BSAS' INTO TEXT.
        WRITE:/        SY-VLINE,
                 2(58) TEXT COLOR COL_KEY INTENSIFIED ON,
                 60(1)  SY-VLINE,
                 61(19) NUM_BSAS_UPDATE COLOR COL_NORMAL INTENSIFIED OFF,
                 80     SY-VLINE.
      ENDIF.
      IF NUM_BSEG_UPDATE > 0.
        WRITE:/        SY-VLINE,
                 2(58) TEXT-NB2 COLOR COL_KEY INTENSIFIED ON,
                60(1)  SY-VLINE,
                61(19) NUM_BSEG_UPDATE COLOR COL_NORMAL INTENSIFIED OFF,
                80     SY-VLINE.
      ENDIF.
      ULINE.
      ADD NUM_BSIS_SELECT TO NUM_BSAS_SELECT.
      IF NUM_BSAS_SELECT = 0.
        ULINE.
        WRITE:/       SY-VLINE,
                2(78) TEXT-NSB COLOR COL_NEGATIVE,
                80    SY-VLINE.
        ULINE.
      ENDIF.
    ENDFORM.
    *>>>> BEGIN OF INSERTION - NOTE 66156
    *&      Form  CHECK_ACCOUNT_BALANCE_2
    FORM CHECK_ACCOUNT_BALANCE_2.
      DATA:   D_GJAHR LIKE BSEG-GJAHR.
    Account balance
      PERFORM READ_T001 USING P_BUKRS.
      PERFORM READ_CURRENT_YEAR CHANGING D_GJAHR.
      PERFORM READ_CURRENCY_T001A USING P_BUKRS.
    Transaktionswährung & Hauswährung
      PERFORM READ_GLDB_2 USING P_BUKRS P_SAKNR D_GJAHR.
      PERFORM READ_BSIS_2 USING P_BUKRS P_SAKNR.
    BEGIN OF INSERTION
      LOOP AT T_BALANCE_ITEMS_TW WHERE VALUE = 0.
        DELETE T_BALANCE_ITEMS_TW.
      ENDLOOP.
      LOOP AT T_BALANCE_ACCOUNT_TW WHERE VALUE = 0.
        DELETE T_BALANCE_ACCOUNT_TW.
      ENDLOOP.
      LOOP AT T_BALANCE_ITEMS_HW WHERE VALUE1 = 0
                                 AND   VALUE2 = 0
                                 AND   VALUE3 = 0.
        DELETE T_BALANCE_ITEMS_HW.
      ENDLOOP.
      LOOP AT T_BALANCE_ACCOUNT_HW WHERE VALUE1 = 0
                                   AND   VALUE2 = 0
                                   AND   VALUE3 = 0.
        DELETE T_BALANCE_ACCOUNT_HW.
      ENDLOOP.
    END OF INSERTION
      IF T_BALANCE_ITEMS_HW[] <> T_BALANCE_ACCOUNT_HW[] OR
         T_BALANCE_ITEMS_TW[] <> T_BALANCE_ACCOUNT_TW[].
        PERFORM DEQUEUE_ACCOUNT.
        MESSAGE E099.
      Summe der Einzelposten stimmt nicht mit Kontensaldo überein. ->
      ENDIF.
    ENDFORM.                               " CHECK_ACCOUNT_BALANCE_2
    *&      Form  READ_GLDB_2
    FORM READ_GLDB_2 USING XBUKRS LIKE GLT0-BUKRS
                           XSAKNR LIKE GLT0-RACCT
                           XGJAHR LIKE GLT0-RYEAR.
      DATA: TYPE(3) TYPE C,
            CURT    LIKE BK_METHODE-CURT1.
      DATA: RESULT LIKE T_BALANCE_ACCOUNT_TW OCCURS 1 WITH HEADER LINE.
      CLEAR T_BALANCE_ACCOUNT_TW.
      CLEAR T_BALANCE_ACCOUNT_HW.
    Transaktionswährung
      CLEAR RESULT. REFRESH RESULT.
      CLEAR XGLEDTAB. REFRESH XGLEDTAB.
      TYPE = 'TW'.
      XGLEDTAB-RLDNR      = '00'.
      APPEND XGLEDTAB.
      PERFORM READ_LEDGER TABLES RESULT XGLEDTAB
                                  USING XBUKRS XSAKNR XGJAHR TYPE.
      LOOP AT RESULT.
        T_BALANCE_ACCOUNT_TW-WAERS = RESULT-WAERS.
        T_BALANCE_ACCOUNT_TW-VALUE = RESULT-VALUE.
        APPEND T_BALANCE_ACCOUNT_TW.
      ENDLOOP.
    1. Hauswährung
      CLEAR RESULT. REFRESH RESULT.
      CLEAR XGLEDTAB. REFRESH XGLEDTAB.
      TYPE = 'HW1'.
      CURT = BK_METHODE-CURT1.
      XGLEDTAB-RLDNR      = '00'.
      APPEND XGLEDTAB.
      PERFORM READ_LEDGER TABLES RESULT XGLEDTAB
                                  USING XBUKRS XSAKNR XGJAHR TYPE.
      READ TABLE RESULT INDEX 1.
      T_BALANCE_ACCOUNT_HW-WAERS1 = RESULT-WAERS.
      T_BALANCE_ACCOUNT_HW-VALUE1 = RESULT-VALUE.
    *2. Hauswährung
      IF BK_METHODE-CURT2 <> SPACE.
        CLEAR RESULT. REFRESH RESULT.
        CLEAR XGLEDTAB. REFRESH XGLEDTAB.
        TYPE = 'HW2'.
        CURT = BK_METHODE-CURT2.
        IF CURT = '30'.
          XGLEDTAB-RLDNR      = '00'.
          XGLEDTAB-CURRNUMBER = '3'.
        ELSE.
          CALL FUNCTION 'G_GIVE_LEDGERS_FOR_GLT0'
               EXPORTING
                    BUKRS  = XBUKRS
                    CURTP  = CURT
               TABLES
                    LEDTAB = XGLEDTAB.
          DESCRIBE TABLE XGLEDTAB LINES SY-TFILL.
          IF SY-TFILL GT 1. SORT XGLEDTAB. ENDIF.
          READ TABLE XGLEDTAB INDEX 1.
        ENDIF.
        PERFORM READ_LEDGER TABLES RESULT XGLEDTAB
                                    USING XBUKRS XSAKNR XGJAHR TYPE.
        READ TABLE RESULT INDEX 1.
        T_BALANCE_ACCOUNT_HW-WAERS2 = RESULT-WAERS.
        T_BALANCE_ACCOUNT_HW-VALUE2 = RESULT-VALUE.
      ENDIF.
      IF BK_METHODE-CURT3 <> SPACE.
    *3. Hauswährung
        CLEAR RESULT. REFRESH RESULT.
        CLEAR XGLEDTAB. REFRESH XGLEDTAB.
        TYPE = 'HW3'.
        CURT = BK_METHODE-CURT3.
        IF CURT = '30'.
          XGLEDTAB-RLDNR      = '00'.
          XGLEDTAB-CURRNUMBER = '3'.
        ELSE.
          CALL FUNCTION 'G_GIVE_LEDGERS_FOR_GLT0'
               EXPORTING
                    BUKRS  = XBUKRS
                    CURTP  = CURT
               TABLES
                    LEDTAB = XGLEDTAB.
          DESCRIBE TABLE XGLEDTAB LINES SY-TFILL.
          IF SY-TFILL GT 1. SORT XGLEDTAB. ENDIF.
          READ TABLE XGLEDTAB INDEX 1.
        ENDIF.
        PERFORM READ_LEDGER TABLES RESULT XGLEDTAB
                             USING XBUKRS XSAKNR XGJAHR TYPE.
        READ TABLE RESULT INDEX 1.
        T_BALANCE_ACCOUNT_HW-WAERS3 = RESULT-WAERS.
        T_BALANCE_ACCOUNT_HW-VALUE3 = RESULT-VALUE.
      ENDIF.
      APPEND T_BALANCE_ACCOUNT_HW.
      SORT T_BALANCE_ACCOUNT_TW.
    ENDFORM.                               " READ_GLDB_2
    *&      Form  READ_BSIS_2
    FORM READ_BSIS_2 USING BUKRS LIKE BSIS-BUKRS
                           SAKNR LIKE BSIS-HKONT.
      CLEAR T_BALANCE_ITEMS_HW. REFRESH T_BALANCE_ITEMS_HW.
      CLEAR T_BALANCE_ITEMS_TW. REFRESH T_BALANCE_ITEMS_TW.
      SELECT * FROM  BSIS
             WHERE  BUKRS = BUKRS
             AND    HKONT = SAKNR.
        IF ( BSIS-PSWSL IS INITIAL OR BSIS-PSWBT IS INITIAL ) AND
             BSIS-XARCH NE 'X'.
          SELECT SINGLE * FROM BSEG WHERE BUKRS = BSIS-BUKRS
                                    AND   BELNR = BSIS-BELNR
                                    AND   GJAHR = BSIS-GJAHR
                                    AND   BUZEI = BSIS-BUZEI.
          IF SY-SUBRC <> 0.
            MESSAGE A500(FE) WITH 'BSEG nicht gefunden'.        "#EC NOTEXT
          ENDIF.
          BSIS-PSWSL = BSEG-PSWSL.
          BSIS-PSWBT = BSEG-PSWBT.
        ENDIF.
        IF BSIS-SHKZG = 'S'.
          T_BALANCE_ITEMS_HW-WAERS1 = BK_METHODE-HWAE1.
          T_BALANCE_ITEMS_HW-WAERS2 = BK_METHODE-HWAE2.
          T_BALANCE_ITEMS_HW-WAERS3 = BK_METHODE-HWAE3.
          T_BALANCE_ITEMS_HW-VALUE1 = BSIS-DMBTR.
          T_BALANCE_ITEMS_HW-VALUE2 = BSIS-DMBE2.
          T_BALANCE_ITEMS_HW-VALUE3 = BSIS-DMBE3.
          T_BALANCE_ITEMS_TW-WAERS  = BSIS-PSWSL.
          T_BALANCE_ITEMS_TW-VALUE  = BSIS-PSWBT.
        ELSE.
          T_BALANCE_ITEMS_HW-WAERS1 = BK_METHODE-HWAE1.
          T_BALANCE_ITEMS_HW-WAERS2 = BK_METHODE-HWAE2.
          T_BALANCE_ITEMS_HW-WAERS3 = BK_METHODE-HWAE3.
          T_BALANCE_ITEMS_HW-VALUE1 = - BSIS-DMBTR.
          T_BALANCE_ITEMS_HW-VALUE2 = - BSIS-DMBE2.
          T_BALANCE_ITEMS_HW-VALUE3 = - BSIS-DMBE3.
          T_BALANCE_ITEMS_TW-WAERS  = BSIS-PSWSL.
          T_BALANCE_ITEMS_TW-VALUE  = - BSIS-PSWBT.
        ENDIF.
        COLLECT T_BALANCE_ITEMS_HW.
        COLLECT T_BALANCE_ITEMS_TW.
      ENDSELECT.
      SORT T_BALANCE_ITEMS_TW.
    ENDFORM.                               " READ_BSIS_2
    *&      Form  CHECK_ACCOUNT2
          Check some things for XOPVW
    FORM CHECK_ACCOUNT2.
      TABLES: TBSL, T030.
      DATA: CHECK_BSCHL LIKE BSIS-BSCHL OCCURS 10 WITH HEADER LINE.
    Belege schon archiviert?
      SELECT * FROM BSIS WHERE BUKRS EQ P_BUKRS
                         AND   HKONT EQ P_SAKNR
                         AND   XARCH EQ 'X'.
        MESSAGE E146.
       Es sind schon Belege archiviert worden. Änderung ist nicht möglich
      ENDSELECT.
    Vorgangsschlüssel MVA und VVA sind nicht erlaubt.
      SELECT * FROM T030 WHERE KTOPL = T001-KTOPL
                          AND  ( KTOSL = 'MVA' OR KTOSL = 'VVA' ).
        IF T030-KONTS = P_SAKNR OR T030-KONTH = P_SAKNR.
          MESSAGE E145(FH) WITH P_SAKNR.
       Konto wird in Kontenfindung für Vorgang MVA oder VVA verwendet
        ENDIF.
      ENDSELECT.
    Buchungsschlüsseln dürfen nicht für KOART = M sein
      SELECT BSCHL INTO TABLE CHECK_BSCHL FROM BSIS
                                          WHERE BUKRS EQ P_BUKRS
                                          AND   HKONT EQ P_SAKNR.
      SORT CHECK_BSCHL.
      DELETE ADJACENT DUPLICATES FROM CHECK_BSCHL.
      LOOP AT CHECK_BSCHL.
        SELECT SINGLE KOART INTO TBSL-KOART FROM TBSL
                                            WHERE BSCHL = CHECK_BSCHL.
        IF SY-SUBRC NE 0.
          MESSAGE E143(FH) WITH CHECK_BSCHL.
         Verwendeter Buchungsschlüssel & ist nicht mehr in der Kontenfindu
        ELSEIF TBSL-KOART = 'M'.
          MESSAGE E144(FH) WITH P_SAKNR CHECK_BSCHL.
          Konto & kann nicht geändert werden -> Langtext
        ENDIF.
      ENDLOOP.
    ENDFORM.                               " CHECK_ACCOUNT2
    *>>>> END OF INSERTION - NOTE 66156 <<<<
    INCLUDE FSACHCDC.
    INCLUDE EPA00F00.
    *&      Form  READ_CURRENCY_T001A
    FORM READ_CURRENCY_T001A USING P_BUKRS LIKE T001-BUKRS.
      TABLES: X001.
      CALL FUNCTION 'FI_CURRENCY_INFORMATION'
           EXPORTING
                I_BUKRS                = P_BUKRS
           IMPORTING
                E_X001                 = X001
           EXCEPTIONS
                CURRENCY_2_NOT_DEFINED = 1
                CURRENCY_3_NOT_DEFINED = 2
                OTHERS                 = 6.
      BK_METHODE-HWAE1 = T001-WAERS.
      BK_METHODE-HWAE2 = X001-HWAE2.
      BK_METHODE-HWAE3 = X001-HWAE3.
      BK_METHODE-CURT1 = '10'.
      BK_METHODE-CURT2 = X001-CURT2.
      BK_METHODE-CURT3 = X001-CURT3.
    ENDFORM.                               " READ_CURRENCY_T001A
    *&      Form  READ_LEDGER
    FORM READ_LEDGER TABLES   RESULT      STRUCTURE T_BALANCE_ACCOUNT_TW
                              XGLEDTAB    STRUCTURE GLEDTAB
                     USING    XBUKRS      LIKE      GLT0-BUKRS
                              XSAKNR      LIKE      GLT0-RACCT
                              XGJAHR      LIKE      GLT0-RYEAR
                              TYPE        TYPE      C.
      DATA: BALANCE LIKE GLT0-TSLVT.
      DATA:    I_GJAHR     LIKE GLT0-RYEAR.
      STATICS: I_RECURSIV  TYPE I.
      CHECK I_RECURSIV < 2.
      CLEAR RESULT. REFRESH RESULT.
      READ TABLE XGLEDTAB INDEX 1.
      SELECT * FROM GLT0
               WHERE RLDNR = XGLEDTAB-RLDNR
               AND   RRCTY = '0'
               AND   RVERS = '001'
               AND   BUKRS = XBUKRS
               AND   RYEAR = XGJAHR
               AND   RACCT = XSAKNR.
        CASE TYPE.
          WHEN 'TW'.
            RESULT-WAERS = GLT0-RTCUR.
            RESULT-VALUE = GLT0-TSLVT.
            DO GLT0-RPMAX TIMES
               VARYING BALANCE FROM GLT0-TSL01 NEXT GLT0-TSL02.
              RESULT-VALUE = RESULT-VALUE + BALANCE.
            ENDDO.
          WHEN 'HW1'.
            RESULT-WAERS = BK_METHODE-HWAE1.
            RESULT-VALUE = GLT0-HSLVT.
            DO GLT0-RPMAX TIMES
               VARYING BALANCE FROM GLT0-HSL01 NEXT GLT0-HSL02.
              RESULT-VALUE = RESULT-VALUE + BALANCE.
            ENDDO.
          WHEN 'HW2' OR 'HW3'.
            IF XGLEDTAB-CURRNUMBER = '3'.
              GLT0-HSLVT   = GLT0-KSLVT.
              GLT0-HSL01 = GLT0-KSL01. GLT0-HSL02 = GLT0-KSL02.
              GLT0-HSL03 = GLT0-KSL03. GLT0-HSL04 = GLT0-KSL04.
              GLT0-HSL05 = GLT0-KSL05. GLT0-HSL06 = GLT0-KSL06.
              GLT0-HSL07 = GLT0-KSL07. GLT0-HSL08 = GLT0-KSL08.
              GLT0-HSL09 = GLT0-KSL09. GLT0-HSL10 = GLT0-KSL10.
              GLT0-HSL11 = GLT0-KSL11. GLT0-HSL12 = GLT0-KSL12.
              GLT0-HSL13 = GLT0-KSL13. GLT0-HSL14 = GLT0-KSL14.
              GLT0-HSL15 = GLT0-KSL15. GLT0-HSL16 = GLT0-KSL16.
            ENDIF.
            IF TYPE = 'HW2'.
              RESULT-WAERS = BK_METHODE-HWAE2.
            ELSE.
              RESULT-WAERS = BK_METHODE-HWAE3.
            ENDIF.
            RESULT-VALUE = GLT0-HSLVT.
            DO GLT0-RPMAX TIMES
               VARYING BALANCE FROM GLT0-HSL01 NEXT GLT0-HSL02.
              RESULT-VALUE = RESULT-VALUE + BALANCE.
            ENDDO.
        ENDCASE.
        COLLECT RESULT.
      ENDSELECT.
      IF SY-SUBRC = 0.
        CLEAR I_RECURSIV.
      ELSE.
        ADD 1 TO I_RECURSIV.
        I_GJAHR = XGJAHR - 1.
        PERFORM READ_LEDGER TABLES  RESULT
                                    XGLEDTAB
                            USING   XBUKRS
                                    XSAKNR
                                    I_GJAHR
                                    TYPE.
      ENDIF.
    ENDFORM.                               " READ_LEDGER
    BEGIN OF INSERTION - NOTE 70203
    *&      Form  BKPF_UPDATE                   P30K137533
    FORM BKPF_UPDATE.
    *--- Stornovormerkung löschen? -
      CLEAR D_STORNO.
      SELECT SINGLE * FROM BKPF WHERE BUKRS = T_BSXX-BUKRS
                                AND   GJAHR = T_BSXX-GJAHR
                                AND   BELNR = T_BSXX-BELNR.
      IF BKPF-STBLG NE SPACE.
        D_STORNO = 'X'.
      ENDIF.
    ENDFORM.                               " BKPF_UPDATE
    END OF INSERTION - NOTE 70203
    If you find solution to your answer donot forget to reward points
    Regards

Maybe you are looking for

  • How to restore contacts on my iphone

    Hi, I have been syncing my phone with itunes from 3 days as I have bought a new macbook pro. Suddenly yesterday due to some change of settings or I dont know what all my contacts got deleted. I tried to restore back up by right clicking the iphone op

  • Ran the upgrade to flash 10 with ie 8 on win 7

    Hi - I ran the upgrade to adobe flash 10 on windows 7 64 bit with IE 8 32 bit and the movies will not run in fullscreen mode - just show a grey screen but I can hear the sound - help

  • Excessive looping or not!!

    Hi, would be v grateful if anybody could help me with the following. I have a website that has about 500 hotels on it, each with its own profile page. I record every time a user clicks on profile page' I insert date, and recordid into sql database an

  • [solved] Strange Audio Issue

    I am experiencing a strange audio issue with my Intel-HDA ICH7: # lspci -v 00:1b.0 Class 0403: Intel Corporation 82801G (ICH7 Family) High Definition Audio Controller (rev 01) Subsystem: Hewlett-Packard Company Unknown device 30a5 Flags: bus master,

  • Sony Cyber-Shot Camera and videos

    Hello, Has anyne figured out how to get videos from Iphoto to Imovie08? I am using a Sony Cybershot camera. Videos appear in Iphoto, but I cant get them to go into Imovie. Annoying... Please help Thanks