Friday, April 1, 2011

Address Regions Telephone Value Help



 

wdDoInit()


 


// @lamrc begin


// initialize node elements

     ILAMRCElement
newElement
=
wdContext.nodeLAMRC().createLAMRCElement();

     wdContext.nodeLAMRC().addElement(newElement);


// @lamrc end


 


 

wdDoModifyView()


 


// @lamrc begin


 


if
(firstTime==true)
{


 

     // bind country dropdowns with context variables

     IWDDropDownByKey
homePhoneDropdown
=
(IWDDropDownByKey)
view.getElement("LAMRC_Home_Country_Selections");

     homePhoneDropdown.bindSelectedKey("SelectedInfotype.Zzland1");    

     IWDDropDownByKey
cellPhoneDropdown
=
(IWDDropDownByKey)
view.getElement("LAMRC_Cell_Country_Selections");

     cellPhoneDropdown.bindSelectedKey("SelectedInfotype.Zzcland1");            

        

     // if there's no telephone number, then default country code in LAND1

     if
(wdContext.nodeSelectedInfotype().currentSelectedInfotypeElement().getTelnr().length()<5)
{

         homePhoneDropdown.setSelectedKey(wdContext.nodeSelectedInfotype().currentSelectedInfotypeElement().getLand1());            

     }

     // if there's cell telephone number, then default country code in LAND1

     if
(wdContext.nodeSelectedInfotype().currentSelectedInfotypeElement().getNum01().length()<5)
{

         cellPhoneDropdown.setSelectedKey(wdContext.nodeSelectedInfotype().currentSelectedInfotypeElement().getLand1());            

     }


 


 

//     Remove these comments if we want to dynamically display the US Area Code and

//     also define and map context LAMRC.homePhoneNumber and LAMRC.cellPhoneNumber    to

//     replace SelectedInfotype.telnr and SelectedInfotype.num01

    

//     //    if selected country code is US, initialize the area code

//     if (homeCountryCodeKey.toString().compareToIgnoreCase("US")==0) {

//         // get area code

//         // copy SAP fields to LAMRC telephone number fieds for formatting US phone numbers

//         String areaCode = wdContext.nodeSelectedInfotype().currentSelectedInfotypeElement().getTelnr().substring(0,3);

//         String homePhone = wdContext.nodeSelectedInfotype().currentSelectedInfotypeElement().getTelnr().substring(3);

//         wdContext.nodeLAMRC().currentLAMRCElement().setHomeAreaCode(areaCode);

//         wdContext.nodeLAMRC().currentLAMRCElement().setHomePhoneNumber(homePhone);

//     } else {

         // copy SAP fields to LAMRC telephone number fieds for non-US phone numbers

//         String homePhone = wdContext.nodeSelectedInfotype().currentSelectedInfotypeElement().getTelnr();

//         wdContext.nodeLAMRC().currentLAMRCElement().setHomePhoneNumber(homePhone);        

//     }

    

//     Remove these comments if we want to dynamically display the US Area Code and

//     also define and map context LAMRC.homePhoneNumber and LAMRC.cellPhoneNumber    to

//     replace SelectedInfotype.telnr and SelectedInfotype.num01


 

//     // if selected country code is US, then initialize the area code

//     if (cellCountryCodeKey.toString().compareToIgnoreCase("US")==0) {

//         // copy SAP fields to LAMRC telephone number fieds for formatting US phone numbers

//         String areaCode = wdContext.nodeSelectedInfotype().currentSelectedInfotypeElement().getNum01().substring(0,3);

//         String homePhone = wdContext.nodeSelectedInfotype().currentSelectedInfotypeElement().getNum01().substring(3);

//         wdContext.nodeLAMRC().currentLAMRCElement().setCellAreaCode(areaCode);

//         wdContext.nodeLAMRC().currentLAMRCElement().setCellPhoneNumber(homePhone);

//     } else {

         // copy SAP fields to LAMRC telephone number fieds for non-US phone numbers

//         homePhone = wdContext.nodeSelectedInfotype().currentSelectedInfotypeElement().getNum01();

//         wdContext.nodeLAMRC().currentLAMRCElement().setCellPhoneNumber(homePhone);        

//     }


 


}


 


// get selections country code from the selected country for home number


ISimpleValueSet
elementValueSetHome
=

     wdThis.wdGetAPI()

         .getContext()

//         .getTypeOf("SelectedInfotype." + fieldInfo[i].fieldName)

         .getTypeOf("SelectedInfotype.Zztelefto")

         .getSVServices()

         .getValues();

    
 


// get selections country code from the selected country for home number


Object
homeCountryCodeKey
=
wdContext.nodeSelectedInfotype().getCurrentElement().getAttributeValue("Zzland1");    


String
homeCountryCodeText
=
elementValueSetHome.getText(homeCountryCodeKey);

    
 


// get selections country code from the selected country for cell number


Object
cellCountryCodeKey
=
wdContext.nodeSelectedInfotype().getCurrentElement().getAttributeValue("Zzcland1");    


String
cellCountryCodeText
=
elementValueSetHome.getText(cellCountryCodeKey);


 


//    if selected country code is US, then show the area code

// Remove these comments if we want to dynamically display the US Area Code        

// IWDInputField homeAreaCode = (IWDInputField)view.getElement("LAMRC_Home_Area_Code");


IWDTextView
homeAreaCode
=
(IWDTextView)view.getElement("LAMRC_Home_Area_Code");


