PERFORM INIT_LAYOUT USING G_LAYOUT_S .
form INIT_LAYOUT USING P_G_LAYOUT_S. "TYPE SLIS_LAYOUT_ALV.
G_LAYOUT_S-COLWIDTH_OPTIMIZE = 'X'.
G_LAYOUT_S-ZEBRA = 'X'.
다음과 같은 USING P_G_LAYOUT_S. "TYPE SLIS_LAYOUT_ALV.
이것은 왜쓰는걸까요?
제가 여태한거는
데이터 선언부에 DATA: G_LAYOUT_S TYPE SLIS_LAYOUT_ALV.
그리고 레이아웃 설정폼에
PERFORM INIT_LAYOUT .
form INIT_LAYOUT .
G_LAYOUT_S-COLWIDTH_OPTIMIZE = 'X'.
G_LAYOUT_S-ZEBRA = 'X'.
이런식으로 바로 해왔었거든요
댓글 4
-
초보아밥퍼
2008.05.22 00:00
-
activeman
2008.05.22 03:19
PERFORM INIT_LAYOUT USING G_LAYOUT_S . ==> 이렇게 사용하는 이유는 하나의 ALV 프로그램에서 여러가지 LAYOUT을 사용하기
위함입니다.
가령 레이아웃이 전혀 다른 ALV를 하나의 프로그램으로 구성할때 사용하게 됩니다. 그럼
PERFORM INIT_LAYOUT USING G_LAYOUT_S .
PERFORM INIT_LAYOUT USING G_LAYOUT_V .
이런씩으로 USING 부분만 수정해 주면 프로그램이 간단하게 되겠죠..
즐밥하세요..
-
수갬
2008.05.22 20:09
질문이 어떤걸 말하는지 모르겠지만...using을 왜 쓰는건지를 물어보는건지...아니면...위에 프로그램에서 왜 using을 썼는거지..
저같은 경우에는 using을 ...
PERFORM sel_tab_data1 TABLES it_zexd1 USING itab_name st_name .
FORM sel_tab_data1 TABLES p_table USING itab_name st_name.
CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
EXPORTING
I_PROGRAM_NAME = pgm
I_INTERNAL_TABNAME = itab_name
I_STRUCTURE_NAME = st_name
I_CLIENT_NEVER_DISPLAY = 'X'
I_INCLNAME = pgm
CHANGING
CT_FIELDCAT = fieldcat
perform에서 사용한 it_zexd2와 itab_name st_name 값을 form 부분으로
던져주고 form에서 itab_name 와 st_name , it_zexd2를 사용할수 있습니다.
ALV를 쓸때 하나의 인터널테이블만 사용하게 된다면..굳이 using이나
tables를 사용할 필요가 없는데 경우에 따라 보여지는 값이 달라지면..
그때마다 다른 값을 넣어줘야 하기때문에 위와 같은 방법으로 사용했습니다.
물론 방법은 여러가지가 있겠지만요...^^
제가 초보라..이해를 하셨는지 모르겠어요.. 암튼 도움이 되셨으면 합니다. -
r333
2008.05.24 00:40
음.. 무슨말인지 알겠습니다..
다들 주위에서 의미없이 그냥 관례대로 쓴다길래...
고맙습니다.
form INIT_LAYOUT USING P_G_LAYOUT_S. "TYPE SLIS_LAYOUT_ALV.
G_LAYOUT_S-COLWIDTH_OPTIMIZE = 'X'.
G_LAYOUT_S-ZEBRA = 'X'.
이건 쓰는 사람의 코딩여하에 따라 달라지고요.
소스를 보면 P_G_LAYOUT_S 의 용도는
G_LAYOUT_S-COLWIDTH_OPTIMIZE = 'X'.
G_LAYOUT_S-ZEBRA = 'X'.
여기서 쓰이는것이 아닌듯 하네요.
한마디로 제 생각을 얘기해드린다면...
초기 선언을 안해놓은상태에서
USING P_G_LAYOUT_S TYPE SLIS_LAYOUT_ALV. 이렇게 썻다가
데이터 선언을 한후에
form INIT_LAYOUT USING P_G_LAYOUT_S. "TYPE SLIS_LAYOUT_ALV.
로 주석처리를 해버린듯 합니다. 지금 상황에선 저로직(위에꺼) USING의 의미가 없어 보이네요