Sunday, March 1, 2015

Custom container alv sap abap

REPORT  YJ_OOPS_ALV_CUSTOMER_CONTAINER.
DATA : o_cust TYPE REF TO cl_gui_custom_container,
        o_alv TYPE REF TO cl_gui_alv_grid,
        it_mara TYPE TABLE OF mara,
        wa_mara TYPE mara,
        ok_code TYPE sy-ucomm.
PARAMETERS  : p_matnr like mara-matnr.
START-OF-SELECTION.
   PERFORM data_fetch.
   CALL SCREEN 100.

FORM data_fetch .
   SELECT * FROM mara INTO TABLE it_mara WHERE matnr = p_matnr.
 ENDFORM.                    " DATA_FETCH


MODULE status_0100 OUTPUT.
   SET PF-STATUS 'STATUS'.
   SET TITLEBAR 'TITLE'.
ENDMODULE.                 " STATUS_0100  OUTPUT


MODULE user_command_0100 INPUT.
   CASE ok_code.
     WHEN 'BACK'  .
       LEAVE TO SCREEN 0.
     WHEN 'EXIT'.
       LEAVE PROGRAM.
   ENDCASE.
 ENDMODULE.                 " USER_COMMAND_0100  INPUT


MODULE display_alv OUTPUT.
  CREATE OBJECT o_cust
     EXPORTING
       container_name              = 'CUSTOM'.
    CREATE OBJECT o_alv
       EXPORTING
         i_parent          = O_CUST.
CALL METHOD o_alv->set_table_for_first_display
   EXPORTING
     i_structure_name              = 'MARA'
   CHANGING
     it_outtab                     = IT_mara.
ENDMODULE.                 " DISPLAY_ALV  OUTPUT

Include Editable ALV

*----------------------------------------------------------------------*
* Name of the program:                                                 *
*                                                                      *
* Purpose:  Include program for  Y_CLASSES_ALV_EDIT_BUTTON             *
*----------------------------------------------------------------------*
* Author  : JATIN SINGHAL                                              *
* Date    : 06.04.2014                                                 *
* Ref Doc :                                                            *
* TR No.  :                                                            *
*----------------------------------------------------------------------*
*----------------------------------------------------------------------*
* MODIFICATION HISTORY - Oldest on Top                                 *
*----------------------------------------------------------------------*
* Date             Transport No.     Person     Comments               *
*----------------------------------------------------------------------*
* mm/dd/yyyy        XXXXXXX         ********    ********               *
*                                                                      *
*----------------------------------------------------------------------*
DATA :  o_cust TYPE REF TO cl_gui_custom_container,
        o_alv TYPE REF TO cl_gui_alv_grid,
        it_mara TYPE TABLE OF mara,
        wa_mara TYPE mara,
        gt_fcat TYPE lvc_t_fcat,
        gs_layo TYPE lvc_s_layo,
        ok_code TYPE sy-ucomm.
DATA:   t_mat LIKE mara-matnr,
        variant TYPE disvariant,
        gv_matnr type matnr.
*DATA :  ty_toolbar      TYPE stb_button.
DATA :  e_object        TYPE REF TO cl_alv_event_toolbar_set,
        io_alv_toolbar  TYPE REF TO cl_alv_event_toolbar_set.
data:   i_modified TYPE STANDARD TABLE OF mara,"For getting modified rows
        w_modified TYPE mara.

CLASS lcl_event_handler DEFINITION .
  PUBLIC SECTION .
    METHODS:
*--Double-click control
    handle_double_click
    FOR EVENT double_click OF cl_gui_alv_grid
    IMPORTING e_row e_column es_row_no.
  PRIVATE SECTION.
ENDCLASS.                    "lcl_event_handler DEFINITION
DATA    gr_event_handler TYPE REF TO lcl_event_handler .
*----------------------------------------------------------------------*
*       CLASS lcl_event_handler IMPLEMENTATION
*----------------------------------------------------------------------*
CLASS lcl_event_handler IMPLEMENTATION .

*--Handle Double Click
  METHOD handle_double_click .
    PERFORM handle_double_click USING e_row e_column es_row_no .
  ENDMETHOD .                    "handle_double_click
