"IS REQUESTED" keyword

Hi all,
      We are upgrading our ECC system from 4.6 to 6.0.
      In one of the Function module we get a syntax warning :"Obsolete statement found IS REQUESTED not permitted" for line
  CHECK ABC IS REQUESTED.
Here ABC is TABLES parameter defined in the Function module's interface.
According to the ABAP Keyword document, I got to know we can replace IS REQUESTED by IS SUPPLIED. But after this replacement I get the error : " The "IS SUPPLIED" query is not supported in update modules."
If anyone knows correct replacement for "IS REQUESTED", please help.
Thanks,
Regards
Deepika

Also to add to this : The complete obsolete warning description is :"The IS REQUESTED addition is not permitted for TABLES parameters in update function modules, since they are always supplied with data during update. ". 
And the source code extract of the fm
FUNCTION ZAPL_DB_ADRCITYAPL_UPDATE.
""Update Function Module:
""Local Interface:
*"  IMPORTING
*"     VALUE(X_COUNTRY) LIKE  ADRCITY-COUNTRY
*"     VALUE(X_CITY_CODE) LIKE  ADRCITY-CITY_CODE
*"  TABLES
*"      XT_ADRCITYAPL STRUCTURE  ADRCITYPRT OPTIONAL
*"  EXCEPTIONS
*"      UPDATE_INCOMPLETE
  IF SY-SUBRC NE 0.
  doesn't matter, maybe there haven't been any ADRCITYAPL
  ENDIF.
don't continue if ADRCITYAPL should be deleted
  CHECK XT_ADRCITYAPL IS REQUESTED.
insert all (new, old and changed) ADRCITYAPL
INSERT ADRCITYAPL FROM TABLE XT_ADRCITYAPL.
check if insert was okay, if not -> rollback
  IF SY-SUBRC NE 0.
    MESSAGE A046(R5) WITH 'ADRCITYAPL' RAISING UPDATE_INCOMPLETE.
  ENDIF.

