아무테이블이나 업로드

*&---------------------------------------------------------------------*
*& Report  ZUPLOADTABLE
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*

REPORT zlghtest 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,
typestring(20),
typestring2(20).

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.
* Dynamic internal table stucture
  PERFORM select_field_from_table.
* Create the dynamic internal table definition in the dyn. program
  PERFORM make_prg.
* Create the code processes the dynamic internal table

* Create and run the dynamic program
  INSERT REPORT 'ZDYNPRO'(001) FROM inctabl.
  SUBMIT zdynpro VIA SELECTION-SCREEN.
* 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:SAPworkdirZLGHTEST.txt'
      filetype = 'DAT'
    TABLES
      data_tab = inctabl.

ENDFORM. " DOWNLOAD_RESULT
*&---------------------------------------------------------------------*

*& 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'.
        typestring2 = '(13),'.
        inctabl-line+lng = typestring2.
        APPEND inctabl.
      ELSEIF struct-inttype = 'D'.
        typestring2 = '(10),'.
        inctabl-line+lng = typestring2.
        APPEND inctabl.
      ELSE.
        typestring(1) = '('.
        typestring+1(4) = struct-intlen.
        typestring+10 = '),'.
        CONDENSE typestring NO-GAPS.
        inctabl-line+lng = typestring.
* inctabl-line+15 = ','.
        APPEND inctabl.
      ENDIF.
* inctabl-line+lng = TYPESTRING.
* inctabl-line+15 = ','. APPEND inctabl.
    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

*&---------------------------------------------------------------------*

*& Form MAKE_PRG
*&---------------------------------------------------------------------*

* text
*----------------------------------------------------------------------*

* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*

FORM make_prg.
  inctabl-line = 'REPORT ZDYNPRO MESSAGE-ID ZPP1.'.
  APPEND inctabl.
  PERFORM make_itab.
  CONCATENATE 'DATA CP_TAB LIKE ' tab_name INTO inctabl-line
  SEPARATED BY space.
  CONCATENATE inctabl-line 'OCCURS 0 WITH HEADER LINE.'
  INTO inctabl-line SEPARATED BY space.
  APPEND inctabl.
  inctabl-line = 'DATA : file LIKE rlgrap-filename,CNT TYPE I.'.
  APPEND inctabl.
  inctabl-line =
  'SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-100.'.
  APPEND inctabl.
  inctabl-line =
