PFI to IPA Landmark transaction

 2 Replies
 2 Subscribed to this topic
 52 Subscribed to this forum
Sort:
Author
Messages
Daniel
Basic Member Send Private Message
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 Send Private Message
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
Send Private Message
Posts: 3351
_filterString=((PfiTask.TaskName = "Level1") OR (PfiTask.TaskName = "Level2") OR (PfiTask.TaskName = "Level3"))
Thanks for using the LawsonGuru.com forums!
John