Vous êtes sur la page 1sur 6

Program mengubah dengan checkbox

REPORT ZLM_ALV_EXAM.

INCLUDE zlm_show_mat_top.
INCLUDE zlm_show_mat_f01.
INCLUDE zlm_show_mat_output.

START-OF-SELECTION.
PERFORM F_GET_DATA.
PERFORM f_process_data.
PERFORM F_SHOW_ALV.

Include show mat top

*&---------------------------------------------------------------------*
*& Include          ZLM_SHOW_MAT_TOP
*&---------------------------------------------------------------------*

TABLES : ZLM_MATERIAL_H.

TYPES: BEGIN OF ty_materialh,
         checkbox(1),
         matnr        TYPE ZLM_MATERIAL_H-MATNR,
         matkl        TYPE ZLM_MATERIAL_H-matkl,
         mtart        TYPE ZLM_MATERIAL_H-mtart,
         uom          TYPE ZLM_MATERIAL_H-uom,
         quantity     TYPE ZLM_MATERIAL_H-quantity,
         description  TYPE ZLM_MATERIAL_H-description,
         created_on   TYPE ZLM_MATERIAL_H-created_on,
         created_time TYPE ZLM_MATERIAL_H-created_time,
         created_by   TYPE ZLM_MATERIAL_H-created_by,
       END OF ty_materialh.

DATA: it_struc TYPE TABLE OF ty_materialh,
      wa_struc TYPE ty_materialh.

DATA: it_data TYPE TABLE OF ZLM_MATERIAL_H,
      wa_data TYPE ZLM_MATERIAL_H.

DATA: it_fcat TYPE slis_t_fieldcat_alv,
      wa_fcat LIKE LINE OF it_fcat.

DATA: lv_count TYPE i,
      linecount TYPE c.

SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-002.
PARAMETERS : p_matnum LIKE ZLM_MATERIAL_H-matnr.
SELECTION-SCREEN END OF BLOCK b1.
Include show mat f01

*&---------------------------------------------------------------------*
*& Include          ZLM_SHOW_MAT_F01
*&---------------------------------------------------------------------*

form f_get_data.
    IF p_matnum IS INITIAL.
*    SELECT MATNR MATKL MTART UOM QUANTITY DESCRIPTION CREATED_ON CREATED_TI
ME CREATED_BY FROM ZLM_MATERIAL_H INTO CORRESPONDING FIELDS OF TABLE IT_STRU
C.
    SELECT * FROM ZLM_MATERIAL_H INTO CORRESPONDING FIELDS OF TABLE IT_STRUC.
*    SELECT * FROM ZLM_MATERIAL_H INTO CORRESPONDING FIELDS OF TABLE IT_DAT
A.
    DESCRIBE TABLE it_struc LINES lv_count.
    linecount = lv_count.
  ELSE.
    SELECT * FROM ZLM_MATERIAL_H INTO CORRESPONDING FIELDS OF TABLE IT_STRUC W
HERE matnr EQ p_matnum.
*    SELECT * FROM ZLM_MATERIAL_H INTO CORRESPONDING FIELDS OF TABLE IT_DAT
A WHERE matnr eq p_matnum.
    DESCRIBE TABLE it_struc LINES lv_count.
    linecount = lv_count.
  ENDIF.
endform.

form f_process_data.

ENDFORM.

FORM user_command USING r_ucomm TYPE sy-ucomm
      r_selfield TYPE slis_selfield.
  DATA : ld_grid TYPE REF TO cl_gui_alv_grid.

  IF ld_grid IS INITIAL.
    CALL FUNCTION 'GET_GLOBALS_FROM_SLVC_FULLSCR'
      IMPORTING
        e_grid = ld_grid.
  ENDIF.
  IF NOT ld_grid IS INITIAL.
    CALL METHOD ld_grid->check_changed_data.
  ENDIF.

  CASE r_ucomm.

*nama ikon
    WHEN '&UBAH'.
      LOOP AT IT_STRUC INTO WA_STRUC WHERE checkbox = 'X'.
        WA_DATA-matnr = WA_STRUC-matnr.
        WA_DATA-matkl = WA_STRUC-matkl.
        WA_DATA-mtart = WA_STRUC-mtart.
        WA_DATA-uom = WA_STRUC-uom.
        WA_DATA-quantity = WA_STRUC-quantity.
        WA_DATA-description = WA_STRUC-description.
        WA_DATA-created_on = sy-datum.
        WA_DATA-created_time = sy-uzeit.
        WA_DATA-created_by = sy-uname.
        append WA_DATA to IT_DATA.
        clear WA_DATA.
      ENDLOOP.

      MODIFY ZLM_MATERIAL_H FROM TABLE IT_DATA.
      COMMIT WORK AND WAIT.

      IF SY-SUBRC EQ 0.
        MESSAGE 'DATA BERHASIL DIUBAH' TYPE 'I'.
      ELSE.
        MESSAGE 'DATA GAGAL DIUBAH' TYPE 'I'.
      ENDIF.

   WHEN '&DELETE'.
      LOOP AT IT_STRUC INTO WA_STRUC WHERE checkbox = 'X'.
        WA_DATA-matnr = WA_STRUC-matnr.
*        WA_DATA-matkl = WA_STRUC-matkl.
*        WA_DATA-mtart = WA_STRUC-mtart.
*        WA_DATA-uom = WA_STRUC-uom.
*        WA_DATA-quantity = WA_STRUC-quantity.
*        WA_DATA-description = WA_STRUC-description.
*        WA_DATA-created_on = sy-datum.
*        WA_DATA-created_time = sy-uzeit.
*        WA_DATA-created_by = sy-uname.
        DELETE FROM  ZLM_MATERIAL_H WHERE MATNR = WA_DATA-MATNR.
