Report (601)

<< Click to Display Table of Contents >>

Navigation:  All About ABAP Technique > Indonesia > ABAP Report > SmartForms >

Report (601)

Objektif

Membuat Form

Membuat Report

Hasil

Kode Sintak

Kode Transaksi

SMARTFORMS

SE38 - ABAP Editor

Tabel

MARA - General Material Data (Data Material Umum)

Support

 

Kontributor


 

 

Membuat Form

1. Buat Form Baru

Nama Form                : YFO_PRACTICE_101

Meaning                : Form List of Master Material

2. Klik dua kali pada menu "Form Interface"

3. Buka Tab "Import" dan tambahkan parameter import seperti gambar dibawah

abap_tutorial0070

 

4. Buka Tab "Tables" dan tambahkan parameter tables seperti gambar dibawah

abap_tutorial0071

Cara membuat : YST_HEADER_101, YST_RANGE_MATKL, YST_RANGE_MATNR

 

5. Klik dua kali pada menu "Global Definition"

6. Buka Tab "Global Data" dan tambahkan parameter seperti gambar dibawah

abap_tutorial0072

 

7. Klik dua kali pada menu "Main"

8. Buka Tab "Output Options" dan atur nilai "Possition and Size" seperti gambar dibawah

abap_tutorial0095

 

9. Klik kanan pada menu "Main" dan klik "Create > Table" untuk membuat Table (List Data)

abap_tutorial0078

 

10. Klik tombol "abap_tutorial0079" pada Tab "Table" untuk mendefinisikan kolom-kolom yang akan ditampilkan

11. Isi value seperti gambar dibawah

abap_tutorial0080

Catatan : Total nilai pada semua kolom tidak boleh lebih dari "Table Width"

 

12. Tekan tombol "abap_tutorial0081" untuk menambahkan kolom

13. Tambahkan nilai pada kolom nomer 6 dengan nilai seperti gambar dibawah

abap_tutorial0082

 

14. Tekan tombol "abap_tutorial0096" untuk kembali ke menu awal

15. Tekan tombol "abap_tutorial0097" untuk mengatur pola garis pada List Data

abap_tutorial0098

 

16. Tekan tombol "abap_tutorial0099"

abap_tutorial0100

 

17. Pilih pattern ke dua dari kiri atas, agar semua kotak terisi pada setiap baris

abap_tutorial0101

 

18. Klik Tab "Data" dan masukkan nilai seperti gambar dibawah

abap_tutorial0083

 

19. Klik kanan pada menu "Header" dan klik "Create > Table Line" untuk membuat header pada List Data

abap_tutorial0084

 

20. Pilih Line Type "%LTYPE1" dan otomatis kolom (Cell) akan terbentuk

abap_tutorial0085

Catatan : 1 CELL mewakili 1 kolom

 

21. Klik kanan pada menu "%CELL1" dan klik "Create > Text" untuk membuat title header pada kolom

abap_tutorial0086

 

22. Buka Tab "General Attribute" dan isi text "Mat. Group" seperti gambar dibawah

abap_tutorial0087

 

23. Lakukan ulang langkah 15 dan 16 untuk "%CELL2" hingga "%CELL6" dengan text dibawah ini

"%CELL2" = Mat. No.

"%CELL3" = Description

"%CELL4" = Old Mat. No.

"%CELL5" = Base Unit of Measure

"%CELL6" = Measure

 

Catatan : Jangan lupa tekan tombol "abap_tutorial0019" setiap satu proses panjang

 

24. Klik kanan pada menu "Main Area" dan klik "Create > Table Line" untuk membuat Baris Data

abap_tutorial0088

 

25. Pilih Line Type "%LTYPE1" dan otomatis kolom (Cell) akan terbentuk

abap_tutorial0089

 

26. Klik kanan pada menu "%CELL7" dan klik "Create > Text" untuk membuat baris data pada kolom

abap_tutorial0090

 

27. Buka Tab "General Attribute"

28. Klik menu " Utilities > Field List on/off" atau tekan "Ctrl + Shift + F4" untuk membuka List dari parameter-parameter yang di deklarasi pada langkah 3-7

abap_tutorial0091

 

29. Buka Field "Global Data > GW_HEADER"

abap_tutorial0092

 

30. Drag and Drop "MATKL" kedalam Tab "General Attributes"

abap_tutorial0093

 

31. Lakukan ulang langkah 21 dan 25 untuk "%CELL8" hingga "%CELL12" dengan text dibawah ini

"%CELL8"  = MATNR

"%CELL9"  = MAKTX

"%CELL10" = BISMT

