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