i try it , i get all workers
public void lookup()
{
Query query;
DirAddressBookParty DirAddressBookParty;
RetailStoreAddressBook RetailStoreAddressBook;
DirPartyTable DirPartyTable;
QueryBuildDataSource Hcmworker;
QueryBuildDataSource DirPerson;
SysTableLookup sysTableLookup;
DirAddressBook DirAddressBook;
SICDeclarativeOfHumanServicesTable SICDeclarativeOfHumanServicesTableLoc = SICDeclarativeOfHumanServicesTable_ds.cursor();
RetailStoreTable RetailStoreTableL = RetailStoreTable::find(SICDeclarativeOfHumanServicesTableLoc.Establishement);
RetailchannelTable RetailchannelTable = RetailchannelTable::findByRecId(RetailStoreTableL.RecId);
sysTableLookup = SysTableLookup::newParameters(tableNum(HcmWorker), this);
query = new Query();
HcmWorker=query.addDataSource(tableNum(HcmWorker));
while select RetailStoreAddressBook
where RetailStoreAddressBook.AddressBookType==RetailAddressBookType::Employee
&& RetailStoreAddressBook.StoreRecId==RetailchannelTable.RecId
join DirAddressBookParty
where DirAddressBookParty.AddressBook==RetailStoreAddressBook.AddressBook
join DirPartyTable
where DirAddressBookParty.party == DirPartyTable.recId
{
HcmWorker.addRange(fieldNum(HcmWorker, person)).value(int642str(DirPartyTable.ReciD));
}
sysTableLookup.addLookupField(fieldnum(Hcmworker, PersonnelNumber));
sysTableLookup.addLookupField(fieldnum(Hcmworker, person));
sysTableLookup.parmQuery(query);
sysTableLookup.performFormLookup();
}