cancel
Showing results for 
Search instead for 
Did you mean: 

Simple query related to Java and WDTextViewSemanticColor

Former Member
0 Kudos

Hi Experts,

I have created WD screen which fetches data from R/3 using RFC. The code is like as below.

public com.sap.tc.webdynpro.clientserver.uielib.standard.api.WDTextViewSemanticColor getMyOpenTripsColor(IPrivateList_trips_appView.IMyOpenTripsElement element)
  {
    //@@begin getMyOpenTripsColor(IPrivateList_trips_appView.IMyOpenTripsElement)
	for(int x=0; x<wdContext.nodeMyOpenTrips().size(); x++){
	  if(wdContext.nodeMyOpenTrips().getMyOpenTripsElementAt(x).getRecommendedActionsTravel().equalsIgnoreCase("Change Travel Request")){
		  wdComponentAPI.getMessageManager().reportSuccess("i "+ wdContext.nodeMyOpenTrips().getMyOpenTripsElementAt(x).getRecommendedActionsTravel()+ "  trpno "+ wdContext.nodeMyOpenTrips().getMyOpenTripsElementAt(x).getTripNumber() );
		
		 return WDTextViewSemanticColor.CRITICAL;
		 
		}
	   if(wdContext.nodeMyOpenTrips().getMyOpenTripsElementAt(x).getRecommendedActionsTravel().equalsIgnoreCase("***Request Cancellation***")){
		  wdComponentAPI.getMessageManager().reportSuccess("j");
		return WDTextViewSemanticColor.MARKED1;
		}
	 }
	return null;

My problem is that there are 47 records in the table (wdContext.nodeMyOpenTrips().size() is 47). When I am executing the following code, only first record is being displayed. The wdComponentAPI.getMessageManager.reportSuccess statements return following records. There are many trip nos in addition to 1427. Why only first record is getting displayed?

hi1 47 
 i Change Travel Request  trpno 1427 
 
 hi1 47 
 i Change Travel Request  trpno 1427 
 
 hi1 47 
 i Change Travel Request  trpno 1427 
 
 hi1 47 
 i Change Travel Request  trpno 1427 

..many more rows (19 rows)

Please help.

Regards,

Gary

Accepted Solutions (1)

Accepted Solutions (1)

Former Member
0 Kudos

Looks like you have a context structure


MyOpenTrips (node)
+ color (TextViewSemanticColor, calculated=true)
+ recommendedActionsTravel (string)

To implement the calculated attribute get-method you don't have to loop over the node. Just write


String value = element.getRecommendedActionsTravel();
if ( "Change Travel Request".equalsIgnoreCase(value) )
  return WDTextViewSemanticColor.CRITICAL;
if ( "***Request Cancellation***".equalsIgnoreCase(value) )
  return WDTextViewSemanticColor.MARKED1;
return null;

Armin

Former Member
0 Kudos

Dear Armin,

You are right. My context is like as follows:

MyOpenTrips (node)
+ color (TextViewSemanticColor, calculated=true)
+ recommendedActionsTravel (string)

Many Thanks. The issue got resolved using your code.

Regards,

Gary

Answers (1)

Answers (1)

Former Member
0 Kudos

Hi Experts,

I have modified code like as below. However the issue still persists.

Regards,

Gaurav

public com.sap.tc.webdynpro.clientserver.uielib.standard.api.WDTextViewSemanticColor getMyOpenTripsColor(IPrivateList_trips_appView.IMyOpenTripsElement element)
  {
    //@@begin getMyOpenTripsColor(IPrivateList_trips_appView.IMyOpenTripsElement)
	Collection openTrips = new ArrayList();
	for(int x=0; x<wdContext.nodeMyOpenTrips().size(); x++){
		IPrivateList_trips_appView.IAllMyTripsElement i = wdContext.createAllMyTripsElement();
	  if(wdContext.nodeMyOpenTrips().getMyOpenTripsElementAt(x).getRecommendedActionsTravel().equalsIgnoreCase("Change Travel Request")){
		  wdComponentAPI.getMessageManager().reportSuccess("i "+ wdContext.nodeMyOpenTrips().getMyOpenTripsElementAt(x).getRecommendedActionsTravel()+ "  trpno "+ wdContext.nodeMyOpenTrips().getMyOpenTripsElementAt(x).getTripNumber() );
		openTrips.add(i);
		 return WDTextViewSemanticColor.CRITICAL;

		}
	   if(wdContext.nodeMyOpenTrips().getMyOpenTripsElementAt(x).getRecommendedActionsTravel().equalsIgnoreCase("***Request Cancellation***")){
		  wdComponentAPI.getMessageManager().reportSuccess("j");
		openTrips.add(i);
		return WDTextViewSemanticColor.MARKED1;
		}
	 }
	return null;

wdComponentAPI.getMessageManager().reportSuccess returns:

i Change Travel Request  trpno 1427 
 i Change Travel Request  trpno 1427 
 i Change Travel Request  trpno 1427 
 i Change Travel Request  trpno 1427 
 i Change Travel Request  trpno 1427 
 i Change Travel Request  trpno 1427 
 i Change Travel Request  trpno 1427 
 i Change Travel Request  trpno 1427 
 i Change Travel Request  trpno 1427 
 i Change Travel Request  trpno 1427 
 i Change Travel Request  trpno 1427 
 i Change Travel Request  trpno 1427 
 i Change Travel Request  trpno 1427 
 i Change Travel Request  trpno 1427 
 i Change Travel Request  trpno 1427 
 i Change Travel Request  trpno 1427 
 i Change Travel Request  trpno 1427 
 i Change Travel Request  trpno 1427

When I am removing "return null; " the code does not get compiled. I am getting following message "This method must return a result of type WDTextViewSemanticColor"

Regards,

Gary