'PARAMETERS p_fname(128) TYPE c LOWER CASE DEFAULT ''c:w'' OBLIGATORY.'.

  APPEND inctabl.
  inctabl-line = 'SELECTION-SCREEN END OF BLOCK b1.'. APPEND inctabl.
  inctabl-line = 'AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_fname.'.
  APPEND inctabl.
  inctabl-line = ' PERFORM call_ws_filename_get.'. APPEND inctabl.
  inctabl-line = 'START-OF-SELECTION.'. APPEND inctabl.
  inctabl-line = 'PERFORM data_uploading.'. APPEND inctabl.
  inctabl-line = 'PERFORM insert_data_to_table.'. APPEND inctabl.
  inctabl-line = 'FORM call_ws_filename_get.'. APPEND inctabl.
  inctabl-line = 'CALL FUNCTION ''WS_FILENAME_GET'''. APPEND inctabl.
  inctabl-line = 'EXPORTING'. APPEND inctabl.
  inctabl-line = 'def_filename = file'. APPEND inctabl.
  inctabl-line = 'def_path = ''c:SAPworkdir'''.
  APPEND inctabl.
  inctabl-line = 'mask = '',*.txt,*.TXT.'''. APPEND inctabl.
  inctabl-line = 'mode = ''O'''. APPEND inctabl.
  inctabl-line = 'title = ''Upload할 파일을 선택하십시요'''.
  APPEND inctabl.
  inctabl-line = 'IMPORTING'. APPEND inctabl.
  inctabl-line = 'filename = p_fname'. APPEND inctabl.
  inctabl-line = 'EXCEPTIONS'. APPEND inctabl.
  inctabl-line = 'inv_winsys = 1'. APPEND inctabl.
  inctabl-line = 'no_batch = 2'. APPEND inctabl.
  inctabl-line = 'selection_cancel = 3'. APPEND inctabl.
  inctabl-line = 'selection_error = 4'. APPEND inctabl.
  inctabl-line = 'OTHERS = 5.'. APPEND inctabl.
  inctabl-line = 'ENDFORM.'. APPEND inctabl.
  inctabl-line = 'FORM data_uploading.'. APPEND inctabl.
  inctabl-line = 'CLEAR: dyntab,dyntab[].'. APPEND inctabl.
  inctabl-line = 'CALL FUNCTION ''WS_UPLOAD'''. APPEND inctabl.
  inctabl-line = 'EXPORTING'. APPEND inctabl.
  inctabl-line = 'codepage = '' '''. APPEND inctabl.
  inctabl-line = 'filename = p_fname'. APPEND inctabl.
  inctabl-line = 'filetype = ''DAT'''. APPEND inctabl.
  inctabl-line = 'TABLES'. APPEND inctabl.
  inctabl-line = 'data_tab = dyntab'. APPEND inctabl.
  inctabl-line = 'EXCEPTIONS'. APPEND inctabl.
  inctabl-line = 'conversion_error = 1'. APPEND inctabl.
  inctabl-line = 'file_open_error = 2'. APPEND inctabl.
  inctabl-line = 'file_read_error = 3'. APPEND inctabl.
  inctabl-line = 'invalid_type = 4'. APPEND inctabl.
  inctabl-line = 'no_batch = 5'. APPEND inctabl.
  inctabl-line = 'unknown_error = 6'. APPEND inctabl.
  inctabl-line = 'Invalid_table_width = 7'. APPEND inctabl.
  inctabl-line = 'gui_refuse_filetransfer = 8'. APPEND inctabl.
  inctabl-line = 'customer_error = 9.'.APPEND inctabl.
  inctabl-line = 'CASE sy-subrc.'. APPEND inctabl.
  inctabl-line = 'WHEN 1. MESSAGE i000 WITH ''CONVERSION ERR''.STOP.'.
  APPEND inctabl.
  inctabl-line = 'WHEN 2. MESSAGE i000 WITH ''FILE OPEN ERR''.STOP.'.
  APPEND inctabl.
  inctabl-line = 'WHEN 3. MESSAGE i000 WITH ''FILE READ ERR''.STOP.'.
  APPEND inctabl.
  inctabl-line = 'WHEN 4. MESSAGE i000 WITH ''INVALID TYPE ERR''.STOP.'.
  APPEND inctabl.
  inctabl-line = 'WHEN 5. MESSAGE i000 WITH ''NO BATCH ERROR''. STOP.'.
  APPEND inctabl.
  inctabl-line = 'WHEN 6. MESSAGE i000 WITH ''UNKNOWN ERROR''.STOP.'.
  APPEND inctabl.
  inctabl-line =
  'WHEN 7. MESSAGE i000 WITH ''INALID TABLE WIDTH''.STOP.'.
  APPEND inctabl.
  inctabl-line =
  'WHEN 8. MESSAGE i000 WITH ''GUI REFUSE FILETRANSFER''.STOP.'.
  APPEND inctabl.
  inctabl-line = 'WHEN 9. MESSAGE i000 WITH ''CUSTOMER ERROR''. STOP.'.
  APPEND inctabl.
  inctabl-line = ' ENDCASE.'. APPEND inctabl.
  inctabl-line = 'ENDFORM.'. APPEND inctabl.
  inctabl-line = 'FORM insert_data_to_table.'. APPEND inctabl.
  inctabl-line = 'LOOP AT dyntab.'. APPEND inctabl.
  inctabl-line = 'MOVE-CORRESPONDING dyntab TO cp_tab.'.
  APPEND inctabl.
  inctabl-line = 'append cp_tab.'. APPEND inctabl.
  inctabl-line = 'ENDLOOP.'. APPEND inctabl.
  CONCATENATE 'MODIFY' tab_name INTO inctabl-line SEPARATED BY space.
  CONCATENATE inctabl-line 'FROM TABLE CP_TAB.' INTO inctabl-line
  SEPARATED BY space.
* inctabl-line = 'MODIFY zppt003 FROM TABLE cp_tab.'.
  APPEND inctabl.
  inctabl-line = 'ENDFORM.'. APPEND inctabl.
ENDFORM. "MAKE_PRG

by saper | 2008/07/18 12:11 | Report | 트랙백 | 덧글(0)

트랙백 주소 : http://saper.egloos.com/tb/597309
☞ 내 이글루에 이 글과 관련된 글 쓰기 (트랙백 보내기) [도움말]

:         :

:

비공개 덧글

◀ 이전 페이지 다음 페이지 ▶