입사한지 어언.. 대강.. 4개월차..
회사에서 abap 트리구조를 만들어봤다..
현업에서 잘쓰지도 않는다고 했는데 나는 왜만든겨..
어려워 ㅠㅠ
혹시.. 나중에 또하려고 할때 까먹을 수도 있으니 일기로 남겨본다
트리구조 만들기 STEP1.
TOP인클루드에 CLASS를 선언해준다. (사실 CUSTOM ALV만드는게 먼저이긴하지만..)
나는 INCLUDE 순서대로 써본다

일단 트리구조 만드는데 필요한 것들..
뭐 고수 아밥퍼들이라면 다들 알겠지만.. LOCAL CLASS를 선언하면 따로 내가 CLASS를
꾸려줘야한다..
암튼 그렇다..
컨테이너 위에 그리드 쌓듯이 트리도 쌓아주면 된다.
일단 선언 저렇게 해놓고..
STEP2. 커스텀 컨테이너 만들기
고수들은 다 알겠지만..
혹시라도 유입될 뉴비들을 위해.. SCREEN PAINTER하는 방법을 적어본다.
스크린 만드는 방법은 다들 알거라 믿는다.
START OF SELECTION에
CALL SCREEN 0100. 이라고 선언해 주면된다.
(SE80에서 오른쪽 버튼 눌러서 직접 CREATE 버튼 눌러서 선언하는 방법도 있음)
근데 나는 선언하고 더블클릭하는게 젤쉽다.
하다보니 혹시모를 뉴비들을 위ㅎ ㅐ ALV만드는법도 글을 올려봐야겠다 라는 생각이듬 ㅎㅎ
암튼 더블클릭해서 설정할거 설정해주고~
나만의(?) ALV화면을 만들어보자 후후..
아주간단.

저 Layout 버튼을 누르면 스크린 페인터가 나타난다 ^-^

저기 빨간 동그라미로 대강~ 컨테이너 모양 잡고~
Name에 이름을 적어주면 된다.
저 Name은 대강 변수명이라고 보면된다ㅋ
왼쪽은 트리구조를 나타낼 것이고 오른쪽은 그거에 맞는 데이터를 출력할거다.
일단 으레~그렇듯
PBO에 모듈 선언해주면된다.
나는 대충..

