Skip to main content

SAP ABAP - Get Selected Rows ALV Grid


*&---------------------------------------------------------------------*
*& Report ZALVGRID
*&---------------------------------------------------------------------*
*&
*&---------------------------------------------------------------------*
REPORT ZALVGRID.

TABLES ekko.

TYPES :
  
BEGIN OF t_ekko,
    ebeln 
TYPE ebeln,
    bukrs 
TYPE ekko-bukrs,
    bstyp 
TYPE ekko-bstyp,
    bsart 
TYPE ekko-bsart,
    aedat 
TYPE ekko-aedat,
    ernam 
TYPE ekko-ernam,
    bedat 
TYPE ekko-bedat,
    lifnr 
TYPE ekko-lifnr,
    name1 
TYPE lfa1-name1,
    snote 
TYPE string,
  
END OF t_ekko.

DATA :
  it_ekko 
TYPE TABLE OF t_ekko,
  wa_ekko 
TYPE t_ekko.

DATA:
  ob_cust 
TYPE REF TO cl_gui_custom_container,
  ob_grid 
TYPE REF TO cl_gui_alv_grid,
  ok_code 
TYPE sy-ucomm.

DATA:
  is_varnt 
LIKE disvariant,
  is_lyout 
TYPE lvc_s_layo,
  is_print 
TYPE lvc_s_prnt.

DATA:
  it_fcatl 
TYPE lvc_t_fcat,          "----- For Field Catalog 1 ALV -----
  wa_fcatl 
LIKE LINE OF it_fcatl,
  it_excld 
TYPE ui_functions.

DATAvi_fclen TYPE i,
      vs_fcfld 
TYPE string.

DATAindex_rows TYPE lvc_t_row,
      
index      LIKE LINE OF index_rows.

SELECT-OPTIONS :
  s_ebeln 
FOR ekko-ebeln,
  s_aedat 
FOR ekko-aedat,
  s_lifnr 
FOR ekko-lifnr.

START-OF-SELECTION.
  
PERFORM f_getdata.
  
CALL SCREEN 9000.

FORM f_getdata.
  
REFRESH it_ekko.
  
SELECT
    ekko
~ebeln
    ekko
~bukrs
    ekko
~bstyp
    ekko
~bsart
    ekko
~aedat
    ekko
~ernam
    ekko
~bedat
    ekko
~lifnr
    lfa1
~name1
    
FROM ekko INNER JOIN lfa1
    
ON ekko~lifnr lfa1~lifnr
    
INTO CORRESPONDING FIELDS OF TABLE it_ekko
      
WHERE ekko~ebeln IN s_ebeln AND ekko~aedat IN s_aedat
      
AND ekko~lifnr IN s_lifnr AND ekko~bstyp 'F' AND ekko~loekz ''.
ENDFORM.
*&---------------------------------------------------------------------*
*& Module STATUS_9000 OUTPUT
*&---------------------------------------------------------------------*
*&
*&---------------------------------------------------------------------*
MODULE status_9000 OUTPUT.
  
SET PF-STATUS 'PF900'.
  
SET TITLEBAR  'TL900'.

  
PERFORM f_inital.
ENDMODULE.
*&---------------------------------------------------------------------*
*&      Module  USER_COMMAND_9000  INPUT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
MODULE user_command_9000 INPUT.
  
CASE sy-ucomm.
    
WHEN 'BACK' OR 'EXIT' OR 'CNCL'.
      
LEAVE TO SCREEN 0.
    
WHEN 'CHANGE'.
      
IF ekko-bedat IS NOT INITIAL.
        
CLEAR index_rows.  REFRESH index_rows.
        
CALL METHOD ob_grid->get_selected_rows
          
IMPORTING
            et_index_rows 
index_rows.

        
IF index_rows[] IS INITIAL.
          
MESSAGE 'No data selected' TYPE 'S' DISPLAY LIKE 'E'.
        
ELSE.
          
LOOP AT index_rows INTO index.
            
CLEAR wa_ekko.
            
READ TABLE it_ekko INTO wa_ekko INDEX index-index.
            
IF sy-subrc 0.
              
CLEAR wa_ekko-bedat.
              wa_ekko
-bedat ekko-bedat.
              wa_ekko
-snote 'Document date updated'.
              
MODIFY it_ekko INDEX index-index FROM wa_ekko
                
TRANSPORTING bedat snote"WHERE ebeln = wa_ekko-ebeln.

              
UPDATE ekko SET bedat ekko-bedat
                
WHERE ebeln wa_ekko-ebeln.
              
COMMIT WORK AND WAIT.
            
ENDIF.
          
ENDLOOP.
        
ENDIF.
      
ELSE.
        
MESSAGE 'Please input document date' TYPE 'I' DISPLAY LIKE 'E'.
      
ENDIF.

    
WHEN 'SALL'.
    
WHEN 'DALL'.
  
ENDCASE.
ENDMODULE.

