Fastest algorithm to append a id to an ipaddress depending upon the net id

Hi Guys,
I wanted to know what will be the fastest algorithm to append a id to an ip address depending on the net id. I am using Java by the way. For example - Suppose I have a list of ids and corresponding net id i.e.
ID: 23 net ID: 10.44
ID:12 net ID: 10.56
ID:1 net ID: 10.70
ID: 78 net ID: 10.44.34.33
Now, if I receive a million records having different source IPs, what will be the fastest way to know to which ID it belongs. For example, say I receive a record having source IP 10.44.23.33 then I have to compare to all the net IDs and see what ID it will belong to; in this case, result need to be -> 23::10.44.23.33 because net ID:10.44 has ID 23. Suppose, I get a record having source IP 10.44.34.33 then result need to be -> 78::10.44.34.33. I hope, I am clear. Performance issue is if I have million records and list comprising say even 1000 ID and net ID entries then if I do say, compare the source IP to each entry of the list then searching will take O(n). Not sure though. I know, I can convert net ID to the range of IP addresses. Take ID:12 for example. The number of IP addresses that can belong to that network type will be from 10.56.0.0 to 10.56.255.255. Convert these numbers to long and convert the source IP also to long and see if it is between the range. But, this will take a long time even if I do binary search, am I right? Is there any way I can resolve the issue in a nifty way, say, using binary manipulation such as ORing or ANDing something. Would anyone please let me know? Thanks.
Waiting for your replies.
Edited by: wannabehacker on Jun 10, 2009 8:06 AM
Edited by: wannabehacker on Jun 10, 2009 8:07 AM

wannabehacker wrote:
Hi Jos,
Thanks for your reply. But, don't you think this might have performance issue in worst case scenario or even in not so worst case scenarios. Suppose, I have million records and half of them do not have corresponding ID and net ID's in the list. Then if the list has 1000 entries but nothing for the source IPs received, the map will be parsed 1/2 million X 1000 times X 4. Am I missing something.Yup, a HashMap can find a key in order O(1) which is a whole lot better than searching a list of 1000 elements. Your calculations reduce to 1,000,000 X 1 X 4 at worst for all your records.
kind regards,
Jos