ENDCLASS .                    "lcl_event_handler IMPLEMENTATION
CLASS cl_event_receiver DEFINITION.
 PUBLIC SECTION.
 METHODS handle_data_changed
  FOR EVENT data_changed OF cl_gui_alv_grid
        IMPORTING  e_ucomm.
* er_data_changed
* e_onf4
* e_onf4_before
* e_onf4_after
ENDCLASS. "cl_event_receiver DEFINITION
CLASS cl_event_receiver IMPLEMENTATION.
 METHOD handle_data_changed.
* BREAK-POINT.
*data:  lt_index type  LVC_T_ROW,
*       lt_row type LVC_T_ROID.
DATA i_selected_rows TYPE lvc_t_row.
o_alv->check_changed_data( ).

CALL METHOD o_alv->get_selected_rows
  IMPORTING
    et_index_rows = i_selected_rows.
*    et_row_no     = lt_row.
* WHAT FUNCTION CAUSED THIS EVENT???
ENDMETHOD. "handle_data_changed
ENDCLASS. "cl_event_receiver IMPLEMENTATION
*CLASS lcl_events_d0100 DEFINITION DEFERRED.


DATA: "event_receiver1  TYPE REF TO lcl_events_d0100,
      event_receiver TYPE REF TO cl_event_receiver,
      i_selected_rows TYPE lvc_t_row,                "Selected Rows
      w_selected_rows TYPE lvc_s_row,
      i_inserted_rows TYPE lvc_t_row,
      w_inserted_rows TYPE lvc_s_row,
      i_deleted_rows  TYPE lvc_t_row,
      W_deleted_rows  TYPE lvc_S_row.
*TYPE-POOLS : CNDP.
Select-OPTIONS  : s_matnr for gv_matnr.


*CLASS lcl_events_d0100 DEFINITION.
***
**  PUBLIC SECTION.
**
**  METHODS handle_toolbar_set
**    FOR EVENT toolbar OF cl_gui_alv_grid
**    IMPORTING
**      e_object
**      e_interactive."---user command on clicking a button
**
*  METHODS handle_user_command.
*      FOR EVENT user_command OF cl_gui_alv_grid
*      IMPORTING e_ucomm sender.
* ENDMETHOD.
*  ENDCLASS.                    "lcl_events_d0100 DEFINITIONTYPE-POOLS cndp.
*
*
*
*
*
*CLASS lcl_events_d0100 IMPLEMENTATION.
**
**  METHOD handle_toolbar_set.
**    ty_toolbar-function = 'SAVE'. "name of btn to  catch click
**    ty_toolbar-butn_type = 0.
**    ty_toolbar-text = 'SAVE'.
**    ty_toolbar-icon = 'icon_save_row'.
**    APPEND ty_toolbar    TO e_object->mt_toolbar.
**
**    ENDMETHOD.                    "handle_toolbar_set
**
*  METHOD handle_user_command.
**    DATA: wr_data_changed TYPE REF TO cl_alv_changed_data_protocol.
*
*         perform delete_row .
**        Perform save_database.
**        CALL METHOD o_alv->REFRESH_TABLE_DISPLAY.
**    ENDCASE.
**
** ENDMETHOD.                    "handle_user_commandENDCLASS.
**ENDCLASS.

BOM explode Report sap abap


TYPES: BEGIN OF ty_header,         
 matnr TYPE vbeln,         
 matkl TYPE kunag,
 werks TYPE werks_d,
 stlal type stalt,
 stktx TYPE stktx,
 bmeng type basmn,
        bmein type basme,
 datuv type datuv,
 andat type andat,
 annam type annam,
 aedat type aedat,
 aenam type aenam,
END OF ty_header.
TYPES: BEGIN OF ty_item,         
 posnr TYPE sposn,         
 postp TYPE postp,         
 idnrk TYPE idnrk,         
 menge TYPE kmpmg,
 meins type kmpme,
 potx1 type potx1,
 potx2 type potx2,
 sanin type sanin,
 erskz type erskz,
   
