Need this explained: Two objects reporting back same values...

Hello,
I have a datagrid and a form binded to the selectedItem record of the datagrid.  I need to update the values according to whatever is typed into the form fields.
I use a CFC to handle the update.  I have a newBean class which holds the new values from the form and also an oldBean object which holds old values to verify I'm updating the correct record.
In my actionscript I have two objects, newObj and oldObj.  Here is how I set them up in my update function.
var oldObj:Object = new Object;
oldObj = dg.selectedItem;
var newObj:Object = newObject;
newObj = dg.selectedItem;
newObj.value1 = field1.text;
newObj.value2 = field2.text;
newObj.value3 = field3.text;
remoteObject.update(oldObj, newObj);
So, I set the oldObj to the selectedItem and then I set the newObj to that same item, which initially should give them the current values of the selectedItem in the datagrid.  Then I set the values of newObj to match the form fields.  Lastly I have a remoteObject method "update()" send the two objects to the CFC I mentioned above.  When I found out it wasn't updating properly, I set up a cfdump to my email to list the values for both oldObj and newObj.
Results:
newObj properly takes all the new values as intended.  oldObj strangely also takes on the new values, yet I never assigned oldObj to accept the new values.  So why is oldObj also accepting the values in the form fields when there's no visible connection between oldObj and any of the fields?

I don't have an external site I can load this on.  It's a component of an application as well, so I'd have to publish the whole thing.  Instead, I'll just post all relevent code.  Notes: cfc is generated from the ColdFusion wizard.  apptTable is a valueObject that contains the structure of the record data.
The Remote Object:
    <mx:RemoteObject id="apptRO" endpoint="http://10.118.40.100:85/flex2gateway/"
        destination="ColdFusion" source="cms.cfc.apptTableDAO" showBusyCursor="true" fault="Alert.show(event.fault.faultString, 'Error')">
        <mx:method name="read" result="apptsReceived(event)"/>
        <mx:method name="create" result="apptCreated(event)"/>
        <mx:method name="update" result="apptUpdated(event)"/>
        <mx:method name="deleted" result="apptDeleted(event)"/>
    </mx:RemoteObject>
