본문 바로가기
ERP-SAP/ABAP

alv용 dynamic internal table 을 만들고 각 cell마다 alv cell style 주기

by 행복한워니의 기록 2021. 1. 19.
728x90
반응형

아래 글과 이어지는 내용인데..
우리가 동적으로 Db명을 받아서 그 itab을 생성하는 방법은 아래 글에서 캡쳐로 보여줬다..
또 붙이자면
이렇게 선언 후에

아래와같이 코딩하고

assign 까지 하면 필드심볼에 내가 원하는
동적인 ITAB 모양들이 만들어져있다.
<F_FS> 같은거 선언은 위에 캡쳐에 해놨다.

자 그럼 저렇게 DB 모양하고 똑같이 만들어서 ALV
뿌리면... 당연히 각 셀마다 컨트롤 하는 필드가 없어서
효과를 줄 수 없다.

현업 요구사항은
KEY값은 당연히 수정불가하게 닫아두되..
ALV의 APPEND 버튼을 누르면 키값이 열려야 된다는 것...
즉 이건 셀 컨트롤이 필요하다.
이것에 대한 예시는 스탠다드 플그램중
SLIS 패키지에 BCALV_EDIT_01~~~08까지를 보면
된다.

자 다시 돌아와서..
동적인 Itab 내에서 cell 속성 필드를 하나 추가해야 하는데 어찌 할지 모르겠다면..
간단한 클래스 하나를 쓰면 된다.

어? 그런데 it_cat은 필드카탈로그를 만들어줘야하네?
이건 간단하게 alv를 뿌리기 위해 만들어둔걸 사용하면되고..

포인트는 저 클래스에 스타일 테이블에 X 를 해주면 되고
그럼 내가 원하는 동적 itab + XYZSTYLEZYX 라는 필드가
생성되어 ITAB이 하나 만들어져있다..

그러면 이제 저 필드에 각 라인마다 각 셀마다의 스타일 지정이 가능하다..
내 코딩은 아래와 같다.

display 할 내용을 루프 돌면서 들어가서.
오리지널 가지고있던 데이터보다 append 된 신규 라인이 있다면..(건수로 비교했다)
이 라인은 키값 필드까지 모두 edit가능하게 열어달라.라는 코딩이다..

기존 데이터중 키값은 당연히 수정불가로 닫아달라 한거다..

(사진중 GT_Field 에는 동적 db의 키값이 담겨있다)

여기까지 설명 끝인데..노파심에 왜 각 라인의 셀마다
스타일을 정해줬는데 안되냐..? 묻는 초보분들이
있을수도 있어서 조금 더 설명하면.

alv에서 itab 안에있는 layout 지정할때 스타일 필드명을 알려줘야한다.
즉xyzstylezyx 를 알랴줘야지


그리고 저 레이아웃은 alv 뿌리는 클래스에
넣어줘야지..

gs_layo 보이지?

그럼 이제 설명 끝...!!!!


728x90
반응형