END OF ty_item. 
DATA: w_header TYPE ty_header.
DATA: t_header TYPE STANDARD TABLE OF ty_header.
DATA: w_item TYPE ty_item.
DATA: t_item TYPE STANDARD TABLE OF ty_item.
DATA : gs_top like cstmat.
DATA : gt_stb like table of stpox.
DATA : gv_matnr type matnr,
       gv_werks type werks_d.
SELECTION-SCREEN BEGIN OF BLOCK B1 WITH FRAME TITLE TEXT-001.
Select-options : s_matnr for gv_matnr,
                 s_werks for gv_werks.
Parameters : p_stlal type stlal default ='1',
             p_stlan type stlan default = '4'.
SELECTION-SCREEN BEGIN OF BLOCK B1.
  
START-OF-SELECTION.
Loop at s_matnr. 
PERFORM Validation tables i_stpov
                   using s_matnr-low
                         s_werks-low.
Endloop.
 
PERFORM build_fieldcat. 
PERFORM display_alv.

Form Validation tables itab
                using  matnr
                       werks.
call function 'CS_WHERE_USED_MAT'
       exporting
            datub                      = sy-datum
            datuv                      = sy-datum
            matnr                      = matnr
            postp                      = ' '
            stlan                      = ' '
            werks                      = werks
            stltp                      = ' '
       importing
            topmat                     = selpool  "Not Currently Used
       tables
            wultb                      = itab
*            equicat                    = eqpcat  "Not Currently Used
*           kndcat                     = kndcat  "Not Currently Used
*           matcat                     = matcat  "Not Currently Used
*            stdcat                     = stdcat  "Not Currently Used
*            tplcat                     = tplcat  "Not Currently Used
*            prjcat                     = prjcat  "Not Currently Used
       exceptions
            material_not_found         = 02.
If ne 02.

PERFORM get_data using s_matnr-low.
Endif.
Endform.

Form get_data using matnr.

CALL FUNCTION 'CS_BOM_EXPL_MAT_V2'
 EXPORTING
    AUMNG                       = 'X'
    CAPID                       = 'PP01'
    CUOBJ                       = 000000000000000
    DATUV                       = sy-datum
    EMENG                       = '2.000'
    MBWLS                       = 'X'
    MKTLS                       = 'X'
    MEHRS                       = 'X'
    MMORY                       = 1
    MTNRV                       = matnr
    STLAL                       = 1
    STLAN                       = 1
    STPST                       = 0
    SVWVO                       = 'X'
    WERKS                       = '5501'
    VRSVO                       = 'X'
 IMPORTING
    TOPMAT                      = gs_top
    DSTST                       =
  TABLES
     stb                        = gt_stb
 *   MATCAT                     = gt_matca
 EXCEPTIONS
   ALT_NOT_FOUND               = 1
   CALL_INVALID                = 2
   MATERIAL_NOT_FOUND          = 3
   MISSING_AUTHORIZATION       = 4
   NO_BOM_FOUND                = 5
   NO_PLANT_DATA               = 6
   NO_SUITABLE_BOM_FOUND       = 7
   CONVERSION_ERROR            = 8
   OTHERS                      = 9
          .
IF sy-subrc <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
*         WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
MOVE CORRESPONDING gs_top to t_header.
MOVE CORRESPONDING gt_stb to t_item.
Endform.

FORM build_fieldcat . 
w_keyinfo-header01 = 'VBELN'. 
w_keyinfo-item01 = 'VBELN'.
*&---------------------------------------------------------------------*  

w_fcat-col_pos = 1.  
w_fcat-fieldname = 'MATNR'. 
w_fcat-seltext_m = 'Material Number'. 
w_fcat-tabname = 'W_header'. 
APPEND w_fcat TO t_fcat.  
w_fcat-col_pos = 1.  
w_fcat-fieldname = 'MATKL'. 
w_fcat-seltext_m = 'Material Group'. 
w_fcat-tabname = 'W_header'. 
APPEND w_fcat TO t_fcat.  

w_fcat-col_pos = 1.  
w_fcat-fieldname = 'WERKS'. 
w_fcat-seltext_m = 'Plant'. 
w_fcat-tabname = 'W_header'. 
APPEND w_fcat TO t_fcat.  
 
