Rabu, 27 April 2011

Create Abap Simple Grouping Report

Kali ini kita akan membuat Grouping Abap Report. Langkah-langkahnya sebagai berikut:
1. Buka t-code se38 dan beri nama ZREPORTGROUP lalu tekan create.



2.  Isi Titel dengan 'Latihan Grouping Report' dan pilih Type dengan '1 Executable program' lalu Save di Local object saja.


3. Ketikkan kode program seperti di bawah ini:

REPORT ZREPORTGROUP NO STANDARD PAGE HEADING.

TABLES : zappmm_kecamatan, zappmm_kabupaten.

TYPES BEGIN OF ty_gab,
        kd_kec LIKE zappmm_kecamatan-kd_kec,
        nm_kec LIKE zappmm_kecamatan-nm_kec,
        kd_kab LIKE zappmm_kecamatan-kd_kab,
        nm_kab LIKE zappmm_kabupaten-nm_kab,
        ersda LIKE zappmm_kecamatan-ersda,
        ernam LIKE zappmm_kecamatan-ernam,
        END OF ty_gab.

DATA : gi_kec LIKE STANDARD TABLE OF zappmm_kecamatan WITH HEADER LINE,
       gi_kab LIKE STANDARD TABLE OF zappmm_kabupaten WITH HEADER LINE,
       gi_gab TYPE STANDARD TABLE OF ty_gab WITH HEADER LINE,
       wa_gab TYPE STANDARD TABLE OF ty_gab WITH HEADER LINE,
       kab(70) TYPE c,
       counter TYPE i.
DATA: gv_width TYPE i.  " Width of list

SELECTION-SCREEN: BEGIN OF BLOCK head1 WITH FRAME TITLE text-101.
SELECT-OPTIONS so_kab FOR zappmm_kabupaten-kd_kab.
SELECT-OPTIONS so_kec FOR zappmm_kecamatan-kd_kec.
SELECTION-SCREEN: END OF BLOCK head1.

START-OF-SELECTION.
 gv_width = 117.
  PERFORM fm_collect_data.
  PERFORM fm_process_data.
  PERFORM fm_display_data.
END-OF-SELECTION.

FORM : fm_collect_data.
  SELECT kd_kab nm_kab INTO CORRESPONDING FIELDS OF TABLE wa_gab
    FROM zappmm_kabupaten
    WHERE kd_kab IN so_kab.

  IF wa_gab NE ''.
    SELECT INTO CORRESPONDING FIELDS OF TABLE gi_gab
      FROM zappmm_kecamatan
      FOR ALL ENTRIES IN wa_gab
      WHERE kd_kec IN so_kec AND
            kd_kab = wa_gab-kd_kab.
  ENDIF.

  IF gi_gab NE ''.
    SELECT INTO CORRESPONDING FIELDS OF TABLE gi_kab
    FROM zappmm_kabupaten
    FOR ALL ENTRIES IN gi_gab
      WHERE kd_kab = gi_gab-kd_kab.
  ENDIF.
ENDFORM.

FORM: fm_process_data.
  LOOP AT wa_gab.
    CONCATENATE 'KABUPATEN: ' wa_gab-kd_kab '-' wa_gab-nm_kab INTO kab
SEPARATED BY ''.
  ENDLOOP.

  LOOP AT gi_gab.
    READ TABLE gi_kab WITH KEY kd_kab = gi_gab-kd_kab.
    IF sy-subrc = 0.
      gi_gab-nm_kab = gi_kab-nm_kab.
    ENDIF.
    MODIFY gi_gab.
  ENDLOOP.
ENDFORM.

FORM : fm_display_data.
  LOOP AT wa_gab.
    WRITE : / kab.
    FORMAT COLOR COL_HEADING INTENSIFIED.
    WRITE : / sy-uline(75).
    WRITE: /'|', (12) 'KD Kecamatan' CENTERED,
            '|', (30) 'Nama Kecamatan' CENTERED,
            '|', (10) 'Created On' CENTERED,
            '|', (10) 'Created By' CENTERED,
            '|'.
    WRITE : / sy-uline(75).
    FORMAT COLOR OFF.
    CLEAR counter.
    LOOP AT gi_gab WHERE kd_kab = wa_gab-kd_kab.
      ADD TO counter.
      WRITE : / '|' ,(12) gi_gab-kd_kec,
                '|' ,(30) gi_gab-nm_kec,
                '|' ,(10) gi_gab-ersda,
                '|' ,(10) gi_gab-ernam,
                '|'.
    ENDLOOP.
    FORMAT COLOR COL_TOTAL INTENSIFIED.
    WRITE : / sy-uline(75).
    WRITE : / '| Total : ', (62)counter LEFT-JUSTIFIED,'|'.
    WRITE : / sy-uline(75).
    format color off.
    write: / .
  ENDLOOP.
ENDFORM.

4. Kemudian tekan Activiete atau F8
5. Tekan Enter.


6. Jalankan program dengan cara tekan F8 lalu Execute program (F8).


Tidak ada komentar:

Posting Komentar