1. merge 펑션을 사용할 때, alv 화면에서 필드가 나타나지 않을 때.
PERFORM lvc_fieldcatalog_merge TABLES gt_lvc_fcat " Field Cat.
gt_dt <-- 이 부분을 보자
USING 'GT_DT'.
*&---------------------------------------------------------------------*
*& Form lvc_fieldcatalog_merge
*&---------------------------------------------------------------------*
* 해당 Dictionary 또는 Internal Table로부터 Field catalog를 가져옴
*----------------------------------------------------------------------*
* -->pt_fcat_alv Field Catalog for List Viewer Control
* -->pt_table Internal Table
* -->p_itab_name Internal Table 명
*----------------------------------------------------------------------*
FORM lvc_fieldcatalog_merge TABLES pt_fcat_alv TYPE lvc_t_fcat
pt_table
USING p_itab_name TYPE any.
DATA lt_fieldcat TYPE slis_t_fieldcat_alv.
DATA lt_alv_cat TYPE TABLE OF lvc_s_fcat.
*----------------------------------------------------------------------*
*Create field catalog from dictionary structure or internal table
*----------------------------------------------------------------------*
CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
EXPORTING
i_program_name = sy-repid
i_internal_tabname = p_itab_name
i_inclname = sy-repid
CHANGING
ct_fieldcat = lt_fieldcat[].
CALL FUNCTION 'LVC_TRANSFER_FROM_SLIS'
EXPORTING
it_fieldcat_alv = lt_fieldcat
IMPORTING
et_fieldcat_lvc = lt_alv_cat
TABLES
it_data = pt_table.
CALL FUNCTION 'LVC_FIELDCAT_COMPLETE'
CHANGING
ct_fieldcat = lt_alv_cat.
REFRESH pt_fcat_alv .
pt_fcat_alv[] = lt_alv_cat[].
* LOOP AT pt_fcat_alv INTO gs_lvc_fcat.
* CASE gs_lvc_fcat-fieldname.
* WHEN 'CHECK' OR
* 'OBJ_KEY' OR
* 'OBJ_SEQ'.
* gs_lvc_fcat-no_out = 'X'.
* MODIFY pt_fcat_alv FROM gs_lvc_fcat.
* ENDCASE.
* ENDLOOP.
ENDFORM. " lvc_fieldcatalog_merge
선언부에서 include 스트럭쳐를 하고, 아래쪽에다 type 으로 선언하면,
alv 에서는 display 를 하지 못한다...
like 로 선언한 후에, 새 세션을 열고 테스트를 하면 Fieldcat merge 펑션에서
display 할 수 있다.
하단에
zprjnm type zcoht601-zprjnm 한다면. 해당 필드는 display 되지 않는다!!!!!!
DATA : BEGIN OF gt_dt OCCURS 0,
flag(1).
INCLUDE STRUCTURE zcohs038.
DATA : zprjnm like zcoht601-zprjnm,
zcust like zcoht601-zcust,
zcust_name like kna1-name1,
zeusr like zcoht601-zeusr,
zeusr_name like kna1-name1,
zeusrcntr like zcoht601-zeusrcntr,
landx like t005t-landx,
zrepeat like zcoht601-zrepeat, "반복자재유무
f_col TYPE lvc_t_scol ,
celltab TYPE lvc_t_styl .
DATA : END OF gt_dt.
아래 Function을 사용하여 Internal Table에 참조된 Field Catalog를 가져오지 못하는 경우가 있습니다.
이때는 아래 순서로 점검 해보세요.
1. 해당 프로그램의 Internal Table이 있는지 확인
2. 해당 Internal Table에 참조된 필드들이 Like로 참조되고 있는지 확인(타입을 바로 참조하는경우는 TYPE으로 선언)
3. 해당 Internal Table에 OCCURS 구문을 사용하여 생성되었는지 확인
call function 'REUSE_ALV_FIELDCATALOG_MERGE'
exporting
i_program_name = sy-repid
i_internal_tabname = PV_TABNAME
i_inclname = sy-repid
changing
ct_fieldcat = LT_FIELDCATS.
'ERP-SAP > ABAP' 카테고리의 다른 글
<ABAP> AL11의 파일 디렉토리와 'RZL_READ_DIR_LOCAL' (0) | 2013.05.13 |
---|---|
<ABAP> SAP standard menu bar에 리스트 추가 작업 파일 (add custom help menu) (0) | 2013.05.09 |
<ABAP> ALV Toolbar 버튼 삭제, 생성, 안나오게 하는 법 (툴바) alv layout (0) | 2013.01.08 |
<ABAP> Call Transaction 시에 새창으로 띄우는 방법 (0) | 2013.01.04 |
<ABAP> Selection Screen 에 Sign , Option 같이 주기. (0) | 2012.12.21 |