인터널 테이블을 사용하여 필드카탈로그를 정의하려고 합니다.
K_KKB_FIELDCAT_MEGE 함수를 호출할 때,
I_CALLBACK_PROGRAM 과 I_INCLNAME을 생략하면 덤프가 뜨고,
넣어도 테이블에 아무것도 잘 들어오지 않습니다.
I_CALLBACK_PROGRAM 과 I_INCLNAME에 어떤 값이 들어가야하는지
좀 알려주세요
*&---------------------------------------------------------------------*
*& Include ZMMC0010TOP
*&---------------------------------------------------------------------*
DATA : GT_FIELDCAT TYPE LVC_T_FCAT,
*----------------------------------------------------------------------*
***INCLUDE ZMMC0010O01 .
*----------------------------------------------------------------------*
*----------------------------------------------------------------------*
***INCLUDE ZMMC0010F01 .
*----------------------------------------------------------------------*
FORM GET_FIELDCAT .
DATA : LT_FIELDCAT TYPE KKBLO_T_FIELDCAT.
CALL FUNCTION 'K_KKB_FIELDCAT_MERGE'
EXPORTING
I_CALLBACK_PROGRAM = SY-REPID
I_INCLNAME = 'ZMMC0010O01'
I_TABNAME = 'ITAB'
CHANGING
CT_FIELDCAT = LT_FIELDCAT[].
IF SY-SUBRC EQ 0.
CALL FUNCTION 'LVC_TRANSFER_FROM_KKBLO'
EXPORTING
IT_FIELDCAT_KKBLO = LT_FIELDCAT[]
IMPORTING
ET_FIELDCAT_LVC = GT_FIELDCAT[].
ENDIF.
ENDFORM. " GET_FIELDCAT
댓글 5
-
데이
2008.09.19 00:34
-
효방 ^-^
2008.09.19 00:42
님 말대로 ZMMC0010TOP 으로 선언해 줬는데요;;
값을 가지고 오지 않네요..; 다른 부분 잘못된곳 있을까요?
-
데이
2008.09.19 02:59
테스트해본결과 exporting 의 세 값만 제대로 넣어주면 잘 나오는데요
혹시 dump가 난다면 itab 의 필드중 72라인을 넘어가는것이 있는지 확인해 보세요
그리고 일반적으로 많이 쓰이는 reuse_alv_fieldcatalog_merge 펑션을 쓰시는게 어떨런지요? ^^ -
hongman
2008.09.23 00:30
데이님 말씀대로 K_KKB_FIELDCAT_MERGE 함수를 직접 사용하시는 것보다는 reuse_alv_fieldcatalog_merge 함수를 사용하시는것이 나은듯 하네요.
실제로 reuse_alv_fieldcatalog_merge 이 함수 안에서 K_KKB_FIELDCAT_MERGE 이 함수를 호출하지요.
그리고 주의할 점은 'REUSE_ALV_FIELDCATALOG_MERGE' 이 함수 쓸때 인터널테이블안에 필드 선언은
Type이 아니라 Like로 해주셔야 합니다.
DATA : lt_fieldcat TYPE slis_t_fieldcat_alv.
CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
EXPORTING
i_program_name = sy-cprog
i_internal_tabname = 'ZMMC0010O01'
i_inclname = sy-cprog
CHANGING
ct_fieldcat = lt_fieldcat.
CALL FUNCTION 'LVC_TRANSFER_FROM_SLIS'
EXPORTING
it_fieldcat_alv = lt_fieldcat[]
IMPORTING
et_fieldcat_lvc = gt_fieldcat[]
TABLES
it_data = gt_outtab.
CALL FUNCTION 'LVC_FIELDCAT_COMPLETE'
EXPORTING
i_refresh_buffer = abap_true
CHANGING
ct_fieldcat = gt_fieldcat[]. -
효방 ^-^
2008.09.23 17:44
아... 제가 틀린부분으 꼭 찝어주시네요 -0-;; LIKE 때문에 몇시간을 고생을....;;
답변주시분들 모두 감사합니다. ^^;;
혹시 LIKE 를 쓰지 않고 INCLUDE STRUCTURE 을 포함한 인터널 테이블은 사용할 수 있는지....?
아니면 따로 스트럭쳐를 만들어서 사용해야하나요?
i_inclname 에 해당 테이블이 선언된 프로그램을 써줘야 할것 같은데요
아무래도 zmmc0010O01에서 선언했을것 같지는 않은데 zmmc0010top에서 선언해 주신것 아닌가요?