FORM f_inital.

  
CHECK ok_code <> 'EXIT'.
  
IF ob_cust IS INITIAL.
    
CREATE OBJECT ob_cust
      
EXPORTING
        container_name 
'CONTAINER'.

    
CREATE OBJECT ob_grid
      
EXPORTING
        i_parent 
ob_cust.
  
ENDIF.

  
PERFORM to_varnt.
  
PERFORM to_lyout.
  
PERFORM f_fieldcat.
  
PERFORM to_excld CHANGING it_excld.
  
PERFORM alv_displ_out.

  
CALL METHOD ob_grid->refresh_table_display.

ENDFORM.

*----------------------------------------------------------------------*
FORM to_varnt .
  
CLEAR is_varnt.
  is_varnt
-report     sy-repid.
  is_varnt
-username   sy-uname.
ENDFORM.

*----------------------------------------------------------------------*
FORM to_lyout .
  
CLEAR is_lyout.
  is_lyout
-sel_mode     'D'.
  is_lyout
-zebra        'X'.
  is_lyout
-cwidth_opt   'X'.
  is_lyout
-no_rowins    'X'.
  is_lyout
-stylefname   'CSTYL'.
  is_lyout
-info_fname   'CLINE'.
  is_lyout
-ctab_fname   'CCELL'.
ENDFORM.

FORM f_fieldcat.

  
REFRESH it_fcatl.

  
PERFORM alv_field_cat "NOUT ICON NSUM DSUM EDIT
    
USING :
*          ' XX  ' 1   5   'ICONS'       ''          ''        ''  ''      'Status',
          
'  X  ' 1 30  'EBELN'       ''      ''            ''  ''      'Purchasing Doc',
          
'  X  ' 2 30  'BUKRS'       ''      ''            ''  ''      'Company Code',
          
'  X  ' 3 30  'BSTYP'       ''      ''            ''  ''      'Doc. Category',
          
'  X  ' 4 30  'BSART'       ''      ''            ''  ''      'Document Type',
          
'  X  ' 5 30  'AEDAT'       ''      ''            ''  ''      'Create On',
          
'  X  ' 6 30  'ERNAM'       ''      ''            ''  ''      'Create By',
          
'  X  ' 7 30  'BEDAT'       ''      ''            ''  ''      'Document Date',
          
'  X  ' 8 30  'LIFNR'       ''      ''            ''  ''      'Vendor',
          
'  X  ' 9 30  'NAME1'       ''      ''            ''  ''      'Vendor Name',
          
'  X  ' 10 30  'SNOTE'       ''      ''            ''  ''      'Notes'.



ENDFORM.

FORM alv_field_cat USING p_fset p_cpos p_olen p_fild p_rtab p_rfld p_ftyp p_qcif p_text.
  
CLEAR wa_fcatl.

  wa_fcatl
-no_out           p_fset+0(1).  "01
  wa_fcatl
-icon             p_fset+1(1).  "02
  wa_fcatl
-no_sum           p_fset+2(1).  "03
  wa_fcatl
-do_sum           p_fset+3(1).  "04
  wa_fcatl
-edit             p_fset+4(1).  "05

  
IF p_olen > 2.
    wa_fcatl
-outputlen      p_olen.       "06
  
ENDIF.

  vs_fcfld 
p_fild.
  
TRANSLATE vs_fcfld TO UPPER CASE.
  wa_fcatl
-fieldname        vs_fcfld.     "07

  vs_fcfld 
p_rfld.
  
TRANSLATE vs_fcfld TO UPPER CASE.
  wa_fcatl
-ref_field        vs_fcfld.     "09

  vs_fcfld 
p_rtab.
  
TRANSLATE vs_fcfld TO UPPER CASE.
  wa_fcatl
-ref_table        vs_fcfld.     "08

  vs_fcfld 
p_qcif.
  
TRANSLATE vs_fcfld TO UPPER CASE.

  
IF p_ftyp 'C'.
    wa_fcatl
-cfieldname     vs_fcfld.   "10
  
ELSEIF p_ftyp 'Q'.
    wa_fcatl
-qfieldname     vs_fcfld.   "11
  
ENDIF.

  vi_fclen 
strlenp_text ).
  
IF vi_fclen > 10.
    wa_fcatl
-scrtext_l      p_text.
  
ELSE.
    wa_fcatl
-scrtext_m      p_text.
    wa_fcatl
-scrtext_s      p_text.
  
ENDIF.

  wa_fcatl
-col_pos          p_cpos.

  
APPEND wa_fcatl TO it_fcatl.
ENDFORM.

FORM alv_displ_out.
  
CALL METHOD ob_grid->set_table_for_first_display
    
EXPORTING
      is_variant                    
is_varnt      
      i_save                        
'A'           
      i_default                     
'X'           
      is_layout                     
is_lyout      
      is_print                      
is_print      
      it_toolbar_excluding          
it_excld
    
CHANGING
      it_outtab                     
