Reporting ret.Impuestos Venezuela - Formulario IDWTCERT_VE_04

Saludos a todos,
Actualmente, luego de ejecutar la transacción S_P00_07000134 <Reporting ret.impuestos (generico)> necesito mostrar en el formulario IDWTCERT_VE_04 (Ret. IVA), cuando haya sido marcado el campo 'Ejecución Test' (check P_TEST) un texto que diga u201CIMPRESIÓN DE PRUEBAu201D o algo que indique que no es válido.
Esto con el fin de evitar que se impriman y entreguen comprobantes con numeración no registrada.
Hice una copia del formulario, pero no he podido identificar dentro del formulario el campo con el valor del parametro P_TEST.
Alguien tiene alguna idea o alguien que lo haya hecho antes, podría prestarme su ayuda???
Gracias!!!

Hola Alex,
Ya había revisado todos los atributos que pasa el programa al Formulario y ese que mencionas, dentro del formulario no consigo el WTCOMPCD-BE_TEST_RUN que mencionas.
Yo estuve probando con Modulos de Funciones dentro del Smartform, para obtener el valor de un campo en un Dynpro - Programa especificado, pero tampoco me funcionó.
Cualquier cosa que se te ocurra me la cuentas. Eso tiene que poder hacerse de alguna manera.
Muchisimas Gracias...!!!

