PrevPrev Go to previous topic
NextNext Go to next topic
Last Post 06/13/2017 2:28 PM by  John Henley
PFI to IPA Landmark transaction
 2 Replies
Sort:
You are not authorized to post a reply.
Author Messages
Daniel
Private
Private
Basic Member
(48 points)
Basic Member
Posts:24


Send Message:

--
05/23/2017 11:03 AM

    Here is the current Landmark transaction node: it returns no data

    _dataArea="LSAPPS" & _module="pfi" & _objectName="PfiUserCategory" & _actionName="Find" & _actionOperator="NONE" & _actionType="MultipleRecordQuery" & _runAsUser="" & _setName="ByTaskCategoryValueUser" & PfiUserProfile & PfiTask.TaskName="Level1;Level2;Level3" & PfiFilterKey="Req Loc" & PfiUserCategory="<!--RQH_REQ_LOCATION-->"

     and here is our PFI query

    PROD=LOGAN&FILE=WFUSERCAT&INDEX=WFTSET3&KEY=Level1;Level2;Level3=Req Loc=<!--RQH_REQ_LOCATION-->&FIELD=WF-RM-ID;TASK;WORK-CATEGORY;WORK-CAT-VALUE&OUT=CSV&DELIM=~

    We are trying to determine what levels of approval are valid for a requisition. Based on the query we set flags to let us know which levels will need to approve.

     

    Any help is appreciated.

     

    Daniel Burrus, PMP

    Project Manager, Technology Services

    Special School District of St. Louis County











     

    Daniel Burrus,PMP
    Special School District, St. Louis County
    Woozy
    Private
    Private
    Veteran Member
    (3478 points)
    Veteran Member
    Posts:704


    Send Message:

    --
    05/23/2017 4:58 PM

    Hi Daniel,

    It appears that you (or whoever built the call) are making some assumptions in your query that are not correct.  Landmark is pretty finicky about how data selection and filtering are done.

    You can't do multi-select within a field.  In query mode, Landmark expects data fields with an "=" to be key fields, and to have a single value passed in.  It won't understand "Level1;Level2;Level3" as an "or" statement.  I've never been able to get filters to do that either.

    Key fields must be queried in Index order without skipping fields.  If you only have values for the first and third keys, use the first one and then filter or manage within the loop.

    NOTE:  Landmark Filters SUCK!!! - they are very difficult to do correctly and there is no documentation that I've found.  In many cases you are better off to do a wide-open query and then filter via JavaScript or a branch.

     

    Since I don't know your data, and don't use reqs, I can't tell exactly what you are trying to do, but I'd recommend doing something like this instead:

    _dataArea="prodhcm" & _module="pfi" & _objectName="PfiUserCategory" & _actionName="Find" & _actionOperator="NONE" & _actionType="MultipleRecordQuery" & _runAsUser="" & _pageSize="30" & _filterString="PfiFilterKey=\"Req Loc\" & PfiUserCategory=\"<!--RQH_REQ_LOCATION-->\"" & _relationName="" & _setName="ByTaskCategoryValueUser" & _asOfDate="" & _effectiveDate="" & PfiUserProfile & PfiTask.TaskName & PfiFilterKey & PfiUserCategory

     

    Then use Javascript or a branch to include/exclude PfiTask.TaskName records.  It's not pretty, but it may get the job done (though my filter may not work - because filters SUCK!...see above)

    Basically, limit it as much as you can with keys, then add a filter if you must, then handle the remainder record-by-record in the return loop.

     

    If it is at all possible, use a SQL query instead.  Then you can regular SQL syntax and get exactly what you need in a jiffy.  However, if you are cloud/multi-tenant this likely isn't an option, unfortunately.

     

    Sorry I can't help more!

    Kelly

    Kelly Meade
    J. R. Simplot Company
    Boise, ID
    John Henley
    Private
    Private
    Senior Member
    (9620 points)
    Senior Member
    Posts:3224


    Send Message:

    --
    06/13/2017 2:28 PM
    _filterString=((PfiTask.TaskName = "Level1") OR (PfiTask.TaskName = "Level2") OR (PfiTask.TaskName = "Level3"))
    Thanks for using the LawsonGuru.com forums!
    John
    You are not authorized to post a reply.