it_ekko
      it_fieldcatalog               
it_fcatl      
    
EXCEPTIONS
      invalid_parameter_combination 
1
      program_error                 
2
      too_many_lines                
3
      
OTHERS                        4.
ENDFORM.

FORM to_excld CHANGING pt_exclude TYPE ui_functions.
  
DATA ls_exclude TYPE ui_func.
  ls_exclude 
cl_gui_alv_grid=>mc_fc_check.
  
APPEND ls_exclude TO pt_exclude.
  ls_exclude 
cl_gui_alv_grid=>mc_fc_refresh.
  
APPEND ls_exclude TO pt_exclude.
  ls_exclude 
cl_gui_alv_grid=>mc_fc_loc_cut.
  
APPEND ls_exclude TO pt_exclude.
  ls_exclude 
cl_gui_alv_grid=>mc_fc_loc_copy.
  
APPEND ls_exclude TO pt_exclude.
  ls_exclude 
cl_gui_alv_grid=>mc_fc_loc_paste.
  
APPEND ls_exclude TO pt_exclude.
  ls_exclude 
cl_gui_alv_grid=>mc_fc_loc_paste_new_row.
  
APPEND ls_exclude TO pt_exclude.
  ls_exclude 
cl_gui_alv_grid=>mc_fc_loc_undo.
  
APPEND ls_exclude TO pt_exclude.
  ls_exclude 
cl_gui_alv_grid=>mc_mb_sum.
  
APPEND ls_exclude TO pt_exclude.
  ls_exclude 
cl_gui_alv_grid=>mc_mb_subtot.
  
APPEND ls_exclude TO pt_exclude.
  ls_exclude 
cl_gui_alv_grid=>mc_fc_print.
  
APPEND ls_exclude TO pt_exclude.
  ls_exclude 
cl_gui_alv_grid=>mc_fc_graph.
  
APPEND ls_exclude TO pt_exclude.
  ls_exclude 
cl_gui_alv_grid=>mc_fc_info.
  
APPEND ls_exclude TO pt_exclude.
ENDFORM.

Comments

Popular posts from this blog

PHP MySql CRUD Dengan Konsep MVC

Pada postingan kali ini saya akan sharing cara membuat CRUD dengan php menggunakan konsep MVC, ok langsung saja buka code editor (saya menggunakan sublime text) dan buat folder baru dengan nama phpmvc didalam folder htdocs kalian dan tambah folder seperti berikut :  Setelah itu kita siapkan database di mysql, buat database dengan nama phpmvc dan tablenya seperti gambar berikut : tambahkan file config.php didalam folder app/config : <?php define('BASEURL', 'http://localhost:8181/phpmvc/public'); define('DB_HOST', 'localhost'); define('DB_USER', 'root'); define('DB_PASS', ''); define('DB_NAME', 'phpmvc'); kemudian tambahkan 3 file controller didalam folder app/controllers, yaitu Home, About, dan Mahasiswa : Home.php <?php class Home extends Controller { public function index() { $data['nama'] = $this->model('User_model')->getUser()...

Cara Sederhana Multi Insert Data Dengan PHP - MySQL

Pada postingan kali ini saya akan share cara melakukan insert lebih dari satu data dengan menggunaka PHP- Jquery dan MySQL. Pertama buat database di MySQL dan table, disini saya membuat database dengan nama db_latihan dan table dengan nama t_barang dengan struktur table seperti berikut : Setelah membuat database dan table selanjutnya membuat project PHP, project PHP nya saya buat dengan nama multi-insert, lalu didalam folder ini saya membuat dua file yaitu index.php dan insert.php . Source code index.php seperti berikut : <! doctype   html > < html   lang = "en" >    < head >      <!-- Required meta tags -->      < meta   charset = "utf-8" >      < meta   name = "viewport"   content = "width=device-width, initial-scale=1" >      <!-- Bootstrap CSS -->      < link ...

Laravel - Sistem Informasi Perpustakaan Sederhana Laravel

Postingan kali saya akan sharing membuat aplikasi perpustakaan sederhana menggunakan laravel 5.8, dimana terdapan menu Anggota, Kategori Buku, Daftar Buku dan Transaksi (Peminjaman/Pengembalian Buku). ok langsung saja kita buat project laravel dengan nama perpus : composer create-project --prefer-dist laravel/laravel perpus setelah create project laravel-nya selesai kita buat database melalui localhost/phpmyadmin dengan nama db_perpus, lalu kita buka project laravel dengan code editor disini saya menggunakan visual studio code. Setelah project kita buka dengan code editor, pertama kita atur koneksi database yang ada di file .env, kita rubah menjadi seperti berikut : note : untuk db_username dan db_password di sesuiakan dengan configurasi masing-masing. Selanjutnya kita tambahkan 4 buah data migration yaitu : table_anggota, table_kategori, table_buku, table_transaksi, kita buka terminal dan jalankan command berikut :  php artisan make:migration crea...