JCO.Exception (JCO_ERROR_LOGON_FAILURE; JCo Error #:103): :2W:003
Authorization failures during the logon phase usually caused by unknown username, wrong password, invalid certificates, etc.
Could somebody give a answer on this Error-Message?
I use the JCO-Service example to get a connection from EP 6 SP1 to SAP/R3.
import bean.JCoBean;
import com.sap.mw.jco.IFunctionTemplate;
import com.sap.mw.jco.IRepository;
import com.sap.mw.jco.JCO;
import com.sapportals.htmlb.DropdownListBox;
import com.sapportals.htmlb.InputField;
import com.sapportals.htmlb.event.Event;
import com.sapportals.htmlb.page.DynPage;
import com.sapportals.htmlb.page.PageException;
import com.sapportals.portal.htmlb.page.JSPDynPage;
import com.sapportals.portal.htmlb.page.PageProcessorComponent;
import com.sapportals.portal.prt.component.IPortalComponentContext;
import com.sapportals.portal.prt.component.IPortalComponentRequest;
import com.sapportals.portal.prt.component.IPortalComponentProfile;
import com.sapportals.portal.prt.component.IPortalComponentResponse;
import com.sapportals.portal.prt.service.jco.IJCOClientService;
import com.sapportals.portal.prt.runtime.PortalRuntime;
public class JCoBasics extends PageProcessorComponent {
public DynPage getPage() {
return new MyDynPage();
}
// DynPage
public class MyDynPage extends JSPDynPage {
private final static int INITIAL_STATE = 0;
private final static int WELCOME_STATE = 1;
private final static int ERROR_STATE = 2;
private int state = INITIAL_STATE;
private final static String DROPDOWN_KEY = "myDropDown";
private final static String INPUT_KEY = "user_name_input";
private final static String BEAN_KEY = "MyJCoBean";
private String user;
private String sapSystem;
JCoBean myJCoBean;
public MyDynPage() {
this.setTitle("JCo Example");
}
public void doInitialization() {
state = INITIAL_STATE;
IPortalComponentRequest request = (IPortalComponentRequest) this.getRequest();
IPortalComponentContext myContext = request.getComponentContext();
IPortalComponentProfile myProfile = myContext.getProfile();
sapSystem = myProfile.getProperty("SystemIdentifier");
myJCoBean = new JCoBean();
myJCoBean.setSapSystem(sapSystem);
myJCoBean.setTitle("Example Using JCo to Access a SAP System");
myContext.putValue(BEAN_KEY, myJCoBean);
}
public void doProcessAfterInput() throws PageException {
}
public void doProcessBeforeOutput() throws PageException {
switch (state) {
case WELCOME_STATE:
setJspName("JCoBasicsResult.jsp");
break;
case ERROR_STATE:
setJspName("JCoBasicsError.jsp");
break;
default:
setJspName("JCoBasicsStart.jsp");
break;
}
}
// method is called, when the user has pressed a button on the result page or error page
public void onBack(Event event) throws PageException {
state = INITIAL_STATE;
}
// method is called, when the user has pressed a button on the initial page
public void onClick(Event event) throws PageException {
state = WELCOME_STATE;
InputField myInputField = (InputField) getComponentByName(INPUT_KEY);
if (myInputField != null) {
this.user = myInputField.getValueAsDataType().toString();
}
IPortalComponentRequest request = (IPortalComponentRequest) this.getRequest();
IPortalComponentContext myContext = request.getComponentContext();
myJCoBean = (JCoBean) myContext.getValue(BEAN_KEY);
myJCoBean.setSapName(user);
try {
// get a client service
IJCOClientService clientService = (IJCOClientService) PortalRuntime.getRuntimeResources().getService("com.sap.portal.runtime.application.jcoclient.jcoclient");
JCO.Client client = clientService.getJCOClient(myJCoBean.getSapSystem(), request);
// connect to SAP system
client.connect();
// prepare function module call
IRepository m_Repository = null;
IFunctionTemplate m_ft_bapi_user_get_detail = null;
m_Repository = JCO.createRepository("repository", client);
m_ft_bapi_user_get_detail = m_Repository.getFunctionTemplate("BAPI_USER_GET_DETAIL");
JCO.Function function = new JCO.Function(m_ft_bapi_user_get_detail);
JCO.ParameterList importList = function.getImportParameterList();
importList.setValue(user, "USERNAME");
// call the fuction module
client.execute(function);
// get the result
JCO.ParameterList outputList = function.getExportParameterList();
myJCoBean.setFirstName(outputList.getStructure("ADDRESS").getString("FIRSTNAME"));
myJCoBean.setLastName(outputList.getStructure("ADDRESS").getString("LASTNAME"));
myJCoBean.setFullName(outputList.getStructure("ADDRESS").getString("FULLNAME"));
// Close the connection
client.disconnect();
// catch any exception
} catch (JCO.Exception ex) {
myJCoBean.setErrorMessage("JCO.Exception (" + ex.getGroup() + "): " + ex.getMessage());
state = ERROR_STATE;
switch (ex.getGroup()) {
case JCO.Exception.JCO_ERROR_PROGRAM:
myJCoBean.setErrorMessage("JCO.Exception (JCO_ERROR_PROGRAM; JCo Error #:" + ex.getGroup() + "): " + ex.getMessage());
myJCoBean.setErrorDetail("A general program exception has occurred");
break;
case JCO.Exception.JCO_ERROR_COMMUNICATION:
myJCoBean.setErrorMessage("JCO.Exception (JCO_ERROR_COMMUNICATION; JCo Error #:" + ex.getGroup() + "): " + ex.getMessage());
myJCoBean.setErrorDetail("Exception caused by network problems, connection breakdowns, gateway problems, inavailability of the remote SAP system, etc");
break;
case JCO.Exception.JCO_ERROR_LOGON_FAILURE:
myJCoBean.setErrorMessage("JCO.Exception (JCO_ERROR_LOGON_FAILURE; JCo Error #:" + ex.getGroup() + "): " + ex.getMessage());
myJCoBean.setErrorDetail("Authorization failures during the logon phase usually caused by unknown username, wrong password, invalid certificates, etc. ");
break;
case JCO.Exception.JCO_ERROR_SYSTEM_FAILURE:
myJCoBean.setErrorMessage("JCO.Exception (JCO_ERROR_SYSTEM_FAILURE; JCo Error #:" + ex.getGroup() + "): " + ex.getMessage());
myJCoBean.setErrorDetail("A system failure in the remote SAP system has occurred ");
break;
case JCO.Exception.JCO_ERROR_APPLICATION_EXCEPTION:
myJCoBean.setErrorMessage("JCO.Exception (JCO_ERROR_APPLICATION_EXCEPTION; JCo Error #:" + ex.getGroup() + "): " + ex.getMessage());
myJCoBean.setErrorDetail("An application exception has occurred in the remote SAP system ");
break;
case JCO.Exception.JCO_ERROR_RESOURCE:
myJCoBean.setErrorMessage("JCO.Exception (JCO_ERROR_RESOURCE; JCo Error #:" + ex.getGroup() + "): " + ex.getMessage());
myJCoBean.setErrorDetail("Indicates that JCO has run out of resources such as connections in a connection pool ");
break;
case JCO.Exception.JCO_ERROR_PROTOCOL:
myJCoBean.setErrorMessage("JCO.Exception (JCO_ERROR_PROTOCOL; JCo Error #:" + ex.getGroup() + "): " + ex.getMessage());
myJCoBean.setErrorDetail("An internal communication protocol error has been detected ");
break;
case JCO.Exception.JCO_ERROR_INTERNAL:
myJCoBean.setErrorMessage("JCO.Exception (JCO_ERROR_INTERNAL; JCo Error #:" + ex.getGroup() + "): " + ex.getMessage());
myJCoBean.setErrorDetail("An exception inside of JCo ");
break;
case JCO.Exception.JCO_ERROR_CANCELLED:
myJCoBean.setErrorMessage("JCO.Exception (JCO_ERROR_CANCELLED; JCo Error #:" + ex.getGroup() + "): " + ex.getMessage());
myJCoBean.setErrorDetail("A registered JCo server has been cancelled ");
break;
case JCO.Exception.JCO_ERROR_STATE_BUSY:
myJCoBean.setErrorMessage("JCO.Exception (JCO_ERROR_STATE_BUSY; JCo Error #:" + ex.getGroup() + "): " + ex.getMessage());
myJCoBean.setErrorDetail("The remote SAP system is busy. Try again later ");
break;
case JCO.Exception.JCO_ERROR_NULL_HANDLE:
myJCoBean.setErrorMessage("JCO.Exception (JCO_ERROR_NULL_HANDLE; JCo Error #:" + ex.getGroup() + "): " + ex.getMessage());
myJCoBean.setErrorDetail("An internally used connection handle is invalid ");
break;
case JCO.Exception.JCO_ERROR_CONVERSION:
myJCoBean.setErrorMessage("JCO.Exception (JCO_ERROR_CONVERSION; JCo Error #:" + ex.getGroup() + "): " + ex.getMessage());
myJCoBean.setErrorDetail("A conversion between two representations of either a parameter, structure, or table field has failed ");
break;
case JCO.Exception.JCO_ERROR_FUNCTION_NOT_FOUND:
myJCoBean.setErrorMessage("JCO.Exception (JCO_ERROR_FUNCTION_NOT_FOUND; JCo Error #:" + ex.getGroup() + "): " + ex.getMessage());
myJCoBean.setErrorDetail("A function interface or one of the data structures could not completely be retrieved from the repository ");
break;
case JCO.Exception.JCO_ERROR_ILLEGAL_TID:
myJCoBean.setErrorMessage("JCO.Exception (JCO_ERROR_ILLEGAL_TID; JCo Error #:" + ex.getGroup() + "): " + ex.getMessage());
myJCoBean.setErrorDetail("An invalid transaction ID has been encountered. The TID was either longer than 24 characters or contained illegal characters ");
break;
case JCO.Exception.JCO_ERROR_UNSUPPORTED_CODEPAGE:
myJCoBean.setErrorMessage("JCO.Exception (JCO_ERROR_UNSUPPORTED_CODEPAGE; JCo Error #:" + ex.getGroup() + "): " + ex.getMessage());
myJCoBean.setErrorDetail("Either the remote SAP system or the local systems runs under a codepage which is not supported by JCo ");
break;
case JCO.Exception.JCO_ERROR_ABAP_EXCEPTION:
myJCoBean.setErrorMessage("JCO.Exception (JCO_ERROR_ABAP_EXCEPTION; JCo Error #:" + ex.getGroup() + "): " + ex.getMessage());
myJCoBean.setErrorDetail("An exception has been thrown by a function module in the remote system ");
break;
case JCO.Exception.JCO_ERROR_FIELD_NOT_FOUND:
myJCoBean.setErrorMessage("JCO.Exception (JCO_ERROR_FIELD_NOT_FOUND; JCo Error #:" + ex.getGroup() + "): " + ex.getMessage());
myJCoBean.setErrorDetail("A referenced field in either a JCO.ParameterList, JCO.Structure, or JCO.Table does not exist ");
break;
case JCO.Exception.JCO_ERROR_NOT_SUPPORTED:
myJCoBean.setErrorMessage("JCO.Exception (JCO_ERROR_NOT_SUPPORTED; JCo Error #:" + ex.getGroup() + "): " + ex.getMessage());
myJCoBean.setErrorDetail("A feature is not being supported by the current version of JCo ");
break;
case JCO.Exception.JCO_ERROR_SERVER_STARTUP:
myJCoBean.setErrorMessage("JCO.Exception (JCO_ERROR_SERVER_STARTUP; JCo Error #:" + ex.getGroup() + "): " + ex.getMessage());
myJCoBean.setErrorDetail("Something went wrong during the startup phase of a JCo server usually caused by passing a wrong gateway host or gateway service");
break;
case JCO.Exception.JCO_ERROR_XML_PARSER:
myJCoBean.setErrorMessage("JCO.Exception (JCO_ERROR_XML_PARSER; JCo Error #:" + ex.getGroup() + "): " + ex.getMessage());
myJCoBean.setErrorDetail("A parse error due to an invalid XML document has occurred ");
break;
}
;
}
;
}
}
}