Similar Messages

  • Reporte sobre impuestos

    Hola a todos!
    estoy realizando un reporte para RRHH sobre impuestos. Necesito la informaciòn de la tabla del cluster tax_eval, intente usar la funcion get payroll pero a pesar de que obtiene casi todas las tablas del cluster no se encuentra la antes mencionada. Que funcion deberia usar o como podria conseguir estos datos?
    Gracias!

    hola Yelimar!
    Vivo en California, trabajo para Synactive, www.guixt.com no se si usted conoce que hacemos aqui??
    Pero tal vez tengo uno or dos empleados aqui que talvez podemos ayudar usted con su pregunta?
    Quiero ayudar si puedo... mandame un email quando puedes.
    hablo un pocito de espanol (la verdad, hablo espanol como Tarzan habla ingles, pero si usted habla despacio intiendo casi todo)
    gracias
    tiki

  • Report Ret Add set to default after upgrading to 5.1.0-314

    I upgraded to 5.1.0-314 on Apr 10, 2007, and since that time I never received any periodic scheduled report as usual any more.
    Today I just found that the Report Returns Adress has been change back to:
    "IronPort Reporting" <reporting> so it is the default setting.
    Previous return address was:
    "IronPort Reporting" <postmaster@our_own_domain>
    email reporting@hostname was being rejected since it doesn't exist.
    Why it's changed back to default? I search on the current XML configuration (after and before change the return address) and never found keyword : reporting@hostname value at all.
    So Weird. Anyone experience the same issue? or anyone from Ironport could explain this?
    TIA.

    Unfortunately that's a known problem. In the AsyncOS 5.1.0 ReleaseNotes IronPort say: "Upgrading to AsyncOS 5.0 or later from a previous release will erase all scheduled and archived reports from your system."

  • Financial reporting docs from web analysis

    <p>I need to open some Financial Reporting documents from within aweb analysis page.<br>I put into this page a label, with something like this as text:<br><br><a style="visited:#660000"href="http://scilla:19000/workspace/browse/get/Reports/Rete%20Commerciale/stat_generale_produttore_vista1/">Produttoretotale</<br><br>The FR document is obviosly stat_generale_produttore_vista1; itopens regularly as HTML preview, but in the toolbar there is nobutton to have a PDF preview, nor I have the possibility to printit in PDF format; if I open it from the explorer, the whole PDFstuff is regularly there.<br>How can I have PDF enabled also when passing through a web analysisdocument?</p>

    Hi ,
    For creating a WebAnalysis database connection, please make sure you do the following :
    1. Verify if you have Essbase client installed on the WebAnalysis server.
    2. Check if the path of adm drivers are mentioned in the system environment variable -> PATH entries.
    3. Try giving the Essbase server name instead of the cluster name when attempting to create a connection.
    4. The error 1003 means it doesnt seem to create a connection with the server and while attempting it fails.
    Make sure you have all the parameters mentioned correctly in the server details.
    To get detailed information on what is causing the problem, make sure you stop the WebAnalysis service and start it from console .

  • Urgent Timezone change: Venezuela - Patch needed or info how to change it.

    Greetings,
    The Venezuelan government decided to change the Timezone of Venezuela (America/Caracas) from GMT -4 to GMT -4:30 by September 24th 2007.
    We need to change the timezone of a Solaris 10 server, of course, we thought about just changing time, but, some applications including the JVM if I'm not mistaken uses several functions to get the time/date, we, of course are running Java enabled applications (J2EE) that rely heavily on time and date.
    Any suggestions how we can fix this?.
    Regards,
    Damian

    The system timezone is one thing. The source for your timezone is in /usr/share/lib/zoneinfo/src/southamerica. Most of the time you can grab the updated 'tzdata' olson files from the internet, or you can just edit that file. Either way, you'll want to compile the source into timezone files with 'zic'.
    However, it looks like reports of the Venezuela changes have been inconsistent about the effective date. Even recently this notice was posted <http://www.gobiernoenlinea.gob.ve/noticias-view/ver_detalles.pag?idNoticia=71390> which mentions Jan 1 as the date. So until this is resolved, I don't think the official database will have the entry. You might as well just edit it yourself.
    None of the above affects Java. See this page for information on Java updates:
    http://java.sun.com/javase/timezones/
    The current database (tzdata2007g) does not have any updates for Venezuela. You'll need to update it yourself or wait for another version to be published.
    Darren

  • Impuesto sobre Nomina

    Hugo buen día
    Para el impuesto sobre nomina de los estados con calculo diferente (Chihuahua, Campeche, Sonora, Hidalgo, Durango, Guerrero, etc.)
    al aplicar las notas de las diferentes tablas el sistema por estándar calcula lo real de estos estados?

    Hola David.
    No estoy muy seguro de tener el detalle de Hidalgo, pero depende si el cálculo del ISN se puede hacer a nivel persona o debe calcularse a nivel masivo.
    Si es un porcentaje (como en el DF) se puede hacer a nivel persona. Si depende de la suma de todos los trabajadores (como en Campeche), entonces no se puede hacer a nivel persona y sólo es
    posible a nivel masivo.
    Cuando el cálculo es a nivel persona, el reporte de Impuesto Estatal no tiene ningún problema. Pero cuando el cálculo es a nivel global, el reporte te mostrará los datos completos solo en el formato genérico (HR Form), pero no lo hará en el ALV. El ALV toma los datos del cluster a nivel persona pero no hace cálculos globales. Los cálculos globales se hacen sólo en el formato genérico porque no se pueden hacer a nivel individual.
    Creo que Hidalgo está en ese caso.
    Avísame si esto responde tu pregunta.
    Saludos!

  • SEq number logic on Tax on sls/purch.adv.ret (RFUMSV00 report)

    Hi experts,
    I have a question about the RFUMSV00 report (Tax on sls/purch.adv.ret). My question is about the first field on the result list  (“fyeldSequ. Number”) I don’t know what the criteria for assigning this numbers is. Does anybody know this logic?
    I’ve tried debugging the program but this code is too difficult to understand for me. It would be very helpful for me to know that.
    Thank you very much,
    Artur Rodríguez

    I do not need this any more.

  • Payroll Reports

    Program name                                                          Report title                                                      
    1.     CACS00_PMNT_BLOCK_RESET           Unlock Payment                                                    
    2.     CACS_PMNT_BLOCK_RESET               Lift Payment Locks                                                
    3.     CCARDEC_CHECK                            Check: Payment Card Encryption                                    
    4.     CONTEXT_S_HR_PAY_CH_ABREH           HR-CH: Context for Payroll Units                                  
    5.     DFKZ2F00                                      FORM Routines FBZP/Payment Methods                                
    6.     EWUMPOHD_40                                  Payment Order History: Fill WRBTR and WAERS, HSWAE as of Release 4
    7.     EXAMPLE_PNP_GET_PAYROLL             Example Program for Reading Payroll Results Using GET PAYROLL     
    8.     F111CONS                                           Constants for Payment Request Payment Program                     
    9.     F111MAIN                                      Main Program of Payment Run                                       
    10.     F111SFIE                       Data for the PR Payment Program: Field Groups                     
    11.     F111SINT                       Payment Request Payment Run: Structures and Internal Tables       
    12.     F111SMAC                       Macro Definitions for the PR Payment Run                          
    13.     F111STOP                       Data Pool of Payment Run for Payment Requests                     
    14.     F111TYPE                       Types for Payment Request Payment Run                             
    15.     FITP_GENERAL_READ_TRVCC        Read Characteristic TRVCC (Determination of Payment Method)       
    16.     FIWTPY10                       Withholding Tax at Point of Payment                               
    17.     H01PLOGA                       Payroll Log for Company Pensions                                  
    18.     H01PLOGT                       Routines for Payroll Log                                          
    19.     H02PLOG0                       Subroutine Pool for International Payroll Log                     
    20.     H02PLOG1                       HR-CH: Macros for Payroll Log                                     
    21.     H02PLOGERR                     HR-CH: Error log: Payroll Switzerland                             
    22.     H03PLOG0                       Subroutines Pool for Payroll Log Austria                          
    23.     H04PLOG0                       Subroutines Payroll Log Spain                                     
    24.     H06PLOG0                       Subroutine Pool for Payroll Log (France)                          
    25.     H07PLOG0                       Subroutine-Pool for Payroll Log Canada                            
    26.     H07PLOG1                       Include H07PLOG1: Macro of Payroll Log Error Messages
    27.     H07PLOGA                       Include H07PLOGA: Payroll log functions for Absence Processing    
    28.     H07PLOGD                       Include H07PLOGD: Payroll log functions for function ADDCU        
    29.     H07PLOGE                       Include H07PLOGE: Payroll log for tax calculation and vacation pay
    30.     H07PLOGM                       Include H07PLOGM: Payroll log functions for - messages            
    31.     H07PLOGS                       Include H07PLOGS: Payroll log functions for tax calculation       
    32.     H08PLOG0                       Subroutines Payroll Log Great Britain                             
    33.     H08PLOG0PBS                    Subroutines Payroll Log Great Britain Public Sector (HR PS GB)    
    34.     H10PLOGC                       Include H10PLOGC - Constants for US Payroll Log Message Passing   
    35.     H10PLOGO                       Include H07PLOGD: Payroll log functions for function ADDCU        
    36.     H10PLOGP                       Payroll log messages for general payroll                          
    37.     H13PLOG0                       Subroutine Pool for Payroll Log Australia                         
    38.     H14PLOG2                       Include for SOCSO - Payroll Log                                   
    39.     H14PLOG3                       Include for STD TAX - Payroll Log                                 
    40.     H14PLOG4                       Include for Zakat - Payroll log                                   
    41.     H16PLOG0                       Payroll Log Subroutines for South Africa                          
    42.     H20PLOGA                       Payroll log subroutines for absence handling                      
    43.     H20PLOGE                       Payroll log for missing data (tables, infotypes, etc.)            
    44.     H20PLOGG                       Payroll log for deductions                                        
    45.     H20PLOGH                       Payroll log subroutines for hol. allowance and garnishment        
    46.     H20PLOGS                       Payroll log for Norwegian specific tables (SCRT, RETT, RETP, ...) 
    47.     H20PLOGT                       Payroll log subroutines for tax and employers contributions       
    48.     H23PLOG0                       Subroutinepool for Payroll Log (SE)                               
    49.     H23PLOG_CAR                    Payroll Log Subroutines for company car                           
    50.     H25PLOG1                       Include for new Payroll log (Infotypes - Singapore)               
    51.     H25PLOG3                       Include for new Payroll log (Tables- Singapore)                   
    52.     H26PLOG0                       Subroutine pool for Payroll Log - TH   
    53.     H26PLOG4                       Error Routines - Payroll Log                                      
    54.     H27PLOG1                       HR-HK: Payroll log data definitions                               
    55.     H27PLOG6                       HR-HK: Payroll log common forms                                   
    56.     H37PLOG21                      Payroll log - Retrocalculation (old BRRET and labor debits)       
    57.     H42PLOG6                       Include for Payroll LOG Taiwan                                    
    58.     H43PLOG0                       Subroutine Pool for Payroll Log New Zealand                       
    59.     H99CMLI0                       Cash Breakdown for Cash Payment Based on Payment Method           
    60.     H99PLOG0                       Subroutine Pool for International Payroll Log                     
    61.     H99PLOG6                       Subroutine Pool for International Payroll Log                     
    62.     H99PLOGPF                      Subroutine Pool for Pension Fund Payroll Log                      
    63.     H99PLOGS                       Subroutine Pool for Payroll Log for Special Payments              
    64.     H99PLOGT                       Subroutine Pool for International Payroll Log, Gross Part         
    65.     H99PLOGY                       Subroutine pool for Benefits Payroll Log: International           
    66.     H99UGSP0                       Splits in Payroll                                                 
    67.     H99U_CONVERSION_CA             Converting Cluster CA for Archived Payroll Results                
    68.     H99U_PYINFTY_CC_XPRA           Payroll IT: Main XPRA report for country grouping conversion in 4.
    69.     H99_DISPLAY_PAYRESULT_OLD      Display Payroll Results                                           
    70.     H99_FORMSTEMPLATE_PAYDIM_02    HR Forms: Template for Local Class (Payroll)                      
    71.     H99_FORMSTEMPLATE_PAYR_02      HR Forms: Template for Local Class (Payroll)                      
    72.     H99_SELECT_PERNR               Select Personnel Numbers for a Payroll Process (PY)               
    73.     H99_SELECT_PERNR_INTERFACE     Select Personnel Numbers, Interface Without Payroll Driver        
    74.     H99_SELECT_PERNR_PU12_GROSS    Payroll number selection for payroll run and export               
    75.     HARCALC0                       Payroll accounting program Argentina                              
    76.     HARCKTO0                       Payroll account                                                   
    77.     HARCLJN0                       Payroll journal                                                   
    78.     HARLIBR0                       Legal Payroll Payments Book: Law 20.744 Art. 52 - Forms version   
    79.     HARLIBR1                       Legal Payroll Payments Book: Law 20.744 Art.52 - SapScripts versio
    80.     HBPPLOG0                       Payroll log Benfit Point                                          
    81.     HBRCALC0                       Payroll accounting program  - Brazil                              
    82.     HBRCKTO0                       Payroll accounts                                                  
    83.     HBRPAYR0                       Payroll Monthly Report                                            
    84.     HBRSALM0                       Maternity Pay data sheet                                          
    85.     HCNCALC0                       Payroll Driver, Version China                                     
    86.     HCNCDTA0                       Preliminary Program - Data Medium Exchange for Several Payment Run
    87.     HCNCKTO0                       Payroll Accounts     China                                        
    88.     HCNCLJN0                       Payroll Journal     China                                         
    89.     HFICALC0                       Payroll driver (Finland)                                          
    90.     HFICDTA0                       Preliminary Program - DME for Several Payment Runs (Finland)      
    91.     HFICKTO0                       Payroll Accounts                                                  
    23.     HFICLJN0                       Payroll Journal - Finland                                         
    24.     HFIIABP0                       Batch Input for Vacation Bonus Payments Finland                   
    25.     HFILHPA0                       Holiday Pay Accrual                                               
    26.     HFILTVR0                       Pay Scale Reclassification data for Parake employees              
    27.     HHKCALC0                       Payroll Driver Hong Kong                                          
    28.     HHKCKTO0                       Payroll Accounts                                                  
    29.     HHKCLJN0                       Payroll Journal - Hong Kong                                       
    30.     HHKCLST1                       Payroll Results for Cluster HZ  -  Hongkong Payroll Projection    
    31.     HHKCLSTR                       Payroll Results for Cluster HK                                    
    32.     HHKCREC0                       Payroll results check tool                                        
    33.     HHKUREC0                       Payroll results check tool: Generation                            
    34.     HHKUREC5                       Payroll results check tool: Display                               
    35.     HIDCALC0                       Payroll Driver, Version ID (Indonesia)                            
    36.     HIDCANN0                       Payroll Annual Display                                           
    37.     HIDCDTC0                       Preliminary Program - Data Medium Exchange for Several Payment Run
    38.     HIDCKTO0                       Payroll Account                                                  
    39.     HIDCLJN0                       Payroll Journal                                                  
    40.     HIDCLSTR                       Display Payroll Results (Cluster IS) Indonesia                   
    41.     HIECALC0                       Payroll Calculation Driver for Ireland                           
    42.     HIECDTA0                       Preliminary Program - DME for Several Payment Runs (Ireland)     
    43.     HIECDTB0                       Preliminary DME Program for Separate Payment Run                 
    44.     HIECEDT0                       Payslip - Ireland                                                
    45.     HIECKTO0                       Payroll account                                                  
    46.     HIECLJN0                       Payroll journal for Ireland                                      
    47.     HIECLSTR                       Display cluster IE (Payroll results Ireland)                     
    48.     HIEUDIR0                       Create Directory for Payroll Results (Cluster IE)                
    49.     HINCALC0                       Payroll Driver, India                                            
    50.     HINCANN0                       Payroll Annual Display - India                                   
    51.     HINCDTA0                       Preliminary Program - Data Medium Exchange - Post Payroll - India
    52.     HINCKTO0                       Payroll Account - India                                          
    53.     HINCLJN0                       Payroll Journal - India                                          
    54.     HINCLSTR                       Cluster Display IN ( Payroll Results, India )                    
    55.     HINUULK0                       INLK Payroll Tables T558B and T558C  Upload                      
    56.     HINU_M40_FFOD                  Create DME (Print Payment advice note)                           
    57.     HKRCALC0                       Payroll Driver, Version for South Korea                          
    58.     HKRCDTA0                       Preliminary Program - Data Medium Exchange for Several Payment Run
    59.     HKRCKTO0                       Payroll Accounts                                                 
    60.     HKRCLJN0                       Payroll Journal     South Korea                                  
    61.     HKRCLSTR                       Payroll Results for Cluster KR (South Korea)                     
    62.     HKRPLOG0                       Payroll messages South Korea                                      
    63.     HMXCINO0                       Payroll tax report                                                
    64.     HMXCKTO0                       Payroll account                                                   
    65.     HMXCLJN0                       Payroll journal                                                   
    66.     HMXCLSTR                       Payroll accounting results (Cluster MX)                           
    67.     HMXUACTPBSF2                   Subroutines for Change in Pay                                     
    68.     HNZCALC0                       Payroll Driver, Version NZ (New Zealand)                          
    69.     HNZCDTA0                       Preliminary Program - Data Medium Exchange for Several Payment Run
    70.     HNZCEDT0                       Editing Payroll Results (New Zealand Version)                     
    71.     HNZCLJN0                       Payroll Journal     International                                 
    72.     HNZCLSTR                       Display Payroll Results (Cluster NZ) - New Zealand                
    73.     HNZDLN10                       Advance Pay Cluster(N1) Display and Deletion Program for New Zeala
    74.     HNZLDET0                       HR-NZ: Employee Pay Details Report                                
    75.     HNZLEXC0                       HR-NZ: Payroll Exception Report                                   
    76.     HNZLSUM0                       HR-NZ: Employee Payroll Summary Report                            
    77.     HNZUCDC0                       Convert Payroll Results for Conversion to > 2 Decimal Places      
    78.     HNZUCLR0                       Payroll Results (RQ) - Original and differences from retro periods
    79.     HPHCALC0                       Payroll Driver - Philippines                                      
    80.     HPHCAWS0                       13th Month Pay                                                    
    81.     HPHCDTA0                       Preliminary Program - Data Medium Exchange for Several Payment Run
    82.     HPHCLJN0                       Payroll Journal - Philippines                                     
    83.     HPHCLSTR                       Display Payroll Results (Cluster PH) - Philippines                
    84.     HPHCMP00                       HR-PH: Advance Payment Multiple Runs                              
    85.     HPHUALR0                       Payroll Results (PH) - Actual/most recent result for CRT          
    86.     HPHUCDC0                       Convert Payroll Results for Conversion to > 2 Decimal Places      
    87.     HPHUCLR0                       Payroll Results (PH) - Original and differences from retro periods
    88.     HTHCALC0                       Payroll Driver, Version 9 (Thailand)                            
    89.     HTHCDTC0                       Preliminary Prog - Data Medium Exchange for Several Payment Runs
    90.     HTHCKTO0                       Payroll Accounts Thailand                                       
    91.     HTHCLJN0                       Payroll Journal - THAILAND                                      
    92.     HTHCLSTR                       Payroll Results for Cluster TH                                  
    93.     HTWCALC0                       Payroll Driver for Taiwan                                       
    94.     HTWCDTA0                       Preliminary Program - Data Medium Exchange for Several Payment Ru
    95.     HTWCKTO0                       Taiwan Payroll Accounts                                         
    96.     HTWCLJN0                       Payroll Journal      Taiwan specific                            
    97.     HTWCLSTR                       Payroll Results for Cluster TN                                  
    98.     HTWCTXW0                       Tax Certificate Report & Media Form (Payday)                    
    99.     HVECALC0                       Payroll accounting program (Venezuela)                          
    100.     HVECEDT0                       Payslip and severance payslip                                   
    101.     HVECKTO0                       Payroll account                                                 
    102.     HVECLJN0                       Payroll journal                                                 
    103.     IBKKARCHLOG_FIBA_ITEM          Data Declarations for Archiving Payment Items                   
    104.     IBKKARCH_FIBA_ITEM             Data Declarations for Archiving Payment Items                   
    105.     IBKKARCH_FIBA_ORDER            Data Declarations for Archiving Payment Orders                  
    106.     IBKKCOGPAYMNOTE                Public Constants of Payment Notes                               
    107.     IBKKCONPAYMNOTE                Internal Constants of Payment Notes                             
    108.     IFIFMKAO                       IS-PS: Constant Declarations for Payment Requests               
    109.     IHC_BCAREVPO_ALV01             List of Cross-Bank Area Payment Orders                          
    110.     J_1AF011                       Payment Notice (AR)                                             
    111.     J_1AF012                       Payment Notice (AP)                                             
    112.     J_1AINFK                       Inflation Adjustment of Open Payables in Local Currency         
    113.     L0FVTI01                       F4 Help for Incoming Payment Method                             
    114.     L0P02O01                       PBO Module for Restricting Payments/Deductions                  
    115.     L3HKEU01                       Long Service Payment and Severance Payment for Hongkong         
    116.     L3HKFU03                       Print function for EOY Payment, Hongkong                        
    117.     L3HKFU05                       Print function for EOY Payment, Hongkong                        
    118.     L3NZ0U08                       New Zealand Payroll Messages                                    
    119.     L3TH0U04                       Function to return the Begin Date and End Date for a given Payrol
    120.     LACC3U02                       Check BAPI: Account, incoming invoice (Load Payable)            
    121.     LACC3U03                       Check BAPI: Account, incoming invoice (Load Payable)            
    122.     LACCSU02                       Derivation of Payment Flow from SD Document (Quotation, Order)  
    123.     RPCOIFU6                       Delete Interface Results forward using Payroll Area and Pay Perio
    124.     HFILTVR0                       Pay Scale Reclassification data for Parake employees             
    125.     LHRFPBS4U02                    Derive Amount from Pay Scale group, Pay Scale level              
    126.     LHRFPBS4U05                    Read Pay Scale, Pay Area, Pay Groups from Corps or Corps and Grade
    127.     RHPAYSC0                       Display Pay Scale Structure                                      
    128.     RPIPSR00                       Pay Scale Reclassification                                       
    129.     RPISTLVP                       Pay Scale Reclassification due to change in job code             
    130.     RPITIG00                       Pay Scale Reclassification                                       
    131.     RPITIGVP                       Pay Scale Reclassification                                       
    132.     RPITUM00                       Pay Scale Reclassification acc. to Age or Pay Scale Membership Per
    133.     RPITUMH0                       Pay Scale Reclassification acc. to Age or Pay Scale Membership Per
    134.     RPLPSCJ0                       Time Spent in Pay Scale Group (Japan)                            
    135.     RPLTRF10                       Defaults for Pay Scale Reclassification                          
    136.     RPU510N0                       Simple Pay Scale Increase for Wage Types Determined Indirectly   
    137.     RPU510Q0                       Pay Scale Increase for the Family-Related Bonus                  
    138.     RPUEHBD0                       Table conversion:  Valuation of Pay Scales for Statistics        
    139.     RPUEMU00                       Currency Changeover EMU for Pay Scale and Pay Grade Structures   
    140.     RPUT510BPBS                    SAP-HR Belgian Public Sector : Generation of Pay Scales (T510)   
    141.     Y0PXIRLPRANGE                  Upload Pay Scale Range                                           
    142.     ZPMIRAS1                       Program to Fill Pay Scales for Annual Salaries Table (T510N)     
    143.     ZPMIRSC1                       Program to Fill Pay Scale Group Table (T510)                     
    144.     ZT510LOAD                      Program to Fill Pay Scale Group Table (T510)  
    145.     RPISTLVP                       Pay Scale Reclassification due to change in job code       
    146.     RPUSADU0                       Data Definition for Salary Calculation                     
    147.     RPUSALU0                       Salary Calculation Subroutines                             
    148.     RPUSCC00                       Compare Schemas                                            
    149.     RPUSCCA0                                                                               
    150.     RPUSCCA1                                                                               
    151.     RPUSCCB0                       Checkprogramm for Scheme (Belgium)                         
    152.     RPUSCCB1                       Checkprogramm for Personnel Calculation Scheme's (Belgium) 
    153.     RPUSCCC0                       Schema Check for Payroll - Swiss Country Version           
    154.     RPUSCCC1                                                                               
    155.     RPUSCCD0                       Schema Check for Payroll - German Version                  
    156.     RPUSCCD1                                                                               
    157.     RPUSCCE0                       Schema check for payroll - Spain                           
    158.     RPUSCCE1                                                                               
    159.     RPUSCCF0                       Check schemas for France ( generated by RPUGSC00 )         
    160.     RPUSCCF1                                                                               
    161.     RPUSCCG0                                                                               
    162.     RPUSCCG1                                                                               
    163.     RPUSCCH0                       Schema Prüfungsprogramm - Ungarn                           
    164.     RPUSCCH1                       Schema Prüfungsprogramm - Ungarn                           
    165.     RPUSCCI0                                                                               
    166.     RPUSCCI1                                                                               
    167.     RPUSCCJ0                       Schema Check for Payroll Accounting - Japanese Version     
    168.     RPUSCCJ1                       Check Program for Schemas (Japan)                          
    169.     RPUSCCK0                       RPUSCCK0

    hi Suresh,
    thank u so much.
    been searchin for this for some time.
    Regards,
    Hari Kiran

  • Cash flow report in FI  ***very very urgent***

    Techie's,
    Please help me, getting a ABAP report for "cash flow" for funds in FI.
    Its quite urgent.
    Please revert as soon as possible !!
    Regards,
    -=Virendra=-

    Hi,
    Run S_ALR_87012271 (menu path A/C-FA-GL-Info System- GL Reports - BS/PL/Cashflow-general-cash flow)
    In the screen enter the year & Company code, & execute. you will reach to another screen.
    Click on the "FORM" & you will reach another screen having various forms. The form related to Cash flow is already highlighted.
    Go to EDIT-General Data Selection - Change the financial statment version pertaining to your company
    Then, click on each line item in the form which is being displayed and enter corresponding GLs.
    Save it & execute S_ALR_87012271
    . CACS00_PMNT_BLOCK_RESET Unlock Payment
    2. CACS_PMNT_BLOCK_RESET Lift Payment Locks
    3. CCARDEC_CHECK Check: Payment Card Encryption
    4. CONTEXT_S_HR_PAY_CH_ABREH HR-CH: Context for Payroll Units
    5. DFKZ2F00 FORM Routines FBZP/Payment Methods
    6. EWUMPOHD_40 Payment Order History: Fill WRBTR and WAERS, HSWAE as of Release 4
    7. EXAMPLE_PNP_GET_PAYROLL Example Program for Reading Payroll Results Using GET PAYROLL
    8. F111CONS Constants for Payment Request Payment Program
    9. F111MAIN Main Program of Payment Run
    10. F111SFIE Data for the PR Payment Program: Field Groups
    11. F111SINT Payment Request Payment Run: Structures and Internal Tables
    12. F111SMAC Macro Definitions for the PR Payment Run
    13. F111STOP Data Pool of Payment Run for Payment Requests
    14. F111TYPE Types for Payment Request Payment Run
    15. FITP_GENERAL_READ_TRVCC Read Characteristic TRVCC (Determination of Payment Method)
    16. FIWTPY10 Withholding Tax at Point of Payment
    17. H01PLOGA Payroll Log for Company Pensions
    18. H01PLOGT Routines for Payroll Log
    19. H02PLOG0 Subroutine Pool for International Payroll Log
    20. H02PLOG1 HR-CH: Macros for Payroll Log
    21. H02PLOGERR HR-CH: Error log: Payroll Switzerland
    22. H03PLOG0 Subroutines Pool for Payroll Log Austria
    23. H04PLOG0 Subroutines Payroll Log Spain
    24. H06PLOG0 Subroutine Pool for Payroll Log (France)
    25. H07PLOG0 Subroutine-Pool for Payroll Log Canada
    26. H07PLOG1 Include H07PLOG1: Macro of Payroll Log Error Messages
    27. H07PLOGA Include H07PLOGA: Payroll log functions for Absence Processing
    28. H07PLOGD Include H07PLOGD: Payroll log functions for function ADDCU
    29. H07PLOGE Include H07PLOGE: Payroll log for tax calculation and vacation pay
    30. H07PLOGM Include H07PLOGM: Payroll log functions for - messages
    31. H07PLOGS Include H07PLOGS: Payroll log functions for tax calculation
    32. H08PLOG0 Subroutines Payroll Log Great Britain
    33. H08PLOG0PBS Subroutines Payroll Log Great Britain Public Sector (HR PS GB)
    34. H10PLOGC Include H10PLOGC - Constants for US Payroll Log Message Passing
    35. H10PLOGO Include H07PLOGD: Payroll log functions for function ADDCU
    36. H10PLOGP Payroll log messages for general payroll
    37. H13PLOG0 Subroutine Pool for Payroll Log Australia
    38. H14PLOG2 Include for SOCSO - Payroll Log
    39. H14PLOG3 Include for STD TAX - Payroll Log
    40. H14PLOG4 Include for Zakat - Payroll log
    41. H16PLOG0 Payroll Log Subroutines for South Africa
    42. H20PLOGA Payroll log subroutines for absence handling
    43. H20PLOGE Payroll log for missing data (tables, infotypes, etc.)
    44. H20PLOGG Payroll log for deductions
    45. H20PLOGH Payroll log subroutines for hol. allowance and garnishment
    46. H20PLOGS Payroll log for Norwegian specific tables (SCRT, RETT, RETP, ...)
    47. H20PLOGT Payroll log subroutines for tax and employers contributions
    48. H23PLOG0 Subroutinepool for Payroll Log (SE)
    49. H23PLOG_CAR Payroll Log Subroutines for company car
    50. H25PLOG1 Include for new Payroll log (Infotypes - Singapore)
    51. H25PLOG3 Include for new Payroll log (Tables- Singapore)
    52. H26PLOG0 Subroutine pool for Payroll Log - TH
    53. H26PLOG4 Error Routines - Payroll Log
    54. H27PLOG1 HR-HK: Payroll log data definitions
    55. H27PLOG6 HR-HK: Payroll log common forms
    56. H37PLOG21 Payroll log - Retrocalculation (old BRRET and labor debits)
    57. H42PLOG6 Include for Payroll LOG Taiwan
    58. H43PLOG0 Subroutine Pool for Payroll Log New Zealand
    59. H99CMLI0 Cash Breakdown for Cash Payment Based on Payment Method
    60. H99PLOG0 Subroutine Pool for International Payroll Log
    61. H99PLOG6 Subroutine Pool for International Payroll Log
    62. H99PLOGPF Subroutine Pool for Pension Fund Payroll Log
    63. H99PLOGS Subroutine Pool for Payroll Log for Special Payments
    64. H99PLOGT Subroutine Pool for International Payroll Log, Gross Part
    65. H99PLOGY Subroutine pool for Benefits Payroll Log: International
    66. H99UGSP0 Splits in Payroll
    67. H99U_CONVERSION_CA Converting Cluster CA for Archived Payroll Results
    68. H99U_PYINFTY_CC_XPRA Payroll IT: Main XPRA report for country grouping conversion in 4.
    69. H99_DISPLAY_PAYRESULT_OLD Display Payroll Results
    70. H99_FORMSTEMPLATE_PAYDIM_02 HR Forms: Template for Local Class (Payroll)
    71. H99_FORMSTEMPLATE_PAYR_02 HR Forms: Template for Local Class (Payroll)
    72. H99_SELECT_PERNR Select Personnel Numbers for a Payroll Process (PY)
    73. H99_SELECT_PERNR_INTERFACE Select Personnel Numbers, Interface Without Payroll Driver
    74. H99_SELECT_PERNR_PU12_GROSS Payroll number selection for payroll run and export
    75. HARCALC0 Payroll accounting program Argentina
    76. HARCKTO0 Payroll account
    77. HARCLJN0 Payroll journal
    78. HARLIBR0 Legal Payroll Payments Book: Law 20.744 Art. 52 - Forms version
    79. HARLIBR1 Legal Payroll Payments Book: Law 20.744 Art.52 - SapScripts versio
    80. HBPPLOG0 Payroll log Benfit Point
    81. HBRCALC0 Payroll accounting program - Brazil
    82. HBRCKTO0 Payroll accounts
    83. HBRPAYR0 Payroll Monthly Report
    84. HBRSALM0 Maternity Pay data sheet
    85. HCNCALC0 Payroll Driver, Version China
    86. HCNCDTA0 Preliminary Program - Data Medium Exchange for Several Payment Run
    87. HCNCKTO0 Payroll Accounts China
    88. HCNCLJN0 Payroll Journal China
    89. HFICALC0 Payroll driver (Finland)
    90. HFICDTA0 Preliminary Program - DME for Several Payment Runs (Finland)
    91. HFICKTO0 Payroll Accounts
    23. HFICLJN0 Payroll Journal - Finland
    24. HFIIABP0 Batch Input for Vacation Bonus Payments Finland
    25. HFILHPA0 Holiday Pay Accrual
    26. HFILTVR0 Pay Scale Reclassification data for Parake employees
    27. HHKCALC0 Payroll Driver Hong Kong
    28. HHKCKTO0 Payroll Accounts
    29. HHKCLJN0 Payroll Journal - Hong Kong
    30. HHKCLST1 Payroll Results for Cluster HZ - Hongkong Payroll Projection
    31. HHKCLSTR Payroll Results for Cluster HK
    32. HHKCREC0 Payroll results check tool
    33. HHKUREC0 Payroll results check tool: Generation
    34. HHKUREC5 Payroll results check tool: Display
    35. HIDCALC0 Payroll Driver, Version ID (Indonesia)
    36. HIDCANN0 Payroll Annual Display
    37. HIDCDTC0 Preliminary Program - Data Medium Exchange for Several Payment Run
    38. HIDCKTO0 Payroll Account
    39. HIDCLJN0 Payroll Journal
    40. HIDCLSTR Display Payroll Results (Cluster IS) Indonesia
    41. HIECALC0 Payroll Calculation Driver for Ireland
    42. HIECDTA0 Preliminary Program - DME for Several Payment Runs (Ireland)
    43. HIECDTB0 Preliminary DME Program for Separate Payment Run
    44. HIECEDT0 Payslip - Ireland
    45. HIECKTO0 Payroll account
    46. HIECLJN0 Payroll journal for Ireland
    47. HIECLSTR Display cluster IE (Payroll results Ireland)
    48. HIEUDIR0 Create Directory for Payroll Results (Cluster IE)
    49. HINCALC0 Payroll Driver, India
    50. HINCANN0 Payroll Annual Display - India
    51. HINCDTA0 Preliminary Program - Data Medium Exchange - Post Payroll - India
    52. HINCKTO0 Payroll Account - India
    53. HINCLJN0 Payroll Journal - India
    54. HINCLSTR Cluster Display IN ( Payroll Results, India )
    55. HINUULK0 INLK Payroll Tables T558B and T558C Upload
    56. HINU_M40_FFOD Create DME (Print Payment advice note)
    57. HKRCALC0 Payroll Driver, Version for South Korea
    58. HKRCDTA0 Preliminary Program - Data Medium Exchange for Several Payment Run
    59. HKRCKTO0 Payroll Accounts
    60. HKRCLJN0 Payroll Journal South Korea
    61. HKRCLSTR Payroll Results for Cluster KR (South Korea)
    62. HKRPLOG0 Payroll messages South Korea
    63. HMXCINO0 Payroll tax report
    64. HMXCKTO0 Payroll account
    65. HMXCLJN0 Payroll journal
    66. HMXCLSTR Payroll accounting results (Cluster MX)
    67. HMXUACTPBSF2 Subroutines for Change in Pay
    68. HNZCALC0 Payroll Driver, Version NZ (New Zealand)
    69. HNZCDTA0 Preliminary Program - Data Medium Exchange for Several Payment Run
    70. HNZCEDT0 Editing Payroll Results (New Zealand Version)
    71. HNZCLJN0 Payroll Journal International
    72. HNZCLSTR Display Payroll Results (Cluster NZ) - New Zealand
    73. HNZDLN10 Advance Pay Cluster(N1) Display and Deletion Program for New Zeala
    74. HNZLDET0 HR-NZ: Employee Pay Details Report
    75. HNZLEXC0 HR-NZ: Payroll Exception Report
    76. HNZLSUM0 HR-NZ: Employee Payroll Summary Report
    77. HNZUCDC0 Convert Payroll Results for Conversion to > 2 Decimal Places
    78. HNZUCLR0 Payroll Results (RQ) - Original and differences from retro periods
    79. HPHCALC0 Payroll Driver - Philippines
    80. HPHCAWS0 13th Month Pay
    81. HPHCDTA0 Preliminary Program - Data Medium Exchange for Several Payment Run
    82. HPHCLJN0 Payroll Journal - Philippines
    83. HPHCLSTR Display Payroll Results (Cluster PH) - Philippines
    84. HPHCMP00 HR-PH: Advance Payment Multiple Runs
    85. HPHUALR0 Payroll Results (PH) - Actual/most recent result for CRT
    86. HPHUCDC0 Convert Payroll Results for Conversion to > 2 Decimal Places
    87. HPHUCLR0 Payroll Results (PH) - Original and differences from retro periods
    88. HTHCALC0 Payroll Driver, Version 9 (Thailand)
    89. HTHCDTC0 Preliminary Prog - Data Medium Exchange for Several Payment Runs
    90. HTHCKTO0 Payroll Accounts Thailand
    91. HTHCLJN0 Payroll Journal - THAILAND
    92. HTHCLSTR Payroll Results for Cluster TH
    93. HTWCALC0 Payroll Driver for Taiwan
    94. HTWCDTA0 Preliminary Program - Data Medium Exchange for Several Payment Ru
    95. HTWCKTO0 Taiwan Payroll Accounts
    96. HTWCLJN0 Payroll Journal Taiwan specific
    97. HTWCLSTR Payroll Results for Cluster TN
    98. HTWCTXW0 Tax Certificate Report & Media Form (Payday)
    99. HVECALC0 Payroll accounting program (Venezuela)
    100. HVECEDT0 Payslip and severance payslip
    101. HVECKTO0 Payroll account
    102. HVECLJN0 Payroll journal
    103. IBKKARCHLOG_FIBA_ITEM Data Declarations for Archiving Payment Items
    104. IBKKARCH_FIBA_ITEM Data Declarations for Archiving Payment Items
    105. IBKKARCH_FIBA_ORDER Data Declarations for Archiving Payment Orders
    106. IBKKCOGPAYMNOTE Public Constants of Payment Notes
    107. IBKKCONPAYMNOTE Internal Constants of Payment Notes
    108. IFIFMKAO IS-PS: Constant Declarations for Payment Requests
    109. IHC_BCAREVPO_ALV01 List of Cross-Bank Area Payment Orders
    110. J_1AF011 Payment Notice (AR)
    111. J_1AF012 Payment Notice (AP)
    112. J_1AINFK Inflation Adjustment of Open Payables in Local Currency
    113. L0FVTI01 F4 Help for Incoming Payment Method
    114. L0P02O01 PBO Module for Restricting Payments/Deductions
    115. L3HKEU01 Long Service Payment and Severance Payment for Hongkong
    116. L3HKFU03 Print function for EOY Payment, Hongkong
    117. L3HKFU05 Print function for EOY Payment, Hongkong
    118. L3NZ0U08 New Zealand Payroll Messages
    119. L3TH0U04 Function to return the Begin Date and End Date for a given Payrol
    120. LACC3U02 Check BAPI: Account, incoming invoice (Load Payable)
    121. LACC3U03 Check BAPI: Account, incoming invoice (Load Payable)
    122. LACCSU02 Derivation of Payment Flow from SD Document (Quotation, Order)
    123. RPCOIFU6 Delete Interface Results forward using Payroll Area and Pay Perio
    124. HFILTVR0 Pay Scale Reclassification data for Parake employees
    125. LHRFPBS4U02 Derive Amount from Pay Scale group, Pay Scale level
    126. LHRFPBS4U05 Read Pay Scale, Pay Area, Pay Groups from Corps or Corps and Grade
    127. RHPAYSC0 Display Pay Scale Structure
    128. RPIPSR00 Pay Scale Reclassification
    129. RPISTLVP Pay Scale Reclassification due to change in job code
    130. RPITIG00 Pay Scale Reclassification
    131. RPITIGVP Pay Scale Reclassification
    132. RPITUM00 Pay Scale Reclassification acc. to Age or Pay Scale Membership Per
    133. RPITUMH0 Pay Scale Reclassification acc. to Age or Pay Scale Membership Per
    134. RPLPSCJ0 Time Spent in Pay Scale Group (Japan)
    135. RPLTRF10 Defaults for Pay Scale Reclassification
    136. RPU510N0 Simple Pay Scale Increase for Wage Types Determined Indirectly
    137. RPU510Q0 Pay Scale Increase for the Family-Related Bonus
    138. RPUEHBD0 Table conversion: Valuation of Pay Scales for Statistics
    139. RPUEMU00 Currency Changeover EMU for Pay Scale and Pay Grade Structures
    140. RPUT510BPBS SAP-HR Belgian Public Sector : Generation of Pay Scales (T510)
    141. Y0PXIRLPRANGE Upload Pay Scale Range
    142. ZPMIRAS1 Program to Fill Pay Scales for Annual Salaries Table (T510N)
    143. ZPMIRSC1 Program to Fill Pay Scale Group Table (T510)
    144. ZT510LOAD Program to Fill Pay Scale Group Table (T510)
    145. RPISTLVP Pay Scale Reclassification due to change in job code
    146. RPUSADU0 Data Definition for Salary Calculation
    147. RPUSALU0 Salary Calculation Subroutines
    148. RPUSCC00 Compare Schemas
    149. RPUSCCA0
    150. RPUSCCA1
    151. RPUSCCB0 Checkprogramm for Scheme (Belgium)
    152. RPUSCCB1 Checkprogramm for Personnel Calculation Scheme's (Belgium)
    153. RPUSCCC0 Schema Check for Payroll - Swiss Country Version
    154. RPUSCCC1
    155. RPUSCCD0 Schema Check for Payroll - German Version
    156. RPUSCCD1
    157. RPUSCCE0 Schema check for payroll - Spain
    158. RPUSCCE1
    159. RPUSCCF0 Check schemas for France ( generated by RPUGSC00 )
    160. RPUSCCF1
    161. RPUSCCG0
    162. RPUSCCG1
    163. RPUSCCH0 Schema Prüfungsprogramm - Ungarn
    164. RPUSCCH1 Schema Prüfungsprogramm - Ungarn
    165. RPUSCCI0
    166. RPUSCCI1
    167. RPUSCCJ0 Schema Check for Payroll Accounting - Japanese Version
    168. RPUSCCJ1 Check Program for Schemas (Japan)
    169. RPUSCCK0 RPUSCCK0

  • Dynamic CRM 2013 Online how to execute Report, generate PDF and email

    Dear All,
    I am using Dynamic CRM 2013 online. For quote, I have workflow and Dialogue processes for review process. On approval, I want the system to generate a PDF of quote report, attach the PDF and email it to the Customer.
    Better I would like, When approver, clicks on the approve button, the system should auto generate a PDF of quote report, attach the PDF and email it to the Customer, without any further input from the user. If its not possible, I may have to put button on
    quote form.
    I am using the attached code, but facing various issues.
    1. Under prepare the SOAP Message coding part, I am not sure what should be the below URL for CRM 2013 Online?
    xHReq.Open("POST", "/mscrmservices/2007/CrmService.asmx", false);
    2. What should be the emailid here? Is it Recepient Contact id(Guid) ?
    var emailid = resultXml.selectSingleNode("//CreateResult").nodeTypedValue;
    alert("emailid" + emailid.toString());
    3. Using this code, not able to create Entity for "ActivityMimeAttachment", I am getting newEntity as undefined.
    Below is the code I am using. Please check and help me out, where I am going wrong. Let me know if any better way to implement it. At present, I have put one button on quote form, on click event, below code will get executed.
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <title></title>
    <script type="text/javascript">
    var Xrm;
    if (window.opener) { Xrm = window.opener.Xrm; }
    else if (window.parent) { Xrm = window.parent.Xrm; }
    function getReportingSession() {
    var reportName = "Quotation_Report"; //set this to the report you are trying to download
    var reportId = "7C39D18F-1DC6-E311-8986-D89D6765B238"; //set this to the guid of the report you are trying to download
    var recordid = Xrm.Page.data.entity.getId();
    // recordid = recordid.substring(1, 37); //getting rid of curly brackets
    alert(recordid);
    var pth = Xrm.Page.context.getServerUrl() + "/CRMReports/rsviewer/reportviewer.aspx";
    var retrieveEntityReq = new XMLHttpRequest();
    retrieveEntityReq.open("POST", pth, false);
    retrieveEntityReq.setRequestHeader("Accept", "*/*");
    retrieveEntityReq.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
    retrieveEntityReq.send("id=%7B" + reportId + "%7D&uniquename=" + Xrm.Page.context.getOrgUniqueName() + "&iscustomreport=true&reportnameonsrs=&reportName=" + reportName + "&isScheduledReport=false");
    var x = retrieveEntityReq.responseText.indexOf("ReportSession=");
    var ret = new Array();
    ret[0] = retrieveEntityReq.responseText.substr(x + 14, retrieveEntityReq.responseText.indexOf("&", x) - x - 14); //the session id
    x = retrieveEntityReq.responseText.indexOf("ControlID=");
    ret[1] = retrieveEntityReq.responseText.substr(x + 10, retrieveEntityReq.responseText.indexOf("&", x) - x - 10); //the control id
    return ret;
    function createEntity(ent, entName, upd) {
    var jsonEntity = JSON.stringify(ent);
    var createEntityReq = new XMLHttpRequest();
    var ODataPath = Xrm.Page.context.getServerUrl() + "XRMServices/2011/OrganizationData.svc";
    createEntityReq.open("POST", ODataPath + "/" + entName + "Set" + upd, false);
    createEntityReq.setRequestHeader("Accept", "application/json");
    createEntityReq.setRequestHeader("Content-Type", "application/json; charset=utf-8");
    createEntityReq.send(jsonEntity);
    var newEntity = JSON.parse(createEntityReq.responseText).d;
    alert("new entity" + newEntity);
    return newEntity;
    function createAttachment() {
    var params = getReportingSession();
    var recordid = Xrm.Page.data.entity.getId();
    alert("recordid " + recordid);
    var orgName = Xrm.Page.context.getOrgUniqueName();
    var userID = Xrm.Page.context.getUserId();
    //create email record
    // Prepare the SOAP message.
    var xml = "<?xml version='1.0' encoding='utf-8'?>" +"<soap:Envelope xmlns:soap='http://schemas.xmlsoap.org/soap/envelope/'" +
    " xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'" +
    " xmlns:xsd='http://www.w3.org/2001/XMLSchema'>" +
    "<soap:Header>" +
    "</soap:Header>" +
    "<soap:Body>" +
    "<Create xmlns='http://schemas.microsoft.com/crm/2007/WebServices'>" +
    "<entity xsi:type='email'>" +
    "<regardingobjectid type='quote'>" + recordid + "</regardingobjectid>" +
    "<subject>" + "Email with Attachment4" + "</subject>" +
    "</entity>" +
    "</Create>" +
    "</soap:Body>" +
    "</soap:Envelope>";
    // Prepare the xmlHttpObject and send the request.
    var xHReq = new ActiveXObject("Msxml2.XMLHTTP");
    xHReq.Open("POST", "/mscrmservices/2007/CrmService.asmx", false);
    xHReq.setRequestHeader("SOAPAction", "http://schemas.microsoft.com/crm/2007/WebServices/Create");
    xHReq.setRequestHeader("Content-Type", "text/xml; charset=utf-8");
    xHReq.setRequestHeader("Content-Length", xml.length);
    xHReq.send(xml);
    // Capture the result
    var resultXml = xHReq.responseXML;
    // alert("resultXml " + resultXml);
    // Check for errors.
    var errorCount = resultXml.selectNodes('//error').length;
    if (errorCount != 0) {
    alert("ERROR");
    var msg = resultXml.selectSingleNode('//description').nodeTypedValue;
    alert(msg);
    var emailid = resultXml.selectSingleNode("//CreateResult").nodeTypedValue;
    alert("emailid" + emailid.toString());
    //var emailid = userID;
    var post = Object();
    post.Body = encodePdf(params);
    var email = new Array();
    email[0] =new Object();
    email[0].id = emailid;
    email[0].entityType ='email';
    post.Subject ="File Attachment";
    post.AttachmentNumber = 1;
    post.FileName ="Report.pdf";
    post.MimeType ="application/pdf";
    post.ObjectId = Object();
    post.ObjectId.LogicalName ="email";
    post.ObjectId.Id = email[0].id;
    post.ObjectTypeCode ="email";
    alert(post.ObjectId.Id);
    createEntity(post,"ActivityMimeAttachment", "");
    alert("created successfully");
    email.Subject = "Your Order";
    //Set The current order as the Regarding object
    email.RegardingObjectId = {
    Id: Xrm.Page.data.entity.getId(), //Get the current entity Id , here OrderId
    LogicalName: Xrm.Page.data.entity.getEntityName()//Get the current entity name, here it will be “salesOrder”
    //Create Email Activity
    SDK.JScriptRESTDataOperations.Create(email, "Email", EmailCallBack, function (error) { alert(error.message); });
    // Email Call Back function
    function EmailCallBack(result) {
    email = result; // Set the email to result to use it later in email attachment for retrieving activity Id
    var activityPartyFrom = new Object();
    // Set the From party of the ActivityParty to relate an entity with Email From field
    activityPartyFrom.PartyId = {
    Id: customerId, // id of entity you want to associate this activity with.
    LogicalName: "contact"
    // Set the "activity" of the ActivityParty
    activityPartyFrom.ActivityId = {
    Id: result.ActivityId,
    LogicalName: "email"
    // Now set the participation type that describes the role of the party on the activity).
    activityPartyFrom.ParticipationTypeMask = { Value: 2 }; // 2 means ToRecipients
    // Create the from ActivityParty for the email
    SDK.JScriptRESTDataOperations.Create(activityPartyFrom, "ActivityParty", ActivityPartyFromCallBack, function (error) { alert(error.message); });
    var activityPartyTo = new Object();
    // Set the From party of the ActivityParty to relate an entity with Email From field
    activityPartyTo.PartyId = {
    Id: ownerId, // id of entity you want to associate this activity with.
    LogicalName: "systemuser"
    // Set the "activity" of the ActivityParty
    activityPartyTo.ActivityId = {
    Id: result.ActivityId,
    LogicalName: "email"
    // Now set the participation type that describes the role of the party on the activity). activityPartyTo.ParticipationTypeMask = { Value: 1 }; // 1 means Sender
    // Create the from ActivityParty
    SDK.JScriptRESTDataOperations.Create(activityPartyTo, "ActivityParty", ActivityPartyToCallBack, function (error) { alert(error.message); });
    //ActivityParty From Callback
    function ActivityPartyFromCallBack(result) {
    //ActivityParty To Callback
    function ActivityPartyToCallBack(result) {
    var StringMaker = function () {
    this.parts = [];
    this.length = 0;
    this.append = function (s) {
    this.parts.push(s);
    this.length += s.length;
    this.prepend = function (s) {
    this.parts.unshift(s);
    this.length += s.length;
    this.toString = function () {
    return this.parts.join('');
    var keyStr = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";
    function encode64(input) {
    var output = new StringMaker();
    var chr1, chr2, chr3;
    var enc1, enc2, enc3, enc4;
    var i = 0;
    while (i < input.length) {
    chr1 = input[i++];
    chr2 = input[i++];
    chr3 = input[i++];
    enc1 = chr1 >> 2;
    enc2 = ((chr1 & 3) << 4) | (chr2 >> 4);
    enc3 = ((chr2 & 15) << 2) | (chr3 >> 6);
    enc4 = chr3 & 63;
    if (isNaN(chr2)) {
    enc3 = enc4 = 64;
    else if (isNaN(chr3)) {
    enc4 = 64;
    output.append(keyStr.charAt(enc1) + keyStr.charAt(enc2) + keyStr.charAt(enc3) + keyStr.charAt(enc4));
    return output.toString();
    var bdy = new Array();
    var bdyLen = 0;
    function concat2Bdy(x) {
    bdy[bdyLen] = x;
    bdyLen++;
    function encodePdf(params) {
    bdy = new Array();
    bdyLen = 0;
    var retrieveEntityReq = new XMLHttpRequest();
    var pth = Xrm.Page.context.getServerUrl() + "/Reserved.ReportViewerWebControl.axd?ReportSession=" + params[0] + "&Culture=1033&CultureOverrides=True&UICulture=1033&UICultureOverrides=True&ReportStack=1&ControlID=" + params[1] + "&OpType=Export&FileName=Public&ContentDisposition=OnlyHtmlInline&Format=PDF";
    retrieveEntityReq.open("GET", pth, false);
    retrieveEntityReq.setRequestHeader("Accept", "*/*");
    retrieveEntityReq.send();
    BinaryToArray(retrieveEntityReq.responseBody);
    return encode64(bdy);
    </SCRIPT>
    <SCRIPT type=text/vbscript>
    Function BinaryToArray(Binary)
    Dim i
    ReDim byteArray(LenB(Binary))
    For i = 1 To LenB(Binary)
    byteArray(i-1) = AscB(MidB(Binary, i, 1))
    concat2Bdy(AscB(MidB(Binary, i, 1)))
    Next
    BinaryToArray = byteArray
    End Function
    </SCRIPT>
    </head>
    <body>
    <input type="button" onclick="createAttachment();" value="Attach Report" />
    </body>
    </html>
    Thanks. and waiting for your valuable comments.
    - Mittal

    Hello,
    Yes, I was able to make my code working as below. Tested on CRM online 2013.
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <title></title>
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.4.1/jquery.min.js"></script>
    <script type="text/javascript">
    if (typeof (SDK) == "undefined")
    { SDK = { __namespace: true }; }
    SDK.JScriptRESTDataOperations = {
    _context: function () {
    if (typeof GetGlobalContext != "undefined")
    { return GetGlobalContext(); }
    else {
    if (typeof Xrm != "undefined") {
    return Xrm.Page.context;
    else { return new Error("Context is not available."); }
    _getServerUrl: function () {
    var serverUrl = this._context().getServerUrl()
    if (serverUrl.match(/\/$/)) {
    serverUrl = serverUrl.substring(0, serverUrl.length - 1);
    return serverUrl;
    _ODataPath: function () {
    return this._getServerUrl() + "/XRMServices/2011/OrganizationData.svc/";
    _errorHandler: function (req) {
    return new Error("Error : " +
    req.status + ": " +
    req.statusText + ": " +
    JSON.parse(req.responseText).error.message.value);
    _dateReviver: function (key, value) {
    var a;
    if (typeof value === 'string') {
    a = /Date\(([-+]?\d+)\)/.exec(value);
    if (a) {
    return new Date(parseInt(value.replace("/Date(", "").replace(")/", ""), 10));
    return value;
    Create: function (object, type, successCallback, errorCallback) {
    var req = new XMLHttpRequest();
    req.open("POST", this._ODataPath() + type + "Set", true);
    req.setRequestHeader("Accept", "application/json");
    req.setRequestHeader("Content-Type", "application/json; charset=utf-8");
    req.onreadystatechange = function () {
    if (this.readyState == 4 /* complete */) {
    if (this.status == 201) {
    successCallback(JSON.parse(this.responseText, SDK.JScriptRESTDataOperations._dateReviver).d);
    else {
    errorCallback(SDK.JScriptRESTDataOperations._errorHandler(this));
    req.send(JSON.stringify(object));
    Retrieve: function (id, type, successCallback, errorCallback) {
    var req = new XMLHttpRequest();
    req.open("GET", this._ODataPath() + type + "Set(guid'" + id + "')", true);
    req.setRequestHeader("Accept", "application/json");
    req.setRequestHeader("Content-Type", "application/json; charset=utf-8");
    req.onreadystatechange = function () {
    if (this.readyState == 4 /* complete */) {
    if (this.status == 200) {
    successCallback(JSON.parse(this.responseText, SDK.JScriptRESTDataOperations._dateReviver).d);
    else {
    errorCallback(SDK.JScriptRESTDataOperations._errorHandler(this));
    req.send();
    Update: function (id, object, type, successCallback, errorCallback) {
    var req = new XMLHttpRequest();
    req.open("POST", this._ODataPath() + type + "Set(guid'" + id + "')", true);
    req.setRequestHeader("Accept", "application/json");
    req.setRequestHeader("Content-Type", "application/json; charset=utf-8");
    req.setRequestHeader("X-HTTP-Method", "MERGE");
    req.onreadystatechange = function () {
    if (this.readyState == 4 /* complete */) {
    if (this.status == 204 || this.status == 1223) {
    successCallback();
    else {
    errorCallback(SDK.JScriptRESTDataOperations._errorHandler(this));
    req.send(JSON.stringify(object));
    Delete: function (id, type, successCallback, errorCallback) {
    var req = new XMLHttpRequest();
    req.open("POST", this._ODataPath() + type + "Set(guid'" + id + "')", true);
    req.setRequestHeader("Accept", "application/json");
    req.setRequestHeader("Content-Type", "application/json; charset=utf-8");
    req.setRequestHeader("X-HTTP-Method", "DELETE");
    req.onreadystatechange = function () {
    if (this.readyState == 4 /* complete */) {
    if (this.status == 204 || this.status == 1223) {
    successCallback();
    else {
    errorCallback(SDK.JScriptRESTDataOperations._errorHandler(this));
    req.send();
    RetrieveMultiple: function (type, filter, successCallback, errorCallback) {
    if (filter != null) {
    filter = "?" + filter;
    else { filter = ""; }
    var req = new XMLHttpRequest();
    req.open("GET", this._ODataPath() + type + "Set" + filter, true);
    req.setRequestHeader("Accept", "application/json");
    req.setRequestHeader("Content-Type", "application/json; charset=utf-8");
    req.onreadystatechange = function () {
    if (this.readyState == 4 /* complete */) {
    if (this.status == 200) {
    successCallback(JSON.parse(this.responseText, SDK.JScriptRESTDataOperations._dateReviver).d.results);
    else {
    errorCallback(SDK.JScriptRESTDataOperations._errorHandler(this));
    req.send();
    __namespace: true
    </script>
    <script type="text/javascript">
    //Create Email and link it with Order as Regarding field
    var Xrm;
    var email = new Object();
    var ownerID = "";
    var CustomerId = "";
    if (window.opener) { Xrm = window.opener.Xrm; }
    else if (window.parent) { Xrm = window.parent.Xrm; }
    //Get ownerid who send email of quotation to customer
    function GetOwnerID() {
    var owner = Xrm.Page.getAttribute("ownerid").getValue();
    ownerID = owner[0].id;
    var ownerName = owner[0].name;
    var entityType = owner[0].entityType;
    GetToEmailGUID();
    //Get customerid who receive email of quotation from owner
    function GetToEmailGUID() {
    var Customer = Xrm.Page.getAttribute('customerid').getValue();
    CustomerId = Customer[0].id;
    var CustomerName = Customer[0].name;
    var entityType = Customer[0].entityType;
    //if CustomerId is type of "Account" then get Primary Contact id of that account
    if (entityType == "account") {
    var contact = Xrm.Page.getAttribute("customerid").getValue();
    if (contact === null) return;
    var serverUrl = Xrm.Page.context.getClientUrl();
    var oDataSelect = serverUrl + "/XRMServices/2011/OrganizationData.svc/AccountSet(guid'" + contact[0].id + "')?$select=PrimaryContactId";
    var req = new XMLHttpRequest();
    req.open("GET", oDataSelect, false);
    req.setRequestHeader("Accept", "application/json");
    req.setRequestHeader("Content-Type", "application/json;charset=utf-8");
    req.onreadystatechange = function () {
    if (req.readyState === 4) {
    if (req.status === 200) {
    var retrieved = JSON.parse(req.responseText).d;
    CustomerId = retrieved.PrimaryContactId.Id;
    else {
    alert(this.statusText);
    req.send();
    function CreateEmail() {
    GetOwnerID();
    email.Subject = "Email with Report Attachment";
    //Set The current order as the Regarding object
    email.RegardingObjectId = {
    Id: Xrm.Page.data.entity.getId(), //Get the current entity Id , here OrderId
    LogicalName: Xrm.Page.data.entity.getEntityName()//Get the current entity name, here it will be “salesOrder”
    //Create Email Activity
    SDK.JScriptRESTDataOperations.Create(email, "Email", EmailCallBack, function (error) { alert(error.message); });
    // Email Call Back function
    function EmailCallBack(result) {
    email = result; // Set the email to result to use it later in email attachment for retrieving activity Id
    var activityPartyFrom = new Object();
    // Set the From party of the ActivityParty to relate an entity with Email From field
    activityPartyFrom.PartyId = {
    Id: CustomerId, //"79EBDD26-FDBE-E311-8986-D89D6765B238", // id of entity you want to associate this activity with.
    LogicalName: "contact"
    // Set the "activity" of the ActivityParty
    activityPartyFrom.ActivityId = {
    Id: result.ActivityId,
    LogicalName: "email"
    // Now set the participation type that describes the role of the party on the activity).
    activityPartyFrom.ParticipationTypeMask = { Value: 2 }; // 2 means ToRecipients
    // Create the from ActivityParty for the email
    SDK.JScriptRESTDataOperations.Create(activityPartyFrom, "ActivityParty", ActivityPartyFromCallBack, function (error) { alert(error.message); });
    var activityPartyTo = new Object();
    // Set the From party of the ActivityParty to relate an entity with Email From field
    activityPartyTo.PartyId = {
    Id: ownerID, //"79EBDD26-FDBE-E311-8986-D89D6765B238", // id of entity you want to associate this activity with.
    LogicalName: "systemuser"
    // Set the "activity" of the ActivityParty
    activityPartyTo.ActivityId = {
    Id: result.ActivityId,
    LogicalName: "email"
    // Now set the participation type that describes the role of the party on the activity).
    activityPartyTo.ParticipationTypeMask = { Value: 1 }; // 1 means Sender
    // Create the from ActivityParty
    SDK.JScriptRESTDataOperations.Create(activityPartyTo, "ActivityParty", ActivityPartyToCallBack, function (error) { alert(error.message); });
    //ActivityParty From Callback
    function ActivityPartyFromCallBack(result) {
    //ActivityParty To Callback
    function ActivityPartyToCallBack(result) {
    GetReportId('Quotation');
    //Create attachment for the created email
    function CreateEmailAttachment() {
    //get reporting session and use the params to convert a report in PDF
    var params = getReportingSession();
    //Email attachment parameters
    var activitymimeattachment = Object();
    activitymimeattachment.ObjectId = Object();
    activitymimeattachment.ObjectId.LogicalName = "email";
    activitymimeattachment.ObjectId.Id = email.ActivityId;
    activitymimeattachment.ObjectTypeCode = "email",
    activitymimeattachment.Subject = "File Attachment";
    activitymimeattachment.Body = encodePdf(params);
    activitymimeattachment.FileName = "Report.pdf";
    activitymimeattachment.MimeType = "application/pdf";
    //Attachment call
    SDK.JScriptRESTDataOperations.Create(activitymimeattachment, "ActivityMimeAttachment", ActivityMimeAttachmentCallBack, function (error) { alert(error.message); });
    //ActivityMimeAttachment CallBack function
    function ActivityMimeAttachmentCallBack(result) {
    var features = "location=no,menubar=no,status=no,toolbar=no,resizable=yes";
    var width = "800px";
    var height = "600px";
    window.open(Xrm.Page.context.getServerUrl() + "main.aspx?etc=" + 4202 + "&pagetype=entityrecord&id=" + email.ActivityId, "_blank", features);
    // To open window which works in outlook and IE both
    //openStdWin(Xrm.Page.context.getServerUrl() + "main.aspx?etc=" + 4202 + "&pagetype=entityrecord&id=" + email.ActivityId, "_blank", width, height, features);
    //This method will get the reportId based on a report name that will be used in getReportingSession() function
    function GetReportId(reportName) {
    var oDataSetName = "ReportSet";
    var columns = "ReportId";
    var filter = "Name eq '" + reportName + "'";
    retrieveMultiple(oDataSetName, columns, filter, onSuccess);
    function retrieveMultiple(odataSetName, select, filter, successCallback) {
    var serverUrl = Xrm.Page.context.getServerUrl();
    var ODATA_ENDPOINT = "/XRMServices/2011/OrganizationData.svc";
    var odataUri = serverUrl + ODATA_ENDPOINT + "/" + odataSetName + "?";
    if (select) {
    odataUri += "$select=" + select + "&";
    if (filter) {
    odataUri += "$filter=" + filter;
    $.ajax({
    type: "GET",
    contentType: "application/json; charset=utf-8",
    datatype: "json",
    url: odataUri,
    beforeSend: function (XMLHttpRequest) {
    XMLHttpRequest.setRequestHeader("Accept", "application/json");
    success: function (data) {
    if (successCallback) {
    if (data && data.d && data.d.results) {
    successCallback(data.d.results);
    else if (data && data.d) {
    successCallback(data.d);
    else {
    successCallback(data);
    error: function (XmlHttpRequest, errorThrown) {
    if (XmlHttpRequest && XmlHttpRequest.responseText) {
    alert("Error while retrieval ; Error – " + XmlHttpRequest.responseText);
    function onSuccess(data) {
    reportId = data[0].ReportId.replace('{', ").replace('}', ");
    CreateEmailAttachment(); // Create Email Attachment
    //Gets the report contents
    function getReportingSession() {
    var pth = Xrm.Page.context.getServerUrl() + "/CRMReports/rsviewer/reportviewer.aspx";
    var retrieveEntityReq = new XMLHttpRequest();
    var Id = Xrm.Page.data.entity.getId();
    var quotationGUID = Id.replace('{', ""); //set this to selected quotation GUID
    quotationGUID = quotationGUID.replace('}', "");
    var reportName = "Quotation"; //set this to the report you are trying to download
    var reportID = "7C39D18F-1DC6-E311-8986-D89D6765B238"; //set this to the guid of the report you are trying to download
    var rptPathString = ""; //set this to the CRMF_Filtered parameter
    var strParameterXML = "<fetch version='1.0' output-format='xml-platform' mapping='logical' distinct='false'><entity name='quote'><all-attributes /><filter type='and'><condition attribute='quoteid' operator='eq' uitype='quote' value='" + quotationGUID + "' /> </filter></entity></fetch>";
    retrieveEntityReq.open("POST", pth, false);
    retrieveEntityReq.setRequestHeader("Accept", "*/*");
    retrieveEntityReq.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
    rptPathString = "id=%7B" + reportID + "%7D&uniquename=" + Xrm.Page.context.getOrgUniqueName() + "&iscustomreport=true&reportnameonsrs=&reportName=" +
    reportName + "&isScheduledReport=false&p:CRMAF_Filteredquote=" + strParameterXML;
    //remove the part starting from &p:salesorderid if your report has no parameters
    retrieveEntityReq.send(rptPathString);
    var x = retrieveEntityReq.responseText.indexOf("ReportSession=");
    var ret = new Array();
    ret[0] = retrieveEntityReq.responseText.substr(x + 14, retrieveEntityReq.responseText.indexOf("&", x) - x - 14); //the session id
    x = retrieveEntityReq.responseText.indexOf("ControlID=");
    ret[1] = retrieveEntityReq.responseText.substr(x + 10, retrieveEntityReq.responseText.indexOf("&", x) - x - 10); //the control id
    return ret;
    var bdy = new Array();
    var bdyLen = 0;
    function concat2Bdy(x) {
    bdy[bdyLen] = x;
    bdyLen++;
    function encodePdf(params) {
    bdy = new Array();
    bdyLen = 0;
    var retrieveEntityReq = new XMLHttpRequest();
    var pth = Xrm.Page.context.getServerUrl() + "/Reserved.ReportViewerWebControl.axd?ReportSession=" + params[0] +
    "&Culture=1033&CultureOverrides=True&UICulture=1033&UICultureOverrides=True&ReportStack=1&ControlID=" + params[1] +
    "&OpType=Export&FileName=Public&ContentDisposition=OnlyHtmlInline&Format=PDF";
    retrieveEntityReq.open("GET", pth, false);
    retrieveEntityReq.setRequestHeader("Accept", "*/*");
    retrieveEntityReq.send();
    BinaryToArray(retrieveEntityReq.responseBody);
    return encode64(bdy);
    var StringMaker = function () {
    this.parts = [];
    this.length = 0;
    this.append = function (s) {
    this.parts.push(s);
    this.length += s.length;
    this.prepend = function (s) {
    this.parts.unshift(s);
    this.length += s.length;
    this.toString = function () {
    return this.parts.join('');
    var keyStr = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";
    function encode64(input) {
    var output = new StringMaker();
    var chr1, chr2, chr3;
    var enc1, enc2, enc3, enc4;
    var i = 0;
    while (i < input.length) {
    chr1 = input[i++];
    chr2 = input[i++];
    chr3 = input[i++];
    enc1 = chr1 >> 2;
    enc2 = ((chr1 & 3) << 4) | (chr2 >> 4);
    enc3 = ((chr2 & 15) << 2) | (chr3 >> 6);
    enc4 = chr3 & 63;
    if (isNaN(chr2)) {
    enc3 = enc4 = 64;
    } else if (isNaN(chr3)) {
    enc4 = 64;
    output.append(keyStr.charAt(enc1) + keyStr.charAt(enc2) + keyStr.charAt(enc3) + keyStr.charAt(enc4));
    return output.toString();
    </script>
    <script type="text/vbscript">
    Function BinaryToArray(Binary)
    Dim i
    ReDim byteArray(LenB(Binary))
    For i = 1 To LenB(Binary)
    byteArray(i-1) = AscB(MidB(Binary, i, 1))
    concat2Bdy(AscB(MidB(Binary, i, 1)))
    Next
    BinaryToArray = byteArray
    End Function
    </script>
    </head>
    <body>
    <input type="button" onclick="CreateEmail();" value="Attach Report" />
    </body>
    </html>
    Thank you,
    Mittal.

  • Serious Performance Problems in ABAP Reports

    Hi All,
    We are developing ABAP reports for SAP IS-U/CCS Modules and facing Performance issues.Whole scenario is given below.Please suggest some solution.
    1. Total No. Of Business Partners = 1500000
    2. Reports Selection Criteria are of two types:
         a) GSBER(Business Area) - Selection for atleast 200000 Business Partners
         b) Cokey(Division)     - Selection for around 1000 to 50000 Business Partners
    3. For implementing our reports logic we have to access several tables all of which are very large.They are :
         Table Name     No. of records (Appx)          
         DBERCHV               20000000
         DBERCHZ1              20000000
         DBERDLB               20000000
         DFKKKO                20000000
         DFKKOP                20000000
         EANLH                  4000000
         ERCH                  10000000
         ERCHC                 10000000
         ETTIFN                30000000
         EVER                   1500000
         FKKVKP                 1500000
         TECOKT                     500     
         TGSBT                       12
    4. Due to large no. of records we are facing problems at two levels:
         a) OpenSQL Statement is taking too much time for data selection
         b) Since large no. of records are selected Corresponding loops and data processing also takes much time
    5. We have tried almost all ABAP Performance optimization techniques such as using Index, SQL optimization techniques,Read Table Optimization, Loop Statement Optimization etc. but there is not much improvement.
    6. For example one of our Reports "R15" takes around 1500 seconds for 1000 Business Partners.
    Its Code is attached below:
    <b>a) ZISU_SCHL_LTR15_BAPI - Program which schedules actual R15 report in background</b>
    *& Report  ZISU_SCHL_LTR15_BAPI                                        *
    *& Developed By : Piyusha Kirwai                                       *
    *& Date         : 02/12/2005                                           *
    *& Purpose      : To Schedule the LT R 15 prog in background and store
    *& the File for Manual R-15 into server.
    REPORT  ZISU_SCHL_LTR15_BAPI  NO STANDARD PAGE HEADING.
    TABLES ZEVERFKKVKP.
    DATA:  DYFIELDS LIKE DYNPREAD OCCURS 0 WITH HEADER LINE.
    DATA: IT_TAB TYPE FILETABLE,
          GD_SUBRC TYPE I.
    DATA: LV_GSBER TYPE TGSBT-GSBER.
    RANGES R_COKEY FOR ZEVERFKKVKP-COKEY.
    DATA: BEGIN OF GT_TECOKT OCCURS 100,
            COKEY TYPE TECOKT-COKEY,
            LTEXT TYPE TECOKT-LTEXT,
          END   OF GT_TECOKT,
          BEGIN OF GT_TE422 OCCURS 100,
            TERMSCHL TYPE TE422-TERMSCHL,
            TERMTEXT TYPE TE422-TERMTEXT,
          END   OF GT_TE422.
    DATA: BEGIN OF GWA_MANUAL_DATA,
            COL_1(5)        TYPE C,
            COL_2(10)       TYPE C,
            COL_3(40)       TYPE C,
            COL_4(40)       TYPE C,
            COL_5(10)       TYPE C,
            COL_6(19)       TYPE C,
            COL_7(19)       TYPE C,
            COL_8(19)       TYPE C,
            COL_9(19)       TYPE C,
            COL_10(19)      TYPE C,
            COL_11(19)      TYPE C,
            COL_12(10)      TYPE C,
            COL_13(19)      TYPE C,
            COL_14(19)      TYPE C,
            COL_15(19)      TYPE C,
            COL_16(19)      TYPE C,
            COL_17(19)      TYPE C,
            COL_18(19)      TYPE C,
          END   OF GWA_MANUAL_DATA,
          GT_MANUAL_DATA LIKE GWA_MANUAL_DATA OCCURS 0,
          GT_INTERN_DATA TYPE ALSMEX_TABLINE OCCURS 0 WITH HEADER LINE.
    *&-----FOR UPLOADING FILE TO SERVER------------------------------------*
    DATA: LV_SERVER_FILE_PREFIX(60) TYPE C.
    DATA: LV_SERVER_DATAFILE_NAME(60) TYPE C.
    DATA: LV_SERVER_ERRFILE_NAME(60) TYPE C.
    DATA: ENDT LIKE SY-UZEIT,
          ENDD LIKE SY-DATUM,
          JOBCOUNT TYPE TBTCJOB-JOBCOUNT.
    SELECTION-SCREEN BEGIN OF BLOCK 001 WITH FRAME TITLE TEXT-001.
    SELECT-OPTIONS: SO_GSBER FOR ZEVERFKKVKP-GSBER OBLIGATORY,
                    SO_COKEY FOR ZEVERFKKVKP-COKEY OBLIGATORY,
                    SO_MRU   FOR ZEVERFKKVKP-ABLEINH.
    PARAMETERS:     P_BMNTH(7) TYPE C OBLIGATORY.
    SELECT-OPTIONS: SO_GPART FOR ZEVERFKKVKP-GPART.
    SELECTION-SCREEN END  OF BLOCK 001.
    SELECTION-SCREEN BEGIN OF BLOCK 002 WITH FRAME TITLE TEXT-003.
    PARAMETERS:  P_COMPUT RADIOBUTTON GROUP R15,
                 P_INCLUD RADIOBUTTON GROUP R15,
                 P_FILE  TYPE  RLGRAP-FILENAME MODIF ID ACT.
    SELECTION-SCREEN END   OF BLOCK 002.
    SELECTION-SCREEN BEGIN OF LINE.
    SELECTION-SCREEN COMMENT 2(83) TEXT-004.
    SELECTION-SCREEN END   OF LINE.
    *SELECTION-SCREEN BEGIN OF LINE.
    *  SELECTION-SCREEN COMMENT 8(40) TEXT-005.
    *SELECTION-SCREEN END   OF LINE.
    SELECTION-SCREEN BEGIN OF BLOCK 003 WITH FRAME TITLE TEXT-002.
    PARAMETERS   P_SCHL TYPE C AS CHECKBOX.
    PARAMETERS : P_IMMED RADIOBUTTON GROUP SCH ,
                 P_DT_TM  RADIOBUTTON GROUP SCH,
                 P_DATE TYPE SY-DATUM MODIF ID SHL,
                 P_TIME TYPE SY-UZEIT MODIF ID SHL.
    SELECTION-SCREEN END   OF BLOCK 003.
    AT SELECTION-SCREEN.
    AT SELECTION-SCREEN ON SO_GSBER.
      IF NOT SO_GSBER-LOW IS INITIAL.
        SELECT SINGLE GSBER FROM TGSBT INTO LV_GSBER
          WHERE GSBER = SO_GSBER-LOW.
        IF SY-SUBRC <> 0.
          MESSAGE E007(ZISU).
        ENDIF.
      ENDIF.
      IF NOT SO_GSBER-HIGH IS INITIAL .
        SELECT SINGLE GSBER FROM TGSBT INTO LV_GSBER
          WHERE GSBER = SO_GSBER-HIGH.
        IF SY-SUBRC <> 0.
          MESSAGE E007(ZISU).
        ENDIF.
      ENDIF.
    AT SELECTION-SCREEN ON P_BMNTH.
    **check the validity of Billing month format and for valid billing month
      IF P_BMNTH CO '0123456789/'.
        IF P_BMNTH CP '++++/++'.
          IF P_BMNTH+5(2) > 12.
            MESSAGE E002(ZISU) WITH 'from'.
          ENDIF.
    ** current year is less than year entered
          IF SY-DATUM(4) < P_BMNTH(4).
            MESSAGE E003(ZISU) WITH 'from'.
          ELSEIF SY-DATUM(4) = P_BMNTH(4).
    ** month in future
            IF SY-DATUM+4(2) < P_BMNTH+5(2).
              MESSAGE E004(ZISU) WITH 'from'.
            ENDIF.
          ENDIF.
        ELSE.
          MESSAGE E001(ZISU) WITH 'from'.
        ENDIF.
      ELSE.
    **  entry have some invalid char
        MESSAGE E010(ZISU).
      ENDIF.
    AT SELECTION-SCREEN ON VALUE-REQUEST FOR SO_COKEY-LOW.
    **for geting the CO account assigment key of the entered Business area
      CLEAR: DYFIELDS[], DYFIELDS.
      PERFORM DIVISON_DATA_GET CHANGING SO_COKEY-LOW.
    AT SELECTION-SCREEN ON VALUE-REQUEST FOR SO_COKEY-HIGH.
    **for geting the CO account assigment key of the entered Business area
      CLEAR: DYFIELDS[], DYFIELDS.
      PERFORM DIVISON_DATA_GET CHANGING SO_COKEY-HIGH.
    AT SELECTION-SCREEN ON VALUE-REQUEST FOR SO_MRU-LOW.
      CLEAR: DYFIELDS[], DYFIELDS.
      PERFORM MRU_DATA_GET CHANGING SO_MRU-LOW.
    AT SELECTION-SCREEN ON VALUE-REQUEST FOR SO_MRU-HIGH.
      CLEAR: DYFIELDS[], DYFIELDS.
      PERFORM MRU_DATA_GET CHANGING SO_MRU-HIGH.
    AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_FILE.
      REFRESH: IT_TAB.
    **Opens File Open Dialog Box for selecting input file.
      CALL METHOD CL_GUI_FRONTEND_SERVICES=>FILE_OPEN_DIALOG
        EXPORTING
          WINDOW_TITLE     = 'Select File'
          DEFAULT_FILENAME = '*.xls'
          MULTISELECTION   = ' '
        CHANGING
          FILE_TABLE       = IT_TAB
          RC               = GD_SUBRC.
      LOOP AT IT_TAB INTO P_FILE.
    *    so_fpath-sign = 'I'.
    *    so_fpath-option = 'EQ'.
    *    append so_fpath.
      ENDLOOP.
    AT SELECTION-SCREEN OUTPUT.
      LOOP AT SCREEN.
        IF SCREEN-GROUP1 = 'ACT'.
          IF P_INCLUD = ' '.
            SCREEN-INPUT = '0'.
          ELSE.
            SCREEN-INPUT = '1'.
          ENDIF.
        ENDIF.
        IF SCREEN-GROUP1 = 'SHL'.
          IF P_DT_TM = 'X'.
            SCREEN-INPUT = '1'.
          ELSE.
            SCREEN-INPUT = '0'.
          ENDIF.
        ENDIF.
        MODIFY SCREEN.
      ENDLOOP.
    INITIALIZATION.
      P_DATE = SY-DATUM.
      P_TIME = SY-UZEIT + 180.
    START-OF-SELECTION.
      IF P_INCLUD = 'X' AND P_FILE IS INITIAL.
        MESSAGE 'Enter the Manual R-15 File' TYPE 'E'.
      ENDIF.
    *  IF P_INCLUD = 'X'.
    *    PERFORM UPLOAD_EXCEL_FILE.
    *    CONCATENATE 'R15' SY-DATUM '-' SY-UZEIT INTO LV_SERVER_FILE_PREFIX.
    *    CONCATENATE LV_SERVER_FILE_PREFIX '-' 'LT.TMP' INTO
    *    LV_SERVER_DATAFILE_NAME.
    *    OPEN DATASET LV_SERVER_DATAFILE_NAME
    *      FOR OUTPUT
    *      IN TEXT MODE
    *      ENCODING DEFAULT.
    *    LOOP AT GT_MANUAL_DATA INTO GWA_MANUAL_DATA.
    *      IF ( GWA_MANUAL_DATA-COL_6 CN '0123456789 '
    *      AND GWA_MANUAL_DATA-COL_7 CN '0123456789 '
    *      AND GWA_MANUAL_DATA-COL_8 CN '0123456789 '
    *      AND GWA_MANUAL_DATA-COL_9 CN '0123456789 '
    *      AND GWA_MANUAL_DATA-COL_10 CN '0123456789 '
    *      AND GWA_MANUAL_DATA-COL_11 CN '0123456789 '
    *      AND GWA_MANUAL_DATA-COL_13 CN '0123456789 '
    *      AND GWA_MANUAL_DATA-COL_14 CN '0123456789 '
    *      AND GWA_MANUAL_DATA-COL_15 CN '0123456789 '
    *      AND GWA_MANUAL_DATA-COL_16 CN '0123456789 '
    *      AND GWA_MANUAL_DATA-COL_17 CN '0123456789 '
    *      AND GWA_MANUAL_DATA-COL_18 CN '0123456789 ' ).
    *        MESSAGE 'Character Data in Numerical Field' TYPE 'E'.
    *      ENDIF.
    *      TRANSFER GWA_MANUAL_DATA TO LV_SERVER_DATAFILE_NAME.
    *    ENDLOOP.
    *    CLOSE DATASET LV_SERVER_DATAFILE_NAME.
    *  ENDIF.  "  P_INCLUD = 'X'.
      IF P_SCHL = 'X'.
        IF P_IMMED = 'X'.
          CALL FUNCTION 'C14B_ADD_TIME'
            EXPORTING
              I_STARTTIME = SY-UZEIT
              I_STARTDATE = SY-DATUM
              I_ADDTIME   = '000010'
            IMPORTING
              E_ENDTIME   = ENDT
              E_ENDDATE   = ENDD.
        ELSEIF P_DT_TM = 'X'.
          ENDD = P_DATE.
          ENDT = P_TIME.
        ENDIF.
        CALL FUNCTION 'JOB_OPEN'
          EXPORTING
    *     DELANFREP              = ' '
    *     JOBGROUP               = ' '
            JOBNAME                = 'R15JOB'
    *      SDLSTRTDT              = ENDD
    *      SDLSTRTTM              = ENDT
    *     JOBCLASS               =
         IMPORTING
           JOBCOUNT               = JOBCOUNT
    *   CHANGING
    *     RET                    =
    *   EXCEPTIONS
    *     CANT_CREATE_JOB        = 1
    *     INVALID_JOB_DATA       = 2
    *     JOBNAME_MISSING        = 3
    *     OTHERS                 = 4
        IF SY-SUBRC <> 0.
    * MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
    *         WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
        ENDIF.
        IF P_INCLUD = 'X'.
          PERFORM UPLOAD_EXCEL_FILE.
         CONCATENATE 'R15' SY-DATUM '-' SY-UZEIT INTO LV_SERVER_FILE_PREFIX.
          CONCATENATE LV_SERVER_FILE_PREFIX '-' JOBCOUNT 'LT.TMP' INTO
          LV_SERVER_DATAFILE_NAME.
          CONDENSE LV_SERVER_DATAFILE_NAME.
          OPEN DATASET LV_SERVER_DATAFILE_NAME
            FOR OUTPUT
            IN TEXT MODE
            ENCODING DEFAULT.
          IF SY-SUBRC NE 0.
            MESSAGE 'Error in Creating File on Server' TYPE 'E'.
          ENDIF.
          LOOP AT GT_MANUAL_DATA INTO GWA_MANUAL_DATA.
            IF ( GWA_MANUAL_DATA-COL_6 CN '0123456789 '
            AND GWA_MANUAL_DATA-COL_7 CN '0123456789 '
            AND GWA_MANUAL_DATA-COL_8 CN '0123456789 '
            AND GWA_MANUAL_DATA-COL_9 CN '0123456789 '
            AND GWA_MANUAL_DATA-COL_10 CN '0123456789 '
            AND GWA_MANUAL_DATA-COL_11 CN '0123456789 '
            AND GWA_MANUAL_DATA-COL_13 CN '0123456789 '
            AND GWA_MANUAL_DATA-COL_14 CN '0123456789 '
            AND GWA_MANUAL_DATA-COL_15 CN '0123456789 '
            AND GWA_MANUAL_DATA-COL_16 CN '0123456789 '
            AND GWA_MANUAL_DATA-COL_17 CN '0123456789 '
            AND GWA_MANUAL_DATA-COL_18 CN '0123456789 ' ).
              MESSAGE 'Character Data in Numerical Field' TYPE 'E'.
            ENDIF.
            TRANSFER GWA_MANUAL_DATA TO LV_SERVER_DATAFILE_NAME.
          ENDLOOP.
          CLOSE DATASET LV_SERVER_DATAFILE_NAME.
          IF SY-SUBRC NE 0.
            MESSAGE 'Error in Creating File on Server' TYPE 'E'.
          ENDIF.
        ENDIF.  "  P_INCLUD = 'X'.
        SUBMIT ZISU_LTR15_TUNE
          WITH SO_GSBER IN SO_GSBER
          WITH SO_COKEY IN SO_COKEY
          WITH SO_MRU   IN SO_MRU
          WITH SO_GPART IN SO_GPART
          WITH P_BMNTH  =  P_BMNTH
          WITH P_COMPUT = P_COMPUT
          WITH P_INCLUD = P_INCLUD
          WITH P_FILE   = LV_SERVER_DATAFILE_NAME
          USER SY-UNAME VIA JOB 'R15JOB' NUMBER JOBCOUNT AND RETURN.
        CALL FUNCTION 'JOB_CLOSE'
          EXPORTING
    *   AT_OPMODE                         = ' '
    *   AT_OPMODE_PERIODIC                = ' '
    *   CALENDAR_ID                       = ' '
    *   EVENT_ID                          = ' '
    *   EVENT_PARAM                       = ' '
    *   EVENT_PERIODIC                    = ' '
            JOBCOUNT                          = JOBCOUNT
            JOBNAME                           = 'R15JOB'
    *   LASTSTRTDT                        = NO_DATE
    *   LASTSTRTTM                        = NO_TIME
    *   PRDDAYS                           = 0
    *   PRDHOURS                          = 0
    *   PRDMINS                           = 0
    *   PRDMONTHS                         = 0
    *   PRDWEEKS                          = 0
    *   PREDJOB_CHECKSTAT                 = ' '
    *   PRED_JOBCOUNT                     = ' '
    *   PRED_JOBNAME                      = ' '
            SDLSTRTDT                         = ENDD
            SDLSTRTTM                         = ENDT
    *   STARTDATE_RESTRICTION             = BTC_PROCESS_ALWAYS
            STRTIMMED                         = P_IMMED
    *   TARGETSYSTEM                      = ' '
    *   START_ON_WORKDAY_NOT_BEFORE       = SY-DATUM
    *   START_ON_WORKDAY_NR               = 0
    *   WORKDAY_COUNT_DIRECTION           = 0
    *   RECIPIENT_OBJ                     =
    *   TARGETSERVER                      = ' '
    *   DONT_RELEASE                      = ' '
    *   TARGETGROUP                       = ' '
    *   DIRECT_START                      =
    * IMPORTING
    *   JOB_WAS_RELEASED                  =
    * CHANGING
    *   RET                               =
    * EXCEPTIONS
    *   CANT_START_IMMEDIATE              = 1
    *   INVALID_STARTDATE                 = 2
    *   JOBNAME_MISSING                   = 3
    *   JOB_CLOSE_FAILED                  = 4
    *   JOB_NOSTEPS                       = 5
    *   JOB_NOTEX                         = 6
    *   LOCK_FAILED                       = 7
    *   INVALID_TARGET                    = 8
    *   OTHERS                            = 9
        IF SY-SUBRC <> 0.
    * MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
    *         WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
        ENDIF.
      ELSE.  " IF NOT TO RUN IN BACKGROUND
        IF P_INCLUD = 'X'.
          PERFORM UPLOAD_EXCEL_FILE.
         CONCATENATE 'R15' SY-DATUM '-' SY-UZEIT INTO LV_SERVER_FILE_PREFIX.
          CONCATENATE LV_SERVER_FILE_PREFIX '-' 'LT.TMP' INTO
          LV_SERVER_DATAFILE_NAME.
          CONDENSE LV_SERVER_DATAFILE_NAME.
          OPEN DATASET LV_SERVER_DATAFILE_NAME
            FOR OUTPUT
            IN TEXT MODE
            ENCODING DEFAULT.
          IF SY-SUBRC NE 0.
            MESSAGE 'Error in Creating File on Server' TYPE 'E'.
          ENDIF.
          LOOP AT GT_MANUAL_DATA INTO GWA_MANUAL_DATA.
            IF ( GWA_MANUAL_DATA-COL_6 CN '0123456789 '
            AND GWA_MANUAL_DATA-COL_7 CN '0123456789 '
            AND GWA_MANUAL_DATA-COL_8 CN '0123456789 '
            AND GWA_MANUAL_DATA-COL_9 CN '0123456789 '
            AND GWA_MANUAL_DATA-COL_10 CN '0123456789 '
            AND GWA_MANUAL_DATA-COL_11 CN '0123456789 '
            AND GWA_MANUAL_DATA-COL_13 CN '0123456789 '
            AND GWA_MANUAL_DATA-COL_14 CN '0123456789 '
            AND GWA_MANUAL_DATA-COL_15 CN '0123456789 '
            AND GWA_MANUAL_DATA-COL_16 CN '0123456789 '
            AND GWA_MANUAL_DATA-COL_17 CN '0123456789 '
            AND GWA_MANUAL_DATA-COL_18 CN '0123456789 ' ).
              MESSAGE 'Character Data in Numerical Field' TYPE 'E'.
            ENDIF.
            TRANSFER GWA_MANUAL_DATA TO LV_SERVER_DATAFILE_NAME.
          ENDLOOP.
          CLOSE DATASET LV_SERVER_DATAFILE_NAME.
          IF SY-SUBRC NE 0.
            MESSAGE 'Error in Creating File on Server' TYPE 'E'.
          ENDIF.
        ENDIF.  "  P_INCLUD = 'X'.
        IF NOT SY-BATCH IS INITIAL.
          SUBMIT ZISU_LTR15_TUNE
            WITH SO_GSBER IN SO_GSBER
            WITH SO_COKEY IN SO_COKEY
            WITH SO_MRU   IN SO_MRU
            WITH SO_GPART IN SO_GPART
            WITH P_BMNTH  =  P_BMNTH
            WITH P_COMPUT = P_COMPUT
            WITH P_INCLUD = P_INCLUD
            WITH P_FILE   = LV_SERVER_DATAFILE_NAME
            TO SAP-SPOOL WITHOUT SPOOL DYNPRO.
        ELSE.
          SUBMIT ZISU_LTR15_TUNE
            WITH SO_GSBER IN SO_GSBER
            WITH SO_COKEY IN SO_COKEY
            WITH SO_MRU   IN SO_MRU
            WITH SO_GPART IN SO_GPART
            WITH P_BMNTH  =  P_BMNTH
            WITH P_COMPUT = P_COMPUT
            WITH P_INCLUD = P_INCLUD
            WITH P_FILE   = LV_SERVER_DATAFILE_NAME.
        ENDIF.
      ENDIF.
    *&      Form  divison_data_get
    *       text
    *      <--P_SO_COKEY_LOW  text
    FORM DIVISON_DATA_GET  CHANGING P_SO_COKEY_LOW.
    **to get the search help for division
      DATA : LV_LINES TYPE SY-TFILL,
            LT_RETURN_TAB LIKE DDSHRETVAL OCCURS 0, " with header line.
            LWA_RETURN_TAB LIKE DDSHRETVAL.
      DATA: LV_COKEY TYPE ZEVERFKKVKP-COKEY.
    **according to the Business area entered]
    *  break csebdev1.
      REFRESH R_COKEY[].
      DESCRIBE TABLE SO_GSBER LINES LV_LINES.
    **  when user has neither pressed the enter key nor selected the values
    **using search help
      IF LV_LINES = 0.
    *  loop at so_gsber.
        CLEAR R_COKEY.
    *    if so_gsber-high is initial.
    *    break csebdev1.
        DYFIELDS-FIELDNAME = 'SO_GSBER-LOW'.
        APPEND DYFIELDS.
        CALL FUNCTION 'DYNP_VALUES_READ'
          EXPORTING
            DYNAME     = SY-CPROG
            DYNUMB     = SY-DYNNR
          TABLES
            DYNPFIELDS = DYFIELDS.
    *      r_cokey-sign = 'I'.
    *      r_cokey-option = 'CP'.
    *r_cokey-low = so_gsber-low+0(2).
        CONCATENATE DYFIELDS-FIELDVALUE+0(2) '*' INTO R_COKEY-LOW.
    *    elseif not so_gsber-high is initial.
        DYFIELDS-FIELDNAME = 'SO_GSBER-HIGH'.
        APPEND DYFIELDS.
        CALL FUNCTION 'DYNP_VALUES_READ'
          EXPORTING
            DYNAME     = SY-CPROG
            DYNUMB     = SY-DYNNR
          TABLES
            DYNPFIELDS = DYFIELDS.
        IF NOT DYFIELDS-FIELDVALUE IS INITIAL.
          CONCATENATE DYFIELDS-FIELDVALUE+0(2) '99999999' INTO R_COKEY-HIGH.
        ENDIF.
    *    endif.
        IF NOT R_COKEY-HIGH IS INITIAL.
          R_COKEY-SIGN = 'I'.
          R_COKEY-OPTION = 'BT'.
        ELSEIF R_COKEY-HIGH IS INITIAL.
          R_COKEY-SIGN = 'I'.
          R_COKEY-OPTION = 'CP'.
        ENDIF.
        APPEND R_COKEY.
      ENDIF.
    *  endloop.
    *  APPEND DYFIELDS.
      IF LV_LINES > 0.
    *    break-point.
        IF NOT SO_GSBER[] IS INITIAL.
          LOOP AT SO_GSBER.
    *        r_cokey-sign = 'I'.
    *        r_cokey-option = 'CP'.
    *r_cokey-low = so_gsber-low+0(2).
            CONCATENATE SO_GSBER-LOW+0(2) '*' INTO R_COKEY-LOW.
            IF NOT SO_GSBER-HIGH IS INITIAL.
              CONCATENATE SO_GSBER-HIGH+0(2) '99999999' INTO R_COKEY-HIGH.
            ENDIF.
            IF NOT R_COKEY-HIGH IS INITIAL.
              R_COKEY-SIGN = 'I'.
              R_COKEY-OPTION = 'BT'.
            ELSEIF R_COKEY-HIGH IS INITIAL.
              R_COKEY-SIGN = 'I'.
              R_COKEY-OPTION = 'CP'.
            ENDIF.
            APPEND R_COKEY TO R_COKEY.
          ENDLOOP.
        ENDIF.
      ENDIF.
      IF NOT R_COKEY[] IS INITIAL.
    * break csebdev1.
        REFRESH GT_TECOKT[].
        SELECT COKEY LTEXT
        FROM TECOKT
        INTO TABLE GT_TECOKT
        WHERE COKEY IN R_COKEY AND SPRAS = 'EN'.
    *    %_HINTS ORACLE '("TECOKT","TECOKT~1")'.
      ENDIF.
    **now call the search help
      CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
        EXPORTING
    *   DDIC_STRUCTURE         = ' '
          RETFIELD               = 'COKEY'
    *   PVALKEY                = ' '
    *   DYNPPROG               = ' '
    *   DYNPNR                 = ' '
    *   DYNPROFIELD            = ' '
    *   STEPL                  = 0
         WINDOW_TITLE           = 'Division'
         VALUE                  = DYFIELDS-FIELDVALUE
         VALUE_ORG              = 'S'
    *   MULTIPLE_CHOICE        = ' '
    *   DISPLAY                = ' '
    *   CALLBACK_PROGRAM       = ' '
    *   CALLBACK_FORM          = ' '
    *   MARK_TAB               =
    * IMPORTING
    *   USER_RESET             =
        TABLES
          VALUE_TAB              = GT_TECOKT
    *   FIELD_TAB              =
         RETURN_TAB             = LT_RETURN_TAB
    *   DYNPFLD_MAPPING        =
    * EXCEPTIONS
    *   PARAMETER_ERROR        = 1
    *   NO_VALUES_FOUND        = 2
    *   OTHERS                 = 3
      IF SY-SUBRC <> 0.
    * MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
    *         WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
      ENDIF.
      READ TABLE LT_RETURN_TAB INTO LWA_RETURN_TAB INDEX 1.
      LV_COKEY = LWA_RETURN_TAB-FIELDVAL.
    *break csebdev1.
    ENDFORM.                    " divison_data_get
    *&      Form  upload_excel_file
    *       text
    *  -->  p1        text
    *  <--  p2        text
    FORM UPLOAD_EXCEL_FILE .
      DATA: LV_INDEX TYPE I.
      FIELD-SYMBOLS <VAL> TYPE ANY.
      CALL FUNCTION 'ALSM_EXCEL_TO_INTERNAL_TABLE'
        EXPORTING
          FILENAME                = P_FILE
          I_BEGIN_COL             = 1
          I_BEGIN_ROW             = 8
          I_END_COL               = 18
          I_END_ROW               = 94
        TABLES
          INTERN                  = GT_INTERN_DATA
        EXCEPTIONS
          INCONSISTENT_PARAMETERS = 1
          UPLOAD_OLE              = 2
          OTHERS                  = 3.
      IF SY-SUBRC <> 0.
        MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
              WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
      ENDIF.
      IF NOT GT_INTERN_DATA[] IS INITIAL.
        SORT GT_INTERN_DATA BY ROW COL.
        LOOP AT GT_INTERN_DATA.
          MOVE GT_INTERN_DATA-COL TO LV_INDEX.
          ASSIGN COMPONENT LV_INDEX OF STRUCTURE GWA_MANUAL_DATA TO <VAL>.
          MOVE GT_INTERN_DATA-VALUE TO <VAL>.
          AT END OF ROW.
            APPEND GWA_MANUAL_DATA TO GT_MANUAL_DATA.
            CLEAR GWA_MANUAL_DATA.
          ENDAT.
        ENDLOOP.
      ENDIF.
    ENDFORM.                    " upload_excel_file
    *&      Form  MRU_DATA_GET
    *       text
    *      <--P_SO_MRU_LOW  text
    FORM MRU_DATA_GET  CHANGING LV_MRU.
    **to get the search help for Group
      DATA : LV_LINES TYPE SY-TFILL,
            LT_RETURN_TAB LIKE DDSHRETVAL OCCURS 0,
            LWA_RETURN_TAB LIKE DDSHRETVAL.
    *        lv_mru_p(3) type c.
      RANGES  R_MRU FOR EANLH-ABLEINH.
    **according to the Business area entered
    **  break csebdev1.
      REFRESH R_MRU[].
      DESCRIBE TABLE SO_GSBER LINES LV_LINES.
    **  when user has neither pressed the enter key nor selected the values
    **using search help
      IF LV_LINES = 0.
        CLEAR R_MRU[].
        DYFIELDS-FIELDNAME = 'SO_GSBER-LOW'.
        APPEND DYFIELDS.
        CALL FUNCTION 'DYNP_VALUES_READ'
          EXPORTING
            DYNAME     = SY-CPROG
            DYNUMB     = SY-DYNNR
          TABLES
            DYNPFIELDS = DYFIELDS.
        CONCATENATE DYFIELDS-FIELDVALUE+0(2) '*' INTO R_MRU-LOW.
        DYFIELDS-FIELDNAME = 'SO_GSBER-HIGH'.
        APPEND DYFIELDS.
        CALL FUNCTION 'DYNP_VALUES_READ'
          EXPORTING
            DYNAME     = SY-CPROG
            DYNUMB     = SY-DYNNR
          TABLES
            DYNPFIELDS = DYFIELDS.
        IF NOT DYFIELDS-FIELDVALUE IS INITIAL.
          CONCATENATE DYFIELDS-FIELDVALUE+0(2) '99999999' INTO R_MRU-HIGH.
        ENDIF.
        IF NOT R_MRU-HIGH IS INITIAL.
          R_MRU-SIGN   = 'I'.
          R_MRU-OPTION = 'BT'.
        ELSEIF R_MRU-HIGH IS INITIAL.
          R_MRU-SIGN   = 'I'.
          R_MRU-OPTION = 'CP'.
        ENDIF.
        APPEND R_MRU.
      ENDIF. " end lv_lines =0
      IF LV_LINES > 0.
        IF NOT SO_GSBER[] IS INITIAL.
          LOOP AT SO_GSBER.
            CONCATENATE SO_GSBER-LOW+0(2) '*' INTO R_MRU-LOW.
            IF NOT SO_GSBER-HIGH IS INITIAL.
              CONCATENATE SO_GSBER-HIGH+0(2) '99999999' INTO R_MRU-HIGH.
            ENDIF.
            IF R_MRU-HIGH IS INITIAL.
              R_MRU-SIGN   = 'I'.
              R_MRU-OPTION = 'CP'.
            ELSEIF NOT R_MRU-HIGH IS INITIAL.
              R_MRU-SIGN   = 'I'.
              R_MRU-OPTION = 'BT'.
            ENDIF.
            APPEND R_MRU.
          ENDLOOP.
        ENDIF. " end so_GSBER[]
      ENDIF. " end lv_lines > 0
      IF NOT R_MRU[] IS INITIAL.
    * break csebdev1.
        REFRESH GT_TE422[].
        SELECT TERMSCHL TERMTEXT FROM TE422 INTO CORRESPONDING FIELDS OF
    TABLE GT_TE422 WHERE TERMSCHL IN R_MRU .
      ENDIF.
    **now call the search help
      CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
        EXPORTING
    *   DDIC_STRUCTURE         = ' '
          RETFIELD               = 'TERMSCHL'
    *   PVALKEY                = ' '
    *   DYNPPROG               = ' '
    *   DYNPNR                 = ' '
    *   DYNPROFIELD            = ' '
    *   STEPL                  = 0
         WINDOW_TITLE           = 'Group'
         VALUE                  = DYFIELDS-FIELDVALUE
         VALUE_ORG              = 'S'
    *   MULTIPLE_CHOICE        = ' '
    *   DISPLAY                = ' '
    *   CALLBACK_PROGRAM       = ' '
    *   CALLBACK_FORM          = ' '
    *   MARK_TAB               =
    * IMPORTING
    *   USER_RESET             =
        TABLES
          VALUE_TAB              = GT_TE422
    *   FIELD_TAB              =
         RETURN_TAB             = LT_RETURN_TAB
    *   DYNPFLD_MAPPING        =
    * EXCEPTIONS
    *   PARAMETER_ERROR        = 1
    *   NO_VALUES_FOUND        = 2
    *   OTHERS                 = 3
      IF SY-SUBRC <> 0.
    * MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
    *         WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
      ENDIF.
      READ TABLE LT_RETURN_TAB INTO LWA_RETURN_TAB INDEX 1.
      LV_MRU = LWA_RETURN_TAB-FIELDVAL.
    ENDFORM.                    " MRU_DATA_GET
    <b>b) ZISU_LTR15_TUNE - Actual R15 report</b>
    *& Report  ZISU_LTR15_TUNE                                             *
    REPORT  ZISU_LTR15_TUNE NO STANDARD PAGE HEADING  MESSAGE-ID ZISU
    LINE-SIZE 250 LINE-COUNT 65.
    **Tables
    TABLES :  EVER,
              FKKVKP,
              EANLH.
    SELECTION-SCREEN BEGIN OF BLOCK SELECTION
                              WITH FRAME TITLE TEXT-001 . "no intervals.
    SELECT-OPTIONS: SO_GSBER FOR EVER-GSBER OBLIGATORY,
                    SO_COKEY FOR EVER-COKEY,
                    SO_MRU   FOR EANLH-ABLEINH.
    PARAMETERS:     P_BMNTH(7) TYPE C OBLIGATORY.
    PARAMETERS:     P_CONT TYPE EVER-VERTRAG.
    SELECT-OPTIONS: SO_GPART FOR FKKVKP-GPART.
    SELECTION-SCREEN END OF BLOCK SELECTION.
    SELECTION-SCREEN BEGIN OF BLOCK PROCESS WITH FRAME.
    PARAMETERS:     P_COMPUT RADIOBUTTON GROUP R15.
    PARAMETERS:     P_INCLUD RADIOBUTTON GROUP R15,
                    P_FILE(60) TYPE C.
    SELECTION-SCREEN END OF BLOCK PROCESS.
    *              Start of Type declaration
    TYPES: BEGIN OF ST_TB024 ,
            IND_SECTOR TYPE TB024-IND_SECTOR,
            TEXTLONG TYPE TB024-TEXTLONG,
          END   OF ST_TB024,
          BEGIN OF ST_TECOKT,
            COKEY TYPE TECOKT-COKEY,
            LTEXT TYPE TECOKT-LTEXT,
          END   OF ST_TECOKT,
          BEGIN OF ST_TGSBT,
            GSBER   TYPE TGSBT-GSBER,
            GTEXT   TYPE TGSBT-GTEXT,
          END   OF ST_TGSBT,
          BEGIN OF ST_TE422,
            TERMSCHL  TYPE TE422-TERMSCHL,
            TERMTEXT  TYPE TE422-TERMTEXT,
          END   OF ST_TE422.
    *              Start of data declaration
    DATA: IT_TAB TYPE FILETABLE,
          GD_SUBRC TYPE I.
    DATA : GT_TB024 TYPE STANDARD TABLE OF ST_TB024 WITH HEADER LINE
             INITIAL SIZE 0,
           GT_TECOKT TYPE STANDARD TABLE OF ST_TECOKT
             WITH HEADER LINE,
          GT_TGSBT TYPE SORTED TABLE OF ST_TGSBT
          WITH UNIQUE KEY GSBER WITH HEADER LINE,
          GT_TE422 TYPE TABLE OF ST_TE422 WITH HEADER LINE INITIAL SIZE 0,
          BEGIN OF GWA_EVER,
            VKONT    TYPE EVER-VKONTO,
            ANLAGE   TYPE EVER-ANLAGE,
            ABRSPERR TYPE EVER-ABRSPERR,
          END   OF GWA_EVER,
          GT_EVER LIKE TABLE OF GWA_EVER INITIAL SIZE 0,
          BEGIN OF GWA_EANLH,
          ANLAGE     TYPE EANLH-ANLAGE,
          BRANCHE    TYPE EANLH-BRANCHE,
          END   OF GWA_EANLH,
          GT_EANLH LIKE TABLE OF GWA_EANLH INITIAL SIZE 0,
          BEGIN OF GWA_FKKVKP,
            VKONT   TYPE FKKVKP-VKONT,
            KTOKL   TYPE FKKVKP-KTOKL,
          END   OF GWA_FKKVKP,
          GT_FKKVKP LIKE TABLE OF GWA_FKKVKP INITIAL SIZE 0,
          BEGIN OF GWA_EVER_EANLH_FKKVKP,
            VKONT   TYPE FKKVKP-VKONT,
            ANLAGE   TYPE EVER-ANLAGE,
            ABRSPERR TYPE EVER-ABRSPERR,
            BRANCHE  TYPE EANLH-BRANCHE,
            KTOKL    TYPE FKKVKP-KTOKL,
          END OF GWA_EVER_EANLH_FKKVKP,
          GT_EVER_EANLH_FKKVKP LIKE TABLE OF GWA_EVER_EANLH_FKKVKP
            INITIAL SIZE 0,
          GT_EVER_EANLH_FKKVKP_INACT LIKE STANDARD TABLE OF
            GWA_EVER_EANLH_FKKVKP INITIAL SIZE 0,
          BEGIN OF GWA_ERCH,
            BELNR      TYPE ERCH-BELNR,
            VKONT      TYPE ERCH-VKONT,
          END OF GWA_ERCH,
          GT_ERCH LIKE TABLE OF GWA_ERCH INITIAL SIZE 0,
          BEGIN OF GWA_PRINTDOC,
            OPBEL    TYPE ERDK-OPBEL,
            GPART    TYPE ERDK-PARTNER,
            VKONT    TYPE ERDK-VKONT,
            BUDAT    TYPE ERDK-BUDAT,
            FAEDN    TYPE ERDK-FAEDN,
          END   OF GWA_PRINTDOC,
          GT_PRINTDOC LIKE TABLE OF GWA_PRINTDOC INITIAL SIZE 0,
          BEGIN OF GWA_DBERCHZ1,
            BELNR      TYPE DBERCHZ1-BELNR,
            EIN01      TYPE DBERCHZ1-EIN01,
            V_ABRMENGE TYPE DBERCHZ1-V_ABRMENGE,
          END OF GWA_DBERCHZ1,
          GT_DBERCHZ1 LIKE TABLE OF GWA_DBERCHZ1 INITIAL SIZE 0,
          BEGIN OF GWA_ERCHC,
            BELNR     TYPE ERCHC-BELNR,
            OPBEL     TYPE ERCHC-OPBEL,
            BUDAT     TYPE ERCHC-BUDAT,
          END   OF GWA_ERCHC,
          GT_ERCHC LIKE TABLE OF GWA_ERCHC INITIAL SIZE 0,
    * arrears for inactive consumers.
          BEGIN OF GWA_DFKKOP_INACTIVE_ARR,
              OPBEL       TYPE DFKKOP-OPBEL,
              VKONT       TYPE DFKKOP-VKONT,
              BETRH       TYPE DFKKOP-BETRH,
          END OF GWA_DFKKOP_INACTIVE_ARR,
          GT_DFKKOP_INACTIVE_ARR LIKE TABLE OF GWA_DFKKOP_INACTIVE_ARR
            INITIAL SIZE 0,
          BEGIN OF GWA_ETTIFN,
            ANLAGE    TYPE ETTIFN-ANLAGE,
            OPERAND   TYPE ETTIFN-OPERAND,
            WERT1     TYPE ETTIFN-WERT1,
          END OF GWA_ETTIFN,
          GT_ETTIFN LIKE SORTED TABLE OF GWA_ETTIFN
            WITH NON-UNIQUE KEY ANLAGE OPERAND INITIAL SIZE 0,
          BEGIN OF GWA_DBERDLB,
            PRINTDOC     TYPE DBERDLB-PRINTDOC,
            BILLDOC      TYPE DBERDLB-BILLDOC,
            BILLDOCLINE  TYPE DBERDLB-BILLDOCLINE,
            NETTOBTR     TYPE DBERDLB-NETTOBTR,
          END OF GWA_DBERDLB,
          GT_DBERDLB LIKE TABLE OF GWA_DBERDLB INITIAL SIZE 0,
          BEGIN OF GWA_DBERCHZ1_BILL,
            BELNR       TYPE DBERCHZ1-BELNR,
            BELZEILE    TYPE DBERCHZ1-BELZEILE,
            TVORG       TYPE DBERCHZ1-TVORG,
          END   OF GWA_DBERCHZ1_BILL,
          GT_DBERCHZ1_BILL LIKE TABLE OF GWA_DBERCHZ1_BILL INITIAL SIZE 0,
          BEGIN OF GWA_BILLDOC,
            PRINTDOC TYPE ERDK-OPBEL,
            BILLDOC TYPE DBERDLB-BILLDOC,
          END OF GWA_BILLDOC,
          GT_BILLDOC LIKE TABLE OF GWA_BILLDOC INITIAL SIZE 0,
          BEGIN OF GWA_DBERCHV,
            BELNR    TYPE DBERCHV-BELNR,
            OPERAND  TYPE DBERCHV-OPERAND,
            EZ_ABRMENGE TYPE DBERCHV-EZ_ABRMENGE,
            ABLESGR  TYPE DBERCHV-ABLESGR,
            ABLESGRV TYPE DBERCHV-ABLESGRV,
          END OF GWA_DBERCHV,
          GT_DBERCHV LIKE TABLE OF GWA_DBERCHV INITIAL SIZE 0,
          BEGIN OF GWA_DFKKOP_ARREAR,
            OPBEL     TYPE DFKKOP-OPBEL,
            VKONT     TYPE DFKKOP-VKONT,
            HVORG     TYPE DFKKOP-HVORG,
            TVORG     TYPE DFKKOP-TVORG,
            BUDAT     TYPE DFKKOP-BUDAT,
            BETRH     TYPE DFKKOP-BETRH,
            AUGDT     TYPE DFKKOP-AUGDT,
            XBLNR     TYPE DFKKOP-XBLNR,
          END OF GWA_DFKKOP_ARREAR,
          GT_DFKKOP_ARREAR LIKE TABLE OF GWA_DFKKOP_ARREAR INITIAL SIZE 0,
          BEGIN OF GWA_MASTER_DATA,
            SLNO(4)      TYPE C,
            IND_SECTOR   TYPE TB024-IND_SECTOR,
            TEXTLONG     TYPE TB024-TEXTLONG,
            AC_CODE      TYPE TFK033D-FUN01,
          END   OF GWA_MASTER_DATA,
          GT_MASTER_DATA LIKE TABLE OF GWA_MASTER_DATA INITIAL SIZE 0,
    **      internal table for final prepared data
          BEGIN OF GWA_FINAL_DATA,
              SLNO(4) TYPE C,
              IND_SECTOR      TYPE TB024-IND_SECTOR, " for testing
              INDUSTRY        TYPE TB024-TEXTLONG,
              AC_CODE         TYPE TFK033D-FUN01,
    *    *for urban partners
              UPARTNER        TYPE I , "(6) type n,
              UBAD_METER      TYPE I, "(4) type n,
              UINACTIVE       TYPE I,
              ULOAD(8)        TYPE P DECIMALS 2,
              UUNITS(8)       TYPE P DECIMALS 2,
              UDEMANDS(8)     TYPE P DECIMALS 2,
              UARREARS(8)     TYPE P DECIMALS 2, "FKKMAKO-Msalm,
              UINACT_ARR(8)   TYPE P DECIMALS 2,
              BLANK(10)       TYPE C,
    *    *for rural partners
              RPARTNER        TYPE I , "(6) type n,
              RBAD_METER      TYPE I , "(4) type n,
              RINACTIVE       TYPE I,
              RLOAD(8)        TYPE P DECIMALS 2,
              RUNITS(8)       TYPE P DECIMALS 2,
              RDEMANDS(8)     TYPE P DECIMALS 2,
              RARREARS(8)     TYPE P DECIMALS 2,
              RINACT_ARR(8)   TYPE P DECIMALS 2,
          END OF GWA_FINAL_DATA,
          GT_FINAL_DATA LIKE TABLE OF GWA_FINAL_DATA INITIAL SIZE 0,
          BEGIN OF GWA_MANUAL_DATA,
            COL_1(5)        TYPE C,
            COL_2(10)       TYPE C,
            COL_3(40)       TYPE C,
            COL_4(40)       TYPE C,
            COL_5(10)       TYPE C,
            COL_6(19)       TYPE C,
            COL_7(19)       TYPE C,
            COL_8(19)       TYPE C,
            COL_9(19)       TYPE C,
            COL_10(19)      TYPE C,
            COL_11(19)      TYPE C,
            COL_12(10)      TYPE C,
            COL_13(19)      TYPE C,
            COL_14(19)      TYPE C,
            COL_15(19)      TYPE C,
            COL_16(19)      TYPE C,
            COL_17(19)      TYPE C,
            COL_18(19)      TYPE C,
          END   OF GWA_MANUAL_DATA,
          GT_MANUAL_DATA LIKE TABLE OF GWA_MANUAL_DATA INITIAL SIZE 0.
    ** Variables for grand total of all heads.
    DATA : GV_T_UPART        TYPE I,
           GV_T_RPART        TYPE I,
           GV_T_RINACTIVE    TYPE I,
           GV_T_UINACTIVE    TYPE I,
           GV_UDEF_MTR       TYPE I,
           GV_RDEF_MTR       TYPE I,
           GV_UCON_LOAD(16)  TYPE P DECIMALS 2,
           GV_RCON_LOAD(16)  TYPE P DECIMALS 2,
           GV_UUNITS(16)     TYPE P DECIMALS 2,
           GV_RUNITS(16)     TYPE P DECIMALS 2,
           GV_UDEMAND(16)    TYPE P DECIMALS 2,
           GV_RDEMAND(16)    TYPE P DECIMALS 2,
           GV_UARREAR(16)    TYPE P DECIMALS 2,
           GV_RARREAR(16)    TYPE P DECIMALS 2,
           GV_UINACT_ARR(16) TYPE P DECIMALS 2,
           GV_RINACT_ARR(16) TYPE P DECIMALS 2,
           GV_U_SD_DMD(16)       TYPE P DECIMALS 2,
           GV_R_SD_DMD(16)       TYPE P DECIMALS 2,
           GV_U_SD_ARR(16)       TYPE P DECIMALS 2,
           GV_R_SD_ARR(16)       TYPE P DECIMALS 2,
           GV_UR_PART         TYPE I,
           GV_UR_DEF_MTR      TYPE I,
           GV_UR_CON_LOAD(16) TYPE P DECIMALS 2,
           GV_UR_UNITS(16)    TYPE P DECIMALS 2,
           GV_UR_DEMAND(16)   TYPE P DECIMALS 2,
           GV_UR_ARREARS(16)  TYPE P DECIMALS 2,
           GV_LOWDATE         TYPE SY-DATUM,
           GV_HIGHDATE        TYPE SY-DATUM,
           GV_YEAR   LIKE DBERCHV-EZ_ABRMENGE,
           GV_MONTH  LIKE DBERCHZ1-V_ABRMENGE,
           GV_MNTH_NAME TYPE T247-KTX.
    DATA:
    **total meter rent
          GV_UTOTMETERRENT TYPE P LENGTH 16 DECIMALS 2,
          GV_RTOTMETERRENT TYPE P LENGTH 16 DECIMALS 2,
    **for total surcharge
          GV_UTOTSURCHRG TYPE P LENGTH 16 DECIMALS 2, "dberdlb-nettobtr,
          GV_RTOTSURCHRG TYPE P LENGTH 16 DECIMALS 2, "dberdlb-nettobtr,
    **for total ED
          GV_UTOTED TYPE P LENGTH 16 DECIMALS 2, "dberdlb-nettobtr,
          GV_RTOTED TYPE P LENGTH 16 DECIMALS 2, "dberdlb-nettobtr,
    **for total ED Cess
          GV_UTOTEDCESS TYPE P LENGTH 16 DECIMALS 2, "dberdlb-nettobtr,
          GV_RTOTEDCESS TYPE P LENGTH 16 DECIMALS 2, "dberdlb-nettobtr,
    **for total other misc rev
          GV_UTOTMISCREV  TYPE P LENGTH 16 DECIMALS 2,
          GV_RTOTMISCREV TYPE P LENGTH 16 DECIMALS 2,
    **for total ED of Free agricultural pump
          GV_RTOTEDAGRI TYPE P LENGTH 16 DECIMALS 2,
          GV_UTOTEDAGRI TYPE P LENGTH 16 DECIMALS 2,
    **for ED cess of Free agriculture pump
          GV_RTOTCESSAGRI TYPE P LENGTH 16 DECIMALS 2,
          GV_UTOTCESSAGRI TYPE P LENGTH 16 DECIMALS 2,
    ***data for selection screen data validation
          GV_GSBER TYPE EVER-GSBER,
          GV_COKEY TYPE EVER-COKEY,
          DYFIELDS LIKE DYNPREAD OCCURS 0 WITH HEADER LINE,
          GT_INTERN_DATA TYPE ALSMEX_TABLINE OCCURS 0 WITH HEADER LINE.
    RANGES: R_COKEY FOR TECOKT-COKEY.
    AT SELECTION-SCREEN.
    AT SELECTION-SCREEN ON SO_GSBER.
      IF NOT SO_GSBER-LOW IS INITIAL.
        SELECT SINGLE GSBER FROM TGSBT INTO GT_TGSBT-GSBER WHERE
        GSBER = SO_GSBER-LOW.
        IF SY-SUBRC <> 0.
          MESSAGE E007.
        ENDIF.
      ENDIF.
      IF NOT SO_GSBER-HIGH IS INITIAL .
        SELECT SINGLE GSBER FROM TGSBT INTO GT_TGSBT-GSBER WHERE
        GSBER = SO_GSBER-HIGH.
        IF SY-SUBRC <> 0.
          MESSAGE E007.
        ENDIF.
      ENDIF.
    AT SELECTION-SCREEN ON P_BMNTH.
    **check the validity of Billing month format and for valid billing month
      IF P_BMNTH CO '0123456789/'.
        IF P_BMNTH CP '++++/++'.
          IF P_BMNTH+5(2) > 12.
            MESSAGE E002 WITH 'from'.
          ENDIF.
    ** current year is less than year entered
          IF SY-DATUM(4) < P_BMNTH(4).
            MESSAGE E003 WITH 'from'.
          ELSEIF SY-DATUM(4) = P_BMNTH(4).
    ** month in future
            IF SY-DATUM+4(2) < P_BMNTH+5(2).
              MESSAGE E004 WITH 'from'.
            ENDIF.
          ENDIF.
        ELSE.
          MESSAGE E001 WITH 'from'.
        ENDIF.
      ELSE.
    **  entry have some invalid char
        MESSAGE E010.
      ENDIF.
    AT SELECTION-SCREEN ON VALUE-REQUEST FOR SO_COKEY-LOW.
    **for geting the CO account assigment key of the entered Business area
      CLEAR: DYFIELDS[], DYFIELDS.
      PERFORM DIVISON_DATA_GET CHANGING SO_COKEY-LOW.
    AT SELECTION-SCREEN ON VALUE-REQUEST FOR SO_COKEY-HIGH.
      CLEAR: DYFIELDS[], DYFIELDS.
      PERFORM DIVISON_DATA_GET CHANGING SO_COKEY-HIGH.
    *AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_file.
    *  REFRESH: IT_TAB.
    ***Opens File Open Dialog Box for selecting input file.
    *  CALL METHOD CL_GUI_FRONTEND_SERVICES=>FILE_OPEN_DIALOG
    *    EXPORTING
    *      WINDOW_TITLE     = 'Select File'
    *      DEFAULT_FILENAME = '*.xls'
    *      MULTISELECTION   = ' '
    *    CHANGING
    *      FILE_TABLE       = IT_TAB
    *      RC               = GD_SUBRC.
    *  LOOP AT IT_TAB INTO P_FILE.
    **    so_fpath-sign = 'I'.
    **    so_fpath-option = 'EQ'.
    **    append so_fpath.
    *  ENDLOOP.
    AT SELECTION-SCREEN OUTPUT.
      LOOP AT SCREEN.
        IF SCREEN-GROUP1 = 'ACT'.
          IF P_INCLUD = ' '.
            SCREEN-INPUT = '0'.
          ELSE.
            SCREEN-INPUT = '1'.
          ENDIF.
        ENDIF.
        MODIFY SCREEN.
      ENDLOOP.
    *              End of Selection screen processing
    TOP-OF-PAGE.
      DATA : LV_TEXT(70) TYPE C.
      FORMAT INTENSIFIED OFF.
      WRITE:/50 'CHHATTISGARH STATE ELECTRICITY BOARD',
            /42 'R-15 REPORT FOR LT CONSUMERS FOR THE MONTH OF',
                 GV_MNTH_NAME NO-GAP,'-' NO-GAP, P_BMNTH(4) NO-GAP,
            180 'PAGE-NO. -', SY-PAGNO LEFT-JUSTIFIED.
      SKIP.
      WRITE:/2 'RAO', 15 ':'.
      LOOP AT GT_TGSBT WHERE GSBER IN SO_GSBER.
        IF STRLEN( LV_TEXT ) > 60.
          WRITE: 16 LV_TEXT, / ''.
          CLEAR LV_TEXT.
        ENDIF.
        CONCATENATE LV_TEXT GT_TGSBT-GSBER '-' GT_TGSBT-GTEXT
          INTO LV_TEXT SEPARATED BY SPACE.
      ENDLOOP.
      WRITE: 16 LV_TEXT.
      CLEAR LV_TEXT.
      WRITE: /2 'Division',15 ':'.
      LOOP AT GT_TECOKT.
        IF STRLEN( LV_TEXT ) > 60.
          WRITE: 16 LV_TEXT, /.
          CLEAR LV_TEXT.
        ENDIF.
        CONCATENATE LV_TEXT GT_TECOKT-COKEY '-' GT_TECOKT-LTEXT
          INTO LV_TEXT SEPARATED BY SPACE.
      ENDLOOP.
      WRITE: 16 LV_TEXT.
      CLEAR LV_TEXT.
      WRITE: /2 'Group',15 ':'.
      LOOP AT GT_TE422 .
        IF STRLEN( LV_TEXT ) > 60.
          WRITE: 16 LV_TEXT, /.
          CLEAR LV_TEXT.
        ENDIF.
        CONCATENATE LV_TEXT GT_TE422-TERMSCHL '-' GT_TE422-TERMTEXT
          INTO LV_TEXT SEPARATED BY SPACE.
      ENDLOOP.
      WRITE: 16 LV_TEXT.
      CLEAR LV_TEXT.
    **legends
    *  write :/ text-028, 15 ':',16 text-029.
    **now write the headings on every page
      SET LEFT SCROLL-BOUNDARY COLUMN 50.
      FORMAT COLOR 1 ON.
      WRITE :/1(244) SY-ULINE.
      WRITE :/1 SY-VLINE,6 SY-VLINE,50 SY-VLINE, 58 SY-VLINE, 59
                '<----------------------------------',
                'U R B A N   A R E A',
                '----------------------------------->'.
      WRITE : 151 SY-VLINE, 152
                  '<----------------------------------',
                  'R U R A L   A R E A',
                  '----------------------------------->',
              244 SY-VLINE.
      WRITE :/1 SY-VLINE,
              2 'Slno',
              6 SY-VLINE,
              7 'Revenue Category',
              50 SY-VLINE,
              51 'A/C',
              58 SY-VLINE,
              59 'Cons-',
              67 SY-VLINE,
              68 'Deff',
              75 SY-VLINE,
              76 'Conn',
              89 SY-VLINE,
              90 'Sold',
              108 SY-VLINE,
              109 'Demand',
              129 SY-VLINE,
              130 'Previous',
              151 SY-VLINE,
              152 'Cons-',
              160 SY-VLINE,
              161 'Deff',
              168 SY-VLINE,
              169 'Conn',
              182 SY-VLINE,
              183 'Sold',
              201 SY-VLINE,
              202 'Demand',
              222 SY-VLINE,
              223 'Previous',
              244 SY-VLINE.
      WRITE :/1 SY-VLINE,
              6 SY-VLINE,
              50 SY-VLINE,
              51 'Code',
              58 SY-VLINE,
              59 'umers',
              67 SY-VLINE,
              68 'mtrs',
              75 SY-VLINE,
              76 'Load-KW',
              89 SY-VLINE,
              90 'Units',
              108 SY-VLINE,
              129 SY-VLINE,
              130 'Arrear',
              151 SY-VLINE,
              152 'umers',
              160 SY-VLINE,
              161 'mtrs',
              168 SY-VLINE,
              169 'Load-KW',
              182 SY-VLINE,
              183 'Units',
              201 SY-VLINE,
              222 SY-VLINE,
              223 'Arrear',
              244 SY-VLINE.
      WRITE :/1(244) SY-ULINE.
      SET LEFT SCROLL-BOUNDARY COLUMN 59.
    *              Start of Data Selection
    START-OF-SELECTION.
      SELECT GSBER GTEXT INTO TABLE GT_TGSBT FROM TGSBT
        WHERE SPRAS = SY-LANGU.
      SELECT IND_SECTOR TEXTLONG INTO TABLE GT_TB024
        FROM TB024 WHERE SPRAS = SY-LANGU
                     AND ( ( IND_SECTOR >= '01' AND IND_SECTOR <= '55' )
                      OR ( IND_SECTOR = '57' OR IND_SECTOR = '58'
                      OR IND_SECTOR = '94' ) ).
      SELECT SINGLE KTX INTO GV_MNTH_NAME FROM T247
       WHERE MNR = P_BMNTH+5(2) AND SPRAS = SY-LANGU.
    ***master data selection
      PERFORM CONSUMER_DATA_SELECTION.
    *&--Get Meter Status Connected Load & MF for each installation
      PERFORM OPERAND_DATA_SELECTION.
    *&--Get the Demand corresponding to each Print documents selected
      PERFORM BILLING_DATA_SELECTION.
    *&--Get the arrears corresponding to each Print document selected
      PERFORM ARREAR_DATA_SELECTION.
    *&--To include Mannual R-15 into computerized R-15.
      IF P_INCLUD = 'X'.
        OPEN DATASET P_FILE FOR INPUT IN TEXT MODE ENCODING DEFAULT.
        DO.
          READ DATASET P_FILE INTO GWA_MANUAL_DATA.
          IF SY-SUBRC <> 0.
            EXIT.
          ELSE.
            APPEND GWA_MANUAL_DATA TO GT_MANUAL_DATA.
          ENDIF.
        ENDDO.
        CLOSE DATASET P_FILE.
        DELETE DATASET P_FILE.
      ENDIF.
    END-OF-SELECTION.
    *              End of data Selection
    *            Start of Data Processing
      PERFORM FINAL_TABLE_PREPARE.
      PERFORM FINAL_OUTPUT_PREPARE.
      PERFORM FINAL_OUTPUT_DISPLAY.
    *              End of Data Processing
      PERFORM FREE_MEMORY.
    *&      Form  master_data_selection
    *       text
    *  -->  p1        text
    *  <--  p2        text
    FORM CONSUMER_DATA_SELECTION .
      DATA: LV_MAX_DAYS TYPE I,
            LV_LAST_DAY(2) TYPE C,
            LV_IMONTH TYPE I,
            LV_IYEAR TYPE I,
            LV_BMNTH TYPE ZERDK_ERCHC-V_ABRMENGE,
            LV_BYEAR TYPE ZERDK_ERCHC-EZ_ABRMENGE,
    *&----Temporary tables for global internal tables.
            LT_DBERCHZ1_TEMP LIKE TABLE OF GWA_DBERCHZ1,
            LWA_DBERCHZ1_TEMP LIKE GWA_DBERCHZ1,
            LT_ERCH LIKE TABLE OF GWA_ERCH,
            LWA_ERCH LIKE GWA_ERCH,
            LT_EVER LIKE TABLE OF GWA_EVER.
    *DATA: lt_ever_fkkvkp like gwa_ever_eanlh_fkkvkp occurs 0.
      LV_IMONTH = P_BMNTH+5(2).
      LV_IYEAR  = P_BMNTH(4).
      LV_BMNTH  = P_BMNTH+5(2).
      LV_BYEAR  = P_BMNTH(4).
      CALL FUNCTION 'RTP_US_API_MAX_DAYS_IN_MONTH'
        EXPORTING
          I_DATE_MONTH = LV_IMONTH
          I_DATE_YEAR  = LV_IYEAR
        IMPORTING
          E_MAX_DAYS   = LV_MAX_DAYS.
      LV_LAST_DAY = LV_MAX_DAYS.
      CONCATENATE P_BMNTH(4) P_BMNTH+5(2)  LV_LAST_DAY INTO GV_HIGHDATE.
      IF SO_GPART[] IS INITIAL.
        SELECT VKONTO ANLAGE ABRSPERR
        INTO TABLE GT_EVER
        FROM EVER
        WHERE GSBER IN SO_GSBER
          AND COKEY IN SO_COKEY
          AND   BUKRS = 'CSEB'
          AND   SPARTE = '01'
          AND   KOFIZ  = '02'.
    **get installation no from contract data and check biling class in eanlh
        IF GT_EVER[] IS INITIAL.
    MESSAGE 'No Business Partner exist for entered selection data' TYPE 'A'.
        ENDIF.
        IF NOT GT_EVER[] IS INITIAL.
          SELECT VKONT KTOKL INTO TABLE GT_FKKVKP
            FROM FKKVKP
            FOR ALL ENTRIES IN GT_EVER
            WHERE VKONT = GT_EVER-VKONT
            AND   GPART IN SO_GPART.
          IF GT_FKKVKP[] IS INITIAL.
         MESSAGE 'No Business Partner exist for entered Selection' TYPE 'A'.
          ENDIF.
        ENDIF.
      ELSE.
        SELECT VKONT KTOKL INTO TABLE GT_FKKVKP
          FROM FKKVKP
          WHERE GPART IN SO_GPART.
        IF NOT GT_FKKVKP[] IS INITIAL.
          SELECT VKONTO ANLAGE INTO TABLE GT_EVER
            FROM EVER
            FOR ALL ENTRIES IN GT_FKKVKP
            WHERE VKONTO  EQ GT_FKKVKP-VKONT
              AND GSBER   IN SO_GSBER
              AND COKEY   IN SO_COKEY
              AND BUKRS   EQ 'CSEB'
              AND SPARTE  EQ '01'
              AND KOFIZ   EQ '02'.
        ENDIF.
      ENDIF.
      IF GT_EVER[] IS INITIAL AND GT_FKKVKP[] IS INITIAL.
        MESSAGE 'No Business Partner exist for entered Selection' TYPE 'A'.
      ENDIF.
      SELECT ANLAGE BRANCHE INTO TABLE GT_EANLH
        FROM EANLH
        FOR ALL ENTRIES IN GT_EVER
        WHERE ANLAGE EQ GT_EVER-ANLAGE
        AND   ABLEINH IN SO_MRU
        AND   AKLASSE EQ'0002'
        AND   AB <= GV_HIGHDATE
        AND   BIS => GV_HIGHDATE.
      IF GT_EANLH[] IS INITIAL.
        MESSAGE 'No Business Partner exist for entered Selection' TYPE 'A'.
      ENDIF.
      SORT : GT_EVER BY VKONT ANLAGE,
             GT_FKKVKP BY VKONT,
             GT_EANLH BY ANLAGE.
      LOOP AT GT_EANLH INTO GWA_EANLH.
        READ TABLE GT_EVER INTO GWA_EVER WITH KEY ANLAGE = GWA_EANLH-ANLAGE.
        IF SY-SUBRC = 0.
          READ TABLE GT_FKKVKP INTO GWA_FKKVKP
            WITH KEY VKONT = GWA_EVER-VKONT.
          IF SY-SUBRC = 0.
            GWA_EVER_EANLH_FKKVKP-VKONT = GWA_EVER-VKONT.
            GWA_EVER_EANLH_FKKVKP-ANLAGE = GWA_EVER-ANLAGE.
            GWA_EVER_EANLH_FKKVKP-ABRSPERR = GWA_EVER-ABRSPERR.
            GWA_EVER_EANLH_FKKVKP-BRANCHE  = GWA_EANLH-BRANCHE.
            GWA_EVER_EANLH_FKKVKP-KTOKL    = GWA_FKKVKP-KTOKL.
            APPEND GWA_EVER_EANLH_FKKVKP TO GT_EVER_EANLH_FKKVKP.
            CLEAR GWA_EVER_EANLH_FKKVKP.
          ENDIF.
        ENDIF.
      ENDLOOP.
      IF GT_EVER_EANLH_FKKVKP[] IS INITIAL.
        MESSAGE 'No Business Partner exist for Selection Data' TYPE 'A'.
      ENDIF.
    *&----get all the billdocuments for the busines partner's contract
    *&----account
      SELECT BELNR VKONT INTO TABLE GT_ERCH
        FROM ERCH
        FOR ALL ENTRIES IN GT_EVER_EANLH_FKKVKP
        WHERE VKONT EQ GT_EVER_EANLH_FKKVKP-VKONT.
    *&----get the BILL MONTH & BILL YEAR FOR THE BILLDOCUMENTS.
      IF NOT GT_ERCH[] IS INITIAL.
        SELECT BELNR EIN01 V_ABRMENGE INTO TABLE GT_DBERCHZ1
          FROM DBERCHZ1
          FOR ALL ENTRIES IN GT_ERCH
          WHERE BELNR EQ GT_ERCH-BELNR
            AND AKLASSE = '0002'
            AND ( ( EIN01 = 'BILL_MNTH1'
            AND V_ABRMENGE = P_BMNTH+5(2) )
            OR ( EIN01 = 'BILL_YEAR1'
            AND V_ABRMENGE = P_BMNTH(4) ) ).
    *&---- GET THOSE BILL DOCUMENTS WHICH ARE FOR THE ENTERED BILL MONTH
        IF NOT GT_DBERCHZ1[] IS INITIAL.
          LOOP AT GT_DBERCHZ1 INTO GWA_DBERCHZ1 WHERE EIN01 = 'BILL_MNTH1'
                                              AND V_ABRMENGE = P_BMNTH+5(2).
            READ TABLE GT_DBERCHZ1 INTO LWA_DBERCHZ1_TEMP
            WITH KEY BELNR = GWA_DBERCHZ1-BELNR EIN01 = 'BILL_YEAR1'
            V_ABRMENGE = P_BMNTH(4).
            IF SY-SUBRC = 0.
              APPEND LWA_DBERCHZ1_TEMP TO LT_DBERCHZ1_TEMP.
              CLEAR: LWA_DBERCHZ1_TEMP.
            ENDIF.
          ENDLOOP.
          GT_DBERCHZ1[] = LT_DBERCHZ1_TEMP[].
        ENDIF.
      ENDIF.
    *&---NOW FIND THE PRINT DOCUMENTS FOR THE SELECTED BILLDOCUMENTS.
      IF NOT GT_DBERCHZ1[] IS INITIAL.
        SELECT BELNR OPBEL BUDAT FROM ERCHC
          INTO TABLE GT_ERCHC
          FOR ALL ENTRIES IN GT_DBERCHZ1
          WHERE BELNR = GT_DBERCHZ1-BELNR
            AND INTOPBEL EQ SPACE
            AND SIMULATED EQ SPACE
            AND INVOICED EQ 'X'.
      ENDIF.
      IF NOT GT_ERCHC[] IS INITIAL.
        LOOP AT GT_ERCHC INTO GWA_ERCHC.
          READ TABLE GT_ERCH INTO GWA_ERCH WITH KEY BELNR = GWA_ERCHC-BELNR.
          IF SY-SUBRC = 0.
            APPEND GWA_ERCH TO LT_ERCH.
            CLEAR GWA_ERCH.
          ENDIF.
          CLEAR GWA_ERCHC.
        ENDLOOP.
      ENDIF.
      GT_ERCH[] = LT_ERCH[].
      FREE: LT_ERCH, LT_DBERCHZ1_TEMP,LWA_DBERCHZ1_TEMP.
      LOOP AT GT_EVER_EANLH_FKKVKP INTO GWA_EVER_EANLH_FKKVKP.
    *  READ TABLE gt_erdk_erchc INTO gwa_erdk_erchc
    *  WITH KEY vkont = gwa_ever_eanlh_fkkvkp-vkont.
        READ TABLE GT_ERCH INTO GWA_ERCH
          WITH KEY VKONT = GWA_EVER_EANLH_FKKVKP-VKONT.
        IF SY-SUBRC <> 0.
          IF GWA_EVER_EANLH_FKKVKP-ABRSPERR = SPACE.
            GWA_EVER_EANLH_FKKVKP-ABRSPERR = '01'.
            MODIFY GT_EVER_EANLH_FKKVKP FROM GWA_EVER_EANLH_FKKVKP
              TRANSPORTING ABRSPERR.
            APPEND GWA_EVER_EANLH_FKKVKP TO GT_EVER_EANLH_FKKVKP_INACT.
          ENDIF.
        ELSE.
          IF GWA_EVER_EANLH_FKKVKP-ABRSPERR <> SPACE.
            GWA_EVER_EANLH_FKKVKP-ABRSPERR = SPACE.
            MODIFY GT_EVER_EANLH_FKKVKP FROM GWA_EVER_EANLH_FKKVKP
              TRANSPORTING ABRSPERR.
          ENDIF.
        ENDIF.
        CLEAR GWA_ERCH.
      ENDLOOP.
      REFRESH GT_TECOKT[].
      IF NOT SO_COKEY[] IS INITIAL.
        SELECT COKEY LTEXT INTO TABLE GT_TECOKT
        FROM TECOKT
        WHERE COKEY IN SO_COKEY
          AND SPRAS = SY-LANGU .
    *    %_HINTS ORACLE '("TECOKT","TECOKT~1")'.
      ENDIF.
      IF NOT SO_MRU[] IS INITIAL.
        SELECT TERMSCHL TERMTEXT INTO TABLE GT_TE422
          FROM TE422
          WHERE TERMSCHL IN SO_MRU.
      ENDIF.
    *FREE lt_ever_fkkvkp[].
    ENDFORM.                    " consumer_data_selection
    *&      Form  Operand_data_selection
    *       text
    *  -->  p1        text
    *  <--  p2        text
    FORM OPERAND_DATA_SELECTION .
      DATA: LT_EVER_EANLH_FKKVKP_ACT LIKE TABLE OF GWA_EVER_EANLH_FKKVKP.
    *  SORT gt_ever_eanlh_fkkvkp BY vkont.
      CHECK NOT GT_EVER_EANLH_FKKVKP[] IS INITIAL.
    **now depending upon the billing month check the time slice date
    **the last date of the billing month or the range of billing month
    *should fall in between the time slice of the installation
    ** billing month to is space
    **now select operands for processed installation
      LT_EVER_EANLH_FKKVKP_ACT[] = GT_EVER_EANLH_FKKVKP[].
      DELETE LT_EVER_EANLH_FKKVKP_ACT WHERE ABRSPERR NE SPACE.
      IF NOT LT_EVER_EANLH_FKKVKP_ACT[] IS INITIAL.
        SELECT ANLAGE OPERAND WERT1
        FROM ETTIFN
        INTO TABLE GT_ETTIFN
        FOR ALL ENTRIES IN LT_EVER_EANLH_FKKVKP_ACT
        WHERE ANLAGE = LT_EVER_EANLH_FKKVKP_ACT-ANLAGE
          AND OPERAND IN ('MTR_STS','CONN_LOAD','LOAD_CODE','KWH_MF')
          AND ( AB <= GV_HIGHDATE AND BIS >= GV_HIGHDATE ).
    *    %_HINTS ORACLE '("ETTIFN","ETTIFN~003")'.
      ENDIF.
    ENDFORM.                    " Operand_data_selection
    *&      Form  billing_data_selection
    *&------------------------------

    Hi,
    Please do run time analysis as Rob correctly mentioned or do SQL trace(ST05) to find where the program is consuming more time.
    Lanka

  • Crystal Reports - Problema ao gerar código de barras de boleto

    Boa tarde a todos! Preciso de um help.
    Desenvolvi o boleto de um cliente em Crystal Reports, mas estou encontrando um pequeno problema ao gerar determinados códigos. O número de código de barras é gerado corretamente pela DLL do BankSync. Até aí tudo bem.
    Eu tenho a fonte Interleaved 2 of 5 - Regular, que é composta por 3 aquivos .ttf, e duas DLLs (que são responsáveis por converter o número gerado pelo BS em símbolos, para que a fonte traga corretamente a seqüência de barras).
    Se eu tentar pegar o campo do B1 onde é gravado o número do código de barras (BarCodeNum) e colocar diretamente a fonte, naturalmente ele vai me trazer um código de barras errado, pois antes eu devo converter essa sequência numérica! Isso eu sei.
    Estou utilizando a seguinte fórmula para a conversão no Crystal (que fica disponível depois que eu instalo as DLLs):  BarcodeI2of5 (BarCodeNum) . Ela me traz como resultado uma seqüência de símbolos, que, ao colocá-la no corpo do documento e selecionar a fonte Interleaved 2 of 5 - Regular, ele me traz a sequência correta de barras!
    Exemplo:
    Número do código de barras: 03396517100000100009415546700000000002050005
    O que a DLL da fonte retorna com a fórmula: «$Hb2!!!*JXOg!!!!#&!&¬
    O código de barras sai perfeito e é lido por qualquer leitor ótico!
    MAS AFINAL, QUAL O PROBLEMA?
    Alguns caracteres provavelmente não estão disponíveis na fonte, ou a fórmula está gerando algum caractere que não deveria, que são:
    Ç   e   ¶    (por enquanto só identifiquei esses)
    E quando o resultado da fórmula traz esses caracteres em específico em alguma posição dela, o local onde ele deveria aparecer uma sequência de 5 barras, aparece aquele retângulo característico de quando a fonte não suporta algum acento ou caractere.
    Agora eu não sei o que está errado:
    - Ou a fórmula não deveria trazer de jeito nenhum os caracteres Ç e ¶ como resultado, e obviamente minha fonte não deveria suportá-los.
    - Ou a fórmula está correta e deve realmente trazer os caracteres Ç e ¶ como resultado e o problema está na minha fonte, que deveria suportá-los.
    Alguém já passou por este problema e pode me ajudar?
    Qual das duas possibilidades é o que está acontecendo comigo?
    Já tentei instalar outras DLLs e utilizar outras fontes, mas o problema persiste.
    Preciso saber se o erro está na conversão que a DLL faz ou se está na fonte.
    Quero deixar claro que isso não acontece em todos os boletos. É somente naqueles que a fórmula retorna os caracteres citados.
    Muito obrigada!
    Aline Garroux.

    Prezada Aline, boa tarde.
         Baixa a fonte disponível neste link: http://www.netfontes.com.br/dow.php?cod=3of9_barcode, após coloque o arquivo "3OF9_NEW" na pasta "C:\Windows\Fonts" a qual será instalada automaticamente.
    Espero ter auxiliado.

  • CRM ONLINE 2013: On Approval Of Quotation, Run Report, Generate PDF and Send an Email With PDF as attachment

    Hi,
    I am using CRM ONLINE 2013.
    How to automate below process?
    1. On Approval Of Quotation, Run Report.
    2. Generate PDF.
    3. Send an Email With PDF as attachment.
    As i have gone through many forums for this topic, but creating a plugin code for generating Report PDF is not possible in CRM ONLINE.
    So, What is the alternate way to do this..?
    Thanks.

    This is my entire code mentioned below:-
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
        <title></title>
        <script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.4.1/jquery.min.js"></script>
        <script type="text/javascript">
            if (typeof (SDK) == "undefined")
            { SDK = { __namespace: true }; }
            SDK.JScriptRESTDataOperations = {
                _context: function () {
                    if (typeof GetGlobalContext != "undefined")
                    { return GetGlobalContext(); }
                    else {
                        if (typeof Xrm != "undefined") {
                            return Xrm.Page.context;
                        else { return new Error("Context is not available."); }
                _getServerUrl: function () {
                    var serverUrl = this._context().getServerUrl()
                    if (serverUrl.match(/\/$/)) {
                        serverUrl = serverUrl.substring(0, serverUrl.length - 1);
                    return serverUrl;
                _ODataPath: function () {
                    return this._getServerUrl() + "/XRMServices/2011/OrganizationData.svc/";
                _errorHandler: function (req) {
                    return new Error("Error : " +
      req.status + ": " +
      req.statusText + ": " +
      JSON.parse(req.responseText).error.message.value);
                _dateReviver: function (key, value) {
                    var a;
                    if (typeof value === 'string') {
                        a = /Date\(([-+]?\d+)\)/.exec(value);
                        if (a) {
                            return new Date(parseInt(value.replace("/Date(", "").replace(")/", ""), 10));
                    return value;
                Create: function (object, type, successCallback, errorCallback) {
                    var req = new XMLHttpRequest();
                    req.open("POST", this._ODataPath() + type + "Set", true);
                    req.setRequestHeader("Accept", "application/json");
                    req.setRequestHeader("Content-Type", "application/json; charset=utf-8");
                    req.onreadystatechange = function () {
                        if (this.readyState == 4 /* complete */) {
                            if (this.status == 201) {
                                successCallback(JSON.parse(this.responseText, SDK.JScriptRESTDataOperations._dateReviver).d);
                            else {
                                errorCallback(SDK.JScriptRESTDataOperations._errorHandler(this));
                    req.send(JSON.stringify(object));
                Retrieve: function (id, type, successCallback, errorCallback) {
                    var req = new XMLHttpRequest();
                    req.open("GET", this._ODataPath() + type + "Set(guid'" + id + "')", true);
                    req.setRequestHeader("Accept", "application/json");
                    req.setRequestHeader("Content-Type", "application/json; charset=utf-8");
                    req.onreadystatechange = function () {
                        if (this.readyState == 4 /* complete */) {
                            if (this.status == 200) {
                                successCallback(JSON.parse(this.responseText, SDK.JScriptRESTDataOperations._dateReviver).d);
                            else {
                                errorCallback(SDK.JScriptRESTDataOperations._errorHandler(this));
                    req.send();
                Update: function (id, object, type, successCallback, errorCallback) {
                    var req = new XMLHttpRequest();
                    req.open("POST", this._ODataPath() + type + "Set(guid'" + id + "')", true);
                    req.setRequestHeader("Accept", "application/json");
                    req.setRequestHeader("Content-Type", "application/json; charset=utf-8");
                    req.setRequestHeader("X-HTTP-Method", "MERGE");
                    req.onreadystatechange = function () {
                        if (this.readyState == 4 /* complete */) {
                            if (this.status == 204 || this.status == 1223) {
                                successCallback();
                            else {
                                errorCallback(SDK.JScriptRESTDataOperations._errorHandler(this));
                    req.send(JSON.stringify(object));
                Delete: function (id, type, successCallback, errorCallback) {
                    var req = new XMLHttpRequest();
                    req.open("POST", this._ODataPath() + type + "Set(guid'" + id + "')", true);
                    req.setRequestHeader("Accept", "application/json");
                    req.setRequestHeader("Content-Type", "application/json; charset=utf-8");
                    req.setRequestHeader("X-HTTP-Method", "DELETE");
                    req.onreadystatechange = function () {
                        if (this.readyState == 4 /* complete */) {
                            if (this.status == 204 || this.status == 1223) {
                                successCallback();
                            else {
                                errorCallback(SDK.JScriptRESTDataOperations._errorHandler(this));
                    req.send();
                RetrieveMultiple: function (type, filter, successCallback, errorCallback) {
                    if (filter != null) {
                        filter = "?" + filter;
                    else { filter = ""; }
                    var req = new XMLHttpRequest();
                    req.open("GET", this._ODataPath() + type + "Set" + filter, true);
                    req.setRequestHeader("Accept", "application/json");
                    req.setRequestHeader("Content-Type", "application/json; charset=utf-8");
                    req.onreadystatechange = function () {
                        if (this.readyState == 4 /* complete */) {
                            if (this.status == 200) {
                                successCallback(JSON.parse(this.responseText, SDK.JScriptRESTDataOperations._dateReviver).d.results);
                            else {
                                errorCallback(SDK.JScriptRESTDataOperations._errorHandler(this));
                    req.send();
                __namespace: true
        </script>
        <script type="text/javascript">
            //Create Email and link it with Order as Regarding field
            var Xrm;
            var email = new Object();
            var ownerID = "";
            var CustomerId = "";
            if (window.opener) { Xrm = window.opener.Xrm; }
            else if (window.parent) { Xrm = window.parent.Xrm; }
            //Get ownerid who send email of quotation to customer
            function GetOwnerID() {
                var owner = Xrm.Page.getAttribute("ownerid").getValue();
                ownerID = owner[0].id;
                var ownerName = owner[0].name;
                var entityType = owner[0].entityType;
                GetToEmailGUID();
            //Get customerid who receive email of quotation from owner
            function GetToEmailGUID() {
                var Customer = Xrm.Page.getAttribute('customerid').getValue();
                CustomerId = Customer[0].id;
                var CustomerName = Customer[0].name;
                var entityType = Customer[0].entityType;
                //if CustomerId is type of "Account" then get Primary Contact id of that account
                if (entityType == "account") {
                    var contact = Xrm.Page.getAttribute("customerid").getValue();
                    if (contact === null) return;
                    var serverUrl = Xrm.Page.context.getClientUrl();
                    var oDataSelect = serverUrl + "/XRMServices/2011/OrganizationData.svc/AccountSet(guid'" + contact[0].id + "')?$select=PrimaryContactId";
                    var req = new XMLHttpRequest();
                    req.open("GET", oDataSelect, false);
                    req.setRequestHeader("Accept", "application/json");
                    req.setRequestHeader("Content-Type", "application/json;charset=utf-8");
                    req.onreadystatechange = function () {
                        if (req.readyState === 4) {
                            if (req.status === 200) {
                                var retrieved = JSON.parse(req.responseText).d;
                                CustomerId = retrieved.PrimaryContactId.Id;
                            else {
                                alert(this.statusText);
                    req.send();
            function CreateEmail() {
                GetOwnerID();
                email.Subject = "Email with Report Attachment";
                //Set The current order as the Regarding object
                email.RegardingObjectId = {
                    Id: Xrm.Page.data.entity.getId(),    //Get the current entity Id , here OrderId
                    LogicalName: Xrm.Page.data.entity.getEntityName()//Get the current entity name, here it will be “salesOrder”
                //Create Email Activity
                SDK.JScriptRESTDataOperations.Create(email, "Email", EmailCallBack, function (error) { alert(error.message); });
            // Email Call Back function
            function EmailCallBack(result) {
                email = result; // Set the email to result to use it later in email attachment for retrieving activity Id
                var activityPartyFrom = new Object();
                // Set the From party of the ActivityParty to relate an entity with Email From field
                activityPartyFrom.PartyId = {
                    Id: CustomerId, //"79EBDD26-FDBE-E311-8986-D89D6765B238",  // id of entity you want to associate this activity with.        
                    LogicalName: "contact"
                // Set the "activity" of the ActivityParty
                activityPartyFrom.ActivityId = {
                    Id: result.ActivityId,
                    LogicalName: "email"
                // Now set the participation type that describes the role of the party on the activity).
                activityPartyFrom.ParticipationTypeMask = { Value: 2 }; // 2 means ToRecipients
                // Create the from ActivityParty for the email
                SDK.JScriptRESTDataOperations.Create(activityPartyFrom, "ActivityParty", ActivityPartyFromCallBack, function (error) { alert(error.message); });
                var activityPartyTo = new Object();
                // Set the From party of the ActivityParty to relate an entity with Email From field
                activityPartyTo.PartyId = {
                    Id: ownerID, //"79EBDD26-FDBE-E311-8986-D89D6765B238",  // id of entity you want to associate this activity with.        
                    LogicalName: "systemuser"
                // Set the "activity" of the ActivityParty  
                activityPartyTo.ActivityId = {
                    Id: result.ActivityId,
                    LogicalName: "email"
                // Now set the participation type that describes the role of the party on the activity).    
                activityPartyTo.ParticipationTypeMask = { Value: 1 }; // 1 means Sender
                // Create the from ActivityParty
                SDK.JScriptRESTDataOperations.Create(activityPartyTo, "ActivityParty", ActivityPartyToCallBack, function (error) { alert(error.message); });
            //ActivityParty From Callback
            function ActivityPartyFromCallBack(result) {
            //ActivityParty To Callback
            function ActivityPartyToCallBack(result) {
                GetReportId('ABM_Infotech_SalesQuote');
            //Create attachment for the created email
            function CreateEmailAttachment() {
                //get reporting session and use the params to convert a report in PDF
                var params = getReportingSession();
                //Email attachment parameters
                var activitymimeattachment = Object();
                activitymimeattachment.ObjectId = Object();
                activitymimeattachment.ObjectId.LogicalName = "email";
                activitymimeattachment.ObjectId.Id = email.ActivityId;
                activitymimeattachment.ObjectTypeCode = "email",
                    activitymimeattachment.Subject = "File Attachment";
                activitymimeattachment.Body = encodePdf(params);
                activitymimeattachment.FileName = "Report1.pdf";
                activitymimeattachment.MimeType = "application/pdf";
                //Attachment call
                SDK.JScriptRESTDataOperations.Create(activitymimeattachment, "ActivityMimeAttachment", ActivityMimeAttachmentCallBack, function (error) { alert(error.message); });
            //ActivityMimeAttachment CallBack function
            function ActivityMimeAttachmentCallBack(result) {
                var features = "location=no,menubar=no,status=no,toolbar=no,resizable=yes";
                var width = "800px";
                var height = "600px";
                window.open(Xrm.Page.context.getServerUrl() + "main.aspx?etc=" + 4202 + "&pagetype=entityrecord&id=" + email.ActivityId, "_blank", features);
                // To open window which works in outlook and IE both
                //openStdWin(Xrm.Page.context.getServerUrl() + "main.aspx?etc=" + 4202 + "&pagetype=entityrecord&id=" + email.ActivityId, "_blank", width,
    height, features);
            //This method will get the reportId based on a report name that will be used in            getReportingSession() function
            function GetReportId(reportName) {
                var oDataSetName = "ReportSet";
                var columns = "ReportId";
                var filter = "Name eq '" + reportName + "'";
                retrieveMultiple(oDataSetName, columns, filter, onSuccess);
            function retrieveMultiple(odataSetName, select, filter, successCallback) {
                var serverUrl = Xrm.Page.context.getServerUrl();
                var ODATA_ENDPOINT = "/XRMServices/2011/OrganizationData.svc";
                var odataUri = serverUrl + ODATA_ENDPOINT + "/" + odataSetName + "?";
                if (select) {
                    odataUri += "$select=" + select + "&";
                if (filter) {
                    odataUri += "$filter=" + filter;
                $.ajax({
                    type: "GET",
                    contentType: "application/json; charset=utf-8",
                    datatype: "json",
                    url: odataUri,
                    beforeSend: function (XMLHttpRequest) {
                        XMLHttpRequest.setRequestHeader("Accept", "application/json");
                    success: function (data) {
                        if (successCallback) {
                            if (data && data.d && data.d.results) {
                                successCallback(data.d.results);
                            else if (data && data.d) {
                                successCallback(data.d);
                            else {
                                successCallback(data);
                    error: function (XmlHttpRequest, errorThrown) {
                        if (XmlHttpRequest && XmlHttpRequest.responseText) {
                            alert("Error while retrieval ; Error – " + XmlHttpRequest.responseText);
            function onSuccess(data) {
                reportId = data[0].ReportId.replace('{', ").replace('}', ");
                CreateEmailAttachment(); // Create Email Attachment
            //Gets the report contents
            function getReportingSession() {
                var pth = Xrm.Page.context.getServerUrl() + "/CRMReports/rsviewer/reportviewer.aspx";
                var retrieveEntityReq = new XMLHttpRequest();
                var Id = Xrm.Page.data.entity.getId();
                var quotationGUID = Id.replace('{', ""); //set this to selected quotation GUID
                quotationGUID = quotationGUID.replace('}', "");
                var reportName = "ABM_Infotech_SalesQuote"; //set this to the report you are trying to download
                var reportID = "751089AA-74B8-E211-B52F-D8D3855B253B"; //set this to the guid of the report you are trying to download
                var rptPathString = ""; //set this to the CRMF_Filtered parameter
                var strParameterXML = "<fetch version='1.0' output-format='xml-platform' mapping='logical' distinct='false'><entity name='quote'><all-attributes /><filter type='and'><condition
    attribute='quoteid' operator='eq' uitype='quote' value='" + quotationGUID + "' /> </filter></entity></fetch>";
                retrieveEntityReq.open("POST", pth, false);
                retrieveEntityReq.setRequestHeader("Accept", "*/*");
                retrieveEntityReq.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
                rptPathString = "id=%7B" + reportID + "%7D&uniquename=" + Xrm.Page.context.getOrgUniqueName() + "&iscustomreport=true&reportnameonsrs=&reportName="
    +
                                reportName + "&isScheduledReport=false&p:ABMFilteredQuote=" + strParameterXML;
                //remove the part starting from &p:salesorderid if your report has no parameters
                retrieveEntityReq.send(rptPathString);
                var x = retrieveEntityReq.responseText.indexOf("ReportSession=");
                var ret = new Array();
                ret[0] = retrieveEntityReq.responseText.substr(x + 14, retrieveEntityReq.responseText.indexOf("&", x) - x - 14); //the session id
                x = retrieveEntityReq.responseText.indexOf("ControlID=");
                ret[1] = retrieveEntityReq.responseText.substr(x + 10, retrieveEntityReq.responseText.indexOf("&", x) - x - 10); //the control id
                return ret;
            var bdy = new Array();
            var bdyLen = 0;
            function concat2Bdy(x) {
                bdy[bdyLen] = x;
                bdyLen++;
            function encodePdf(params) {
                bdy = new Array();
                bdyLen = 0;
                var retrieveEntityReq = new XMLHttpRequest();
                var pth = Xrm.Page.context.getServerUrl() + "/Reserved.ReportViewerWebControl.axd?ReportSession=" + params[0] +
                "&Culture=1033&CultureOverrides=True&UICulture=1033&UICultureOverrides=True&ReportStack=1&ControlID=" + params[1] +
                "&OpType=Export&FileName=Public&ContentDisposition=OnlyHtmlInline&Format=PDF";
                retrieveEntityReq.open("GET", pth, false);
                retrieveEntityReq.setRequestHeader("Accept", "*/*");
                retrieveEntityReq.send();
                BinaryToArray(retrieveEntityReq.responseBody);
                return encode64(bdy);
            var StringMaker = function () {
                this.parts = [];
                this.length = 0;
                this.append = function (s) {
                    this.parts.push(s);
                    this.length += s.length;
                this.prepend = function (s) {
                    this.parts.unshift(s);
                    this.length += s.length;
                this.toString = function () {
                    return this.parts.join('');
            var keyStr = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";
            function encode64(input) {
                var output = new StringMaker();
                var chr1, chr2, chr3;
                var enc1, enc2, enc3, enc4;
                var i = 0;
                while (i < input.length) {
                    chr1 = input[i++];
                    chr2 = input[i++];
                    chr3 = input[i++];
                    enc1 = chr1 >> 2;
                    enc2 = ((chr1 & 3) << 4) | (chr2 >> 4);
                    enc3 = ((chr2 & 15) << 2) | (chr3 >> 6);
                    enc4 = chr3 & 63;
                    if (isNaN(chr2)) {
                        enc3 = enc4 = 64;
                    } else if (isNaN(chr3)) {
                        enc4 = 64;
                    output.append(keyStr.charAt(enc1) + keyStr.charAt(enc2) + keyStr.charAt(enc3) + keyStr.charAt(enc4));
                return output.toString();
        </script>
        <script type="text/vbscript">
        Function BinaryToArray(Binary)
               Dim i
               ReDim byteArray(LenB(Binary))
               For i = 1 To LenB(Binary)
                     byteArray(i-1) = AscB(MidB(Binary, i, 1))
                     concat2Bdy(AscB(MidB(Binary, i, 1)))
             Next
              BinaryToArray = byteArray
       End Function     
        </script>
    </head>
    <body>
        <input type="button" onclick="CreateEmail();" value="Attach Report" />
    </body>
    </html>

  • Standard Report for stock Aging

    Hello all,
    can anyone plz let us know that is there any standard report in SAP for stock aging? actually i have to see the materials quantity whose 311 movement not done after 321 and also from how many days it is pending.
    Kindly help and tell how can i find those materials quantity, while user also do 311 for partial quantity?
    Regards.

    Hi  @ABAP@
    Check the followings...
    MB24 - Reservations for Material
    MB25 - Reservations for Account Assignment
    MB51 - Material Document List
    MB52 - List of Warehouse Stocks on Hand MB53 - Display Plant Stock Availability
    MB54 - Consignment Stocks
    MB56 - Analyze Batch Where-Used List
    MB57 - Build Up Batch Where-Used List
    MB58 - Consgmt and Ret. Packag. at Customer
    MB59 - Material Document List
    MB5B - Stocks for Posting Date
    MB5C - Pick-Up List
    MB5L - List of Stock Values: Balances
    MB5M - ShL.exp/prod.date
    MB5S - Display List of GR/IR Balances
    MB5W - List of Stock Values
    MB9A - Analyze Archived Material Documents
    MBAL - Material Documents: Read Archive
    MBGR - Display Material Documents by Movement Reason
    MBSI - Find Inventory Sampling
    MBSM - Display Cancelled Material Documents
    MMBE - Stock Overview
    MD07 - Current Material Overview
    MR51 - Material Line Items
    MRKO - Settle Consignment/Pipeline Liabilities
    MB5T - Stock in transit CC

  • Report for material list

    hi,
    i want a material list for which if i specify a period i will get materials with
    a)No goods reciept
    b)No stock or material movement(issue/transfer posting etc).
    c)no sales or shipping.
    should have happened for the materials for that period.
    if no standard report exists can you tell me the algoritthm.
    urgent: satisfying answers will be awarded full points

    Rajkiran,
    am sure you will never setisfy even we send you number of report because you have to chenge according to your requirement.dont expect spoon feeding.
    *& Object Id               :                                                  &*
    *& Object Name             : ZMM_STO_REGISTER                                 &*
    *& Function Module Name    : MM                                               &*
    *& Transaction Code        : ZMMSTO                                           &*
    *& Author                  : Amit&*
    *& Module Name             : MATERIAL MANAGEMENT                              &*
    *& Sub-Module              :                                                  &*
    *& Program Type            : Report                                           &*
    *& Create Date             : 28.03.2007                                       &*
    *& Completion Date         : 30.03.2007                                       &*
    *& SAP Release             :                                                  &*
    *& Description             : STO REGISTER                                     &*
    *& MODIFICATION LOG        : MODIFIED AT 30.04.2007 adding new field          &*
    *&                          chapter-id by chakrapani mishra                   &*
    REPORT  zmm_sto_register.
    *                             TABLES USED                                     *
    TABLES :vbrk,                                   "Billing Document: Header Data
            vbrp,                                   "Billing Document: Item Data
            mara,                                   "General Material Data
            konv,                                   "Conditions (Transaction Data)
            t023t,                                  "Material Group Descriptions
            ekko,                                   "Purchasing Document Header
            likp,                                   "SD Document: Delivery Header Data
            mvke,                                   "Sales Data for Material
            t001w,                                  "Plants/Branches
            marm,                                   "Units of Measure for Material
            j_1imtchid,                             "Combination of Material Number and Chapter ID
            mseg,
            mkpf,
            j_1iexchdr.
    TYPE-POOLS : slis.                              "TYPE POOL SLIS
    *                      INTERNAL TABLES                                      *
    DATA: BEGIN OF t_vbrp OCCURS 0,                "INTERNAL TABLE FOR VBRP
            vbeln LIKE vbrp-vbeln,                 "Billing Document
            vstel LIKE vbrp-vstel,                 "Shipping Point/Receiving Point
           vgbel LIKE vbrp-vgbel,                 "Document number of the reference document
            aubel LIKE vbrp-aubel,                 "Sales Document
            matnr LIKE vbrp-matnr,                 "Material Number
            arktx LIKE vbrp-arktx,                 "Short text for sales order item
            matkl LIKE vbrp-matkl,                 "Material Group
            fkimg LIKE vbrp-fkimg,                 "Actual Invoiced Quantity
            werks LIKE vbrp-werks,                 "Plant
            posnr LIKE vbrp-posnr,                 " Billing item
            vrkme LIKE vbrp-vrkme,                 " Sales unit
            vgbel1 LIKE mkpf-xblnr,
    END OF t_vbrp.
    DATA: BEGIN OF t_vbrk OCCURS 0,                 "INTERNAL TABLE FOR VBRK
            kunag LIKE vbrk-kunag,                  "Sold-to party
            vbeln LIKE vbrk-vbeln,                  "Billing Document
            fkdat LIKE vbrk-fkdat,                  "Billing date for billing index and printout
            knumv LIKE vbrk-knumv,                  "Number of the document condition
            fkart LIKE vbrk-fkart,                  "Billing Type
            vtweg LIKE vbrk-vtweg,                  "Distribution Channel
            vkorg LIKE vbrk-vkorg,                  "Sales Organization
            erzet LIKE vbrk-erzet,
            w_flag TYPE c,
            l_tabix TYPE sy-tabix,
    END OF t_vbrk.
    DATA: BEGIN OF t_temp1 OCCURS 0,                 "INTERNAL TABLE FOR VBRK
           vbeln LIKE vbrp-vbeln,                 "Billing Document
           fkart LIKE vbrk-fkart,
          fkdat LIKE vbrk-fkdat,
           vgbel LIKE vbrp-vgbel,                 "Document number of the reference document
           werks LIKE vbrp-werks,
           w_flag TYPE c,
    END OF t_temp1.
    DATA: BEGIN OF t_mara OCCURS 0,                 "INTERNAL TABLE FOR MARA
            matnr LIKE mara-matnr,                  "Material Number
            mtart LIKE mara-mtart,                  "Material Type
            wrkst LIKE mara-wrkst,                  "Finish
            extwg LIKE mara-extwg,                  "Design
            labor LIKE mara-labor,                  "Grade/Category No.
            normt LIKE mara-normt,                  "Thickness in mm
            bismt LIKE mara-bismt,                  "Size (L*B) in mm
            matkl LIKE mara-matkl,
            spart LIKE mara-spart,
            meins LIKE mara-meins,
    END OF t_mara.
    DATA : BEGIN OF t_konv OCCURS 0,                "INTERNAL TABLE FOR KONV
            knumv LIKE konv-knumv,                  "Number of the document condition
            kposn LIKE konv-kposn,                  "Condition item number
            kschl LIKE konv-kschl,                  "Condition type
            kwert LIKE konv-kwert,                  "Condition value
            kbetr LIKE konv-kbetr,                  "Condition rate
            END OF t_konv.
    DATA : BEGIN OF t_likp OCCURS 0,               "INTERNAL TABLE FOR LIKP
            vbeln LIKE likp-vbeln,                 "Delivery
            lfdat LIKE likp-lfdat,                 "Delivery Date
            kunnr LIKE likp-kunnr,
            bldat LIKE likp-bldat,                " document date
            vbeln_kp LIKE mkpf-xblnr, " likp-vbeln,
            END OF t_likp.
    DATA : BEGIN OF t_t023t OCCURS 0,              "INTERNAL TABLE FOR T023T
            matkl LIKE t023t-matkl,               "Material Group
            wgbez LIKE t023t-wgbez,                "Material Group Description
            spras LIKE t023t-spras,                "Language Key
            END OF t_t023t.
    DATA : BEGIN OF t_ekko OCCURS 0,               "INTERNAL TABLE FOR EKKO
            ebeln LIKE ekko-ebeln,                 "Purchasing Document Number
            bsart LIKE ekko-bsart,                 "Purchasing Document Type
            aedat LIKE ekko-aedat,                 "Date on Which Record Was Created
            knumv LIKE ekko-knumv,                 "Number of the document condition
            END OF t_ekko.
    DATA : BEGIN OF t_ekpo OCCURS 0,               "INTERNAL TABLE FOR EKKO
            ebeln LIKE ekko-ebeln,                 "Purchasing Document Number
            loekz LIKE ekko-loekz,                 "Purchasing Document Type
            END OF t_ekpo.
    DATA : BEGIN OF t_mvke OCCURS 0,
            matnr LIKE mvke-matnr,
            mvgr1 LIKE mvke-mvgr1,
            END OF t_mvke.
    DATA : BEGIN OF t_t001w OCCURS 0,                "INTERNAL TABLE FOR KONV
            werks LIKE t001w-werks,                  "Number of the document condition
            name1 LIKE t001w-name1,                  "Condition type
            kunnr LIKE t001w-kunnr,                  "Condition value
            name2 LIKE t001w-name2,                  "Condition item number
           END OF t_t001w.
    DATA : BEGIN OF t_t001w2 OCCURS 0,                "INTERNAL TABLE FOR KONV
            werks LIKE t001w-werks,                  "Number of the document condition
            name1 LIKE t001w-name1,                  "Condition type
            kunnr LIKE t001w-kunnr,                  "Condition value
            name2 LIKE t001w-name2,                  "Condition item number
           END OF t_t001w2.
    DATA : BEGIN OF t_marm OCCURS 0,
            matnr LIKE marm-matnr,
            meinh LIKE marm-meinh,
            umrez LIKE marm-umrez,
            umren LIKE marm-umren,
            END OF t_marm.
    DATA : BEGIN OF t_tvm1t OCCURS 0,
            mvgr1 LIKE tvm1t-mvgr1,
            bezie LIKE tvm1t-bezei,
            END OF t_tvm1t.
    **********************modification additioon of chapter ID  30.04.2007
    DATA : BEGIN OF t_j_1imtchid OCCURS 0,              "INTERNAL TABLE FOR j_1imtchid
            matnr LIKE j_1imtchid-matnr,                "Material Number
           j_1ichid LIKE j_1imtchid-j_1ichid,           "Chapter ID
            END OF t_j_1imtchid.
    DATA : BEGIN OF t_j_1iexchdr OCCURS 0,              "INTERNAL TABLE FOR j_1imtchid
            exnum LIKE j_1iexchdr-exnum,                "Material Number
            exdat LIKE j_1iexchdr-exdat,                "Chapter ID
            rdoc LIKE j_1iexchdr-rdoc,
            werks LIKE j_1iexchdr-werks,
            status LIKE j_1iexchdr-status,
            trntyp LIKE j_1iexchdr-trntyp,
            END OF t_j_1iexchdr.
    **********************modification additioon of chapter ID  30.04.2007
    DATA: BEGIN OF t_final OCCURS 0,                  "INTERNAL TABLE T_FINAL
              fkart LIKE vbrk-fkart,
              kunag LIKE vbrk-kunag,
              vbeln_k LIKE vbrk-vbeln,
              fkdat LIKE vbrk-fkdat,
              knumv LIKE vbrk-knumv,
              fkart1 LIKE vbrk-fkart,
              vtweg LIKE vbrk-vtweg,
              vkorg LIKE vbrk-vkorg,
              vbeln LIKE likp-vbeln,                 "Delivery
              vbeln_p LIKE vbrp-vbeln,
              vstel LIKE vbrp-vstel,
              "vgbel like mkpf-xblnr,
              vgbel LIKE vbrp-vgbel,
              aubel LIKE vbrp-aubel,
              matnr LIKE vbrp-matnr,
              arktx LIKE vbrp-arktx,
              matkl LIKE vbrp-matkl,
              fkimg LIKE vbrp-fkimg,
              posnr LIKE vbrp-posnr,
              vrkme LIKE vbrp-vrkme,
              matnr_m LIKE mara-matnr,
              mtart LIKE mara-mtart,
              wrkst LIKE mara-wrkst,
              extwg LIKE mara-extwg,
              labor LIKE mara-labor,
              normt LIKE mara-normt,
              bismt LIKE mara-bismt,
              spart LIKE mara-spart,
              meins LIKE mara-meins,
              kposn LIKE konv-kposn,
              kschl LIKE konv-kschl,
              kwert LIKE konv-kwert,
              kwert1 LIKE konv-kwert,
              kwert2 LIKE konv-kwert,
              kwert3 LIKE konv-kwert,
              kwert4 LIKE konv-kwert,
              kwert5 LIKE konv-kwert,
              kbetr LIKE konv-kbetr,
              vbeln_kp LIKE mkpf-xblnr, " likp-vbeln,
              lfdat LIKE likp-lfdat,
              wgbez LIKE t023t-wgbez,
              spras LIKE t023t-spras,
              bsart LIKE ekko-bsart,
              aedat LIKE ekko-aedat,
    **********************modification additioon of chapter ID  30.04.2007
           j_1ichid LIKE j_1imtchid-j_1ichid ,
    **********************modification additioon of chapter ID  30.04.2007
              total TYPE  p  DECIMALS 2,
              mvgr1 LIKE mvke-mvgr1,
              werks LIKE t001w-werks,                  "Number of the document condition
              kunnr LIKE t001w-kunnr,                  "Condition value
              name1 LIKE t001w-name1,                  "Condition type
              name2 LIKE t001w-name2,                  "Condition item number
              werks1 LIKE t001w-werks,                  "Number of the document condition
              kunnr1 LIKE t001w-kunnr,                  "Condition value
              name11 LIKE t001w-name1,                  "Condition type
              name21 LIKE t001w-name2,
              exnum LIKE j_1iexchdr-exnum,                "Material Number
              exdat LIKE j_1iexchdr-exdat,           "Chapter ID
              rdoc LIKE j_1iexchdr-rdoc,
              bom TYPE p DECIMALS 4,
              mult TYPE p DECIMALS 4,
              bezie LIKE tvm1t-bezei,
              length(5) TYPE n,
              breath(5) TYPE n,
               bldat LIKE likp-bldat,                " document date
              size(15) TYPE p DECIMALS 2,
              area(15) TYPE  p DECIMALS 2,
               mblnr TYPE mseg-mblnr,     "Number of Material Document
               mjahr TYPE mseg-mjahr,     "Material Document Year
               budat TYPE mkpf-budat,     "Posting period
               w_flag TYPE c,
                flag TYPE c,
        END OF t_final.
    DATA : BEGIN OF t_temp OCCURS 0,
           kunag LIKE vbrk-kunag,
              vbeln_k LIKE vbrk-vbeln,
              fkdat LIKE vbrk-fkdat,
              knumv LIKE vbrk-knumv,
              fkart LIKE vbrk-fkart,
              vtweg LIKE vbrk-vtweg,
              vkorg LIKE vbrk-vkorg,
              vbeln LIKE likp-vbeln,                 "Delivery
              vbeln_p LIKE vbrp-vbeln,
              vstel LIKE vbrp-vstel,
              "vgbel like mkpf-xblnr,
              vgbel LIKE vbrp-vgbel,
              aubel LIKE vbrp-aubel,
              matnr LIKE vbrp-matnr,
              arktx LIKE vbrp-arktx,
              matkl LIKE vbrp-matkl,
              fkimg LIKE vbrp-fkimg,
              posnr LIKE vbrp-posnr,
              vrkme LIKE vbrp-vrkme,
              matnr_m LIKE mara-matnr,
              mtart LIKE mara-mtart,
              wrkst LIKE mara-wrkst,
              extwg LIKE mara-extwg,
              labor LIKE mara-labor,
              normt LIKE mara-normt,
              bismt LIKE mara-bismt,
              spart LIKE mara-spart,
              meins LIKE mara-meins,
              kposn LIKE konv-kposn,
              kschl LIKE konv-kschl,
              kwert LIKE konv-kwert,
              kwert1 LIKE konv-kwert,
              kwert2 LIKE konv-kwert,
              kwert3 LIKE konv-kwert,
              kwert4 LIKE konv-kwert,
              kwert5 LIKE konv-kwert,
              kbetr LIKE konv-kbetr,
              vbeln_kp LIKE mkpf-xblnr, " likp-vbeln,
              lfdat LIKE likp-lfdat,
              wgbez LIKE t023t-wgbez,
              spras LIKE t023t-spras,
              bsart LIKE ekko-bsart,
              aedat LIKE ekko-aedat,
    **********************modification additioon of chapter ID  30.04.2007
           j_1ichid LIKE j_1imtchid-j_1ichid ,
    **********************modification additioon of chapter ID  30.04.2007
              total TYPE  p  DECIMALS 2,
              mvgr1 LIKE mvke-mvgr1,
              werks LIKE t001w-werks,                  "Number of the document condition
              kunnr LIKE t001w-kunnr,                  "Condition value
              name1 LIKE t001w-name1,                  "Condition type
              name2 LIKE t001w-name2,                  "Condition item number
              werks1 LIKE t001w-werks,                  "Number of the document condition
              kunnr1 LIKE t001w-kunnr,                  "Condition value
              name11 LIKE t001w-name1,                  "Condition type
              name21 LIKE t001w-name2,
              exnum LIKE j_1iexchdr-exnum,                "Material Number
              exdat LIKE j_1iexchdr-exdat,           "Chapter ID
              rdoc LIKE j_1iexchdr-rdoc,
              bom TYPE p DECIMALS 4,
              mult TYPE p DECIMALS 4,
              bezie LIKE tvm1t-bezei,
              length(5) TYPE n,
              breath(5) TYPE n,
              size(15) TYPE p DECIMALS 2,
              area(15) TYPE  p DECIMALS 2,
               mblnr TYPE mseg-mblnr,     "Number of Material Document
               mjahr TYPE mseg-mjahr,     "Material Document Year
               budat TYPE mkpf-budat,     "Posting period
            END OF t_temp.
    DATA : BEGIN OF it_mseg OCCURS 0,
             werks LIKE mseg-werks,
             matnr LIKE mseg-matnr,
             ebeln LIKE mseg-ebeln,
             mblnr TYPE mseg-mblnr,    "Number of Material Document
             mjahr TYPE mseg-mjahr,     "Material Document Year
           END OF it_mseg.
    DATA : BEGIN OF it_mkpf OCCURS 0,
              budat TYPE mkpf-budat,
              mblnr TYPE mkpf-mblnr,
             tcode2 LIKE mkpf-tcode2,
            "  xblnr(10) TYPE C,
             xblnr LIKE likp-vbeln,                 "Delivery
           END OF it_mkpf.
    DATA : BEGIN OF it_vbuk OCCURS 0,
            vbeln LIKE vbuk-vbeln,
            wbstk LIKE vbuk-wbstk,
            END OF it_vbuk.
    DATA : it_vbrk LIKE t_vbrk OCCURS 0 WITH HEADER LINE.
    DATA : it_vbrp LIKE t_vbrp OCCURS 0 WITH HEADER LINE.
    DATA : it_mara LIKE t_mara OCCURS 0 WITH HEADER LINE.
    TYPES : w_str TYPE  string,
            str  TYPE  string.
    *                      WORK AREAS                                         *
    DATA:  wa_vbrk    LIKE  t_vbrk.                     "WORK AREA FOR VBRK
    DATA:  wa_vbrp    LIKE  t_vbrp.                     "WORK AREA FOR VBRP
    DATA:  wa_mara    LIKE  t_mara.                     "WORK AREA FOR MARA
    DATA:  wa_sfinal  LIKE  t_temp.                    "WORK AREA FOR T_FINAL
    DATA:  wa_sfinal1  LIKE  t_final.                    "WORK AREA FOR T_FINAL
    DATA:  wa_mseg    LIKE  it_mseg.                     "Workarea for  internal table mseg
    DATA :  wa_vbeln LIKE t_vbrk-vbeln.
    DATA:  wa_mkpf    LIKE  it_mkpf.                     "Workarea for  internal table mkpf
    *                          ALV                                           *
    DATA: it_fieldcat     TYPE    slis_t_fieldcat_alv,
          wa_fieldcat     LIKE    LINE OF it_fieldcat,
          it_top_of_page  TYPE    slis_t_listheader,
          ls_layout       TYPE    slis_layout_alv,
          gt_events       TYPE    slis_t_event.
    *                     SELECTION-SCREEN                                    *
    SELECTION-SCREEN BEGIN OF BLOCK detail WITH FRAME TITLE text-000.
    SELECT-OPTIONS: supp_pnt FOR vbrp-vstel OBLIGATORY.              "SUPPLYING PLANT
    SELECT-OPTIONS: recv_pnt FOR vbrk-kunag OBLIGATORY.              "RECEIVING PLANT
    SELECT-OPTIONS: period   FOR vbrk-fkdat OBLIGATORY.              "PERIOD
    SELECT-OPTIONS: budat    FOR mkpf-budat.                        " MIGO DATE
    SELECTION-SCREEN  END OF BLOCK detail.
    *                   START-OF-SELECTION                                 *
    ***********************************POPULATING DATA
    PERFORM populating_data.
    **********************************MOVE DATA
    PERFORM move_data.
    *********************************DATA- FETCHING
    PERFORM data_fetching.
    *********************************GET ALV  DATA
    PERFORM alv_get_data.
    *********************************ALV GRID DATA
    PERFORM alv_grid.
    *********************************TOP OF PAGE
    PERFORM top_of_page.
    *                    VALIDATION  OF SELECTION SCREEN                     *
    AT SELECTION-SCREEN ON period.
      IF period-high IS INITIAL.
        MESSAGE e001(zamit).
      ENDIF.
    *                      SELECTION OF DATA                        *
    FORM populating_data.
    *************POPULATING DATA FROM VBRK
      CLEAR   t_vbrk.
      REFRESH t_vbrk.
      SELECT  kunag
              vbeln
              fkdat
              knumv
              fkart
              vtweg
              vkorg
              erzet
      FROM vbrk INTO TABLE t_vbrk
      WHERE kunag IN recv_pnt AND
            fkdat IN period   AND
                fkart = 'JEX' OR
                fkart = 'F8'  AND
                vtweg = '10'  AND
                vkorg = '1000'.
      DELETE t_vbrk[]   WHERE fkdat = '' .
      DELETE t_vbrk[]   WHERE fkdat NOT IN period.
      DELETE t_vbrk[]   WHERE kunag NOT IN recv_pnt.
      IF t_vbrk[] IS INITIAL.
        MESSAGE i002(zamit).
        LEAVE LIST-PROCESSING.
      ENDIF.
      DELETE t_vbrk WHERE fkdat NOT IN period.
    *DATA: l_tabix TYPE sy-tabix.           " declare the sy-tabix as local variable
    *DATA: l_lines TYPE sy-tabix.
    *DATA: l_index TYPE sy-tabix.
    *"SORT T_VBRK DESCENDING BY vbeln.
    *SORT T_VBRK ASCENDING BY vbeln fkart .
    *DESCRIBE TABLE t_vbrk LINES  l_lines .       "The current number of table rows of the internal table itab is determined and is assigned to the data object lin
    *CHECK l_lines > 1.                               " check lines are greater than 1
    *LOOP AT t_vbrk.
    *  l_tabix = sy-tabix.                              " assine Index of Internal Tables into local var l_tabix
    *  l_index = l_tabix + 1.
    *  IF t_vbrk-fkart = 'F8'.                          " loop on the temp table
    *READ TABLE t_vbrk INTO wa_vbrk INDEX l_index.  " read the temp table with index l_index
    *IF sy-subrc = 0.
    *CHECK t_vbrk-vbeln < wa_vbrk-vbeln .
    *  if sy-subrc =  0.
    *  t_vbrk-W_FLAG = 'X'.
    *  MODIFY t_vbrk TRANSPORTING W_FLAG.
    *endif.
    * endif.
    *else.
    *  exit.
    *endif.
    *endloop.
    *LOOP at t_vbrk.
    *DELETE t_vbrk WHERE w_flag = 'X' .
    *endloop.
    *" change  by kalika dated 28.06.2007
    **" change  by kalika dated 28.06.2007
    *************POPULATING DATA FROM VBRP
      IF t_vbrk[] IS NOT INITIAL.
        CLEAR   t_vbrp.
        REFRESH t_vbrp.
        SELECT  vbeln
                vstel
                vgbel
                aubel
                matnr
                arktx
                matkl
                fkimg
                werks
                posnr
                vrkme
         FROM vbrp INTO TABLE t_vbrp
         FOR ALL ENTRIES IN t_vbrk
         WHERE vbeln = t_vbrk-vbeln
         AND vstel IN supp_pnt  .
      ENDIF.
      IF sy-subrc <> 0.
        MESSAGE i000(zamit).
        LEAVE LIST-PROCESSING.
      ENDIF.
      IF t_vbrp[] IS NOT INITIAL.
        SELECT vbeln wbstk FROM vbuk
          INTO TABLE it_vbuk FOR ALL ENTRIES IN
          t_vbrp WHERE vbeln = t_vbrp-vgbel.
      ENDIF.
      "DELETE t_vbrp[] WHERE vstel NOT in supp_pnt.  " by kalika
    *************POPULATING DATA FROM MARA
      it_vbrp[] = t_vbrp[].
      " it_vbrp-vgbel1 = t_vbrp-vgbel.
      "SORT it_vbrp BY matnr.
      SORT t_vbrp BY vbeln.
      "  DELETE ADJACENT DUPLICATES FROM it_vbrp COMPARING matnr . by kalika
    *  IF t_vbrp IS NOT INITIAL.
      CLEAR   t_mara.
      REFRESH t_mara.
      SELECT  matnr
              mtart
              wrkst
              extwg
              labor
              normt
              bismt
              matkl
              spart
              meins
         FROM mara INTO TABLE t_mara
              FOR ALL ENTRIES IN it_vbrp WHERE
              matnr = it_vbrp-matnr .
    *  ENDIF.
    *************POPULATING DATA FROM KONV
      it_vbrk[] = t_vbrk[].
      SORT it_vbrk BY knumv .
      DELETE ADJACENT DUPLICATES FROM it_vbrk COMPARING knumv .
      CLEAR   t_konv.
      REFRESH t_konv.
      SELECT  knumv
              kposn
              kschl
              kwert
              kbetr
         FROM konv INTO TABLE t_konv
         FOR ALL ENTRIES IN it_vbrk
           WHERE knumv = it_vbrk-knumv.
      DELETE t_konv WHERE
                             kschl <> 'ZR02'
                             AND  kschl <> 'JEXP'
                             AND  kschl <> 'JECS'
                             AND  kschl <> 'DIFF'.
    *************POPULATING DATA FROM LIKP
      it_vbrp[] = t_vbrp[].
      SORT it_vbrp BY vgbel.
      " DELETE ADJACENT DUPLICATES FROM it_vbrp COMPARING vgbel . by kalika
      CLEAR   t_likp.
      REFRESH t_likp.
      SELECT  vbeln
              lfdat
              bldat  " NEW CHANGE
         FROM likp INTO CORRESPONDING FIELDS OF TABLE t_likp
         FOR ALL ENTRIES IN it_vbrp
         WHERE vbeln = it_vbrp-vgbel.
    *************POPULATING DATA FROM T023T
      it_mara[] = t_mara[].
      SORT it_mara BY matkl .
      DELETE ADJACENT DUPLICATES FROM it_mara COMPARING matkl.
      CLEAR   t_t023t.
      REFRESH t_t023t.
      IF t_mara[] IS NOT INITIAL.
        SELECT  matkl
                wgbez
                spras
           FROM t023t INTO TABLE t_t023t
           FOR ALL ENTRIES IN it_mara
           WHERE matkl = it_mara-matkl  AND
                 spras = sy-langu.
      ENDIF.
    *************POPULATING DATA FROM EKKO
      it_vbrp[] = t_vbrp[].
      SORT it_vbrp BY aubel.
      " DELETE ADJACENT DUPLICATES FROM it_vbrp COMPARING aubel. by kalika
      CLEAR t_ekko.
      REFRESH t_ekko.
      SELECT ebeln
             bsart
             aedat
             knumv
        FROM ekko
        INTO TABLE t_ekko
        FOR ALL ENTRIES IN it_vbrp
       WHERE ebeln = it_vbrp-aubel
              AND bsart LIKE 'U%'.
    ************************delete invoice where it is being deleted from the system
    *SELECT  ebeln  loekz
    *  FROM ekpo
    *  INTO CORRESPONDING FIELDS OF TABLE t_ekpo
    *  FOR ALL ENTRIES IN t_ekko
    *  WHERE ebeln = t_ekko-ebeln.
    *DELETE t_ekpo WHERE loekz = 'L'.
    *************POPULATING DATA FROM t001w
      it_vbrp[] = t_vbrp[].
      SORT it_vbrp BY werks.
      "  DELETE ADJACENT DUPLICATES FROM it_vbrp COMPARING werks . by kalika
      CLEAR   t_t001w.
      REFRESH t_t001w.
      SELECT  werks
              name1
              kunnr
              name2
         FROM t001w INTO TABLE t_t001w
         FOR ALL ENTRIES IN it_vbrp
         WHERE werks = it_vbrp-werks .
      it_vbrk[] = t_vbrk[].
      SORT it_vbrk BY kunag.
      DELETE ADJACENT DUPLICATES FROM it_vbrk COMPARING kunag .
      CLEAR   t_t001w2.
      REFRESH t_t001w2.
      SELECT  werks
              name1
              kunnr
              name2
         FROM t001w INTO TABLE t_t001w2
         FOR ALL ENTRIES IN it_vbrk
         WHERE kunnr = it_vbrk-kunag .
    *--------POPULATING DATA FROM MARM
      SELECT matnr
              meinh
              umrez
              umren FROM marm INTO TABLE t_marm
              FOR ALL ENTRIES IN t_mara
              WHERE matnr = t_mara-matnr.
    *********************POPULATING DATA FROM MVKE
      CLEAR   t_mvke.
      REFRESH t_mvke.
      SELECT  matnr
              mvgr1
         FROM mvke INTO TABLE t_mvke
         FOR ALL ENTRIES IN t_vbrp
           WHERE matnr = t_vbrp-matnr .
    *-----------------POPULATING DATA FROM TVM1T.
      SELECT
              mvgr1 bezei FROM tvm1t
              INTO TABLE t_tvm1t FOR ALL ENTRIES IN t_mvke
              WHERE mvgr1 = t_mvke-mvgr1.
    **********************modification additioon of chapter ID  30.04.2007
    *-----------------POPULATING DATA FROM j_1imtchid.
      CLEAR   t_j_1imtchid.
      REFRESH t_j_1imtchid.
      SELECT  matnr
              j_1ichid
         FROM j_1imtchid INTO TABLE t_j_1imtchid
         FOR ALL ENTRIES IN t_vbrp
           WHERE matnr = t_vbrp-matnr .
    *-----------------POPULATING DATA FROM j_1iexchdr.
      CLEAR   t_j_1iexchdr.
      REFRESH t_j_1iexchdr.
      SELECT  exnum
              exdat
              rdoc
              werks
              trntyp
              status
         FROM j_1iexchdr INTO TABLE t_j_1iexchdr
         FOR ALL ENTRIES IN t_vbrp
         WHERE rdoc = t_vbrp-vbeln
         AND werks = t_vbrp-werks
         AND trntyp = 'DLFC'   .      " by kalika
      DELETE t_j_1iexchdr WHERE status = 'R' .   " by kalika
      DELETE t_j_1iexchdr WHERE status = 'B' .   " by kalika
      SORT t_j_1iexchdr BY rdoc.
    ***************end of modification additioon of chapter ID  30.04.2007
    ******* start of modification kalika dated 19.06.2007
      LOOP AT t_likp.
        t_likp-vbeln_kp = t_likp-vbeln.
        MODIFY  t_likp.
      ENDLOOP.
    *  SELECT budat mblnr xblnr tcode2
    *    FROM mkpf
    *    INTO CORRESPONDING FIELDS OF TABLE it_mkpf
    *    FOR ALL ENTRIES IN t_likp
    *    WHERE xblnr = t_likp-vbeln_kp
    *    AND tcode2 LIKE 'MIGO_GR'
    *    AND budat IN budat. "26.07.2007
      SELECT ebeln mblnr FROM mseg
        INTO CORRESPONDING FIELDS OF TABLE it_mseg
        FOR ALL ENTRIES IN t_vbrp
        WHERE ebeln = t_vbrp-aubel AND mblnr LIKE '5%'.
      SELECT budat mblnr tcode2
          FROM mkpf
          INTO CORRESPONDING FIELDS OF TABLE it_mkpf
          FOR ALL ENTRIES IN it_mseg
          WHERE mblnr = it_mseg-mblnr
          AND tcode2 LIKE 'MIGO_GR'
          AND budat IN budat.                                   "26.07.2007
    *loop at it_mkpf.
    *DELETE it_mkpf WHERE mblnr = '4'.
    *MODIFY it_mkpf.
    *ENDLOOP.
    ENDFORM.                    "populating_data
    *                    FORM MOVE_DATA.                             *
    FORM move_data.
      CLEAR   t_final.
      REFRESH t_final.
      SORT : t_vbrp  BY vbeln,
             t_vbrk  BY vbeln,
             t_mara  BY matnr,
             t_likp  BY vbeln,
             t_ekko  BY ebeln,
             t_t023t BY matkl,
             t_konv BY knumv,
             t_mvke BY matnr,
             t_t001w BY werks,
             t_t001w2 BY kunnr,
             t_tvm1t BY mvgr1,
             t_j_1iexchdr BY rdoc,
             t_j_1imtchid  BY matnr,
              t_j_1iexchdr BY rdoc werks,
           "   it_mkpf by mblnr,
              it_mseg BY mblnr,
              it_mkpf BY mblnr,
              it_vbuk BY vbeln.
      CLEAR   t_vbrp.
      LOOP AT t_vbrp.
        t_final-vstel = t_vbrp-vstel.
        t_final-vgbel = t_vbrp-vgbel.
        t_final-aubel = t_vbrp-aubel.
        t_final-matnr = t_vbrp-matnr.
        t_final-arktx = t_vbrp-arktx.
        t_final-matkl = t_vbrp-matkl.
        t_final-fkimg = t_vbrp-fkimg.
        t_final-posnr = t_vbrp-posnr.
        t_final-vrkme = t_vbrp-vrkme.
        " t_vbrp-vgbel1 = t_vbrp-vgbel.
        READ TABLE it_vbuk WITH KEY vbeln = t_vbrp-vgbel BINARY SEARCH.
        IF sy-subrc = 0.
          t_final-flag = it_vbuk-wbstk.
        ENDIF.
        CLEAR t_vbrk.
        READ TABLE t_vbrk WITH KEY vbeln = t_vbrp-vbeln
                                   BINARY SEARCH.
        IF sy-subrc = 0.
          t_final-kunag   = t_vbrk-kunag.
          t_final-vbeln_k = t_vbrk-vbeln.
          t_final-fkdat   = t_vbrk-fkdat.
          t_final-fkart  = t_vbrk-fkart.
          t_final-knumv =   t_vbrk-knumv.
        ENDIF.
        CLEAR t_mara.
        READ TABLE t_mara WITH KEY matnr = t_vbrp-matnr BINARY SEARCH.
        IF sy-subrc = 0.
          t_final-mtart = t_mara-mtart.
          t_final-wrkst = t_mara-wrkst.
          t_final-extwg = t_mara-extwg.
          t_final-labor = t_mara-labor.
          t_final-normt = t_mara-normt.
          t_final-bismt = t_mara-bismt.
          t_final-spart = t_mara-spart.
          t_final-meins = t_mara-meins.
          SPLIT t_final-bismt AT '*' INTO t_final-length t_final-breath.
          IF t_final-bismt = ''.
            t_final-size = ''.
          ELSE.
            t_final-size = t_vbrp-fkimg *  ( t_final-length * t_final-breath ) / 1000000.
          ENDIF.
        ENDIF.
        CLEAR t_konv.
        READ TABLE t_konv WITH KEY knumv = t_vbrk-knumv BINARY SEARCH.
        IF sy-subrc = 0.
          t_final-kschl = t_konv-kschl.
        ENDIF.
        CLEAR t_likp.
        READ TABLE t_likp WITH KEY vbeln = t_vbrp-vgbel BINARY SEARCH.
        IF sy-subrc = 0.
          t_final-lfdat = t_likp-lfdat.
          t_final-bldat = t_likp-bldat. " NEW CHANGE
          t_final-vbeln_kp = t_likp-vbeln.
        ENDIF.
        CLEAR t_ekko.
        READ TABLE t_ekko WITH KEY ebeln = t_vbrp-aubel BINARY SEARCH.
        IF sy-subrc = 0.
          t_final-aedat = t_ekko-aedat.
        ENDIF.
        CLEAR t_t023t.
        READ TABLE t_t023t WITH KEY matkl = t_vbrp-matkl BINARY SEARCH.
        IF sy-subrc = 0.
          t_final-wgbez = t_t023t-wgbez.
        ENDIF.
        CLEAR t_t001w.
        READ TABLE t_t001w WITH KEY werks = t_vbrp-werks BINARY SEARCH.
        IF sy-subrc = 0.
          t_final-name1 = t_t001w-name1.
        ENDIF.
        CLEAR t_t001w2.
        READ TABLE t_t001w2 WITH KEY kunnr = t_vbrk-kunag BINARY SEARCH.
        IF sy-subrc = 0.
          t_final-name21 = t_t001w2-name2.
        ENDIF.
        READ TABLE t_mvke WITH KEY matnr = t_vbrp-matnr BINARY SEARCH.
        IF sy-subrc = 0.
          t_final-mvgr1 = t_mvke-mvgr1.
        ENDIF.
        READ TABLE t_tvm1t WITH KEY mvgr1 = t_mvke-mvgr1 BINARY SEARCH.
        IF sy-subrc = 0.
          t_final-bezie = t_tvm1t-bezie.
        ENDIF.
    **********************modification additioon of chapter ID  30.04.2007
        READ TABLE t_j_1imtchid WITH KEY matnr = t_vbrp-matnr BINARY SEARCH.
        IF sy-subrc = 0.
          t_final-j_1ichid = t_j_1imtchid-j_1ichid.
        ENDIF.
        READ TABLE t_j_1iexchdr WITH KEY rdoc = t_vbrp-vbeln
                                         werks = t_vbrp-werks
                                         BINARY SEARCH.
        IF sy-subrc = 0.
          t_final-exnum = t_j_1iexchdr-exnum.
          t_final-exdat = t_j_1iexchdr-exdat.
          t_final-rdoc  = t_j_1iexchdr-rdoc.
          t_final-werks = t_j_1iexchdr-werks.
        ENDIF.
    **************end of modification additioon of chapter ID  30.04.2007
        "******** START OF MODIFICATION KALIKA 26.07.2007.
        READ TABLE it_mseg INTO wa_mseg WITH KEY ebeln  = t_vbrp-aubel.
        IF sy-subrc = 0.
          t_final-mblnr = wa_mseg-mblnr.
        ENDIF.
        "INTO wa_mkpf
        READ TABLE it_mkpf WITH KEY mblnr  = t_final-mblnr
                                    tcode2 = 'MIGO_GR'.
        IF sy-subrc = 0.
          t_final-budat = it_mkpf-budat.
        ENDIF.
        APPEND t_final.
        CLEAR t_final.
      ENDLOOP.
      DELETE t_final[]   WHERE flag = 'A' OR flag = ''. "change by amit for reverse deliveries as rkp.
      DELETE t_final     WHERE fkdat = ' ' .
      DELETE t_final[]   WHERE kunag NOT IN recv_pnt.
      DELETE t_final[]   WHERE vstel NOT IN supp_pnt.
      DELETE t_final[]   WHERE fkart = 'JEX' AND exnum = ' '. " CHANGE BY KALIKA
      " FOR INVOICE WHOSE EXCISE NOT MAINTAINED
      IF t_final[] IS INITIAL.
        MESSAGE i002(zamit).
        LEAVE LIST-PROCESSING.
      ENDIF.
    *---------------MARM CALCULATION
      SORT t_marm BY matnr meinh.
      DELETE t_marm WHERE meinh = 'M2'.
      SORT t_marm BY matnr.
      LOOP AT t_final.
        READ TABLE t_marm WITH KEY matnr = t_final-matnr." T_MARM-MEINH <> 'M2'.
        t_final-bom = ( t_marm-umrez / t_marm-umren ).
        MODIFY t_final TRANSPORTING bom.
        t_final-mult = t_final-bom * t_final-fkimg.
        MODIFY t_final TRANSPORTING mult.
        CLEAR t_final.
      ENDLOOP.
    *--------------------delivery no.
    *-------------------beginning of adding na*******
      LOOP AT t_final.
        " *** change by kalika
        IF t_final-matkl EQ  'BWGRBBD'
      OR t_final-matkl = 'BWGRBPD'
      OR t_final-matkl = 'BWGRCLB'
      OR t_final-matkl = 'BWGRCMD'
      OR t_final-matkl = 'BWGRGFB'
      OR t_final-matkl = 'BWGRGFC'
      OR t_final-matkl = 'BWGRGFO'
      OR t_final-matkl = 'GRNLAM'
      OR t_final-matkl = 'DVNRTKBB'
      OR t_final-matkl = 'MRETBBD'
      OR t_final-matkl = 'MRGRBBD'
      OR t_final-matkl = 'MRGRCMD'
      OR t_final-matkl = 'MRRBBD'
      OR t_final-matkl = 'PLAMGBSD'
      OR t_final-matkl = 'BWETBBD'
      OR t_final-matkl = 'PLAMGOSD'.
    *  "LOOP AT t_final WHERE matkl = 'BWGRBBD'
    *OR matkl = 'BWGRBPD'
    *OR matkl = 'BWGRCLB'
    *OR matkl = 'BWGRCMD'
    *OR matkl = 'BWGRGFB'
    *OR matkl = 'BWGRGFC'
    *OR matkl = 'BWGRGFO'
    *OR matkl = 'GRNLAM'
    *OR matkl = 'DVNRTKBB'
    *OR matkl = 'MRETBBD'
    *OR matkl = 'MRGRBBD'
    *OR matkl = 'MRGRCMD'
    *OR matkl = 'MRRBBD'
    *OR matkl = 'PLAMGBSD'
    *OR matkl = 'BWETBBD'
    *OR matkl = 'PLAMGOSD'.
    *** change by kalika
          t_final-area =  ( t_final-size *  15 ) / 10 .
          MODIFY t_final TRANSPORTING area.
        ELSE.
          t_final-area = ( t_final-normt * t_final-size ) / 4.   "t_final-bom
          MODIFY t_final TRANSPORTING area.
        ENDIF.
      ENDLOOP.
      "*** change by kalika
      " ** start Division Specific FA & NA to be displayed by kalika
      LOOP AT t_final.
        IF t_final-spart = 'LM' .
          t_final-area = space.
        ENDIF.
        IF t_final-spart  = 'DD'.
          t_final-area = space.
        ENDIF.
        MODIFY t_final.
      ENDLOOP.
    * " ** end Division Specific FA & NA to be displayed by kalika
    *  LOOP AT t_final WHERE matkl = 'BWETPLY'
    *  OR matkl = 'BWGRCHQ'
    * OR matkl = 'BWGRCLP'
    * OR matkl = 'BWGRCMG'
    * OR matkl = 'BWGRFLX'
    * OR matkl = 'BWGRFRP'
    * OR matkl = 'BWGRGCP'
    * OR matkl = 'BWGRPCT'
    * OR matkl = 'BWGRPLY'
    * OR matkl = 'BWGRSHT'
    * OR matkl = 'MRGRPLY'
    * OR matkl = 'MRTPLY'.
    *    t_final-area = ( t_final-normt * t_final-bom ) / 4.
    *    MODIFY t_final.
    *  ENDLOOP.
    *-------------------ending of adding na**********
    ENDFORM.                                            " move_data.
    *                    data_fetching                            *
    FORM data_fetching.
    *------ASSESSIBLE VALUE
      SORT t_final BY knumv.
      SORT t_konv BY knumv kposn.
      CLEAR t_final.
      CLEAR t_konv.
      LOOP AT t_konv.
        IF t_konv-kschl = 'ZR02'.
          READ TABLE t_final WITH KEY knumv = t_konv-knumv posnr = t_konv-kposn.
          t_final-kwert1 = t_konv-kwert.
          t_final-kbetr = t_konv-kbetr.
          IF sy-tabix <> 0.
            MODIFY t_final  INDEX sy-tabix TRANSPORTING kwert1 kbetr.
            CLEAR t_final.
            CLEAR t_konv.
          ENDIF.
        ENDIF.
    *-----EXICESE
        IF t_konv-kschl = 'JEXP'.
          READ TABLE t_final WITH KEY knumv = t_konv-knumv posnr = t_konv-kposn.
          t_final-kwert2 = t_konv-kwert.
          IF sy-tabix <> 0.
            MODIFY t_final  INDEX sy-tabix TRANSPORTING kwert2.
            CLEAR t_final.
            CLEAR t_konv.
          ENDIF.
        ENDIF.
    *-------CESS
        IF t_konv-kschl = 'JECS'.
          READ TABLE t_final WITH KEY knumv = t_konv-knumv posnr = t_konv-kposn.
          t_final-kwert3 = t_konv-kwert.
          IF sy-tabix <> 0.
            MODIFY t_final  INDEX sy-tabix TRANSPORTING kwert3.
            CLEAR t_final.
            CLEAR t_konv.
          ENDIF.
        ENDIF.
    *-----ROUNDING
        IF t_konv-kschl = 'DIFF'.
          READ TABLE t_final WITH KEY knumv = t_konv-knumv posnr = t_konv-kposn.
          t_final-kwert4 = t_konv-kwert.
          IF sy-tabix <> 0.
            MODIFY t_final  INDEX sy-tabix TRANSPORTING kwert4.
            CLEAR t_final.
            CLEAR t_konv.
          ENDIF.
        ENDIF.
      ENDLOOP.
    ****************TOTAL OF ALL VALUES
      LOOP AT t_final.
        t_final-total = t_final-kwert1 + t_final-kwert2 + t_final-kwert3 + t_final-kwert4.
        MODIFY t_final INDEX sy-tabix TRANSPORTING total .
        CLEAR t_final.
      ENDLOOP.
    *--------------delivery calculation.
      " start change by kalika
      DELETE t_final WHERE total = ' '. " BY KALIKA
      " end change by kalika
      LOOP AT t_final.
        t_temp-vbeln_k = t_final-vbeln_k.
        t_temp-vgbel = t_final-vgbel.
        t_temp-fkart = t_final-fkart.
        t_temp-kunag = t_final-kunag.
        APPEND t_temp.
        CLEAR t_temp.
      ENDLOOP.
      SORT t_temp DESCENDING BY vbeln_k  .
      SORT t_temp BY vgbel.
      LOOP AT t_final.
        READ TABLE t_temp WITH KEY vgbel = t_final-vgbel.
        t_final-vbeln_k = t_temp-vbeln_k.
    *---change by amit for validating migi date by amit
        if t_final-budat = 0.
          t_final-mblnr = ''.
          endif.
    *---change by amit for validating migi date by amit
        MODIFY t_final TRANSPORTING vbeln_k  mblnr.
        CLEAR t_final.
      ENDLOOP.
      " start KALIKA 30.06.2007.
      "SORT t_final STABLE DESCENDING by  fkart fkdat. "plz kalika do not forbid stable even it doent any effect this case but in future when large amount of data in production it will works.
      SORT t_final STABLE ASCENDING BY  fkart fkdat. "plz kalika do not forbid stable even it doent any effect this case but in future when large amount of data in production it will works.
      DATA: l_tabix TYPE sy-tabix.           " declare the sy-tabix as local variable
      DATA: l_lines TYPE sy-tabix.
      DATA: l_index TYPE sy-tabix.
      DESCRIBE TABLE t_final LINES  l_lines .       "The current number of table rows of the internal table itab is determined and is assigned to the data object lin
      CHECK l_lines > 1.                               " check lines are greater than 1
      LOOP AT t_final WHERE fkart = 'F8'.
        l_tabix = sy-tabix.                              " assine Index of Internal Tables into local var l_tabix
        l_index = l_tabix + 1.
        READ TABLE t_final INTO wa_sfinal1 INDEX l_index.  " read the temp table with index l_index
        IF sy-subrc = 0.
          CHECK t_final-vgbel = wa_sfinal1-vgbel AND t_final-knumv NE wa_sfinal1-knumv.
          IF sy-subrc =  0.
            t_final-w_flag = 'X'.
            MODIFY t_final TRANSPORTING w_flag.
          ENDIF.
        ENDIF.
      ENDLOOP.
      "DELETE ADJACENT DUPLICATES FROM t_final[] COMPARING fkart
      DELETE t_final[] WHERE w_flag = 'X'.
      " end KALIKA 30.06.2007.
    *--change by amit for performa invoice deletion
      DELETE t_final[] WHERE aedat = 0.
    ENDFORM.                                                  " sub_CAL
    *                       FORM ALV GET DATA FOR NOTIONAL AREA      *
    FORM alv_get_data .
      CLEAR it_fieldcat.
    ***************** SUPPLYING PLANT
    *  wa_fieldcat-col_pos    = '1'.                    " ALV O/P COL-1
      wa_fieldcat-fieldname  = 'VSTEL'.
      wa_fieldcat-seltext_m  = 'SUPPLYING PLANT'.
      wa_fieldcat-just       = 'L'.
      wa_fieldcat-no_zero(1) = 'X'.
      wa_fieldcat-outputlen  = 15.
      wa_fieldcat-tabname    = 'T_FINAL'.
      APPEND wa_fieldcat TO it_fieldcat.
      CLEAR wa_fieldcat.
    ***************** SUPPLYING PLANT
    *  wa_fieldcat-col_pos    = '2'.                    " ALV O/P COL-1
      wa_fieldcat-fieldname  = 'NAME1'.
      wa_fieldcat-seltext_m  = 'SUPP PLANT DESCRTN'.
      wa_fieldcat-just       = 'L'.
      wa_fieldcat-no_zero(1) = 'X'.
      wa_fieldcat-outputlen  = 20.
      wa_fieldcat-tabname    = 'T_FINAL'.
      APPEND wa_fieldcat TO it_fieldcat.
      CLEAR wa_fieldcat.
    ******************** RECEIVING PLANT
    *  wa_fieldcat-col_pos    = '3'.                     " ALV O/P COL-2
      wa_fieldcat-fieldname  = 'KUNAG'.
      wa_fieldcat-seltext_m  = 'RECEIVING PLANT'.
      wa_fieldcat-just       = 'L'.
      wa_fieldcat-tabname    = 'T_FINAL'.
      wa_fieldcat-outputlen  = 15.
      APPEND wa_fieldcat TO it_fieldcat.
      CLEAR wa_fieldcat.
    ******************** RECEIVING PLANT
    *  wa_fieldcat-col_pos    = '4'.                     " ALV O/P COL-2
      wa_fieldcat-fieldname  = 'NAME21'.
      wa_fieldcat-seltext_m  = 'RECE PLNT DESCRTN'.
      wa_fieldcat-just       = 'L'.
      wa_fieldcat-tabname    = 'T_FINAL'.
      wa_fieldcat-outputlen  = 15.
      APPEND wa_fieldcat TO it_fieldcat.
      CLEAR wa_fieldcat.
    ***************** BILL NUMBER
    *  wa_fieldcat-col_pos    = '5'.                     " ALV O/P COL-3
      wa_fieldcat-fieldname  = 'VBELN_K'.
      wa_fieldcat-seltext_m  = 'BILL NUMBER'.
      wa_fieldcat-just       = 'L'.
      wa_fieldcat-tabname    = 'T_FINAL'.
      wa_fieldcat-outputlen  = 15.
      APPEND wa_fieldcat TO it_fieldcat.
      CLEAR wa_fieldcat.
    *******************BILL DATE
    *  wa_fieldcat-col_pos    = '6'.                     " ALV O/P COL-4
      wa_fieldcat-fieldname  = 'FKDAT'.
      wa_fieldcat-seltext_m  = 'BILL DATE'.
      wa_fieldcat-just       = 'L'.
      wa_fieldcat-tabname    = 'T_FINAL'.
      wa_fieldcat-outputlen  = 15.
      APPEND wa_fieldcat TO it_fieldcat.
      CLEAR wa_fieldcat.
    *********** OUT BOUND DELIVERY NO
    *  wa_fieldcat-col_pos    = '7'.                     " ALV O/P COL-5
      wa_fieldcat-fieldname  = 'VGBEL'.
      wa_fieldcat-seltext_m  = 'OUT BOUND DELIVERY NO'.
      wa_fieldcat-just       = 'L'.
    * wa_fieldcat-no_zero(1) = 'X'.
      wa_fieldcat-tabname    = 'T_FINAL'.
      APPEND wa_fieldcat TO it_fieldcat.
      CLEAR wa_fieldcat.
    *********** OUT BOUND DELIVERY DATE
    **  wa_fieldcat-col_pos    = '8'.                     " ALV O/P COL-6
    *  wa_fieldcat-fieldname  = 'LFDAT'.
    *  wa_fieldcat-seltext_m  = 'OUT BOUND DELIVERY DATE'.
    *  wa_fieldcat-just       = 'L'.
    *  wa_fieldcat-tabname    = 'T_FINAL'.
    *  wa_fieldcat-outputlen  = 15.
    *  APPEND wa_fieldcat TO it_fieldcat.
    *  CLEAR wa_fieldcat.
      " *  wa_fieldcat-col_pos    = '8'.                     " ALV O/P COL-6
      wa_fieldcat-fieldname  = 'BLDAT'.
      wa_fieldcat-seltext_m  = 'DELIVERY DOC DATE'.  " NEW CHANGE
      wa_fieldcat-just       = 'L'.
      wa_fieldcat-tabname    = 'T_FINAL'.
      wa_fieldcat-outputlen  = 15.
      APPEND wa_fieldcat TO it_fieldcat.
      CLEAR wa_fieldcat.
    ************* S.T.O. NO.
    *  wa_fieldcat-col_pos    = '9'.                     " ALV O/P COL-6
      wa_fieldcat-fieldname  = 'AUBEL'.
      wa_fieldcat-seltext_m  = 'S.T.O. NO.'.
      wa_fieldcat-just       = 'L'.
      wa_fieldcat-tabname    = 'T_FINAL'.
      wa_fieldcat-outputlen  = 15.
      APPEND wa_fieldcat TO it_fieldcat.
      CLEAR wa_fieldcat.
    *********** S.T.O. DATE
    *  wa_fieldcat-col_pos    = '10'.                     " ALV O/P COL-6
      wa_fieldcat-fieldname  = 'AEDAT'.
      wa_fieldcat-seltext_m  = 'S.T.O. DATE'.
      wa_fieldcat-just       = 'L'.
      wa_fieldcat-tabname    = 'T_FINAL'.
      wa_fieldcat-outputlen  = 15.
      APPEND wa_fieldcat TO it_fieldcat.
      CLEAR wa_fieldcat.
    ************ DIVISION
    *  wa_fieldcat-col_pos    = '11'.                     " ALV O/P COL-7
      wa_fieldcat-fieldname  = 'SPART'.
      wa_fieldcat-seltext_m  = 'DIVISION'.
      wa_fieldcat-just       = 'L'.
      wa_fieldcat-tabname    = 'T_FINAL'.
      wa_fieldcat-outputlen  = 15.
      APPEND wa_fieldcat TO it_fieldcat.
      CLEAR wa_fieldcat.
    ********** MATERIAL CODE
    *  wa_fieldcat-col_pos    = '12'.                     " ALV O/P COL-9
      wa_fieldcat-fieldname  = 'MATNR'.
      wa_fieldcat-seltext_m  = 'MATERIAL CODE'.
      wa_fieldcat-just       = 'L'.
      wa_fieldcat-no_zero(1) = 'X'.
      wa_fieldcat-tabname    = 'T_FINAL'.
      wa_fieldcat-outputlen  = 20.
      APPEND wa_fieldcat TO it_fieldcat.
      CLEAR wa_fieldcat.
    ************ DESCRIPTION
    *  wa_fieldcat-col_pos    = '13'.                     " ALV O/P COL-10
      wa_fieldcat-fieldname  = 'ARKTX'.
      wa_fieldcat-seltext_m  = 'DESCRIPTION'.
      wa_fieldcat-just       = 'R'.
      wa_fieldcat-no_zero(1) = 'X'.
      wa_fieldcat-tabname    = 'T_FINAL'.
      wa_fieldcat-outputlen  = 15.
      APPEND wa_fieldcat TO it_fieldcat.
      CLEAR wa_fieldcat.
    **************MATERIAL TYPE
    *  wa_fieldcat-col_pos    = '14'.                     " ALV O/P COL-11
      wa_fieldcat-fieldname  = 'MTART'.
      wa_fieldcat-seltext_m  = 'MATERIAL TYPE'.
      wa_fieldcat-just       = 'R'.
      wa_fieldcat-tabname    = 'T_FINAL'.
      wa_fieldcat-outputlen  = 15.
      APPEND wa_fieldcat TO it_fieldcat.
      CLEAR wa_fieldcat.
    ************MATERIAL GROUP
    *  wa_fieldcat-col_pos    = '15'.                     " ALV O/P COL-13
      wa_fieldcat-fieldname  = 'MATKL'.
      wa_fieldcat-seltext_m  = 'MATERIAL GROUP'.
      wa_fieldcat-just       = 'R'.
      wa_fieldcat-no_zero(1) = 'X'.
      wa_fieldcat-tabname    = 'T_FINAL'.
      wa_fieldcat-outputlen  = 15.
      APPEND wa_fieldcat TO it_fieldcat.
      CLEAR wa_fieldcat.
    *******************modification additioon of chapter ID  30.04.2007
    ******************chapterID
    *  wa_fieldcat-col_pos    = '32'.                  " ALV O/P COL-27'.
      wa_fieldcat-fieldname  = 'J_1ICHID'.
      wa_fieldcat-seltext_m  = 'CHAPTER-ID'.
      wa_fieldcat-just       = 'R'.
      wa_fieldcat-tabname    = 'T_FINAL'.
      wa_fieldcat-no_zero(1) = 'X'.
      wa_fieldcat-outputlen  = 15.
      APPEND wa_fieldcat TO it_fieldcat.
      CLEAR wa_fieldcat.
    *  wa_fieldcat-col_pos    = '33'.                  " ALV O/P COL-27'.
      wa_fieldcat-fieldname  = 'EXNUM'.
      wa_fieldcat-seltext_m  = 'EXCISE DOC.NO.'.
      wa_fieldcat-just       = 'R'.
      wa_fieldcat-tabname    = 'T_FINAL'.
      wa_fieldcat-no_zero(1) = 'X'.
      wa_fieldcat-outputlen  = 15.
      APPEND wa_fieldcat TO it_fieldcat.
      CLEAR wa_fieldcat.
    *  wa_fieldcat-col_pos    = '34'.                  " ALV O/P COL-27'.
      wa_fieldcat-fieldname  = 'EXDAT'.
      wa_fieldcat-seltext_m  = 'EXCISE DOC.DATE'.
      wa_fieldcat-just       = 'R'.
      wa_fieldcat-tabname    = 'T_FINAL'.
      wa_fieldcat-no_zero(1) = 'X'.
      wa_fieldcat-outputlen  = 15.
      APPEND wa_fieldcat TO it_fieldcat.
      CLEAR wa_fieldcat.
    ***************end of modification additioon of chapter ID  30.04.2007
    *********SUB GROUP
    *  wa_fieldcat-col_pos    = '16'.                     " ALV O/P COL-13
      wa_fieldcat-fieldname  = 'MVGR1'.
      wa_fieldcat-seltext_m  = 'SUB GROUP'.
      wa_fieldcat-just       = 'R'.
      wa_fieldcat-no_zero(1) = 'X'.
      wa_fieldcat-tabname    = 'T_FINAL'.
      wa_fieldcat-outputlen  = 15.
      APPEND wa_fieldcat TO it_fieldcat.
      CLEAR wa_fieldcat.
    *  wa_fieldcat-col_pos    = '16'.                     " ALV O/P COL-13
      wa_fieldcat-fieldname  = 'BEZIE'.
      wa_fieldcat-seltext_m  = 'SUB GROUP DISCRP'.
      wa_fieldcat-just       = 'R'.
      wa_fieldcat-no_zero(1) = 'X'.
      wa_fieldcat-tabname    = 'T_FINAL'.
      wa_fieldcat-outputlen  = 15.
      APPEND wa_fieldcat TO it_fieldcat.
      CLEAR wa_fieldcat.
    ***************GROUP DISCRIPTION
    *  wa_fieldcat-col_pos    = '17'.                     " ALV O/P COL-14
      wa_fieldcat-fieldname  = 'WGBEZ'.
      wa_fieldcat-seltext_m  = 'GROUP DISCRIPTION'.
      wa_fieldcat-tabname    = 'T_FINAL'.
      wa_fieldcat-just       = 'R'.
      wa_fieldcat-no_zero(1) = 'X'.
      wa_fieldcat-outputlen  = 15.
      APPEND wa_fieldcat TO it_fieldcat.
      CLEAR wa_fieldcat.
    *****************FINISH
    *  wa_fieldcat-col_pos    = '18'.                     " ALV O/P COL-15
      wa_fieldcat-fieldname  = 'WRKST'.
      wa_fieldcat-seltext_m  = 'FINISH'.
      wa_fieldcat-tabname    = 'T_FINAL'.
      wa_fieldcat-just       = 'R'.
      wa_fieldcat-no_zero(1) = 'X'.
      wa_fieldcat-outputlen  = 15.
      APPEND wa_fieldcat TO it_fieldcat.
      CLEAR wa_fieldcat.
    *****************sale u o m
    *  wa_fieldcat-col_pos    = '19'.                     " ALV O/P COL-15
      wa_fieldcat-fieldname  = 'VRKME'.
      wa_fieldcat-seltext_m  = 'SALE U O M'.
      wa_fieldcat-tabname    = 'T_FINAL'.
      wa_fieldcat-just       = 'R'.
      wa_fieldcat-no_zero(1) = 'X'.
      wa_fieldcat-outputlen  = 15.
      APPEND wa_fieldcat TO it_fieldcat.
      CLEAR wa_fieldcat.
    *****************BASE u o m
    *  wa_fieldcat-col_pos    = '19'.                     " ALV O/P COL-15
      wa_fieldcat-fieldname  = 'MEINS'.
      wa_fieldcat-seltext_m  = 'BASE U O M'.
      wa_fieldcat-tabname    = 'T_FINAL'.
      wa_fieldcat-just       = 'R'.
      wa_fieldcat-no_zero(1) = 'X'.
      wa_fieldcat-outputlen  = 15.
      APPEND wa_fieldcat TO it_fieldcat.
      CLEAR wa_fieldcat.
    **************DESIGN NO.
    *  wa_fieldcat-col_pos    = '20'.                     " ALV O/P COL-17
      wa_fieldcat-fieldname  = 'EXTWG'.
      wa_fieldcat-seltext_m  = 'DESIGN NO.'.
      wa_fieldcat-tabname    = 'T_FINAL'.
      wa_fieldcat-just       = 'R'.
      wa_fieldcat-no_zero(1) = 'X'.
      wa_fieldcat-outputlen  = 15.
      APPEND wa_fieldcat TO it_fieldcat.
      CLEAR wa_fieldcat.
    *****************CATEGORY
    *  wa_fieldcat-col_pos    = '21'.                     " ALV O/P COL-18
      wa_fieldcat-fieldname  = 'LABOR'.
      wa_fieldcat-seltext_m  = 'CATEGORY'.
      wa_fieldcat-tabname    = 'T_FINAL'.
      wa_fieldcat-just       = 'R'.
      wa_fieldcat-no_zero(1) = 'X'.
      wa_fieldcat-outputlen  = 15.
      APPEND wa_fieldcat TO it_fieldcat.
      CLEAR wa_fieldcat.
    **************THICKNESS
    *  wa_fieldcat-col_pos    = '22'.                     " ALV O/P COL-19.
      wa_fieldcat-fieldname  = 'NORMT'.
      wa_fieldcat-seltext_m  = 'THICKNESS'.
      wa_fieldcat-just       = 'R'.
      wa_fieldcat-tabname    = 'T_FINAL'.
      wa_fieldcat-no_zero(1) = 'X'.
      wa_fieldcat-outputlen  = 15.
      APPEND wa_fieldcat TO it_fieldcat.
      CLEAR wa_fieldcat.
    **************SIZE
    *  wa_fieldcat-col_pos    = '23'.                      " ALV O/P COL-20.
      wa_fieldcat-fieldname  = 'BISMT'.
      wa_fieldcat-seltext_m  = 'SIZE'.
      wa_fieldcat-just       = 'R'.
      wa_fieldcat-tabname    = 'T_FINAL'.
      wa_fieldcat-no_zero(1) = 'X'.
      wa_fieldcat-outputlen  = 15.
      APPEND wa_fieldcat TO it_fieldcat.
      CLEAR wa_fieldcat.
    ****************BILLED QTY
    *  wa_fieldcat-col_pos    = '24'.                    " ALV O/P COL-21.
      wa_fieldcat-fieldname  = 'FKIMG'.
      wa_fieldcat-seltext_m  = 'BILLED QTY'.
      wa_fieldcat-just       = 'R'.
      wa_fieldcat-tabname    = 'T_FINAL'.
      wa_fieldcat-no_zero(1) = 'X'.
      wa_fieldcat-outputlen  = 15.
      APPEND wa_fieldcat TO it_fieldcat.
      CLEAR wa_fieldcat.
    **************RETE
    *  wa_fieldcat-col_pos    = '26'.                    " ALV O/P COL-21.
      wa_fieldcat-fieldname  = 'BOM'.
      wa_fieldcat-seltext_m  = 'CONVERSION RATE'.
      wa_fieldcat-just       = 'R'.
      wa_fieldcat-tabname    = 'T_FINAL'.
      wa_fieldcat-no_zero(1) = 'X'.
      wa_fieldcat-outputlen  = 15.
      APPEND wa_fieldcat TO it_fieldcat.
      CLEAR wa_fieldcat.
    ******************MULT
    *  wa_fieldcat-col_pos    = '32'.                  " ALV O/P COL-27'.
      wa_fieldcat-fieldname  = 'MULT'.
      wa_fieldcat-seltext_m  = 'BILLED QTY IN BUM'.
      wa_fieldcat-just       = 'R'.
      wa_fieldcat-tabname    = 'T_FINAL'.
      wa_fieldcat-no_zero(1) = 'X'.
      wa_fieldcat-outputlen  = 15.
      APPEND wa_fieldcat TO it_fieldcat.
      CLEAR wa_fieldcat.
    **************RETE
    *  wa_fieldcat-col_pos    = '25'.                    " ALV O/P COL-21.
      wa_fieldcat-fieldname  = 'KBETR'.
      wa_fieldcat-seltext_m  = 'RATE / BASE UOM'.
      wa_fieldcat-just       = 'R'.
      wa_fieldcat-tabname    = 'T_FINAL'.
      wa_fieldcat-no_zero(1) = 'X'.
      wa_fieldcat-outputlen  = 15.
      APPEND wa_fieldcat TO it_fieldcat.
      CLEAR wa_fieldcat.
    **************ASSESSIBLE VALUE
    *  wa_fieldcat-col_pos     = '27'.                    " ALV O/P COL-22.
      wa_fieldcat-fieldname   = 'KWERT1'.
      wa_fieldcat-seltext_m   = 'ASSESSIBLE VALUE'.
      wa_fieldcat-tabname     = 'T_FINAL'.
      wa_fieldcat-just        = 'R'.
      wa_fieldcat-no_zero(1)  = 'X'.
      wa_fieldcat-outputlen   = 15.
      APPEND wa_fieldcat TO it_fieldcat.
      CLEAR wa_fieldcat.
    ****************EXCISE
    *  wa_fieldcat-col_pos    = '28'.                     " ALV O/P COL-23.
      wa_fieldcat-fieldname  = 'KWERT2'.
      wa_fieldcat-seltext_m  = 'EXCISE'.
      wa_fieldcat-tabname    = 'T_FINAL'.
      wa_fieldcat-just       = 'R'.
      wa_fieldcat-no_zero(1) = 'X'.
      wa_fieldcat-outputlen  = 15.
      APPEND wa_fieldcat TO it_fieldcat.
      CLEAR wa_fieldcat.
    *****************CESS
    *  wa_fieldcat-col_pos    = '29'.                      " ALV O/P COL-24.
      wa_fieldcat-fieldname  = 'KWERT3'.
      wa_fieldcat-seltext_m  = 'CESS'.
      wa_fieldcat-tabname    = 'T_FINAL'.
      wa_fieldcat-just       = 'R'.
      wa_fieldcat-no_zero(1) = 'X'.
      wa_fieldcat-outputlen  = 15.
      APPEND wa_fieldcat TO it_fieldcat.
      CLEAR wa_fieldcat.
    ******************ROUNDING
    *  wa_fieldcat-col_pos    = '30'.                    " ALV O/P COL-26.
      wa_fieldcat-fieldname  = 'KWERT4'.
      wa_fieldcat-seltext_m  = 'ROUNDING'.
      wa_fieldcat-just       = 'R'.
      wa_fieldcat-tabname    = 'T_FINAL'.
      wa_fieldcat-no_zero(1) = 'X'.
      wa_fieldcat-outputlen  = 15.
      APPEND wa_fieldcat TO it_fieldcat.
      CLEAR wa_fieldcat.
    ******************TOTAL
    *  wa_fieldcat-col_pos    = '31'.                  " ALV O/P COL-27'.
      wa_fieldcat-fieldname  = 'TOTAL'.
      wa_fieldcat-seltext_m  = 'TOTAL'.
      wa_fieldcat-just       = 'R'.
      wa_fieldcat-tabname    = 'T_FINAL'.
      wa_fieldcat-no_zero(1) = 'X'.
      wa_fieldcat-outputlen  = 15.
      APPEND wa_fieldcat TO it_fieldcat.
      CLEAR wa_fieldcat.
      wa_fieldcat-fieldname  = 'AREA'.
      wa_fieldcat-seltext_m  = 'NA'.
      wa_fieldcat-just       = 'R'.
      wa_fieldcat-tabname    = 'T_FINAL'.
      wa_fieldcat-no_zero(1) = 'X'.
      wa_fieldcat-outputlen  = 15.
      APPEND wa_fieldcat TO it_fieldcat.
      CLEAR wa_fieldcat.
      wa_fieldcat-fieldname  = 'MBLNR'.
      wa_fieldcat-seltext_m  = 'MIGO NO'.
      wa_fieldcat-just       = 'R'.
      wa_fieldcat-tabname    = 'T_FINAL'.
      wa_fieldcat-no_zero(1) = 'X'.
      wa_fieldcat-outputlen  = 15.
      APPEND wa_fieldcat TO it_fieldcat.
      CLEAR wa_fieldcat.
      wa_fieldcat-fieldname  = 'BUDAT'.
      wa_fieldcat-seltext_m  = 'MIGO DATE'.
      wa_fieldcat-just       = 'R'.
      wa_fieldcat-tabname    = 'T_FINAL'.
      wa_fieldcat-no_zero(1) = 'X'.
      wa_fieldcat-outputlen  = 15.
      APPEND wa_fieldcat TO it_fieldcat.
      CLEAR wa_fieldcat.
    ENDFORM.                                                       " ALV_GET_DATA
    *                            FORM ALV_GRID                                  *
    FORM alv_grid .
      PERFORM fill_list_header USING it_top_of_page[].
      PERFORM event-build USING gt_events[].
      PERFORM fill_layout USING ls_layout.
      CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
        EXPORTING
          i_callback_program = sy-repid
          is_layout          = ls_layout
          it_fieldcat        = it_fieldcat
          it_events          = gt_events[]
          i_save             = 'A'
        TABLES
          t_outtab    

Maybe you are looking for

  • Can someone help me with a batch processing problem

    I just got my first Mac and I just loaded Aperture and unfortunately a deadline is upon me. I am used to Photoshop but I'm lost here looking at Aperture. All I need to do right now is to pop in CDs full of photos and produce thumbnails of them to put

  • TextField on ios is above the displaylist

    I created form that uses several TextFields of "input" type and while those behave fine on Android on IOS, when I select textfield its "native" part shows up above the display list, so whenever i scroll my form under other parts of the application it

  • Canon Pro-100 Problem end of paper

    Can someone please help, This printer is Brand New only printed about 8-10 photo's . All of the sudden no matter what type of paper I use, luster, glossy, matt, I even tried cleaning the bottom plate and rollers using the Canon maintence program. It

  • Create or crop an .swf at runtime?

    hello, if i have a .swf with some graphics created on it (dynamic shapes, text...) and it's dimensions are, say 300x300, would it be possible to have an event which would "crop" it to say 100x100 based on coordinates entered? furthermore, would it be

  • How to update MainApplicationResources.properties file

    Post Author: fjaffery CA Forum: JAVA I am trying to update a key in the MainApplicationResources.properties file in Tomcat\webapps\businessobjects\enterprise115\desktoplaunch\WEB-INF\src\com\crystaldecisions\ePortfolio\framework\main\ folder.  After