"%CELL11" = MEINS

"%CELL12" = MSEHT

 

Catatan : Jangan lupa tekan tombol "abap_tutorial0019" setiap satu proses panjang

 

32. Tekan tombol "abap_tutorial0031" untuk melakukan Check sekaligus aktivasi Form

33. Tekan tombol "abap_tutorial0094" untuk melakukan test running Form

34. Selesai

 

 

Membuat Report

1.Buka SE38

2.Salin Program "YPRACTICE_101" menjadi "YPRACTICE_601"

3.Ubah Program "YPRACTICE_601"

4.Buka Goto > Attributes, dan ubah "Title" dengan"601 - Display List of Master Material"

5.Modifikasi Deklarasi Report

Sebelum

REPORT  ypractice_101.

 

Setelah

REPORT  ypractice_601.

 

6.Modifikasi "GLOBAL VARIABLE DECRALATION"

Sebelum

*----------------------------------------------------------------------*

*GLOBAL VARIABLE DECRALATION

*----------------------------------------------------------------------*

DEFINE macro_data_possition.

  if &1 = 'HEADER'.

    write :  /'|' no-gap,(9)  &2 centered,

              '|' no-gap,(18) &3 centered,

              '|' no-gap,(40) &4 centered,

              '|' no-gap,(18) &5 centered,

              '|' no-gap,(5)  &6 centered,

              '|' no-gap,(10) &7 centered,

              '|' no-gap.

  else.

    write :  /'|' no-gap,(9)  &2 centered,

              '|' no-gap,(18) &3 ,

              '|' no-gap,(40) &4 ,

              '|' no-gap,(18) &5 ,

              '|' no-gap,(5)  &6 ,

              '|' no-gap,(10) &7 ,

              '|' no-gap.

  endif.

END-OF-DEFINITION.

 

TYPES: BEGIN OF ty_header,

        matkl LIKE mara-matkl,  " Material Group

        matnr LIKE mara-matnr,  " Material Number

        maktx LIKE makt-maktx,  " Material Description

        bismt LIKE mara-bismt,  " Old material number

        meins LIKE mara-meins,  " Base Unit of Measure

        mseht LIKE t006a-mseht, " Unit of Measurement Text

      END OF ty_header.

 

DATA: gi_header TYPE STANDARD TABLE OF ty_header WITH HEADER LINE,

      gi_makt  LIKE STANDARD TABLE OF makt WITH HEADER LINE,

      gi_t006a LIKE STANDARD TABLE OF t006a WITH HEADER LINE.

 

DATA: gv_width TYPE i.  " Width of list

 

Setelah

*----------------------------------------------------------------------*

*GLOBAL VARIABLE DECRALATION

*----------------------------------------------------------------------*

DATA: gi_header LIKE STANDARD TABLE OF yst_header_101 WITH HEADER LINE,

      gi_makt  LIKE STANDARD TABLE OF makt WITH HEADER LINE,

      gi_t006a LIKE STANDARD TABLE OF t006a WITH HEADER LINE.

 

7.Modifikasi "Input Screen/Selection"

Sebelum

*----------------------------------------------------------------------*

*Input Screen/Selection

*----------------------------------------------------------------------*

SELECT-OPTIONS so_matkl FOR mara-matkl.

SELECT-OPTIONS so_matnr FOR mara-matnr.

 

Setelah

*----------------------------------------------------------------------*

*Input Screen/Selection

*----------------------------------------------------------------------*

SELECTION-SCREEN BEGIN OF BLOCK groupbox1 WITH FRAME TITLE text_101. "Declare Group Box 1

 

SELECTION-SCREEN BEGIN OF LINE.

SELECTION-SCREEN COMMENT 1(18) text_102 FOR FIELD so_matkl.

SELECT-OPTIONS so_matkl FOR mara-matkl.

SELECTION-SCREEN END OF LINE.

 

SELECTION-SCREEN BEGIN OF LINE.

SELECTION-SCREEN COMMENT 1(18) text_103 FOR FIELD so_matnr.

SELECT-OPTIONS so_matnr FOR mara-matnr.

SELECTION-SCREEN END OF LINE.

 

SELECTION-SCREEN END OF BLOCK groupbox1.                              "End Group Box 1

 

SELECTION-SCREEN BEGIN OF BLOCK groupbox2 WITH FRAME TITLE text_201. "Declare Group Box 2

 

SELECTION-SCREEN BEGIN OF LINE.

SELECTION-SCREEN COMMENT 1(18) text_202 FOR FIELD p_mrow.

PARAMETERS p_mrow TYPE i DEFAULT 1000 LENGTH 5.