*        append WA_DATA to IT_DATA.
        clear WA_DATA.
      ENDLOOP.

     IF SY-SUBRC EQ 0.
        MESSAGE 'DATA BERHASIL DIHAPUS' TYPE 'I'.
      ELSE.
        MESSAGE 'DATA GAGAL HAPUS' TYPE 'I'.
      ENDIF.
  endcase.

  r_selfield-refresh = 'X'.
ENDFORM.
Include show mat output

*&---------------------------------------------------------------------*
*& Include          ZLM_SHOW_MAT_OUTPUT
*&---------------------------------------------------------------------*

form f_show_alv.
  IF IT_STRUC IS NOT INITIAL.
    PERFORM build_fieldcatalog.
    PERFORM display_alv_report.
  ELSE.
    MESSAGE 'Data Not Found' TYPE 'I'.
  ENDIF.
endform.

FORM build_fieldcatalog.

  wa_fcat-fieldname = 'CHECKBOX'.
  wa_fcat-seltext_m = 'Checkbox'.
  wa_fcat-checkbox = 'X'.
  wa_fcat-edit         = 'X'.
  APPEND wa_fcat TO it_fcat.
  CLEAR wa_fcat.

  wa_fcat-fieldname   = 'MATNR'.
  wa_fcat-seltext_m   = 'Material Number'.
  wa_fcat-col_pos     = 0.
  APPEND wa_fcat TO it_fcat.
  CLEAR  wa_fcat.

  wa_fcat-fieldname   = 'MATKL'.
  wa_fcat-seltext_m   = 'Material Group'.
  wa_fcat-col_pos     = 1.
  wa_fcat-edit = 'X'.
  APPEND wa_fcat TO it_fcat.
  CLEAR  wa_fcat.

  wa_fcat-fieldname   = 'MTART'.
  wa_fcat-seltext_m   = 'Material Type'.
  wa_fcat-col_pos     = 2.
  wa_fcat-edit = 'X'.
  APPEND wa_fcat TO it_fcat.
  CLEAR  wa_fcat.

  wa_fcat-fieldname   = 'UOM'.
  wa_fcat-seltext_m   = 'Unit Of Measure'.
  wa_fcat-col_pos     = 3.
  wa_fcat-outputlen   = 20.
  wa_fcat-edit = 'X'.
  APPEND wa_fcat TO it_fcat.
  CLEAR  wa_fcat.

  wa_fcat-fieldname   = 'QUANTITY'.
  wa_fcat-seltext_m   = 'Quantity'.
  wa_fcat-qfieldname = 'UOM'.
  wa_fcat-col_pos     = 4.
  wa_fcat-outputlen   = 20.
  wa_fcat-edit = 'X'.

  APPEND wa_fcat TO it_fcat.
  CLEAR  wa_fcat.

  wa_fcat-fieldname   = 'DESCRIPTION'.
  wa_fcat-seltext_m   = 'Description'.
  wa_fcat-col_pos     = 5.
  wa_fcat-outputlen   = 20.
  wa_fcat-edit = 'X'.
  APPEND wa_fcat TO it_fcat.
  CLEAR  wa_fcat.

  wa_fcat-fieldname   = 'CREATED_ON'.
  wa_fcat-seltext_m   = 'Created On'.
  wa_fcat-col_pos     = 6.
  wa_fcat-outputlen   = 20.
  APPEND wa_fcat TO it_fcat.
  CLEAR  wa_fcat.

  wa_fcat-fieldname   = 'CREATED_TIME'.
  wa_fcat-seltext_m   = 'Created Time'.
  wa_fcat-col_pos     = 7.
  wa_fcat-outputlen   = 20.
  APPEND wa_fcat TO it_fcat.
  CLEAR  wa_fcat.

  wa_fcat-fieldname   = 'CREATED_BY'.
  wa_fcat-seltext_m   = 'Created By'.
  wa_fcat-col_pos     = 8.
  wa_fcat-outputlen   = 20.
  APPEND wa_fcat TO it_fcat.
  CLEAR  wa_fcat.

endform.

form display_alv_report.
  CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
    EXPORTING
      i_callback_program      = sy-repid
     I_CALLBACK_PF_STATUS_SET          = 'SUB_PF_STATUS'
      i_callback_user_command = 'USER_COMMAND'
      i_callback_top_of_page  = 'TOP-OF-PAGE'
    TABLES
      t_outtab                = it_struc
    .
  IF sy-subrc <> 0.
* Implement suitable error handling here
  ENDIF.
endform.

FORM top-of-page.
*ALV Header declarations
  DATA: t_header      TYPE slis_t_listheader,
        wa_header     TYPE slis_listheader,
        t_line        LIKE wa_header-info,
        ld_lines      TYPE i,
        ld_linesc(10) TYPE c.

* Title
  wa_header-typ  = 'H'.
  wa_header-info = 'Report KRRS'.
  APPEND wa_header TO t_header.
  CLEAR wa_header.

* Information
  wa_header-typ  = 'A'.
  CONCATENATE 'Jumlah Record:' linecount INTO wa_header-info SEPARATED BY spac
e.
  APPEND wa_header TO t_header.
  CLEAR: wa_header.

  CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
    EXPORTING
      it_list_commentary = t_header.
ENDFORM.                    "top-of-page

FORM sub_pf_status USING rt_extab TYPE slis_t_extab..
  SET PF-STATUS 'STANDARD'.
ENDFORM.                    "sub_pf_status

Vous aimerez peut-être aussi