2008년 07월 18일
아무 테이블이나 다운로드
*&---------------------------------------------------------------------*
*& Report ZDOWNLOADTABLE
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*
REPORT zlghdown MESSAGE-ID at NO STANDARD PAGE HEADING.
TABLES: dd03l, " 테이블필드
dd01l, " 도메인
dd02t, " R/3-DD: SAP 테이블 텍스트
dd17s, " R/3 S_SECINDEX: 보조 인덱스, 필드
dd12t, " DD12L에 대한 텍스트 테이블
dd04t. " R/3 DD: Data element 텍스트
DATA: BEGIN OF struct OCCURS 10,
position LIKE dd03l-position,
fieldname(30),
inttype TYPE c,
intlen TYPE i,
END OF struct.
* The dynamic program source table
DATA: BEGIN OF inctabl OCCURS 10,
line(72),
END OF inctabl.
DATA: lng TYPE i,
typesrting(6).
SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-100.
PARAMETERS tab_name LIKE dd03l-tabname OBLIGATORY.
SELECTION-SCREEN END OF BLOCK b1.
START-OF-SELECTION.
PERFORM select_field_from_table.
* Create the dynamic internal table definition in the dyn. program
PERFORM make_prg.
* Create and run the dynamic program
INSERT REPORT 'ZDYNPRO'(001) FROM inctabl.
SUBMIT zdynpro.
* Internal Table DownLoad.
* PERFORM download_result.
*&---------------------------------------------------------------------*
*& Form SELECT_FIELD_FROM_TABLE
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM select_field_from_table.
CLEAR dd03l.
SELECT position fieldname inttype intlen
INTO (dd03l-position,dd03l-fieldname,
dd03l-inttype,dd03l-intlen)
FROM dd03l
WHERE as4local = 'A'
AND tabname = tab_name.
MOVE-CORRESPONDING dd03l TO struct.
APPEND struct.
ENDSELECT.
DELETE struct WHERE position = 1.
DELETE struct WHERE fieldname = '.INCLUDE'.
SORT struct BY position.
ENDFORM. " SELECT_FIELD_FROM_TABLE
*&---------------------------------------------------------------------*
*& Form DOWNLOAD_RESULT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM download_result.
CALL FUNCTION 'DOWNLOAD'
EXPORTING
filename = 'C:tempZLGHTEST.txt'
filetype = 'DAT'
TABLES
data_tab = inctabl.
ENDFORM. " DOWNLOAD_RESULT
*&---------------------------------------------------------------------*
*& Form MAKE_PRG
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM make_prg.
inctabl-line = 'REPORT ZDYNPRO MESSAGE-ID ZPP1.'.
APPEND inctabl.
CONCATENATE 'TABLES:' tab_name '.'
INTO inctabl-line SEPARATED BY space.
APPEND inctabl.
PERFORM make_itab.
CONCATENATE 'DATA IT_TAB LIKE' tab_name 'OCCURS 0 WITH HEADER LINE.'
INTO inctabl-line SEPARATED BY space.
APPEND inctabl.
inctabl-line = 'START-OF-SELECTION.'. APPEND inctabl.
inctabl-line = ' CLEAR: it_TAB,IT_TAB[].'. APPEND inctabl.
CONCATENATE 'SELECT * FROM' tab_name INTO inctabl-line SEPARATED BY
space.
APPEND inctabl.
inctabl-line = ' INTO CORRESPONDING FIELDS OF TABLE it_TAB.'.
APPEND inctabl.
inctabl-line = 'LOOP AT it_tab.'. APPEND inctabl.
inctabl-line = 'MOVE-CORRESPONDING it_tab TO dyntab.'.
APPEND inctabl.
inctabl-line = 'append dyntab.'. APPEND inctabl.
inctabl-line = 'ENDLOOP.'. APPEND inctabl.
inctabl-line = ' CALL FUNCTION ''DOWNLOAD'''. APPEND inctabl.
inctabl-line = ' EXPORTING'. APPEND inctabl.
inctabl-line = ' filename = ''C:\SAPWORKDIRDATA.TXT'''.
APPEND inctabl.
inctabl-line = ' filetype = ''DAT'''. APPEND inctabl.
inctabl-line = ' TABLES'. APPEND inctabl.
inctabl-line = ' data_tab = DYNTAB.'. APPEND inctabl.
ENDFORM. "MAKE_PRG
*&---------------------------------------------------------------------*
*& Form make_itab
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM make_itab.
inctabl-line = 'data: begin of dyntab occurs 10,'.
APPEND inctabl.
LOOP AT struct.
inctabl-line = struct-fieldname.
lng = STRLEN( struct-fieldname ).
IF NOT struct-intlen IS INITIAL .
IF struct-inttype = 'P'.
typesrting = '(13)'.
ELSEIF struct-inttype = 'D'.
typesrting = '(10)'.
ELSE.
typesrting(1) = '('.
typesrting+1 = struct-intlen.
typesrting+5 = ')'.
CONDENSE typesrting NO-GAPS.
ENDIF.
inctabl-line+lng = typesrting.
ENDIF.
* inctabl-line+15 = 'type '.
* inctabl-line+21 = struct-inttype.
* inctabl-line+22 = ','. APPEND inctabl.
inctabl-line+15 = ','. APPEND inctabl.
ENDLOOP.
inctabl-line = 'end of dyntab. '.
APPEND inctabl.
ENDFORM. " make_itab
이 글과 관련있는 글을 자동검색한 결과입니다 [?]
# by | 2008/07/18 11:51 | Report | 트랙백 | 덧글(0)





☞ 내 이글루에 이 글과 관련된 글 쓰기 (트랙백 보내기) [도움말]