SET_TREE_0100이라고 했다.
ALV좀 만들어본사람은 다알겟지..
아까 선언한 GO_TREE가 INITIAL이라면~으로 시작한다.
이제 DOCKING CONTAINER말고 CUSTOM CONTAINER는 어떻게
OBJECT를 선언하냐면~
아주 쉽다 다른거 없다.
짠~ 간단하쥬
CONTAUINER_NAME에는 아까 내가 스크린 페인터에서 정해준 이름 넣어주면 된다ㅎㅎ
컨테이너 쌓았으니 이제 그 위에 ALV올려줘야지
아까 TOP에서 선언한 GO_TREE를 CREATE해주면ㄷ ㅚㄴ다~
그냥 저거 보고 따라하면된다.
STEP3. 노드 구성하기
사실 나는 비전공자로서 노드가 뭔지도 몰랐다..
하지만 운좋게 입사하기전 노드에 대해 잠깐 공부한적이 있었지..
아마 트리구조라고 하는게 나무처럼 뻗어있어서 트리라고 하는거 같다
(뇌피셜임 맞을 수도 있고)
그 트리구조를 구성하는걸 노드라고 하는데~
부모 노드 자식노드 형제노드 뭐 요런느낌이다
요걸 보면 이해가 빠를까.. SAP사업그룹의 자식노드는 사업본부와 운영본부다
사업본부와 운영본부는 서로 형제노드다.
사업본부와 운영본부의 부모노드는 SAP사업그룹
암튼 요렇다
노드를 만들어주자..ㅎㅎ
노드를 만들기우ㅣ해 필요한거 1.
노드형식을 담아줄 테이블이 필요하다
그건 탑에다가 가서 선언해주던.. 로컬로 선언하던 알아서 하면된다.
DATA : GT_NODE LIKE TABLE OF MTREESNODE WITH DEFAULT KEY.
친절 그 잡채..
변수명은 알아서 바꾸고.. 요거가져다 쓰면된다..
난 글로벌로 썼다. 내 맴
다들 알듯..
테이블에 내용을 담으려면 스트럭쳐가 필요하지..
내용을 담을 스트럭쳐도 하나 선언해준다~ 글로벌이든 로컬이든
DATA : LS_NODE LIKE MTREESNODE.
또 친절 그잡채..
이로써 노드만들기 준비물은 다끝났다
어디 노드를 만들어볼까..
첫번째로 부모노드 만들거다.
LS_NODE-NODE_KEY = 'DAD' (여기엔 내가 노드키를 만들어주면된다.)
LS_NODE-RELATKEY = ' '. 부모노드는 최상위라 RELATKEY가 필요없다.
LS_NODE-ISFOLDER = 'X'. 폴더모양으로 보여줄거냐는거다.. 설정하지 않으면 LEAF로 보여준다.
LS_NODE-TEXT = '아부지'. DISPLAY할때 뭐라고 보여줄건지 적는거다. 나는 아부지라고 보여줄거다.
LS_NODE-EXPANDER = 'X'. 펼칠꺼냐는 얘기다.. 자식노드 보려면 펼쳐야지.. 고럼고럼
APPEND LS_NODE TO GT_NODE.
두번째로는 자식노드 만들거다..
한번쓴 스트럭쳐는 클리어 해줘라..
CLEAR LS_NODE. 클리어 안하고 값이상하게 들어간다고 징징대지말고.. 여럿봤다..
LS_NODE-NODE_KEY = 'CHILD1'.
LS_NODE-RELATKEY = 'DAD'. 요건 어느 노드에 속할건지 적어주면 된다.. 얘는 DAD노드 아래에 들어갈거임
LS_NODE-ISFOLDER = 'X'.
LS_NODE-TEXT = '자식1'.
LS_NODE-EXPANDER = 'X'.
APPEND LS_NODE TO GT_NODE.
요렇게하면 노드 설정 끝이다.
만약에 형제노드 할거면. 똑같이 또 적어주면 된다.
CLEAR LS_NODE.
LS_NODE-NODE_KEY = 'CHILD2'.
LS_NODE-RELATKEY = 'DAD'.
LS_NODE-ISFOLDER = 'X'.
LS_NODE-TEXT = '자식2'.
LS_NODE-EXPANDER = 'X'.
APPEND LS_NODE TO GT_NODE.
요렇게하면 DAD이라는 부모 트리에 두가지 선택권이 생긴다..
물론내가 확장시켜놔서 둘다 하위폴더를 만들어주는게 좋겠지.
그럼 예시 하나 더준다. (CHILD에 속한 노드를 하나 더 만들어줄거다.)
CLEAR LS_NODE.
LS_NODE-NODE_KEY = 'CHILD_CHILD'.
LS_NODE-RELATKEY = 'CHILD1'.
LS_NODE-ISFOLDER = ' '.
LS_NODE-TEXT = '손주'.
LS_NODE-EXPANDER = ' '.
APPEND LS_NODE TO GT_NODE.
요건 CHILD1에 속한 손주다. 작명 욕하지말것.. 생각나는대로 적은 것이니..
틀린말은 아니잖아?
암튼 착~실하게 GT_NODE에 내가 만들고싶은 구조를 만들어서 하나씩 넣어주면 된다.
그리고 마지막에~ METHOD하나 불러줘라.

요렇게~ GO_TREE는 내가 탑에 선언해놓은ㄱ ㅓ 알쥬?
혹시 모를까봐 그러는데.. 이건 PERFORM안의 내용이다.
위에 올려보면 PBO에 선언한 SET_TREE_0100 모듈에
PERFORM BUILD_NODE_TABLE. 안에 선언해 둔 내용들이다.
STEP3. EVENT 설정해주자
사실 거창한건 없다.
저기~ PBO의 CREATE_NODE_EVENT 퍼폼이다.

CLS에 더블클릭 이벤트 설정해주고 그거 사용하겠다~ 선언하는 느낌이라 보면된다.
SET HANDLER..많이 봤쥬..?
일단 이건 이거고 ..

아까 탑에 선언한거.. CLASS 선언했으니
LCL정의해줘야지.. 생각해보니 이거부터 알려줬어야햇는데
내가 해놓은거 보면서 적느라 뒤죽박죽이다.. 알아서 잘하리라 믿는당

CLS부분이당 나는 일단 더블클릭말고 할게없어서 이거만했다 ㅋ
더블클릭했을때 어떻게할건지~ 저기 퍼폼에 적어주면된다..
오른쪽화면 ALV쌓을거면 쌓고..
다른 SCREEN 불러오고싶으면 불러오고..
하고싶은대로 해라 ㅠㅠ..
그럼 간단한 SIMPLE TREE 만들기
끝.
'밥린이의 아밥TIP' 카테고리의 다른 글
| [율밥퍼] SAP ABAP - ALV HANDLE_TOOLBAR (0) | 2023.09.06 |
|---|---|
| [율밥퍼] SAP ABAP - Search Help F4 (1) | 2023.09.05 |
| [율밥퍼] ABAP 필드심볼 - FIELDSYMBOL 3 (Feat. 역참조) (0) | 2023.09.03 |
| [율밥퍼] ABAP 필드심볼 - FIELD-SYMBOL2 (심화 Ver.) (3) | 2023.09.02 |
| [율밥퍼] SAP ABAP - FIELD-SYMBOLS 필드심볼 기초편 (0) | 2023.09.01 |