The original update function in Flex:
    private var upObj:apptTable;
    private var oldObj:Object;
    private function updateAppt():void{
        oldObj = new Object;
        oldObj = dg.selectedItem;
        upObj = new apptTable;
        upObj = apptTable(dg.selectedItem);
        upObj.clientName = clientNameInput.text;
        upObj.topic = topicInput.text;
        upObj.info = infoInput.text;
        upObj.apptDate = dateInput.text;
        upObj.apptTime = timeInput.text + ' ' + ampmCbx.value.toString();
        apptRO.update(oldObj,upObj);
The UPDATE function in the CFC:
    <cffunction name="update" output="false" access="public">
        <cfargument name="oldBean" required="true" type="cms.cfc.apptTable">
        <cfargument name="newBean" required="true" type="cms.cfc.apptTable">
        <cfset var qUpdate="">
        <cfquery name="qUpdate" datasource="cmsdb" result="status">
            update dbo.apptTable
            set clientName = <cfqueryparam value="#arguments.newBean.getclientName()#" cfsqltype="CF_SQL_VARCHAR" />,
                topic = <cfqueryparam value="#arguments.newBean.gettopic()#" cfsqltype="CF_SQL_VARCHAR" />,
                info = <cfqueryparam value="#arguments.newBean.getinfo()#" cfsqltype="CF_SQL_VARCHAR" />,
                dateSubmitted = <cfqueryparam value="#arguments.newBean.getdateSubmitted()#" cfsqltype="CF_SQL_VARCHAR" />,
                apptDate = <cfqueryparam value="#arguments.newBean.getapptDate()#" cfsqltype="CF_SQL_VARCHAR" />,
                apptTime = <cfqueryparam value="#arguments.newBean.getapptTime()#" cfsqltype="CF_SQL_VARCHAR" />,
                userID = <cfqueryparam value="#arguments.newBean.getuserID()#" cfsqltype="CF_SQL_BIGINT" null="#iif((arguments.newBean.getuserID() eq ""), de("yes"), de("no"))#" />,
                userName = <cfqueryparam value="#arguments.newBean.getuserName()#" cfsqltype="CF_SQL_VARCHAR" />
            where apptID = <cfqueryparam value="#arguments.oldBean.getapptID()#" cfsqltype="CF_SQL_BIGINT" />
              and clientName = <cfqueryparam value="#arguments.oldBean.getclientName()#" cfsqltype="CF_SQL_VARCHAR" />
              and topic = <cfqueryparam value="#arguments.oldBean.gettopic()#" cfsqltype="CF_SQL_VARCHAR" />
              and info = <cfqueryparam value="#arguments.oldBean.getinfo()#" cfsqltype="CF_SQL_VARCHAR" />
              and dateSubmitted = <cfqueryparam value="#arguments.oldBean.getdateSubmitted()#" cfsqltype="CF_SQL_VARCHAR" />
              and apptDate = <cfqueryparam value="#arguments.oldBean.getapptDate()#" cfsqltype="CF_SQL_VARCHAR" />
              and apptTime = <cfqueryparam value="#arguments.oldBean.getapptTime()#" cfsqltype="CF_SQL_VARCHAR" />
              and userID = <cfqueryparam value="#arguments.oldBean.getuserID()#" cfsqltype="CF_SQL_BIGINT" />
              and userName = <cfqueryparam value="#arguments.oldBean.getuserName()#" cfsqltype="CF_SQL_VARCHAR" />
        </cfquery>
        <!--- if we didn't affect a single record, the update failed --->
        <cfquery name="qUpdateResult" datasource="cmsdb"  result="status">
            select apptID
            from dbo.apptTable
            where apptID = <cfqueryparam value="#arguments.newBean.getapptID()#" cfsqltype="CF_SQL_BIGINT" />
              and clientName = <cfqueryparam value="#arguments.newBean.getclientName()#" cfsqltype="CF_SQL_VARCHAR" />
              and topic = <cfqueryparam value="#arguments.newBean.gettopic()#" cfsqltype="CF_SQL_VARCHAR" />
              and info = <cfqueryparam value="#arguments.newBean.getinfo()#" cfsqltype="CF_SQL_VARCHAR" />
              and dateSubmitted = <cfqueryparam value="#arguments.newBean.getdateSubmitted()#" cfsqltype="CF_SQL_VARCHAR" />
              and apptDate = <cfqueryparam value="#arguments.newBean.getapptDate()#" cfsqltype="CF_SQL_VARCHAR" />
              and apptTime = <cfqueryparam value="#arguments.newBean.getapptTime()#" cfsqltype="CF_SQL_VARCHAR" />
              and userID = <cfqueryparam value="#arguments.newBean.getuserID()#" cfsqltype="CF_SQL_BIGINT" />
              and userName = <cfqueryparam value="#arguments.newBean.getuserName()#" cfsqltype="CF_SQL_VARCHAR" />
        </cfquery>
        <cfif status.recordcount EQ 0>
            <cfthrow type="conflict" message="Unable to update record">
        </cfif>
        <cfreturn arguments.newBean />
    </cffunction>
If you look at the update code from the CFC, you can see all my table columns, some of which are not present in my form fields because they should never change.
Fields in form: clientNameInput, topicInput, infoInput, dateInput, timeInput, and a combo box for am/pm.
Columns not in form: apptID, dateSubmitted, userID, userName
Working code:
private function updateAppt():void{
        oldObj = new Object;
        oldObj = dg.selectedItem;
        upObj = new apptTable;
        upObj.apptID = dg.selectedItem.apptID;
        upObj.clientName = clientNameInput.text;
        upObj.topic = topicInput.text;
        upObj.info = infoInput.text;
        upObj.dateSubmitted = dg.selectedItem.dateSubmitted;
        upObj.apptDate = dateInput.text;
        upObj.apptTime = timeInput.text + ' ' + ampmCbx.value.toString();
        upObj.userID = dg.selectedItem.userID;
        upObj.userName = dg.selectedItem.userName;
        apptRO.update(oldObj,upObj);
This code does not set upObj to the selectedItem record of the dg.  Instead it just accepts the values of the form fields and any values in the datagrid that do not change.

Similar Messages

  • I need help moving two objects at the same time

    I am try to create a code that will move a mini map to where the user wants in a game. As a test I created a square and converted it to a movie and named it sq. Then I created another square and converted it to a button and named it bt. I also made bt half the size of sq and placed bt at the center of sq. I then created a drag code which like this:
    sq.addEventListener(MouseEvent.MOUSE_DOWN, startDragging); // Start dragging square by user
    sq.addEventListener(MouseEvent.MOUSE_UP, stopDragging); // Stop dragging square by user
    function stopDragging(evt:MouseEvent):void
    sq.stopDrag();
    bt.x=sq.x;
    bt.y=sq.y;
    // this moved bt to sq(x,y) when mousebutton was released
    function startDragging(evt:MouseEvent):void
    sq.startDrag();
    bt.x=sq.x;
    bt.y=sq.y;
    // this moved bt to sq(x,y) when mouse button was pushed down
    I am trying to get sq and bt to move smootly together, but as it stands right now it just jumps from place to place.
    I have tried looking for some kind of linking code in abode help search, however, I am not sure want to look for exactlly

    The mouseDown and mouseUp events are single action events, so the button will only change positions on either the mouseDown or the mouseUp events. If you add a mouseMove event listener, then you can change the location of the button every time the square moves. Alternately, you could use an enterframe event to change the location of the button relative to the square. Try this code:
    sq.addEventListener(MouseEvent.MOUSE_DOWN, startDragging); // Start dragging square by user
    sq.addEventListener(MouseEvent.MOUSE_UP, stopDragging); // Stop dragging square by user
    sq.addEventListener(MouseEvent.MOUSE_MOVE,dragButton);
    function stopDragging(evt:MouseEvent):void
    sq.stopDrag();
    function startDragging(evt:MouseEvent):void
    sq.startDrag();
    function dragButton(evt:MouseEvent):void {
              bt.x = sq.x;
              bt.y = sq.y;

  • Generate two xml reports from same execution

    I need to generate a summary report and detail report from the same execution.
    Detail report will record all the steps marked as Record result
    Summary report to record only the steps that are of type Pass/Fail, Numeric Limit Test, MultiNumeric Limit Test and String test.
    So far I have been able to generate two detail report from same execution and can save each report in separate folder.
    How to get the data for summary versus detail report from the running sequence?
    CLD,CTD
    Solved!
    Go to Solution.
    Attachments:
    ReportFolders.JPG ‏115 KB

    Thanks for the approach. 
    I have created a sequence which recursively looks through the Parameters.MainSequenceResults and if StepType is one of the Test Types then displays in summary report. 
    On the summary report I also wanted to get the name of the subsequcenCall if that subsequence call contained a valid TestType for summary report. For example if subsequenceCall step has a Action and String type. I wanted it to display as shown in Image1.jpg below. Currently it displays as shown in Image2.jpg.
    Attached is the recursive sequence that I am using. 
    CLD,CTD
    Attachments:
    GenerateSummaryReport.seq ‏8 KB
    Image1.jpg ‏35 KB
    Image2.JPG ‏140 KB

  • Need to keep two paragraph styles on same line

    Coming from Ventura and need to recreate all publications in Indesign - can't find the equivalent of "breaks - line break: none".  Need to keep two paragraph styles on same line.

    Like Ventura, FrameMaker has been able to do this for decades.
    You're correct about zero leading being inadequate, if not only in appearance, but also for maintaining the document through changes, especially if someone other than you needs to edit it.
    Nested styles are logical to create and use. Search Google for terms like "InDesign nested styles," without quotes, for lots of links to tutorials and details.
    If you need to create TOC entries for each of the two parts of text in this example, even after formatting with a nested style, InDesign's TOC will see only the single paragraph. If that works, OK. If you want to be able to create a TOC reference to each part, you'll have to create hidden text for each part, and you'll need to create a paragraph style for each, as well. This is because InDesign's TOC only captures complete paragraphs.
    [EDIT] If you think this is an important feature enhancement that should be included in a future InDesign release, post a formal feature request in the form here: WISH.[/EDIT]
    HTH
    Regards,
    Peter
    Peter Gold
    KnowHow ProServices
    MW Design wrote:
    InDesign cannot create side-by-side paragraphs. The only viable work-around is to use tables.
    I do miss Ventura a lot. For others, basically side-by-side paragraphs are successive paragraphs (one below the other) that the paragraph style can then format so they are next to each other, out in the margin as callouts, etc.
    Mike
    Message was edited by: peter at knowhowpro

  • Want to keep two objects perspective the same

    Here is what I want to do and wondering if I should group or lock? object.
    Here is what I have done.
    1. Made an oval
    2. Offset path of 1/2" for second oval
    3. 1st oval is yellow
    4. 2nd oval is blue - If this is the correct way, what I have is a yellow fill between the two ovals of an 1/2"
    These are the steps that I want to do
    1. text on a path between the two oval in the yellow area.  I will have text on the top portion in the yellow and the bottom portion of the yellow oval.  I have done text on a path just have to refresh on how to do it by googleing
    2. text box  in the smaller blue oval.
    When should I group these objects or whatever I need to do so they will all stay together.
    Should I make seperate layers
    should text be on one layer.
    thanks
    Mike

    This was done in CS3.
    Some will say the following is too involved and will offer various shortcuts. But your questions about when/whether to group, etc., suggests a beginner. This frequently-duplicated post about how to construct text along the top and bottom of an ellipse can result in much confusion for beginners, due to Illustrator's absurdly cumbersome interface. The explicit and methodical steps described are intended to yield a clean set of objects and (hopefully) clear understanding of what is going on for AI beginners.
    The blue notes between the screenshots are not parts of the procedure, but just to explain to nay-sayers the reasons for recommending the method.
    Some will suggest using Offset Path or Outline Stroke to make the two parallel paths. But only four anchorPoints are needed to cleanly define an ellipse, and those features often inject more anchorPoints than necessary.
    In Illustrator, despite what is suggested by the visual selection appearance, selecting, copying, and pasting "only" an anchorPoint anywhere in the middle of a path actually also selects the two adjacent segments, and the anchorPoints at the other ends of those segments. So by ostensibly selecting "only" the one anchorPoint, you are actually selecting half the ellipse.
    Setting the text alignment before creating the PathType object avoids the confusion of Illustrator's pathType "margin" and "center" bars, which don't look like selection handles at all, and are chronically confusing to beginners. By clicking at the start of the path with the Type Tool, the "margin handles" start and end at the endpoints of the path, whereas clicking elsewhere on the path results in the text appearing anywhere but the center of the path. So clicking at the startPoint when alignment is set to Center also usually avoids tedious manipulation of the text span handles.
    Flipping the path is just more intuitive and less tedious (and easier to explain) than dragging the center handle across the path. It also results in the threaded text link being displayed as crossing back to the left of the "ellipse", which is more intuitive than its simply dissappearing otherwise. Bringing the bottom half of the ellipse to the front makes it the "last" textFrame of the upcoming Threaded Text, so that the flow of the text when ending is more intuitive.
    In Illustrator, return characters cause threaded text to jump to the next typePath object. The construct so far also causes the behavior to most closely mimic the more intuitive behavior of FreeHand's TypeOnPath along closed paths, with the limitation of the "top" and "bottom" being limited to where the original ellipse was cut into two paths (a limitation which does not exist with FreeHand's superior treatment of this common feature).
    Baseline Shifting the text so that it is centered on the baseline results in better spacing when the text is edited and styled, because as the tops of the glyphs tilt nearer, the bottoms tilt farther. This allows you to use the same tracking adjustment (if needed) for the text at the top as for that at the bottom. This is why a Blend was used to create an ellipse centered between the innermost and outermost ellipses.
    You now have a Group containing three objects:
    Two "pathType" objects (my term)
    One Compound Path (A special kind of "group" which joins paths such that they act like one path when it comes to fill and stroke; most often used to create a path with a "hole" in it.)
    JET

  • Two earlywatch reports for same instance in one Solution manager

    Hi
    i am trying to create two solutons for early watch reports for same instance. let me explain here.
    In SAP Solution Manager: Active Solutions  >>> i have two solutions like this
    Solution                                                          Early Watch Alert Reports
    Avnet Global Solutions         >>>> here i have configured the PR1, PB1 PCB instances
    PR1                                      >>>>>here i configured the only PR1 instance.
    so i have configured the same instance in two solutions.
    i am not gettting the early watch report automatically  after after configuring like this . but manually working fine.
    when i kick of the report manually working fine.
    here my question is ... do i can create two early watch reports in one solution manage for same instance or not.  if yes then why i am not getting report automatically.
    Thank you
    Vish

    Dear Paul,
    Thank you for your response
    this is what i got from SAP.
    Hello Vish,
    You can have the same system in different solutions. With regards
    to why the report is not generating automatically, please review
    SDCCN on the satellite system.
    I dialed into the system and found that the SDCCN for PB1 is not
    downloading the sessions from Solution Manager.
    I would recommend that you deactivate and then activate SDCCN.
    Tcode SDCCN -> GoTo - Settings - Task Processor - Deactivate
    Tcode SDCCN ->Utilities -> Activate
    Then create a Refresh Session task and verify if the upcoming sessions
    are getting pulled down to PB1.
    If you need help with this, please let me know if it is fine with you
    if I make the necessary changes to get the system working.
    Thank you in advance and best regards,
    Jared Singh
    SAP Active Global Support - Netweaver Web Application Server
    could i know your comment

  • What grants needed to run APEX Object Reports?

    APEX 3.0
    Oracle 9.2.0.7
    Solaris 8
    The Apex workspace administrator account is unable to run the APEX Object Reports.
    The returned error states the account has no privileges on the APEX_MYAPP schema.
    What grants are needed for running the APEX Object Reports, and on what objects?
    Thank you.

    Yes, the "APEX_MYAPP" was a generic name. The error message actually mentions "APEX_IARS". I began by trying to limit the details of our installation. Just confused things.
    There are two other workspaces defined: another application-building workspace, "comres_ws", and one called "APEX_SAMPLE_APPS".
    The apex_iars workspace had two schemas assigned to it: iars and comres.
    The comres_ws workspace has just one schema assigned to it: comres.
    Thinking that for some reason the association of two schemas to the apex_iars workspace might be causing a problem -- although it has not in the past, I deleted the association of the comres schema from the apex_iars workspace so that now each workspace, the apex_iars workspace and the comres_ws workspace, just have a single schema. This did not fix anything with the apex_iars workspace. The "privileges" error still occurs.
    I logged onto the comres_ws workspace and tried to access the Utilities/Object Reports, and the SQL Commands, and all this works fine, no errors at all.
    I then logged onto the apex_iars workspace again and tried the Object Reports and SQL Commands and still get the error:
    ORA-20000: User <my_use_name> rhas no privileges on the apex_iars schema.
    Does it look like something is messed up for the apex_iars workspace? Are there APEX dictionary tables that may have incorrect or corrupt information for this workspace?

  • External drive died- need to get two ipod contents back

    My wife's and my daughter's iTunes libraries were kept on the external drive because of the space issue with my MacBook Pro. It seems to have died and won't power up. Is there a way of getting their respective iPod contents back into new libraries once I have a new drive and/or create ones under their log in accounts ?

    The transfer of non iTMS content is designed by default to be one way from iTunes to iPod. However there's a manual method of copying songs from your iPod to your Mac at this link: Two-way Street: Moving Music Off the iPod
    If you prefer something more automated there are a number of third party utilities that you can use to retrieve music files and playlists from your iPod, this is just a selection. I use Senuti but have a look at the web pages and documentation for the others as well, they are generally quite straightforward. You can read reviews of some of them here: Wired News - Rescue Your Stranded Tunes
    Senuti Mac Only
    iPodRip Mac Only
    PodWorks Mac Only
    iPod.iTunes Mac Only
    PodView Mac Only
    iPodAccess Mac & Windows
    YamiPod Mac & Windows
    PodUtil Mac & Windows
    iPodCopy Mac & Windows
    The transfer of purchased content to authorised computers has been introduced with iTunes 7, look under under File>"Transfer Purchases from iPod". A paragraph on it has been added to this article: How to use your iPod to move your music to a new computer
    If the iPods are set to update automatically take care when connecting back to your computer and an empty iTunes. You will get a message that the iPod is linked to a different library and asking if you want to link to this one and replace all your songs etc, press "Cancel". Pressing "Erase and Sync" will irretrievably remove all songs from your iPod. The iPod should appear in the iTunes source list from where you can change the update setting to manual and use it without the risk of accidentally erasing it. Check the "manually manage music and videos" box in Summary then press the Apply button. Don't uncheck Sync Music it will be unchecked by default when you choose the manual setting: Managing content manually on iPod
    Keep the iPods in manual mode until you have reloaded your iTunes and you are happy with the playlists etc then it will be safe to return it auto-sync again.

  • Release By two Users for the  same Value

    Friends
    I have an existing PO rel. strategy where the range is 1-10000USD  . This is currently released by one user. Now due to business requirement  client wants to introduce one additional user to release the PO as well for the same  value range.
    In a nutshell for the value range  USD 1-10000 , There will be two approvers with two different rel. codes. How do I achieve this?
    Thanks
    samuel

    Dear,
    Check this : Release Procudure for Purchase Order
    Hope Helpful to your requirement.
    Regards,
    Syed Hussain.

  • Need to Open Two Windows at the same time

    Hi All ,
    I have a requirement wherein I am opening a new page when the user presses a link . The information displayed to the user in the new page is Read-Only.To display the reqd info on the new page I pass some parameters encoded in the page call URL.
    Besides , displaying the info in the new page , it is imperative that i allow the user to continue performing some transactions in the current page (calling page).
    However , i am not able to achieve the same . If I use 'retainAM=Y' in the URL then i pass the Session Control from the calling page to the called page . So that option is out.
    Can u suggest something wherein i am able to pop-up a new page to the user , but still not loose the session control from the current page.
    It is necessary that the user has both windows open to perform the transactions.
    Thanks
    Chirag

    Senthil
    I need to clarify some things . I cannot create an OA Function as you have earlier advised . Lets say its a constraint i have. My scenario is that i have to prepare a HyperLink Declaratively . In that i am currently giving _Blank as the target .
    Now i want to open the new page and still allow the user to perform some transactions in the original page while the new page is still open . How should i go abt maintaining my AM from original page.
    Following are the scenarios i have already tried out.
    1) I have opened the the new page and released my application module in that page . This didnt work .
    2) I have tried doing retainAM=N . This also does not work.
    3) Using PopUp is not an option since i cant create OAFunction .
    Are their any other way . When i open a new window thru a current window , my AM gets transferred to the new window . Hence i am not able to perform any transactions on that the original page . How can u release the AM On click of a link ?
    Pls Suggest
    Thanks
    Chirag

  • Need to sort two vectors at the same time! please help!

    I have
    vectorA: 2 4 9 1 7 6 8
    vectorB: two four nine one seven six eight
    i want to sort these two vectors in parallel
    what is the best way?
    i could just do Collection.sort(vectorA) and get
    1 2 4 6 7 8 9
    but i want the vectorB to have a corresponding order
    please help!!
    thanks

    public class Pair implements Comparable {
    private int value;
    private String name;
    public int getValue() {
    return this.value;
    public void setValue(int value) {
    this.value = value;
    public String getName() {
    return this.name;
    public void setName(String name) {
    this.name = name;
    public int compareTo(Object o) {
    Pair that = (Pair) o;
    return this.value - that.value;
    place both in a Collection (vector is a bad choice if you are going to do sorting LinkedList is better) the Collections.sort method will sort
    according to the compareTo method.

  • In Firefox 4, where is the "Bookmark ALL Tabs" function? I really need this function and have downgraded back to F3, having not found it in 4.

    Not sure what extra details to provide past what I have already asked. Thanks for the help, though.

    Some menu entries are hidden by default and only appear if you use the keyboard to open the menu.
    "Bookmark All Tabs" and "Bookmark All Tabs" in the Bookmarks menu are among them.<br />
    You can see the difference if you use Alt+F or Alt+B to the File and Bookmarks menu and compare that to what you see if you use the mouse to open the menu after you have made the menu bar visible by pressing Alt or by pressing F10.
    * "Bookmark This Page" and "Bookmark All Tabs" no longer show in the Bookmarks menu unless you open the Bookmarks menu via the keyboard (Alt + B).
    * "Bookmark This Page" can be accessed via the right-click context menu of that browser page.
    * "Bookmark All Tabs" can be accessed via the right-click context menu of a tab on the tab bar.
    See also:
    * [/kb/how-do-i-use-bookmarks]

  • Open document syntax for  opening of two detail reports at the same time

    Hi All,
    I have one summary report   and two detail reports (sales detail Report  and Activation Detail Report)  In summary report I have serial number  when I click the particular serial number in summary report I need to display two detail  reports at the same time is  it possible to do In Business objects webintelligence 3.1
    I am using webi 3.1  , please suggest me any one how it do u2026u2026?
    Thanks in Advance!!!
    Regard,
    Sreekanth.

    while forming the link, try using java script.
    the html can be like:
    <html>
         <A href=" j avascript:window.open('http://www.google.com','','');j avascript:window.open('http://www.yahoo.com','','');">
              Click Here
         </A>
    </html>
    In place of # write (as I am not able to paste the code):
    javascript:window.open('http://www.google.com','','');javascript:window.open('http://www.yahoo.com','','');

  • ALV Report to have two different Reports

    Hi All,
    I have a need to display two different reports for the same set of data selections, (Successful data and Error Data) in a Single ALV Layout using a Application tool bar Button. Does anyone have a sample code for this kind of requirement. Preferably using Objects.
    Also, how can we check if an object is already created? In other words, how to check for a null reference?
    Thanks in advance.
    Jr.

    Sample code for split alv using OOABAP.
    this would help you in ur requirement.
    go through this program where the screen is divided in two for two alv in different containers.
    DATA: save_ok LIKE sy-ucomm,
          g_container TYPE scrfname VALUE 'CC1',
          g_grid  TYPE REF TO cl_gui_alv_grid,
          g_custom_container TYPE REF TO cl_gui_custom_container,
          gt_fieldcat TYPE lvc_t_fcat,
          g_max TYPE i VALUE 100.
    declarations for top of page event
    Data:  gv_c_split type ref to cl_gui_splitter_container,
           gv_c_ptv type ref to cl_gui_container,
           gv_alv_ptv type ref to cl_gui_alv_grid,
           o_dd_doc TYPE REF TO cl_dd_document,
           text TYPE sdydo_text_element,
           o_split type ref to cl_gui_easy_splitter_container,
           o_top type ref to cl_gui_container,
           o_bot type ref to cl_gui_container,
           gv_c_vp type ref to cl_gui_container.
    end of declaration for top of page.
    CLASS lcl_event_receiver DEFINITION DEFERRED.
    *class lcl_application_dc definition deferred.
    DATA: o_event_receiver TYPE REF TO lcl_event_receiver.
         g_dc type ref to lcl_application_dc.
    DATA: gt_outtab TYPE TABLE OF sbook.
          CLASS lcl_event_receiver DEFINITION
    CLASS lcl_event_receiver DEFINITION.
      PUBLIC SECTION.
        METHODS: handle_f4 FOR EVENT onf4 OF cl_gui_alv_grid
                   IMPORTING e_fieldname
                             es_row_no
                             er_event_data
                             et_bad_cells
                             e_display,
                handle_top_of_page FOR EVENT top_of_page OF cl_gui_alv_grid
                   IMPORTING e_dyndoc_id.
        METHODS: reset.
        METHODS: show_f4.
      PRIVATE SECTION.
    attributes for creating an own F4-Help
    (using a second ALV Grid Control
        DATA: f4_grid TYPE REF TO cl_gui_alv_grid,
              f4_custom_container TYPE REF TO cl_gui_custom_container.
        TYPES: BEGIN OF ty_f4.
        TYPES: value TYPE s_class.
        TYPES: descr(20) TYPE c.
        TYPES: END OF ty_f4.
        DATA: f4_itab TYPE TABLE OF ty_f4.
        DATA: f4_fieldcatalog TYPE lvc_t_fcat.
    attributes to store event parameters
    (after the CALL SCREEN command, the event parameters
    are not accessible)
        TYPES: BEGIN OF onf4_event_parameters_type.
        TYPES: c_fieldname     TYPE lvc_fname.
        TYPES: cs_row_no       TYPE lvc_s_roid.
        TYPES: cr_event_data   TYPE REF TO cl_alv_event_data.
        TYPES: ct_bad_cells    TYPE lvc_t_modi.
        TYPES: c_display       TYPE char01.
        TYPES: END OF onf4_event_parameters_type.
        DATA: f4_params TYPE onf4_event_parameters_type.
    Methods to create own F4-Help
    (This is done using a second ALV Grid Control)
        METHODS: init_f4.
        METHODS: build_fieldcatalog.
        METHODS: fill_f4_itab .
        METHODS: on_double_click FOR EVENT double_click OF cl_gui_alv_grid
                        IMPORTING es_row_no.
    ENDCLASS.                    "lcl_application_f4 DEFINITION
          CLASS lcl_event_receiver IMPLEMENTATION
    CLASS lcl_event_receiver IMPLEMENTATION.
    *§2. Implement an event handler method for event ONF4.
      METHOD handle_f4.
    Save event parameter as global attributes of this class
    (maybe solved differently if you use a function module!)
        f4_params-c_fieldname = e_fieldname.
        f4_params-cs_row_no = es_row_no.
        f4_params-cr_event_data = er_event_data.
        f4_params-ct_bad_cells = et_bad_cells.
        f4_params-c_display = e_display.
    *§3. Call your own f4 help. To customize your popup check
       first if the cell is ready for input (event parameter E_DISPLAY).
    (parameter E_DISPLAY is checked later in method on_double_click)
    (Probably, you would call a function module at this point,
    pass the needed event parameter and call the popup screen
    within that function module. This is not done in this example
    to avoid scattering its code).
        CALL SCREEN 101 STARTING AT 10 10.
    *§7. Inform the ALV Grid Control that an own f4 help has been processed
       to suppress the standard f4 help.
        er_event_data->m_event_handled = 'X'.
      ENDMETHOD.                                                "on_f4
      METHOD show_f4.
       DATA: ls_outtab TYPE sbook.
    initialize own f4 help if needed
        IF f4_custom_container IS INITIAL.
          CALL METHOD init_f4.
        ENDIF.
        CALL METHOD fill_f4_itab.
    refresh list of values in f4 help and show it
        CALL METHOD f4_grid->refresh_table_display.
    CAUTION: Do not use method REFRESH_TABLE_DISPLAY for
    your editable ALV Grid instances while handling events
    DATA_CHANGED or ONf4. You would overwrite intermediate
    values of your output table on frontend.
    'f4_grid' is a non-editable ALV Grid Control for the
    application specific F4-Help. Therefore, calling
    REFRESH_TABLE_DISPLAY for this instance has no
    negative effect.
        CALL METHOD cl_gui_cfw=>flush.
      ENDMETHOD.                                                "show_f4
      METHOD init_f4.
        DATA: ls_f4_layout TYPE lvc_s_layo.
    build fieldcatalog entries for f4
        CALL METHOD build_fieldcatalog.
    create controls
        CREATE OBJECT f4_custom_container
                  EXPORTING container_name = 'CC_ONF4'.
        CREATE OBJECT f4_grid
                  EXPORTING i_parent = f4_custom_container.
    hide toolbar
        ls_f4_layout-no_toolbar = 'X'.
        CALL METHOD f4_grid->set_table_for_first_display
          EXPORTING
            is_layout       = ls_f4_layout
          CHANGING
            it_fieldcatalog = f4_fieldcatalog
            it_outtab       = f4_itab.
    register event double click on backend
        SET HANDLER me->on_double_click FOR f4_grid.
    flush since 'ls_layout' is local!
        CALL METHOD cl_gui_cfw=>flush.
      ENDMETHOD.                                                "init_f4
      METHOD fill_f4_itab.
        DATA ls_f4_itab TYPE ty_f4.
    Delete all entries in f4_itab to determine
    offered values dynamically
        CLEAR f4_itab[].
        ls_f4_itab-value = 'C'.
        ls_f4_itab-descr = text-t03. "Business Class
        APPEND ls_f4_itab TO f4_itab.
        ls_f4_itab-value = 'Y'.
        ls_f4_itab-descr = text-t04. "Economie Class
        APPEND ls_f4_itab TO f4_itab.
        ls_f4_itab-value = 'F'.
        ls_f4_itab-descr = text-t05. "First Class
        APPEND ls_f4_itab TO f4_itab.
      ENDMETHOD.                    "fill_f4_itab
      METHOD build_fieldcatalog.
        DATA: ls_fcat TYPE lvc_s_fcat.
        CLEAR ls_fcat.
        ls_fcat-fieldname = 'VALUE'.
        ls_fcat-coltext = text-t02.
       ls_fcat-inttype = 'S_CLASS'.
        ls_fcat-outputlen = 5.
        APPEND ls_fcat TO f4_fieldcatalog.
        CLEAR ls_fcat.
        ls_fcat-fieldname = 'DESCR'.
        ls_fcat-coltext = text-t01.
        ls_fcat-inttype = 'C'.
        ls_fcat-outputlen = 20.
        APPEND ls_fcat TO f4_fieldcatalog.
      ENDMETHOD.                    "build_fieldcatalog
      METHOD on_double_click.
    *§5. If not already caught by your own f4 help, check whether
       the triggered cell was ready for input by using E_DISPLAY
       and if not, exit.
        IF f4_params-c_display EQ 'X'.
          LEAVE SCREEN.
        ENDIF.
    *§6. After the user selected a value, pass it to the ALV Grid Control:
    *§  6a. Define a field symbol of type: LVC_T_MODI and a structure of
          type LVC_S_MODI to pass the value later on.
        FIELD-SYMBOLS  TYPE lvc_t_modi.
        DATA: ls_modi TYPE lvc_s_modi,
              ls_f4_itab TYPE ty_f4.
    *§  6b. Dereference attribute M_DATA into your field symbol and add
          the selected value to the table to which this symbol points to.
        ASSIGN f4_params-cr_event_data->m_data->* TO .
        LEAVE TO SCREEN 0.
      ENDMETHOD.                    "on_double_click
      METHOD reset.
        FIELD-SYMBOLS display_document
                 EXPORTING parent = o_top.
      ENDMETHOD.                    "handle_top_of_page
    ENDCLASS.                    "lcl_application_f4 IMPLEMENTATION
    END-OF-SELECTION.
      CALL SCREEN 100.
          MODULE PBO OUTPUT                                             *
    MODULE pbo OUTPUT.
      SET PF-STATUS 'MAIN100'.
      SET TITLEBAR 'MAIN100'.
      IF g_custom_container IS INITIAL.
        PERFORM create_and_init_alv CHANGING gt_outtab[]
                                             gt_fieldcat.
      ENDIF.
    ENDMODULE.                    "pbo OUTPUT
          MODULE PAI INPUT                                              *
    MODULE pai INPUT.
      save_ok = sy-ucomm.
      CLEAR sy-ucomm.
      CASE save_ok.
        WHEN 'EXIT' OR 'BACK' OR 'CANCEL'.
          PERFORM exit_program.
        WHEN 'SWITCH'.
          PERFORM switch_edit_mode.
        WHEN OTHERS.
        do nothing
      ENDCASE.
    ENDMODULE.                    "pai INPUT
          FORM EXIT_PROGRAM                                             *
    FORM exit_program.
      LEAVE PROGRAM.
    ENDFORM.                    "exit_program
    *&      Form  build_fieldcat
          text
         -->PT_FIELDCAT  text
    FORM build_fieldcat CHANGING pt_fieldcat TYPE lvc_t_fcat.
      DATA ls_fcat TYPE lvc_s_fcat.
      CALL FUNCTION 'LVC_FIELDCATALOG_MERGE'
        EXPORTING
          i_structure_name = 'SBOOK'
        CHANGING
          ct_fieldcat      = pt_fieldcat.
      LOOP AT pt_fieldcat INTO ls_fcat.
    Exchange smoker field with invoice field - just to
    make the dependance between SMOKER and CLASS more transparent
    (Smoking is only allowed in the first class).
        IF ls_fcat-fieldname EQ 'SMOKER'.
          ls_fcat-col_pos = 11.
          ls_fcat-outputlen = 10.
          ls_fcat-edit = 'X'.
    Field 'checktable' is set to avoid shortdumps that are caused
    by inconsistend data in check tables. You may comment this out
    when the test data of the flight model is consistent in your system.
          ls_fcat-checktable = '!'.        "do not check foreign keys
          MODIFY pt_fieldcat FROM ls_fcat.
        ELSEIF ls_fcat-fieldname EQ 'INVOICE'.
          ls_fcat-col_pos = 7.
          MODIFY pt_fieldcat FROM ls_fcat.
        ELSEIF    ls_fcat-fieldname EQ 'CLASS'.
          ls_fcat-edit = 'X'.
          ls_fcat-outputlen = 5.
          ls_fcat-checktable = '!'.        "do not check foreign keys
          MODIFY pt_fieldcat FROM ls_fcat.
        ENDIF.
      ENDLOOP.
    ENDFORM.                    "build_fieldcat
    *&      Form  create_and_init_alv
          text
         -->PT_OUTTAB    text
         -->PT_FIELDCAT  text
    FORM create_and_init_alv CHANGING pt_outtab TYPE STANDARD TABLE
                                      pt_fieldcat TYPE lvc_t_fcat.
      DATA: lt_exclude TYPE ui_functions,
            ls_layout TYPE lvc_s_layo.
      CREATE OBJECT g_custom_container
              EXPORTING container_name = g_container.
    CREATE OBJECT g_grid
            EXPORTING i_parent = g_custom_container.
      CREATE OBJECT gv_c_split
         EXPORTING
          link_dynnr        = lv_dynnr
          link_repid        = lv_repid
          parent            = g_custom_container
          rows              = 2
          columns           = 1
         EXCEPTIONS
           cntl_error        = 1
           cntl_system_error = 2
           others            = 3    .
      CALL METHOD gv_c_split->set_border
       EXPORTING
         border            = space.
      CALL METHOD gv_c_split->get_container
         EXPORTING
           row       = 1
           column    = 1
         RECEIVING
           container = gv_c_ptv.
      CALL METHOD gv_c_split->set_row_height
        EXPORTING
          id                = 1
          height            = 20
        EXCEPTIONS
          cntl_error        = 1
          cntl_system_error = 2
          OTHERS            = 6 .
      CALL METHOD gv_c_split->get_container
         EXPORTING
           row       = 2
           column    = 1
         RECEIVING
           container = gv_c_vp .
      CALL METHOD gv_c_split->set_row_height
        EXPORTING
          id                = 2
          height            = 10
        EXCEPTIONS
          cntl_error        = 1
          cntl_system_error = 2
          OTHERS            = 3 .
       CREATE OBJECT o_split
         EXPORTING
          parent            = gv_c_ptv
          with_border       = 1
         EXCEPTIONS
           cntl_error        = 1
           cntl_system_error = 2
           others            = 3.
      IF sy-subrc <> 0.
        MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
                   WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
      ENDIF.
    o_top = o_split->top_left_container.
    o_bot = o_split->bottom_right_container.
    CREATE OBJECT gv_alv_ptv
         EXPORTING
           i_parent          = o_bot
         EXCEPTIONS
           error_cntl_create = 1
           error_cntl_init   = 2
           error_cntl_link   = 3
           error_dp_create   = 4
           others            = 5    .
    CREATE OBJECT g_grid
            EXPORTING
              i_parent          = gv_c_vp
            EXCEPTIONS
              error_cntl_create = 1
              error_cntl_init   = 2
              error_cntl_link   = 3
              error_dp_create   = 4
              others            = 5    .
      PERFORM build_fieldcat CHANGING pt_fieldcat.
    Optionally restrict generic functions to 'change only'.
      (The user shall not be able to add new lines).
      PERFORM exclude_tb_functions CHANGING lt_exclude.
      PERFORM build_data CHANGING pt_outtab.
      ls_layout-grid_title = 'F4 help implemented for field CLASS'.
      CREATE OBJECT o_event_receiver.
      SET HANDLER o_event_receiver->handle_top_of_page FOR gv_alv_ptv.
      SET HANDLER o_event_receiver->handle_top_of_page FOR g_grid.
      CREATE OBJECT o_dd_doc EXPORTING style = 'ALV_GRID'
                                       no_margins = 'X'.
      CALL METHOD gv_alv_ptv->set_table_for_first_display
       EXPORTING
         is_layout                    = ls_layout
      CHANGING
        it_outtab                     = pt_outtab[]
        it_fieldcatalog               = pt_fieldcat
      EXCEPTIONS
        invalid_parameter_combination = 1
        program_error                 = 2
        too_many_lines                = 3
        OTHERS                        = 4.
      CALL METHOD g_grid->set_table_for_first_display
        EXPORTING
          it_toolbar_excluding = lt_exclude
          is_layout            = ls_layout
        CHANGING
          it_fieldcatalog      = pt_fieldcat
          it_outtab            = pt_outtab[].
      CALL METHOD gv_alv_ptv->list_processing_events
        EXPORTING
          i_event_name      = 'TOP_OF_PAGE'
           i_dyndoc_id       = o_dd_doc.
    register f4 for field CLASS
      PERFORM register_events.
    Set editable cells to ready for input initially
      CALL METHOD g_grid->set_ready_for_input
        EXPORTING
          i_ready_for_input = 1.
    ENDFORM.                               "CREATE_AND_INIT_ALV
    *&      Form  exclude_tb_functions
          text
         -->PT_EXCLUDE text
    FORM exclude_tb_functions CHANGING pt_exclude TYPE ui_functions.
    Only allow to change data not to create new entries (exclude
    generic functions).
      DATA ls_exclude TYPE ui_func.
      ls_exclude = cl_gui_alv_grid=>mc_fc_loc_copy_row.
      APPEND ls_exclude TO pt_exclude.
      ls_exclude = cl_gui_alv_grid=>mc_fc_loc_delete_row.
      APPEND ls_exclude TO pt_exclude.
      ls_exclude = cl_gui_alv_grid=>mc_fc_loc_append_row.
      APPEND ls_exclude TO pt_exclude.
      ls_exclude = cl_gui_alv_grid=>mc_fc_loc_insert_row.
      APPEND ls_exclude TO pt_exclude.
      ls_exclude = cl_gui_alv_grid=>mc_fc_loc_move_row.
      APPEND ls_exclude TO pt_exclude.
    ENDFORM.                               " EXCLUDE_TB_FUNCTIONS
    *&      Form  build_data
          text
    -->  p1        text
    <--  p2        text
    FORM build_data CHANGING pt_outtab TYPE STANDARD TABLE.
      DATA: ls_sbook TYPE sbook,
            l_index TYPE i.
      SELECT * FROM sbook INTO TABLE gt_outtab UP TO g_max ROWS.
      IF sy-subrc NE 0.
        PERFORM generate_entries CHANGING pt_outtab.
      ENDIF.
      LOOP AT pt_outtab INTO ls_sbook.
        l_index = sy-tabix.
        CLEAR ls_sbook-class.
    Alternate between smoker and non smoker to make
    it more obvious what this example is about
        l_index = l_index MOD 2.
        IF l_index EQ 1.
          ls_sbook-smoker = 'X'.
        ELSE.
          ls_sbook-smoker = ' '.
        ENDIF.
        MODIFY pt_outtab FROM ls_sbook.
      ENDLOOP.
    ENDFORM.                               " build_data
    *&      Form  generate_entries
          text
         -->PT_SBOOK   text
    FORM generate_entries CHANGING pt_sbook TYPE STANDARD TABLE.
      DATA: ls_sbook TYPE sbook,
            l_month(2) TYPE c,
            l_day(2) TYPE c,
            l_date(8) TYPE c,
         l_prebookid TYPE i.
      ls_sbook-carrid = 'LH'.
      ls_sbook-connid = '0400'.
      ls_sbook-forcurkey = 'DEM'.
      ls_sbook-loccurkey = 'USD'.
      ls_sbook-custtype = 'B'.
      DO 110 TIMES.
        l_prebookid = sy-index.
        ls_sbook-forcuram = sy-index * 10.
        ls_sbook-loccuram = ls_sbook-loccuram * 2.
        ls_sbook-customid = sy-index.
        ls_sbook-counter = 18.
        ls_sbook-agencynum = 11.
        l_month = sy-index / 10 + 1.
        DO 2 TIMES.
          l_day = 3 + l_month + sy-index * 2.
          l_date+0(4) = '2000'.
          l_date+4(2) = l_month.
          l_date+6(2) = l_day.
          ls_sbook-fldate = l_date.
          SUBTRACT 3 FROM l_day.
          ls_sbook-order_date+0(6) = l_date+0(6).
          ls_sbook-order_date+6(2) = l_day.
          ls_sbook-bookid = l_prebookid * 2 + sy-index.
          IF sy-index EQ 1.
            ls_sbook-smoker = 'X'.
          ELSE.
            ls_sbook-smoker = space.
          ENDIF.
          ls_sbook-luggweight = l_prebookid * 10.
          IF ls_sbook-luggweight GE 1000.
            ls_sbook-wunit = 'G'.
            ls_sbook-class = 'C'.
          ELSE.
            ls_sbook-wunit = 'KG'.
            ls_sbook-class = 'Y'.
          ENDIF.
          IF ls_sbook-bookid > 40 AND ls_sbook-wunit EQ 'KG'.
            ls_sbook-invoice = 'X'.
          ENDIF.
          IF ls_sbook-bookid EQ 2.
            ls_sbook-cancelled = 'X'.
            ls_sbook-class = 'F'.
          ENDIF.
          APPEND ls_sbook TO pt_sbook.
        ENDDO.
      ENDDO.
    ENDFORM.                               " generate_entries
    *&      Form  register_events
          text
    FORM register_events.
    *§1. Register event ONF4 at frontend using method
       register_f4_for_fields. For this purpose, you pass a table
       with all fields, for which you want to implement your own
       f4 help.
    remark: If you want to use an own f4 help for fields where
            no standard f4 help exists set field F4AVAILABL for
            this field in the fieldcatalog.
      DATA: lt_f4 TYPE lvc_t_f4 WITH HEADER LINE.
      CLEAR lt_f4.
      lt_f4-fieldname = 'CLASS'.
    If you would like to deregister the field again,
    pass value SPACE with field 'register'.
      lt_f4-register = 'X'.
    *§  1b. If the value range in your f4 help depends on other
          values of cells that are input enabled, set the
          GETBEFORE parameter.
    The consequence is that the ALV Grid Control raises
    event DATA_CHANGED before the f4 help is called to
    check values that the f4 help depends on.
      lt_f4-getbefore = 'X'.
    The next parameter is used to change values after onf4 has
    been processed. The ALV Grid Control will raise
    event DATA_CHANGED afterwards, if you set it.
      lt_f4-chngeafter = space.
      INSERT TABLE lt_f4.
      CALL METHOD g_grid->register_f4_for_fields
        EXPORTING
          it_f4 = lt_f4[].
    register events for abap objects (backend)
      SET HANDLER o_event_receiver->handle_f4 FOR g_grid.
    ENDFORM.                    " register_events
    MODULE status_0101 OUTPUT
    MODULE status_0101 OUTPUT.
      SET PF-STATUS 'POPUP'.
      SET TITLEBAR 'POPUP'.
      CALL METHOD o_event_receiver->show_f4.
    ENDMODULE.                 " STATUS_0101  OUTPUT
    *&      Module  USER_COMMAND_0101  INPUT
          text
    MODULE user_command_0101 INPUT.
      PERFORM user_command.
    ENDMODULE.                 " USER_COMMAND_0101  INPUT
    *&      Form  user_command
          text
    FORM user_command.
      DATA: save_ok TYPE sy-ucomm.
      save_ok = sy-ucomm.
      CLEAR sy-ucomm.
      CASE save_ok.
        WHEN 'CANCEL'.
          CALL METHOD o_event_receiver->reset.
          LEAVE TO SCREEN 0.
      ENDCASE.
    ENDFORM.                    "user_command
    *&      Form  switch_edit_mode
          text
    FORM switch_edit_mode.
      IF g_grid->is_ready_for_input( ) EQ 0.
    set edit enabled cells ready for input
        CALL METHOD g_grid->set_ready_for_input
          EXPORTING
            i_ready_for_input = 1.
      ELSE.
    lock edit enabled cells against input
        CALL METHOD g_grid->set_ready_for_input
          EXPORTING
            i_ready_for_input = 0.
      ENDIF.
    ENDFORM.                    "switch_edit_mode

  • Two Objects

    If I make two objects of the same class like:
    JMenu menu=new JMenu();
    JMenu menu= new JMenu("Menu 1");
    and then did compared them equal to each other, would they be the same object?
    And I'm actually have a program which makes multipe of the same object by calling
    new frames such a
    frame=new JFrame() and I'm wondering would each fram be different if set to .equals()?

    What I was asking b4 if both had the same name and created, would they both be the same object.Well they both can't have the same name. A variable can only point to one object at a time, so I don't understand your question.
    And you need two variables to compare objects. So given that you know if you assign the object to two different variable they will not be equal, I don't understand what you where asking.
    So thats why you create a post a SSCCE. To show code that does what you try to explain in english.
    Shouldn't you be less critical/deamaning and more positve/helpful? You still haven't learned to respond to postings when you receive suggestions as id evidenced by this posting two days ago:
    http://forum.java.sun.com/thread.jspa?threadID=5181968&messageID=9709306#9709306
    I've tried to give you the benefit of the doubt but you still refuse to do even the simplest things that have been asked of you.

Maybe you are looking for