2012-08-29 2 views
1

로컬 형식의 예외를 발생시키고 생성자 a * 텍스트에 전달하려고합니다.ABAP : 로컬 예외 클래스에 메시지를 쓰려면 어떻게해야합니까?

이 * 텍스트는 나중에 예외를 잡을 때 get_longtext 메서드를 호출하여 반환하려고하는 것입니다.

물론 클래스에 속성을 추가하고 메소드를 재정의 할 수 있습니다. 그러나 저에게는 더 쉬운 방법이 있어야 할 것처럼 보입니다 (자바와 비슷한 언어에서와 같이).

예외에 대해 상속 된 생성자에 TEXTID 매개 변수가 있습니다. 그러나 클래스 속성으로 정의 된 "텍스트"를 가리키고 있지만 이는 글로벌 클래스를위한 것입니다.

그렇다면 기존의 생성자를 우아한 방법으로 사용하는 방법이 있습니까? 아니면 간단히해야합니까?

+1

에서 내 블로그의 글 (코드가 여기에 꽤 오래 넣어하는 것입니다)를 참조하십시오? 이 경우 SE24는이 모든 것을 자동으로 처리하고 텍스트를 편집 할 수있는 멋진 UI를 제공합니다. – vwegert

+0

예, 전 * 글로벌 클래스를 사용할 수 있지만 마지막 옵션입니다. 나는 그 방법을 재정의했다. 나는 ABAP가 할 수있는 것의 한계를 테스트하여, 익숙해진다. 귀하의 답변과 지속적인 피드백을위한 Thx. –

+1

일반적으로 로컬 클래스를 사용하는 것이 마지막 옵션입니다. 로컬 클래스에 자신을 제한하면 사용할 수있는 대부분의 도구를 사용할 수 없게됩니다. 그것은 EDLIN 만 사용하여 Java 한계를 테스트하는 것과 같습니다. – vwegert

답변

1

글로벌 클래스를 사용하지 않으려면 (권장 사항) 로컬 클래스에 IF_T100_MESSAGE 인터페이스를 구현할 수 있습니다. 먼저 SE91을 통해 모든 메시지 클래스의 오류 메시지를 유지 한 다음 SCX_T100KEY 유형의 로컬 예외 클래스에 텍스트 ID를 정의하십시오. 예외 클래스 메서드를 구현하여 메시지 텍스트의 자리 표시 자에 대한 추가 특성을 사용합니다 (필요한 경우).

자세한 내용은 IF_T100_MESSAGECL_MESSAGE_HELPER을 확인하십시오. 예제 코드를 얻으려면 전역 예외 클래스를 만들고 IF_T100_MESSAGE 인터페이스를 추가하고 메서드가 구현되는 방식을 확인하십시오.

1

로컬 예외 클래스를 정의하여 IF_T100_MESSAGE 인터페이스의 모든 이점을 얻을 수 있습니다. 당신은 샘플 코드에 관심이 있다면

, 당신은 글로벌 예외 클래스를 사용하는 기회를 가지고 있습니까 http://oprsteny.com/?p=1346

관련 문제