cancel
Showing results for 
Search instead for 
Did you mean: 

Populate data in table through RFc

Former Member
0 Kudos

HI,

I have imported one RFC from backend and in that RFC i have 2 structures.In first structure i have 6 colmuns and in second strucutre i have 8 colomuns and one common column is there for comparing the data.i wrote this logic

Structure s1, s2

Table node tablenode

for( loop s1){

IPrivateXXXXview.itablenode nodeElement = wdContext.createTablenodeElement();

wdContext.node.addElement(nodeElement);

nodeElement.setAtr1(s1.getattr1());

nodeElement.setAtr2(s1.getattr2());

...

..

nodeElement.setAtr6(s1.getattr6());

for(loop s2){

if(s1.id == s2.id){

nodeElement.setAtr1(s2.getattr1());

nodeElement.setAtr2(s2.getattr2());

...

..

nodeElement.setAtr6(s2.getattr6());

}

}

}

the values from first structure are populating fine in table but the values from second struture are not populating the correct values in the same table.Only one value is populating from structure in all rows.

Can anybody give me clue in this issue.

In first strucuture i have 16 records and in second structure i have 10 records.

Regards,

Prasad

Accepted Solutions (0)

Answers (2)

Answers (2)

Former Member
0 Kudos

Hi If you have the nodes as below

UsersListModelNode --> This is having the attribtue UserId, User Name

UserDetailsModelNode --> This is having attributes UserId, Desination, Role ..etc

Now you have created one value node as below and binded this node to table

UsersValueNode --> This is having the attributes UserId, UserName, Designation, Role..etc

Now populate the combined values of both the model nodes as below into value node.

int sizeUsersListModelNode = wdContext.nodeUsersListModelNode().size();
HashMap userElements=new HashMap():

for(int iCount=0;iCount<sizeUsersListModelNode;iCount++)
{
IPublicTestComp.IUsersValueNode element=wdContext.createUsersValueNodeElement();

element.setUserId(wdContext.nodeUsersListModelNode().getUsersListModelNodeElementAt(iCount).getUserId());
element.setUserName(wdContext.nodeUsersListModelNode().getUsersListModelNodeElementAt(iCount).getUserName());

wdContext.nodeUsersValueNode().addElement(iCount, element);
userElements.put(wdContext.nodeUsersListModelNode().getUsersListModelNodeElementAt(iCount).getUserId(), iCount);

}

int sizeUserDetailsModelNode = wdContext.nodeUserDetailsModelNode().size();
for(int iCount=0;iCount<sizeUsersListModelNode;iCount++)
{

String userId=wdContext.nodeUserDetailsModelNode().getUserDetailsModleNodeElement(iCoung).getUserId();
String userDesignation=wdContext.nodeUserDetailsModelNode().getUserDetailsModleNodeElement(iCoung).getUserDesignation();
String userRole=wdContext.nodeUserDetailsModelNode().getUserDetailsModleNodeElement(iCoung).getUserRole();

  if(null!=userElements && userElements.contains(userId)
    {
      int elementNo=Integer.parseInt(userElements.get(userId).toString);
      wdContext.nodeUsersValueNode().getUsersValueNodeElementAt(elementNo).setUserDesignation
      (userDesignation));
      wdContext.nodeUsersValueNode().getUsersValueNodeElementAt(elementNo).setUserRole
      (userRole));
    }

}

Regards,

Charan

Former Member
0 Kudos

hi

I think you want to make a join of both structures and put them on a single table

...the only thing I would change is the overwritting you are doing ... you are setting the Atr1 two times

Structure s1, s2
Table node tablenode
for( loop s1){
IPrivateXXXXview.itablenode nodeElement = wdContext.createTablenodeElement();
wdContext.node.addElement(nodeElement);
nodeElement.setAtr1(s1.getattr1());
nodeElement.setAtr2(s1.getattr2());
...
..
nodeElement.setAtr6(s1.getattr6());
for(loop s2){
if(s1.id == s2.id){
nodeElement.setAtr7(s2.getattr1());
nodeElement.setAtr8(s2.getattr2());
...
..
nodeElement.setAtr10(s2.getattr6());
}
}
}

Former Member
0 Kudos

Hi Carlo,

For Example purpose i enter same values but in application i have separate attributes.

Regards,

Prasad

Former Member
0 Kudos

then try to debug the data you are getting from RFC

you can try putting two tables on the ivew and mapping it to the structures from the RFC

maybe the values you are getting are just blank

..try to print some messages inside the loops

wdComponentAPI.getMessageManager().reportSuccess("enter loop 2, value of attr2:"+attr2);

Former Member
0 Kudos

Hi Carlo,

I done every thing i am getting values when i printing msgs but the values from structure 2

are not displaying in the table.I create 2 tables for separate strutures and its working fine data is displaying.

With Regards,

Prasad

Former Member
0 Kudos

if all the logic seems right then must be a very especific code isue ...a rewritting after correct filling, some mistake fo s1 with s2, index mistake ...

Former Member
0 Kudos

Hi Prasad,

Here I am assuming that the required data is present in the node s1 and node s2.

Structure Node u2013 s1,s2

Table Node u2013 tablenode

wdContext.nodeS1().moveFirst();

IPrivateXXXXview.itablenode nodeElement;

for( loop s1){

nodeElement = wdContext.createTablenodeElement();

wdContext.node.addElement(nodeElement);

wdContext.nodeTablenode().moveLast ();

nodeElement.setAtr1(s1.getattr1());

nodeElement.setAtr2(s1.getattr2());

...

..

nodeElement.setAtr6(s1.getattr6());

for(loop s2){

wdContext.nodeS2().moveFirst();

if(s1.id == s2.id){

nodeElement.setAtr7(s2.getattr1());

nodeElement.setAtr8(s2.getattr2());

...

..

nodeElement.setAtr10(s2.getattr6());

}

wdContext.nodeS2().moveNext ();

}

wdContext.nodeS1().moveNext();

}

Revert back if there is any problem.

Best Wishes

Idhaya R