The length specification is not a numeric literal or a numeric constant ???

Hi all,
I am facing this error in using the loop with where condition in which i am specifying length specification.
    READ TABLE lt_tds_587 INTO ls_tds_587 WITH KEY pernr = ls_tds_1-pernr.
    IF sy-subrc EQ 0.
      ls_tds-eepfn = ls_tds_587-eepfn.
     CONCATENATE ls_tds_587-eepfn '*' INTO lv_eepfn.
      lv_length = strlen( ls_tds_587-eepfn ).
     CONCATENATE 'SGTXT+1(' lv_length ')' into lv_eepfn.
      LOOP AT lt_reimb INTO ls_reimb WHERE sgtxt+1(lv_length) = ls_tds_587-eepfn.
        IF ls_reimb-shkzg EQ 'H'.
          ls_reimb-dmbtr = ( -1 * ls_reimb-dmbtr ).
        ENDIF.
        ls_tds-reimbursment = ls_tds-reimbursment + ls_reimb-dmbtr.
      ENDLOOP.
    ENDIF.
Any ideas on how to resolve this?????
I can't take lv_lenth as a constant, because its lenght is not fixed, so is it anyway i can fulfill my requirement???
Regards
Tarun

What is the problem statement?  This?
CONCATENATE 'SGTXT+1(' lv_length ')' into lv_eepfn.
try.
loop at ... into ls_reimb.
if lv_length > 0.
LV_EEPFN = ls_reimb-sgtxt+1(lv_length).
else.
endif.
and
IF ls_reimb-shkzg EQ 'H'.
ls_reimb-dmbtr = ls_reimb-dmbtr *  '-1'.
ENDIF.
Edited by: BreakPoint on Jan 20, 2012 3:19 PM

