Jumat, 29 April 2011

Create Simple Smartforms

1. Buka t-code SMARTFORMS.
2. Buat program baru dengan nama ZSMFORMS lalu Create.




2.Double klick pada Form Interface ( Global Setting ).
3.Pada Tab Tables Isi Parameter Name dengan "GI_HEADER" Type Assigment "Like" dan Associated Type dengan "YST_VBAP". YSTR_VBAP adalah nama Structure Table.


4. Double klik Global definition.
5. Pada tab Global Data isikan Variable seperti berikut:
    GW_VBAP - LIKE - YSTR_VBAP
    NETW         - TYPE - I.


6. Pada Tree MAIN Main Window klik kanan lalu buat Loop.


7. Pada Tab data isikan Internal Table dengan "GW_VBAP" INTO "GT_VBAP"


8.Create Text dengan cara klik kanan pada LOOP


9. Klik Menupada Menu Bar.
10. Pada Tree menu Klik Global Data -> GW_VBAP.
11. Drag semua ke dalam Text seperti pada Gambar kecuali Netwr dan Nepr.
12. Drag NETW.


13. Create Program Lines pada Menu LOOP1.


14. Ketikkan kode berikut ke Program Lines tersebut.


15. Aktifkan .
16. Buka t-code se38 lalu buat program baru dengan nama "ZREPORT".
17. Ketikkan kode program seperti di bawah ini:


  *&-------------------------------------------*
*& Report  ZREPORT
*&
*&---------------------------------------------*
*&
*&
*&---------------------------------------------*

REPORT  ZREPORT.
tables : vbap.
types begin of ty_vbap,
        vbeln type vbeln_va,
        posnr type posnr_va,
        matnr type matnr,
        matkl type matkl,
        meins type meins,
        netwr type netwr_ap,
        netpr type netpr,
        waerk type waerk,
  end of ty_vbap.

data : gi_vbap type standard table of ty_vbap with header line.

selection-screen begin of block head1 with frame title text-101.
  select-options so_vbeln for vbap-vbeln.
selection-screen end of block head1.

start-of-selection.
  perform fm_collect_data.
  perform fm_display_data.
end-of-selection.

form : fm_collect_data.
  select vbeln posnr matnr matkl meins netwr waerk netpr
    from vbap
    into corresponding fields of table gi_vbap
    where vbeln in so_vbeln.

  IF gi_vbap[] IS INITIAL.
    MESSAGE 'Data tidak ditemukan..!!' TYPE 'S' DISPLAY LIKE 'E'.
    STOP.
  ENDIF. 
endform.

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 = 'ZSMFORMS'.
  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

   TABLES
      gt_vbap          = gi_vbap "--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.

18. Aktifkan lalu Execute program.



Lalu bagaimana jika kita ingin membuat group berdasarkan VBELN?
1. Double klik pada LOOP lalu isi Field Name dengan VBELN dan centang Event on Short Begin seperti pada gambar.


2. Buat Text baru dari menu Vbeln Event on Sort Begin.


3. Drag VBELN ke dalam Text seperti pada gambar.


4.  Double klik pada TEXT1 lalu hapus &GW_VBAP-VBELN& dengan cara klik.


5. Aktifkan program lalu jalankan program "ZREPORT" melalui t-code se38.


Sekarang kita akan buat total NETWR per VBELN, langkah-langkahnya adalah sebagai berikut:
1. Buat variable baru dengan nama W_SUM dengan type I di Global Deffinitions.


2. Double klik pada LOOP1 New Loop1 lalu isi Field Name lagi dengan VBELN lalu centang Event on Sort End..


3.  Double klik pada %CODE1 New Program Lines 1 lalu tambah Output Parameters dengan W_SUM.
4. Tambahkan source code "w_sum = w_sum + gw_vbap-netwr".


5. Create Text pada VBELN Event on Sort End.


6. Drag W_SUM ke dalam Text.


7.  Buat Program Line pada VBELN Event on Sort End dan letakkan di bawah %TEXT2.


8.Tambahkan W_SUM pada Input Paremeters dan Output Parameters.
9.Ketikkan source code "clear w_sum".


10. Aktifkan program lalu jalankan program "ZREPORT" di se38.




Tidak ada komentar:

Posting Komentar