YABAP_TOOLS_READ_TABLE_02

<< 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