동적으로 테이블 이름과 internal 테이블 데이터를 받아서 활용하는 Function!
1. 먼저 function - 테이블에는 아무런 타입을 참조 시키지 않고, 테이블 명은 importing 함.
FUNCTION ZTESTFF01.
*"----------------------------------------------------------------------
*"*"Local interface:
*" IMPORTING
*" REFERENCE(ZTABLE_NAME) LIKE DD02L-TABNAME
*" TABLES
*" ZTABLE
*"----------------------------------------------------------------------
TYPE-POOLS : slis.
FIELD-SYMBOLS: <F> TYPE ANY TABLE,
<FL>.
DATA: gt_fieldcat_h TYPE slis_t_fieldcat_alv WITH HEADER LINE.
DATA: ZFNAME TYPE CHAR30.
CLEAR : gt_fieldcat_h[], gt_fieldcat_h.
CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
EXPORTING
i_program_name = sy-repid
i_inclname = sy-repid
i_structure_name = ZTABLE_NAME "<<--- TABLE NAME!!!
CHANGING
ct_fieldcat = gt_fieldcat_h[]
EXCEPTIONS
inconsistent_interface = 1
program_error = 2.
LOOP AT ZTABLE.
LOOP AT gt_fieldcat_h.
CONCATENATE 'ZTABLE-' gt_fieldcat_h-fieldname INTO ZFNAME.
"<<--- gt_fieldcat_h-fieldname : FIELD NAME
ASSIGN (ZFNAME) TO <FL>. "<<--- <FL> : FIELD VALUE
IF <FL> IS NOT INITIAL.
WRITE :/ <FL>. "<<--- INSERT LOG TABLE
ENDIF.
ENDLOOP.
ENDLOOP.
ENDFUNCTION.
2. 호출 report - 테이블 명과 데이터를 넘김
REPORT ZTEST.
data: gt01 TYPE TABLE OF mara WITH HEADER LINE. "<<-- TARGET TABLE
START-OF-SELECTION.
gt01-MATNR = '1'. APPEND GT01. "<<--- SET VALUE
gt01-MATNR = '2'. APPEND GT01.
gt01-MATNR = '3'. APPEND GT01.
gt01-MATNR = '4'. APPEND GT01.
CALL FUNCTION 'ZTESTFF01'
EXPORTING
ZTABLE_NAME = 'MARA' "<<--- TABLE NAME
TABLES
ZTABLE = gt01 "<<--- TABLE TYPE INTERNAL TABLE
.
if sy-subrc = 0.
write :/'ok'.
endif.
'ABAP 물타기 > Report' 카테고리의 다른 글
| 문자열 삭제 숫자만 남기기 (0) | 2013.05.10 |
|---|---|
| longtext display clear (0) | 2011.10.25 |
| batch job schedule 생성 function (0) | 2011.10.11 |
| 음수 부호 앞으로 이동(move minus mark) (0) | 2011.09.19 |
| 진행상태 Function (SAPGUI_PROGRESS_INDICATOR) (0) | 2011.09.16 |