[SAP] 클래스(class) - 특성(characteristics) 설정 방법(추가/연결/삭제) 및 데이터 select 방법

2022. 11. 6. 22:26SAP - ABAP

정리하고 싶은 SAP 지식들은 정말 산더미인데... 귀챠니즘 무엇...

하지만 따끈따끈하게 알게 된 지식을 잊어버릴까봐 후다닥 정리해본다.

자재마스터 분류(Classification)탭에서 사용하는 클래스 타입에 특성내역(Characteristic)을  신규로 추가하고 싶어 이리 저리 알아보니 한국어 버전으로는 자세히 정리된 글이 없는 것 같아서 정리해본다.

우선 자재 마스터의 분류(Classfication)로 접속하면 클래스가 있는 것을 확인할 수 있으며

클래스 아래에는 유통기한이나 출시예정일, 출시일과 같은 특성내역(Characteristic)이 있다.

나는 이 특성내역 외에 제조자라는 항목을 추가해 해당 자재의 제조회사의 사업자번호를 관리하고 싶다.

우선 클래스 하위에 넣을 Characteristic(특성내역)을 신규 추가해야한다.

T-CODE : CT04 에 들어가서 제조사니까 영어로 ZMANUFACTURER 이라는 특성을 하나 신규로 만들어주고

사업자번호만 받기 위해 CHAR 10 으로 설정해보았다.

 

사업자번호는 숫자로만 구성되어 있는데도 NUM으로 지정하지 않은 이유는 아래에 적혀있다.

 

오류 데이터 인입을 방지하기 위해 공급업체 마스터 테이블인 LFA1을 참조해서 만들기로 한다.

값(Values) 탭에서 기타 값 점검 > 점검 테이블을 선택하고 LFA1을 지정해줬다.

만약 날짜와 같이 참조할만한 값이 없다면 굳이 세팅해줄 필요는 없다.

이 때 주의할 점은 해당 테이블의 주요 KEY필드와 위에서 설정한 데이터 유형, 문자수가 일치해야한다는 것이다.

LFA1-LIFNR 필드는 CHAR 10 이므로 앞에서 필히 그렇게 선택을 해줘야하고

만약 타입이 다를 경우는 C1159 오류 메세지가 발생하며 점검 테이블 지정이 되지 않는다.

특성은 이것 외에는 다른 부분은 건드리지 않았고 저장하면 특성 생성이 완료된다.

이제 해당 특성(Characteristic)을 클래스(Class)에 연결하고자 한다.

T-CODE : CL02 에 들어가 내가 추가하고자 하는 CLASS에 신규 생성한 특성을 추가 후 저장하면 완성!!

클래스와 특성에 대해 맵핑이 완료되면 자재마스터 상에 들어가 보았을 때 분류 > 클래스 > 특성에 신규 생성한 항목이 조회되는 것을 확인할 수 있다.

그리고 아까 점검 테이블 설정하는 과정에서 겪은 어려운 점도 정리하려고 한다.

처음에 LFA1을 참조로 만들지 않고 NUM 타입으로 특성을 만들고 저장한 뒤 LFA1을 연결하면 좋을 것 같아 데이터 유형을CHAR 타입으로 바꾸려고 하니.. 데이터 유형 필드가 비활성화가 되어 있었다.

인터넷에 검색해보니 이런 경우는 그냥 특성을 삭제하고 다시 만드는게 좋다고 하여 특성을 삭제하려고 우측 상단의 쓰레기통 버튼을 눌렀는데 특성을(를) 사용했습니다. 라고 C1036 에러가 발생하며 삭제가 되지 않았다.

이미 클래스에 지정이 되어서 그런가 싶어서 T-CODE : CL02로 이동 후 라인을 삭제해보려고 해도 지정되었기 때문에 특성을 삭제할수없습니다 라고 CL099 메세지가 뜬다.

도대체 어쩌라는거지.....? •̀ㅅ•́

마치 Foriegn key로 인한 부모 테이블-자식 테이블 과 같은 느낌이 솔솔,,,,,,

그래서 폭풍검색 끝에 알아낸 사실은  프로그램 : RMCLMDEL을 통해 삭제해줘야지만

클래스 - 특성 의 연결고리가 끊어지고 그 이후에 T-CODE : CT04 에서 특성을 삭제할 수 가 있다고........

이걸 보시는 분들은 저처럼 헤매시는 일이 없기를 바랍니당.... (◞‸◟)

그렇다면 이렇게 저장한 특성값들은 프로그램 상에서 어떻게 찾아올 수 있을까?

모든 특성 값은 TABLE : AUSP에 저장이되는 것으로 확인된다.

만약 OBJET랑 ATINN 을 다 알고 있다면 이 테이블에서 다이렉트로 SELECT하면 되지만 어떤 OBJEK 값과 ATINN을 넣어줘야하는지 잘 모르겠다면

클래스 하위에 특성 내용을 불러올 수 있는 Function : CLAF_CLASSIFICATION_OF_OBJECTS를 활용해본다.

CLASS 와 CLASSTYPE, OBJECT를 입력해주면 되는데 이 때 OBJECT는 자재코드를 넣어주면 된다.

프로그램 개발 시 코드 앞에는 'CONVERSION_EXIT_ALPHA_INPUT'함수를 사용하여 0을 꼭 채워주는게 좋다

그렇게 실행하고 나면 T_OBJECTDATA 에 값이 출력되는데 여기서 ATNAM 필드를 기준으로

AUSP1를 읽어 데이터를찾아오면 될 것 같다.

사진상 AUSP1 필드가 '?' 로 출력되는건 제가 아직 마스터 상에 값을 입력해주지 않아서이다 :)

NULL로 나오지 않고 '?' 로 나오는데 실제로 프로그램 개발 시에 공백으로 인지되는지는 확인해보면 좋을 듯

 

이상 클래스(classfication) - 특성(characteristics) 설정방법(추가/연결/삭제) 및 데이터 select 방법 이었습니당!!!!