if
(homeCountryCodeKey.toString().compareToIgnoreCase("US")==0)
{

     // get area code

     // copy SAP fields to LAMRC telephone number fieds for formatting US phone numbers

     homeAreaCode.setVisible(WDVisibility.VISIBLE);            


}
else
{

     // copy SAP fields to LAMRC telephone number fieds for non-US phone numbers

     homeAreaCode.setVisible(WDVisibility.NONE);


}


//    if selected country code is US, then show the area code

// Remove these comments if we want to dynamically display the US Area Code        

// IWDInputField cellAreaCode = (IWDInputField)view.getElement("LAMRC_Cell_Area_Code");


IWDTextView
cellAreaCode
=
(IWDTextView)view.getElement("LAMRC_Cell_Area_Code");


if
(cellCountryCodeKey.toString().compareToIgnoreCase("US")==0)
{

     // copy SAP fields to LAMRC telephone number fieds for formatting US phone numbers

     cellAreaCode.setVisible(WDVisibility.VISIBLE);            


}
else
{

     // copy SAP fields to LAMRC telephone number fieds for non-US phone numbers

     cellAreaCode.setVisible(WDVisibility.NONE);


}


 


// since we do not want to have the dropdown for country code, we update the shadow node element w/o value help attached to the UI


if
(homeCountryCodeKey.toString().length()
!=
0
)
{

     wdContext.nodeLAMRC().currentLAMRCElement().setHomeCountryCode("+"
+
homeCountryCodeText);    

     wdContext.nodeSelectedInfotype().currentSelectedInfotypeElement().setAttributeValue("Zztelefto","+"
+
homeCountryCodeText);


}
else
{

     wdContext.nodeLAMRC().currentLAMRCElement().setHomeCountryCode("");    

     wdContext.nodeSelectedInfotype().currentSelectedInfotypeElement().setAttributeValue("Zztelefto","");


}

    
 


if
(cellCountryCodeKey.toString().length()
!=
0
)
{

     wdContext.nodeLAMRC().currentLAMRCElement().setCellCountryCode("+"
+
cellCountryCodeText);    

     wdContext.nodeSelectedInfotype().currentSelectedInfotypeElement().setAttributeValue("Zzctelefto","+"
+
cellCountryCodeText);


}
else
{

     // no value selected (empty selection)

     wdContext.nodeLAMRC().currentLAMRCElement().setCellCountryCode("");    

     wdContext.nodeSelectedInfotype().currentSelectedInfotypeElement().setAttributeValue("Zzctelefto",""
);


}    

            


// @lamrc end


 

Map placeholder action handler

// placeholder action handler order to refresh screen


public
void
onActionLAMRC_Country_Code(com.sap.tc.webdynpro.progmodel.api.IWDCustomEvent
wdEvent
)


{


//@@begin onActionLAMRC_Country_Code(ServerEvent)


// action required on dropdown selection in order to refresh the screen

    //    MessageManager msgMgr = (MessageManager) wdThis.wdGetAPI().getComponent().getMessageManager();

    //    msgMgr.reportWarning(" used for testing");


//@@end


}


 


 

Map SAP default telephone number to LAMRC context node in order to hide error messages


 



 


 

Define Layout and UI Elements (shown has option to dynamic display of area code)


(

Make sure that the either ROOT or LAMRC container properties are properly set to avoid stretching of columns when the text are dynamically shown/hidden



 

Map UI Elements with LAMRC Context nodes


 

NOT NEEDED, but use conversion routine

Add method to VcAddressDetails13 onFlush() to back-end

    String
event
=
fpm.getEventData().getEventName();

                if
(event.equals(IFPM.EVENT_REVIEW)){

        // @lamrc

        

        // concatenate to get the US phone number

//        String phoneNumber = wdContext.nodeLAMRC().currentLAMRCElement().getHomePhoneNumber();

//        Remove these comments if we want to dynamically display the US Area Code        

//        if (wdContext.nodeSelectedInfotype().getCurrentElement().getAttributeAsText("Zzland1").equalsIgnoreCase("US")==true) {

//            String areaCode = wdContext.nodeLAMRC().currentLAMRCElement().getHomeAreaCode();

//            wdContext.nodeSelectedInfotype().currentSelectedInfotypeElement().setTelnr(areaCode + phoneNumber);

//        } else {

//            wdContext.nodeSelectedInfotype().currentSelectedInfotypeElement().setTelnr(phoneNumber);        

//        }


 

        // concatenate to get the US cell phone number

//        Remove these comments if we want to dynamically display the US Area Code        

//        phoneNumber = wdContext.nodeLAMRC().currentLAMRCElement().getCellPhoneNumber();        

//        if (wdContext.nodeSelectedInfotype().getCurrentElement().getAttributeAsText("Zzcland1").equalsIgnoreCase("US")==true) {

//            String areaCode = wdContext.nodeLAMRC().currentLAMRCElement().getCellAreaCode();

//            wdContext.nodeSelectedInfotype().currentSelectedInfotypeElement().setNum01(areaCode + phoneNumber);

//        } else {

//            wdContext.nodeSelectedInfotype().currentSelectedInfotypeElement().setNum01(phoneNumber);

            // hard-code in order to bypass SAP validation for comm dropdown

            wdContext.nodeSelectedInfotype().currentSelectedInfotypeElement().setCom01("CELL");             

//        }        

        // @lamrc             


 

In the review screen create labels and textView for Personal Mobile field. NOTE: map label 1 to 1 with the TextView in order to user personalization


 

For Korea, specify Z class to bypass SAP's KR phone validation for non-KR telephone numbers

Maintenance View V_T582ITVCHCK