PL statement(Ecc6.0)

Hi Friends,
We are on bpc75nw sp04.
I want to build profit & loss statement in Evdre report, is it possible if all GL balances(from ECC6.0) are avilable in BPC cube.
I know in BW via BEx Queries with some customization(virtual cube, function module), bw consulatants can build PL report.
Pls share your ideas..if  anyone successeded.
Regards,
Naresh

Hi Naresh,
As you said your GL accounts are in ECC. However, I dont think you can import the accounts into BPC directly from ECC. The way is to first import them into BW and then from BW to BPC. Please take a look at the below links from help.sap for importing master data:
http://help.sap.com/saphelp_bpc75_nw/helpdata/en/46/fcc2ef34ee439aaa56a4f6ba001e4d/content.htm
http://help.sap.com/saphelp_bpc75_nw/helpdata/en/e0/532af2d0804218a59157136bb63a98/content.htm
http://help.sap.com/saphelp_bpc75_nw/helpdata/en/73/0f917879fd416099d04fb4c49889e0/content.htm
http://help.sap.com/saphelp_bpc75_nw/helpdata/en/88/e16046853041b391314a91bfe3618b/content.htm
The following links from help.sap will help you to import the hierarchies:
http://help.sap.com/saphelp_bpc75_nw/helpdata/en/69/3fa8fec0504cdab61f3247edb8c3b0/content.htm
http://help.sap.com/saphelp_bpc75_nw/helpdata/en/b8/2eb5a519fc447f99b222d24cc2b914/content.htm
http://help.sap.com/saphelp_bpc75_nw/helpdata/en/87/e0cb512dca414e849d681e76e38d08/content.htm
http://help.sap.com/saphelp_bpc75_nw/helpdata/en/d2/0eebe57b164cc0925919997616945c/content.htm
Once the GL accounts are available in the BPC system, you can create PnL statements from them.
Hope this helps.

