PFI to IPA Landmark transaction

Sort:
You are not authorized to post a reply.
Author
Messages
Daniel
Basic Member
Posts: 24
Basic Member

    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
    Veteran Member
    Posts: 709
    Veteran Member

      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
      Senior Member
      Posts: 3348
      Senior Member
        _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.