|
<< Click to Display Table of Contents >> Navigation: All About ABAP Technique > ABAP Source Code > YABAP_TOOLS_READ_TABLE_02 |
*&---------------------------------------------------------------------*
*& Report YABApa_TOOLS_READ_TABLE_02
*&
*&---------------------------------------------------------------------*
*& Created By : Albertus Reinandang *
*& Date : 12.05.2010 *
*& *
*& Edited By : Yance Ciputra dan Dyan Pravita Sari *
*& Date : 16.05.2010 *
*&---------------------------------------------------------------------*
REPORT yabapa_tools_read_table_02.
TABLES : dd02l, dd03l,soid.
DATA : gi_dd02l LIKE STANDARD TABLE OF dd02l WITH HEADER LINE.
SELECTION-SCREEN BEGIN OF BLOCK zblk01 WITH FRAME TITLE text_101.
SELECTION-SCREEN BEGIN OF LINE.
SELECTION-SCREEN COMMENT 1(16) text_102 FOR FIELD so_tbma.
SELECT-OPTIONS so_tbma FOR dd02l-tabname OBLIGATORY.
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN BEGIN OF LINE.
SELECTION-SCREEN COMMENT 1(19) text_103 FOR FIELD pa_spara.
PARAMETERS pa_spara TYPE sonv-flag DEFAULT ',' OBLIGATORY.
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN BEGIN OF LINE.
SELECTION-SCREEN COMMENT 1(19) text_104 FOR FIELD pa_data.
PARAMETERS pa_data LIKE sonv-flag.
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN BEGIN OF LINE.
SELECTION-SCREEN COMMENT 1(19) text_105 FOR FIELD pa_dir.
PARAMETERS pa_dir TYPE char40 DEFAULT 'c:\backup\dictionary\'.
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN END OF BLOCK zblk01.
INITIALIZATION.
text_101 = 'Transport to txt File'.
text_102 = 'Table Name '.
text_103 = 'Sparator'.
text_104 = 'With Data'.
text_105 = 'Directory'.
START-OF-SELECTION.
PERFORM fm_collect_data.
IF LINES( gi_dd02l ) > 0.
PERFORM fm_process_data.
ELSE.
MESSAGE 'Masukan data yang benar' TYPE 'I'.
ENDIF.
*&---------------------------------------------------------------------*
*& Form fm_collect_data
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM fm_collect_data.
SELECT *
INTO TABLE gi_dd02l
FROM dd02l
WHERE tabname IN so_tbma.
ENDFORM. "fm_collect_data
*&---------------------------------------------------------------------*
*& Form fm_process_data
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM fm_process_data.
DATA : lv_filename1 TYPE string,
lv_filename2 TYPE string,
lv_no_data TYPE sonv-flag.
DATA : li_options LIKE STANDARD TABLE OF rfc_db_opt WITH HEADER LINE,
li_fields LIKE STANDARD TABLE OF rfc_db_fld WITH HEADER LINE,
li_data LIKE STANDARD TABLE OF ytab WITH HEADER LINE,
"YTAB -> Lihat pada ABAP Tutorial "Cara Meningkatkan Buffer pada Function RFC_READ_TABLE"
li_table_structure LIKE STANDARD TABLE OF dfies WITH HEADER LINE.
IF pa_data = ' '.
lv_no_data = 'X'.
ENDIF.
CONDENSE pa_dir.
LOOP AT gi_dd02l.
REFRESH : li_options, li_fields, li_data, li_table_structure.
CONCATENATE pa_dir gi_dd02l-tabname '_STRUCTURE.txt' INTO lv_filename1.
CONCATENATE pa_dir gi_dd02l-tabname '_CONTENT.txt' INTO lv_filename2.
CONDENSE : lv_filename1, lv_filename2.
* YRFC_READ_TABLE -> Lihat pada ABAP Tutorial "How to Increase Buffer in RFC_READ_TABLE Function 02"
* Tambahkan table parameter pada function YRFC_READ_TABLE, lihat ke tutorial "How to Increase Buffer in
* RFC READ TABLE Function 02" .
CALL FUNCTION 'YRFC_READ_TABLE'
EXPORTING
query_table = gi_dd02l-tabname
delimiter = pa_spara
no_data = lv_no_data
TABLES
OPTIONS = li_options
fields = li_fields
data = li_data
table_structure = li_table_structure.
* Download Stucture
IF pa_data <> 'X'.
CALL FUNCTION 'GUI_DOWNLOAD'
EXPORTING
filename = lv_filename1
TABLES
data_tab = li_table_structure.
IF sy-subrc = 0.
MESSAGE 'Berhasil Download Table' TYPE 'I'.
ENDIF.
ENDIF.
* Download Data
IF pa_data = 'X'.
CALL FUNCTION 'GUI_DOWNLOAD'
EXPORTING
filename = lv_filename2
TABLES
data_tab = li_data.
IF sy-subrc = 0.
MESSAGE 'Berhasil Download Table' TYPE 'I'.
ENDIF.
ENDIF.
ENDLOOP.
ENDFORM. "fm_process_data