Similar Messages

  • Feature request: keyword search like Google Toolbar

    One of the features (well, the ONLY feature) that keeps me from using Safari as my default browser is a feature I get through Google's Toolbar.
    After you type in keywords for a search in Google's toolbar. You can click on the word (in the right area) and it will automatically find the next occurrence of that word on the page. (You can alternatively clock on the "highlighter" icon and it will highlight any words in your search). You can find any individual word.
    Safari's feature to do this, as far as I can tell, is far less useful. After you type in some keywords. You can click on the magnifying glass and at the bottom, it has the ability to search for the keyword OR phrase, depending on how you search.
    Google's Toolbar feature is amazingly productive -- and useful. I can't figure out why none of the browsers have picked up on this feature.
    (If someone knows a way to do this with Safari, I'd appreciate it).
    Thank you.

    Thank you very much for the responses. I spent forever trying to find the feature request area in support, but failed. Perhaps it would have bitten me.... Thanks for the pointer...
    As for this capability, there's no reason why a browser couldn't support this feature -- doesn't matter that Google did it in a toolbar. And, in fact, if you click on the magnifying glass in the search box, it does allow you to search within the current page for what you searched for (though it's limited only to the "phrase"). It's at the bottom... You have to have words in the search box to see this.
    I'll make the suggestion directly to Apple.
    To anyone who hasn't used this capability -- it's really powerful. That said, you need the Google Toolbar which is only supported on Firefox, not Safari (on the Mac platform).

  • Feature request: Keyword count

    I would like to be able to search and create smart collections using the number of keywords as criteria. The default smart collection titled "Without Keywords" is cute, but it doesn't help me at all. As soon as I add one keyword, the image goes away! I would like to go further than that. I would like to, for example, find all images that have a rating greater than or equal to 3 stars, and have less than or equal to 20 keywords. This would be a big help for making sure that my entire catalogue is properly keyworded.

    The latest version of the Any Filter plugin lets you test the number of keywords (or collections or locations shown or ...).  See the "Less than 3 explicit keywords" example filter.

  • PROCESS ON HELP-REQUEST

    Hi
    wat is importance of POH. what If there is no PROCESS ON HELP-REQUEST ?
    Thanks and regards
    - Puneet Sharma.

    To display data element supplement documentation, you must code the following screen flow logic in the POH event:
    PROCESS ON HELP-REQUEST.
      FIELD <f> [MODULE <mod>] WITH <num>.
    After PROCESS ON HELP-REQUEST, you can only use FIELD statements. If there is no PROCESS ON HELP-REQUEST keyword in the flow logic of the screen, the data element documentation for the current field, or no help at all is displayed when the user chooses F1. Otherwise, the next FIELD statement containing the current field <f> is executed.
    If there is screen-specific data element supplement documentation for the field <f>, you can display it by specifying its number <num>. The number <num> can be a literal or a variable. The variable must be declared and filled in the corresponding ABAP program.
    You can fill the variables, for example, by calling the module <mod> before the help is displayed. However, the FIELD statement does not transport the contents of the screen field <f> to the ABAP program in the PROCESS ON HELP-REQUEST event.

  • How to provide F4 help for a field in table control

    Hi Friends,
    I have requirement like below.
    1.Create one custom transaction code with header and item information.
    2.In item level, we will be designed table control to enter/display the data.
    3.Table control’s first field will be material number and next DOT number (Material may have many DOT numbers) and so on.
    4.First user will enter material number in the table control’s first row’s first field and go to DOT number field.
    5.DOT number has drop down option. If user selects drop down box of DOT number, he gets all the DOT numbers available in database. User selects one DOT number and double clicks on it then it will be populated in DOT number field box.
    But for point number 5,  business wants like when ever user enters material number in table control first field then select DOT number’s drop down then they want to see the particular material’s DOT numbers only in the drop down list for selection. Not all DOT numbers available in data base. Same thing should happen for all item lines in table control.
    Please see below example. 
    Assume data base table has 10 DOT numbers. But material number has only 2 DOT numbers. When ever user enters material number in item level table control and selects DOT number’s drop down then it should show only 2 DOT numbers which are related to particular material number. Not all 10 DOT numbers.
    Could you please suggest me, how can we achieve this?

    Hello,
    Check this :-
    For POV
    Input Help in Dialog Modules
    You can call dialog modules in the POV event using the event keyword PROCESS ON VALUE-REQUEST.
    PROCESS ON VALUE-REQUEST.
    FIELD <f> MODULE <mod>.
    After the PROCESS ON VALUE-REQUEST statement, you can only use the MODULE statement together with the FIELD statement. When the user chooses F4 for a field <f>, the system calls the module <mod> belonging to the FIELD <f> statement. If there is more than one FIELD statement for the same field <f>, only the first is executed. The module <mod> is defined in the ABAP program like a normal PAI module. However, the contents of the screen field <f> are not available, since it is not transported by the FIELD statement during the PROCESS ON HELP-REQUEST event. You can now program your own value lists in the module. However, this procedure is only recommended if it really is not possible to use a search help. Defining search helps is much easier than PROCESS ON VALUE-REQUEST, since the system takes over some of the standard operations, such as getting field contents from the screen. It also ensures that the F4 help has a uniform look and feel throughout the system. Furthermore, it means that you do not have to reassign input help to fields on each screen.
    Despite the introduction of search helps (and search help exits), there are still cases in which you need to use parts of the standard F4 functions directly. In this case, there are some standard function modules that you can use in the POV event. They support search helps, as well as all other kinds of input help, and are responsible for data transport between the screen and the input help. These all have the prefix F4IF_. The most important are:
    F4IF_FIELD_VALUE_REQUEST
    Calls the input help of the ABAP Dictionary dynamically. You can pass the component names of a structure or database table of the ABAP Dictionary to the function module in the import parameters TABNAME and FIELDNAME. The function module starts the ABAP Dictionary input help for this component. All of the relevant screen fields are read. If you specify the import parameters DYNPPROG, DYNPNR, and DYNPROFIELD, the user’s selection is returned to the corresponding field on the screen. If you specify the table parameter RETURN_TAB, the selection is returned into the table instead.
    F4IF_INT_TABLE_VALUE_REQUEST
    This function module displays a value list that you created in an ABAP program. The value list is passed to the function module as the table parameter VALUE_TAB. If you specify the import parameters DYNPPROG, DYNPNR, and DYNPROFIELD, the user’s selection is returned to the corresponding field on the screen. If you specify the table parameter RETURN_TAB, the selection is returned into the table instead.
    There are also two function modules - DYNP_VALUES_READ and DYNP_VALUES_UPDATE - that can read the values of screen fields and return values to them during the POV event. For further information, refer to the relevant function module documentation.
    Input help in dialog modules
    REPORT DEMO_DYNPRO_F4_HELP_MODULE.
    TYPES: BEGIN OF VALUES,
    CARRID TYPE SPFLI-CARRID,
    CONNID TYPE SPFLI-CONNID,
    END OF VALUES.
    DATA: CARRIER(3) TYPE C,
    CONNECTION(4) TYPE C.
    DATA: PROGNAME LIKE SY-REPID,
    DYNNUM LIKE SY-DYNNR,
    DYNPRO_VALUES TYPE TABLE OF DYNPREAD,
    FIELD_VALUE LIKE LINE OF DYNPRO_VALUES,
    VALUES_TAB TYPE TABLE OF VALUES.
    CALL SCREEN 100.
    MODULE INIT OUTPUT.
    PROGNAME = SY-REPID.
    DYNNUM = SY-DYNNR.
    CLEAR: FIELD_VALUE, DYNPRO_VALUES.
    FIELD_VALUE-FIELDNAME = 'CARRIER'.
    APPEND FIELD_VALUE TO DYNPRO_VALUES.
    ENDMODULE.
    MODULE CANCEL INPUT.
    LEAVE PROGRAM.
    ENDMODULE.
    MODULE VALUE_CARRIER INPUT.
    CALL FUNCTION 'F4IF_FIELD_VALUE_REQUEST'
    EXPORTING
    TABNAME = 'DEMOF4HELP'
    FIELDNAME = 'CARRIER1'
    DYNPPROG = PROGNAME
    DYNPNR = DYNNUM
    DYNPROFIELD = 'CARRIER'.
    ENDMODULE.
    MODULE VALUE_CONNECTION INPUT.
    CALL FUNCTION 'DYNP_VALUES_READ'
    EXPORTING
    DYNAME = PROGNAME
    DYNUMB = DYNNUM
    TRANSLATE_TO_UPPER = 'X'
    TABLES
    DYNPFIELDS = DYNPRO_VALUES.
    READ TABLE DYNPRO_VALUES INDEX 1 INTO FIELD_VALUE.
    SELECT CARRID CONNID
    FROM SPFLI
    INTO CORRESPONDING FIELDS OF TABLE VALUES_TAB
    WHERE CARRID = FIELD_VALUE-FIELDVALUE.
    CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
    EXPORTING
    RETFIELD = 'CONNID'
    DYNPPROG = PROGNAME
    DYNPNR = DYNNUM
    DYNPROFIELD = 'CONNECTION'
    VALUE_ORG = 'S'
    TABLES
    VALUE_TAB = VALUES_TAB.
    ENDMODULE.
    The next screen (statically defined) for screen 100 is itself. It has the following layout:
    The input fields have been adopted from the program fields CARRIER and CONNECTION. The pushbutton has the function code CANCEL with function type E.
    The screen flow logic is as follows:
    PROCESS BEFORE OUTPUT.
    MODULE INIT.
    PROCESS AFTER INPUT.
    MODULE CANCEL AT EXIT-COMMAND.
    PROCESS ON VALUE-REQUEST.
    FIELD CARRIER MODULE VALUE_CARRIER.
    FIELD CONNECTION MODULE VALUE_CONNECTION.
    When the user chooses input help for the individual fields, the following is displayed:
    For the Airline field, the POV module VALUE_CARRIER is called. The function module F4IF_FIELD_VALUE_REQUEST displays the input help for the component CARRIER1 of the structure DEMOF4HELP from the ABAP Dictionary, namely the search help DEMOF4DE. The user’s selection is returned to the screen field CARRIER.
    For the Flight number field, the POV module VALUE_CONNECTION is called. The function module DYNP_VALUE_READ transports the value of the screen field CARRIER into the program. The program then reads the corresponding values from the database table SPFLI into the internal table VALUES_TAB using a SELECT statement, and passes the internal table to F4IF_INT_TABLE_VALUE_REQUEST. This displays the internal table as input help, and places the user’s selection into the screen field CONNECTION.
    For POH------------
    Field Help
    There are three ways of displaying field help for screen elements:
    Data Element Documentation
    If you place a field on the screen in the Screen Painter by copying a ABAP Dictionary field, the corresponding data element documentation from the ABAP Dictionary is automatically displayed when the user chooses field help (as long as the help has not been overridden in the screen flow logic).
    For further information about creating data element documentation, refer to data elements.
    Data Element Supplement Documentation
    If the data element documentation is insufficient, you can expand it by writing a data element supplement
    Data element supplement documentation contains the heading Definition, as well as the following others:
    Use
    Procedure
    Examples
    Dependencies
    To create data element supplement documentation for a screen, choose Goto ® Documentation ® DE supplement doc. from the element list of the screen. A dialog box appears in which the system proposes a number as the identified for the data element supplement. You can then enter help texts for the above headings using the SAPscript editor.
    Data element supplement documentation created in this way is program- and screen-specific. Any data element supplement documentation created in the ABAP Dictionary with the same number is overridden by the screen-specific documentation. You can link existing data element supplement documentation created in the ABAP Dictionary with a screen field by using the table THLPF. To do this, crate a new row in THLPF containing the following data: Program name, screen name, field name, and number of the data element supplement documentation.
    To display data element supplement documentation, you must code the following screen flow logic in the POH event:
    PROCESS ON HELP-REQUEST.
    FIELD <f> [MODULE <mod>] WITH <num>.
    After PROCESS ON HELP-REQUEST, you can only use FIELD statements. If there is no PROCESS ON HELP-REQUEST keyword in the flow logic of the screen, the data element documentation for the current field, or no help at all is displayed when the user chooses F1. Otherwise, the next FIELD statement containing the current field <f> is executed.
    If there is screen-specific data element supplement documentation for the field <f>, you can display it by specifying its number <num>. The number <num> can be a literal or a variable. The variable must be declared and filled in the corresponding ABAP program.
    You can fill the variables, for example, by calling the module <mod> before the help is displayed. However, the FIELD statement does not transport the contents of the screen field <f> to the ABAP program in the PROCESS ON HELP-REQUEST event.
    For further information about data element supplement documentation, refer to Data Element Supplements.
    Calling Help Texts from Dialog Modules
    If data element supplement documentation is insufficient for your requirements, or you want to display help for program fields that you have not copied from the ABAP Dictionary, you can call dialog modules in the POH event:
    PROCESS ON HELP-REQUEST.
    FIELD <f> MODULE <mod>.
    After the PROCESS ON HELP-REQUEST statement, you can only use the MODULE statement together with the FIELD statement. When the user chooses F1 for a field <f>, the system calls the module <mod> belonging to the FIELD <f> statement. If there is more than one FIELD statement for the same field <f>, only the first is executed. However, the contents of the screen field <f> are not available in the module <mod>, since it is not transported by the FIELD statement during the PROCESS ON HELP-REQUEST event. The field help should not be dependent on the user input.
    The module <mod> is defined in the ABAP program like a normal PAI module. The processing logic of the module must ensure that adequate help is displayed for the field in question. Instead of calling an extra screen with text fields, you should use one of the following function modules to display a suitable SAPscript document:
    HELP_OBJECT_SHOW_FOR_FIELD
    This function module displays the data element documentation for components of any structure or database table from the ABAP Dictionary. You pass the name of the component and structure or table to the import parameters FIELD and TABLE.
    HELP_OBJECT_SHOW
    Use this function module to display any SAPscript document. You must pass the document class (for example, TX for general texts, DE for data element documentation) and the name of the document to the import parameters DOKCLASS and DOKNAME. For technical reasons, you must also pass an empty internal table with the line type TLINE to the tables parameter of the function module.
    For further information about how to create SAPscript documents, refer to the Documentation of System Objects documentation.
    Field help on screens.
    REPORT DEMO_DYNPRO_F1_HELP.
    DATA: TEXT(30),
    VAR(4),
    INT TYPE I,
    LINKS TYPE TABLE OF TLINE,
    FIELD3, FIELD4.
    TABLES DEMOF1HELP.
    TEXT = TEXT-001.
    CALL SCREEN 100.
    MODULE CANCEL INPUT.
    LEAVE PROGRAM.
    ENDMODULE.
    MODULE F1_HELP_FIELD2 INPUT.
    INT = INT + 1.
    CASE INT.
    WHEN 1.
    VAR = '0100'.
    WHEN 2.
    VAR = '0200'.
    INT = 0.
    ENDCASE.
    ENDMODULE.
    MODULE F1_HELP_FIELD3 INPUT.
    CALL FUNCTION 'HELP_OBJECT_SHOW_FOR_FIELD'
    EXPORTING
    DOKLANGU = SY-LANGU
    DOKTITLE = TEXT-002
    CALLED_FOR_TAB = 'DEMOF1HELP'
    CALLED_FOR_FIELD = 'FIELD1'.
    ENDMODULE.
    MODULE F1_HELP_FIELD4 INPUT.
    CALL FUNCTION 'HELP_OBJECT_SHOW'
    EXPORTING
    DOKCLASS = 'TX'
    DOKLANGU = SY-LANGU
    DOKNAME = 'DEMO_FOR_F1_HELP'
    DOKTITLE = TEXT-003
    TABLES
    LINKS = LINKS.
    ENDMODULE.
    The next screen (statically defined) for screen 100 is 100. It has the following layout:
    The screen fields DEMOf1HELP-FIELD1 and DEMOF1HELP-FIELD2 from the ABAP Dictionary and the program fields FIELD3 and FIELD4 are assigned to the input fields. The pushbutton has the function code CANCEL with function type E.
    The screen flow logic is as follows:
    PROCESS BEFORE OUTPUT.
    PROCESS AFTER INPUT.
    MODULE CANCEL AT EXIT-COMMAND.
    PROCESS ON HELP-REQUEST.
    FIELD DEMOF1HELP-FIELD2 MODULE F1_HELP_FIELD2 WITH VAR.
    FIELD FIELD3 MODULE F1_HELP_FIELD3.
    FIELD FIELD4 MODULE F1_HELP_FIELD4.
    The components FIELD1 and FIELD2 of structure DEMOF1HELP both refer to the data element DEMOF1TYPE. This data element is documented, and also has two supplements with numbers 0100 and 0200.
    The following field help is displayed:
    When the user chooses F1 on the input field for DEMOF1HELP-FIELD1, the data element documentation for DEMOF1TYPE is displayed, since the field does not occur in the PROCESS ON HELP-REQUEST event.
    If the user chooses F1 repeatedly for the input field DEMOF1HELP-FIELD2, the data element documentation is displayed, along with the supplement documentation for either 0100 or 0200 alternately. The variable VAR is filled in the dialog module F1_HELP_FIELD2.
    When the user chooses F1 on the input field for FIELD3, the data element documentation for DEMOF1TYPE is displayed, since this is called in the dialog module F1_HELP_FIELD3 by the function module HELP_OBJECT_SHOW_FOR_FIELD.
    When the user chooses F1 on the input field for FIELD4, the SAPscript documentation DEMO_FOR_F1_HELP is displayed, since this is called in the dialog module F1_HELP_FIELD4 by the function module HELP_OBJECT.
    Regards,
    Deepu.K

  • SQL statement Advice Please

    Hi - Nice to see the forums back :-)
    Ok i have quite a complex question here, but hope some clever
    peep can help
    me out.
    I have a search page with four methods of searching the
    database.
    The code used on the results page is below.
    I've created a three table database - author, department, and
    instructions
    I've created relationships with these tables using authorID
    and DepartmentID
    connecting to the instructions table.
    So far so good - as you can see from the SQL below.
    The problem is that some of the instructions are applicable
    to more than one
    department and to solve this they have been entered into the
    database
    several times, but with the relevant DepartmentID.
    Now if the user decides to search by author, all of the
    instructions are
    found including the duplicated ones for each department. i.e.
    Authorname1, instruction1, department1
    Authorname1, instruction1, department2
    Authorname1. instruction1, department3
    All i want diaplaying is the one instrcution by that author
    and not all for
    each department.
    Hope this makes some sense!!!
    Any idea how to solve this issue?
    Thanks in advance - - -
    <%
    Dim RSresults__MMColParam1
    RSresults__MMColParam1 = "0"
    If (Request("author") <> "") Then
    RSresults__MMColParam1 = Request("author")
    End If
    %>
    <%
    Dim RSresults__MMColParam2
    RSresults__MMColParam2 = "0"
    If (Request("dept") <> "") Then
    RSresults__MMColParam2 = Request("dept")
    End If
    %>
    <%
    Dim RSresults__MMColParam3
    RSresults__MMColParam3 = "0"
    If (Request("winumber") <> "") Then
    RSresults__MMColParam3 = Request("winumber")
    End If
    %>
    <%
    Dim RSresults__MMColParam4
    RSresults__MMColParam4 = "0"
    If (Request("keywords") <> "") Then
    RSresults__MMColParam4 = Request("keywords")
    End If
    %>
    <%
    Dim RSresults
    Dim RSresults_numRows
    Set RSresults = Server.CreateObject("ADODB.Recordset")
    RSresults.ActiveConnection = MM_wiConn_STRING
    RSresults.Source = "SELECT DISTINCT author.authorID AS
    author_authorID,
    author.authorname, department.departmentID AS
    department_departmentID,
    department.departmentname, wi.wiID, wi.wi_no, wi.authorID AS
    wi_authorID,
    wi.departmentID AS wi_departmentID, wi.work_instruction FROM
    department
    INNER JOIN (author INNER JOIN wi ON author.[authorID] =
    wi.[authorID]) ON
    department.[departmentID] = wi.[departmentID] WHERE
    authorname = '" +
    Replace(RSresults__MMColParam1, "'", "''") + "' OR
    departmentname = '" +
    Replace(RSresults__MMColParam2, "'", "''") + "' OR wi_no = '"
    +
    Replace(RSresults__MMColParam3, "'", "''") + "' OR
    work_instruction LIKE '%"
    + Replace(RSresults__MMColParam4, "'", "''") + "%' ORDER BY
    wi_no ASC"
    RSresults.CursorType = 0
    RSresults.CursorLocation = 2
    RSresults.LockType = 1
    RSresults.Open()
    RSresults_numRows = 0
    %>

    Andy,
    I'm not sure, but I think you said that you have multiple
    entries that
    are identical except for the departmentid? Is this the case?
    Could you
    post your table schema? (which would clear up any questions
    about how
    you did your setup)
    Paul Davis
    http://www.kaosweaver.com/
    Visit us for dozens of useful Dreamweaver Extensions.
    http://www.communitymx.com/
    Partner at Community MX - Extend your knowledge
    Andy wrote:
    > Hi - Nice to see the forums back :-)
    > Ok i have quite a complex question here, but hope some
    clever peep can help
    > me out.
    > I have a search page with four methods of searching the
    database.
    > The code used on the results page is below.
    >
    > I've created a three table database - author,
    department, and instructions
    > I've created relationships with these tables using
    authorID and DepartmentID
    > connecting to the instructions table.
    > So far so good - as you can see from the SQL below.
    >
    > The problem is that some of the instructions are
    applicable to more than one
    > department and to solve this they have been entered into
    the database
    > several times, but with the relevant DepartmentID.
    > Now if the user decides to search by author, all of the
    instructions are
    > found including the duplicated ones for each department.
    i.e.
    >
    > Authorname1, instruction1, department1
    > Authorname1, instruction1, department2
    > Authorname1. instruction1, department3
    >
    > All i want diaplaying is the one instrcution by that
    author and not all for
    > each department.
    >
    > Hope this makes some sense!!!
    >
    > Any idea how to solve this issue?
    >
    > Thanks in advance - - -
    >
    >
    > <%
    > Dim RSresults__MMColParam1
    > RSresults__MMColParam1 = "0"
    > If (Request("author") <> "") Then
    > RSresults__MMColParam1 = Request("author")
    > End If
    > %>
    > <%
    > Dim RSresults__MMColParam2
    > RSresults__MMColParam2 = "0"
    > If (Request("dept") <> "") Then
    > RSresults__MMColParam2 = Request("dept")
    > End If
    > %>
    > <%
    > Dim RSresults__MMColParam3
    > RSresults__MMColParam3 = "0"
    > If (Request("winumber") <> "") Then
    > RSresults__MMColParam3 = Request("winumber")
    > End If
    > %>
    > <%
    > Dim RSresults__MMColParam4
    > RSresults__MMColParam4 = "0"
    > If (Request("keywords") <> "") Then
    > RSresults__MMColParam4 = Request("keywords")
    > End If
    > %>
    > <%
    > Dim RSresults
    > Dim RSresults_numRows
    >
    > Set RSresults = Server.CreateObject("ADODB.Recordset")
    > RSresults.ActiveConnection = MM_wiConn_STRING
    > RSresults.Source = "SELECT DISTINCT author.authorID AS
    author_authorID,
    > author.authorname, department.departmentID AS
    department_departmentID,
    > department.departmentname, wi.wiID, wi.wi_no,
    wi.authorID AS wi_authorID,
    > wi.departmentID AS wi_departmentID, wi.work_instruction
    FROM department
    > INNER JOIN (author INNER JOIN wi ON author.[authorID] =
    wi.[authorID]) ON
    > department.[departmentID] = wi.[departmentID] WHERE
    authorname = '" +
    > Replace(RSresults__MMColParam1, "'", "''") + "' OR
    departmentname = '" +
    > Replace(RSresults__MMColParam2, "'", "''") + "' OR wi_no
    = '" +
    > Replace(RSresults__MMColParam3, "'", "''") + "' OR
    work_instruction LIKE '%"
    > + Replace(RSresults__MMColParam4, "'", "''") + "%' ORDER
    BY wi_no ASC"
    > RSresults.CursorType = 0
    > RSresults.CursorLocation = 2
    > RSresults.LockType = 1
    > RSresults.Open()
    >
    > RSresults_numRows = 0
    > %>
    >
    >

  • Example JSP and XML code inside that allows update of attributes

    <?xml version="1.0" encoding="UTF-8"?>
    <MATT_DOCUMENT>
    <NAME>Test MATT Document</NAME>
    <DESCRIPTION>An example MATT Document</DESCRIPTION>
    <TITLE>Matt Australia</TITLE>
    <INCLUDEME>TRUE</INCLUDEME>
    <KEYWORDS>Australia Brisbane Sydney</KEYWORDS>
    <content><![CDATA[<HTML><BODY>Example Document Content</BODY></HTML>]]></content>
    </MATT_DOCUMENT>
    <?xml version="1.0" standalone="yes"?>
    <ClassObject>
    <Name>MATT_Document</Name>
    <Description>A MATT Document.</Description>
    <Superclass RefType="name">Document</Superclass>
    <BeanClassPath>qut.MATT.MATT_Document</BeanClassPath>
    <Attributes>
    <Attribute>
    <Name>TITLE</Name>
    <DataType>STRING</DataType>
    <DataLength>100</DataLength>
    <Required>true</Required>
    </Attribute>
    <Attribute>
    <Name>INCLUDEME</Name>
    <DataType>BOOLEAN</DataType>
    <Required>true</Required>
    </Attribute>
    <Attribute>
    <Name>KEYWORDS</Name>
    <DataType>STRING</DataType>
    <DataLength>500</DataLength>
    <Required>false</Required>
    </Attribute>
    </Attributes>
    </ClassObject>
    /* For information on deploying an instance class bean see iFS Developer's Guide 1.1 Section 4-14 */
    package qut.MATT;
    import oracle.ifs.server.S_LibraryObjectData;
    import oracle.ifs.beans.LibrarySession;
    import oracle.ifs.beans.Document;
    import oracle.ifs.beans.TieDocument;
    import oracle.ifs.common.IfsException;
    import oracle.ifs.common.AttributeValue;
    public class MATT_Document extends TieDocument
    private static final boolean DEBUG = true;
    public static final String CLASS_NAME = "MATT_DOCUMENT";
    public static final String TITLE_ATTRIBUTE = "TITLE";
    public static final String INCLUDEME_ATTRIBUTE = "INCLUDEME";
    public static final String KEYWORDS_ATTRIBUTE = "KEYWORDS";
    public MATT_Document(LibrarySession ifsSession, java.lang.Long id, java.lang.Long classId, S_LibraryObjectData data)
    throws IfsException
    // Construct a Document object - standard variant.
    super(ifsSession,id,classId,data);
    public void setTitle(String newValue)
    throws IfsException
    AttributeValue av = AttributeValue.newAttributeValue(newValue);
    setAttribute(TITLE_ATTRIBUTE,av);
    public String getTitle()
    throws IfsException
    AttributeValue av = getAttribute(TITLE_ATTRIBUTE);
    return av.getString(getSession());
    public void setIncludeMe(boolean newValue)
    throws IfsException
    AttributeValue av = AttributeValue.newAttributeValue(newValue);
    setAttribute(INCLUDEME_ATTRIBUTE,av);
    public boolean getIncludeMe()
    throws IfsException
    AttributeValue av = getAttribute(INCLUDEME_ATTRIBUTE);
    return av.getBoolean(getSession());
    public void setKeywords(String newValue)
    throws IfsException
    AttributeValue av = AttributeValue.newAttributeValue(newValue);
    setAttribute(KEYWORDS_ATTRIBUTE,av);
    public String getKeywords()
    throws IfsException
    AttributeValue av = getAttribute(KEYWORDS_ATTRIBUTE);
    return av.getString(getSession());
    <%-- Copyright 2000 Matt Shannon / Oracle Corporation --%>
    <%-- This page is used for the modification of MATT Document Properties --%>
    <%-- Page Directives --%>
    <%@ page language = "java"
    errorPage=""
    import = "java.util.*, java.text.SimpleDateFormat"
    contentType="text/html;charset=UTF-8"
    info="MATT Document Properties Screen"%>
    <%@ page import = "oracle.ifs.clients.webui.WebUILogin"%>
    <%@ page import = "oracle.ifs.clients.webui.WebUIUtils"%>
    <%@ page import = "oracle.ifs.clients.webui.resources.WebUIResources"%>
    <%@ page import = "oracle.ifs.clients.webui.resources.JspResourcesID"%>
    <%@ page import = "oracle.ifs.clients.webui.FileUtils"%>
    <%@ page i mport = "oracle.ifs.beans.LibrarySession"%>
    <%@ page import = "oracle.ifs.beans.PublicObject"%>
    <%@ page import = "oracle.ifs.beans.Attribute"%>
    <%@ page import = "oracle.ifs.common.AttributeValue"%>
    <%@ page import = "qut.MATT.MATT_Document"%>
    <HEAD>
    <META http-equiv="pragma" content="no-cache">
    <META http-equiv="expires" content="0">
    <%-- Declarations --%>
    <%! final String headingTitle = "MATT Document Properties";
    %>
    <%-- Scriptlet --%>
    <%
    WebUILogin login = WebUILogin.getWebUILogin(request);
    if (login.isTimedOut())
    String msg = "" + WebUIUtils.getResourceString(WebUIResources.WEBUI_SESSION_TIMEOUT_ERROR_CODE);
    msg = msg.replace('\"','\'');
    %>
    <script language="JavaScript">
    alert("<%=msg%>");
    top.close();
    </script>
    <%
    else // if logged in
    String path = WebUIUtils.getBasePathFromServletPath(request,
    WebUIUtils.getUTF8Parameter(request,"path"));
    String container = WebUIUtils.getUTF8Parameter(request,"container");
    String Title = WebUIUtils.getUTF8Parameter(request,"Title");
    String IncludeMe = WebUIUtils.getUTF8Parameter(request,"IncludeMe");
    String Keywords = WebUIUtils.getUTF8Parameter(request,"Keywords");
    String actn = WebUIUtils.getUTF8Parameter(request,"actn");
    LibrarySession sess = login.getSession();
    if (actn == null)
    actn = "";
    if (Title == null)
    Title = "";
    if (IncludeMe == null)
    IncludeMe = "";
    if (Keywords == null)
    Keywords = "";
    if (path.indexOf(":") != -1)
    // path is fine no change
    else if (container.equals("null"))
    path = ":" + path;
    else if (container.endsWith("/"))
    path = container + path;
    else if (path.indexOf(container) == 0)
    // leave path alone
    else
    path = container + "/" + path;
    path = FileUtils.convertPath(path, sess);
    PublicObject pObject = null;
    String displayName = path;
    pObject = WebUIUtils.findPublicObjectByPathOrId(login.getResolver(), login.getSession(),path);
    if (pObject != null)
    pObject = pObject.getResolvedPublicObject();
    if (pObject != null)
    String name = pObject.getName();
    if (name != null && !name.equals(""))
    displayName = name;
    %>
    <title>
    <%= "QUT - " + displayName + " - " + headingTitle%>
    </title>
    <link rel=STYLESHEET type="text/css" href="../webui/css/NewStyles.css">
    </head>
    <body bgcolor="#FFFFFF" link="#FF0000" vlink="#FF0000" alink="#FF0000" onload="store_initial_values()">
    <%
    if (pObject == null)
    %>
    <h3><%=login.getJspResourceString(JspResourcesID.SHOWDOCPROPS_NOT_FOUND_TEXT)%></h3>
    <table>
    <tr>
    <td width="31" height="10" align=left>
    <form>
    <input type="button" name="Button"
    value="<%=login.getJspResourceString(JspResourcesID.WEBUI_OK_BUTTON)%>"
    onclick="top.close();">
    </form>
    </td>
    </tr>
    </table>
    <%
    else // pObject != null
    try
    if (!(pObject instanceof MATT_Document))
    %>
    <h3>Error - Object not an instance of MATT_Document</h3>
    <table>
    <tr>
    <td width="31" height="10" align=left>
    <form>
    <input type="button" name="Button"
    value="<%=login.getJspResourceString(JspResourcesID.WEBUI_OK_BUTTON)%>"
    onclick="top.close();">
    </form>
    </td>
    </tr>
    </table>
    <%
    else
    %>
    <script language="JavaScript1.2">
    var success = true;
    var oldTitle = "";
    var oldIncludeMe = "";
    var oldKeywords = "";
    function store_initial_values()
    oldTitle = document.forms.docPropertiesForm.Title.value;
    oldIncludeMe = document.forms.docPropertiesForm.IncludeMe.selectedIndex;
    oldKeywords = document.forms.docPropertiesForm.Keywords.value;
    function validate_form()
    if (hasChanges())
    document.forms.docPropertiesForm.submit();
    else
    top.close();
    function hasChanges()
    var hasChanged = false;
    var newTitle = " ";
    var newIncludeMe = "";
    var newKeywords = "";
    newTitle = document.forms.docPropertiesForm.Title.value;
    newIncludeMe = document.forms.docPropertiesForm.IncludeMe.selectedIndex;
    newKeywords = document.forms.docPropertiesForm.Keywords.value;
    if (oldTitle != newTitle)
    hasChanged = true;
    else if (oldIncludeMe != newIncludeMe)
    hasChanged = true;
    else if (oldKeywords != newKeywords)
    hasChanged = true;
    return hasChanged;
    </script>
    <%
    if (actn.equals("save_values"))
    try
    // set Title if changed
    if (Title != null && !Title.equals(((MATT_Document)pObject).getTitle()))
    ((MATT_Document)pObject).setTitle(Title);
    // set Keywords if changed
    if (Keywords != null && !Keywords.equals(((MATT_Document)pObject).getKeywords()))
    ((MATT_Document)pObject).setKeywords(Keywords);
    // set IncludeMe if changed
    if (IncludeMe != null)
    boolean l_includeMe = IncludeMe.equals("1");
    if ( ((MATT_Document)pObject).getIncludeMe() != l_includeMe )
    ((MATT_Document)pObject).setIncludeMe(l_includeMe);
    catch (Exception e)
    String msg = "" + login.getErrorResolver().getMessage(e);
    msg = msg.replace('\"','\'');
    %>
    <script language="JavaScript">
    alert("<%=msg%>");
    var success = false;
    history.back();
    </script>
    <%
    } // end catch block
    %>
    <script language="JavaScript">
    if (success)
    document.write("<h2><%=login.getJspResourceString(JspResourcesID.SHOWDOCPROPS_PROPERTIES_SAVED_TEXT)%></h2><form><input type=button value='<%=login.getJspResourceString(JspResourcesID.WEBUI_OK_BUTTON)%>' onclick='top.close();'></form>");
    </script>
    <%
    else // if !actn.equals("save_values")
    %>
    <center>
    <form name="docPropertiesForm" method="POST" action="MATTproperties.jsp">
    <table border="1" width="90%">
    <tr>
    <td width="100%" colspan="3" class="DH">
    MATT Document Class Properties <br>
    </td>
    </tr>
    <tr>
    <td width="20%" class="required" align="left">
    Class Name:
    </td>
    <td width="80%">
    <%=pObject.getClassObject().getName()%>
    </td>
    </tr>
    <tr>
    <td width="20%" class="required" align="left">
    Bean Path:
    </td>
    <td width="80%">
    <%=pObject.getClassObject().getBeanClasspath()%>
    </td>
    </tr>
    <tr>
    <td width="20%" class="required" align="left">
    Description:
    </td>
    <td width="80%">
    <%=pObject.getClassObject().getDescription()%>
    </td>
    </tr>
    <tr>
    <td width="100%" colspan="3" class="DH">
    MATT Document Properties <br>
    </td>
    </tr>
    <tr>
    <td width="15%" class="required">
    Path:
    </td>
    <td width="85%" colspan="2">
    <%=path%>
    </td>
    </tr>
    <tr>
    <td width="20%" class="required" align="left">
    Title:
    </td>
    <td width="80%">
    <input type=text name="Title" value="<%=((MATT_Document)pObject).getTitle()%>" size=100>
    </td>
    </tr>
    <tr>
    <td width="20%" class="required" align="left">
    Keywords:
    </td>
    <td width="80%">
    <input type=text name="Keywords" value="<%=pObject.getAttribute("Keywords").getString(sess)%>" size=100>
    </td>
    </tr>
    <tr>
    <td width="20%" class="required" align="left">
    IncludeMe:
    </td>
    <td width="80%">
    <select class="listbox" size="1" name="IncludeMe">
    <%
    if (((MATT_Document)pObject).getIncludeMe())
    %>
    <option value="1" selected>true</option>
    <option value="0" selected>false</option>
    <%
    else
    %>
    <option value="1">true</option>
    <option value="0" selected>false</option>
    <%
    %>
    </SELECT>
    </td>
    </tr>
    </table>
    <table width="80%">
    <tr>
    <td width="58" height="10" align =left>
    <input type="button" name="Button" value="<%=login.getJspResourceString(JspResourcesID.WEBUI_OK_BUTTON)%>" onclick="validate_form();">
    </td>
    <td width="62" height="10" align=right>
    <input type="hidden" name="actn" value="save_values">
    <input type="hidden" name="path" value="<%=WebUIUtils.getServletPathFromBasePath(request,path)%>">
    <input type="hidden" name="container" value="<%=container%>">
    <input type="button" name="Button" value="<%=login.getJspResourceString(JspResourcesID.WEBUI_CANCEL_BUTTON)%>" onclick="top.close();">
    </td>
    </tr>
    </table>
    </form>
    <%
    } // end - if actn.equals
    %>
    <%
    } // end - if pObject instance of
    %>
    <%
    catch (Exception e)
    String msg = "" + login.getErrorResolver().getMessage(e);
    msg = msg.replace('\"','\'');
    %>
    <script language="JavaScript">
    alert("<%=msg%>");
    var success = false;
    history.back();
    </script>
    <%
    } // end catch block
    finally
    out.flush();
    } // if pObject
    %>
    <%
    } // if logged in
    %>
    </BODY>
    </HTML>
    There is probably lots of better ways of doing the above. The iFS 1.1 Developer guide confused me alot particularly sections 4-10 and 4-11 where it talks about an instance class bean that extends the Tie classes, then the example shown on 4-12 is completely different!
    note.. also i got most of the above code using JAD having decompiled webui.jar. Seems these JARS are not obfuscated.
    webui.jar in $ORACLE_HOME/ifs1.1/lib
    matt.

    Thanks. I have ifs 1.1 now and have modified this example to use my custom type. However, when the jsp runs and hits the code at the beginning that checks "if login.isTimedOut()", it always thinks I have timed out, even though I have just logged in via the webui.
    Any ideas would be appreciated.

  • Size for XMLType only 4000 Bytes???

    Hello,
    it seems, that the XMLType can only store up to 4000 bytes of
    data.
    When I enter a document larger than 4000 bytes the end is
    truncated and the "extract"-method doesn't work anymore.
    I have to store sizes of about 30-50 Kilobytes.
    So, is there a way to set the size of the XMLType?
    Has anyone else this problem?
    TIA
    Alex

    Hello,
    First, I want to thank you for helping me.
    So, I've tried to create my table without the schema and the pb is still the same.
    The index I create is a context index.
    I create my table with the following query:
    create table artefact(numArt number, art XMLType)
    xmltype column art XMLSCHEMA "http://www.oracle.com/artefact.xsd" element "exportList";
    CREATE SEQUENCE numArt START WITH 1 INCREMENT BY 1 NOMAXVALUE NOCYCLE CACHE 2;
    create index ind on artefact(art)
    indextype is ctxsys.context;
    My schema seems to be Ok because it is validate by XMLSpy and when I use "little" data, everything is OK.
    Here is the way I register my schema:
    begin
         dbms_xmlschema.deleteSchema('http://www.oracle.com/artefact.xsd',4);
    end;
    declare
    doc varchar2(10000) := '
    <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xdb="http://xmlns.oracle.com/xdb">
         <xsd:element name="exportList" type="TypeExportList"/>
         <xsd:complexType name = "TypeExportList">
              <xsd:sequence>
                   <xsd:element name = "request" type="TypeRequest"/>
              </xsd:sequence>
         </xsd:complexType>
         <xsd:complexType name="TypeRequest">
              <xsd:sequence>
                   <xsd:element name="artifact" type="TypeArtefact"/>
                   <xsd:element name="target" type="TypeTarget"/>
                   <xsd:element name="keyword" type="TypeKeyWord"/>
              </xsd:sequence>
              <xsd:attribute name = "targetTool" type="xsd:string" use="required"/>
              <xsd:attribute name = "targetVersion" type = "xsd:string" use="optional"/>
              <xsd:attribute name = "sourceTool" type = "xsd:string" use="optional"/>
              <xsd:attribute name = "cmpa" type = "xsd:string" use="required"/>
              <xsd:attribute name = "command" type = "xsd:string" use="required"/>
              <xsd:attribute name="readOnly" type = "xsd:string" use="required"/>
         </xsd:complexType>
         <xsd:complexType name="TypeArtefact">
              <xsd:sequence>
                   <xsd:element name= "object" type = "TypeObject"/>
              </xsd:sequence>
                   <xsd:attribute name = "projectName" type="xsd:string" use="required"/>
         </xsd:complexType>
         <xsd:complexType name="TypeObject">
                   <xsd:attribute name = "objectName" type = "xsd:string" use="required"/>
                   <xsd:attribute name = "objectType" type = "xsd:string" use="required"/>
         </xsd:complexType>
         <xsd:complexType name="TypeTarget">
                   <xsd:attribute name = "targetIP" type="xsd:string" use="required"/>
         </xsd:complexType>
         <xsd:complexType name="TypeKeyWord">
                   <xsd:attribute name = "word" xdb:SQLName="word" xdb:SQLType="CLOB"/>
         </xsd:complexType>
    </xsd:schema>'
    begin
    dbms_xmlschema.registerSchema('http://www.oracle.com/artefact.xsd',doc);
    end;
    Then, I insert the value as a clob (because the XML docs makes more than 4000 characters).
    And then I search it with the query:
    select numArt from artefact a
    where contains(a.art,'test inpath(exportList/request/keyword/@word)')>0;
    And if the attribute word makes more than 4000 characters, the word test is not found...

  • Submitting just one form region of 2 form regions on one page

    Hello,
    i've got 2 form regions on one page. Is it possible to submit just one of them and not the whole page?
    Thank you!
    Best regards,
    Lena

    Hi Lena,
    a very important thing to understand when working with Oracle APEX is that it is a Webbrowser-Application and behaves exactly like this. APEX just generates a HTML Page and lets the Browser deal with it.
    When you press a submit button the whole page (all form input elements) are sent from the browser to the server where APEX processes them.
    You can't really influence this behaviour.
    But you can work with REQUEST-Keywords and conditional processes, so that only those processes are executed (and therefor save data) you want to.
    Btw. the REQUEST Keyword is set by the button, there it is defined which REQUEST is set when submitting the page.
    brgds,
    Peter
    Blog: http://www.oracle-and-apex.com
    ApexLib: http://apexlib.oracleapex.info
    Work: http://www.click-click.at

  • LR4 Feature Request regarding Mouseover on Keyword tag

    Suggestion: Mouseover on the Keyword tag should identify the keywords - Rather than saying "This photo has keywords", why not display the keywords, something like: Keywords: Family, Memorial Day, 2010

    Like it.  (The Photoshop Elements Organizer does that.)
    You might consider posting this as a feature request in the Feedback forum:
    http://feedback.photoshop.com/photoshop_family/products/photoshop_family_photoshop_lightro om
    so it doesn't get lost if it doesn't make it into LR 4.

  • Feature Request:  Fast Multi Keyword Filtering

    At the current time, in the grid view, if I want to filter by a KW (Keyword), I can click the right facing arrow at the right end of a keyword in the KW list.  When I do this, the filter tool opens ar the top of the mid section, and the clicked on keyword is automatically highlighted in the left filter column which is a KW column.   If I then click on the right arrow of  a different KW in the KW list in the right panel, the new one replaces the old one in the filter. 
    This is great but it doesn't go far enough.
    After doing the above,  If I want to select another KW to be used in addition to the first one (in an AND relation),  I'd like to <Ctrl>+<Click> on the right arrow for the second keyword in the right panel KW list to have the 2nd KW ADDED to the filter by placing it in a second KW column in the filter giving me a filter of the first KW AND the second KW.    To do this as it is now one must convert an unused filter column to KW (if one not already there),  then enlarge the filter window, scroll down to the desired KW (which can be quite time consuming if you have several hundred keywords - even in a hierarchy view), then click the second one, and then shrink the filter window back down to reasonable size.

    I have a related FR, so I decided to integrate it with the above, which I also like. The FR  is for: Smarter Finds with and/or logic and Smarter Smart collections with And/Or logic. For example, I want to find (or to make a smart collection of) all the photos that are in a folder which meet these criteria:
    Their file name contains the word "Cuba" AND they have modifications (in the develop module)
    OR
    Their file name contains the word "Cuba" AND the file extension is .psd
    This is because most photos in this folder are NEF, some of those have been developed in LR, and some have been exported to Photoshop to be worked on. It's frustrating not being able to make this preselection to find ALL the photos I've worked on. Anyone agree we need and/or/not/but logic and to be able to combine criteria in a find request?

  • Feature request: better keyword management tool

    I'm re-organizing my keywords and I think that LR needs some work in keyword management and DAM features.
    I miss something like separate keyword management tool which would have two keyword lists, which would work a bit like spatial file management in Os X finder.
    Easily manage keyword hierarchy. For example: browse list and and be able to easily select keywords (now it's OK) and drag and drop them to under a new keyword (almost ok, but sometimes cumbersome, if one wants to move keyword which is/are at the bottom of the long keyword list to keyword which is at the top of the list).

    KKuja wrote:
     ...if one wants to move keyword which is/are at the bottom of the long keyword list to keyword which is at the top of the list.
    Dang near impossible once you have a lot of keywords. A work-around for me has been to filter keywords first to reduce the number of keywords in the list, then do the drag 'n drop. At a minimum, a change to scroll the list when you're searching for a drop target at a variable rate that depends on mouse position, or even something simple like slowing it down when the alt key is pressed.
    +1 vote - better keyword management.
    Something else that may help you in the mean time: KeywordConsolidator.
    Rob

  • Feature Request: Provide search functionality to procedures, functions and keywords in code

    Have been using SQL Server since 1998, and been wondering why MS cant better the GUI , in terms of ease of use, as its done in Visual Studio and other such tools, though there are some enhancements like multiple window etc, would expect few more for easy
    working for developers.
    1) A search text box, in the SSMS interface, for searching stored procedures, functions, tables etc would be very useful, instead of expanding the entire tree and going through a long list to find your procedure or table, especially when you have a large
    list of them.
    2) Also a code search tool, like to find a keyword in the entire stored procedures, triggers and functions would be useful, currently we had to generate whole script and then find the keyword, and this is cumbersome, as you have to move back and forth to
    find which stored procedure or function has that keyword etc.
    Thanks.

    1. You already have feature in SQL management studio to search for objects using full names or patterns through object explorer
    See
    http://visakhm.blogspot.in/2013/02/object-filtering-using-ssms-object.html
    2. For this you can use the catalog view sys.sql_modules and fire a query on it
    see
    http://visakhm.blogspot.in/2012/03/advantages-of-using-syssqlmodules-view.html
    http://visakhm.blogspot.in/2013/01/systemsqlmodules-and-allsql-modules.html
    Please Mark This As Answer if it helps to solve the issue Visakh ---------------------------- http://visakhm.blogspot.com/ https://www.facebook.com/VmBlogs

  • Keyword editing; script request

    I am looking for a way to better edit keywords in Aperture 2.
    If I bring up the Keyword HUD (shift-H), I sure can organize the keywords into a tree, but Aperture shows neither the match count nor the images themselves. Selecting images by keyword can apparently only be done out of a flat list from the +Smart Settings+ of the Library search function or the Query HUD in the browser window.
    I have been importing many older images from +iView Media 3+ which has excellent keyword management capabilities. In particular, I like the hierarchical location management via IPTC fields. (That would be nice to have in Aperture, without having to "abuse" keywords.) Unfortunately, I haven't been all that consistent in keyword assignment (who is?), so there is a lot of cruft (typos etc.), and cleaning this up is not getting any easier with more incoming pictures.
    As a workaround, it would help if there was a pair of AppleScripts to map the keywords library onto appropriate containers and back, where a container is either a project, a yellow, or a blue folder -- I know this is a bit vague because of the very specific purposes and limitations of each one of those. Two scripts would be needed:
    *Keywords to Folders*
    - Create a toplevel container Keywords
    - For each existing (hierarchical) keyword:
    -- create a matching hierarchical container under Keywords
    -- match images and place (link) them into the new container
    -- remove keyword from the keyword library
    At this point, one can edit the keywords graphically by manipulating the containers.
    *Folders to Keywords*
    - For each container below Keywords
    -- create keyword in library, with same name and hierarchy level
    -- apply keyword to images in container (if not already present)
    However, this is beyond my limited expertise with AppleScript. For someone more experienced: Is this feasible, or does such a mapping perhaps already exist?
    Regards, Michael

    Forgive me but I cannot help myself - I must post a response.
    While I sympathize with you in whatever issue you are trying to solve with your organization and I do believe whole heartedly in using whatever tools you have in anyway that suits your needs. I do believe that you may be missing the point of hierarchical keywords. The point is primarily to impose additional pseudo hierarchical structures that are not necessarily identical to your primary hierarchical structure. It's also convenient and efficient to be able to change those virtual structures and add new ones. This is usually best accomplished by only adding the most specific keywords to your images and then arranging those specific keywords under increasingly general parent keywords. You don't really want to be adding every single keyword in the hierarchy to each image nor do you want your primary org structure to mirror one particular keyword path.
    Yea yea yea I know all about the export issue with Aperture hierarchies for you stock guys out there (LR2 has a really nice solution for this w/o making a big mess). See here if are interested [Aperture2 and LR2 Keywords|http://photo.rwboyer.com/2008/11/aperture-2-vs-lightroom-2-keywords>
    Personally I believe you would find yourself with a bigger more gigantic mess should this script/scripts be unleashed on humanity. Maybe we here at the ole' Aperture forum could be of assistance in helping get to the root of what you are actually trying to accomplish?
    RB

  • Request: improve "keyword suggestions"

    More than anything I use LR to help make sure that I can keep my pictures systematically in order and with relevant keywords.
    One thing I have never understood is why there is no filter to avoid duplicating "suggested" keywords, that already are shown in the existing keyword set.
    This only "crowds out" space for useful suggestions that are not immidiately available in the current keyword set. And I cannot see, why anyone would like to have a keyword shown twice (both as a "suggested keyword" and in the current keyword set) in stead of having more (=a better) suggested keywords.
    It should be really, really, easy to fix. And i am sure people would find it very useful in their daily work if they use lots of keywords. I sometimes have almost all the keywords in my existing set duplicated as "suggested" keywords, which is unproductive.

    LR2 has two boxes for entering keywords: the old big multi-line one, and a smaller one below it. Keyword suggesting, as well as the Ctrl+K shortcut, moved to the new smaller box.
    They could have left keyword suggesting in the old big box too (I still prefer it - probably got used), but for some reason they didn't.

Maybe you are looking for