Similar Messages

  • How to append contents to an existing file contents at the end of file?

    Hi all
    I am Kiran, working with LV8.0  FDS
    I find difficulty while trying to add new file contents(some messages)  to an existing file at the end /begining of a file.
    Whenever i try to do that,it is replacing the previous contents,but i dont need that. i want the contents to be appended.
    Plz suggest me.
    thanks & regards
           kiran

    Hi Kiran,
    yes, I can attach a screenshot
    (open file, set file position to end, write text, close file)
    Message Edited by GerdW on 08-16-2007 03:19 PM
    Best regards,
    GerdW
    CLAD, using 2009SP1 + LV2011SP1 + LV2014SP1 on WinXP+Win7+cRIO
    Kudos are welcome
    Attachments:
    append.png ‏2 KB

  • Append a file with date and name in the output file

    I am running a script which produce an output in excel file, I would like the server name and the date in the output file,  Both the servername and date has declared at the beginning of the script as 
    $server = test1
    $date = Get-Date -uformat %Y-%m-%d
    I am able to append either server or date but not both. Could you please help me out on this.
    I would like the output file as '
    server_report_date.xls

    I got this working by 
    "C:\Aravind\Scripts\$server-"+"Report-" +"$Date"+".xls"
    Thanks!!

  • Appended Field is not visible repectively listet in the DataSource

    Hi,
    I've ran into a problem which I'm unable to solve. Maybe you can give me a hint.
    I've appended a DataSource (0EC_PCA_3) in SAP R3 4.7 by using RSA6 clicking on the extract structure and using the append structure function.
    After that the appended field is listed (in a different color) in the extract structure.
    In the next step I've activated the extract structure.
    When I went back to RSA6 and took a look at the DataSource the new field isn't listet in the field list.
    At this point I don't know what went wrong. So please let me know if you got an idea to solve this issue.
    Regards
    Axel

    Hi Gaurav,
    thanks for your hint to deactivate and activate. Maybe it led us to the right track for the solution.
    I'm not able to reactivate my BADI-Implementation.
    When I search the internet according to the error message:
    Field "C_T_DATA" is unknown. It is neigther in one of the specific tables nor defined by a "DATA" statement.
    Every answer says that the implementation should be activated anyway, what works for the implementing class, but not for the implementation itself.
    I've done the implementation according to this manual:
    [url] http://www.sdn.sap.com/irj/scn/go/portal/prtroot/docs/library/uuid/3001894b-b1fb-2910-77ba-e80b6f2053b7?quicklink=index&overridelayout=true
    I don't know how to fix this error either. The source code I used is the same used in this manual (simple approach page 11) but with differnet table and fields.
    Edited by: Axel M. on Aug 19, 2011 3:34 PM

  • How to append text of one JTextPane to another JTextPaneacross the network.

    i am developing a chat software using client server architecture. i have a JTextPane on client end where the client types the message in multi colour,multi font and multi size formats. i can send the data to other clients but then i cannot send this formats in which the client wants to send the data. how should i achieve it. when i make the content type of the JTextPane then whatever client types it shows up properly but if i change the content type to text/html then what ever i try to type it just shows an <html> tag and doesn't show the text that the client types. i tried using the second content type with the idea of sending data to the server in html format so that when other clients JTextPane get it then it should display it that way. but it doesn't happen that way. ne suggestions?

    i am developing a chat software using client server architecture. i have a JTextPane on client end where the client types the message in multi colour,multi font and multi size formats. i can send the data to other clients but then i cannot send this formats in which the client wants to send the data. how should i achieve it. when i make the content type of the JTextPane then whatever client types it shows up properly but if i change the content type to text/html then what ever i try to type it just shows an <html> tag and doesn't show the text that the client types. i tried using the second content type with the idea of sending data to the server in html format so that when other clients JTextPane get it then it should display it that way. but it doesn't happen that way. ne suggestions?

  • How do I stop the browser from appending anything whatsoever to what I type into the location bar?

    I want a strict WYSIWYG location bar - no prefixes or suffixes, ie, do put http:// in front or www. or put anything after. Do not change or add anything to what I type. PERIOD.

    Dear Cor-el,
    I want a browser without training wheels .... please. If you are less than 45 years old, then I was programming computers before you were born --- in assembly language. What I want is to be able to supply an access protocol as and where needed as I see fit - i.e., I want FF to do is absolutely NOTHING.
    Think "command line" - if what I type is wrong then it FAILS ....and maybe I get a useful error message and maybe not. And this is not only OK but it useful and wanted by a technically proficient segment of FF's user base.
    Please pardon me, but if you are a logician or programmer or Buddist then you realize that the NULL set is an absolutely valid answer and that it might well be the very answer that I am looking for. If I execute a Boolean conjunctive query what I DO NOT WANT is a bunch of crap-ola served up to me by Google/Microsoft/whoever it is that feels absolutely compelled to return something and/or anything because I /might be a newbe-might be turned off -might not buy their product/ .

  • Algorithm comparison FLOPS

    Hi Everybody,
    Is there a method to compare two algorithms in Labview(v.7) when it comes to their floating point calculations or number of FLOPS?
    I am looking to compare two algorithm (roughly),  something like FLOPS command in Matlab if any. I know one way for performance comparison might be comparing their looped execution time. But any FLOPS alike command ?
    Thanks

    Hed wrote:
    FLOPS is just the number of floating point operations.
    The more common definition is "FLoating point Operations Per Second", comparing different hardware with the same algorithm.
    http://en.wikipedia.org/wiki/FLOPS
    (You seem to be using the plural definition of FLOP, which is not as common, comparing the number of operations needed to perform a certain task, irrespecitve of hardware).
    Both definitions are not really useful to compare two algorithms in LabVIEW. The only thing you should do is compare the timed performance between the two algorithms. Be aware that even the same algorithm can be implemented more or less efficient, depending on the skill and knowledge of the programmer. Make yourself a small bechmarking operation as a three-frame flat sequence. Make sure that nothing can run in parallel with the middle frame. Pure coding cosiderations such as "inplaceness" and avoidance of extra datacopes are crucial for very efficient code.
    Take a tick count in each edge frame and place your code in the middle. If it is a fast code, put it in a loop for a few million iterations. Take the difference in tick count and divide it by the number of iterations, convert to seconds, and display it in SI units e.g. 45u (=45microseconds) per loop.
    Watch out for constant folding. If your loop is folded into a constant, you might get false ultrafast readings. If you have LabVIEW 8.5, try the new inplace structure.
    If you are dealing with variable size arrays, measure the speed as a function of array size: Is the execution time linear with N, with NlogN, with N*N, etc. How is the memory use? Plot log(time) vs. log(size). What is the slope of the curve? Are there any breaks? (e.g. when you exceed the cache size or when you start swapping).
    If you are running on a multipurose OS (e.g. windows, mac, linux), there are many other things running at any given time, so the speed will have some variations. Some people are tempted to e.g. take the average, while the fastest speed is probably a better measure of true speed.
    You can norrow the variation by raising the priority of the subVI (careful!). If the computation is within a subVI, you should make sure that the front panel of the subVI is closed. Often, you gain speed by disabling debugging.
    If you have multiple CPUs/cores, watch the task manager? Are both being used? Code optimized for multicore might have a slight penalty on a single code system.
    LabVIEW RT has much tighter controls on execution and you can debug down to the clock tick using the execution trace toolkit(http://sine.ni.com/nips/cds/view/p/lang/en/nid/13746). I am not familiar with RT, though.
    Anyway, I am curious what kind of algorithms you are trying to test. Maybe it is of general interest. You could even start an informal "coding callenge" to tap into the collective wisdom of the forum members.
    For some ideas, here is a link to the coding challenge archive: http://zone.ni.com/devzone/cda/tut/p/id/5174
    LabVIEW Champion . Do more with less code and in less time .

  • SAP HANA One and Predictive Analysis Desktop - Time Series Algorithms

    I have been working on a Proof-of-Concept project linking the SAP Predictive Analysis Desktop application to the SAP HANA One environment.
    I have modeled that data using SAP HANA Studio -- created Analytic views, Hierarchies, etc. -- following the HANA Academy videos.  This has worked very well in order to perform the historical analysis and reporting through the Desktop Application. 
    However, I cannot get the Predictive Analysis algorithms -- specifically the Time Series algorithms -- to work appropriately using the Desktop tool. It always errors out and points to the IndexTrace for more information, but it is difficult to pinpoint the exact cause of the issue.  The HANA Academy only has videos on Time Series Algorithms using SQL statements which will not work for my user community since they will have to constantly tweak the data and algorithm configuration. 
    In my experience so far with Predictive Analysis desktop and the Predictive Algorithms, there is a drastic difference between working with Local .CSV / Excel files and connecting to a HANA instance.  The configuration options for using the Time Series Algorithms are different depending upon the data source, which seems to be causing the issue.  For instance, when working with a local file, the Triple Exponential Smoothing configuration allows for the specification of which Date field to use for the calculation.  Once the data source is switched to HANA, it no longer allows for the Date field to be specified.  Using the exact same data set, the Algorithm using the local file works but the HANA one fails. 
    From my research thus far, everyone seems to be using PA for local files or running the Predictive Algorithms directly in HANA using SQL.  I can not find much of anything useful related to combing PA Desktop to HANA. 
    Does anyone have any experience utilizing the Time Series Algorithms in PA Desktop with a HANA instance?   Is there any documentation of how to structure the data in HANA so that it can be properly utilized in PA desktop? 
    HANA Info:
    HANA One Version: Rev 52.1
    HANA Version: 1.00.66.382664
    Predictive Analysis Desktop Info:
    Version: 1.0.11
    Build: 708
    Thanks in advance --
    Brian

    Hi,
    If you use CSV or XLS data source you will be using Native Algorithm or R
    Algorithm in SAP Predictive Analysis.
    When you connect HANA, SAP Predictive Analysis uses PAL Algorithm which runs
    on HANA server.
    Coming to your question regarding difference,
    In SAP PA Native Algorithm, we could provide the Data variable, Algorithm
    picks the seasonal information from the Data column. Both R and SAP HANA PAL
    does not support Date Column. We need configure seasonal information in
    Algorithm properties.
    R Properties
    1) Period : you need to mention the periodicity of the Data
    Monthly : (12)
    Quarter : (4)
    Custom : you can use it for week or Daily or hourly.
    2) Start Year: need to mention Start year.
    Start year is not used by algorithm for calculating Time series, but it helps
    PA to generate Visualization ( Time series chart) by simulating year and
    periodicity information.
    3) Starting Period:
    if your data is Quarterly and you have data recordings from Q2, mention 2 in
    start period.
    Example.
    If the data periodicity is Monthy and my data starts from Feb 1979, we need to provide following information,
    Period: 12
    Start year: 1979
    start Period: 2
    PAL Properties. : Same as properties defined in R.
    Thanks
    Ashok
    [email protected]

  • 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

  • Missing or invalid version of SQL library PSORA (200,0)

    I am trying to configure App. Server on Vista laptop machine.
    The machine name is VRGhati03.
    It is a logical 3 tier archtecture. Its a EPM 9.0 Install. My database (PFDMO) is all configured and I am able to signon using a User ID VP1 and password VP1. My connect id is people with password of peop1e.
    My access id is SYSADM.
    I have created a user id in Oracle as VP1 and granted him the PSADMIN role .
    When I try to boot up the App. Server it tells me ' Missing or invalid version of SQL Library PSORA' and 'Could not sign on to database PFDMO with user VP1'
    The VP1 sign on works via SQLPLUS.
    I also created a User Account of VP1 and tried to boot the appserver under that id but still no success.
    I have gone thru some of the postings on this topic but they have not helped me. What am I doing wrong?
    Below are the details of the log files, portion of my psappserv.cng file and the system environment variables.
    Can somebody help. Thanks in advance
    Sudhir
    I) Log from APPSERV:
    PSADMIN.10000 (0) [08/05/09 09:19:24](0) Begin boot attempt on domain PFDMO
    PSWATCHSRV.2556 (0) [08/05/09 09:19:33] Checking process status every 120 seconds
    PSWATCHSRV.2556 (0) [08/05/09 09:19:33] Server started
    PSAPPSRV.5636 (0) [08/05/09 09:19:34](0) PeopleTools Release 8.49 (WinX86) starting
    PSAPPSRV.5636 (0) [08/05/09 09:19:34](0) Cache Directory being used: C:\PT8.49\appserv\PFDMO\CACHE\PSAPPSRV_2\
    PSAPPSRV.5636 (0) [08/05/09 09:19:34](1) GenMessageBox(200, 0, M): PS General SQL Routines: Missing or invalid version of SQL library PSORA (200,0)
    PSAPPSRV.5636 (0) [08/05/09 09:19:34](1) GenMessageBox(0, 0, M): Database Signon: Could not sign on to database PFDMO with user VP1.
    PSAPPSRV.5636 (0) [08/05/09 09:19:34](0) Server failed to start
    PSWATCHSRV.2556 (0) [08/05/09 09:19:35] Shutting down
    PSADMIN.10000 (0) [08/05/09 09:19:41](0) End boot attempt on domain PFDMO
    II) Log from TUXLOG:
    091924.VRGHATI03!PSADMIN.10000: Begin attempt on domain PFDMO
    091927.VRGHATI03!tmadmin.9844.8684.-2: TMADMIN_CAT:1330: INFO: Command: boot -A
    091929.VRGHATI03!tmboot.9720.8272.-2: 08-05-2009: Tuxedo Version 9.1, 32-bit
    091929.VRGHATI03!tmboot.9720.8272.-2: CMDTUX_CAT:1851: INFO: TM_BOOTTIMEOUT is set to 60 seconds
    091929.VRGHATI03!tmboot.9720.8272.-2: CMDTUX_CAT:1855: INFO: TM_BOOTPRESUMEDFAIL option is selected
    091931.VRGHATI03!BBL.8340.3320.0: 08-05-2009: Tuxedo Version 9.1, 32-bit, Patch Level 036
    091931.VRGHATI03!BBL.8340.3320.0: LIBTUX_CAT:262: INFO: Standard main starting
    091933.VRGHATI03!tmboot.9224.8412.-2: 08-05-2009: Tuxedo Version 9.1, 32-bit
    091933.VRGHATI03!tmboot.9224.8412.-2: CMDTUX_CAT:1851: INFO: TM_BOOTTIMEOUT is set to 60 seconds
    091933.VRGHATI03!tmboot.9224.8412.-2: CMDTUX_CAT:1855: INFO: TM_BOOTPRESUMEDFAIL option is selected
    091933.VRGHATI03!PSWATCHSRV.2556.9492.-2: 08-05-2009: Tuxedo Version 9.1, 32-bit
    091933.VRGHATI03!PSWATCHSRV.2556.9492.-2: LIBTUX_CAT:262: INFO: Standard main starting
    091934.VRGHATI03!PSAPPSRV.5636.9008.0: 08-05-2009: Tuxedo Version 9.1, 32-bit
    091934.VRGHATI03!PSAPPSRV.5636.9008.0: LIBTUX_CAT:262: INFO: Standard main starting
    091934.VRGHATI03!PSAPPSRV.5636.9008.0: LIBTUX_CAT:250: ERROR: tpsvrinit() failed
    091934.VRGHATI03!tmboot.9224.8412.-2: tmboot: CMDTUX_CAT:827: ERROR: Fatal error encountered; initiating user error handler
    091938.VRGHATI03!BBL.8340.3320.0: CMDTUX_CAT:26: INFO: The BBL is exiting system
    091941.VRGHATI03!PSADMIN.10000: End boot attempt on domain PFDMO
    III) System Environmental Variables:
    LIBPATH=c:\oracle\product\10.2.0\db_1\LIB
    ORACLE_SID=PFDMO
    OS=Windows_NT
    path=C:\oracle\product\10.2.0\db_1\bin;C:\product\10.1.3.1\OracleAS_1\jdk\bin;C:\product\10.1.3.1\OracleAS_1\ant\bin;C:\product\10.1.3.1\OracleAS_1\bin;%SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem;C:\Program Files (x86)\Common Files\Roxio Shared\DLLShared\;C:\Program Files (x86)\Common Files\Roxio Shared\10.0\DLLShared\;c:\Program Files (x86)\Microsoft SQL Server\90\Tools\binn\;C:\bea\Tuxedo9.1\bin
    TUXDIR=C:\bea\Tuxedo9.1
    IV) psappserv.cfg File:
    [Startup]
    ;=========================================================================
    ; Database Signon settings
    ;=========================================================================
    DBName=PFDMO
    DBType=ORACLE
    UserId=VP1
    UserPswd=tRWpMM0Cragi9I0nrWPAxZ+GS1YD0PRXzCrF4YWbe5E=
    ConnectId=people
    ConnectPswd=kyD3QPxnrag=
    ServerName=VRGhati03
    [Database Options]
    ;=========================================================================
    ; Database-specific configuration options
    ;=========================================================================
    SybasePacketSize=
    UseLocalOracleDB=0
    ;ORACLE_SID=
    EnableDBMonitoring=1
    OracleDisableFirstRowsHint=0
    [Security]
    ;=========================================================================
    ; Security settings
    ;=========================================================================
    Validate Signon with Database=0
    [Workstation Listener]
    ;=========================================================================
    ; Settings for Workstation Listener
    ;=========================================================================
    Address=%PS_MACH%
    Port=7000
    Encryption=0
    Min Handlers=1
    Max Handlers=3
    Max Clients per Handler=40
    Client Cleanup Timeout=60
    Init Timeout=5
    Tuxedo Compression Threshold=5000
    [JOLT Listener]
    ;=========================================================================
    ; Settings for JOLT Listener
    ;=========================================================================
    Address=%PS_MACH%
    Port=9000
    Encryption=0
    Min Handlers=5
    Max Handlers=7
    Max Clients per Handler=40
    Client Cleanup Timeout=10
    Init Timeout=5
    Client Connection Mode=ANY
    Jolt Compression Threshold=1000000
    [JOLT Relay Adapter]
    ;=========================================================================
    ; Settings for JOLT Relay Adapter (JRAD)
    ;=========================================================================
    Listener Address=%PS_MACH%
    Listener Port=9100
    [Domain Settings]
    ;=========================================================================
    ; General settings for this Application Server.
    ;=========================================================================
    Domain ID=PFDMO
    Add to PATH=c:\oracle\product\10.2.0\db_1\BIN
    Spawn Threshold=1,600:1,1
    Restartable=Y
    ;Log Directory=%PS_SERVDIR%\LOGS
    ; This allows for dynamic changes to certain setting without having to reboot
    ; the domain. The settings that can be dynamically changed are: Recycle Count,
    ; Consecutive Service failures, Trace SQL, Trace Mask SQL, TracePC, TracePCMask,
    ; TracePpr, TracePprMask, TracePIA, TracePIAMask, Log Fence, Enable DB Monitoring,
    ; Enable Debugging, LogErrorReport, MailErrorReport, DumpMemoryImageAtCrash
    ; These settings are further identified by the "Dynamic change allowed for .."
    ; comment.
    Allow Dynamic Changes=N
    ; Logging detail level
    ; Level Type of information
    ; -100 - Suppress logging
    ; -1 - Protocol, memory errors
    ; 0 - Status information
    ; 1 - General errors
    ; 2 - Warnings
    ; 3 - Tracing Level 1 (default)
    ; 4 - Tracing Level 2
    ; 5 - Tracing Level 3
    ; Dynamic change allowed for LogFence
    LogFence=3
    ; Trace-Log File Character Set: Character set used for log and trace files
    Trace-Log File Character Set=ANSI
    [PeopleCode Debugger]
    ;=========================================================================
    ; PeopleCode Debug Server settings
    ;=========================================================================
    PSDBGSRV Listener Port=9500
    ; PeopleCode Debugger Trace Settings
    ; Level Type of tracing
    ; 0 Off (default)
    ; 1 Level 1 - log connection activity
    ; 2 Level 2 - log debug broker transactions (getsession, register/unregister, acquire/unacquire)
    ; 3 Level 3 - log primary debuggee/debugger transactions (register, modechange, seteventflag, break)
    ; 4 Level 4 - log debuggee/debugger variables transactions
    ; 5 Level 5 - log debuggee/debugger command responses and gotbreaks
    ; Warning: Levels 3 thru 5 result in lots of transaction data being logger and require plenty of disk space.
    DebuggerMsgLogEnable=0
    [Trace]
    ;=========================================================================
    ; Server Trace settings
    ;=========================================================================
    ; SQL Tracing Bitfield
    ; Bit Type of tracing
    ; 1 - SQL statements
    ; 2 - SQL statement variables
    ; 4 - SQL connect, disconnect, commit and rollback
    ; 8 - Row Fetch (indicates that it occurred, not data)
    ; 16 - All other API calls except ssb
    ; 32 - Set Select Buffers (identifies the attributes of columns
    ; to be selected).
    ; 64 - Database API specific calls
    ; 128 - COBOL statement timings
    ; 256 - Sybase Bind information
    ; 512 - Sybase Fetch information
    ; 1024 - SQL Informational Trace
    ; 4096 - Manager information
    ; 8192 - Mapcore information
    ; Dynamic change allowed for TraceSql and TraceSqlMask
    TraceSql=0
    TraceSqlMask=12319
    ; PeopleCode Tracing Bitfield
    ; Bit Type of tracing
    ; 1 - Trace Evaluator instructions (not recommended)
    ; 2 - List Evaluator program (not recommended)
    ; 4 - Show assignments to variables
    ; 8 - Show fetched values
    ; 16 - Show stack
    ; 64 - Trace start of programs
    ; 128 - Trace external function calls
    ; 256 - Trace internal function calls
    ; 512 - Show parameter values
    ; 1024 - Show function return value
    ; 2048 - Trace each statement in program (recommended)
    ; Dynamic change allowed for TracePC and TracePCMask
    TracePC=0
    TracePCMask=4095
    ; Panel Processor Tracing Bitfield
    ; Bit Type of tracing
    ; 1 - Log extra debug messages
    ; 2 - Dump panel after build
    ; 4 - Dump buffers after PPRInit
    ; 8 - Dump buffers before/after service
    ; 16 - Dump buffers after scrollselect
    ; 32 - Dump buffers after modal panel
    ; 64 - Dump buffers before save
    ; 128 - Dump buffers after insertrow
    ; 256 - Trace default processing
    ; 512 - Dump PRM data
    ; 1024 - Show function return value
    ; 2048 - dump memory statistics
    ; 4096 - Trace related display processing
    ; 8192 - Trace keylist generation
    ; 16384 - Trace work record settings
    ; Dynamic change allowed for TracePPR and TracePPRMask
    TracePPR=0
    TracePPRMask=32767
    ; PIA Page Generation Tracing Bitfield
    ; Bit Type of tracing
    ; 1 - Log page generation errors
    ; 2 - Show table layout via cell borders in generated page
    ; 4 - Annotate field overlap in HTML source
    ; 8 - Detailed trace of table generation algorithm
    ; 16 - Inline stylesheet in generated pages
    ; 32 - Inline javascript in generated pages
    ; 64 - QATesting - annotation and extra tags needed by Robot
    ; 128 - Format source. Make HTML more readable
    ; 256 - Save File. Save each generated page in log directory
    ; 512 - Debug JavaScript. Include debug functions in page
    ; 1024 - Log form data. Log all request parameters on each service
    ; 2048 - Log key errors. Write log message for unrecognized query parameters.
    ; Dynamic change allowed for TracePIA and TracePIAMask
    TracePIA=0
    TracePIAMask=32767
    ; AE Tracing Bitfield
    ; Bit Type of tracing
    ; 1 - Trace STEP execution sequence to AET file
    ; 2 - Trace Application SQL statements to AET file
    ; 4 - Trace Dedicated Temp Table Allocation to AET file
    ; 8 - not yet allocated
    ; 16 - not yet allocated
    ; 32 - not yet allocated
    ; 64 - not yet allocated
    ; 128 - Timings Report to AET file
    ; 256 - Method/BuiltIn detail instead of summary in AET Timings Report
    ; 512 - not yet allocated
    ; 1024 - Timings Report to tables, ignored if Process Instance is 0
    ; 2048 - DB optimizer trace to file
    ; 4096 - DB optimizer trace to tables
    ; 8192 - Transform trace
    TraceAE=0
    ; Analytic Server Tracing Bitfield
    ; MostSignificantBit -> LeastSignificantBit
    ; QAS |ACE MODEL | ACE CALC | ACE API| Plugin | DCache | Utils | Analytic Server |
    ; 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
    ; Bit Type of tracing 3 bits per component (octal word)
    ; 1 - Analytic Server LSB
    ; 2 - Analytic Server MSB LSB LogFence
    ; 4 - Analytic Server MSB --- --- --------------------
    ; 8 - Utilities LSB 0 0 0 0 (Severity_Status)
    ; 16 - Utilities 0 0 1 1 (Severity_Error)
    ; 32 - Utilities MSB 0 1 0 2 (Severity_Warn)
    ; 64 - DataCache LSB 0 1 1 3 (Severity_Info)
    ; 128 - DataCache 1 0 0 4 (Severity_Trace1)
    ; 256 - DataCache MSB 1 0 1 5 (Severity_Trace2)
    ; 512 - Plug-in LSB 1 1 0 6 (not used)
    ; 1024 - Plug-in 1 1 1 7 (not used)
    ; 2048 - Plug-in MSB
    ; 4096 - ACE API LSB
    ; 8192 - ACE API
    ; 16384 - ACE API MSB
    ; 32768 - ACE CALC LSB
    ; 65536 - ACE CALC
    ; 131072 - ACE CALC MSB
    ; 262144 - ACE MODEL LSB
    ; 524288 - ACE MODEL
    ; 1048576 - ACE MODEL MSB
    ; 2097152 - QAS LSB
    ; 4194304 - QAS
    ; 8388608 - QAS MSB
    ; The bits enable logging for OptEngine components beyond the standard
    ; LogFence setting. E.g., TraceAnalytic=14380470 sets full trace on all components.
    ; Using 110 (1 greater than Severity_Trace2) for each component:
    ; OptEng: 4 + 2
    ; Utils : 32 + 16
    ; DC : 256 + 128
    ; Plugin: 2048 + 1024
    ; ACE API: 16384 + 8192
    ; ACE CALC: 131072 + 65536
    ; ACE MODEL: 1048576 + 524288
    ; QAS : 8388608 + 4194304
    ; Total : 14380470
    TraceAnalytic=9586980
    TraceAnalyticMask=16777215
    ; Performance Monitor Tracing Bitfield
    ; Bit Type of tracing
    ; 1 - Trace All performance monitor agent activity
    TracePPM=0
    ; Create a memory image of the failing process during a crash
    ; Setting Meaning
    ; NONE no memory image
    ; MINI mini memory image
    ; FULL full memory image
    ; If set to MINI or FULL, when a crash occurs, a memory.dmp file is
    ; generated under <log directory>/<server name>.<process id>.
    ; Dynamic change allowed.
    DumpMemoryImageAtCrash=NONE
    ;If set to Y, when a crash occurs, the application server process will write
    ;additional information to help in debugging the crash that occurred.
    ;This consists of the customized object definitions for reproducing
    ;the request on another database.
    DumpManagerObjectsAtCrash=Y
    ; If set to Y, when a runtime error is detected, the message and a dump of
    ; the application state will be written to the current log file.
    ; Dynamic change allowed.
    LogErrorReport=N
    ; When set to an email address, an email will be sent when an error report
    ; or a crash dump is written to the log.
    ; Dynamic change allowed.
    MailErrorReport=
    [Cache Settings]
    ;==============================================================================================
    ; Settings for managed object caching;
    ; Default EnableServerCaching=2, ServerCacheMode=0
    ; Default CacheBaseDir=%PS_SERVDIR% if defined else %PS_HOME/<domain name>/cache
    ; You can change these values by uncommenting and setting to the desired value
    ;==============================================================================================
    ; EnableServerCaching -
    ; 0 Server file caching disabled
    ; 1 Server file caching limited to most used classes
    ; 2 Server file caching for all types
    ;EnableServerCaching=2
    ; CacheBaseDir = the base file cache directory
    ;CacheBaseDir=%PS_SERVDIR%
    ; ServerCacheMode
    ; 0 One file cache directory per app server process
    ; 1 One file cache directory per domain (shared file cache, needs to be preloaded)
    ;ServerCacheMode=0
    ; Deprecated cache settings : MaxInMemoryObjects
    ; MaxCacheMemory - controls cache memory pruning
    ; 0 cache memory pruning disabled
    ; >0 max size of memory cache in MBytes
    MaxCacheMemory=0
    ; Preload Cache projects for file and in memory cache
    ;PreloadFileCache=
    ;PreloadMemoryCache=
    [RemoteCall]
    ;=========================================================================
    ; Settings for RemoteCall
    ;=========================================================================
    ; RemoteCall child process output redirection
    ; If this parameter is non-zero, the child process output is saved to
    ; <Domain Settings\Log Directory>\<program>_<oprid>.out, and any error
    ; output is saved to <program>_<oprid>.err.
    ; By default, the output is not saved
    RCCBL Redirect=0
    ; Location of COBOL programs
    ; NT/Windows 2000: By default, RemoteCall looks for the COBOL programs in
    ; %PS_HOME%\cblbin%PS_COBOLTYPE%. PS_COBOLTYPE is automatically set when
    ; the application server is started. The value depends upon the database.
    ; Possible values:
    ; PS_COBOLTYPE = A (non-Unicode)
    ; PS_COBOLTYPE = E (EBCDIC)
    ; PS_COBOLTYPE = U (Unicode)
    ; UNIX: By default, RemoteCall looks for the COBOL programs in $PS_HOME/cblbin.
    ; You can override the default setting by commenting out the appropriate
    ; line and modifying the setting to fit your requirements.
    ; NT/Windows 2000:
    ;RCCBL PRDBIN=%PS_HOME%\cblbin%PS_COBOLTYPE%
    ; UNIX:
    ;RCCBL PRDBIN=%PS_HOME%/cblbin
    [PSAPPSRV]
    ;=========================================================================
    ; Settings for PSAPPSRV
    ;=========================================================================
    ; UBBGEN settings
    Min Instances=3
    Max Instances=3
    Service Timeout=300
    ; Number of services after which PSAPPSRV will automatically restart.
    ; If the recycle count is set to zero, PSAPPSRV will never be recycled.
    ; The default value is 5000.
    ; Dynamic change allowed for Recycle Count
    Recycle Count=5000
    ; Percentage of Memory Growth after which PSAPPSRV will automatically restart.
    ; Default is 20, meaning additional 20% of memory growth after the process has
    ; built up its memory cache.
    ; Uncomment the setting to use memory growth instead of Recycle Count at
    ; determining the restart point.
    ; Percentage of Memory Growth=20
    ; Number of consecutive service failures after which PSAPPSRV will
    ; automatically restart.
    ; If this is set to zero, PSAPPSRV will never be recycled.
    ; The default value is zero.
    ; Dynamic change allowed for Allowed Consec Service Failures
    Allowed Consec Service Failures=2
    ; Max Fetch Size -- max result set size in KB for a SELECT query
    ; Default is 5000KB. Use 0 for no limit.
    Max Fetch Size=5000
    ; Automatically select prompt, 1 = yes, 0 = no
    Auto Select Prompts=1
    ; This parameter is used for Tuxedo Queue Thresold Determination (used forPub/Sub
    ; processing only). This parameter is the actual Tuxedo message queue size.
    ; This is a kernel parameter in Unix. For Windows, look in BEA Tuxedo, IPC Resources.
    ; A value of 0 will disable Tuxedo Queue threshold Determination and usage.
    ; A value of -1 will use these defaults: Windows = 65535, AIX = 4000000,
    ; Solaris = 65535, HP = 65535
    Tuxedo Queue Size=65535
    [PSANALYTICSRV]
    ;=========================================================================
    ; Settings for PSANALYTICSRV
    ;=========================================================================
    ; UBBGEN settings
    Min Instances=3
    Max Instances=3
    ; Number of Analytic Instances an Analytic Server instance will load and
    ; unload before recycling. If the recycle count is set to zero, the
    ; Analytic Server will never be recycled.
    ; The default value is 1.
    ; Dynamic changes to this setting are allowed. A dynamic change will
    ; affect running Analytic Servers.
    ;Recycle Count=1
    ; Number of minutes an analytic instance will remain loaded without being
    ; accessed when it is auto-loaded by the analytic grid or when a
    ; PeopleCode program loads the instance with a timeout value of -1.
    ; The default value is 30
    ; Setting this to zero will disable timeouts for auto-loaded instances.
    ; Dynamic changes to this setting are allowed.
    ;Analytic Instance Idle Timeout=30
    ; Setting this to 1 will cause each analytic server to log to it's own
    ; file rather than the common PSANALYTICSRV_<Month|Day>.LOG file. The
    ; individual log files will include the Tuxedo server ID.
    ; Dynamic changes to this setting are allowed. Changes will only come
    ; into affect for running analytic servers when they are recycled.
    ; The default value is 0
    ;Analytic Per Server Log=1
    ; This setting determines what is the threshold to enable file swaping
    ; in ACE. Each data block is of 6K. Each data cube is divided into multiple
    ; data blocks. In batch environment this could be configured to a higher value.
    ; The default value is 1024 blocks. If set to zero, the disk swaping is disabled.
    ;ACE Max Memory Data Blocks=1024
    ; Queue size for data loading in batches. If set to zero, batch loading is disabled.
    ;ACE Load Queue Size=100000
    [PSSAMSRV]
    ;=========================================================================
    ; Settings for PSSAMSRV
    ;=========================================================================
    ; UBBGEN settings
    ; PSSAMSRV never spawns, so we set Instances instead of setting a Min and
    ; Max value for Instances.
    Min Instances=1
    Max Instances=3
    Service Timeout=300
    ; Number of services after which PSSAMSRV will automatically restart.
    ; If the recycle count is set to zero, PSSAMSRV will never be recycled.
    ; The default value is zero.
    Recycle Count=100000
    ; Number of consecutive service failures after which PSSAMSRV will
    ; automatically restart.
    ; If this is set to zero, PSSAMSRV will never be recycled.
    ; The default value is zero.
    Allowed Consec Service Failures=2
    ; Max Fetch Size -- max result set size in KB for a SELECT query
    ; Max Fetch Size=n indicates n * 1024 bytes
    ; Default is 32KB. Use 0 for no limit
    Max Fetch Size=32
    [PSQCKSRV]
    ;=========================================================================
    ; Settings for PSQCKSRV
    ;=========================================================================
    ; UBBGEN settings
    Min Instances=1
    Max Instances=3
    Service Timeout=300
    ; Number of services after which PSQCKSRV will automatically restart.
    ; If the recycle count is set to zero, PSQCKSRV will never be recycled.
    ; The default value is zero.
    Recycle Count=100000
    ; Number of consecutive service failures after which PSQCKSRV will
    ; automatically restart.
    ; If this is set to zero, PSQCKSRV will never be recycled.
    ; The default value is zero.
    Allowed Consec Service Failures=2
    ; Max Fetch Size -- max result set size in KB for a SELECT query
    ; Default is 5000KB. Use 0 for no limit.
    Max Fetch Size=5000
    [PSQRYSRV]
    ;=========================================================================
    ; Settings for PSQRYSRV
    ;=========================================================================
    ; UBBGEN settings
    Min Instances=1
    Max Instances=3
    Service Timeout=1200
    ; Number of services after which PSQRYSRV will automatically restart.
    ; If the recycle count is set to zero, PSQRYSRV will never be recycled.
    ; The default value is zero.
    Recycle Count=100000
    ; Number of consecutive service failures after which PSQRYSRV will
    ; automatically restart.
    ; If this is set to zero, PSQRYSRV will never be recycled.
    ; The default value is zero.
    Allowed Consec Service Failures=2
    ; Max Fetch Size -- max result set size in KB for a SELECT query
    ; Default is 10000KB. Use 0 for no limit.
    Max Fetch Size=10000
    ; Use dirty-read(uncommitted read) for PSQRYSRV only on DB2/OS390 or SQL Server
    Use dirty-read=0

    VP1 is an application user, not a database user.
    PS is a database user, the Peoplesoft objects' owner. It is also an application user on some application.
    Did you try to connect onto the database with people user through SQL*Plus ? Are you able to read PSOPRDEFN, PSVERSION, PSACCESSPRFL tables ?
    What Vista version are you on ? What Oracle version ?
    If you have Metalink3 access, you should read the note :
    Missing or invalid version of SQL library libpsora (0,0) or (200,0) (Doc ID 608741.1)+
    Nicolas.

  • * Information to All

    hi all.
    SAP Tickets - What Is That?
    Handling tickets is called Issue Tracking system. The errors or bugs forwarded by the end user to the support team are prioritized under three seviority High, Medium and Low. Each and every seviority as got its time limits before that we have to fix the error.
    The main job of the supporting consultant is to provide assistance on line to the customer or the organisation where SAP is already implemented for which the person should be very strong in the subject and the process which are implemented in SAP at the client side to understand,to analyse,to actuate and to give the right solution in right time.This is the job of the support consultant.
    The issues or the tickets(problems) which are arised is taken care of on priority basis by the support team consultants.
    The work process in support projects are given below for your reference.
    1.  The customer or the end user logs a call through any tool or by mail (RADIX).
    2.  Each one of the support team is a part of support group.
    3. Whenever a customer logs a call he /she  has to mention to which work group (by name).
    4. Once the calls came to the work group the support consultant or the team need to send an IR (Initial Response) to the user depending upon the priority of the calls. (Top,High,Med,Low,None)
    5. Then the error is fixed, debugged by the support consultant or the team. Then after testing properly by generating TR(Transport Request through the basis admin)
    6. Then it is informed to the end user/customer/super user about the changes which have moved to the production server by CTS process.
    These are the process.  In summary, what I understand is that if any configuration or customization is required to solve the issue, then the consultant have to work on DEV Client, then the end user will test it in the QA client and after approval the BASIS consultant has to transport it to the PRODUCTION client.
    An example:
    Tickets in SD can be considered as the problems which the end user or the employee in the company faces while working on R/3.  Tickets usually occur during the implementation or after the implementation of the project.  There can be numerous problems which can occur in the production support and a person who is working in the support has to resolve those tickets in the limited duration, every ticket has the particular deadline alert so your responsibility is to finish it before that deadline.
    To begin with, we should give "TICKET" to you for not knowing it. 
    Here is an eg of a ticket raise:
    End user is not able to 
    1. Create Sales order for a customer from a New plant, since shipping point determination is not happened . ( Without Shipping point the document becomes INCOMPLETE and he will not be able to proceed further like DELIVERY, BILLING). 
    He raises a ticket and the priority is set in one of the below:
    1. Low  2. Medium  3. High.
    Now you need to solve this ticket. You would analyze the problem and identify that the SP configuration has to be done for the new plant.
    You would request a transport for DEV CLIENT to BASIS. You do the change and Request one more Transport to BASIS for QA client. The End user will test the same by creating a sales order for the new plant and approve it.
    Finally, you request a transport to move the changes to PRODUCTION. Once the change is deployed in production the TICKET is closed.  What I have given is a small example. You would get some real issues with severity HIGH in your day-day support.
    What Is Maintaining SLA - Service Level Agreement
    What is maintaining SLA in production support?
    SLA is an abbreviation for "Service Level Agreement". It means to have guaranteed reaction or resolving times for incidents (= trouble tickets).
    For instance you could have defined the following SLA levels For example:
    Gold: Reaction time = 30 minutes, resolving time = 4 hours
    Silver: Reaction time = 4 hours, resolving time = 24 hours
    SLAs normally are part of a contract between a customer and a service provider.
    Or in details description:
    SLA are Service Level Agreements to resolve the tickets by the market. SLA means Service Level agreement. It is the service agreement between a Company and a service provider. For example an IT Organization providing support of SAP / other software / hardware has a agreement. This can be for example categorized based on criticality of the incident. High priority incident has to be resolved on 10 hours. Medium priority incident has a 3 days time to resolve etc
    SLA's are nothing but Service level agreements.
    These are defined in project preparation phase and client would have made an agreement with the company for the level of service. The SLA's are applicable in Production as well as maintanence support projects. For example: if your company follows a ticketing process(a ticket is nothing but an environment contains complete description of the problem which contains Short description, problem, customer contact details, sreen shots of the error etxc.,) and for each ticket there will be a severity for example business critical issues or problems may be treated as high or top severitie's. In those case your company or your team has to deliver the solution to the customer in agreed time limit or otherwise you might end up missing SLA's.
    SLA's has two important time specifications
    1. IPRT --- initial problem response time --- this is nothing but time taken to respond to the problem.
    2. PRT --- Problem response time -
    this is nothing but time taken to solve the issue or problem.
    Both IPRT and PRT will be different for different severitie's.  
    What Are Functional Specification in SAP?
    To speak at macro level that is at projet manager or at senior levels.  The Functional Spec (Specification) which is a comprehensive document is created after the (SRS) Software Requirements Document. It provides more details on selected items originally described in the Software Requirements Template. Elsewhre organizations combine these two documents into a single document.
    The Functional Specification describes the features of the desired functinality.. It describes the product's features as seen by the stake holders,and contains the technical information and the  data needed for the design and developement. 
    The Functional Specification defines what the functionality will be of a particulat area that is to be precise a transaction in SAP terminology.
    The Functional Specification document to create a detailed design document that explains in detail how the software will be designed and developed. 
    The functional specification translates the Software Requirements template into a technical description which
    a) Ensures that the product feature requirements are correctly understood before moving into the next step, that is detchnical developement  process. 
    b) Clearly and unambiguously provides all the information necessary for the technical consultants to develop the objects.
    At the consultant level the functional spects are preapred by functinal consultants on any functionality for the purpose of getting the same functinality designed by the technical pepole as most of the times the functionalities according to the requirements of the clients are not available on ready made basis.
    Let me throw some light on documentation which is prepared before and in a project:
    1) Templates
    2) Heat Analysis -
    3) Fit Gap or Gap Analysis
    4) Business Process Design
    5) Business Process Model
    6) Business Change & Impact
    7) Configuration Design, which is just 5 % of Total SAP- have different names -
    8) Future Impact & Change Assessement
    9) Functional Design (Module Wise)
    10) Risk Assessement
    11) Process Metrics and Many More-- Which has impact on Business and its work flow
    Note * This documents are preapared in Vanilla SAP Standards -- Things differ from one implementation to another, and it always depends on the type of business which is opting for SAP
    Role of a mySAP Functional Consultant
    What are the differences between a functional and business consultant?
    The difference between Functional consultant and Business consultant are as follows:
    1) A funcitonal consultant is able to configure the system unlike business consultant.
    2) Functional consultant know more about business process unlike Business consultant.
    3) A business consultant will bring business process knowledge and provide it to functional consultant who in turn used this knowledge to configure the system. 
    4) Functional consultant has more configuration knolwledge then Business consultant.          *-- Rocky
    The responsibilities of a support consultant are:
    - Primarily responsible for Handling tickets and application support to the endusers
    - When an issue comes diagnose, analyse and solve the issue
    - Responsible for any enhancements
    - Writing functional specs and interacting with Abapers to develop any user exits 
    - Training the end users and preparing end user training material                            *-- Sistla 
    For those who wished to know the role of a functional consultant.  Below is one view:
    A functional consultant evaluates the demands in talking with the customer's representatives, transforms the essence into an abstract and algorithmic business model. Hence, he identifies the use cases and transforms them into logical and technical views. 
    Then the main task starts: customizing the respective business area and making sure the system reacts in the manner according to the constraints of the requested use case. 
    The consultant documents the settings and prepares proper guidelines that allow other consultants to do further changes or repairs with due efforts. 
    The consultant takes care that proper training is given to the users and that the system is usable, performing appropriately and the business flow is complete and correct. 
    During go live he assists the technical staff by testing the behaviour of the system. 
    After go live he guarantees that the procedures remain usable and consistent in real live situation and proposes enhancements. 
    The main duty of a consultant is to transfer external know-how to the client. It is not manpower that counts but intelligence, understanding of processes, a feeling for defects and general a common sense
    Role of SAP Consultant In Testing
    1. What is the role of SD Consultant in Testing while implementing the project?
    2. What is Unit testing and Integration Testing?
    Testing : the core team members along with endusers will test whether the postings done in SAP is resulting as per the requirements of the organisation.  They will test whether the output documents such as purchase order, invoice document are printed in the required format and showing the correct data.
    Unit testing is refer to the module which are going to implement. SD, MM, FICO etc. there will be test script based on that testing will be performed. 
    Integration testing will be cross the modules. MM-SD-FICO for example.  Integration testing is also called SIT ( System integration testing)
    Testing mathologies and types: there are 6 types of testings:
      1. Unit Testing
      2. System Testing
      3. System Integration security Testing
      4. Performance Testing
      5. User Acceptance testing
      6. Regression Testing
    Unit testing is done in bit and pieces. Like e.g. in SD standard order cycle; we do have 1-create order, then 2-delivery, then 3-transfer order, then 4-PGI and then 5-Invoice.  So we will be testing 1,2,3,4 and 5 seperately alone one by one using test cases and test data. We will not be looking and checking/testing any integration between order and delivery; delivery and TO; TO and PGI and then invoice.
    Whrereas System testing you will be testing the full cycle with it's integration, and you will be testing using test cases which give a full cyclic test from order to invoice.
    Security testing you will be testing different roles and functionalities and will check and signoff.
    Performance testing is refered to as how much time / second will take to perform some actions, like e.g. PGI.  If BPP defination says 5 seconds for PGI then it should be 5 and not 6 second.  Usually it is done using software.
    Regression testing is reffered to a test which verfies that some new configuration doesnot adversly impact existing functionality.  This will be done on each phase of testing.
    User Acceptance Testing:  Refers to Customer testing. The UAT will be performed through the execution of predefined business scenarios, which combine various business processes. The user test model is comprised of a sub-set of system integration test cases.
    We use different software during testing. Most commonly use are
    Test Director:  which is used to record requirement, preparing test plan and then recording the progress.  We will be incorporating defects that are coming during these testings using different test cases.
    Mercury Load Runner:  is used for performance testing.  This is an automatic tool.
    What does the following terms means :
    - Technical Unit Testing
    - Functional Unit Testing
    - IntegrationTesting
    - Volume Testing
    - Parallel Testing?
    Technical Unit Testing= Test of some technical development such as a user exit, custom program, or interface. the test usually consists of a test data set that is processed according to the new program.  A successful test only proves the developed code works and that it performed the process as as designed.
    Functional Unit Testing= Test of configuration, system settings or a custom development (it may follow the technical unit testing) These usually use actual data or data that is masked but essentially the same as a real data set. A successful test shows that the development or configuration works as designed and the data is accurate as a result.
    IntegrationTesting= Testing a process, development or configuration within the context of any other functions that the process, development or functionality will touch or integrate . The test should examine all data involved across all modules and any data indirectly affected. A successful test indicates that the processes work as designed and integrate with other functions without causing any problems in any integrated areas.
    Volume Testing= testing a full data set that is either actual or masked to insure that the entire volume does cause system problems such as network transmission problems, system resources issues, or any systemic problem, A successful test indicates that the processes will not slow or crash the system due to a full data set being utilized.
    Parallel Testing= Testing the new system or processes with a complete data set while running the same processes in the legacy system. A successful test will show identical results when both the legacy system and new system results are compared.
    I would also note that when a new implementation is being done you will want to conduct at least one cut over test from the old system to the new and you should probably do several.
    What kind of testings that are carried out in testing server?
    1. Individual Testing ( Individually which we've created)
    2. Regressive Testing ( Entire Process)
    3. Integration Testing ( Along with other integrated modules)
    The 3 types of testing is as follows:-
    1. Unit testing (where an individual process relevant to a SD or MM etc is tested)
    2. Integration testing (where a process is tested that cuts across all areas of SAP).
    3. Stress testing (where lots of transactions are run to see if the system can handle the data)
    Roles and Responsibilities of End Users
    What is the Difference between Consultant & End users?
    SAP consultant role is to build the system, changes & modification/updation in currently installed SAP system for the end users.
    SAP End user only use the SAP system just to fetch some info, or to create new thing. So a end user is just using the final product which it is meant for and consultnat design the product/updation and modification.
    The roles and responsibilities of end users is working in easy access menu they will not have authorizations of using img settings if they get doubt they will send query to the implemented company and just entering day to day transactions.
    Roles and Responsibilities of End User:
    Using the software at the end or after the implementation is an End User.
    In sap HR , we do come across entire Org Management creation by an end user after the Personnel strucutre is created.  OM objects like creation of Org Unit means functional area or dpt , creation Job and Position and its occupancy is with in the limits of an enduser.  Initiallly the OM is created by sap consultant . In course of time a new department has appeared in the company of the client .. this has to be created by the enduser rather than depending up on the implementor... similarly new job and position..like this small things are always done by the enduser.
    The entire work of OM is purely depends upon the enduser.
    After from this running periodical payroll and Ensuring of the Time schedules ( Work Schedules) of each employee is done from sap easy access by an enduser and the show run of payroll everymonth is by the enduser only.  Like this lot of roles are there for an end user. 
    Whatever the problems come across during the enduser utilisation of sap ...that will reach as ticket to the support team
    What Are SAP End User Manual
    It is the same for every other modules although here I reference it mainly for SAP HR.
    1) You should understand which targeted group for the end-user training is for.  Do they have any computer background or not. 
    2) In what way they are going to make use of the manuals supplied to them during the course of training.
    Let us focus on how to prepare manuals:
    In the client side , End Users are not permanent. If they get any better job outside they will resign and go out. Even if you train them well, again the end-user team disappears after some time. That is why implementing company( Client ) expects SAP Consultants to prepare documents which are self explanatory (even to a layman in SAP) and study themselves and use the sap easy access very comfortably.
    Hence we should prepare a document which explains the following things comfortably:
    A) All the buttons and Screens we have in sap and its importance for an end-user.
    B) All the transaction codes used by end user.
    C) The STEP by STEP usage methodology with screen shots and explanatory foot notes for each Transaction code.
    D) Prepare a book a table and columns which should have the following information:
    - Sl.NO.
    - Transaction Code
    - Navigation path 
    - Use of the Code
    - Expected Result
    - Achieved Result
    - Remarks/Any Comment
    E) Highlight the common troubles during the usage of SAP by an end- user and give the solutions (ready to use)
    These problems you can come across while giving the in house training for the end-users.  You just place them at one place and publish it for their usage in future for any of their new joinees as an end-user.
    F) Every consultant is aware that the entire Organsiational Management is with end user only. Means consultant should train the end user in entire OM.
    G) We should inform the importance of info types and usage for our purposes at expert mode, PA30, PA40 etc.,
    H) Each field in the international infotypes should be explained very clearly and ensure that they are comfortable with the fields of infotypes which have been configured for their company.
    For example : info type 0001 Org Assignment insists about the three structures of the HR. We should explain each sub field like Emp Group, Emp Sub Group, Personnel Area and Sub Area and its importance and relevance to their company so as to understand while processing them from the end- user point of view . 
    When an employee is hired into the company , now the end-user in a position to understand which employee group and subgroup, Personnel Area And Sub Area etc., should allotted..
    Like this whatever comes across in SAP Easy Access should be insisted through the training of end users.
    I) Demo, exercises and solutions should be provided in the manuals.
    J) Glossary of terms and expansion of Acronyms, Abbreviations should be given.  Like this each consultant should focus on end user training and prepare the documents.
    Mini SAP System Requirement and How to Get it
    Mini SAP System Requirement
    The system Requirements are :
    General Requirements
    Operating System:
    Windows 2000 (Service Pack2  or higher);
    Windows XP (Home or Professional);
    Windows NT
    Linux
    Internet Explorer 5.01 or higher
    At least 192 MB RAM  (recommended to have 256 MB of RAM)
    At least 512 MB paging file
    At least 3.2 GB disk space (recommended to have 6 GB hard disk drive space)
    (120 MB DB software, 2.9 GB SAP data, 100 MB SAP GUI + temporary free space for the installation)
    The file  C:\WINNT\system32\drivers\etc\services (Windows 2000) or
    C:\Windows\system\32\drivers\etc\services (Windows XP)  must not include an entry for port 3600.
    A possible entry can be excluded by using the symbol '#'.
    No SAPDB must be installed on your PC.
    The hostname of the PC must not be longer than 13 characters.
    The Network must be configured for installation and
    the MS Loopback Adapter must be configured when you start the system without a network connection!
    Special Requirements for Installations on Windows XP
    In the  file C:\Windows\system\32\drivers\etc\hosts the current IP address and the host name must be defined as
    <IP address><Host name>
    Open the network connectivity definition with start->control panel->network connections for defining the network connection. Select  ->extended-> allow other users in network. Activate new configurations.
    Select remote desktop within extended configuration menu.
    Successfully Implementing SAP
    Implementing a package can be a traumatic affair for both the customer and the vendor.   Get it wrong and the vendor may get paid late or have to resort to lawyers to get paid and tarnish their reputation.   For the company the new package may not work the way they expected, be late or cost a more than budgeted for and take management will take their eye off running their business.
    Recently a client asked me what I would consider to be the five most important things one should consider before embarking on an implementation.   This isn't a simple question, although there are many factors to think about after some consideration for me the top five are way ahead of the others.
    My top five factors to consider would be:
    1. Set up a Project Board,
    2. Secure the resources,
    3. Complete the GAP Analysis,
    4. Have detailed Cut Over Plans,
    5. Train the users.
    Taking each one in turn:
    The Project Board
    The correct set up and operation of the Project Board in my view is major factor in the success failure of the project.   The Project Board will consist of the stakeholders, key users and the vendor.   The Project Board is part of the governance of the project.   The Project Board will meet regularly to ensure that the project plans are created and being executed as planned, moves from stage to stage with all the deliverables being signed off is resourced properly.
    The Resources
    Three types of resources are absolutely necessary -- end users, change team and technicians.
    Early involvement by the end users is absolutely necessary, as they will be the ones living with the system for hopefully many years to come.   They will want to feel involved in its implementation.   Buy in from the end users of the system is absolutely essential if the system is to have a long and stable life in any organisation.
    The Change Team will identify the gaps between the package and the business requirements, re-engineer some of the businesses process to cope with the package, train the users to ensure implementations is smooth as possible into the business.
    The Technical Team will prepare the systems environment for the package, apply any software fixes from the vendor, implement the software in the best way possible for the organisation set up and tune the software for the particular technical environment.
    GAP Analysis
    A through gap analysis will identify the gaps between how the business operates ad its needs against what the package can can't do.   For each gap there will be one of three outcomes which must be recorded and actioned, GAP must be closed and customised software can be developed close the gap, GAP must be closed but software cannot be written therefore a workaround is required, GAP does not need to be closed.
    In simple terms: Gap means small cracks. In SAP world.  In information technology, gap analysis is the study of the differences between two different information systems or applications( ex; existing system or legacy system with Client and new is SAP), often for the purpose of determining how to get from one state to a new state. A gap is sometimes spoken of as "the space between where we are and where we want to be." Gap analysis is undertaken as a means of bridging that space.
    Actual gap analysis is time consuming and it plays vital role in blue print stage.
    Cut Over Plans
    Detailed plans need to be developed for cutting over from the old system(s) to the new.   Parallel runs of what will happen over the conversion period using test data, convert and watch for a period after wards to ensure nothing unexpected happens.
    Train Users
    Well trained users will support and defend the system on site.  Unsupportive users will continually undermine the system and eventually it will be replaced.   Therefore the more effort you put into helping the users master the system early the better.
    Explain Cutover Activities/Strategies in SAP FI.
    Cutover Activities or Master Data Uploading Strategies Depending upon the when we are going live.  As per that, you have to give the information to your core team.  If you goling live at the middle you have to upload the all P&L Account items and B/S Items.  If you going live at the financial year start, you have to only Upload the B/S Items. Activities for Golive: 
    1.   G/L Master Upload Thru BDC or LSMW (TC-Fs00 and extended one co code to another company code Fs01)
    2.   Vendor Master Upload Thru BDC Or LSMW (Will be Taken Care By MM) 
    3.   Customer Master Upload Thru BDC or LSMW (Will be Taken Care By SD) 
    4.   Asset Master Upload(Thru As90) 
    5.   Cost Element Master Upload 
    6.   Cost Center Master Upload 
    7.   Profit Center Master Upload 
    8.   G/L Balances Thru F-02 
    10. Vendor Balances thru F-43 
    11. Customer Balances thru F-22 
    12. Customer Advances thru f-29 
    13. Vendor Advances thryu F-48
    Before uploading Vendor Balances you have to take care of WHT(TDS) Information.
    Difference between the User Exit & Gap analysis.
    Both are quiet a different and has a small relation.
    User exits are standard gate ways provided by SAP to exit the standard code and we can write our own code with the help of ABAP workbench.   its not new functionality which we are trying to build in sap but its slight enhancement within the same code. 
    Gap analysis is start point of Realization and once blue print is finished we have to find the realization of sap system for client requirment and there will be certain gaps when compared to system fit.  Those gaps can be closed either by re-engineering of business process to fit with SAP or we have to use USER exits in case of small deviations or complete enhancements with the help of ABAP to fit with the SAP system.   *-- V. Sridhar
    What is roll out of SAP Project?
    As per dictionary, Rollout means “Inauguration or initial exhibition of a new product”. 
    As per SAP specific definition, rollout is the strategy for international SAP implementation. Rollout strategy normally include the following
    - Whether to implement SAP simultaneously (also known as big-bang) in all the countries, or 
    - Go live in sequence of phased manner
    - Or to go for the combination of both (phased manner implementation for some of the countries and big-bang for others).
    Rollout strategy  is the most important decision that a client can make during SAP implementation. Normally, steering committee decides the rollout strategy.
    ALL THE BEST

    Man, thanks a lot! I appreciate this.
    You think you could do me a favor? I listen to a lot of DCI songs (for those of you who don't know what that is, don't worry about it), anyways, DCI shows are average 0-2 mins. Could you give me the formula that you use for this so I can calculate it's

  • Use of project view to group project records in multi-project report

    I have a summary level multi-project report to report summary level information for active projects.  We are using project view to organize our projects between departments and divisions (hierarchical structure) - represented by folders in project view.  Projects are occasionally moved between project folders.  If anyone has experience with report development using folder structure?  My intent is to create grouping band based on folder structure and list projects under appropriate folder/band. 
    Any assistance is greatly appreciated.
    I am using CM14.1 with OBIP 10.1.1.7
    Thanks,
    Prath

    If you are creating a standard multi-project report (no retrieval criteria; project_state=0)  and you run this report from within PCM, PCM automatically appends to your syntax the filtering criteria for the "folder" the user has highlighted in the project tree.  In this case you would have one report that would retrieve multiple sets of data actively depending upon the project tree position.  I have seen sometimes this causing issues with certain base syntax, but in general this should work.
    Sounds, though, like you're building your report to call to the raw project_view tables, and Rick pointed out you need to use both of these tables then most likely.

  • How do I add XML content to existing FrameMaker Document

    Hello,
    I have an XML document that contains features of one item and I want to add data from it to FM document that shows those features. These features have been added to FM previously by copy-paste technology which isn't obviosly the fastest way and I have understood adding them automatically is possible.
    I can read XML well and I can produce XSLT files to make another XML files, problem is that I'm a little beginner with FM and help files didn't show any good examples of this (or at least I didn't find). I tried to do some read/write rules, because it seemed to be the way how FM handles these things but they didn't work.
    So shortly: XML file (data) + FM file (tables and such) = FM file which have XML data in its tables
    I would appreciate any help, like pointing to right help files or such, thanks in advance.

    The two main references you need are:
    Developing Structured Applications with FrameMaker, Guide
    Developing Structured Applications with FrameMaker, Reference
    They used to ship with FrameMaker, but you can download them from the Adobe site. Check the Support section. I do not believe they are available for FrameMaker 10 yet, but they are for version 9. No matter your FramMaker version, almost any set will do.
    Basically, you need an XSLT that will translate the XML structure into the structure you use in your FrameMaker files. You need a set of read/write rules (see the references above). FrameMaker uses read/write rules to specify how certain FrameMaker objects are to be translated from the XML. Such objects include tables, variables, and markers.
    Then you need to create a structured application that specifies where the XSLT, the read/write rules, and your structured template are located on you system.Again, see the references.
    Once all of the above is in place, you open the XML file from within FrameMaker. FrameMaker will ask you what structured application to use, which you pick from the dropdown list. It will then open the XML file, apply the XSLT transformation, and copy the result into your structured blank template. That process will likely list several errors, which you may or may not be able to ignore depending upon the resulting FrameMaker document. In my case, these are usually errors about missing graphics, which I already know are missing.
    The result is ONE FrameMaker file. You can then copy and paste the information where ever you need it in your other documents. I am not sure whether you can import an XML file into an existing Framemaker document, much like a text inset. Maybe others will know.
    Good luck,
    Van

  • Which keys are used in Client/Server Authentication?

    Hi.
    I am trying to understand how SunX509 algorithm works in a TLS context. When Server or Client authentication is done, which keys of the keystore are used?
    I mean, when you set up your KeyStore instance, it is loaded a whole KeyStore from the filesystem, which has a lot of keys to be used. Are they all tried in order to find the key that authenticates the Client/Server, and when a key that works is found means that Client/Server is authenticated? Or a concrete key with a specific alias is used?
    Do you know a doc or something similar where i can see this explanation? I haven't found this matter in JSSE API User's Guide nor in JSSE Javadocs.
    Thanks!

    The alias that is chosen is arbitrary and depends upon the order in which the aliases are returned via a hashtable enumeration. If you want to make sure you're using a particular aliasn you must write your own key manager, take a look at the X509KeyManager interface with methods such chooseClientAlias(), chooseServerAlias(), ...

  • I want in LSMW SAME CODING. THIS IS USING BDC CALL TRANSACTION

    REPORT  ZXX_BDC_PRA NO STANDARD PAGE HEADING LINE-COUNT 20
                                                LINE-SIZE 150 .
    Program Name  :ZXX_BDC_PRA                             *
    Object Id     :                                        *
    Develper Name : praveen                                *
    Start Date    : 25.06.07                               *
    Description   : uploading flat file to sap system      *
    *--structure for Data Uploading.
    DATA: BEGIN OF IT_STR ,
            VKORG LIKE RF02D-VKORG,
            VTWEG LIKE RF02D-VTWEG,
            SPART LIKE RF02D-SPART,
            KTOKD LIKE RF02D-KTOKD,
            NAME1 LIKE KNA1-NAME1,     
            SORTL LIKE  KNA1-SORTL,     
            ORT01 LIKE KNA1-ORT01,     
            PSTLZ     LIKE KNA1-PSTLZ,     
            LAND1 LIKE KNA1-LAND1,     
            SPRAS LIKE KNA1-SPRAS,
            END OF IT_STR.
    *--Internal Table for Data Uploading.
    DATA: ITAB  LIKE IT_STR OCCURS 0.
    *--Internal Table to sucessfull Records.
    DATA:   ITAB1 LIKE IT_STR OCCURS 0.
    *--Internal Table to Store Error Records.
    DATA:    ITAB2 LIKE STANDARD TABLE OF IT_STR WITH HEADER LINE.
    *--Internal Table for Storing the BDC data.
    DATA: BDCDATA LIKE BDCDATA OCCURS 0 WITH HEADER LINE.
    *--Internal Table for storing the messages.
    DATA:   MESSTAB LIKE BDCMSGCOLL OCCURS 0 WITH HEADER LINE.
    DATA:   COUNT TYPE I VALUE 1,
            S VALUE 0, E VALUE 0.
    Selection screen *
    SELECTION-SCREEN BEGIN OF BLOCK b1
                     WITH FRAME TITLE TEXT-001.
    PARAMETERS: P_FILE TYPE IBIPPARMS-PATH.
    SELECTION-SCREEN END OF BLOCK B1.
    AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_FILE.
    *functionality to use drill down list
      CALL FUNCTION 'F4_FILENAME'
        EXPORTING
          PROGRAM_NAME  = SYST-CPROG
          DYNPRO_NUMBER = SYST-DYNNR
        IMPORTING
          FILE_NAME     = P_FILE.
    Start-of-selection *
    START-OF-SELECTION.
      DATA FILENAME TYPE STRING.
      FILENAME = P_FILE.
    *-- Form to upload flatfile data into the internal table.
      CALL FUNCTION 'GUI_UPLOAD'
        EXPORTING
          FILENAME                = FILENAME
          FILETYPE                = 'ASC'
          HAS_FIELD_SEPARATOR     = 'X'
        TABLES
          DATA_TAB                = ITAB
        EXCEPTIONS
          FILE_OPEN_ERROR         = 1
          FILE_READ_ERROR         = 2
          NO_BATCH                = 3
          GUI_REFUSE_FILETRANSFER = 4
          INVALID_TYPE            = 5
          NO_AUTHORITY            = 6
          UNKNOWN_ERROR           = 7
          BAD_DATA_FORMAT         = 8
          HEADER_NOT_ALLOWED      = 9
          SEPARATOR_NOT_ALLOWED   = 10
          HEADER_TOO_LONG         = 11
          UNKNOWN_DP_ERROR        = 12
          ACCESS_DENIED           = 13
          DP_OUT_OF_MEMORY        = 14
          DISK_FULL               = 15
          DP_TIMEOUT              = 16
          OTHERS                  = 17.
    *--Generating the BDC table for the fields of the internal table.
      LOOP AT ITAB INTO IT_STR.
        PERFORM BDC_DYNPRO      USING 'SAPMF02D' '0107'.
        PERFORM BDC_FIELD       USING 'BDC_CURSOR'
                                      'RF02D-KTOKD'.
        PERFORM BDC_FIELD       USING 'BDC_OKCODE'
                                      '/00'.
        PERFORM BDC_FIELD       USING 'RF02D-VKORG'
                                      IT_STR-VKORG.
        PERFORM BDC_FIELD       USING 'RF02D-VTWEG'
                                       IT_STR-VTWEG.
        PERFORM BDC_FIELD       USING 'RF02D-SPART'
                                      IT_STR-SPART.
        PERFORM BDC_FIELD       USING 'RF02D-KTOKD'
                                        IT_STR-KTOKD.
        PERFORM BDC_DYNPRO      USING 'SAPMF02D' '0110'.
        PERFORM BDC_FIELD       USING 'BDC_CURSOR'
                                      'KNA1-SPRAS'.
        PERFORM BDC_FIELD       USING 'BDC_OKCODE'
                                      '/00'.
        PERFORM BDC_FIELD       USING 'KNA1-NAME1'
                                    IT_STR-NAME1.
        PERFORM BDC_FIELD       USING 'KNA1-SORTL'
                                        IT_STR-SORTL.
        PERFORM BDC_FIELD       USING 'KNA1-ORT01'
                                        IT_STR-ORT01.
        PERFORM BDC_FIELD       USING 'KNA1-PSTLZ'
                                      IT_STR-PSTLZ.
        PERFORM BDC_FIELD       USING 'KNA1-LAND1'
                                      IT_STR-LAND1.
        PERFORM BDC_FIELD       USING 'KNA1-SPRAS'
                                        IT_STR-SPRAS.
        PERFORM BDC_DYNPRO      USING 'SAPMF02D' '0120'.
        PERFORM BDC_FIELD       USING 'BDC_CURSOR'
                                      'KNA1-TXJCD'.
        PERFORM BDC_FIELD       USING 'BDC_OKCODE'
                                      '/00'.
        PERFORM BDC_DYNPRO      USING 'SAPMF02D' '0125'.
        PERFORM BDC_FIELD       USING 'BDC_CURSOR'
                                      'KNA1-NIELS'.
        PERFORM BDC_FIELD       USING 'BDC_OKCODE'
                                      '/00'.
        PERFORM BDC_DYNPRO      USING 'SAPMF02D' '0360'.
        PERFORM BDC_FIELD       USING 'BDC_CURSOR'
                                      'KNVK-NAMEV(01)'.
        PERFORM BDC_FIELD       USING 'BDC_OKCODE'
                                      '=ENTR'.
        PERFORM BDC_DYNPRO      USING 'SAPMF02D' '0310'.
        PERFORM BDC_FIELD       USING 'BDC_CURSOR'
                                      'KNVV-BEGRU'.
        PERFORM BDC_FIELD       USING 'BDC_OKCODE'
                                      '/00'.
        PERFORM BDC_DYNPRO      USING 'SAPMF02D' '0324'.
        PERFORM BDC_FIELD       USING 'BDC_CURSOR'
                                      'KNVP-PARVW(01)'.
        PERFORM BDC_FIELD       USING 'BDC_OKCODE'
                                      '=ENTR'.
    *--Calling the transaction 'Vd01'.
        CALL TRANSACTION 'VD01' USING BDCDATA MODE 'N' UPDATE 'S'
        MESSAGES INTO MESSTAB.
        PERFORM MESSAGES.
        REFRESH : BDCDATA, MESSTAB.
      ENDLOOP.
    END-OF-SELECTION.
    *--Populating the Success records internal table.
      IF ITAB1[] IS NOT INITIAL.
    format color 5.
        WRITE: /'SUCCESSFUL RECORDS'.
        format color off.
        LOOP AT ITAB1 INTO IT_STR.
          WRITE:/ IT_STR-VKORG,IT_STR-VTWEG,
                  IT_STR-SPART,IT_STR-KTOKD,
                  IT_STR-NAME1,IT_STR-SORTL,     
                  IT_STR-ORT01,
                  IT_STR-PSTLZ,
                  IT_STR-LAND1,      
                  IT_STR-SPRAS.
          S = S + 1.
        ENDLOOP.
    REFRESH : ITAB1.
        WRITE:/ 'TOTAL RECORDS',S.
      ENDIF.
    *--Populating the error records internal table.
      IF ITAB2[] IS NOT INITIAL.
    FORMAT COLOR 3.
        WRITE :/ 'ERRORS RECORDS ARE'.
    FORMAT COLOR OFF.
        LOOP AT ITAB2.
          WRITE:/ ITAB2-VKORG,
                  ITAB2-VTWEG,
                  ITAB2-SPART,ITAB2-KTOKD,
                  ITAB2-NAME1,ITAB2-SORTL,     
                  ITAB2-ORT01,
                  ITAB2-PSTLZ,
                  ITAB2-LAND1,      
                  ITAB2-SPRAS.
            E = E + 1.
        ENDLOOP.
    REFRESH : ITAB2.
        WRITE: / 'TOTAL RECORDS',E.
    REFRESH : ITAB2.
      ENDIF.
    End of Selection *
    END-OF-SELECTION.
    TOP-OF-PAGE *
    TOP-OF-PAGE.
      WRITE:/ SY-ULINE.
      WRITE:/10 'REPORT ID',21 SY-REPID,35 'USERNAME',46 SY-UNAME,
      60 'SYSTEM DATE',70 SY-DATUM,80 'SYSTEM TIME',90 SY-UZEIT,
      100 'PAGE NO',108 SY-PAGNO.
      WRITE:/ SY-ULINE.
    FOrm to Populate the BDC table.
           Start new screen                                              *
    FORM BDC_DYNPRO USING PROGRAM DYNPRO.
      CLEAR BDCDATA.
      BDCDATA-PROGRAM  = PROGRAM.
      BDCDATA-DYNPRO   = DYNPRO.
      BDCDATA-DYNBEGIN = 'X'.
      APPEND BDCDATA.
    ENDFORM.                    "BDC_DYNPRO
           Insert field                                                  *
    FORM BDC_FIELD USING FNAM FVAL.
      IF FVAL <> SPACE.
        CLEAR BDCDATA.
        BDCDATA-FNAM = FNAM.
        BDCDATA-FVAL = FVAL.
        APPEND BDCDATA.
      ENDIF.
    ENDFORM.                    "BDC_FIELD
    *&      Form  messages
    FORM MESSAGES .
      LOOP AT MESSTAB.
        IF MESSTAB-MSGTYP = 'I'.
         WRITE : / MESSTAB-MSGV1.
        ELSEIF
    MESSTAB-MSGTYP = 'S'.
          INSERT LINES OF ITAB FROM COUNT TO COUNT INTO TABLE ITAB1 .
          COUNT = COUNT + 1.
         WRITE : / MESSTAB-MSGV1.
        ELSEIF
        MESSTAB-MSGTYP = 'E'.
          INSERT LINES OF ITAB FROM COUNT TO COUNT INTO TABLE ITAB2.
          COUNT = COUNT + 1.
         WRITE : / MESSTAB-MSGV1.
        ENDIF.
      ENDLOOP.
    ENDFORM.                    " messages

    Hi
    Go through the doc and do the same using LSMW
    BDC is the way to transfer data by writing a batch input program which can use either session or call transaction method.
    LSMW used to transfer data without/less code.
    What type of data we transfer using LSMW?
    LSMW is best suited for transferring master data.
    Actually BDC and LSMW are not comparable at all.
    for example LSMW itself can use BDC as a way of mass data transfer.
    BDC is a mass data transfer technique via screen logic of existing SAP Data entry transactions. It behaves as if you are manually making thousand of entires into sap system as a background job. And that is probably the reason why BAPI's are preffered over BDC's.
    On the other hand LSMW is a tool to facilitate DATA migration from other legacy systems ... It contains step by step procedure for data migration.
    Like Managing Data Migration Projects , Creating Source Structures , Mapping Source structures wid Target structures , etc etc
    LSMW internally might well be using the following techniqes for data transfer..
    1. IDOX
    2. Direct Input / BDC
    4. BAPI's
    LSMW is an encapsulated data transfer tool. It can provide the same functionality as BDC infact much more but when coming to techinical perspective most the parameters are encapulated. To listout some of the differences :
    LSMW is basicaly designed for a fuctional consultant who do not do much coding but need to explore the fuctionality while BDC is designed for a technical consultant.
    LSMW offers different techinque for migrating data: Direct input ,BAPI,Idoc,Batch input recording. While bdc basically uses recording.
    LSMW mapping is done by SAP while in BDC we have to do it explicitly .
    LSMW is basically for standard SAP application while bdc basically for customized application.
    Coding can be done flexibly in BDC when compared to LSMW
    1. Maintain Attributes:
    Here you have to choose the second option and you can do the recording how this should work. Then assign the same to the Batch Input Recording name.
    2. Maintain Source structure:
    Create a structure name
    3. Maintain Source field:
    In this you have to create a structure same as that of the input file
    eg: name
    age
    4. Maintain structure relations:
    This will link the structure to the input file.
    5. Maintain field mapping and conversion rules:
    Here is the place where you can do coding, depending upon the code you have written or assignment you have done the values will get picked up from the file and get processed.
    6. Maintain field mapping and conversion rules:
    If you have any fixed values you can define here.
    7. Specify files:
    Specify the input file path and type.
    8. Assign files:
    This will assign ur file to the Input file
    9. Read Data:
    This will read ur data from teh file.
    10. Dispaly Read Data:
    You can see the uploaded data
    11. Convert Data
    This will convert the data to the corresponding format for processing
    12. Display Converted data:
    13. Create batch input session
    Here this will create a batch input session for processing
    14. Run Batch Input session:
    By clicking on the session and process the same you can do teh needfu.
    http://www.sapbrain.com/TOOLS/LSMW/SAP_LSMW_steps_introduction.html
    http://esnips.com/doc/8e732760-5548-44cc-a0bb-5982c9424f17/lsmw_sp.ppt
    http://esnips.com/doc/f55fef40-fb82-4e89-9000-88316699c323/Data-Transfer-Using-LSMW.zip
    http://esnips.com/doc/1cd73c19-4263-42a4-9d6f-ac5487b0ebcb/LSMW-with-Idocs.ppt
    http://esnips.com/doc/ef04c89f-f3a2-473c-beee-6db5bb3dbb0e/LSMW-with-BAPI.ppt
    http://esnips.com/doc/7582d072-6663-4388-803b-4b2b94d7f85e/LSMW.pdf
    for Long texts Upload
    Please take a look at this..
    http://help.sap.com/saphelp_erp2005/helpdata/en/e1/c6d30210e6cf4eac7b054a73f8fb1d/frameset.htm
    Reward points for useful Answers
    Regards
    Anji

Maybe you are looking for

  • SQL Express LocalDB as Back-end for MS Access

    Can a MS Access front-end database be connected to the new SQL Express LocalDB backend on the same machine? If the answer is YES, where do I find information about the driver/connection string? This is what I'm trying to accomplish. I have a project

  • Problem with Action Builder and Numeric Field

    Here's my scenario: I have a form with a numeric field for the PO Amount and a text field for the Role.  I tried to create an action builder to do the following: Condition - When numeric field PO Amount is less than 250,000 Result - Set Value of Role

  • Installation of a Jquery Plugin

    Can someone explain to me how to install one of these plugins? http://plugins.jquery.com/freezeheader/ https://github.com/jmosbech/StickyTableHeaders Isn't JQuery installed by default within apex? I have version 4.1.0.00.32. Anyway I cannot find any

  • Returning TV due to screen blackout

    Hi, I purschased Samsung LED TV last week. The TV went well for couple of days and started developing some internal cracks while it was on. The TV is not broken but some manufacturing defects surfaced on its operation for couple of days. There is no

  • SAP ESS WDA CATS Not Working

    Hi Experts: I got this dump when running CATs from the portal (7.3) or testing in the WD configuration. "Syntax error in program CL_XSS_CAT_1_APPLICATION_CORE=CP" I have the profile name assigned to CVR and have the relevant role assigned to my user.