Similar Messages

  • Is it possible to change the length of a note in the score editor?

    I thought I saw somewhere that it was now possible to adjust the length of a note in the score editor graphically, i.e. by clicking on the note and somehow adjust its length directly to change it from 1/4 note to 1/8 (for example).
    I don't want to do this by going over to the "Length" dialog on the left because I hate having to switch from thinking in terms of music notation and then having to think (temporarily) in MIDI ticks per beat, etc.
    I must admit that I'm finding it extremely frustrating to simply enter music into Logic in a score....I thought this was supposed to be one of its strengths but it seems to be providing amazing capabilities at the expense of ease of use for beginners.

    dhjdhj wrote:
    I thought I saw somewhere that it was now possible to adjust the length of a note in the score editor graphically, i.e. by clicking on the note and somehow adjust its length directly to change it from 1/4 note to 1/8 (for example).
    greetings dh... are you into Key Commands? There are two which will help you do the above in a trice:
    • Nudge Region/Event Length Right by SMPTE Frame
    • Nudge Region/Event Length Left by SMPTE Frame
    I set mine to the simple letter o and n
    - I click on a note and press o repeatedly.. it grows and grows longer and longer
    – I click on a note and press n repeatedly.. it shrinks and shrinks shorter and shorter
    All by little increments
    If you keep a Piano Roll window open while you do this, you can see the length do this exactly
    man, it is VERY quick and handy for changing the length of notes
    It really helps to have a view of the midi Piano Roll to cross check the exact length and position of the notes.
    Check out the Key Commands:
    • Set Next Higher division
    • Set Next lower division
    These change the note value in the transport bar near the time signature. Your time signature may be 4/4 but the "grid" on which the notes are appear in the Piano Roll could be displayed in quarter, 8th or 16th notes. If you experiment with these commands, then you can match the note lengths easily to the grid display visually (with the above nudge length commands)
    Also - you may like to experiment with the following 3 KEY Key Commands:
    1 • Nudge Region/Event Position Right by Nudge Value
    2 • Nudge Region/Event Position Left by Nudge Value
    This will move your selected notes forward in time or back in time according to the
    value that is set in the Transport bar - say it is 16ths .. then each press of the key will move the notes a 16th
    or if the value is 8th notes, then each press of the key forward or backwards will move the selected notes forward or back by this amount
    ... amazingly useful when you are taking a whole phrase and pasting it somewhere else, or if say you started to write a phrase in the Score Editor and you started on the wrong beat.. then you just Nudge back and forth
    3 • Set Nudge Value to Division
    .. this will in a trice change change the Nudge Value to whatever Note division value is set in the Transport bar
    HTH and forgive me if I have given you too much information
    ..problem is I spent too much time in the Transport Bar in Los Angeles last year drinking with the iSchwartz and other Logic reprobrates... you should join us some time

  • How can I adjust the length of a note? Please help.

    How can I adjust the length (the sustain time) of a note after I have selected the note? Many thanks.

    Just drag the right end back and forth (mouse over the end of the note - a ] appears) - by holding down ctrlshiftdragging you can change the subdivision into ticks. In the Midi event editor you can do it numerically - just change the numbers displayed in the length section.

  • Error in 4.5b system: Offset specification is not a numeric literal

    Hi,
    from BSEG table, i need to find material docu and item which is getting stored in SGTXT  field of BSEG.
    Now since it is a CHAR 50 Field , there is no proper offset where we can find the Material doc and item.
    For ex:  SGTXT Could be = jibiibom ijo para doc. mat. 4918861754, 0001
    and some time it could be   = nsfuk sdfsde eer 4918861754  0001.
    So dynamically i need to find the values of Material doc and item and than need to query on MSEG to get other data.
    I am able to break this SGTXT Dynamically like
    l_sgtxt = wa_bseg-sgtxt.
      if l_sgtxt ca '0123456789'.
       if sy-subrc eq 0.
          f_pos_mblnr = sy-fdpos.
       endif.
      endif.
      f_pos_mblnr = f_pos_mblnr + 10.
    replace l_sgtxt length f_pos_mblnr with space into l_sgtxt.
    condense l_sgtxt.
        if l_sgtxt ca '0123456789'.
         if sy-subrc eq 0.
           f_pos_zeile = sy-fdpos.
         endif.
        endif.
    select single matnr werks menge meins
        from mseg
        into wa_mseg
    where mblnr = wa_bseg-sgtxt+f_pos_mblnr(10)
    and   mjahr = wa_bseg-zuonr+10(4)
    and   zeile = wa_bseg-sgtxt+f_pos_zeile(4).
    but when i query on MSEG Using the above thing  SGTXT+FPOS_MBLNR is not allowed..
    Regards,
    Mayank

    How is f_pos_mblnr declared? what is the type of the variable?

  • The build specifications does not support VIs with dynamic dispatch terminals

    Why?
    Will it be supported in the near future ?

    pacome wrote:
    I wanted to build a shared DLL.
    The problem occurs when an input Control is a dynamic dispatch terminal.
    "Now that's a horse of a different color!" (Caby, Wizard of Oz, Emerald City Scene).
    Yes the DLL spec never knew about dynamic dispatching.
    Your best option is to wrap the LVOOP stuff up in wrappers and expose the wrappers.
    I'm curious if others have ideas as well.
    Ben
    Ben Rayner
    I am currently active on.. MainStream Preppers
    Rayner's Ridge is under construction

  • RMAN - specification does not match any archived log in the repository

    Hi All,
    Oracle 11G R2 on WIndows woo8 R2 Std Edition
    I am running RMAN (almost for the first time), and i am using a script previously used. As i am checking through the log, i notice some 'errors' though the backup finishes successfully.
    RMAN> crosscheck archivelog all;
    using target database control file instead of recovery catalog
    allocated channel: ORA_DISK_1
    channel ORA_DISK_1: SID=352 device type=DISK
    specification does not match any archived log in the repository
    RMAN> crosscheck backupset;
    using channel ORA_DISK_1
    crosschecked backup piece: found to be 'AVAILABLE'
    backup piece handle=D:\ORACLE\DATABASE\ORADATA\MMSPRD7\ORAFRA\MMSPRD7\BACKUPSET\
    2013_04_23\O1_MF_NCNNF_TAG20130423T134331_8QFL24F7_.BKP RECID=16 STAMP=813505412
    crosschecked backup piece: found to be 'AVAILABLE'
    backup piece handle=D:\ORACLE\DATABASE\ORADATA\MMSPRD7\ORAFRA\MMSPRD7\BACKUPSET\
    2013_04_23\O1_MF_ANNNN_TAG20130423T134334_8QFL26K1_.BKP RECID=17 STAMP=813505414
    crosschecked backup piece: found to be 'AVAILABLE'
    backup piece handle=D:\ORACLE\DATABASE\ORADATA\MMSPRD7\ORAFRA\MMSPRD7\BACKUPSET\
    2013_04_23\O1_MF_NCNNF_TAG20130423T134423_8QFL3S48_.BKP RECID=18 STAMP=813505465
    crosschecked backup piece: found to be 'AVAILABLE'
    backup piece handle=D:\ORACLE\DATABASE\ORADATA\MMSPRD7\ORAFRA\MMSPRD7\BACKUPSET\
    2013_04_23\O1_MF_ANNNN_TAG20130423T134427_8QFL3V9J_.BKP RECID=19 STAMP=813505467
    crosschecked backup piece: found to be 'AVAILABLE'
    backup piece handle=D:\ORACLE\DATABASE\ORADATA\MMSPRD7\ORAFRA\MMSPRD7\BACKUPSET\
    2013_04_23\O1_MF_NNNDF_TAG20130423T134428_8QFL3XDT_.BKP RECID=20 STAMP=813505469
    crosschecked backup piece: found to be 'AVAILABLE'
    backup piece handle=D:\ORACLE\DATABASE\ORADATA\MMSPRD7\ORAFRA\MMSPRD7\BACKUPSET\
    2013_04_23\O1_MF_NCSNF_TAG20130423T134428_8QFM4C5S_.BKP RECID=21 STAMP=813506507
    crosschecked backup piece: found to be 'AVAILABLE'
    backup piece handle=D:\ORACLE\DATABASE\ORADATA\MMSPRD7\ORAFRA\MMSPRD7\BACKUPSET\
    2013_04_23\O1_MF_ANNNN_TAG20130423T140148_8QFM4DOT_.BKP RECID=22 STAMP=813506508
    Crosschecked 7 objects
    RMAN> crosscheck copy;
    released channel: ORA_DISK_1
    allocated channel: ORA_DISK_1
    channel ORA_DISK_1: SID=352 device type=DISK
    specification does not match any datafile copy in the repository
    specification does not match any control file copy in the repository
    specification does not match any archived log in the repositorySo there are 2 instances of the errors:
    1) crosscheck archivelog all - when the error happens here, i think this means that there are no archived redo logs in the archivelog destination?? ..or something to that nature.
    2) crosscheck copy - not sure what the other errors mean here.
    Thx in advance!

    1) crosscheck archivelog all - when the error happens here, i think this means that there are no archived redo logs in the archivelog destination?? ..or something to that nature.
    2) crosscheck copy - not sure what the other errors mean here.
    specification does not match any archived log in the repositoryI don't see the error here, it's only a msg that mean : There is no files on XXX destination, which is normal when no files found.

  • How can a make avi files without the length changing?

    I'm hoping someone can help me with this. I'm posting it first here, as the process also involves FinalCut. If there's a better place to get an answer, maybe someone could streer me in that direction.
    I'm doing some subtling which will then be coded onto professional tapes using FCP. I don't have the equipment (digibeta machines) to do that process at my end, so I'm sending the files to a studio and they're going to do the rest for me.
    I have software that'll let me lay down subtitles and then export files with time code, but the software previews with avi files. After messages from the studio telling me that the subtitles were falling out of sync, I finally realized that the avi files I had made from the 30 minute DVD screeners were 4 seconds shorter in length than the material on the screener. I made more and more avi files to double check, each one came out 4 seconds shorter than it should have been. So that's my problem.
    Does anyone know of a way to convert DVD (or VOB) files to avi without losing any time? Alternatively, does anyone know of a program for subtitling that works straight from DVDs? (I looked into Belle Nuit Subtitler, but it's impossible to tell how it works without paying for it and waiting three or four days for the order to manually process.)
    Thanks for any help and sorry my question is so convoluted.

    The best solution to my particular problem seemed to be putting the avi file on the timeline in FCP, selecting it, the choosing "Duration" from the "Modify" menu and resizing it to the length it should have been.
    I'm actually getting a friend to adjust most of the files in Premiere with his PC as I'm still on a G4 PowerBook and the rendering time for the avi files before I can manipulate them was half a day each. (Premiere has a similar feature.)
    Thanks again to Andy for the MPEG Streamclip tip...it looks like it'll be useful in the future, and it's free! Cinematize also looked like it could have helped, but the demo mode only let me test 10 second exports at a time and that wasn't really enough for me to tell if the length changed or not. Didn't buy it this time around.
    I also get the point that there must be a lot of people who use the term "urgent" to mean "hurry up and help me, I don't have time to read" with prolific good Samaratians no doubt tired of being bossed around in that way.
    Fair enough.
    Anyway, the "Duration" option within FCP is one way to fix DVD burns and other format conversions that come out with different time spreads from the original. Rendering can take time on slower Macs though.

  • Odi 11g - malformed numeric constant thru view data

    Hi All,
    From ODI 11g in the Designer Tab - Models
    In the models where I have the Reverse Engineered tables.
    From the reverse engineered tables I select one of the table as SRC_CUSTOMER to see its data I right click and select view data
    I get the message popped up as malformed numeric constant
    When I click on the stack Trace I get
    com.borland.dx.dataset.DataSetException: malformed numeric constant (this is the selected error)
    The entire stack trace has the following details.
    See com.borland.dx.dataset.DataSetException error code:  BASE+66
    com.borland.dx.dataset.DataSetException: malformed numeric constant
        at com.borland.dx.dataset.DataSetException.a(Unknown Source)
        at com.borland.dx.dataset.DataSetException.throwException(Unknown Source)
        at com.borland.dx.dataset.DataSetException.SQLException(Unknown Source)
        at com.borland.dx.sql.dataset.Database.createPreparedStatement(Unknown Source)
        at com.borland.dx.sql.dataset.o.a(Unknown Source)
        at com.borland.dx.sql.dataset.o.d(Unknown Source)
        at com.borland.dx.sql.dataset.o.f(Unknown Source)
        at com.borland.dx.sql.dataset.QueryProvider.e(Unknown Source)
        at com.borland.dx.sql.dataset.JdbcProvider.provideData(Unknown Source)
        at com.borland.dx.dataset.StorageDataSet.refresh(Unknown Source)
        at com.borland.dx.sql.dataset.QueryDataSet.refresh(Unknown Source)
        at com.sunopsis.graphical.frame.edit.AbstractEditFrameGridBorland.initialize(AbstractEditFrameGridBorland.java:628)
        at com.sunopsis.graphical.frame.edit.AbstractEditFrameGridBorland.<init>(AbstractEditFrameGridBorland.java:868)
        at com.sunopsis.graphical.frame.edit.EditFrameTableData.<init>(EditFrameTableData.java:50)
        at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
        at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
        at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
        at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
        at oracle.odi.ui.editor.AbstractOdiEditor$1.run(AbstractOdiEditor.java:176)
        at oracle.ide.dialogs.ProgressBar.run(ProgressBar.java:655)
        at java.lang.Thread.run(Thread.java:662)
    Chained exception:
    java.sql.SQLException: malformed numeric constant
        at org.hsqldb.jdbc.Util.sqlException(Unknown Source)
        at org.hsqldb.jdbc.JDBCPreparedStatement.<init>(Unknown Source)
        at org.hsqldb.jdbc.JDBCConnection.prepareStatement(Unknown Source)
        at sun.reflect.GeneratedMethodAccessor67.invoke(Unknown Source)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:597)
        at oracle.odi.core.datasource.dwgobject.support.OnConnectOnDisconnectDataSourceAdapter$OnDisconnectCommandExecutionHandler.invoke(OnConnectOnDisconnectDataSourceAdapter.java:200)
        at $Proxy2.prepareStatement(Unknown Source)
        at com.borland.dx.sql.dataset.Database.createPreparedStatement(Unknown Source)
        at com.borland.dx.sql.dataset.o.a(Unknown Source)
        at com.borland.dx.sql.dataset.o.d(Unknown Source)
        at com.borland.dx.sql.dataset.o.f(Unknown Source)
        at com.borland.dx.sql.dataset.QueryProvider.e(Unknown Source)
        at com.borland.dx.sql.dataset.JdbcProvider.provideData(Unknown Source)
        at com.borland.dx.dataset.StorageDataSet.refresh(Unknown Source)
        at com.borland.dx.sql.dataset.QueryDataSet.refresh(Unknown Source)
        at com.sunopsis.graphical.frame.edit.AbstractEditFrameGridBorland.initialize(AbstractEditFrameGridBorland.java:628)
        at com.sunopsis.graphical.frame.edit.AbstractEditFrameGridBorland.<init>(AbstractEditFrameGridBorland.java:868)
        at com.sunopsis.graphical.frame.edit.EditFrameTableData.<init>(EditFrameTableData.java:50)
        at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
        at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
        at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
        at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
        at oracle.odi.ui.editor.AbstractOdiEditor$1.run(AbstractOdiEditor.java:176)
        at oracle.ide.dialogs.ProgressBar.run(ProgressBar.java:655)
        at java.lang.Thread.run(Thread.java:662)
    What can be the root cause of this error. Has anything to do with the datatype of the selected tables.
    Because from the model this error occurs for all of the reverse engineered tables.
    Thanks
    Ahmed

    Hi, give a read at this.
    https://forums.oracle.com/thread/666595
    Which technology are you using? Basically error means that you are trying to read number where you have fluff (alphanumeric, null etc)
    Have you checked your table? How have you defined your table?

  • Changing animation frame rate when rendering in photoshop does not change the length of the video?

    I made a walk cycle animation in Photoshop CS6 and want to render it into a quicktime format. I'd like it to be 12 fps, but when I rendered it at 12 fps the video seemed to be missing frames, and the video was 3 seconds long. I have 98 frames to my animation; doing the math, at 12 fps it should be 8 seconds long. Not 3.
    I was confused and for curiosity's sake I rendered the video at 6 fps, trying to really slow it down. The video ended up being STILL 3 seconds long and only maybe 20 frames. I was missing literally 70 frames. I'm so upset with this rendering thing, I could chuck my computer at the wall.
    Does anybody know of a solution to this?
    edit: If it means anything, I've tried rendering it straight from the frame view and the timeline view. Each time I render it I have the timeline frame rate match the rendering frame rate as well.

    floriannaart wrote:
    Changing animation frame rate when rendering in photoshop does not change the length of the video?
    Photoshop CS6 and CC support two types of animation Frame animations and a Video Timeline
    Changing the frame rate should not change the length of a video timeline. It should just change the number of frames that are rendered.  To change the length of a video you need to change the length of the video timeline.  If you increase the length of the timeline and there is audio I'm quite sure there will be a problem with it,  The Video part will most likely be better then the sound. The required number of extra frames can be generated however the video may look like slow motion. If you decrease the length the motion will speed up.  The length of a video is normally done be editing video clips which are trimmed and stitched together to get the desired duration. Not normally done by altering the duration of a clip.
    The duration a of Frame animation is the sum of the times each frame is displayed.  In a frame animation the length of time a frame is displayed can be varied it not a normal motion picture video.  To have a smooth frame animation you need a sufficient number of frames that are different from each other to show smooth motion.  You can use Photoshop Frame animation tween feature to have Photoshop manufacture frames to help with a smoothing the animation.   Once you have a frame animation the length with the motion you want you can have Photoshop convert it to a video timeline and render a normal motion picture video.  It will not have audio but you can add audio to it.

  • I go to "clip adjustments" and change the length of a photo. It reverts back to original length. I also shorten it by moving the yellow "box" around a specific clip. It still reverts back to original length. Why?

    I go to "clip adjustments" and change the length of a clip. It reverts back to original length. I've also tried to shorten it by moving the yellow "box" around a specific clip to shorten. It still reverts back to original length. Why?

    Welcome to iMovie Discussions.
    See my 2nd reply to 'getzcreative', here.

  • Format of the initialization string does not conform to specification starting at index 97 while uploading .xlsx file

    Format of the initialization string does not conform to specification starting at index 97.
    Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.
    Exception Details: System.ArgumentException: Format of the initialization string does not conform to specification starting at index 97.
    Source Error:
    An unhandled exception was generated during the execution of the current web request. Information regarding the origin and location of the exception can be identified using the exception stack trace below.

    Hello,
    The Windows Desktop Perfmon and Diagnostic tools forum is to discuss performance monitor (perfmon), resource monitor (resmon), and task manager, focusing on HOW-TO, Errors/Problems, and usage scenarios.
    Since your post is off-topic, I am moving it to the
    off topic forum.
    Karl
    When you see answers and helpful posts, please click Vote As Helpful, Propose As Answer, and/or Mark As Answer.
    My Blog: Unlock PowerShell
    My Book:
    Windows PowerShell 2.0 Bible
    My E-mail: -join ('6F6C646B61726C406F75746C6F6F6B2E636F6D'-split'(?<=\G.{2})'|%{if($_){[char][int]"0x$_"}})

  • How to get the length of a field value, not the length of DB's CHAR(20)

    Hello.
    I'm trying to handle a String from my DataBase and get its length:
    String myName;
    int i;
    PreparedStatement sql = Conn.prepareStatement("SELECT NAME FROM MY_TABLE");
    ResultSet results = sql.executeQuery();
    results.next();
    myName = results.getString("NAME");
    i = myName.length();
    out.println("The value is " + myName + " and the length is " + String.valueOf(i) );
    I get:
    " The value is Tom and the lengh is 20 "
    20 is the length of the field (it's a CHAR (20) ), but I would like to get the length
    of 'Tom'.
    On other hand, I would like to detect if this value is 'Tom' or not, but trying with:
    if (myName.equals("Tom")) {...}
    or
    if (myName == "Tom") {...}
    There is no response.
    Any experience?

    myName = results.getString("NAME");
    if(myName!=null) myName = myName.trim(); //Take out trailing spaces
    i = myName.length();Sudha

  • The value returned from the load function is not of type numeric  errors after migration to Coldfusion 11

    I am currently testing our website with CF11. It is currently working with CF8 however after migrating it to a new server running CF11 I have encountered the following error.
    The value returned from the load function is not of type numeric.
    The error occurred in
    D:/Applications/CFusion/CustomTags/nec/com/objects/address.cfc: line 263
    Called from D:/Applications/CFusion/CustomTags/nec/com/objects/contact.cfc: line 331
    Called from D:/Applications/CFusion/CustomTags/nec/com/objects/user.cfc: line 510
    Called from D:/Applications/CFusion/CustomTags/nec/com/objects/user.cfc: line 1675
    Called from D:/website/NECPhase2/action.validate.cfm: line 54
    261 : <cfif isNumeric(get.idCountry)>
    262 : <cfset rc = this.objCountry.setID(get.idCountry)>
    263 : <cfset rc = this.objCountry.load()>
    264 : </cfif>
    265 : <cfset this.sPostcode = get.sPostcode>
    Have there been any changes between CF8 and CF11 that could  cause this error?
    Does anyone have ideas?

    This is the code in file object file country.cfc (nec.com.objects.country):
    <cfcomponent displayname="Country object" hint="This is a Country object, it allows you to access and set values in the Country.">
    <!---
    // Construct this object
    --->
    <cfset this.objFunctions = CreateObject( 'component', 'nec.com.system.functions' )>
    <cfscript>
      this.idCountryID = 0;
      this.sCountryName = "";
      this.sISOCode = "";
      this.sDHLCode = "";
      this.iErrorID = "";
    </cfscript>
    <!---
    // The following functions are the setters and getters. offering us a better way to get
    // at the contents of the object
    --->
    <!---
    // Getters
    --->
    <cffunction name="getID" displayname="Get ID" returntype="numeric" output="false" hint="This returns the ID of the current item.">
      <cfreturn this.idCountryID>
    </cffunction>
    <cffunction name="getsCountryName" displayname="Get sCountryName" returntype="string" output="false" hint="This gets the sCountryName value of this item.">
      <cfreturn this.sCountryName>
    </cffunction>
    <cffunction name="getsISOCode" displayname="Get sISOCode" returntype="string" output="false" hint="This gets the sISOCode value of this item.">
      <cfreturn this.sISOCode>
    </cffunction>
    <cffunction name="getsDHLCode" displayname="Get sDHLCode" returntype="string" output="false" hint="This gets the sDHLCode value of this item.">
      <cfreturn this.sDHLCode>
    </cffunction>
    <cffunction name="iError" displayname="Get iError" returntype="numeric" output="false" hint="This returns the iError of the current item.">
      <cfreturn this.iError>
    </cffunction>
    <!---
    // Setters
    --->
    <cffunction name="setID" displayname="Set ID" returntype="boolean" output="false" hint="This sets the ID value of this item.">
      <cfargument name="idCountryID" required="true" type="numeric" displayname="ID" hint="The ID to use.">
      <cfset this.idCountryID = arguments.idCountryID>
      <cfreturn true>
    </cffunction>
    <cffunction name="setsCountryName" displayname="Set sCountryName" returntype="boolean" output="false" hint="This sets the sCountryName value of this item.">
      <cfargument name="sCountryName" required="true" type="string" displayname="sCountryName" hint="The sCountryName to use.">
      <cfset this.sCountryName = arguments.sCountryName>
      <cfreturn true>
    </cffunction>
    <cffunction name="setsISOCode" displayname="Set sISOCode" returntype="boolean" output="false" hint="This sets the sISOCode value of this item.">
      <cfargument name="sISOCode" required="true" type="string" displayname="sISOCode" hint="The sISOCode to use.">
      <cfset this.sISOCode = arguments.sISOCode>
      <cfreturn true>
    </cffunction>
    <cffunction name="setsDHLCode" displayname="Set sDHLCode" returntype="boolean" output="false" hint="This sets the sDHLCode value of this item.">
      <cfargument name="sDHLCode" required="true" type="string" displayname="sDHLCode" hint="The sDHLCode to use.">
      <cfset this.sDHLCode = arguments.sDHLCode>
      <cfreturn true>
    </cffunction>
    <!---
    // Clear, to empty out the contents of this object
    --->
    <cffunction name="clear" displayname="Clear items Details" returntype="boolean" output="false" hint="Clears out all of the items details.">
      <cfscript>
       this.sCountryName = "";
       this.sISOCode = "";
       this.sDHLCode = "";
       this.iErrorID = "";
      </cfscript>
      <cfreturn true>
    </cffunction>
    <!---
    // The following functions deal with the load, save and deleting of objects
    --->
    <!---
    // Load
    --->
    <cffunction name="load" displayname="Load items details" returntype="numeric" output="false" hint="This loads in all the information about an item.">
      <cfset rc = this.clear()>
      <!---
      // First of all we need to get the name of the data source we are going to be using
      --->
      <cfscript>
      objDS = CreateObject("component","nec.com.system.settings");
      sDatasource = objDS.getDatasource();
    </cfscript>
      <!---
      // Check to see if it exists
      --->
      <cftry>
       <cfquery name="checkID" datasource="#sDatasource#">
        SELECT idCountryID
        FROM tblCountry
        WHERE idCountryID = #this.idCountryID#
       </cfquery>
       <cfcatch>
        <cfscript>
         objError = CreateObject("component","nec.com.system.errors");
         iErrorID = objError.addError("load: checkID: '#this.idCountryID#' #cfcatch.detail#");
        </cfscript>
        <cfset this.iErrorID = iErrorID>
        <cfreturn iErrorID>
       </cfcatch>
      </cftry>
      <cfif not checkID.recordCount>
       <cfscript>
         objError = CreateObject("component","nec.com.system.errors");
         if(isDefined("session.afr")){
          whichOne = "#session.afr.getsAFRNumber()#";
         } else {
          whichOne = "";
         iErrorID = objError.addError("A Country with that id doesn't exists.[#this.idCountryID#][#whichOne#]");
        </cfscript>
       <cfset this.iErrorID = iErrorID>
       <cfreturn iErrorID>
      </cfif>
      <!---
      // If we got past all then then load in the details
      --->
      <cftry>
       <cfquery name="get" datasource="#sDatasource#">
        SELECT idCountryID, RTRIM(sCountryName) as sCountryName, RTRIM(sISOCode) as sISOCode, RTRIM(sDHLCode) as sDHLCode
        FROM tblCountry
        WHERE idCountryID = #this.idCountryID#
       </cfquery>
       <cfcatch>
        <cfscript>
         objError = CreateObject("component","nec.com.system.errors");
         iErrorID = objError.addError("load: get: #cfcatch.detail#");
        </cfscript>
        <cfset this.iErrorID = iErrorID>
        <cfreturn iErrorID>
       </cfcatch>
      </cftry>
      <cfset this.idCountryID = get.idCountryID>
      <cfset this.sCountryName = get.sCountryName>
      <cfset this.sISOCode = get.sISOCode>
      <cfset this.sDHLCode = get.sDHLCode>
      <cfset this.iErrorID = "">
      <cfreturn true>
    </cffunction>
    <!---
    // Save
    --->
    <cffunction name="save" displayname="Save items Details" returntype="numeric" output="false" hint="Saves (to some source) the current details for the ID of the item.">
      <!---
      // First of all we need to get the name of the data source we are going to be using
      --->
      <cfscript>
      objDS = CreateObject("component","nec.com.system.settings");
      sDatasource = objDS.getDatasource();
    </cfscript>
      <!---
      // Now check to see if ithat ID exists
      --->
      <cftry>
       <cfquery name="checkID" datasource="#sDatasource#">
        SELECT idCountryID
        FROM tblCountry
        WHERE idCountryID = #this.idCountryID#
       </cfquery>
       <cfcatch>
        <cfscript>
         objError = CreateObject("component","nec.com.system.errors");
         iErrorID = objError.addError("save: checkID: #cfcatch.detail#");
        </cfscript>
        <cfreturn iErrorID>
       </cfcatch>
      </cftry>
      <!---
      // If it doesn't exist, then add the record, otherwise update the record
      --->
      <cfif not checkID.recordCount>
       <cfreturn this.add()>
      <cfelse>
       <cfreturn this.update()>
      </cfif>
    </cffunction>
    <!---
    // Add
    --->
    <cffunction name="add" displayname="Add Country" returntype="numeric" output="false" hint="This adds a Country.">
      <!---
      // Check to see if that a different item isn't already using the same unique details
      --->
      <cftry>
       <cfquery name="checkUnique" datasource="#sDatasource#">
        SELECT idCountryID
        FROM tblCountry
        WHERE sCountryName = '#this.objFunctions.scrubText(this.sCountryName)#'
        OR sISOCOde = '#this.objFunctions.scrubText(this.sISOcode)#'
       </cfquery>
       <cfcatch>
        <cfscript>
         objError = CreateObject("component","nec.com.system.errors");
         iErrorID = objError.addError("add: checkUnique: #cfcatch.detail#");
        </cfscript>
        <cfreturn iErrorID>
       </cfcatch>
      </cftry>
      <cfif checkUnique.recordCount>
       <cfscript>
         objError = CreateObject("component","nec.com.system.errors");
         iErrorID = objError.addError("A Country with that name or ISO code already exists. idCountryID=#checkUnique.idCountryID#");
        </cfscript>
       <cfreturn iErrorID>
      </cfif>
      <cftry>
       <cfquery name="add" datasource="#sDatasource#">
        SET nocount on
        INSERT INTO tblCountry(sCountryName, sISOCode, sDHLCode)
        VALUES('#this.objFunctions.scrubText(this.sCountryName)#','#this.objFunctions.scrubText(t his.sISOCode)#','#this.objFunctions.scrubText(this.sDHLCode)#')
        SELECT @@identity as autoID
        SET nocount off  
       </cfquery>
       <cfcatch>
        <cfscript>
         objError = CreateObject("component","nec.com.system.errors");
         iErrorID = objError.addError("add: add: #cfcatch.detail#");
        </cfscript>
        <cfreturn iErrorID>
       </cfcatch>
      </cftry>
      <cfreturn add.autoID>
    </cffunction>
    <!---
    // Update
    --->
    <cffunction name="update" displayname="Update Country" returntype="numeric" output="false" hint="This updates a Country record.">
      <!---
      // Check to see if that a different item isn't already using the same unique details
      --->
      <cftry>
       <cfquery name="checkUnique" datasource="#sDatasource#">
        SELECT idCountryID
        FROM tblCountry
        WHERE (sCountryName = '#this.objFunctions.scrubText(this.sCountryName)#'
        OR sISOCOde = '#this.objFunctions.scrubText(this.sISOcode)#')
        AND idCountryID <> #this.idCountryID#
       </cfquery>
       <cfcatch>
        <cfscript>
         objError = CreateObject("component","nec.com.system.errors");
         iErrorID = objError.addError("update: checkUnique: #cfcatch.detail#");
        </cfscript>
        <cfreturn iErrorID>
       </cfcatch>
      </cftry>
      <cfif checkUnique.recordCount>
       <cfscript>
         objError = CreateObject("component","nec.com.system.errors");
         iErrorID = objError.addError("Another Country with that name already exists. idCountryID=#checkUnique.idCountryID#");
        </cfscript>
       <cfreturn iErrorID>
      </cfif>
      <!---
      // Attempt to update the record to the datasource
      // if this fails for any reason then we submit an error message
      // to the error component and return the ID of the error
      --->
      <cftry>
       <cfquery name="update" datasource="#sDatasource#">
        UPDATE tblCountry
        SET sCountryName = '#this.objFunctions.scrubText(this.sCountryName)#',
        sISOCode = '#this.objFunctions.scrubText(this.sISOCode)#',
        sDHLCode = '#this.objFunctions.scrubText(this.sDHLCode)#'
        WHERE idCountryID = #this.idCountryID#
       </cfquery>
       <cfcatch>
        <cfscript>
         objError = CreateObject("component","nec.com.system.errors");
         iErrorID = objError.addError("update: update: #cfcatch.detail#");
        </cfscript>
        <cfreturn iErrorID>
       </cfcatch>
      </cftry>
      <cfreturn this.idCountryID> 
    </cffunction>
    <!---
    // Delete
    --->
    <cffunction name="delete" displayname="Delete Country" returntype="numeric" output="false" hint="This deletes a Country record.">
      <!---
      // First of all we need to get the name of the data source we are going to be using
      --->
      <cfscript>
      objDS = CreateObject("component","nec.com.system.settings");
      sDatasource = objDS.getDatasource();
    </cfscript>
      <!---
      // Now check to see if ithat ID exists
      --->
      <cftry>
       <cfquery name="checkID" datasource="#sDatasource#">
        SELECT idCountryID
        FROM tblCountry
        WHERE idCountryID = #this.idCountryID#
       </cfquery>
       <cfcatch>
        <cfscript>
         objError = CreateObject("component","nec.com.system.errors");
         iErrorID = objError.addError("delete: checkID: #cfcatch.detail#");
        </cfscript>
        <cfreturn iErrorID>
       </cfcatch>
      </cftry>
      <cfif not checkID.recordCount>
       <cfscript>
         objError = CreateObject("component","nec.com.system.errors");
         iErrorID = objError.addError("A Country with that id doesn't exists, delete failed.");
        </cfscript>
       <cfreturn iErrorID>
      </cfif>
      <!---
      // Now check to see if there are any dependancies, if so we can't delete the item
      --->
      <cftry>
       <cfquery name="checkDependancies" datasource="#sDatasource#">
        SELECT idCountry
        FROM tblAddress
        WHERE idCountry = #this.idCountryID#
       </cfquery>
       <cfcatch>
        <cfscript>
         objError = CreateObject("component","nec.com.system.errors");
         iErrorID = objError.addError("delete: checkDependancies: idCountry: #cfcatch.detail#");
        </cfscript>
        <cfreturn iErrorID>
       </cfcatch>
      </cftry>
      <cfif checkDependancies.recordCount>
       <cfscript>
         objError = CreateObject("component","nec.com.system.errors");
         iErrorID = objError.addError("That Country is being used by an address, delete failed.");
        </cfscript>
       <cfreturn iErrorID>
      </cfif>
      <!---
      // Now attempt to remove the record.
      // if this fails for any reason then we submit an error message
      // to the error component and return the ID of the error
      --->
      <cftry>
       <cfquery name="delete" datasource="#sDatasource#">
        DELETE FROM tblCountry
        WHERE idCountryID = #this.idCountryID#
       </cfquery>
       <cfcatch>
        <cfscript>
         objError = CreateObject("component","nec.com.system.errors");
         iErrorID = objError.addError("delete: delete: #cfcatch.detail#");
        </cfscript>
        <cfreturn iErrorID>
       </cfcatch>
      </cftry>
      <cfreturn this.idCountryID>
    </cffunction>
    </cfcomponent>

  • How to display subtotal in ALV, where the field is not a numeric.

    Hi
    We are having a requirement to display the sub total for a field using ALV grid display, where the field is not numeric.
    The field is characte, Status field(consists of values Submit, Approve ,Reject), where the subtotal should be value of count of group by status .
    say status with submit are 10 records, so after all records with submit status are, displyed, we need to display its subtotal as 10.
    Thanks & Advance

    Hi Satya,
    REPORT z_alv_subtotal.*&---------------------------------------------------------------------*
    *& Table declaration
    *&---------------------------------------------------------------------*TABLES: ekko.*&---------------------------------------------------------------------*
    *& Type pool declaration
    TYPE-POOLS: slis. " Type pool for ALV*&---------------------------------------------------------------------*
    *& Selection screen
    SELECT-OPTIONS: s_ebeln FOR ekko-ebeln.*&---------------------------------------------------------------------*
    *& Type declaration
    *&---------------------------------------------------------------------** Type declaration for internal table to store EKPO data
    TYPES: BEGIN OF x_data,
           ebeln  TYPE char30,  " Document no.
           ebelp  TYPE ebelp,   " Item no
           matnr  TYPE matnr,   " Material no
           matnr1 TYPE matnr,   " Material no
           werks  TYPE werks_d, " Plant
           werks1 TYPE werks_d, " Plant
           ntgew  TYPE entge,   " Net weight
           gewe   TYPE egewe,   " Unit of weight                          
           END OF x_data.*&---------------------------------------------------------------------*
    *& Internal table declaration
    DATA:* Internal table to store EKPO data
      i_ekpo TYPE STANDARD TABLE OF x_data INITIAL SIZE 0,
    * Internal table for storing field catalog information
      i_fieldcat TYPE slis_t_fieldcat_alv,
    * Internal table for Top of Page info. in ALV Display
      i_alv_top_of_page TYPE slis_t_listheader,
    * Internal table for ALV Display events
      i_events TYPE slis_t_event,
    * Internal table for storing ALV sort information
      i_sort TYPE  slis_t_sortinfo_alv,
      i_event TYPE slis_t_event.*&---------------------------------------------------------------------*
    *& Work area declaration
    *&---------------------------------------------------------------------*DATA:
      wa_ekko TYPE x_data,
      wa_layout     TYPE slis_layout_alv,
      wa_events         TYPE slis_alv_event,
      wa_sort TYPE slis_sortinfo_alv.*&---------------------------------------------------------------------*
    *& Constant declaration
    *&---------------------------------------------------------------------*CONSTANTS:
       c_header   TYPE char1
                  VALUE 'H',                    "Header in ALV
       c_item     TYPE char1
                  VALUE 'S'.*&---------------------------------------------------------------------*
    *& Start-of-selection event
    *&---------------------------------------------------------------------*START-OF-SELECTION.* Select data from ekpo
      SELECT ebeln " Doc no
             ebelp " Item
             matnr " Material
             matnr " Material
             werks " Plant
             werks " Plant
             ntgew " Quantity
             gewei " Unit
             FROM ekpo
             INTO TABLE i_ekpo
             WHERE ebeln IN s_ebeln
             AND ntgew NE '0.00'.  IF sy-subrc = 0.
        SORT i_ekpo BY ebeln ebelp matnr .
      ENDIF.* To build the Page header
      PERFORM sub_build_header.* To prepare field catalog
      PERFORM sub_field_catalog.* Perform to populate the layout structure
      PERFORM sub_populate_layout.* Perform to populate the sort table.
      PERFORM sub_populate_sort.* Perform to populate ALV event
      PERFORM sub_get_event.END-OF-SELECTION.* Perform to display ALV report
      PERFORM sub_alv_report_display.
    *&      Form  sub_build_header
    *       To build the header
    *       No Parameter
    FORM sub_build_header .* Local data declaration
      DATA: l_system     TYPE char10 ,          "System id
            l_r_line     TYPE slis_listheader,  "Hold list header
            l_date       TYPE char10,           "Date
            l_time       TYPE char10,           "Time
            l_success_records TYPE i,           "No of success records
            l_title(300) TYPE c.                " Title
    * Title  Display
      l_r_line-typ = c_header.               " header
      l_title = 'Test report'(001).
      l_r_line-info = l_title.
      APPEND l_r_line TO i_alv_top_of_page.
      CLEAR l_r_line.* Run date Display
      CLEAR l_date.
      l_r_line-typ  = c_item.                " Item
      WRITE: sy-datum  TO l_date MM/DD/YYYY.
      l_r_line-key = 'Run Date :'(002).
      l_r_line-info = l_date.
      APPEND l_r_line TO i_alv_top_of_page.
      CLEAR: l_r_line,
             l_date.ENDFORM.                    " sub_build_header
    *&      Form  sub_field_catalog
    *       Build Field Catalog
    *       No Parameter
    FORM sub_field_catalog .*  Build Field Catalog
      PERFORM sub_fill_alv_field_catalog USING:     '01' '01' 'EBELN' 'I_EKPO' 'L'
         'Doc No'(003) ' ' ' ' ' ' ' ',     '01' '02' 'EBELP' 'I_EKPO' 'L'
         'Item No'(004) 'X' 'X' ' ' ' ',     '01' '03' 'MATNR' 'I_EKPO' 'L'
         'Material No'(005) 'X' 'X' ' ' ' ',     '01' '03' 'MATNR1' 'I_EKPO' 'L'
         'Material No'(005) ' ' ' ' ' ' ' ',
         '01' '04' 'WERKS' 'I_EKPO' 'L'
         'Plant'(006) 'X' 'X' ' ' ' ',     '01' '04' 'WERKS1' 'I_EKPO' 'L'
         'Plant'(006) ' ' ' ' ' ' ' ',     '01' '05' 'NTGEW' 'I_EKPO' 'R'
         'Net Weight'(007) ' ' ' ' 'GEWE' 'I_EKPO'.ENDFORM.                    " sub_field_catalog*&---------------------------------------------------------------------*
    *&     Form  sub_fill_alv_field_catalog
    *&     For building Field Catalog
    *&     p_rowpos   Row position
    *&     p_colpos   Col position
    *&     p_fldnam   Fldname
    *&     p_tabnam   Tabname
    *&     p_justif   Justification
    *&     p_seltext  Seltext
    *&     p_out      no out
    *&     p_tech     Technical field
    *&     p_qfield   Quantity field
    *&     p_qtab     Quantity table
    FORM sub_fill_alv_field_catalog  USING  p_rowpos    TYPE sycurow
                                            p_colpos    TYPE sycucol
                                            p_fldnam    TYPE fieldname
                                            p_tabnam    TYPE tabname
                                            p_justif    TYPE char1
                                            p_seltext   TYPE dd03p-scrtext_l
                                            p_out       TYPE char1
                                            p_tech      TYPE char1
                                            p_qfield    TYPE slis_fieldname
                                            p_qtab      TYPE slis_tabname.* Local declaration for field catalog
      DATA: wa_lfl_fcat    TYPE  slis_fieldcat_alv.  wa_lfl_fcat-row_pos        =  p_rowpos.     "Row
      wa_lfl_fcat-col_pos        =  p_colpos.     "Column
      wa_lfl_fcat-fieldname      =  p_fldnam.     "Field Name
      wa_lfl_fcat-tabname        =  p_tabnam.     "Internal Table Name
      wa_lfl_fcat-just           =  p_justif.     "Screen Justified
      wa_lfl_fcat-seltext_l      =  p_seltext.    "Field Text
      wa_lfl_fcat-no_out         =  p_out.        "No output
      wa_lfl_fcat-tech           =  p_tech.       "Technical field
      wa_lfl_fcat-qfieldname     =  p_qfield.     "Quantity unit
      wa_lfl_fcat-qtabname       =  p_qtab .      "Quantity table  IF p_fldnam = 'NTGEW'.
        wa_lfl_fcat-do_sum  = 'X'.
      ENDIF.
      APPEND wa_lfl_fcat TO i_fieldcat.
      CLEAR wa_lfl_fcat.
    ENDFORM.                    " sub_fill_alv_field_catalog*&---------------------------------------------------------------------*
    *&      Form  sub_populate_layout
    *       Populate ALV layout
    *       No Parameter
    FORM sub_populate_layout .  CLEAR wa_layout.
      wa_layout-colwidth_optimize = 'X'." Optimization of Col widthENDFORM.                    " sub_populate_layout*&---------------------------------------------------------------------*
    *&      Form  sub_populate_sort
    *       Populate ALV sort table
    *       No Parameter
    FORM sub_populate_sort .* Sort on material
      wa_sort-spos = '01' .
      wa_sort-fieldname = 'MATNR'.
      wa_sort-tabname = 'I_EKPO'.
      wa_sort-up = 'X'.
      wa_sort-subtot = 'X'.
      APPEND wa_sort TO i_sort .
      CLEAR wa_sort.* Sort on plant
      wa_sort-spos = '02'.
      wa_sort-fieldname = 'WERKS'.
      wa_sort-tabname = 'I_EKPO'.
      wa_sort-up = 'X'.
      wa_sort-subtot = 'X'.
      APPEND wa_sort TO i_sort .
      CLEAR wa_sort.
    ENDFORM.                    " sub_populate_sort*&---------------------------------------------------------------------*
    *&      Form  sub_get_event
    *       Get ALV grid event and pass the form name to subtotal_text
    *       event
    *       No Parameter
    FORM sub_get_event .
      CONSTANTS : c_formname_subtotal_text TYPE slis_formname VALUE
    'SUBTOTAL_TEXT'.  DATA: l_s_event TYPE slis_alv_event.
      CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
        EXPORTING
          i_list_type     = 4
        IMPORTING
          et_events       = i_event
        EXCEPTIONS
          list_type_wrong = 0
          OTHERS          = 0.* Subtotal
      READ TABLE i_event  INTO l_s_event
                        WITH KEY name = slis_ev_subtotal_text.
      IF sy-subrc = 0.
        MOVE c_formname_subtotal_text TO l_s_event-form.
        MODIFY i_event FROM l_s_event INDEX sy-tabix.
      ENDIF.ENDFORM.                    " sub_get_event*&---------------------------------------------------------------------*
    *&      Form  sub_alv_report_display
    *       For ALV Report Display
    *       No Parameter
    FORM sub_alv_report_display .
      DATA: l_repid TYPE syrepid .
      l_repid = sy-repid .* This function module for displaying the ALV report
      CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
        EXPORTING
          i_callback_program       = l_repid
          i_callback_top_of_page   = 'SUB_ALV_TOP_OF_PAGE'
          is_layout                = wa_layout
          it_fieldcat              = i_fieldcat
          it_sort = i_sort
          it_events                = i_event
          i_default                = 'X'
          i_save                   = 'A'
        TABLES
          t_outtab                 = i_ekpo
        EXCEPTIONS
          program_error            = 1
          OTHERS                   = 2.
      IF sy-subrc <> 0.
    *    MESSAGE i000 WITH 'Error in ALV report display'(055).
      ENDIF.ENDFORM.                    " sub_alv_report_display*&---------------------------------------------------------------------*
    *       FORM sub_alv_top_of_page
    *       Call ALV top of page
    *       No parameter
    *---------------------------------------------------------------------*FORM sub_alv_top_of_page.                                   "#EC CALLED* To write header for the ALV
      CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
        EXPORTING
          it_list_commentary = i_alv_top_of_page.
    ENDFORM.                    "alv_top_of_page*&---------------------------------------------------------------------*
    *&      Form  subtotal_text
    *       Build subtotal text
    *       P_total  Total
    *       p_subtot_text Subtotal text info
    FORM subtotal_text CHANGING
                   p_total TYPE any
                   p_subtot_text TYPE slis_subtot_text.
    * Material level sub total
      IF p_subtot_text-criteria = 'MATNR'.
        p_subtot_text-display_text_for_subtotal
        = 'Material level total'(009).
      ENDIF.* Plant level sub total
      IF p_subtot_text-criteria = 'WERKS'.
        p_subtot_text-display_text_for_subtotal = 'Plant level total'(010).
      ENDIF.
    ENDFORM.                    "subtotal_text
    Regards,
    Pravin

  • Get the title of a specific window not part of your app

    For an app I am writing I need to get the name of the titles of the current programs running .
    Does anyone know of a way to accomplish this (get the title of a specific window not part of your app) in Java?
    Thank you very much.
    Erik

    Crossposted, obviously with no concern over wasting the time of would-be answerers.
    http://forum.java.sun.com/thread.jspa?threadID=686650

Maybe you are looking for