w_fcat-col_pos = 1.  
w_fcat-fieldname = 'STLAL'. 
w_fcat-seltext_m = 'Alternative BOM'. 
w_fcat-tabname = 'W_header'. 
APPEND w_fcat TO t_fcat.  

w_fcat-col_pos = 1.  
w_fcat-fieldname = 'BMENG'. 
w_fcat-seltext_m = 'Base quantity'. 
w_fcat-tabname = 'W_header'. 
APPEND w_fcat TO t_fcat.

w_fcat-col_pos = 1.  
w_fcat-fieldname = 'DATUV'. 
w_fcat-seltext_m = 'Valid from date'. 
w_fcat-tabname = 'W_header'. 
APPEND w_fcat TO t_fcat.
w_fcat-col_pos = 1.  
w_fcat-fieldname = 'ANDAT'. 
w_fcat-seltext_m = 'Created on'. 
w_fcat-tabname = 'W_header'. 
APPEND w_fcat TO t_fcat.
w_fcat-col_pos = 1.  
w_fcat-fieldname = 'ANNAM'. 
w_fcat-seltext_m = 'Created by'. 
w_fcat-tabname = 'W_header'. 
APPEND w_fcat TO t_fcat.
w_fcat-col_pos = 1.  
w_fcat-fieldname = 'AEDAT'. 
w_fcat-seltext_m = 'Changed on'. 
w_fcat-tabname = 'W_header'. 
APPEND w_fcat TO t_fcat.
 
w_fcat-col_pos = 1.  
w_fcat-fieldname = 'AENAM'. 
w_fcat-seltext_m = 'Changed by'. 
w_fcat-tabname = 'W_header'. 
APPEND w_fcat TO t_fcat.
w_fcat-col_pos = 2. 
w_fcat-fieldname = 'POSTP'. 
w_fcat-seltext_m = 'Item Category (Bill of Material)'. 
w_fcat-tabname = 'w_item'. 
APPEND w_fcat TO t_fcat.  
w_fcat-col_pos = 3. 
w_fcat-fieldname = 'IDNRK'. 
w_fcat-seltext_m = 'BOM component'. 
w_fcat-tabname = 'w_item'. 
APPEND w_fcat TO t_fcat.  
w_fcat-col_pos = 4. 
w_fcat-fieldname = 'MENGE'. 
w_fcat-seltext_l = 'Component quantity'. 
w_fcat-tabname = 'w_item'. 
APPEND w_fcat TO t_fcat.  
w_fcat-col_pos = 5. 
w_fcat-fieldname = 'MEINS'. 
w_fcat-seltext_m = 'Component unit of measure'. 
w_fcat-tabname = 'w_item'. 
APPEND w_fcat TO t_fcat.
w_fcat-col_pos = 6. 
w_fcat-fieldname = 'POTX1'. 
w_fcat-seltext_m = 'BOM Item Text (Line 1)'. 
w_fcat-tabname = 'w_item'. 
APPEND w_fcat TO t_fcat.
w_fcat-col_pos = 7. 
w_fcat-fieldname = 'POTX2'. 
w_fcat-seltext_m = 'BOM item text (line 2)'. 
w_fcat-tabname = 'w_item'. 
APPEND w_fcat TO t_fcat.

w_fcat-col_pos = 8. 
w_fcat-fieldname = 'SANIN'. 
w_fcat-seltext_m = 'Indicator: item relevant to plant maintenance'. 
w_fcat-tabname = 'w_item'. 
APPEND w_fcat TO t_fcat.

w_fcat-col_pos = 9. 
w_fcat-fieldname = 'ERSKZ'. 
w_fcat-seltext_m = 'Indicator: spare part'. 
w_fcat-tabname = 'w_item'. 
APPEND w_fcat TO t_fcat.
ENDFORM.                   " BUILD_FIELDCAT

FORM display_alv .  

CALL FUNCTION 'REUSE_ALV_HIERSEQ_LIST_DISPLAY'   
 EXPORTING 
   it_fieldcat      = t_fcat     
          i_tabname_header = c_vbrk     
   i_tabname_item   = c_vbrp     
          is_keyinfo       = w_keyinfo   
 TABLES    
          t_outtab_header  = t_header     
          t_outtab_item    = t_item.
ENDFORM.