Sorting serial packet data into queues

I am receiving serial packet data which originates from different sensor nodes in a network. Each sensor node
has a unique ID which is sent in the packet. The idea is to display the data in one chart and choose which sensor data to display
by using a cluster of booleans. I was thinking of using queues to buffer the data from single nodes, so for a network of 12 nodes 
I would need 12 queues and use a simple case structure to decide to which queue the element should be enqueued. Does this approach 
make sense or is there a simpler way to solve this problem? 

That seems reasonable.  You certainly need 12 of something for the data from the separate sensors. If the number of sensors can change, a 2D array might be better because you do not need to duplicate anything (such as adding another queue) to add a sensor.  However, arrays must be rectangular so if different amounts of data are received from different sensors, some method of keeping track what data is valid for each sensor will be required. The data from each sensor could be in a different row.
You probably want to use a graph, not a chart.  When you switch the display to a different sensor, you just wire that array row for that sensor to the graph.  Charts have an internal hsitory buffer and would be much more complicated to switch.
Lynn

Similar Messages

  • Help: How to add serial number data into Delivery Order document

    Dear Gurus,
    I am creating an interface program and I have problem in attaching the serial number data to the corresponding material code for a certain delivery order document in R/3 4.6C SP22 system.
    The serial number can be attached either during the creation of the Delivery Order itself or in the subsequent step after creating the Delivery Order (i.e.: create the D/O document first, and then update the D/O data).
    The BAPI_OUTB_DELIVERY_CONFIRM_DEC FM does not provide any input parameter to let me put the serial number in this R/3 version.
    By tracing in SE30 the standard program VL02N --> Menu --> Extras --> Serial Number --> Continue (Enter) --> Save (Ctrl+S), I found out that the serial attachment 'might' be done during sub-routine SERIAL_LISTE_POST_LS in program SAPLIPW1. It will in turn executes FM SERIAL_LISTE_POST_LS. The commit to database table will be done in update task by FM OBJK_POST_UPDATE_N and SERIAL_POST_UPDATE_LS.
    <b>My question:</b>
    ============
    1. Is FM SERNR_ADD_TO_LS can be used to attach the serial number to D/O?
    If yes, how to do it please because I already tried it I can not see the serial information in VL02N after that. There is no any insert or update to database in this function module. Should I call other FM after this? I want to try to call FM OBJK_POST_UPDATE_N and SERIAL_POST_UPDATE_LS but I do not know how I can retrieve the global object such as XOBJK_ALL that is necessary for the input parameter.
    2. If SERNR_ADD_TO_LS can not be used, what other FM can I use? Can I call SERIAL_LISTE_POST_LS instead? Is there any reliable way to generate the import parameter for this FM, such as XSER00, XSER01, XOBJK_ALL and XEQUI?
    Thank you in advanced for your kind assistance.
    Best Regards,
    Hiroshi

    Try something similar to this below...
    Afterwards you should do a call transaction to VL02N and immediately SAVE. This is sufficient to ensure the status on the serial numbers is updated correctly.
    FUNCTION z_mob_serialnr_update_ls.
    ""Local interface:
    *" IMPORTING
    *" VALUE(VBELN_I) LIKE LIKP-VBELN
    *" TABLES
    *" SERNO_TAB STRUCTURE RISERLS
    *" YSER00 STRUCTURE SER00 OPTIONAL
    *" YSER01 STRUCTURE RSERXX OPTIONAL
    *" YOBJK_ALL STRUCTURE RIPW0 OPTIONAL
    *" YEQUI STRUCTURE RIEQUI OPTIONAL
    *" YMASE STRUCTURE MASE OPTIONAL
    *" EXCEPTIONS
    *" NO_EQUIPMENT_FOUND
    The modified/confirmed table of serial numbers is supplied in
    SERNO_TAB.
    These are updated in the SAP tables
    YSER00 - General Header Table for Serial Number Management
    YSER01 - Document Header for Serial Numbers for Delivery
    YOBJK_ALL - Internal Table for Object List Editing/Serial Numbers
    YEQUI - Internal Structure for IEQUI
    local data
    DATA: BEGIN OF del_wa,
    vbeln LIKE likp-vbeln,
    posnr LIKE lips-posnr,
    matnr LIKE lips-matnr,
    lfimg LIKE lips-lfimg.
    DATA: END OF del_wa.
    DATA: del_tab LIKE del_wa OCCURS 0.
    DATA: _ct TYPE i.
    DATA: lastobknr LIKE objk-obknr.
    DATA: _debug.
    CLEAR: yser00, yser01, yobjk_all, yequi, ymase.
    REFRESH: yser00, yser01, yobjk_all, yequi, ymase.
    GET PARAMETER ID 'ZEDI_DEBUG' FIELD _debug.
    OBJECT KEYS
    read the delivery items with serial numbers to be processed
    SELECT * INTO CORRESPONDING FIELDS OF TABLE del_tab
    FROM lips
    WHERE vbeln = vbeln_i
    AND serail NE space.
    if nothing is relevant for serial numbers bailout
    DESCRIBE TABLE del_tab LINES _ct.
    IF _ct IS INITIAL.
    EXIT.
    ENDIF.
    ==== read the existing object keys for delivery items
    SELECT * INTO CORRESPONDING FIELDS OF TABLE yser01
    FROM ser01
    WHERE lief_nr = vbeln_i.
    IF sy-subrc = 0.
    yser01-dbknz = 'X'. "entry exists in db
    MODIFY yser01 TRANSPORTING dbknz WHERE dbknz = space.
    ENDIF.
    == check if there is a header entry for the delivery item
    LOOP AT del_tab INTO del_wa.
    READ TABLE yser01 WITH KEY lief_nr = del_wa-vbeln
    posnr = del_wa-posnr.
    IF sy-subrc NE 0.
    create one
    CALL FUNCTION 'OBJECTLIST_NUMBER'
    IMPORTING
    obknr = yser01-obknr.
    yser00-mandt = sy-mandt.
    yser00-obknr = yser01-obknr.
    APPEND yser00.
    SELECT SINGLE kunnr INTO (yser01-kunde)
    FROM likp
    WHERE vbeln = vbeln_i.
    yser01-mandt = sy-mandt.
    yser01-lief_nr = del_wa-vbeln.
    yser01-posnr = del_wa-posnr.
    yser01-vorgang = 'SDLS'.
    yser01-vbtyp = 'J'.
    yser01-bwart = '601'.
    yser01-dbknz = space. "not in db
    yser01-loknz = space. "do not delete
    APPEND yser01.
    ENDIF.
    ENDLOOP.
    check if any entries should be deleted
    LOOP AT yser01.
    READ TABLE serno_tab WITH KEY vbeln = yser01-lief_nr
    posnr = yser01-posnr.
    IF sy-subrc NE 0.
    yser01-loknz = 'X'. "mark for delete
    MODIFY yser01.
    ENDIF.
    ENDLOOP.
    collect all the object keys for the delivery item with s/n's
    LOOP AT yser01.
    READ TABLE serno_tab WITH KEY vbeln = yser01-lief_nr
    posnr = yser01-posnr.
    IF sy-subrc = 0.
    READ TABLE yser00 WITH KEY obknr = yser01-obknr.
    IF sy-subrc NE 0.
    yser00-mandt = yser01-mandt.
    yser00-obknr = yser01-obknr.
    APPEND yser00.
    ENDIF.
    ENDIF.
    ENDLOOP.
    IF NOT _debug IS INITIAL. BREAK-POINT. ENDIF.
    SERIAL NO OBJECTS
    ==== read the existing serial numbers from the database
    via object number into YOBJK_ALL
    LOOP AT yser00.
    SELECT * APPENDING CORRESPONDING FIELDS OF TABLE yobjk_all
    FROM objk
    WHERE obknr = yser00-obknr.
    ENDLOOP.
    yobjk_all-dbknz = 'X'.
    MODIFY yobjk_all TRANSPORTING dbknz WHERE dbknz = space.
    === add any new serial numbers
    LOOP AT serno_tab.
    READ TABLE yser01 WITH KEY lief_nr = serno_tab-vbeln
    posnr = serno_tab-posnr.
    READ TABLE yobjk_all WITH KEY sernr = serno_tab-sernr
    matnr = del_wa-matnr.
    IF sy-subrc NE 0.
    this is a new serial number
    yobjk_all-mandt = sy-mandt.
    yobjk_all-obknr = yser01-obknr.
    yobjk_all-obzae = 0.
    yobjk_all-equnr = yequi-equnr.
    yobjk_all-objvw = 'S'.
    yobjk_all-sernr = serno_tab-sernr.
    yobjk_all-matnr = del_wa-matnr.
    yobjk_all-datum = sy-datum.
    yobjk_all-taser = 'SER01'.
    yobjk_all-equpd = 'X'.
    yobjk_all-objnr = yequi-objnr.
    yobjk_all-dbknz = space.
    yobjk_all-loknz = space.
    APPEND yobjk_all.
    ENDIF.
    ENDLOOP.
    === mark any which are no longer confirmed as deleted
    LOOP AT yobjk_all.
    READ TABLE yser01 WITH KEY obknr = yobjk_all-obknr.
    READ TABLE serno_tab WITH KEY vbeln = yser01-lief_nr
    posnr = yser01-posnr
    sernr = yobjk_all-sernr.
    IF sy-subrc NE 0.
    yobjk_all-loknz = 'X'.
    MODIFY yobjk_all TRANSPORTING loknz.
    ENDIF.
    ENDLOOP.
    EQUIPMENT RECORDS
    == get the equipment records
    LOOP AT yobjk_all.
    SELECT SINGLE * INTO CORRESPONDING FIELDS OF yequi
    FROM equi
    WHERE sernr = yobjk_all-sernr
    AND matnr = yobjk_all-matnr.
    IF sy-subrc NE 0.
    CONTINUE.
    ENDIF.
    IF yobjk_all-dbknz = space AND
    yobjk_all-loknz = space.
    yequi-dbknz = 'X'.
    yequi-obknr = yobjk_all-obknr.
    yequi-j_vorgang = 'PMS3'. "add to delivery
    yequi-matnr_old = yequi-matnr.
    APPEND yequi.
    yobjk_all-equnr = yequi-equnr.
    MODIFY yobjk_all TRANSPORTING equnr.
    CONTINUE.
    ENDIF.
    IF yobjk_all-dbknz = 'X' AND
    yobjk_all-loknz = 'X'.
    yequi-dbknz = 'X'.
    yequi-j_vorgang = 'PMSA'. "delete from delivery
    yequi-matnr_old = yequi-matnr.
    APPEND yequi.
    CONTINUE.
    ENDIF.
    ENDLOOP.
    remove any Equipment records that do not need to be processed
    DELETE yequi WHERE j_vorgang IS initial.
    IF NOT _debug IS INITIAL. BREAK-POINT. ENDIF.
    fill the object counter
    LOOP AT del_tab INTO del_wa.
    READ TABLE yser01 WITH KEY lief_nr = del_wa-vbeln
    posnr = del_wa-posnr.
    DO del_wa-lfimg TIMES.
    READ TABLE yobjk_all WITH KEY obknr = yser01-obknr
    obzae = sy-index.
    IF sy-subrc NE 0.
    READ TABLE yobjk_all WITH KEY obknr = yser01-obknr
    obzae = 0.
    IF sy-subrc = 0.
    yobjk_all-obzae = sy-index.
    MODIFY yobjk_all INDEX sy-tabix TRANSPORTING obzae.
    ENDIF.
    ENDIF.
    ENDDO.
    ENDLOOP.
    IF NOT _debug IS INITIAL. BREAK-POINT. ENDIF.
    ===========================================
    update the delivery
    ===========================================
    CALL FUNCTION 'SERIAL_LISTE_POST_LS'
    TABLES
    xser00 = yser00
    xser01 = yser01
    xobjk_all = yobjk_all
    xequi = yequi
    xmase = ymase.
    TAB_CUOBJ =
    XSER03 =
    CALL FUNCTION 'STATUS_BUFFER_EXPORT_TO_MEMORY'
    EXPORTING
    i_memory_id = memid_status.
    COMMIT WORK AND WAIT.
    CALL FUNCTION 'Z_MOB_SERIALNR_REFRESH_LS'
    EXPORTING
    ctu = 'X'
    mode = 'N'
    UPDATE = 'L'
    GROUP =
    USER =
    KEEP =
    HOLDDATE =
    NODATA = '/'
    vbeln_i = vbeln_i.
    IMPORTING
    SUBRC =
    TABLES
    MESSTAB =
    ENDFUNCTION.
    FUNCTION z_mob_serialnr_refresh_ls.
    ""Local interface:
    *" IMPORTING
    *" VALUE(CTU) LIKE APQI-PUTACTIVE DEFAULT 'X'
    *" VALUE(MODE) LIKE APQI-PUTACTIVE DEFAULT 'N'
    *" VALUE(UPDATE) LIKE APQI-PUTACTIVE DEFAULT 'L'
    *" VALUE(GROUP) LIKE APQI-GROUPID OPTIONAL
    *" VALUE(USER) LIKE APQI-USERID OPTIONAL
    *" VALUE(KEEP) LIKE APQI-QERASE OPTIONAL
    *" VALUE(HOLDDATE) LIKE APQI-STARTDATE OPTIONAL
    *" VALUE(NODATA) LIKE APQI-PUTACTIVE DEFAULT '/'
    *" VALUE(VBELN_I) LIKE LIKP-VBELN
    *" EXPORTING
    *" VALUE(SUBRC) LIKE SYST-SUBRC
    *" TABLES
    *" MESSTAB STRUCTURE BDCMSGCOLL OPTIONAL
    DATA: vbeln_001 LIKE bdcdata-fval.
    vbeln_001 = vbeln_i.
    subrc = 0.
    PERFORM bdc_nodata USING nodata.
    PERFORM open_group USING group user keep holddate ctu.
    PERFORM bdc_dynpro USING 'SAPMV50A' '4004'.
    PERFORM bdc_field USING 'BDC_CURSOR'
    'LIKP-VBELN'.
    PERFORM bdc_field USING 'BDC_OKCODE'
    '/00'.
    PERFORM bdc_field USING 'LIKP-VBELN'
    vbeln_001.
    PERFORM bdc_dynpro USING 'SAPMV50A' '1000'.
    PERFORM bdc_field USING 'BDC_OKCODE'
    '=PSER_T'.
    PERFORM bdc_field USING 'BDC_CURSOR'
    'LIPS-POSNR(01)'.
    PERFORM bdc_dynpro USING 'SAPLIPW1' '0200'.
    PERFORM bdc_field USING 'BDC_CURSOR'
    'RIPW0-SERNR(01)'.
    PERFORM bdc_field USING 'BDC_OKCODE'
    '=RWS'.
    PERFORM bdc_dynpro USING 'SAPMV50A' '1000'.
    PERFORM bdc_field USING 'BDC_OKCODE'
    '=SICH_T'.
    PERFORM bdc_field USING 'BDC_CURSOR'
    'LIPS-MATNR(02)'.
    PERFORM bdc_transaction TABLES messtab
    USING 'VL02N'
    ctu
    mode
    update.
    IF sy-subrc <> 0.
    subrc = sy-subrc.
    EXIT.
    ENDIF.
    PERFORM close_group USING ctu.
    ENDFUNCTION.
    INCLUDE bdcrecxy.

  • Issue - data is not inserting into queue table

    Hi friends....i created a queue table & queue , started queue. while inserting number into queue, it is going fine. but , while browsing queue table, there is no data inserted into table. table is empty. i executed same script in another machine, it is working fine there.but, it is not working in my machine. i don't know why?.
    can anybody please help me to find out what will be the issue.
    these are the scripts i created........
    BEGIN
    DBMS_AQADM.CREATE_QUEUE_TABLE (
    queue_table => 'put_queue_table',
    queue_payload_type => 'sys.aq$_jms_text_message'
    END;
    anonymous block completed
    BEGIN
    DBMS_AQADM.CREATE_QUEUE (
    queue_name => 'QUALTY_QUEUE',
    queue_table => 'put_queue_table'
    DBMS_AQADM.START_QUEUE (
    queue_name => 'QUALTY_QUEUE'
    END;
    anonymous block completed
    DECLARE
    v_payload SYS.AQ$_JMS_TEXT_MESSAGE;
    v_enqueue_options dbms_aq.enqueue_options_t;
    v_message_properties dbms_aq.message_properties_t;
    v_message_handle RAW(16);
    v_text VARCHAR2(37);
    BEGIN
    v_text := to_char('157');
    v_payload := SYS.AQ$_JMS_TEXT_MESSAGE.construct;
    v_payload.set_text(v_text);
    DBMS_AQ.ENQUEUE(
    queue_name => 'QUALTY_QUEUE',
    enqueue_options => v_enqueue_options,
    message_properties => v_message_properties,
    payload => v_payload,
    msgid => v_message_handle
    COMMIT;
    END;
    anonymous block completed

    Please define what you mean by "when browsing [the] queue table" and why you think what you are doing should be inserting new rows in the table. Also please post full version information.

  • How do I put and sort string data into an array?

    I have a txt file that has the following sample data:
    Sample.txt----
    Jones Bill 12,500 Salesperson
    Adams Frank 34,980 Manager
    Adams John 23,000 Salesperson
    Thompson Joe 59,500 Trainee
    I need to incorporate each line of data into an individual array element, while using a user-defined method
    (ex. setAllValues(String last, String first, String salary, String job)
    How do I loop the data into the array to be displayed and what is the best way to do sorts on this sample data. Any code or clues would be super helpful.
    Sanctos

    If you set up an array of Strings you can use the java.util.Arrays.sort() method to sort it. If you need to sort arbitrary Objects (i.e. your 3 strings as a whole entity) your 3-way object will have to either implement Comparable or you could write a Comparitor class to do the ordering. Not much to it, though.
    Dom.

  • How to write the data into EEPROM using Labview?

    How to write the data into EEPROM using Labview?

    You would need some sort of EEPROM programmer. Typically might
    communicate with it via serial. I don't know how you would do this in
    LV. You would need to have the command protocol for the programming
    device to start with.
    Doug De Clue
    gpibssx wrote in message news:<[email protected]>...
    > How to write the data into EEPROM using Labview?

  • Can not extract data into BW from SQL SERVER

    Dear All,
      I meet a problem to extract data from database(MS SQL Server 2000(sp3)) into BW now and can not extract data into BW ODS, even PSA, In the monitor, display yellow light(0 from 0 record), detail message just display message "data request arranged" "confirmed with: confirmation" in requests(message) step; "missing message: request received" in extract (message)  step; "no data" in processing(data packet) step and so on. but in fact, there are two records in my database test table and DB connection is OK. Even I can extract data from another test oracle database into BW ODS successfully.
       Our BW system has two BW applicaton server and use oracle database. the one application server locates on IBM AIX host. the another one locates on one NT server. the application server on NT server is used for data extration from MS SQL SERVER  database into BW oracle database. and MS SQL SERVER and NT platform application server locate on same one host. DBSL was installed on the NT application server already. and DB connector also was created successfully for MS SQL SERVER and datasource also was generated. DBSL type is Kernel640-WIN-IA32bit-unicode. my BW system is ECC5.0/UNICODE/ORACLE. all table/view/field name of MS SQL server is upcase and have not any specific character. for example: ZDEMO etc.
    wait your help.
    Thanks in advance.
    Billy

    Hi  Ravi,
    Could you help me to get knowledge about the followings:
    approximately how many records    extracting and transfering  from SAP R/3 to BIW  in an organisation. for that how much time  will take .
    How to extract data from  two are three source system  to BIW. Kindly help me with step by step explanation .If any screen shots with documents pls fwd to my ID. "[email protected]"
    Your help highly appreciated.
    Thanks.
    Hema

  • How Can I put an Artists Live Albums in a separate folder, so they sort by "Concert Date" in iTunes and do not "intermingle" so to speak with Studio Albums?  Is this possible?

    How Can I put an Artists Live Albums in a separate folder, so they sort by "Concert Date" in iTunes and do not "intermingle" so to speak with Studio Albums?  Is this possible?
    That is about the best way I can phrase my question.
    I put year/month/date at the beginning of a show, hoping for them to sort by date and I get mixed results.
    Would creating a Folder within the Artists' existing folder  that said "Pearl Jam Live", inside the "Pearl Jam" folder in iTunes Media help this "Date Sorting Issue"?
    Thank you.

    Or is there a way to go through aperture to make a new reference library that I can move the masters into later?
    you do not move the masters into a references library - you turn your current library into a referenced library.  As Terence Devlin said:
    File -> Relocate Masters
    What you should set up:
    Select a folder, where you want to store your referenced files - probably on an external drive.
    Decide on a hierarchical folder structure inside this folder - that is completely up to you.
    Select a project from your library and use the command "File -> Relocate Masters/Originals" to move the original image files to the folder where you want to go them to. Only take care not to send two projects to the same folder.
    Alternatively, if you do not care about the folder structure Aperture will use, select all images at once from the "Photos" view and let Aperture decide how to assing the folders - in the "Relocate Originals" dialoge you can specify a subfolder format.
    Regards
    Léonie

  • Inserting Data into nested table

    I am exploring the differences between OBJECT & RECORD.
    As i am still in process of learning, I found that both are structures which basically groups elements of different datatypes or columns of different datatypes, one is used in SQL and other is used in PL/SQL, please correct me if I am wrong in my understanding.
    Below i am trying to insert data into an table of type object but i am unsuccessful can you please help.
    CREATE OR REPLACE type sam as OBJECT
    v1 NUMBER,
    v2 VARCHAR2(20 CHAR)
    ---Nested Table---
    create or replace type t_sam as table of sam;
    --Inserting data----
    insert into table(t_sam) values(sam(10,'Dsouza'));
    Error Message:
    Error starting at line 22 in command:
    insert into table(t_sam) values(sam(10,'Dsouza'))
    Error at Command Line:22 Column:13
    Error report:
    SQL Error: ORA-00903: invalid table name
    00903. 00000 -  "invalid table name"
    *Cause:   
    *Action:

    Ariean wrote:
    So only purpose of equivalent SQL types concept of nested tables is to use them as one of the data types while defining an actual table?
    Sort of - you can definitely use them for more than just "defining an actual table". (I'm fairly certain you could pass a nested table into a procedure, for example - try it, though - I'm not 100% sure on that - it just "makes sense". If you can define a type, you can use it, pass it around, whatever.).
    Ariean wrote:
    And that nested table could be a record in SQL or an Object in PLSQL or just simple datatype(number,varchar etc)?
    Nested tables are just like any other custom data type. You can create a nested table of other data types. You can create a custom data type of nested tables.
    It could get stupidly .. er, stupid O_0
    CREATE TYPE o_myobj1 AS object ( id1   number, cdate1  date );
    CREATE TYPE t_mytype1 AS table of o_myobj1;
    CREATE TYPE o_myobj2 AS object ( id2   number,  dumb  t_mytype1 );
    CREATE TYPE t_dumber AS table of o_myobj2;
    O_0
    Ok, my brain's starting to hurt - I hope you get the idea
    Ariean wrote:
    Secondly is my understanding correct about OBJECT & RECORD?
    I can't think of any benefit of describing it another way.

  • Xml data into non-xml database.. solution anyone?

    Hi,
    My current project requires me to store the client's data on our servers. We're using Oracle9i. Daily, I will download the client's data for that day and load it into our database. My problem is that the data file is not a flat file so I can't use sql*loader to load the data. Instead, the data file is an xml file. What is the best way to load xml data into a non-xml database? Are there any tools similar to sql*Loader that will load xml data into non-xml database? Is it the best solution for the client to give me an XML dump of their data to load into our database, or should I request a flat file? My last resort would be to write some sort of a script to parse the xml data into a flat file, and then run it through sql*loader. Is this the best solution? One thing to note is that these files could be very large.
    Thanks in advance.
    -PV

    I assume that just putting the XML file into an
    extremely large VARCHAR field is not what you want.
    Instead, you want to extract data elements from the
    XML and write them to columns in a table in your
    database. Right?Yes. Your assumption is correct.
    It sounds like you already have a script that loads a
    flat file into your database. In that case I would
    write an XSL transformation that converts the client's
    XML into a correctly-formatted flat file.Thank you. I'll look into that. Other suggestions are welcome.

  • Error While loading the data into PSA

    Hi Experts,
           I have already loaded the data into my cube. But it doesn't have values for some fields. So again i modified the data in the flat file and tried to load them into PSA. But while starting the Info Package, I got an error saying that,
    "Check Load from InfoSource    
    Created       YOKYY  on   20.02.2008   12:44:33 
    Check Load from InfoSource , Packet IP_DS_C11
    Please execute the mail for additional information.
    Error message from the source system
    Diagnosis
    An error occurred in the source system.
    System Response
    Caller 09 contains an error message.
    Further analysis:
    The error occurred in Extractor .
    Refer to the error message.
    Procedure
    How you remove the error depends on the error message.
    Note
    If the source system is a Client Workstation, then it is possible that the file that you wanted to load was being edited at the time of the data request. Make sure that the file is in the specified directory, that it is not being processed at the moment, and restart the request.
    Pls help me in this......
    With Regards,
    Yokesh.

    Hi,
    After editing the file did you save the file and close it.
    This error may come if your file was open at the time of request.
    Also did you check the file path settings.
    If everything is correct try saving the infopackage once and loading again.
    Thanks,
    JituK

  • Dead lock error while updating data into cube

    We have a scenario of daily truncate and upload of data into cube and volumes arrive @ 2 million per day.We have Parallel process setting (psa and data targets in parallel) in infopackage setting to speed up the data load process.This entire process runs thru process chain.
    We are facing dead lock issue everyday.How to avoid this ?
    In general dead lock occurs because of degenerated indexes if the volumes are very high. so my question is does deletion of Indexes of the cube everyday along with 'deletion of data target content' process help to avoiding dead lock ?
    Also observed is updation of values into one infoobject is taking longer time approx 3 mins for each data packet.That infoobject is placed in dimension and defined it as line item as the volumes are very high for that specific object.
    so this is over all scenario !!
    two things :
    1) will deletion of indexes and recreation help to avoid dead lock ?
    2) any idea why the insertion into the infoobject is taking longer time (there is a direct read on sid table of that object while observed in sql statement).
    Regards.

    hello,
    1) will deletion of indexes and recreation help to avoid dead lock ?
    Ans:
    To avoid this problem, we need to drop the indexes of the cube before uploading the data.and rebuild the indexes...
    Also,
    just find out in SM12 which is the process which is causing lock.... Delete that.
    find out the process in SM66 which is running for a very long time.Stop  this process.
    Check the transaction SM50 for the number of processes available in the system. If they are not adequate, you have to increase them with the help of basis team
    2) any idea why the insertion into the infoobject is taking longer time (there is a direct read on sid table of that object while observed in sql statement).
    Ans:
    Lie item dimension is one of the ways to improve data load as well as query performance by eliminationg the need for dimensin table. So while loading/reading, one less table to deal with..
    Check in the transformation mapping of that chs, it any rouitne/formula  is written.If so, this can lead to more time for processing that IO.
    Storing mass data in InfoCubes at document level is generally not recommended because when data is loaded, a huge SID table is created for the document number line-item dimension.
    check if your IO is similar to doc no...
    Regards,
    Dhanya

  • How to download  data into XLSX file in ABAP ECC 6.0 using FM: GUI_DOWNLOAD or any other FunctionModules

    Hi ABAP Exterts,
    Any one help on this , there is a requirement to download the data into XLSX file only.
    I am able to to download the data into XLS file using the FM: GUI_DOWNLOAD in SAP ECC 6.0and also opening the file . But when i download the data into XLSX file . I am able to download the data into GUI_DOWNLOAD. But while opening the file i am getting the below mentioned error.
    'Excel cannot open the file 'filename.xlsx' because the file format or file extension is not valid. Verify that the file has not been corrupted and that the file extension matches the format of the file'
    Ok buttom is coming not able to open the file.
    When i use the FM: SAP_CONVERT_TO_XLS_FORMAT to download the XLS it self it is going abap DUMP that file type error.
    Any one help  any Function Module or how to download data through abap programing into XLSX file.
    Thanks.
    Murali.
    Message was edited by: Matthew Billingham - adjusted wording...

    If you want to download your ALV to an .XLXS format file, with all the formatting intact, please try the following code. I have tried to create a custom Function module Z_EXCEL_DOWNLOAD_TEST wherein I pass all the callback variables, the final ALV internal table and all the ALV details like field catalog, sort, layout, event list and so on, along with the concatenated file path and file name in I_FILE. I have used a custom class ZCL_SALVEXPORT_XML which is a copy of the standard class CL_SALV_EXPORT_XML_DIALOG, with few modifications in Method: EXECUTE and Method: DOWNLOAD. The methods where I have modified the code are also shown at the end.
    ****************Global declarations***********************
    TYPE-POOLS: slis,
    kkblo.
    TYPES: t_fccls(1) TYPE c OCCURS 0.
    TYPES: BEGIN OF ty_nosum,
    fieldname     TYPE kkblo_fieldname,           "Field name
    tabname       TYPE kkblo_tabname,             "Table name
    fieldname_dep TYPE kkblo_fieldname,           "Field name
    tabname_dep   TYPE kkblo_tabname,             "Table name
    index         TYPE sy-index,                  "Index
    END OF ty_nosum.
    TYPES: t_nosum TYPE TABLE OF ty_nosum INITIAL SIZE 0 WITH NON-UNIQUE DEFAULT KEY.
    TYPES: BEGIN OF ty_dep_field,
    s_dep_fieldcat TYPE kkblo_fieldcat,            "Field cat
    t_ref_fieldcat TYPE kkblo_t_fieldcat,          "Field cat
    END OF ty_dep_field.
    TYPES: BEGIN OF ty_ref_field,
    s_ref_fieldcat TYPE kkblo_fieldcat,           "Field cat
    s_dep_fieldcat TYPE kkblo_fieldcat,           "Field cat
    END OF ty_ref_field.
    TYPES: t_dep_field TYPE ty_dep_field OCCURS 0.        "
    TYPES: t_ref_field TYPE ty_ref_field OCCURS 0.
    TYPES: BEGIN OF ty_memory,
    object(20)  TYPE c,                        "Object
    memcount(4) TYPE c,                        "count
    END OF ty_memory.
    *ALV Customer Wrapper
    TYPES: BEGIN OF ty_type_header_info,
    tabname   TYPE kkblo_tabname,            "Table name
    fieldname TYPE kkblo_fieldname,          "Field name
    sequence  TYPE i,                        "Sequence
    field     TYPE char80,                    "Field
    pagno     TYPE sypagno,                   "Page num
    linno     TYPE sy-linno,                  "Current Line in List
    colno     TYPE sy-colno,                  "Current List Column
    END   OF ty_type_header_info,
    t_type_header_info TYPE SORTED TABLE OF ty_type_header_info
    WITH UNIQUE KEY tabname fieldname.
    TYPES: BEGIN OF ty_type_row_info,
    tabname   TYPE kkblo_tabname,            "Table name
    tabindex  TYPE syindex,                  "Index
    field     TYPE char80,                   "Field name
    pagno     TYPE sypagno,                  "Page num
    linno     TYPE sy-linno,                 "Current Line in List
    colno     TYPE sy-colno,                 "Current List Column
    END   OF ty_type_row_info,
    t_type_row_info TYPE SORTED TABLE OF ty_type_row_info
    WITH UNIQUE KEY tabname tabindex.
    TYPES: BEGIN OF ty_type_sel_header,
    tabname   TYPE kkblo_tabname,           "table name
    fieldname TYPE kkblo_fieldname,         "field name
    END   OF ty_type_sel_header,
    t_type_sel_header TYPE SORTED TABLE OF ty_type_sel_header
    WITH UNIQUE KEY tabname fieldname.
    TYPES: BEGIN OF ty_type_sel_row,
    tabname   TYPE kkblo_tabname,
    tabindex  TYPE syindex,
    END   OF ty_type_sel_row,
    t_type_sel_row TYPE SORTED TABLE OF ty_type_sel_row
    WITH UNIQUE KEY tabname tabindex.
    TYPES: BEGIN OF ty_type_sel_cell,
    tabname   TYPE kkblo_tabname,
    tabindex  TYPE syindex,
    fieldname TYPE kkblo_fieldname,
    END   OF ty_type_sel_cell.
    TYPES: BEGIN OF ty_type_selections,
    t_row_info         TYPE t_type_row_info,
    t_header_info      TYPE t_type_header_info,
    t_selected_headers TYPE t_type_sel_header,
    t_selected_rows    TYPE t_type_sel_row,
    s_current_cell     TYPE ty_type_sel_cell,
    set_headers        TYPE sap_bool,
    set_rows           TYPE sap_bool,
    set_current_cell   TYPE sap_bool,
    END   OF ty_type_selections.
    TYPES: BEGIN OF ty_stack3,
    r_grid         TYPE REF TO cl_gui_alv_grid,        "Y6DK050176
    r_salv_adapter TYPE REF TO if_salv_adapter,
    s_selections   TYPE ty_type_selections,
    r_print_state  TYPE REF TO if_alv_print_parameter_proxy, "Y6DK075821
    suppress_empty_data TYPE abap_bool,
    END OF ty_stack3.
    TYPES: t_stack3 TYPE ty_stack3 OCCURS 0.
    TYPES: BEGIN OF ty_stack,
    i_callback_program       TYPE sy-repid,
    i_callback_user_command  TYPE kkblo_formname,
    i_callback_top_of_page   TYPE kkblo_formname,
    i_callback_top_of_list   TYPE kkblo_formname,
    i_callback_end_of_page   TYPE kkblo_formname,
    i_callback_end_of_list   TYPE kkblo_formname,
    i_callback_pf_status_set TYPE kkblo_formname,
    i_callback_fieldcat_save TYPE kkblo_formname,
    i_callback_layout_save   TYPE kkblo_formname,
    i_tabname                TYPE kkblo_tabname,
    i_tabname_slave          TYPE kkblo_tabname,
    is_keyinfo               TYPE kkblo_keyinfo,
    is_layout                TYPE kkblo_layout,
    it_fieldcat              TYPE kkblo_t_fieldcat,
    i_fctype(1)              TYPE c,
    it_excluding             TYPE kkblo_t_extab,
    it_special_groups        TYPE kkblo_t_sp_group,
    it_sort                  TYPE kkblo_t_sortinfo,
    it_except_qinfo          TYPE kkblo_t_qinfo,
    is_sel_hide              TYPE kkblo_sel_hide,
    t_columns                TYPE kkblo_t_columns,
    t_filter                 TYPE kkblo_t_filter,
    s_lprint                 TYPE kkblo_lprint,
    print_line_break         TYPE char1,
    t_isetab                 TYPE kkblo_seldis,
    t_fccls                  TYPE t_fccls,
    t_sfinfo                 TYPE kkblo_t_sfinfo,
    t_ref_field              TYPE t_ref_field,
    t_dep_field              TYPE t_dep_field,
    flg_default_status(1)    TYPE c,
    flg_selections           TYPE char1,
    flg_allow_no_selection   TYPE char1,
    flg_input                TYPE char1,
    flg_called               TYPE char1,
    flg_popup                TYPE char1,
    flg_endlist              TYPE char1,
    listtype                 TYPE char1,
    actcols                  TYPE i,
    is_list                  TYPE char1,
    END OF ty_stack.
    TYPES: t_stack TYPE ty_stack OCCURS 0.
    TYPES: BEGIN OF ty_stack2,
    button_col1(20)                TYPE c,
    button_col2(20)                TYPE c,
    button_col3(20)                TYPE c,
    button_col4(20)                TYPE c,
    button_col5(20)                TYPE c,
    s_header                       TYPE kkblo_header,
    t_sfinfo_slave                 TYPE kkblo_t_sfinfo,
    t_suminfo                      TYPE kkblo_t_sfinfo,
    t_sfsave                       TYPE kkblo_t_sfinfo,
    t_nosum                        TYPE t_nosum,
    window_title                   TYPE rsmpe-tittext,  " Item_selection
    flg_scroll_to_line(1)          TYPE c, " Item_selection
    flg_top_of_page(1)             TYPE c,
    flg_subtot(1)                  TYPE c,
    flg_output_in_progress(1)      TYPE c,
    flg_grouplevels(1)             TYPE c,
    flg_groupedit(1)               TYPE c,
    flg_calculate_totals(1)        TYPE c,
    sumlevel                       TYPE sy-tabix,
    memory_stack1                  TYPE ty_memory,
    memory_stack2                  TYPE ty_memory,
    memory_outtab                  TYPE ty_memory,
    t_colmark                      TYPE kkblo_t_colmark,
    t_rowmark                      TYPE kkblo_t_rowmark,
    it_event_exit                  TYPE kkblo_t_event_exit,
    t_groups                       TYPE kkblo_t_grouplevels,
    t_filter_groups                TYPE kkblo_t_grouplevels,
    s_subtot_options               TYPE kkblo_subtot_options,
    flg_append_mode(1)             TYPE c,
    is_reprep_id                   TYPE kkblo_reprep_id,
    i_callback_before_line_output  TYPE kkblo_formname,
    i_callback_after_line_output   TYPE kkblo_formname,
    i_callback_foreign_top_of_page TYPE kkblo_formname,
    i_callback_foreign_end_of_page TYPE kkblo_formname,
    i_callback_list_modify         TYPE kkblo_formname,
    i_callback_top_of_coverpage    TYPE kkblo_formname,
    i_callback_end_of_coverpage    TYPE kkblo_formname,
    i_callback_grouplevel_change   TYPE kkblo_formname,
    i_callback_item_data_expand    TYPE kkblo_formname,
    i_callback_header_transport    TYPE kkblo_formname,
    i_callback_reprep_sel_modify   TYPE kkblo_formname,
    i_callback_subtotal_text       TYPE kkblo_formname,
    END OF ty_stack2.
    TYPES: t_stack2 TYPE TABLE OF ty_stack2 INITIAL SIZE 0.
    ** *--- iTables
    DATA: it_stack  TYPE t_stack WITH HEADER LINE.
    DATA: it_stack2 TYPE t_stack2 WITH HEADER LINE.
    ***ALV Customer Wrapper
    DATA: it_stack3 TYPE t_stack3 WITH HEADER LINE.
    CONSTANTS: BEGIN OF c_con_listtype,
    simple(1)    TYPE c VALUE 'S',
    hier_sequ(1) TYPE c VALUE 'H',
    matrix(1)    TYPE c VALUE 'M',
    END OF c_con_listtype.
    DATA:   gv_callback_program1      TYPE sy-repid,
    gv_callback_user_command1 TYPE kkblo_formname,
    gv_callback_top_of_page1  TYPE kkblo_formname,
    gv_callback_top_of_list1  TYPE kkblo_formname,
    gv_callback_end_of_page1  TYPE kkblo_formname,
    gv_callback_end_of_list1   TYPE kkblo_formname,
    gv_callback_pf_status_set1  TYPE kkblo_formname,
    gv_callback_layout_save1    TYPE kkblo_formname,
    gv_callback_fieldcat_save1  TYPE kkblo_formname,
    gv_callback_grouplevel_change1  TYPE kkblo_formname,
    gv_callback_before_line_otput1  TYPE kkblo_formname,
    gv_callback_after_line_otput1  TYPE kkblo_formname,
    gv_callback_foreign_top_of_pg1  TYPE kkblo_formname,
    gv_callback_foreign_end_of_pg1  TYPE kkblo_formname,
    gv_callback_list_modify1          TYPE kkblo_formname,
    gv_callback_top_of_coverpge1     TYPE kkblo_formname,
    gv_callback_end_of_coverpge1     TYPE kkblo_formname,
    gv_callback_item_data_expand1     TYPE kkblo_formname,
    gv_callback_header_transport1     TYPE kkblo_formname,
    gv_callback_reprep_sel_modify1    TYPE kkblo_formname,
    gv_callback_subtotal_text1       TYPE kkblo_formname,
    gv_layout1   TYPE  kkblo_layout,
    gv_fieldcat1  TYPE  kkblo_t_fieldcat,
    gv_fctype1  TYPE c,
    gv_event_exit1  TYPE  kkblo_t_event_exit,
    gv_excluding1   TYPE  kkblo_t_extab,
    gv_special_groups1  TYPE  kkblo_t_sp_group,
    gv_sort1  TYPE  kkblo_t_sortinfo,
    gv_filter1  TYPE  kkblo_t_filter,
    gv_except_qinfo1  TYPE  slis_t_qinfo_alv,
    gv_sel_hide1  TYPE  slis_sel_hide_alv,
    gv_reprep_id1   TYPE  slis_reprep_id,
    gv_screen_start_column1  TYPE i,
    gv_salv_adapter1   TYPE REF TO if_salv_adapter,
    gv_suppress_empty_data1  TYPE  sap_bool.
    FUNCTION z_excel_download_test.
    *"*"Local Interface:
    *"  IMPORTING
    *"     REFERENCE(I_BYPASSING_BUFFER) TYPE  CHAR01 OPTIONAL
    *"     REFERENCE(I_BUFFER_ACTIVE) OPTIONAL
    *"     REFERENCE(I_CALLBACK_PROGRAM) TYPE  SY-REPID OPTIONAL
    *"     REFERENCE(I_CALLBACK_USER_COMMAND) OPTIONAL
    *"     REFERENCE(I_CALLBACK_TOP_OF_PAGE) OPTIONAL
    *"     REFERENCE(I_CALLBACK_TOP_OF_LIST) OPTIONAL
    *"     REFERENCE(I_CALLBACK_END_OF_PAGE) OPTIONAL
    *"     REFERENCE(I_CALLBACK_END_OF_LIST) OPTIONAL
    *"     REFERENCE(I_CALLBACK_PF_STATUS_SET) OPTIONAL
    *"     REFERENCE(I_CALLBACK_LAYOUT_SAVE) OPTIONAL
    *"     REFERENCE(I_CALLBACK_FIELDCAT_SAVE) OPTIONAL
    *"     REFERENCE(I_CALLBACK_GROUPLEVEL_CHANGE) OPTIONAL
    *"     REFERENCE(I_CALLBACK_BEFORE_LINE_OUTPUT) OPTIONAL
    *"     REFERENCE(I_CALLBACK_AFTER_LINE_OUTPUT) OPTIONAL
    *"     REFERENCE(I_CALLBACK_FOREIGN_TOP_OF_PAGE) OPTIONAL
    *"     REFERENCE(I_CALLBACK_FOREIGN_END_OF_PAGE) OPTIONAL
    *"     REFERENCE(I_CALLBACK_LIST_MODIFY) OPTIONAL
    *"     REFERENCE(I_CALLBACK_TOP_OF_COVERPAGE) OPTIONAL
    *"     REFERENCE(I_CALLBACK_ITEM_DATA_EXPAND) OPTIONAL
    *"     REFERENCE(I_CALLBACK_END_OF_COVERPAGE) OPTIONAL
    *"     REFERENCE(I_CALLBACK_HEADER_TRANSPORT) OPTIONAL
    *"     REFERENCE(I_CALLBACK_REPREP_SEL_MODIFY) OPTIONAL
    *"     REFERENCE(I_CALLBACK_SUBTOTAL_TEXT) OPTIONAL
    *"     REFERENCE(I_TABNAME) TYPE  SLIS_TABNAME OPTIONAL
    *"     REFERENCE(I_FCTYPE) DEFAULT 'R'
    *"     REFERENCE(IT_EXCEPT_QINFO) TYPE  SLIS_T_QINFO_ALV OPTIONAL
    *"     REFERENCE(IS_SEL_HIDE) TYPE  SLIS_SEL_HIDE_ALV OPTIONAL
    *"     REFERENCE(IS_REPREP_ID) TYPE  SLIS_REPREP_ID OPTIONAL
    *"     REFERENCE(I_SCREEN_START_COLUMN) DEFAULT 0
    *"     REFERENCE(I_OO_ALV) OPTIONAL
    *"     REFERENCE(IR_SALV_ADAPTER) TYPE REF TO  IF_SALV_ADAPTER OPTIONAL
    *"     REFERENCE(I_SUPPRESS_EMPTY_DATA) TYPE  SAP_BOOL DEFAULT
    *"       ABAP_FALSE
    *"     REFERENCE(I_FILE) TYPE  STRING OPTIONAL
    *"     REFERENCE(IT_FIELDCAT) TYPE  SLIS_T_FIELDCAT_ALV OPTIONAL
    *"     REFERENCE(IS_LAYOUT) TYPE  SLIS_LAYOUT_ALV OPTIONAL
    *"     REFERENCE(IT_SORT) TYPE  SLIS_T_SORTINFO_ALV OPTIONAL
    *"     REFERENCE(IT_FILTER) TYPE  SLIS_T_FILTER_ALV OPTIONAL
    *"     REFERENCE(IT_EXCLUDING) TYPE  SLIS_T_EXTAB OPTIONAL
    *"     REFERENCE(IT_SPECIAL_GROUPS) TYPE  SLIS_T_SP_GROUP_ALV OPTIONAL
    *"     REFERENCE(IS_KEYINFO) TYPE  SLIS_KEYINFO_ALV OPTIONAL
    *"     REFERENCE(IT_EVENT_EXIT) TYPE  SLIS_T_EVENT_EXIT OPTIONAL
    *"     REFERENCE(IS_LIST_SCROLL) TYPE  SLIS_LIST_SCROLL OPTIONAL
    *"     REFERENCE(IS_PRINT) TYPE  SLIS_PRINT_ALV OPTIONAL
    *"     REFERENCE(IS_LINEINFO) TYPE  SLIS_LINEINFO OPTIONAL
    *"     REFERENCE(I_REPID) TYPE  SYREPID OPTIONAL
    *"  TABLES
    *"      T_OUTTAB TYPE  STANDARD TABLE OPTIONAL
    *********** Local data declarations******************
    DATA: gv_list TYPE char1.
    DATA: gv_fcat_complete TYPE sap_bool.
    DATA: gv_buffer_active TYPE char01,
    wa_variant TYPE disvariant.
    DATA: gv_controller TYPE REF TO cl_salv_export_c8r.
    DATA: gv_xml           TYPE xstring.
    DATA: gv_s_xml_choice TYPE if_salv_bs_xml=>s_type_xml_choice.
    DATA: gv_t_xml_choice TYPE if_salv_bs_xml=>t_type_xml_choice.
    DATA: gv_param_lvc TYPE if_salv_export=>s_type_param_lvc.
    DATA: gv_data       TYPE REF TO data.
    DATA: gv_result_data TYPE REF TO cl_salv_ex_result_data_table.
    DATA: gv_flavour TYPE string.
    DATA: gv_version TYPE string.
    DATA:

  • Error while loading the master data into hierarchy

    Hi,
    When i am trying to load the master data into a hierarchy, it is showing me the following error.
    "Invalid Entry, hierarchy xxxxxx does not exist".
    Can you please tell me what might be the possible cause for this error.
    Thanks,
    Prateek

    Hello
    Have you created a hierarchy, I mean go to Transfer structure->Hierarchy structure 
    ->create hierarchy, put a check of whether it is sorted or time dependent etc. after that while loading data through infopackage just check that you have selected an appropriate hierarchy name in hierarchy selection tab.
    Hope it will help!!
    Regards,
    Sandeep

  • Problem with direct input program while uploading data into database

    TABLES:  BGR00,                        " Mappensatz
             BMM00,                        " MM01/MM02  BTCI-Kopfdaten
             BMMH1,                        " MM01/MM02 Hauptdaten
             BMMH2,                        " Länderdaten (Steuern)
             BMMH3,                        " Prognosewerte
             BMMH4,                        " Verbrauchswerte
             BMMH5,                        " Kurztexte
             BMMH6,                        " Mengeneinheiten
             BMMH7,                        " Langtexte
             BMMH8.                        " Referentielle EAN's
           Satztypen
    DATA:    MAPPENSATZ  LIKE BMM00-STYPE VALUE '0',
             KOPFSATZ    LIKE BMM00-STYPE VALUE '1',
             HAUPTSATZ   LIKE BMM00-STYPE VALUE '2',
             KUN_SATZ    LIKE BMM00-STYPE VALUE 'Z',
             LANDSATZ    LIKE BMM00-STYPE VALUE '3',
             PROGSATZ    LIKE BMM00-STYPE VALUE '4',
             VERBSATZ    LIKE BMM00-STYPE VALUE '5',
             KTEXTSATZ   LIKE BMM00-STYPE VALUE '6',
             MESATZ      LIKE BMM00-STYPE VALUE '7',
             TEXTSATZ    LIKE BMM00-STYPE VALUE '8',
             EANSATZ     LIKE BMM00-STYPE VALUE '9'.
    Common Data Bereich fuer die extern aufgerufenen Routinen
           Initialstrukturen
    DATA:  BEGIN OF COMMON PART RMMMBIMY.
    DATA:    BEGIN OF I_BMM00.
               INCLUDE STRUCTURE BMM00.    " Kopfdaten
    DATA:    END OF I_BMM00.
    DATA:    BEGIN OF I_BMMH1.
               INCLUDE STRUCTURE BMMH1.    " Haupdaten
    DATA:    END OF I_BMMH1.
    DATA:    BEGIN OF I_BMMH2.
               INCLUDE STRUCTURE BMMH2.    " Länderdaten
    DATA:    END OF I_BMMH2.
    DATA:    BEGIN OF I_BMMH3.
               INCLUDE STRUCTURE BMMH3.    " Prognosewerte
    DATA:    END OF I_BMMH3.
    DATA:    BEGIN OF I_BMMH4.
               INCLUDE STRUCTURE BMMH4.    " Verbrauchswerte
    DATA:    END OF I_BMMH4.
    DATA:    BEGIN OF I_BMMH5.
               INCLUDE STRUCTURE BMMH5.    " Kurztexte
    DATA:    END OF I_BMMH5.
    DATA:    BEGIN OF I_BMMH6.
               INCLUDE STRUCTURE BMMH6.    " Mengeneinheiten
    DATA:    END OF I_BMMH6.
    DATA:    BEGIN OF I_BMMH7.
               INCLUDE STRUCTURE BMMH7.    " Textzeilen
    DATA:    END OF I_BMMH7.
    DATA:    BEGIN OF I_BMMH8.
               INCLUDE STRUCTURE BMMH8.    " Referentielle EAN's
    DATA:    END OF I_BMMH8.
    DATA:  END OF COMMON PART.
    DATA: WA LIKE TEDATA-DATA.
           Einzelfelder
    DATA:    GROUP_COUNT(6) TYPE C,    " Anzahl Mappen
             TRANS_COUNT(6) TYPE C,    " alte Definition für rmmmbim0
             SATZ_COUNT  LIKE MUEB_REST-TRANC, " Trans.zähler neu
             H_IND_COUNT LIKE MUEB_REST-D_IND, " Index welches Feld zurücks.
             SATZ2_COUNT(6) TYPE C.    " Anz. Sätze je Trans. ohne Kopfsatz
    DATA:    XEOF(1)          TYPE C,  " X=End of File erreicht
             XHAUPTSATZ_EXIST TYPE C,  " X=Hauptsatz zum Kopf exi.
             NODATA(1)        TYPE C.  " kein BI für dieses Feld
    mk/15.08.94:
    DATA:    GROUP_OPEN(1)  TYPE C.             " X=Mappe schon geöffnet
    *eject
           Konstanten
    DATA:    C_NODATA(1)    TYPE C VALUE '/'.   " Default für NODATA
    DATA:    MATNR_ERW     LIKE MARA-MATNR  VALUE '0                 '.
    DATA:    MATNR_ERW_INT LIKE MARA-MATNR.  "internal sight of '0      '
    DATA:    MATNR_LAST    LIKE MARA-MATNR.  "Material number
    mk/11.08.94 2.1H:
    If this flag is initial, the database updates will be done directly
    during background maintenance instead of using a separate update
    task. (no usage of this flag in dialogue mode!)
    DATA: DBUPDATE_VB(1) VALUE ' '.       "note 306628
    data: matsync type mat_sync. "wk/99a no update in dialog if called
    ***INCLUDE ZMUSD070.
    TABLES: MARA,                          "Material Master: General Data
            MARC,                          "Material Master: C Segment
            MARD,                          "Material Master: St Loc/Batch
            MBEW,                          "Material Valuation
            MVKE,                          "Material Master: Sales Data
            MLGN,                          "Material Data per Whse Number
            MLAN,                          "Tax Classification: Material
            T001W,                         "Plants/Branches
            TBICU.
    DATA: BEGIN OF VALUTAB OCCURS 0.
            INCLUDE STRUCTURE RSPARAMS.
    DATA: END OF VALUTAB.
    DATA: BEGIN OF VARTECH.
            INCLUDE STRUCTURE VARID.
    DATA: END OF VARTECH.
    DATA: PARMS LIKE ZXXDCONV.
    DATA: REC_COUNT      TYPE  I,
          REC_COUNT_BAD  TYPE  I,
          ZJOBID         LIKE  TBIZU-JOBID,
          ZJOBCOUNT      LIKE  TBIZU-JOBCOUNT,
          ZMATNR         LIKE  MARA-MATNR,
          ZTEXT(80)      TYPE  C.
    CONSTANTS: LIT_ZERO(18)  TYPE  C            VALUE '000000000000000000',
               LIT_CHAR      TYPE  C            VALUE '_',
               LIT_CREATE    LIKE  BMM00-TCODE  VALUE 'MM01',
               LIT_CHANGE    LIKE  BMM00-TCODE  VALUE 'MM02',
               LIT_CHECK(1)  TYPE  C            VALUE 'X'.
    DATA:  BEGIN OF INP_DATA OCCURS 0,
             MATNR(18)  TYPE C,            " Material code
             UMREN(6)   TYPE C,            " Denominator
             MEINH(3)   TYPE C,            " Alternate UOM
             UMREZ(6)   TYPE C,            " Numerator
           END OF INP_DATA.
    *eject
    SELECTION-SCREEN BEGIN OF BLOCK INOUT WITH FRAME TITLE TEXT-001.
    SELECTION-SCREEN BEGIN OF LINE.
    SELECTION-SCREEN COMMENT (13) TEXT-004.
    PARAMETERS:     P_PC        RADIOBUTTON GROUP SRC DEFAULT 'X'.
    SELECTION-SCREEN COMMENT (6) TEXT-005.
    PARAMETERS:     P_UNIX      RADIOBUTTON GROUP SRC.
    SELECTION-SCREEN COMMENT (6) TEXT-006.
    PARAMETERS:     P_DS_TYP    LIKE     ZXXDCONV-DS_TYP
                                   DEFAULT 'ASC'.
    SELECTION-SCREEN END OF LINE.
    *SELECT-OPTIONS: S_PATH      FOR      PARMS-PATH
                                  NO INTERVALS
                                  LOWER CASE.
    PARAMETERS:  P_PATH TYPE RLGRAP-FILENAME.
    PARAMETERS:     P_HDRLIN   LIKE     ZXXDCONV-HDR_LINES
                                   DEFAULT 0,
                    P_JOBNAM   LIKE     TBICU_S-JOBNAME
                                   MEMORY ID BM1,
                    P_DI_EXE    AS       CHECKBOX
                                   DEFAULT  LIT_CHECK,
                    P_MAPPE     LIKE     BGR00-GROUP
                                   DEFAULT  'MRP_UOM_LOAD'
                                   NO-DISPLAY.
    SELECTION-SCREEN END OF BLOCK INOUT.
    *eject
    AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_PATH.
      CALL FUNCTION 'KD_GET_FILENAME_ON_F4'
           EXPORTING
                PROGRAM_NAME  = SYST-REPID
                DYNPRO_NUMBER = SYST-DYNNR
                FIELD_NAME    = 'P_PATH'
           CHANGING
               FILE_NAME     = S_PATH-LOW
                FILE_NAME     = P_PATH
           EXCEPTIONS
                MASK_TOO_LONG = 1
                OTHERS        = 2.
    AT SELECTION-SCREEN.
    Set up parameter record
      PARMS-UNIX      = P_UNIX.
      PARMS-PC        = P_PC.
      PARMS-DS_TYP    = P_DS_TYP.
      PARMS-JOBNAME   = P_JOBNAM.
      PARMS-MAPPE     = P_MAPPE.
      PARMS-HDR_LINES = P_HDRLIN.
    *eject
           Main Processing Routine                                       *
    START-OF-SELECTION.
    Initialization
      PERFORM 0000_HOUSEKEEPING.
    Initialize transaction data in I_BM00
    PERFORM 0500_INIT_BMM00.
    Process input files
    SORT S_PATH BY SIGN OPTION LOW.
         MOVE S_PATH-LOW TO PARMS-PATH.
          MOVE P_PATH TO PARMS-PATH.
    LOOP AT S_PATH.
       AT NEW LOW.
          CLEAR   INP_DATA.
         REFRESH INP_DATA.
    Read source data into internal table
          PERFORM 1000_GET_SOURCE_DATA TABLES INP_DATA.
    Processs each record in internal table
          ZTEXT    = TEXT-007.
          ZTEXT+13 = PARMS-DS_NAME.
          PERFORM 4000_PROGRESS_INDICATOR USING ZTEXT.
    Initialize transaction data in I_BM00
      PERFORM 0500_INIT_BMM00.
          LOOP AT INP_DATA.
    Reset tables for each record
            BMM00              = I_BMM00.
            BMMH1              = I_BMMH1.
            BMMH6              = I_BMMH6.
    Load structures with data
            MOVE-CORRESPONDING INP_DATA TO BMM00.
            PERFORM 2000_WRITE_OUTPUT USING BMM00.
            MOVE-CORRESPONDING INP_DATA TO BMMH1.
            PERFORM 2000_WRITE_OUTPUT USING BMMH1.
            MOVE-CORRESPONDING INP_DATA TO BMMH6.
            PERFORM 2000_WRITE_OUTPUT USING BMMH6.
            REC_COUNT = REC_COUNT + 1.
          ENDLOOP.
       ENDAT.
    ENDLOOP.
      IF  REC_COUNT GT 0
      AND P_DI_EXE  EQ LIT_CHECK.
        PERFORM 3000_START_DI_JOB.
      ENDIF.
    WRITE: / TEXT-008,
               REC_COUNT.
      PERFORM 9000_END_OF_JOB.
    *eject
    Include containing common routines used by direct input programs
      INCLUDE ZMUSD071.
    *eject
          FORM 0500_INIT_BMM00                                          *
          Initialize I_BMM00 with transaction code and views selected   *
    FORM 0500_INIT_BMM00.
    ***this changes done by samson**
    if not inp_data[] is initial.
    select single matnr from mara INTO ZMATNR where matnr = inp_data-matnr.
    if sy-subrc = 0.
      I_BMM00-TCODE = LIT_CHANGE.
    Basic data
      I_BMM00-XEIK1  = LIT_CHECK.
    else.
      I_BMM00-TCODE = LIT_CREATE.
    Basic data
      I_BMM00-XEIK1 = LIT_CHECK.
    endif.
    endif.
    **this changes above done by samson**
    Transaction code
    I_BMM00-TCODE = LIT_CHANGE.
    Basic data
    I_BMM00-XEIK1  = LIT_CHECK.
    ENDFORM.
    INCLUDE ZMUSD069.
    *eject
          FORM 0000_HOUSEKEEPING                                        *
          Initialization routines                                       *
    FORM 0000_HOUSEKEEPING.
      PERFORM 0010_LDS_NAME.
      PERFORM 0020_DS_NAME.
      PERFORM 0030_OPEN_FILE.
      PERFORM 0040_INIT_STRUCTS.
    ENDFORM.
    *eject
          FORM 0010_LDS_NAME                                            *
          Obtain logical file name from DI job details                  *
    FORM 0010_LDS_NAME.
    Check valid job name
      SELECT SINGLE * FROM  TBICU
                      WHERE JOBNAME EQ PARMS-JOBNAME.
      IF SY-SUBRC EQ 0.
        CALL FUNCTION 'RS_VARIANT_VALUES_TECH_DATA'
             EXPORTING
                  REPORT               = TBICU-REPNAME
                  VARIANT              = TBICU-VARIANT
             IMPORTING
                  TECHN_DATA           = VARTECH
             TABLES
                  VARIANT_VALUES       = VALUTAB
             EXCEPTIONS
                  VARIANT_NON_EXISTENT = 1
                  VARIANT_OBSOLETE     = 2
                  OTHERS               = 3.
        IF SY-SUBRC EQ 0.
          READ TABLE VALUTAB WITH KEY 'LDS_NAME'.
          MOVE VALUTAB-LOW TO PARMS-LDS_NAME.
        ELSE.
          MESSAGE I001 WITH PARMS-JOBNAME.
          MESSAGE A099.
        ENDIF.
      ELSE.
        MESSAGE I000 WITH PARMS-JOBNAME.
        MESSAGE A099.
      ENDIF.
    ENDFORM.
    *eject
          FORM 0040_INIT_STRUCTS                                        *
          Initialize structures for direct input records                *
    FORM 0040_INIT_STRUCTS.
    Start of standard SAP initialization from example program RMMMBIME
    *------- Write session record -
      CLEAR BGR00.
      BGR00-STYPE  = MAPPENSATZ.
      BGR00-GROUP  = PARMS-MAPPE.
      BGR00-NODATA = C_NODATA.
      BGR00-MANDT  = SY-MANDT.
      BGR00-USNAM  = SY-UNAME.
      BGR00-START  = BGR00-NODATA.
      BGR00-XKEEP  = BGR00-NODATA.
      PERFORM 2000_WRITE_OUTPUT USING BGR00.
    *----- Initialize structures -
      NODATA = BGR00-NODATA.
      PERFORM INIT_STRUKTUREN_ERZEUGEN(RMMMBIMI) USING NODATA.
    End of standard SAP initialization from example program RMMMBIME
    ENDFORM.
    *eject.
          FORM 3000_START_DI_JOB                                        *
          Start direct input job                                        *
    FORM 3000_START_DI_JOB.
      ZTEXT = 'Starting '(021).
      ZTEXT+9 = TBICU-JOBNAME.
      PERFORM 4000_PROGRESS_INDICATOR USING ZTEXT.
      CALL FUNCTION 'BI_START_JOB'
           EXPORTING
                JOBID                 = ' '
                JOBTEXT               = TBICU-JOBNAME
                REPNAME               = TBICU-REPNAME
                SERVER                = TBICU-EXECSERVER
                VARIANT               = TBICU-VARIANT
                NEW_JOB               = 'X'
                CONTINUE_JOB          = ' '
                START_IMMEDIATE       = 'X'
                DO_NOT_PRINT          = 'X'
                USERNAME              = SY-UNAME
           IMPORTING
                JOBID                 = ZJOBID
                JOBCOUNT              = ZJOBCOUNT
           EXCEPTIONS
                JOB_OPEN_FAILED       = 1
                JOB_CLOSE_FAILED      = 2
                JOB_SUBMIT_FAILED     = 3
                WRONG_PARAMETERS      = 4
                JOB_DOES_NOT_EXIST    = 5
                WRONG_STARTTIME_GIVEN = 6
                JOB_NOT_RELEASED      = 7
                WRONG_VARIANT         = 8
                NO_AUTHORITY          = 9
                DIALOG_CANCELLED      = 10
                JOB_ALREADY_EXISTS    = 11
                PERIODIC_NOT_ALLOWED  = 12
                ERROR_NUMBER_GET_NEXT = 13
                OTHERS                = 14.
      IF SY-SUBRC EQ 0.
        WRITE: / 'Direct input job'(022), TBICU-JOBNAME, 'started'.
      ELSE.
        WRITE: / 'Direct input failed with return code'(023), SY-SUBRC.
      ENDIF.
    FORM 0020_DS_NAME.
      CALL FUNCTION 'FILE_GET_NAME'
           EXPORTING
                CLIENT           = SY-MANDT
                LOGICAL_FILENAME = PARMS-LDS_NAME
                OPERATING_SYSTEM = SY-OPSYS
           IMPORTING
                FILE_NAME        = PARMS-DS_NAME
           EXCEPTIONS
                FILE_NOT_FOUND   = 1
                OTHERS           = 2.
      IF SY-SUBRC NE 0.
        MESSAGE E002 WITH PARMS-LDS_NAME.
        MESSAGE A099.
      ENDIF.
    ENDFORM.
    *eject
          FORM 0030_OPEN_FILE                                           *
          Open physical file for output                                 *
    FORM 0030_OPEN_FILE.
    OPEN DATASET PARMS-DS_NAME FOR OUTPUT IN TEXT MODE. "thg191105
      OPEN DATASET PARMS-DS_NAME FOR OUTPUT IN TEXT MODE
                                     encoding default. "thg191105
      IF SY-SUBRC NE 0.
        MESSAGE E003 WITH PARMS-DS_NAME.
        MESSAGE A099.
      ENDIF.
    ENDFORM.
    *eject
          FORM 1000_GET_SOURCE_DATA                                     *
          Read source data into internal table                          *
    -->  INP_DATA   " Name of internal table passed as parameter       *
    FORM 1000_GET_SOURCE_DATA TABLES INP_DATA.
      CALL FUNCTION 'Z_FILE_UPLOAD'
           EXPORTING
                UNIX                = PARMS-UNIX
                PC                  = PARMS-PC
                FILETYPE            = PARMS-DS_TYP
                FILENAME            = PARMS-PATH
                HDR_LINES           = PARMS-HDR_LINES
           TABLES
                DATA_TAB            = INP_DATA
           EXCEPTIONS
                CONVERSION_ERROR    = 1
                FILE_OPEN_ERROR     = 2
                FILE_READ_ERROR     = 3
                INVALID_TABLE_WIDTH = 4
                INVALID_TYPE        = 5
                NO_BATCH            = 6
                UNKNOWN_ERROR       = 7
                INVALID_SOURCE      = 8
                OTHERS              = 9.
    ENDFORM.
    *eject
          FORM 2000_WRITE_OUTPUT                                        *
          Write record in standard SAP structure to UNIX file           *
    -->  I_STRUCT   " Name of record passed as parameter               *
    *FORM 2000_WRITE_OUTPUT USING I_STRUCT."SRY28NOV05
    FORM 2000_WRITE_OUTPUT USING I_STRUCT TYPE ANY.      "SRY28NOV05
       TRANSFER I_STRUCT TO PARMS-DS_NAME.
      IF SY-SUBRC NE 0.
        MESSAGE E004 WITH PARMS-DS_NAME.
        MESSAGE A099.
      ENDIF.
    ENDFORM.
    *eject
    *&      Form  2100_WS_DOWNLOAD
          text                                                           *
    -->  p1        text
    <--  p2        text
    FORM 2100_WS_DOWNLOAD TABLES INP_DATA.
    DATA: FILENAME LIKE RLGRAP-FILENAME.   "SRY28NOV05
      DATA: W_FILENAME TYPE STRING.             "SRY28NOV05
      DATA: W_FTYP(10) TYPE C VALUE 'DAT'.      "SRY28NOV05
    MOVE PARMS-DS_NAME TO FILENAME.       "SRY28NOV05
      MOVE PARMS-DS_NAME TO W_FILENAME.      "SRY28NOV05
    *BEGIN OF BLOCK COMMENT BY SRY28NOV05
    CALL FUNCTION 'WS_DOWNLOAD'
          EXPORTING
            BIN_FILESIZE        = ' '
            CODEPAGE            = ' '
               FILENAME            = FILENAME
               FILETYPE            = 'DAT'
            MODE                = ' '
            WK1_N_FORMAT        = ' '
            WK1_N_SIZE          = ' '
            WK1_T_FORMAT        = ' '
            WK1_T_SIZE          = ' '
            COL_SELECT          = ' '
            COL_SELECTMASK      = ' '
       importing
            filelength          =
          TABLES
               DATA_TAB            = INP_DATA
            FIELDNAMES          =
          EXCEPTIONS
               FILE_OPEN_ERROR     = 1
               FILE_WRITE_ERROR    = 2
               INVALID_FILESIZE    = 3
               INVALID_TABLE_WIDTH = 4
               INVALID_TYPE        = 5
               NO_BATCH            = 6
               UNKNOWN_ERROR       = 7
               OTHERS              = 8.
    *END OF BLOCK COMMENT BY SRY28NOV05
    *BEGIN OF BLOCK ADDED BY SRY28NOV05
      CALL FUNCTION 'GUI_DOWNLOAD'
        EXPORTING
          FILENAME                        = W_FILENAME
          FILETYPE                        = W_FTYP
        TABLES
          DATA_TAB                        = INP_DATA
       EXCEPTIONS
         FILE_WRITE_ERROR                = 1
         NO_BATCH                        = 2
         GUI_REFUSE_FILETRANSFER         = 3
         INVALID_TYPE                    = 4
         NO_AUTHORITY                    = 5
         UNKNOWN_ERROR                   = 6
         HEADER_NOT_ALLOWED              = 7
         SEPARATOR_NOT_ALLOWED           = 8
         FILESIZE_NOT_ALLOWED            = 9
         HEADER_TOO_LONG                 = 10
         DP_ERROR_CREATE                 = 11
         DP_ERROR_SEND                   = 12
         DP_ERROR_WRITE                  = 13
         UNKNOWN_DP_ERROR                = 14
         ACCESS_DENIED                   = 15
         DP_OUT_OF_MEMORY                = 16
         DISK_FULL                       = 17
         DP_TIMEOUT                      = 18
         FILE_NOT_FOUND                  = 19
         DATAPROVIDER_EXCEPTION          = 20
         CONTROL_FLUSH_ERROR             = 21
         OTHERS                          = 22.
      IF SY-SUBRC NE 0.
         MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
               WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
      ENDIF.
    *END OF BLOCK ADDED BY SRY28NOV05
    ENDFORM.                               " 2100_WS_DOWNLOAD
    *eject
          FORM 4000_PROGRESS_INDICATOR                                  *
          Write progress text to status bar                             *
    -->  TEXT   " Text passed as parameter                             *
    FORM 4000_PROGRESS_INDICATOR USING TEXT.
      CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR'
           EXPORTING
                PERCENTAGE = 0
                TEXT       = TEXT
           EXCEPTIONS
                OTHERS     = 1.
    ENDFORM.
    *eject.
          FORM 9000_END_OF_JOB                                          *
          Close files on UNIX                                           *
    FORM 9000_END_OF_JOB.
      CLOSE DATASET PARMS-DS_NAME.
    ENDFORM.
    FORM 1000_GET_SOURCE_DATA TABLES INP_DATA.
      CALL FUNCTION 'Z_FILE_UPLOAD'
           EXPORTING
                UNIX                = PARMS-UNIX
                PC                  = PARMS-PC
                FILETYPE            = PARMS-DS_TYP
                FILENAME            = PARMS-PATH
                HDR_LINES           = PARMS-HDR_LINES
           TABLES
                DATA_TAB            = INP_DATA
           EXCEPTIONS
                CONVERSION_ERROR    = 1
                FILE_OPEN_ERROR     = 2
                FILE_READ_ERROR     = 3
                INVALID_TABLE_WIDTH = 4
                INVALID_TYPE        = 5
                NO_BATCH            = 6
                UNKNOWN_ERROR       = 7
                INVALID_SOURCE      = 8
                OTHERS              = 9.
    ENDFORM.
    *eject
          FORM 2000_WRITE_OUTPUT                                        *
          Write record in standard SAP structure to UNIX file           *
    -->  I_STRUCT   " Name of record passed as parameter               *
    *FORM 2000_WRITE_OUTPUT USING I_STRUCT."SRY28NOV05
    FORM 2000_WRITE_OUTPUT USING I_STRUCT TYPE ANY.      "SRY28NOV05
       TRANSFER I_STRUCT TO PARMS-DS_NAME.
      IF SY-SUBRC NE 0.
        MESSAGE E004 WITH PARMS-DS_NAME.
        MESSAGE A099.
      ENDIF.
    ENDFORM.
    *eject
    *&      Form  2100_WS_DOWNLOAD
          text                                                           *
    -->  p1        text
    <--  p2        text
    FORM 2100_WS_DOWNLOAD TABLES INP_DATA.

    Hi,
    Thnaks for your reply, This is my requirement.
    Here my problem is i am trying to upload the data from flatfile which contain materil number, denominator, Actual UOM, Nominator field values.
    Which is the data i need to upload into MM02 and MM01, if material number is new then it has to create the material, if material is already existing it has to update the UOM values.
    here i am getting data into my internal table INP_DATA, from that i am trying to upload the data to database by using job name MRP_MATERIAL_MASTER_DATA_UPLOAD with direct input program RMDATIND.
    when i execute my program i am getting success message all the records writtin from flatfile to application server. and job started message.
    then if i go into sm37 screen there i execute the job it is also giving active message. if i refresh it it is showing job completed message.
    then i look at job log status. there i found that for existing material it is expecting material type, for new material it is giving some gravity error.
    So could u help me in this it will be gr8.
    Thanks & Regards,
    RamNV

  • Getting data into internal table wa_final

    Hi Guys
    I have change the logic for this program , I have created 2 workareas and internal table now I need help to place the data into
         wa_final-max_date = wa_data-idate.
             wa_final-min_date  = wa_data-idate.
             wa_final-max_km  = wa_data-recdv.
             wa_final-min_km  = wa_data-recdv.
             wa_final-max_hR   = wa_data-recdv.
             wa_final-min_hR   = wa_data-recdv.
             wa_final-max_lit  = wa_data-recdv.
             wa_final-min_lit  = wa_data-recdv.
             wa_final-t_max_min_km   = wa_data-recdv.  " min_km - max_km
             wa_final-t_max_min_hr  = wa_data-recdv.   " min_hr - max_hr
             wa_final-t_max_min_lit  = wa_data-recdv.  " min_lit - max_lit.
    so how can I put the logic to the value please correct my program.seeing my program can anyone give some idea ?
    REPORT Z_FUEL_MONTHLY_QTY LINE-SIZE  260 LINE-COUNT 75
             NO STANDARD PAGE HEADING.
    TABLES : equi,
             equz,
             imptt,
             imrg,
             eqkt,
             iloa.
    Type Declaration
    *DATA: BEGIN OF ty_equi occurs 0,
         equnr type equi-equnr,
         END OF ty_equi.
    *DATA: BEGIN of ty_eqkt occurs 0,
         equnr type eqkt-equnr,
         eqktx type eqkt-eqktx,
         END OF ty_eqkt.
    *DATA: BEGIN of ty_iloa occurs 0,
         iloan type iloa-iloan,
         eqfnr type iloa-eqfnr,
         END OF ty_iloa.
    *DATA: BEGIN of ty_imptt occurs 0,
         mpobj type imptt-mpobj,
         END of ty_imptt.
    *DATA: BEGIN of ty_imrg occurs 0,
         idate type imrg-idate,
         recdv type imrg-recdv,
         recdu type imrg-recdu,
         END of ty_imrg.
    TYPES:  BEGIN OF ty_data  ,
             equnr      type equnr,         " Euipment no
             eqktx      type eqkt-eqktx,    " Equipment Text
             eqfnr       type iloa-eqfnr,     " Equipment Sort field
             idate      type imrg-idate,    " Measuring Date
             recdu      type imrg-recdu,    " Unit of measuring ='KM','L','H'
             recdv      type imrg-recdv,    " Counter reading data
           END OF ty_data.
    TYPES: BEGIN OF ty_final,
             equnr           type equnr,            "  Equipment no
             eqktx           type eqkt-eqktx,       "  Equipment Text
             eqfnr           type iloa-eqfnr,       "  Equipment Sort field
             min_date        type imrg-idate,       "  Min Date
             min_km          type p decimals 2,     "  Max Km
             max_km          type p decimals 2,     "  Min km
             t_max_min_km    type i,                "  Total min_km-max_km
             max_date        type imrg-idate,       "  Max Date
             min_hr          type imrg-recdv,       "  Max hr
             max_hr          type imrg-recdv,       "  Min hr
             t_max_min_hr    type i,                "  Total min_hr-max_hr
             min_lit         type imrg-recdv,       "  Max lit
             max_lit         type imrg-recdv,       "  Min lit
             t_max_min_lit   type i,                "  Total min_lit-max_lit
             fuel_con        type p decimals 2,     "  Total_hrs / t_max_min_hr
             km_l            type p decimals 2,     "  km / L
             lit_per_hr      type i           ,     "  fuel comsumed / t_max_min_hr
           END OF ty_final.
    DATA: i_data TYPE TABLE OF ty_data, " internal table
    wa_data TYPE ty_data, " work area
    i_final TYPE TABLE OF ty_final, " internal table
    wa_final TYPE ty_final. " work area
    DATA :  max_date type date ,
             min_date type date,
             max_km TYPE p DECIMALS 2,
             min_km TYPE p DECIMALS 2,
             max_hr TYPE p DECIMALS 2,
             min_hr TYPE p DECIMALS 2,
             max_lit TYPE p DECIMALS 2,
             min_lit TYPE p DECIMALS 2,
             t_max_min_km  TYPE p DECIMALS 2,
             t_max_min_hr TYPE p DECIMALS 2,
             t_max_min_lit TYPE p DECIMALS 2.
    SELECTION-SCREEN BEGIN OF BLOCK blk WITH FRAME.
    SELECTION-SCREEN BEGIN OF BLOCK blk1 WITH FRAME TITLE text-001.
    SELECT-OPTIONS: p_equnr FOR equi-equnr, "no-extension no intervals,
                    p_idate FOR imrg-idate.  "NO-EXTENSION NO INTERVALS OBLIGATORY,
                    "p_recdu FOR imrg-recdu NO-EXTENSION NO INTERVALS ."default 'M3'" OBLIGATORY.
    SELECTION-SCREEN END OF BLOCK blk1.
    SELECTION-SCREEN BEGIN OF BLOCK blk2 WITH FRAME TITLE text-002.
    SELECTION-SCREEN END OF BLOCK blk2.
    SELECTION-SCREEN END OF BLOCK blk.
    TOP-OF-PAGE.
      FORMAT INTENSIFIED ON.
      WRITE:/1(40) ' INVESTMENT LIMITED  '.
      WRITE:/50(40) ' FUEL CONSUMPTION REPORT ' CENTERED   ,
              2 'Page', sy-pagno.
      FORMAT INTENSIFIED OFF.
      WRITE:/50(40) '----
    ' CENTERED .
      FORMAT INTENSIFIED ON.
      WRITE:/2 sy-datum COLOR 3, sy-uzeit .
      "WRITE:/1 S903-SPMON ."p_yearf.
      ULINE.
      "CENTERED.
      write: /2 'Date From     :'.
      write: /2 'Equipment No  :'.
      write: /2 'Unit          :'.
      SKIP.
      ULINE.
      WRITE:/1 sy-vline,
        2   'EQUIP NO',              10 sy-vline,
        11  'NAME',                  40 sy-vline,
        41  'SORT',                  60 sy-vline,
        61  'MIN DATE',              74 sy-vline,
        75  'MAX DATE',              87 sy-vline,
        88  'MIN KM',                100 sy-vline,
        101  'MAX KM' ,              113 sy-vline,
        114 'TOTALK',                126 sy-vline,
        127  'MIN HR',               139 sy-vline,
        140 'MAX HR',                152 sy-vline,
        153 'TOTALH' ,               167 sy-vline,
        168 'MIN LIT',               180 sy-vline,
        181 'MAX LIT',               193 sy-vline,
        194 'TOTALL',                206 sy-vline,
        207 'FUEL CON',              219 sy-vline,
        220 'KM L',                  232 sy-vline,
        233 'LIT PER KM',            246 sy-vline.
      FORMAT COLOR 3 ON.
      ULINE.
    END-OF-PAGE.
    START-OF-SELECTION.
    select a~equnr d~eqktx f~eqfnr e~idate e~recdu e~recdv
    into table i_data
    from equi AS a
    inner join equz as b
    on a~equnr = b~equnr
    inner join iloa as f
    on b~iloan = f~iloan
    inner join imptt as c
    on a~objnr = c~mpobj
    inner join eqkt as d
    on a~equnr = d~equnr
    inner join imrg as e
    on e~point = c~point
    where a~equnr in p_equnr
    and
    e~idate in p_idate.
    loop  at i_data into wa_data.
    CLEAR: wa_final.
      READ TABLE i_final into wa_final
               with key equnr = wa_data-equnr.
        if sy-subrc EQ 0.
          PERFORM prepare_final_rec USING'M'. " Modify Existing Record
         ElSE.
          PERFORM prepare_final_rec USING'A'. " Append New Record.
        ENDIF.
        ENDLOOP.
        LOOP AT i_final into wa_final.
        WRITE:/1 sy-vline,
    2  wa_final-equnr                                                 , 10 sy-vline,
    11 wa_final-eqktx                                                 , 40 sy-vline,
    41 wa_final-eqfnr                                                 , 60 sy-vline,
    61 wa_final-min_date                                              , 74 sy-vline,
    75 wa_final-max_date                                              , 87 sy-vline,
    88 wa_final-min_km EXPONENT 0 DECIMALS 2 LEFT-JUSTIFIED           , 100 sy-vline,
    101 wa_final-max_km EXPONENT 0 DECIMALS 2 LEFT-JUSTIFIED          , 113 sy-vline,
    114 wa_final-t_max_min_km EXPONENT 0 DECIMALS 2 LEFT-JUSTIFIED    , 126 sy-vline,
    127 wa_final-min_hr EXPONENT 0 DECIMALS 2 LEFT-JUSTIFIED          , 139 sy-vline,
    140 wa_final-max_hr EXPONENT 0 DECIMALS 2 LEFT-JUSTIFIED          , 152 sy-vline,
    153 wa_final-t_max_min_hr EXPONENT 0 DECIMALS 2  LEFT-JUSTIFIED   , 167 sy-vline,
    168 wa_final-min_lit EXPONENT 0 DECIMALS 2 LEFT-JUSTIFIED         , 180 sy-vline,
    181 wa_final-max_lit EXPONENT 0 DECIMALS 2 LEFT-JUSTIFIED         , 193 sy-vline,
    194 wa_final-t_max_min_lit EXPONENT 0 DECIMALS 2 LEFT-JUSTIFIED   , 206 sy-vline,
    207 wa_final-fuel_con EXPONENT 0 DECIMALS 2 LEFT-JUSTIFIED        , 219 sy-vline,
    220 wa_final-km_l EXPONENT 0 DECIMALS 2 LEFT-JUSTIFIED            , 232 sy-vline,
    233 wa_final-lit_per_hr EXPONENT 0 DECIMALS 2 LEFT-JUSTIFIED      , 246 sy-vline.
    ULINE.
    endloop.
    FORM prepare_final_rec  USING    p_mode TYPE char1.
    SORT i_data BY equnr idate descending .
            if wa_data-recdu = 'KM'.
            max_km = wa_data-recdv.
            min_km = wa_data-recdv.
            endif.
            if wa_data-recdu ='H'.
            max_hr = wa_data-recdv.
            min_hr = wa_data-recdv.
            endif.
            if wa_data-recdu ='L'.
            max_lit = wa_data-recdv.
            min_lit = wa_data-recdv.
           endif.
       at new equnr.
           read table i_final into wa_final index sy-tabix.
           write:/ wa_final-equnr, wa_final-eqktx ,wa_final-eqfnr ,wa_final-idate ,
           'Min KM',min_km EXPONENT 0 DECIMALS 2 color 7 ,
            'Min H',min_hr EXPONENT 0 DECIMALS 2 color 7 ,
             'Min L',min_lit EXPONENT 0 DECIMALS 2 color 7.
       endat.
    *at end of equnr.
           read table i_data into wa_data index sy-tabix.
           write:/ wa_final-equnr, wa_final-eqktx ,wa_final-eqfnr ,wa_final-idate ,
           'Max KM', max_km EXPONENT 0 DECIMALS 2 color 7,
           'Max H', max_hr EXPONENT 0 DECIMALS 2 color 7,
           'Max L', max_lit EXPONENT 0 DECIMALS 2 color 7.
    *endat.
             wa_final-max_date = wa_data-idate.
             wa_final-min_date  = wa_data-idate.
             wa_final-max_km  = wa_data-recdv.
             wa_final-min_km  = wa_data-recdv.
             wa_final-max_hR   = wa_data-recdv.
             wa_final-min_hR   = wa_data-recdv.
             wa_final-max_lit  = wa_data-recdv.
             wa_final-min_lit  = wa_data-recdv.
             wa_final-t_max_min_km   = wa_data-recdv.  " min_km - max_km
             wa_final-t_max_min_hr  = wa_data-recdv.   " min_hr - max_hr
             wa_final-t_max_min_lit  = wa_data-recdv.  " min_lit - max_lit.
      IF p_mode = 'A'.
        wa_final-equnr = wa_data-equnr.
        wa_final-eqktx = wa_data-eqktx.
        wa_final-eqfnr = wa_data-eqfnr.
        APPEND wa_final TO i_final.
      ELSE.
        MODIFY i_final FROM wa_final
          TRANSPORTING
              max_date
              min_date
              max_km
              min_km
              max_hr
              min_hr
              max_lit
              min_lit
              t_max_min_km
              t_max_min_hr
              where equnr = wa_data-equnr.
      ENDIF.
    ENDFORM.                    " PREPARE_FINAL_REC
    regards;

    Hi
    Thanks , where to use the loop and endloop.
    I want individual data to go into wa_final but confused how to start to get
    min date..max..date..minkm_value..maxkm_value...total min-max,
    min_hr,max_hr,total diff , min_lit,max_lit, total as in the program but how the data will go according to the values in wa_final
    regards
    Piroz

Maybe you are looking for

  • Insert record works for me, but not my client...

    This is odd - I basically have an ADDT insert record page to add a database record, which as far as I know worked just as it should. But my client is saying it doesn't work on her machine - apparently when she hits 'add record' instead of going to th

  • Single frame goes ungraded in middle of clip

    Hi! I'm having a curious case of a single frame (well a few, actually - however not one-after-the-other) that goes back to it's ungraded state in the middle of a graded clip. This is a screen recording of the problem - password is "sg" URL: https://v

  • User credentials check in the webLogic web service server

    Hi, I am having a simple web service deployed in WebLogic server. I need to customize the SOAP header of this webservice to include username, password, session token and session type parameter in the server side code and do further processsing like c

  • Microsoft BI equivalent to IBM Cognos BI and ORS capabilities (evaluating)

    Hi All! I am looking for a complete BI / ORS (Operational Reporting System) solution for our Enterprise. Currently we are using 3 platforms for our needs: - ERP reporting tools (JDEdwards AS/400). ERP is NOT centralised (4 instances). - Crystal Repor

  • Chart annotation

    After some research, I've found a lot of posts asking about annotating on a chart and the general response is "you can't, use a graph". So here's my situation that I would greatly appreciate some guidance on.  I have an accelerometer that outputs 6 c