SELECTION-SCREEN END OF LINE.

 

SELECTION-SCREEN END OF BLOCK groupbox2.                              "End Group Box 2

 

8.Buat kode Event dan Initialization, tuliskan setelah Input Screen Block

*----------------------------------------------------------------------*

*EVENT

*----------------------------------------------------------------------*

AT SELECTION-SCREEN OUTPUT.

  text_101 = 'Selection Parameter'.

  text_102 = 'Material Group'.

  text_103 = 'Material Number'.

 

  text_201 = 'Page Setup'.

  text_202 = 'Max. Row'.

 

*----------------------------------------------------------------------*

*INITIALIZATION

*----------------------------------------------------------------------*

INITIALIZATION.

 

9.Modifikasi "MAIN PROGRAM"

Sebelum

*======================================================================*

*MAIN PROGRAM

*Execute after Input Screen

*======================================================================*

START-OF-SELECTION.

  gv_width = 113.

  PERFORM fm_collect_data.

  PERFORM fm_process_data.

  PERFORM fm_display_data.

 

END-OF-SELECTION.

 

Sesudah

*======================================================================*

*MAIN PROGRAM

*Execute after Input Screen

*======================================================================*

START-OF-SELECTION.

  PERFORM fm_collect_data.

  PERFORM fm_process_data.

  PERFORM fm_display_data.

 

END-OF-SELECTION.

 

10.Modifikasi sub routine "fm_display_data"

Sebelum

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

*&      Form  fm_display_data

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

*       text

*---------------------------------------------------------------------*

FORM fm_display_data.

*  Membuat Teks header

  ULINE AT (gv_width).                    " Upper frame border

  FORMAT COLOR COL_HEADING INTENSIFIED.   " Title color

  macro_data_possition : 'HEADER' 'Mat. Group' 'Mat. No.' 'Description' 'Old Mat. No.' 'Base Unit' 'Measure'.

  WRITE: AT gv_width sy-vline.            " Right border

  ULINE AT (gv_width).                    " Line below titles

  FORMAT COLOR OFF.

 

*  Menampilkan Data ke Screen

  LOOP AT gi_header.

    macro_data_possition : 'CONTENT'

                           gi_header-matkl

                           gi_header-matnr

                           gi_header-maktx

                           gi_header-bismt

                           gi_header-meins

                           gi_header-mseht.

  ENDLOOP.

 

*  Akhir dari Line

  ULINE AT (gv_width).                    " Line below last data

 

ENDFORM.                    "fm_display_data

 

Setelah

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

*&      Form  fm_display_data

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

*       text

*---------------------------------------------------------------------*

FORM fm_display_data.

  DATA: lv_fmname TYPE rs38l_fnam,

        lw_options TYPE ssfcompop,

        lw_control TYPE ssfctrlop,

        lw_tdbool TYPE tdbool.

 

*  Get Function Module name base on SmartForms name

  lv_fmname = 'YFO_PRACTICE_101'.

  CALL FUNCTION 'SSF_FUNCTION_MODULE_NAME'

    EXPORTING

      formname           = lv_fmname

    IMPORTING

      fm_name            = lv_fmname

    EXCEPTIONS

      no_form            = 1

      no_function_module = 2

      OTHERS             = 3.

  IF sy-subrc <> 0.

    MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno

            WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.

  ENDIF.

 

*  Set Properties of Printer

  lw_tdbool = space.

 

  lw_control-no_dialog = ''.

  lw_control-preview = 'X'.

 

*  lw_options-tddest = nast-ldest.

  lw_options-tdimmed = 'X'.

  lw_options-tddelete = 'X'.

 

*  Call and Run SmartForms

  CALL FUNCTION lv_fmname

    EXPORTING

      control_parameters = lw_control

      output_options     = lw_options

      user_settings      = lw_tdbool

      

      gv_max_row         = p_mrow    "--User Define Form Interface

    TABLES

      gi_header          = gi_header "--User Define Form Interface

      gr_matkl           = so_matkl  "--User Define Form Interface

      gr_matnr           = so_matnr  "--User Define Form Interface

      

    EXCEPTIONS

      formatting_error   = 1      

      internal_error     = 2

      send_error         = 3

      user_canceled      = 4

      OTHERS             = 5.

 

  IF sy-subrc <> 0.

    MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno

            WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.

  ENDIF.

 

ENDFORM.                    "fm_display_data

 

11.Aktivasi dan Jalankan Program

12.Menbuat T-Code "YP601"

13.Selesai

 

 

Hasil

Seleksi Input

abap_tutorial0102

Output

abap_tutorial0103