Similar Messages

  • Read  statement in ECC6.0

    Hi all,
    I am working on ECC6.0 , but when i use Read statement it gives me erro that it is obsolute in ECC6.0.
    So please suggest a way to proceed.
    Regards,
    Nilesh

    Hi Nilesh,
    READ statement is NOT Obsolete in ECC 6.0. It is very much in use. I think the syntax that you used might not be correct. Kindly verify with below syntax..
    READ TABLE itab INTO ls_itab WITH KEY (Key fields) BINARY SEARCH.
    WITH KEY
    can be used or
    WITH INDEX
    can also be used..
    <b>Reward points for helpful answers</b>.
    Best Regards,
    Ram.

  • Equivalent Statement in ECC6.0

    Hi,
    I want the equivalent statement of the following in ECC6.0.
    SELECT MCOMP  SUM( PSMNG ) INTO CORRESPONDING FIELDS OF
                                      ITAB_NEW FROM (ITAB_SEL)
    GROUP BY MCOMP.
    ENDSELECT.
    This statement is giving error in the new Version. Error is " Table ITAB_SEL " must have a character line type(data type C,N, D,T, or String)
    Useful answer will be rewarded with points.

    okay, i'm guessing ITAB_SEL is an internal table and it contains some numeric fields
    what you need to do, is to declare itab_sel with all character fields
    depending on the way you are getting data into ITAB_SEL (since some FMs need a particular datatype), you may need to make another internal table with all character fields and use the MOVE-CORRESPONDING statement
    then pass this NEW_ITAB_SEL to your select statement

  • DELETE STATEMENT IN ECC6.0

    HI,
    How to use the DELETE statement in ECC6.0.
    when i am using this statement , it is going to short dump.
    Delete itab from wtab.
    pls let me know
    i am getting the error ,
    convert the charater to numerics, only numerics are supported in at the argument position , bcos it is a unicode program.
    let me know pls .
    regards,

    hi,
    chk the syntax:
    DELETE - itab_lines
    Syntax
    ... itab [FROM idx1] [TO idx2] [WHERE log_exp]... .
    Extras:
    1. ... FROM idx1
    2. ... TO idx2
    3. ... WHERE log_exp
    Effect
    To delete several lines at once, you have to specify at least one of the additions FROM, TO, or WHERE. You can only use the additions FROM and TO with standard tables and sorted tables.
    If you specify several of the additions, the rows are deleted that result from the intersection of the individual additions.
    Addition 1
    ... FROM idx1
    Effect
    If you specify FROM, all the table rows from the table index idx1 onwards are included. idx1 must be a data object with type i. If the value of idx1 is less than or equal to 0, a runtime error occurs. If the value is greater than the number of table rows, no rows are deleted.
    Addition 2
    ... TO idx2
    Effect
    If you specify TO, only the table rows up to table index idx2 are included. idx2 must be a data object with type i. If the values of idx2 is less than or equal to 0, a runtime error occurs. If the value is greater than the number of table rows, it is set to the number of rows. If idx2 is less than idx1, no rows are deleted.
    Addition 3
    ... WHERE log_exp
    Effect
    You can specify any logical expression log_exp after WHERE, for which the first operand of each individual comparison is a component of the internal table. This enables all logical expression with the exception of IS ASSIGNED, ISREQUESTED, and IS SUPPLIED. The dynamic specification of components using character-type data objects in parentheses is not supported here. All rows for which the logical expression is true are deleted.
    hope this helps u,
    keerthi

  • How to define perform with table statement in ECC6.0

    Hi all,
    I am working on ECC6.0 version. I m using a perform to populate an internal table like this:-
        PERFORM explode TABLES li_zmpsdtl
                                USING gs_matnr.
    & its forms is defined as: -
    FORM treat_one_item  TABLES   li_zmpsdtl STRUCTURE zmpsdtl
                         USING    gs_matnr TYPE matnr.
    doing some action..............
    endform.
    While performing SLIN it shows an error message :-
    " The current ABAP command is obsolete.
    Within classes and interfaces, you can only use "TYPE" to refer to ABAP Dictionary types (not "LIKE" or "STRUCTURE").  "
    If i use type in place of STRUCTURE then it is ok, but zmpsdtl should be defined as table type. :-
    FORM treat_one_item  TABLES   li_zmpsdtl type zmpsdtl
                         USING    gs_matnr TYPE matnr.
    doing some action..............
    endform.
    is there any other option to do the same thing. i dont want to create any teable type.
    Thanx in advance,
    Sachin

    You have to use a global structure instead of a ddic structure after the STRUCTURE statement:
    <b>DATA: gs_zmpsdtl TYPE zmpsdtl.</b>
    FORM treat_one_item TABLES li_zmpsdtl STRUCTURE <b>gs_zmpsdt</b>
    USING gs_matnr TYPE matnr.
    ...[/code]

  • Function moule to fetch stat reccords in ECC6.0

    Hi All,
    The function module
    SAPWL_WORKLOAD_GET_STATISTIC dosen't work in version ECC6 but it's ok in 4.7.
    The Function module is available in ECC6.0 but it doesn't fetch the stat records from ST03.
    which is the replacement function module of SAPWL_WORKLOAD_GET_STATISTIC in ECC6.0?
    The tables used by ST03 in Version ECC6?
    Regards,
    Siraj.

    hi,
    changes to transactions for versions is stored in table PRGN_CORR2.
    SAPWL_ST03N
    open this program in se80,u can find all tables used.

  • Equivalent statements in ECC6.0

    Hi Experts,
    We are in process of upgrading our system from 4.6c to ecc6.0 .While upgrading i encountered an issue
    where in i came across a statement ."RECORD_TAB[] = T_OUTPUT[].Record_tab and t_output are of different structures.
    data : begin of t_output occurs 0 ,
    vbeln like vbrk-vbeln,
    fkart like vbrk-fkart,
    posnr like vbap-posnr,
    erdat like vbrk-erdat,
    netwr like vbrp-netwr,
    mcod1 like kna1-mcod1,
    vbeln_c like vbap-vbeln,
    ktext like vbak-ktext,
    ename1 like pa0001-ename,
    arktx like vbrp-arktx,
    ename2 like pa0001-ename,
    kunnr like kna1-kunnr,
    pernr_zi like vbpa-pernr,
    pernr_zj like vbpa-pernr,
    end of t_output.
    and Record_tab is of type SEAHLPRES(Search help result Structure).The above statement runs without errors in 4.6c version but throwing an error when executed in ECC6.0(Error is record_tab and t
    output are mutually not convertible .In unicode programsboth must have the same structurelayout as toutput,independent of the length of unicode character)
    .Please suggest on how can i replace the above statement in ECC6.0.
    Regards,
    Lakshman.

    Hi Lakshman,
    try to use this statement may be some corrections are required.
    DATA: lv_netwr(21) type c.
    LOOP AT t_output.
              WRITE t_output-netwr TO lv_netwr.
              CONCATENATE t_output-vbeln t_output-fkart t_output-posnr t_output-erdat lv_netwr t_output-mcod1 t_output-vbeln_c t_output-ktext t_output-ename1 t_output-arktx t_output-ename2 t_output-kunnr t_output-pernr_zi t_output-pernr_zj INTO wa_seahlpres-string.
              APPEND wa_seahlpres TO RECORD_TAB.
    ENDLOOP.
    Regards,
    Ivan

  • Error using SHIFT statement when migrating program from R/3 4.7 to ECC6.0

    Hello Experts,
    The SHIFT statement is giving following error in ECC6.0 but the same is warning in R/3 4.7.
    "Floating point variable can not be used with SHIFT statement.".
    Statement is - SHIFT itab-f1 by 5 places where f1 is a floting point field.
    We passed the value in string variable and used in the SHIFT statement. It is removing the error but not giving the result same as in R/3 4.7.
    Please let me know how to solve this.
    Thanks and Regards,
    Rahul

    Hello,
    Thanks for the reply.
    We don't know why was this code written. We are just moving the object from R/3 4.7 to ECC 6.0 and fixing the errors.
    Could you please let me know "What it means to SHIFT a floating point variable by some spaces"? .
    This i am asking because SHIFT RIGHT generally means to shif the value to the right by some spaces i.e. inserting space at the starting.
    But in case of floating point it change the value itself. If you can tell me then i can find an alternative solution to get the same result.
    Thanks and Regards,
    Rahul

  • SAP ECC6 memory and paging issues

    Dear Experts
    I have recently upgraded my 4.6C systems to an ECC 6 system (DB2 LUW 9.5 on AIX 5.3 TL9 64 Bit OS)
    I have been running the LPAR with 14 GB of memory and we are around 100-200+ users using the system, I was monitoring using nmon and found that Physical Memory was around 99.8% Used   (14311.8MB and 22.6MB was free) also the paging space was around 37.2% in result causing the system at times to run slow which can have a very negative effect on the users.
    After further investigation I found that after a system restart the Physical Memory would start around 50.9% and increased at a steady pace until it reached 99.8% that is when the system would start using the paging space which would steadily increase, I found that the only solution was a system restart at least once a week to reduce the memory consumption.
    At first glance it looked like a database manger memory leak with the process db2sysc, so I searched the net with the search words u201Cdb2 memory leaku201D and found the following APARs and notes.
    APAR JR30285 - Pervasive memory leak when compiling SQL statements that use SQL/XML functions
    APAR IZ35230 - There is a pervasive unix-specific private memory leak in the security component
    Note 1288341 - Memory leak in APPLHEAPSZ -> SQL0954C 
    Note 1352361 - Memory leak in shared memory area abrfci
    Note 1147821 - DB6: Known Errors and available Fixes in DB2 9.5 LUW
    After reading the notes and APARs I decided to updated DB2 to the latest fix pack (5SAP), but after the fix pack was implemented it did not solve the memory problem
    I started look at different problems with SAP ECC6, db2 and AIX with paging/memory problems and I found the following notes to do with AIX memory and paging but none of them helped as all parameters and settings were set accordingly  
    789477 - Large extended memory on AIX (64-bit) as of Kernel 6.20
    191801 - AIX 64-bit with very large amount of Extended Memory
    973227 - AIX Virtual Memory Management: Tuning Recommendations
    884393 - AIX saposcol consumes large amount of memory.
    856848 u2013 AIX Extended Memory Disclaiming 
    1048686 u2013 Recommended AIX settings for SAP
    1121904 u2013 SAP on AIX: Recommendations for Paging
    1086130 u2013 DB6: DB2 Standard Parameter Settings
    After even more investigation I found the following evidence suggesting AIX Virtual Memory Manager might have a problem

    Shared memories inside of pool 40
    Key:       42  Size:    17792992 (  17.0 MB) DB TTAB buffer              
    Key:       43  Size:    53606392 (  51.1 MB) DB FTAB buffer              
    Key:       44  Size:     8550392 (   8.2 MB) DB IREC buffer              
    Key:       45  Size:     7014392 (   6.7 MB) DB short nametab buffer     
    Key:       46  Size:       20480 (   0.0 MB) DB sync table               
    Key:       47  Size:    10241024 (   9.8 MB) DB CUA buffer               
    Key:       48  Size:      300000 (   0.3 MB) Number range buffer         
    Key:       49  Size:     2769392 (   2.6 MB) Spool admin (SpoolWP+DiaWP) 
    Shared memories outside of pools
    Key:        3  Size:   114048000 ( 108.8 MB) Disp. communication areas   
    Key:        4  Size:      523048 (   0.5 MB) statistic area              
    Key:        6  Size:   692224000 ( 660.2 MB) ABAP program buffer         
    Key:        7  Size:       14838 (   0.0 MB) Update task administration  
    Key:        8  Size:   134217828 ( 128.0 MB) Paging buffer               
    Key:        9  Size:   134217828 ( 128.0 MB) Roll buffer                 
    Key:       18  Size:     1835108 (   1.7 MB) Paging adminitration        
    Key:       19  Size:   119850000 ( 114.3 MB) Table-buffer                
    Key:       41  Size:    25010000 (  23.9 MB) DB statistics buffer        
    Key:       63  Size:      409600 (   0.4 MB) ICMAN shared memory         
    Key:       64  Size:     4202496 (   4.0 MB) Online Text Repository Buf. 
    Key:       65  Size:     4202496 (   4.0 MB) Export/Import Shared Memory 
    Key:     1002  Size:      400000 (   0.4 MB) Performance monitoring V01.0
    Key: 58900114  Size:        4096 (   0.0 MB) SCSA area                   
    Nr of operating system shared memory segments: 16
    Shared memory resource requirements estimated
    ================================================================
    Total Nr of shared segments required.....:         16
    System-imposed number of shared memories.:       1000
    Shared memory segment size required min..:  692224000 ( 660.2 MB)
    System-imposed maximum segment size......: 35184372088832 (33554432.0 MB)
    Swap space requirements estimated
    ================================================
    Shared memory....................: 1654.8 MB
    ..in pool 10  328.6 MB,   58% used
    ..in pool 40  143.3 MB,   30% used
    ..not in pool: 1174.1 MB
    Processes........................:  413.4 MB
    Extended Memory .................: 6144.0 MB
    Total, minimum requirement.......: 8212.2 MB
    Process local heaps, worst case..: 3814.7 MB
    Total, worst case requirement....: 21882.9 MB
    Errors detected..................:    0
    Warnings detected................:    3

  • Upgrade - 4.6B - ECC6 phase TP_ACTION_CP2SINI - fails

    Platoform - Solaris 5.9
    Oracle - 10.2.0.2
    Upgrade of 4.6B - ECC6 fails in the phase <b>TP_ACTION_CP2SINI</b>
    This phase in the previous Mock had completed in 20 min aprox, but on the present mock upgrade its taken longer time.....
    Phase TP_ACTION_CP2SINI:
    INFO: Export of SAPKBBF700; client 0 taken from E070C
    Phase TP_ACTION_CP2SINI:
    INFO: Export of SAPKBBF700; client 0 taken from E070C
    Phase TP_ACTION_CP2SINI:
    INFO: Export of SAPKBBF700; client 0 taken from E070C
    Phase TP_ACTION_CP2SINI:
    INFO: Export of SAPKBBF700; client 0 taken from E070C
    Phase TP_ACTION_CP2SINI:
    INFO: Export of SAPKBBF700; client 0 taken from E070C
    Phase TP_ACTION_CP2SINI:
    INFO: Export of SAPKBBF700; client 0 taken from E070C
    ERROR: No connect due to DbSl Load Lib Failure
    ERROR: The values set for DIR_LIBRARY ('/usr/sap/P35/SYS/exe/run') or dbms_type ('ORA') are invalid.
    ERROR: Connect to P35 failed (20070824170148).
    INFO: Export of SAPKBBF700; client 0 taken from E070C
    Phase TP_ACTION_CP2SINI:
    INFO: Export of SAPKBBF700; client 0 taken from E070C
    ERROR: No entry for SAPKBBF700 in E070 or error during access.
    ERROR SAPKBBF700           P35 E 0012 20070824180341 DDIC         p35adm       RELSAPDB 20070824173846006328
    HALT 20070824180341
    ERROR: uncaught internal error: ORA-03114: not connected to ORACLE
    ERROR: EXIT(16) -> process ID is: 25384
    ERROR: Connect to P35 failed (20070824180342, probably wrong environment).
    Phase TP_ACTION_CP2SINI:
    INFO: Export of SAPKBBF700; client 0 taken from E070C
    Phase TP_ACTION_CP2SINI:
    INFO: Export of SAPKBBF700; client 0 taken from E070C
    Kind assistance appreciated.
    Regards,
    Siddhartha Gupte
    +91 9833888910

    Hi Markus,
    Oracle is running but give a problem when creating a tablespace - PSAPTEMP1 through sqlplus but when checked through the DB02, the size shown is '0'
    when try to modify or create any table through brtools below error is given.
    BR*Tools main menu
    1 = Instance management
    2 - Space management
    3 - Segment management
    4 - Backup and database copy
    5 - Restore and recovery
    6 - Check and verification
    7 - Database statistics
    8 - Additional functions
    9 - Exit program
    Standard keys: c - cont, b - back, s - stop, r - refr, h - help
    BR0662I Enter your choice:
    2
    BR0280I BRTOOLS time stamp: 2007-08-24 20.51.19
    BR0663I Your choice: '2'
    BR0280I BRTOOLS time stamp: 2007-08-24 20.51.19
    BR0656I Choice menu 5 - please make a selection
    Database space management
    1 = Extend tablespace
    2 - Create tablespace
    3 - Drop tablespace
    4 - Alter tablespace
    5 - Alter data file
    6 - Move data file
    7 - Additional space functions
    8 - Reset program status
    Standard keys: c - cont, b - back, s - stop, r - refr, h - help
    BR0662I Enter your choice:
    1
    BR0280I BRTOOLS time stamp: 2007-08-24 20.51.21
    BR0663I Your choice: '1'
    BR0280I BRTOOLS time stamp: 2007-08-24 20.51.21
    BR0657I Input menu 81 - please check/enter input values
    BRSPACE options for tablespace extension
    1 - BRSPACE profile (profile) ...... [initP35.sap]
    2 - Database user/password (user) .. [/]
    3 ~ Tablespace name (tablespace) ... []
    4 - Confirmation mode (confirm) .... [yes]
    5 - Scrolling line count (scroll) .. [20]
    6 - Message language (language) .... [E]
    7 - BRSPACE command line (command) . [-p initP35.sap -s 20 -l E -f tsextend]
    Standard keys: c - cont, b - back, s - stop, r - refr, h - help
    BR0662I Enter your choice:
    3
    BR0280I BRTOOLS time stamp: 2007-08-24 20.51.24
    BR0663I Your choice: '3'
    BR0280I BRTOOLS time stamp: 2007-08-24 20.51.24
    BR0681I Enter string value for "tablespace" []:
    psaptemp1
    BR0280I BRTOOLS time stamp: 2007-08-24 20.51.42
    BR0683I New value for "tablespace": 'psaptemp1'
    BR0280I BRTOOLS time stamp: 2007-08-24 20.51.42
    BR0657I Input menu 81 - please check/enter input values
    BRSPACE options for tablespace extension
    1 - BRSPACE profile (profile) ...... [initP35.sap]
    2 - Database user/password (user) .. [/]
    3 ~ Tablespace name (tablespace) ... [psaptemp1]
    4 - Confirmation mode (confirm) .... [yes]
    5 - Scrolling line count (scroll) .. [20]
    6 - Message language (language) .... [E]
    7 - BRSPACE command line (command) . [-p initP35.sap -s 20 -l E -f tsextend -t psaptemp1]
    Standard keys: c - cont, b - back, s - stop, r - refr, h - help
    BR0662I Enter your choice:
    c
    BR0280I BRTOOLS time stamp: 2007-08-24 20.52.05
    BR0663I Your choice: 'c'
    BR0259I Program execution will be continued...
    BR0291I BRSPACE will be started with options '-p initP35.sap -s 20 -l E -f tsextend -t psaptemp1'
    BR0280I BRTOOLS time stamp: 2007-08-24 20.52.05
    BR0670I Enter 'c[ont]' to continue, 'b[ack]' to go back, 's[top]' to abort:
    c
    BR0280I BRTOOLS time stamp: 2007-08-24 20.52.09
    BR0257I Your reply: 'c'
    BR0259I Program execution will be continued...
    BR1001I BRSPACE 7.00 (18)
    BR1002I Start of BRSPACE processing: sdvzqkms.tse 2007-08-24 20.52.10
    BR0280I BRSPACE time stamp: 2007-08-24 20.52.10
    BR0301W SQL error -904 at location BrsDblogOpen-6, SQL statement:
    'INSERT INTO SAP_DBAML (SYS_ID, OPER_ID, TASKNAME, JOB_NR, TRIAL, UTIL_NR, FUNC_ID, UPD_OP, TOOLSET, PROGNAME, LOG_NAME, STATUS, BEGIN_OP, END_OP, RC, INTERNAL) VALUES ('P35', '20070824205210', 'Extend tablespace', '0000000000', '1', '0000000000', 'tse', '20070824205210', 'SAP CCMS', 'BRSPACE', '/oracle/P35/sapreorg/sdvzqkms.tse', 'STARTED', '20070824205210', ' ', '0000', 'sdvzqkms')'
    ORA-00904: "TOOLSET": invalid identifier
    BR0324W Insertion of database log header failed
    BR0280I BRSPACE time stamp: 2007-08-24 20.52.10
    BR1009I Name of database instance: P35
    BR1010I BRSPACE action ID: sdvzqkms
    BR1011I BRSPACE function ID: tse
    BR1012I BRSPACE function: tsextend
    BR0280I BRSPACE time stamp: 2007-08-24 20.52.11
    BR0657I Input menu 303 - please check/enter input values
    Options for extension of tablespace PSAPTEMP1 (1. file)
    1 * Last added file name (lastfile) ....... [/oracle/P35/sapdata5/temp1_1/temp1.data1]
    2 * Last added file size in MB (lastsize) . [500]
    3 - New file to be added (file) ........... [/oracle/P35/sapdata5/temp1_2/temp1.data2]
    4 ~ Raw disk / link target (rawlink) ...... []
    5 - Size of the new file in MB (size) ..... [500]
    6 - File autoextend mode (autoextend) ..... [no]
    7 # Maximum file size in MB (maxsize) ..... []
    8 # File increment size in MB (incrsize) .. []
    9 - SQL command (command) ................. [alter tablespace PSAPTEMP1 add tempfile '/oracle/P35/sapdata5/temp1_2/temp1.data2' size 500M autoextend off]
    Standard keys: c - cont, b - back, s - stop, r - refr, h - help
    BR0662I Enter your choice:
    Expecting your kind reply,
    Siddhartha gupte

  • PDF Attachment Email Opening issue in ECC6

    Hello,
    We are having problem with below report. I'm able to send emails(invoice) as PDF attachments , but the attached PDF file wont open. I'm getting a message "Adobe reader could not open attachement the file has been damaged".This report works in our old version 4.6c but we just upgrade to ecc6. Please Please help.
    Thanks,
    Jose
    REPORT zrfi_customer_statement_new
    NO STANDARD PAGE HEADING
    MESSAGE-ID zm_load
    LINE-SIZE 325
    LINE-COUNT 65(3).
    Tables *
    TABLES:
    bsid, bsad, knb1, kna1, knkk, t001, t014, t179t,
    t052, fplt, vbap, veda, vbrk, vbpa, vbkd, knvk,
    cepct, tvzbt, vbak, bsik, tsp01, usr21,adr6, tsp03l.
    Internal tables *
    DATA: i_bsid LIKE bsid OCCURS 0 WITH HEADER LINE.
    DATA: BEGIN OF i_bukrs OCCURS 0,
    bukrs LIKE bsid-bukrs,
    waers LIKE bsid-waers,
    END OF i_bukrs.
    DATA:
    BEGIN OF i_temp_data OCCURS 0,
    bukrs LIKE bsid-bukrs, " Company code
    kunnr LIKE bsid-kunnr, " Customer
    belnr LIKE bsid-belnr, " Invoice
    gjahr LIKE bsid-gjahr, " Fiscal year
    waers LIKE bsid-waers, " Currency
    rebzg LIKE bsid-rebzg,
    bldat LIKE bsid-bldat, " Posting date
    shkzg LIKE bsid-shkzg, " Debit/Credit
    zfbdt LIKE bsid-zfbdt, " Baseline date
    zterm LIKE bsid-zterm, " Terms of payment key
    dmbtr LIKE bsid-dmbtr, " company currency
    dmbe2 LIKE bsid-dmbe2, " Amount in Group Currency
    days LIKE rfposxext-verzn, " No of Arrear Days
    kidno LIKE bsid-kidno, " Payment reference number
    kunnr_c LIKE vbak-kunnr, " Partner Number
    name_c(50), " Partner Last name
    matnr LIKE vbap-matnr, " Material no
    arktx LIKE vbap-arktx, " material description
    vbeln LIKE vbap-vbeln, " Contract/Order no
    inv_date LIKE vbrk-fkdat,
    xblnr LIKE bsid-xblnr,
    xblnr LIKE bsid-zuonr,
    vtext LIKE vbap-arktx, "material description
    sgtxt LIKE bsid-sgtxt,
    plant LIKE t001w-name1,
    zzihrez_e LIKE vbap-zzihrez_e,
    vvtext LIKE tvzbt-vtext,
    blart LIKE bsid-blart,
    zuonr LIKE bsid-zuonr,
    END OF i_temp_data.
    DATA:
    BEGIN OF itab OCCURS 0,
    kunnr LIKE bsid-kunnr, " Customer
    bukrs LIKE bsid-bukrs, " Company code
    kunnr_c LIKE vbak-kunnr, " Partner Number
    name_c(50), " Partner Last name
    matnr LIKE vbap-matnr, " Material no
    kidno LIKE bseg-kidno, " Payment reference
    name1 LIKE kna1-name1, " Customer name
    belnr LIKE bsid-belnr, " Invoice
    waers LIKE bsid-waers, " Currency ( Document )
    gjahr LIKE bsid-gjahr, " Fiscal year
    zfbdt LIKE bsid-zfbdt, " Baseline date
    zterm LIKE bsid-zterm, " Terms of payment key
    amt00_30 TYPE netwr_ak, " 000 - 030 Days
    amt31_60 TYPE netwr_ak, " 031 - 060 Days
    amt61_90 TYPE netwr_ak, " 061 - 090 Days
    amt91_120 TYPE netwr_ak, " 090 - 120 Days
    amt120pls TYPE netwr_ak, " 120+ Days
    total TYPE netwr_ak, " Row Total
    inv_date LIKE vbrk-fkdat,
    rebzg LIKE bsid-rebzg,
    xblnr LIKE bsid-xblnr,
    xblnr LIKE bsid-zuonr,
    sgtxt LIKE bsid-sgtxt,
    days(5) , " No of Arrear Days
    inv_chk LIKE bsid-xblnr, " invoice/check/wire transfer no
    vtext LIKE t179t-vtext,
    zzihrez_e LIKE vbap-zzihrez_e,
    plant LIKE t001w-name1,
    vvtext LIKE tvzbt-vtext,
    bldat LIKE bsid-bldat,
    blart LIKE bsid-blart,
    zuonr LIKE bsid-zuonr,
    END OF itab.
    DATA: BEGIN OF i_final OCCURS 0,
    inv_chk LIKE bsid-xblnr, " invoice/check/wire transfer no
    bldat LIKE bsid-bldat,
    xblnr LIKE bsid-xblnr,
    inv_date LIKE vbrk-fkdat,
    name_c(50), " Partner Last name
    vtext LIKE t179t-vtext,
    zzihrez_e LIKE vbap-zzihrez_e,
    plant LIKE t001w-name1,
    vvtext LIKE tvzbt-vtext,
    total TYPE netwr_ak, " Row Total
    days(5) , " No of Arrear Days
    waers LIKE bsid-waers,
    blart LIKE bsid-blart,
    zuonr LIKE bsid-zuonr,
    END OF i_final.
    DATA: BEGIN OF i_last OCCURS 0,
    kunnr LIKE vbak-kunnr,
    inv_chk LIKE bsid-xblnr, " invoice/check/wire transfer no
    bldat LIKE bsid-bldat,
    xblnr LIKE bsid-xblnr,
    inv_date LIKE vbrk-fkdat,
    name_c(50), " Partner Last name
    vtext LIKE t179t-vtext,
    zzihrez_e LIKE vbap-zzihrez_e,
    plant LIKE t001w-name1,
    vvtext LIKE tvzbt-vtext,
    total TYPE netwr_ak, " Row Total
    days(5) , " No of Arrear Days
    waers LIKE bsid-waers,
    blart LIKE bsid-blart,
    zuonr LIKE bsid-zuonr,
    END OF i_last.
    DATA: i_bsik LIKE bsik OCCURS 0 WITH HEADER LINE.
    DATA: itab_temp LIKE itab OCCURS 100 WITH HEADER LINE.
    DATA:
    BEGIN OF itab_details OCCURS 0,
    bukrs LIKE bsid-bukrs, " Company code
    xblnr LIKE bsid-xblnr,
    gjahr LIKE bsid-gjahr,
    belnr LIKE bsid-belnr,
    kunnr LIKE bsid-kunnr,
    END OF itab_details.
    DATA: BEGIN OF x_kna1 OCCURS 0,
    kunnr LIKE kna1-kunnr,
    name1 LIKE kna1-name1,
    name2 LIKE kna1-name2,
    ptext LIKE tpfkt-vtext,
    street LIKE adrc-street,
    ort01 LIKE kna1-ort01,
    regio LIKE kna1-regio,
    pstlz LIKE kna1-pstlz,
    landx LIKE t005t-landx,
    agdate LIKE sy-datum, " aging date
    END OF x_kna1.
    DATA: BEGIN OF i_total OCCURS 0,
    waers LIKE bsid-waers,
    00_30 TYPE netwr_ak,
    31_60 TYPE netwr_ak,
    61_90 TYPE netwr_ak,
    91_120 TYPE netwr_ak,
    120pls TYPE netwr_ak,
    total TYPE netwr_ak,
    END OF i_total.
    DATA: i_ssfcrescl TYPE ssfcrescl.
    DATA: i_otf_final TYPE itcoo OCCURS 0 WITH HEADER LINE.
    DATA: i_ssfctrlop LIKE ssfctrlop OCCURS 0 WITH HEADER LINE.
    DATA: v_itcpo LIKE itcpo.
    DATA: BEGIN OF itab_vender OCCURS 0,
    vender LIKE kna1-kunnr,
    END OF itab_vender.
    DATA: BEGIN OF ioutput OCCURS 0,
    kunnr LIKE vbrk-kunrg,
    kname(50),
    email(50),
    error(1),
    END OF ioutput.
    DATA: vv_text(90).
    Structures *
    DATA: x_item LIKE rfposxext.
    DATA: x_t001 LIKE t001.
    DATA: x_bsegp LIKE bsegp.
    Variables *
    DATA: v_count TYPE i.
    DATA: v_dialog TYPE c VALUE 'X'.
    DATA: v_name1 LIKE kna1-name1,
    v_name2 LIKE kna1-name2,
    v_print LIKE tsp03l-padest,
    v_formname(20),
    v_flag.
    DATA: f_recap_report(1) TYPE c. " Flag for recap report
    DATA:
    BEGIN OF x_amt,
    amt00_ls LIKE bsid-wrbtr,
    00_30 LIKE bsid-wrbtr,
    31_60 LIKE bsid-wrbtr,
    61_90 LIKE bsid-wrbtr,
    91_120 LIKE bsid-wrbtr,
    120pls LIKE bsid-wrbtr,
    END OF x_amt.
    DATA: BEGIN OF itab_bill OCCURS 0,
    vbeln LIKE vbfa-vbeln,
    fplnr LIKE vbfa-fplnr,
    fpltr LIKE vbfa-fpltr,
    END OF itab_bill.
    DATA: v_sdate LIKE vbrk-fkdat,
    v_edate LIKE vbrk-fkdat,
    v_order(10) TYPE n.
    DATA: v_eddate(10), v_stdate(10).
    DATA: v_num TYPE i,
    v_stat,
    v_bill_prd(24),
    v_counter TYPE c.
    DATA: v_matnr LIKE vbrp-matnr,
    v_arktx LIKE vbrp-arktx,
    v_vbeln LIKE vbrp-vbeln,
    v_vvtext LIKE t176t-vtext,
    v_posnr LIKE vbap-posnr,
    v_kunnr_c LIKE vbak-kunnr,
    v_name_c(50),
    v_inv_date LIKE vbrk-fkdat,
    v_vdatu LIKE vbak-vdatu,
    v_auart LIKE vbak-auart,
    v_prctr LIKE vbap-prctr,
    v_zzihrez LIKE vbap-zzihrez_e,
    v_plant LIKE t001w-name1,
    p_form TYPE tdsfname,
    fm_name TYPE rs38l_fnam.
    DATA: i_ssfcompop TYPE ssfcompop OCCURS 0." WITH HEADER LINE.
    DATA: addr_no LIKE kna1-adrnr,
    last_name LIKE kna1-name1,
    first_name LIKE kna1-name1,
    pafkt LIKE knvk-pafkt,
    lang LIKE knvk-parla,
    v_land LIKE adrc-country,
    v_lines TYPE i.
    DATA: v_tabix LIKE sy-tabix, v_gjahr LIKE bsid-gjahr,
    v_kunnr LIKE vbak-kunnr, v_prodh LIKE vbap-prodh,
    v_vtext LIKE t179t-vtext.
    DATA: spno LIKE tsp01-rqident,
    mi_bytecount TYPE i,
    mstr_print_parms LIKE pri_params,
    downfile(128) VALUE 'c:\customer.pdf',
    mtab_pdf LIKE tline OCCURS 0 WITH HEADER LINE.
    DATA: packing_list TYPE TABLE OF sopcklsti1 WITH HEADER LINE,
    contents_txt TYPE TABLE OF solisti1 WITH HEADER LINE,
    v_email LIKE adr6-smtp_addr,
    v_returncode,
    contents_hex TYPE TABLE OF solix," WITH HEADER LINE,
    w_contents_hex TYPE solix ,
    receivers TYPE TABLE OF somlreci1 WITH HEADER LINE.
    DATA: att_pos TYPE i.
    DATA: document_data LIKE sodocchgi1.
    DATA: esubject LIKE sood1-objdes. "subject line
    DATA: emsgs TYPE TABLE OF solisti1 WITH HEADER LINE.
    DATA: pdf TYPE TABLE OF tline WITH HEADER LINE.
    DATA: BEGIN OF itext OCCURS 200,
    text(132),
    END OF itext.
    DATA: i_fields LIKE sval OCCURS 0 WITH HEADER LINE.
    DATA: v_ccemail LIKE adr6-smtp_addr,
    v_check,
    v_kname(50).
    DATA: otf_data1 LIKE itcoo OCCURS 0 WITH HEADER LINE,
    i_itcpp LIKE itcpp.
    *FIELD-GROUPS: HEADER, ...
    FIELD-GROUPS: header,
    details.
    Selection Screen
    SELECTION-SCREEN BEGIN OF BLOCK a10 WITH FRAME TITLE text-sa1.
    SELECTION-SCREEN BEGIN OF BLOCK a1 WITH FRAME TITLE text-sa1.
    PARAMETERS : p_ex_ic AS CHECKBOX DEFAULT 'X'. "R3DK906903
    SELECTION-SCREEN END OF BLOCK a1.
    SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-s01.
    SELECT-OPTIONS : s_kunnr FOR bsid-kunnr,
    s_bukrs FOR t001-bukrs OBLIGATORY.
    PARAMETERS : p_bdate LIKE sy-datum OBLIGATORY.
    PARAMETERS: p_vender AS CHECKBOX DEFAULT 'X'.
    SELECTION-SCREEN END OF BLOCK b1.
    SELECTION-SCREEN BEGIN OF BLOCK b2 WITH FRAME TITLE text-s11.
    PARAMETERS : r_group RADIOBUTTON GROUP r1,
    r_comp RADIOBUTTON GROUP r1.
    SELECTION-SCREEN END OF BLOCK b2.
    SELECTION-SCREEN BEGIN OF BLOCK b3 WITH FRAME TITLE text-s13.
    PARAMETERS: p_print LIKE tsp03l-lname MATCHCODE OBJECT prin
    OBLIGATORY DEFAULT 'locl'.
    SELECTION-SCREEN END OF BLOCK b3.
    SELECTION-SCREEN BEGIN OF BLOCK b4 WITH FRAME TITLE text-s14.
    PARAMETERS: v_immed AS CHECKBOX DEFAULT 'X',
    v_dele AS CHECKBOX DEFAULT 'X',
    ch_email AS CHECKBOX.
    *PARAMETERS:ch_down AS CHECKBOX.
    SELECTION-SCREEN END OF BLOCK b4.
    SELECTION-SCREEN END OF BLOCK a10.
    AT SELECTION-SCREEN.
    Selection Screen Validation.
    PERFORM validate_selection_screen.
    INITIALIZATION.
    INITIALIZATION.
    IF sy-sysid NE 'R3P'.
    v_email = .
    ENDIF.
    START-OF-SELECTION.
    START-OF-SELECTION.
    IF p_vender = 'X'.
    Fetch data from BSIK .
    PERFORM fetch_data_vender.
    Get Arrear Days
    PERFORM get_arrear_days_vender.
    ENDIF.
    Fetch data from BSID and BSAD.
    PERFORM fetch_data_from_bsid.
    Get Arrear Days
    PERFORM get_arrear_days.
    Format Data as per selection.
    PERFORM format_final_data.
    Print sapscript
    SORT i_last BY kunnr days DESCENDING.
    LOOP AT i_last.
    AT NEW kunnr.
    CLEAR: i_final, x_kna1.
    REFRESH: i_final, x_kna1.
    PERFORM get_address.
    PERFORM get_total.
    ENDAT.
    MOVE-CORRESPONDING i_last TO i_final.
    i_final-xblnr = i_final-zuonr.
    APPEND i_final.
    CLEAR i_final.
    AT END OF kunnr.
    SORT i_final BY days DESCENDING inv_chk total DESCENDING.
    PERFORM smart_from.
    ENDAT.
    ENDLOOP.
    END-OF-SELECTION.
    END-OF-SELECTION.
    *& Form FETCH_DATA_FROM_BSID
    text
    FORM fetch_data_from_bsid.
    fetch data from BSID into Internal table I_BSID.
    SELECT *
    FROM bsid
    INTO TABLE i_bsid
    WHERE bukrs IN s_bukrs AND
    kunnr IN s_kunnr AND
    budat LE p_bdate ."AND
    BELNR in ('0090000231','1400000131').
    Fetch data from BSAD into Internal table I_BSID.
    SELECT *
    FROM bsad
    APPENDING TABLE i_bsid
    WHERE bukrs IN s_bukrs AND
    kunnr IN s_kunnr AND
    budat LE p_bdate AND
    augdt GT p_bdate." AND
    DELETE i_bsid WHERE ( bukrs = '1500' OR bukrs = '3000' OR
    bukrs = '1400' ) AND
    ( umsks = 'E' OR umskz = 'E' ).
    *Exclude intercompany customers
    IF p_ex_ic = 'X'.
    DELETE i_bsid WHERE kunnr+0(2) EQ 'IC'.
    ENDIF.
    CLEAR sy-tfill.
    DESCRIBE TABLE i_bsid LINES sy-tfill.
    IF sy-tfill = 0.
    MESSAGE i999 WITH ' No data selected for the selection Condition'.
    STOP.
    ENDIF.
    ENDFORM. " FETCH_DATA_FROM_BSID
    *& Form Get_Arrear_Days
    text
    FORM get_arrear_days.
    SORT i_bsid BY bukrs belnr.
    LOOP AT i_bsid.
    for company code 1500 and 3000
    IF i_bsid-bukrs EQ '1500' OR i_bsid-bukrs EQ '3000'.
    MOVE i_bsid-xblnr TO i_bsid-belnr.
    ENDIF.
    MOVE i_bsid-bukrs TO itab_details-bukrs.
    MOVE i_bsid-xblnr TO itab_details-xblnr.
    MOVE i_bsid-belnr TO itab_details-belnr.
    MOVE i_bsid-gjahr TO itab_details-gjahr.
    MOVE i_bsid-kunnr TO itab_details-kunnr.
    APPEND itab_details.
    CLEAR itab_details.
    CLEAR x_item.
    AT NEW bukrs.
    READ TABLE i_bsid INDEX sy-tabix.
    CLEAR x_t001.
    SELECT SINGLE * FROM t001
    INTO x_t001
    WHERE bukrs = i_bsid-bukrs.
    ENDAT.
    for company code 1500 and 3000 .
    IF i_bsid-bukrs EQ '1500' OR i_bsid-bukrs EQ '3000'.
    MOVE i_bsid-xblnr TO i_bsid-belnr.
    ENDIF.
    MOVE-CORRESPONDING i_bsid TO x_item.
    x_item-koart = 'D'. " Debitor - Customer Indicator
    x_item-konto = bsid-kunnr. " Debitor - Customer Number
    x_item-dmshb = bsid-dmbtr.
    x_item-wrshb = bsid-wrbtr.
    Function module to get ARREAR days.
    CALL FUNCTION 'ITEM_DERIVE_FIELDS'
    EXPORTING
    s_t001 = x_t001
    s_bsegp = x_bsegp
    key_date = p_bdate
    CHANGING
    s_item = x_item
    EXCEPTIONS
    bad_input = 1
    OTHERS = 2.
    IF sy-subrc = 0.
    Populate I_TEMP_DATA for further processing.
    i_temp_data-bukrs = i_bsid-bukrs.
    i_temp_data-kunnr = i_bsid-kunnr.
    i_temp_data-belnr = i_bsid-belnr.
    i_temp_data-bldat = i_bsid-bldat.
    i_temp_data-shkzg = i_bsid-shkzg.
    i_temp_data-zfbdt = i_bsid-zfbdt.
    i_temp_data-zterm = i_bsid-zterm.
    i_temp_data-vbeln = i_bsid-vbeln.
    i_temp_data-waers = i_bsid-waers.
    IF x_item-verzn < 0.
    x_item-verzn = 0.
    ENDIF.
    i_temp_data-zuonr = i_bsid-zuonr.
    i_temp_data-days = x_item-verzn.
    i_temp_data-gjahr = i_bsid-gjahr.
    i_temp_data-kidno = i_bsid-kidno.
    i_temp_data-rebzg = i_bsid-rebzg.
    i_temp_data-xblnr = i_bsid-xblnr.
    i_temp_data-sgtxt = i_bsid-sgtxt.
    Changing the Sign
    IF i_bsid-shkzg = 'H'.
    i_temp_data-dmbe2 = i_temp_data-dmbe2 + ( -1 * i_bsid-dmbe2 ).
    i_temp_data-dmbtr = i_temp_data-dmbtr + ( -1 * i_bsid-dmbtr ).
    ELSE.
    i_temp_data-dmbe2 = i_temp_data-dmbe2 + i_bsid-dmbe2.
    i_temp_data-dmbtr = i_temp_data-dmbtr + i_bsid-dmbtr.
    ENDIF.
    i_temp_data-blart = i_bsid-blart.
    *for doc type DR
    IF i_bsid-blart = 'DR' AND i_bsid-bschl = '01'.
    IF i_bsid-sgtxt IS INITIAL.
    *Changed our phone number to
    MOVE 'Contact Flightsafety' TO i_temp_data-vtext.
    ELSE.
    MOVE i_bsid-sgtxt TO i_temp_data-vtext.
    MOVE 'Financial Invoice' TO i_temp_data-vvtext.
    ENDIF.
    ENDIF.
    *for doc type AB
    IF i_bsid-blart = 'AB' AND
    ( i_bsid-bschl GE '01' AND i_bsid-bschl LE '19' ).
    i_temp_data-bldat = i_bsid-zfbdt.
    i_temp_data-xblnr = i_bsid-vbeln.
    IF NOT i_bsid-sgtxt IS INITIAL.
    *Changed our phone nuber to
    MOVE 'Contact Flightsafety' TO i_temp_data-vtext.
    MOVE i_bsid-sgtxt TO i_temp_data-vtext.
    MOVE 'Financial Doc' TO i_temp_data-vvtext.
    ELSE.
    MOVE i_bsid-sgtxt TO i_temp_data-vtext.
    MOVE 'Financial Doc' TO i_temp_data-vvtext.
    ENDIF.
    ENDIF.
    *for doc type DG
    IF i_bsid-blart = 'DG' AND
    ( i_bsid-bschl GE '01' AND i_bsid-bschl LE '19' ).
    i_temp_data-bldat = i_bsid-zfbdt.
    i_temp_data-xblnr = i_bsid-vbeln.
    IF i_bsid-sgtxt IS INITIAL.
    *Changed our phone nuber to
    MOVE 'Contact Flightsafety' TO i_temp_data-vtext.
    ELSE.
    MOVE i_bsid-sgtxt TO i_temp_data-vtext.
    MOVE 'Financial Doc' TO i_temp_data-vvtext.
    ENDIF.
    ENDIF.
    *To display Debit memo and credit memo.
    IF i_bsid-blart = 'DG'.
    IF ( i_bsid-bschl GE '11' AND i_bsid-bschl LE '19' ).
    MOVE 'Credit Memo' TO i_temp_data-vvtext.
    ELSEIF ( i_bsid-bschl GE '01' AND i_bsid-bschl LE '09' ).
    MOVE 'Debit Memo' TO i_temp_data-vvtext.
    ENDIF.
    ENDIF.
    *for doc type DZ
    IF i_bsid-blart = 'DZ' AND
    ( i_bsid-bschl GE '01' AND i_bsid-bschl LE '19' ).
    IF i_bsid-sgtxt IS INITIAL.
    *changed our phone number to
    MOVE 'Contact Flightsafety' TO i_temp_data-vtext.
    ELSE.
    MOVE i_bsid-sgtxt TO i_temp_data-vtext.
    MOVE 'Cust Pmt' TO i_temp_data-vvtext.
    ENDIF.
    ENDIF.
    *Document type DZ and posting key 15
    IF i_bsid-blart = 'DZ' AND
    i_bsid-bschl EQ '15'.
    MOVE 'Cust Pmt' TO i_temp_data-vvtext.
    ENDIF.
    *Document type DZ and posting key 06.
    IF i_bsid-blart = 'DZ' AND
    i_bsid-bschl EQ '06'.
    MOVE 'Debit' TO i_temp_data-vvtext.
    ENDIF.
    *Document type DA and posting key 04, 14.
    IF i_bsid-blart = 'DA' AND
    i_bsid-bschl EQ '04' OR
    i_bsid-bschl EQ '14'.
    MOVE 'Cust Pmt' TO i_temp_data-vvtext.
    MOVE i_bsid-sgtxt TO i_temp_data-vtext.
    IF i_bsid-sgtxt IS INITIAL.
    MOVE 'Contact Flightsafety' TO i_temp_data-vtext.
    ENDIF.
    ENDIF.
    ENDIF.
    *billing period
    IF i_bsid-blart = 'RV' AND i_bsid-bschl = '01'.
    PERFORM billing_period USING i_temp_data-belnr
    i_temp_data-vbeln.
    ENDIF.
    AT END OF belnr.
    at end of zuonr.
    APPEND i_temp_data.
    CLEAR i_temp_data.
    ENDAT.
    ENDLOOP.
    PERFORM material_details.
    ENDFORM. " Get_Arrear_Days
    *& Form FORMAT_FINAL_DATA
    text
    FORM format_final_data.
    PERFORM pop_format_grp_curr_detail.
    CLEAR: itab_temp, i_total.
    REFRESH: itab_temp, i_total.
    itab_temp] = itab[.
    CLEAR itab.
    REFRESH itab.
    LOOP AT itab_temp.
    CLEAR itab.
    itab = itab_temp.
    CLEAR: itab-matnr.
    IF itab-belnr+0(2) = '14'.
    *Adding two 00 for the left alignment.
    CONCATENATE '00' itab-xblnr
    INTO itab-inv_chk.
    CONDENSE itab-inv_chk NO-GAPS.
    itab-inv_chk = itab-xblnr.
    itab-xblnr = itab-belnr.
    ELSE.
    itab-inv_chk = itab-belnr.
    ENDIF.
    COLLECT itab.
    ENDLOOP.
    CLEAR v_stat.
    SORT itab BY days inv_chk total DESCENDING.
    LOOP AT itab.
    *To display Aging totals in usd (if v_stat ne f) for
    *company code 1100,1300,2000.
    IF itab-bukrs NE '1100' AND
    itab-bukrs NE '1300' AND
    itab-bukrs NE '2000'.
    v_stat = 'F'.
    ENDIF.
    CLEAR: i_last-vvtext, tvzbt.
    MOVE-CORRESPONDING itab TO i_last.
    APPEND i_last.
    CLEAR i_last.
    ENDLOOP.
    ENDFORM. " FORMAT_FINAL_DATA
    *& Form POP_FORMAT_grp_CURR_DETAIL
    text
    FORM pop_format_grp_curr_detail.
    Populating the Final Internal table for report by Group Currency.
    CLEAR x_amt.
    SORT i_temp_data.
    LOOP AT i_temp_data.
    CLEAR: v_count.
    IF i_temp_data-sgtxt+0(10) = 'Spcfy in p'.
    i_temp_data-sgtxt = i_temp_data-sgtxt+32(18).
    MOVE i_temp_data-sgtxt TO i_temp_data-vtext.
    MODIFY i_temp_data.
    ENDIF.
    IF r_comp = 'X'.
    IF i_temp_data-days LT 0.
    x_amt-amt00_ls = x_amt-amt00_ls + i_temp_data-dmbtr.
    If between 1 and 30 Days.
    ELSEIF i_temp_data-days GE 0 AND i_temp_data-days LE 30.
    x_amt-00_30 = x_amt-00_30 + i_temp_data-dmbtr.
    If between 31 and 60 Days.
    ELSEIF i_temp_data-days GE 31 AND i_temp_data-days LE 60.
    x_amt-31_60 = x_amt-31_60 + i_temp_data-dmbtr.
    if between 61 and 90
    ELSEIF i_temp_data-days GE 61 AND i_temp_data-days LE 90.
    x_amt-61_90 = x_amt-61_90 + i_temp_data-dmbtr.
    if between 91 and 120
    ELSEIF i_temp_data-days GE 91 AND i_temp_data-days LE 120.
    x_amt-91_120 = x_amt-91_120 + i_temp_data-dmbtr.
    if > 120
    ELSEIF i_temp_data-days GT 120.
    x_amt-120pls = x_amt-120pls + i_temp_data-dmbtr.
    ENDIF.
    ELSE.
    if the group currency is selected
    IF i_temp_data-days LT 0.
    x_amt-amt00_ls = x_amt-amt00_ls + i_temp_data-dmbe2.
    If between 1 and 30 Days.
    ELSEIF i_temp_data-days GE 0 AND i_temp_data-days LE 30.
    x_amt-00_30 = x_amt-00_30 + i_temp_data-dmbe2.
    If between 31 and 60 Days.
    ELSEIF i_temp_data-days GE 31 AND i_temp_data-days LE 60.
    x_amt-31_60 = x_amt-31_60 + i_temp_data-dmbe2.
    if between 61 and 90
    ELSEIF i_temp_data-days GE 61 AND i_temp_data-days LE 90.
    x_amt-61_90 = x_amt-61_90 + i_temp_data-dmbe2.
    if between 91 and 120
    ELSEIF i_temp_data-days GE 91 AND i_temp_data-days LE 120.
    x_amt-91_120 = x_amt-91_120 + i_temp_data-dmbe2.
    if > 120
    ELSEIF i_temp_data-days GT 120.
    x_amt-120pls = x_amt-120pls + i_temp_data-dmbe2.
    ENDIF.
    ENDIF.
    Get Customer Name.
    SELECT SINGLE name1
    INTO itab-name1
    FROM kna1
    WHERE kunnr = i_temp_data-kunnr.
    Invoice and year
    AT END OF rebzg.
    READ TABLE i_temp_data INDEX sy-tabix.
    itab-zuonr = i_temp_data-zuonr.
    itab-bukrs = i_temp_data-bukrs.
    itab-kunnr = i_temp_data-kunnr.
    itab-belnr = i_temp_data-belnr.
    itab-gjahr = i_temp_data-gjahr.
    IF r_comp EQ 'X'.
    itab-waers = i_temp_data-waers.
    ELSE.
    itab-waers = 'USD'.
    ENDIF.
    itab-zfbdt = i_temp_data-zfbdt.
    itab-zterm = i_temp_data-zterm.
    itab-amt00_30 = x_amt-amt00_ls + x_amt-00_30.
    itab-amt31_60 = x_amt-31_60.
    itab-amt61_90 = x_amt-61_90.
    itab-amt91_120 = x_amt-91_120.
    itab-amt120pls = x_amt-120pls.
    itab-total = x_amt-amt00_ls + x_amt-00_30 +
    x_amt-31_60 + x_amt-61_90 +
    x_amt-91_120 + x_amt-120pls.
    itab-kunnr_c = i_temp_data-kunnr_c.
    itab-name_c = i_temp_data-name_c.
    itab-kidno = i_temp_data-kidno.
    itab-matnr = i_temp_data-matnr.
    itab-inv_date = i_temp_data-inv_date.
    itab-rebzg = i_temp_data-rebzg.
    itab-xblnr = i_temp_data-xblnr.
    itab-vtext = i_temp_data-vtext.
    itab-sgtxt = i_temp_data-sgtxt.
    itab-days = i_temp_data-days.
    itab-bldat = i_temp_data-bldat.
    itab-vvtext = i_temp_data-vvtext.
    itab-zzihrez_e = i_temp_data-zzihrez_e.
    itab-blart = i_temp_data-blart.
    itab-plant = i_temp_data-plant.
    Populating table.
    APPEND: itab.
    CLEAR : itab,
    x_amt.
    v_count = 1.
    ENDAT.
    IF v_count NE 1.
    itab-zuonr = i_temp_data-zuonr.
    itab-bukrs = i_temp_data-bukrs.
    itab-kunnr = i_temp_data-kunnr.
    itab-belnr = i_temp_data-belnr.
    itab-gjahr = i_temp_data-gjahr.
    itab-bldat = i_temp_data-bldat.
    IF r_comp EQ 'X'.
    itab-waers = i_temp_data-waers.
    ELSE.
    itab-waers = 'USD'.
    ENDIF.
    itab-zfbdt = i_temp_data-zfbdt.
    itab-zterm = i_temp_data-zterm.
    itab-kunnr_c = i_temp_data-kunnr_c.
    itab-name_c = i_temp_data-name_c.
    itab-kidno = i_temp_data-kidno.
    itab-matnr = i_temp_data-matnr.
    itab-inv_date = i_temp_data-inv_date.
    itab-rebzg = i_temp_data-rebzg.
    itab-xblnr = i_temp_data-xblnr.
    itab-vtext = i_temp_data-vtext.
    itab-sgtxt = i_temp_data-sgtxt.
    itab-days = i_temp_data-days.
    itab-zzihrez_e = i_temp_data-zzihrez_e.
    itab-plant = i_temp_data-plant.
    itab-vvtext = i_temp_data-vvtext.
    itab-blart = i_temp_data-blart.
    IF itab-matnr NE space.
    APPEND itab.
    CLEAR itab-plant.
    ELSE.
    ON CHANGE OF i_temp_data-kidno.
    READ TABLE i_temp_data INDEX sy-tabix.
    itab-zuonr = i_temp_data-zuonr.
    itab-bukrs = i_temp_data-bukrs.
    itab-kunnr = i_temp_data-kunnr.
    itab-belnr = i_temp_data-belnr.
    itab-gjahr = i_temp_data-gjahr.
    itab-bldat = i_temp_data-bldat.
    IF r_comp EQ 'X'.
    itab-waers = i_temp_data-waers.
    ELSE.
    itab-waers = 'USD'.
    ENDIF.
    itab-zfbdt = i_temp_data-zfbdt.
    itab-zterm = i_temp_data-zterm.
    itab-amt00_30 = x_amt-amt00_ls + x_amt-00_30.
    itab-amt31_60 = x_amt-31_60.
    itab-amt61_90 = x_amt-61_90.
    itab-amt91_120 = x_amt-91_120.
    itab-amt120pls = x_amt-120pls.
    itab-total = x_amt-amt00_ls + x_amt-00_30 +
    x_amt-31_60 + x_amt-61_90 +
    x_amt-91_120 + x_amt-120pls.
    itab-kunnr_c = i_temp_data-kunnr_c.
    itab-name_c = i_temp_data-name_c.
    itab-kidno = i_temp_data-kidno.
    itab-matnr = i_temp_data-matnr.
    itab-inv_date = i_temp_data-inv_date.
    itab-rebzg = i_temp_data-rebzg.
    itab-xblnr = i_temp_data-xblnr.
    itab-vtext = i_temp_data-vtext.
    itab-sgtxt = i_temp_data-sgtxt.
    itab-days = i_temp_data-days.
    itab-zzihrez_e = i_temp_data-zzihrez_e.
    itab-vvtext = i_temp_data-vvtext.
    itab-plant = i_temp_data-plant.
    APPEND itab.
    CLEAR: x_amt-amt00_ls, x_amt-00_30, x_amt-31_60,
    x_amt-61_90, x_amt-91_120 , x_amt-120pls.
    ENDON.
    ENDIF.
    CLEAR: itab.
    ENDIF.
    ENDLOOP.
    ENDFORM. " POP_FORMAT_grp_CURR_DETAIL
    *& Form material_details
    text
    --> p1 text
    <-- p2 text
    FORM material_details.
    SORT itab_details.
    DELETE ADJACENT DUPLICATES FROM itab_details.
    LOOP AT itab_details.
    CLEAR: v_counter, v_gjahr, v_kunnr, v_prodh, v_vbeln,
    v_vvtext, v_vtext.
    v_gjahr = itab_details-gjahr.
    v_kunnr = itab_details-kunnr.
    *Invoice Date/Billing date
    SELECT SINGLE fkdat FROM vbrk INTO v_inv_date
    WHERE vbeln = itab_details-xblnr.
    *material number, description and product hierarchy
    SELECT matnr arktx prodh FROM vbrp
    INTO (v_matnr, v_arktx, v_prodh)
    WHERE vbeln = itab_details-xblnr AND
    uepos = '00000'.
    CLEAR: v_vdatu, v_posnr, v_auart, v_prctr, v_zzihrez,
    v_kunnr_c, v_name1, v_name2, v_vtext, v_vvtext.
    *Find the contract/order no
    SELECT SINGLE vbelv posnv FROM vbfa INTO (v_vbeln, v_posnr)
    WHERE vbeln = itab_details-xblnr
    AND vbtyp_v IN ('C','G').
    *delivery date, document type, plant and reservation no
    SELECT SINGLE vbakvdatu vbakauart vbapprctr vbapzzihrez_e
    INTO (v_vdatu, v_auart, v_prctr, v_zzihrez)
    FROM vbak INNER JOIN vbap ON vbakvbeln = vbapvbeln
    WHERE vbap~vbeln = v_vbeln AND
    vbap~posnr = v_posnr AND
    vbap~abgru = space.
    *billing type
    SELECT SINGLE * FROM vbkd WHERE vbeln = v_vbeln.
    IF vbkd-bsark NE 'ZG01' OR vbkd-bsark NE 'ZO02'.
    SELECT SINGLE vtext FROM t176t INTO v_vvtext
    WHERE bsark = vbkd-bsark
    AND spras EQ sy-langu.
    ELSE.
    MOVE 'One Time' TO v_vvtext.
    ENDIF.
    *getting only the reservation number (no text)
    IF vbkd-ihrez_e+0(11) CO
    '0123456789'.
    ELSE.
    v_zzihrez = space.
    ENDIF.
    *location
    CONCATENATE '000000' v_zzihrez+0(4) INTO v_prctr.
    *plant name
    CLEAR v_plant.
    SELECT SINGLE ktext FROM cepct INTO v_plant WHERE
    prctr = v_prctr AND
    spras = sy-langu.
    *client no and name
    SELECT SINGLE vbpakunnr kna1name1 kna1~name2
    INTO (v_kunnr_c, v_name1, v_name2)
    FROM vbpa INNER JOIN kna1 ON
    vbpakunnr = kna1kunnr
    WHERE vbpa~vbeln = v_vbeln AND
    vbpa~parvw = 'Z3'.
    CONCATENATE v_name1 v_name2 INTO v_name_c
    SEPARATED BY space.
    READ TABLE i_temp_data WITH KEY bukrs = itab_details-bukrs
    belnr = itab_details-belnr
    gjahr = itab_details-gjahr.
    IF sy-subrc = 0.
    CLEAR: v_tabix.
    v_tabix = sy-tabix.
    IF v_counter IS INITIAL.
    MOVE v_plant TO i_temp_data-plant.
    MOVE v_zzihrez TO i_temp_data-zzihrez_e.
    MOVE v_kunnr_c TO i_temp_data-kunnr_c.
    MOVE v_name_c TO i_temp_data-name_c.
    MOVE v_gjahr TO i_temp_data-gjahr.
    MOVE v_kunnr TO i_temp_data-kunnr.
    IF v_auart EQ 'ZOTO' AND i_temp_data-inv_date IS INITIAL.
    MOVE v_inv_date TO i_temp_data-inv_date.
    ELSEIF i_temp_data-inv_date IS INITIAL.
    MOVE v_vdatu TO i_temp_data-inv_date.
    ENDIF.
    IF i_temp_data-vtext IS INITIAL.
    MOVE v_arktx TO i_temp_data-vtext.
    ENDIF.
    IF i_temp_data-vvtext IS INITIAL.
    MOVE v_vvtext TO i_temp_data-vvtext.
    ENDIF.
    MODIFY i_temp_data INDEX v_tabix.
    CLEAR i_temp_data.
    v_counter = 'T'.
    CLEAR: v_matnr,v_arktx,v_vbeln,v_name_c,v_vtext, v_prodh,
    v_kunnr_c, v_name1,v_name2, v_vdatu, v_vvtext.
    ELSE.
    CLEAR:i_temp_data-dmbe2, i_temp_data-dmbtr. " i_temp_data-wrbtr
    MOVE v_matnr TO i_temp_data-matnr.
    MOVE v_plant TO i_temp_data-plant.
    MOVE v_zzihrez TO i_temp_data-zzihrez_e.
    MOVE v_kunnr_c TO i_temp_data-kunnr_c.
    MOVE v_name_c TO i_temp_data-name_c.
    MOVE v_gjahr TO i_temp_data-gjahr.
    MOVE v_kunnr TO i_temp_data-kunnr.
    IF v_auart EQ 'ZOTO' AND i_temp_data-inv_date IS INITIAL.
    MOVE v_inv_date TO i_temp_data-inv_date.
    ELSEIF i_temp_data-inv_date IS INITIAL.
    MOVE v_vdatu TO i_temp_data-inv_date.
    ENDIF.
    MOVE v_arktx TO i_temp_data-vtext.
    APPEND i_temp_data.
    CLEAR i_temp_data.
    ENDIF.
    ENDIF.
    ENDSELECT.
    CLEAR:
    i_temp_data-kunnr_c,
    i_temp_data-name_c,i_temp_data-inv_date,
    i_temp_data-vtext.
    CLEAR: v_matnr,v_arktx,v_vbeln,v_name_c,
    v_kunnr_c, v_name1,v_name2,v_inv_date, v_vdatu,
    v_vtext, v_prodh.
    ENDLOOP.
    ENDFORM. " material_details
    *& Form get_address
    text
    FORM get_address.
    Get Address
    CLEAR: kna1, x_kna1, first_name, last_name,pafkt, lang, v_land.
    SELECT SINGLE * FROM kna1 INTO kna1 WHERE kunnr = i_last-kunnr.
    SELECT SINGLE name1 namev pafkt parla FROM knvk
    INTO (last_name, first_name, pafkt, lang)
    WHERE kunnr = i_last-kunnr
    AND abtnr = '0003'. "financial department
    IF sy-subrc NE 0.
    SELECT SINGLE name1 namev pafkt parla FROM knvk
    INTO (last_name, first_name, pafkt, lang)
    WHERE kunnr = i_last-kunnr.
    ENDIF.
    IF lang = ' '.
    lang = 'E'.
    ENDIF.
    SELECT SINGLE vtext FROM tpfkt INTO x_kna1-ptext
    WHERE pafkt = pafkt
    AND spras = lang.
    SELECT SINGLE name1 name2 street country FROM
    adrc INTO (x_kna1-name1, x_kna1-name2,
    x_kna1-street, v_land)
    WHERE addrnumber = kna1-adrnr.
    SELECT SINGLE landx FROM t005t INTO x_kna1-landx WHERE land1 = v_land
    AND spras = lang.
    TRANSLATE x_kna1-landx TO UPPER CASE. "#EC SYNTCHAR added by sony
    MOVE kna1-kunnr TO x_kna1-kunnr.
    MOVE kna1-ort01 TO x_kna1-ort01.
    MOVE kna1-regio TO x_kna1-regio.
    MOVE kna1-pstlz TO x_kna1-pstlz.
    MOVE p_bdate TO x_kna1-agdate.
    APPEND x_kna1.
    CLEAR: x_kna1.
    ENDFORM. " get_addres
    *& Form fetch_data_vender
    text
    --> p1 text
    <-- p2 text
    FORM fetch_data_vender.
    SELECT lifnr FROM kna1 INTO TABLE itab_vender
    WHERE kunnr IN s_kunnr.
    LOOP AT itab_vender.
    Fetch data from BSIK into Internal table I_BSIK.
    SELECT *
    FROM bsik
    APPENDING TABLE i_bsik
    WHERE bukrs IN s_bukrs AND
    lifnr EQ itab_vender-vender AND
    budat LE p_bdate AND
    blart IN ('KA', 'KG', 'KR', 'KZ', 'KF').
    Fetch data from BSAK into Internal table I_BSAK.
    SELECT *
    FROM bsak "#EC ENHOK "added by sony 06/05/08
    APPENDING TABLE i_bsik
    WHERE bukrs IN s_bukrs AND
    lifnr EQ itab_vender-vender AND
    budat LE p_bdate AND
    augdt GT p_bdate AND
    blart IN ('KA', 'KG', 'KR', 'KZ', 'KF').
    ENDLOOP.
    DELETE i_bsik WHERE ( bukrs = '1500' OR bukrs = '3000' ) AND
    ( umsks = 'E' OR umskz = 'E' ).
    ENDFORM. " fetch_data_vender
    *& Form GET_ARREAR_DAYS_vender
    text
    --> p1 text
    <-- p2 text
    FORM get_arrear_days_vender.
    SORT i_bsik BY mandt bukrs belnr.
    CLEAR: v_tabix.
    LOOP AT i_bsik.
    v_tabix = sy-tabix.
    SELECT SINGLE * FROM kna1 WHERE lifnr = i_bsik-lifnr.
    MOVE i_bsik-bukrs TO itab_details-bukrs.
    MOVE i_bsik-xblnr TO itab_details-xblnr.
    MOVE i_bsik-belnr TO itab_details-belnr.
    MOVE i_bsik-gjahr TO itab_details-gjahr.
    MOVE kna1-kunnr TO itab_details-kunnr.
    APPEND itab_details.
    CLEAR itab_details.
    CLEAR x_item.
    AT NEW bukrs.
    *company code details
    READ TABLE i_bsik INDEX sy-tabix.
    CLEAR x_t001.
    SELECT SINGLE * FROM t001
    INTO x_t001
    WHERE bukrs = i_bsik-bukrs.
    ENDAT.
    MOVE-CORRESPONDING i_bsik TO x_item.
    x_item-koart = 'D'. " Debitor - Customer Indicator
    x_item-konto = kna1-kunnr. " Debitor - Customer Number
    x_item-dmshb = bsik-dmbtr.
    x_item-wrshb = bsik-wrbtr.
    Function module to get ARREAR days.
    CALL FUNCTION 'ITEM_DERIVE_FIELDS'
    EXPORTING
    s_t001 = x_t001
    s_bsegp = x_bsegp
    key_date = p_bdate
    CHANGING
    s_item = x_item
    EXCEPTIONS
    bad_input = 1
    OTHERS = 2.
    IF sy-subrc = 0.
    Populate I_TEMP_DATA for further processing.
    i_temp_data-bukrs = i_bsik-bukrs.
    i_temp_data-kunnr = kna1-kunnr.
    i_temp_data-belnr = i_bsik-belnr.
    i_temp_data-bldat = i_bsik-bldat. "Document date in document
    i_temp_data-shkzg = i_bsik-shkzg.
    i_temp_data-zfbdt = i_bsik-zfbdt. " Base line date
    i_temp_data-zterm = i_bsik-zterm. "Terms of payment key
    i_temp_data-waers = i_bsik-waers.
    i_temp_data-days = x_item-verzn. " days in arrs
    i_temp_data-gjahr = i_bsik-gjahr. " year
    i_temp_data-kidno = i_bsik-kidno. " Payment Reference
    i_temp_data-rebzg = i_bsik-rebzg. " Number of the Invoice the
    "Transaction Belongs to
    i_temp_data-xblnr = i_bsik-xblnr.
    i_temp_data-sgtxt = i_bsik-sgtxt. " Item Text
    Changing the Sign
    IF i_bsik-shkzg = 'H'.
    i_temp_data-dmbe2 = -1 * i_bsik-dmbe2.
    i_temp_data-dmbtr = -1 * i_bsik-dmbtr.
    ELSE.
    i_temp_data-dmbe2 = i_bsik-dmbe2.
    i_temp_data-dmbtr = i_bsik-dmbtr.
    ENDIF.
    ENDIF.
    APPEND i_temp_data.
    CLEAR i_temp_data.
    ENDLOOP.
    PERFORM material_details.
    ENDFORM. " Get_Arrear_DaysENDFORM.
    " GET_ARREAR_DAYS_vender
    *& Form convert_pdf
    text
    --> p1 text
    <-- p2 text
    FORM convert_pdf.
    CLEAR: tsp01.
    CLEAR: mtab_pdf, mi_bytecount.
    REFRESH mtab_pdf.
    FREE mtab_pdf.
    ***convert to PDF format
    CALL FUNCTION 'CONVERT_OTF'
    EXPORTING
    format = 'PDF'
    IMPORTING
    bin_filesize = mi_bytecount
    TABLES
    otf = i_otf_final
    lines = mtab_pdf
    EXCEPTIONS
    err_max_linewidth = 1
    err_format = 2
    err_conv_not_possible = 3
    OTHERS = 4.
    IF sy-subrc 0.
    ENDIF.
    CONDENSE itab-kunnr NO-GAPS.
    CONCATENATE 'C:\' itab-kunnr '_' sy-datum '.pdf' INTO downfile.
    IF ch_down = 'X'.
    PERFORM download_pdf.
    ENDIF.
    IF ch_email = 'X'.
    PERFORM send_email.
    ENDIF.
    ENDFORM. " convert_pdf
    *& Form download_pdf
    text
    --> p1 text
    <-- p2 text
    FORM download_pdf.
    DATA: i_downfile TYPE string.
    i_downfile = downfile.
    CALL FUNCTION 'GUI_DOWNLOAD'
    EXPORTING
    bin_filesize = mi_bytecount
    filename = i_downfile
    filetype = 'BIN'
    IMPORTING
    FILELENGTH =
    TABLES
    data_tab = mtab_pdf[]
    EXCEPTIONS
    file_write_error = 1
    no_batch = 2
    gui_refuse_filetransfer = 3
    invalid_type = 4
    no_authority = 5
    unknown_error = 6
    header_not_allowed = 7
    separator_not_allowed = 8
    filesize_not_allowed = 9
    header_too_long = 10
    dp_error_create = 11
    dp_error_send = 12
    dp_error_write = 13
    unknown_dp_error = 14
    access_denied = 15
    dp_out_of_memory = 16
    disk_full = 17
    dp_timeout = 18
    file_not_found = 19
    dataprovider_exception = 20
    control_flush_error = 21
    OTHERS = 22
    IF sy-subrc 0.
    ENDIF.
    ENDFORM. " download_pdf
    *& Form send_email
    text
    --> p1 text
    <-- p2 text
    FORM send_email.
    CLEAR: packing_list[],
    pdf[],
    contents_txt[],
    contents_hex[],
    receivers[],
    att_pos,
    document_data,
    esubject,emsgs[],
    w_contents_hex.
    PERFORM packing_list.
    PERFORM set_data.
    IF v_check NE 'X'.
    PERFORM send_email_message.
    ENDIF.
    ENDFORM. " send_email
    *& Form packing_list
    text
    --> p1 text
    <-- p2 text
    FORM packing_list.
    Concatenate the PDF material into the attachments table.
    PERFORM append_pdf_to_attachments USING mi_bytecount.
    Describe the attachment
    CLEAR packing_list.
    REFRESH packing_list.
    packing_list-transf_bin = 'X'.
    ADD 1 TO att_pos.
    packing_list-body_start = att_pos.
    DESCRIBE TABLE contents_hex LINES att_pos.
    packing_list-body_num = att_pos.
    packing_list-doc_type = 'PDF'.
    CONCATENATE 'Statement Date'
    sy-datum4(2) '/' sy-datum6(2) '/'
    sy-datum+2(2) '-' 'Customer no -' itab-kunnr
    INTO packing_list-obj_descr.
    packing_list-obj_langu = 'E'.
    packing_list-doc_size = mi_bytecount.
    APPEND packing_list.
    ENDFORM. " packing_list
    *& Form set_data
    text
    --> p1 text
    <-- p2 text
    FORM set_data.
    CLEAR: sy-tfill.
    DESCRIBE TABLE contents_hex LINES sy-tfill.
    IF sy-tfill GT 0.
    DATA: lines TYPE TABLE OF tline WITH HEADER LINE.
    By this point, the attachments have been created. Now we supply body
    text and set up the recipients.
    CONCATENATE 'Customer Statement for Customer - '
    itab-kunnr esubject INTO esubject.
    The message header information
    CLEAR document_data.
    document_data-obj_name = 'ZWRAPPER'.
    document_data-obj_descr = esubject.
    document_data-obj_langu = 'E'.
    document_data-obj_prio = '1'.
    CLEAR: contents_txt, contents_txt], itext[, itext.
    IF sy-sysid NE 'R3P'.
    CONCATENATE 'Please ignore this mail. This is part of testing from '
    sy-sysid INTO contents_txt SEPARATED BY space.
    APPEND contents_txt.
    CLEAR: contents_txt.
    APPEND contents_txt.
    ENDIF.
    CLEAR vv_text.
    CONCATENATE 'Enter Body of the Email and SAVE it for customer '
    itab-kunnr itab-name1 INTO vv_text SEPARATED BY space.
    EDITOR-CALL FOR itext TITLE vv_text.
    LOOP AT itext.
    contents_txt = itext-text.
    APPEND contents_txt.
    ENDLOOP.
    Describe the body data. This descriptor has to be the first, in front
    of all the attachments.
    CLEAR packing_list.
    packing_list-transf_bin = space.
    packing_list-body_start = 1.
    DESCRIBE TABLE contents_txt LINES packing_list-body_num.
    packing_list-doc_type = 'RAW'.
    packing_list-obj_langu = 'E'.
    INSERT packing_list INDEX 1.
    Set up the recipients.
    CLEAR: receivers, receivers[], sy-tfill.
    CLEAR: usr21, adr6.
    *find email address.
    IF sy-sysid = 'R3P'.
    SELECT prsnr FROM knvk INTO knvk-prsnr WHERE kunnr = itab-kunnr.
    SELECT SINGLE adrnr name1 name2 FROM kna1 INTO
    (kna1-adrnr, kna1-name1, kna1-name2)
    WHERE kunnr = itab-kunnr.
    SELECT SINGLE smtp_addr INTO v_email FROM adr6
    WHERE addrnumber EQ kna1-adrnr.
    IF sy-subrc NE 0.
    CLEAR: v_email.
    ELSE.
    EXIT.
    ENDIF.
    ENDSELECT.
    ENDIF.
    *find the user email address.
    CLEAR: usr21, adr6.
    SELECT SINGLE * FROM usr21 WHERE bname = sy-uname.
    CLEAR adr6.
    SELECT SINGLE * FROM adr6 WHERE addrnumber = usr21-addrnumber AND
    persnumber = usr21-persnumber.
    v_ccemail = adr6-smtp_addr.
    CLEAR:i_fields.
    REFRESH:i_fields.
    i_fields-tabname = 'COMPMSG'.
    i_fields-fieldname = 'TEXT'.
    i_fields-fieldtext = 'Email'.
    i_fields-value = v_email.
    APPEND i_fields.
    CLEAR i_fields.
    i_fields-tabname = 'T100'.
    i_fields-fieldname = 'TEXT'.
    i_fields-fieldtext = 'CC to'.
    i_fields-value = v_ccemail.
    APPEND i_fields.
    CLEAR i_fields.
    CLEAR v_returncode.
    CALL FUNCTION 'POPUP_GET_VALUES'
    EXPORTING
    popup_title = 'Email Address.'
    start_column = '25'
    start_row = '2'
    IMPORTING
    returncode = v_returncode
    TABLES
    fields = i_fields
    EXCEPTIONS
    error_in_fields = 1
    OTHERS = 2.
    IF sy-subrc 0.
    ENDIF.
    IF v_returncode NE 'A'.
    *find the new condition value (table name and filed name took itfor char
    LOOP AT i_fields WHERE tabname = 'COMPMSG' AND fieldname = 'TEXT'.
    v_email = i_fields-value.
    ENDLOOP.
    LOOP AT i_fields WHERE tabname = 'T100'
    AND fieldname = 'TEXT'.
    v_ccemail = i_fields-value.
    ENDLOOP.
    ENDIF.
    receivers-receiver = v_email.
    receivers-rec_type = 'U'. "..assume it's an internet address
    APPEND receivers.
    receivers-receiver = v_ccemail.
    receivers-rec_type = 'U'.
    receivers-copy = 'X'.
    APPEND receivers.
    SORT receivers BY receiver.
    DELETE ADJACENT DUPLICATES FROM receivers COMPARING receiver.
    ENDIF.
    CLEAR: v_check.
    IF v_email = space.
    v_check = 'X'.
    MOVE itab-kunnr TO ioutput-kunnr.
    MOVE v_kname TO ioutput-kname.
    MOVE v_email TO ioutput-email.
    MOVE 'X' TO ioutput-error.

    Hi
    Looks like BASIS issue.
    Pls check the OSS Note - Note 787418 - Sent documents are not readable after upgrade
    Pls contact your BASIS person
    Regards
    MD

  • AP Line-Item Report for State Auditors

    Dear Members,
    I am preparing one Report named AP Line-Item Report for State Auditors and i need the following fields in my report.
    Check Number                PAYR-CHECT
    Voucher Number             BSEG-BELNR
    Check Date                     PAYR-ZALDT
    Voucher Date                     BKPF-BUDAT
    Vendor Number             LFA1-LIFNR
    Vendor Name                     ADRC-NAME1
    Vendor Street Address     ADRC-STREET
    Vendor City                     ADRC-CITY1
    Vendor State                     ADRC-REGIO
    Vendor Zip Code             ADRC-POST_CODE1
    General Ledger Acct No     BSEG-HKONT
    Purchase Order Number     BSEG-EBELN
    Tax Status Code             BSEG-MWSKZ
    Taxable Amount             BSEG-HWBAS
    Exempt Amount             BSEG-MWSTS
    Tax                                     BSEG-MWSTS
    Tax Accrued                     BSEG-MWSTS
    Total Invoice                      BSEG-DMBTR
    I am new to FI.So I request some one please let me know which datasources contain the above fields and which CUBE is best suited for this.
    Thanks in Advance for help and quick reply is much much appreciated.
    Best Regards
    RC

    0VENDOR_ATTR - Vendor Master Data Attributes
    0FI_AP_51 - Check Register Line Items
    0FI_AP_4 - Accounts Payable Line Items
    It should be noted, however, that this won't get you everything that you need, so you may have to create enhance one or more of these DataSources and create User Exit ABAP code to get the required data. Also, the 0FI_AP_51 DataSource isn't available if your source system isn't ECC6 EHP3 or higher. If your source system is less than that, you're going to have to create a generic DataSource for the data from the PAYR table.

  • Bank Reconciliation Statement

    Hi Friends,
    I require some information on BRS. I've not done that until now and I'm supposed to give an end user training on the same.
    My issue is I need the steps that I need to teach the end users, like:
    if I go to FF67, we have an option called Statement number, when I'm randomly entering a number like 1, it is not accepting and says opening and closing balances not found for the statement number.
    I'm highly confused to go further.
    I'd appreciate if someone would give me some info on ,like what are the prerequisites before i could go ahead and use FF67. what is import data using ff_5
    Regards
    Sandhya

    Hi,
    in FF67 transaction code you have to put all the required fields. for opening balance you have to give the pervious month's closing balance as opening balance for this month.if you are going for BRS for the month novenber then you have to put the closing balance of october as aopening balance of november.
    As you going for the first time give sap balance as it was suggested in the above paragraph and put the closing balance November (as per the bank statement)..........after doing of  couple bank statement reconciliation you can see the bank balance(as per bank statement) will mathch to the main account balance(sap system),,,,,,,,,,then it will be easy to take opening balance from Overview Tab (new statement).
    after this you have press enter to go the next page you have to plot the individual figures in combination with transaction key have been customized  for incoming , outgoing, bank charges etc.
    remember that at the below of the second page will be Dr = Cr after the plotting the transactions(as per bank statement) for the month which you are doing BRS ............then press cntrl+s (twice Ecc5.0& ecc6.0 version)
    If the posting is successful, the Brs items will remain the sub accounts (incoming and outgoing) and These sub accounts show those entries,which will flow from the sub account which are not cleared
    in the bank statement .
    Bank Main account balance is the actual balance as per the bank statement whereas the Bank sub accounts denote the reconciliation items.
    with Regards,
    Sudipto

  • Cash Flow Statement - Opening and Closing balances!

    Dear Friends,
    I have created cash flow statement (Indirect Method) using T code FSI1 and FSI4 (Form)..........but i am not able
    Why wouldnu2019t Cash and Cash Equivalents at the End of the Year (Fiscal 2008) be EXACTLY equal to Cash and Cash Equivalents at the Beginning of Year (Fiscal 2009)...?
    How do we need to set up for Cash for Current year closing balances and Next year's opening balances....?
    Thanks,
    Elan N.

    Hi,
    I tested in ECC6.0 and i could able to do so, you try as mentioned below.
    In the output screen of MB5B, goto menu details > click on list > select save > select file > select spreadsheet. Here you can save tthe output in excel format.
    Regards,
    Prabu

  • Report Output is not same as R/3 4.7 and ECC6 ( sort issue)

    Dear Experts,
    I have a problem with external sort used in the program. due to that report output records are not in the same order.
    For example, i am extracting data from BSEG with fields company code, fiscal year, document no, item no, amount and GL Respectively.
    in both the systems (R/3 4.7 and ECC6), data in internal tables are in same order by default.
    but after the external sort using filelds company code, fiscal year and document no.
    output records are sorted exactly with respect to the external sort order in both systems, but for certain line items are not in same order.
    Please check below example.
    For example in R/3:
    684
    2012
    5000000532
    5
    H
    2662.51
    411100
    684
    2012
    5000000532
    4
    H
    13
    555200
    684
    2012
    5000000532
    3
    S
    0.5
    635400
    684
    2012
    5000000532
    2
    S
    12.5
    627800
    684
    2012
    5000000532
    1
    S
    2662.51
    555209
    In ECC6,
    684
    2012
    5000000532
    1
    S
    2662.51
    555209
    684
    2012
    5000000532
    2
    S
    12.5
    627800
    684
    2012
    5000000532
    3
    S
    0.5
    635400
    684
    2012
    5000000532
    4
    H
    13
    555200
    684
    2012
    5000000532
    5
    H
    2662.51
    411100

    The order of extracted records can no be assumed to be constant, any SQL optimizer can change behavior, even without any wide upgrade, but a single database or kernel patch as well as many operation of database administrator can change the order, as well as a change of user behavior, if they fill now another field in selection. So it is good practices to always sort (or use sorted type) internal table extracted or use a ORDER BY clause (provided there is an index in database, else do not)
    Read online documentation of SELECT statement clause ORDER BY
    The order of the rows in the result set refers to all columns that are not listed after ORDER BY, is undefined, and can be different in repeated executions of the same SELECT statement.
    There are also some [MANY > 1000] OSS notes on the subject (look for your database, e.g.  1858427 - Incorrect Sorting of SQL-Select Statement, 1859655 - The result set of an SQL-Select Statement may not be sorted, 1858479 - Result set of select statement is not sorted, 1858569 - Incorrect access to result set of SELECT statement, etc.)
    Also if you sort an internal table and require records with same key values to keep their respective order, use the STABLE clause.
    Regards,
    Raymond

Maybe you are looking for

  • Itunes 11.1.3 for windows 7 not working

    I have the same issue as the one mentioned on this page and have tried the solutions, but they have not worked for me. http://support.apple.com/kb/TS4123 I've also looked at this long forum discussing the same issue, but it is about an older version

  • How to validate an xml with a schema w/o specifying the schema in the xml

    I have done xml validation with xml schemas, where the xml points to the xsd to use. However, I would like to not have to specifiy the xml schema in the xml document (and can't ensure that the xml coming to us has that in it). How do I, in the java c

  • Connecting Panasonic PV GS35 camcorder

    I have a 2011 Macbook Pro. I am trying to connect my Panasonic PV GS35 camcorder to download videos but weh Mac doesn't recognize it. Using a Firewire 800 cable.

  • Recording to iDVD

    I was wondering if I hook up my VCR to my G4 using the Mini-DVI-Video Adaptor, could I record my old VCR tapes to a DVD in the laptop? Thanks

  • IMac and iPad air vs MacBook Pro retina

    Hello there With the new products being released, I was wondering what combination people have gone for. At present I have an iPhone 5s, iPad 2 and windows laptop but really want a mac. What combination have others gone for?? I am considering iMac an