CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
EXPORTING
I_BYPASSING_BUFFER = 'X'
i_program_name = '프로그램이름'
i_internal_tabname = 'IT_BASIC'
i_inclname = '인클루드_TOP'
CHANGING
ct_fieldcat = ct_fieldcat[]
EXCEPTIONS
inconsistent_interface = 1
program_error = 2
OTHERS = 3.
저기서 it_basic이라는 인터널테이블에
A라는 필드를 하나 추가했습니다.
그런데 결과값 ct_fieldcat에는 변경전 필드카탈로그 값만 들어오네요..
검색해서 I_BYPASSING_BUFFER = 'X'를 하면 된다는 글을 보고 따라 했는데도 그대로에요..
버퍼에 있는 값을 그냥 읽어와서그런거 같은데..
방법좀알려주세요.. 인터널테이블을 수정하면 그 필드카탈을 다시 가져오는법좀..ㅜㅜ 부탁합니다..
댓글 3
-
activeman
2009.05.08 04:55
-
피크민
2009.05.08 19:07
아밥 다 닫고 다시 하니까 되네요..^^
이런경우도 있군요..ㅎ 감사합니다..즐밥하세요~^^
-
노법장
2010.02.11 02:08
I_BYPASSING_BUFFER = 'X'도 안 먹히고,
I_BUFFER_ACTIVE = 'X' 도 안 먹히니...function 버그인가?!?!?
그럼, 직접 메모리를 refresh를 해 줘야 겠죠. 근데 어떻게 refresh를 해야 하죠?
함수 'REUSE_ALV_FIELDCATALOG_MERGE' 안에 'CALCULATE_HASH_FOR_CHAR'라는 함수가 있슴다.
이거 한 번 사용해 보심 될 듯 합니다. SAP 메모리 ID 찾아서리...free 하게 해 줘 버리면....
ex)
data: l_memory_id_clear type string,
l_memory_id_hash type HASH160.
clear : l_memory_id_clear.
concatenate sy-cprog 'IT_BASIC' into l_memory_id_clear.
call function 'CALCULATE_HASH_FOR_CHAR'
exporting
data = l_memory_id_clear
IMPORTING
HASH = l_memory_id_hash
EXCEPTIONS
OTHERS = 4.
free memory id l_memory_id_hash.
그러고 나서...
그 다음에
CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
사용하시면...짜~잔~~
se80 빠져 나가셨다 다시 들어 오시면 해결 될것 같습니다..
즐밥하세요..