Saturday, January 6, 2018

OOPS ALV Report with Check Box

REPORT ZOOPS_ALV_CHECKBOX.
**********Structure Declaration.
TYPES BEGIN OF TY_EKKO,
                  EBELN  TYPE EBELN,
                  BUKRS  TYPE BUKRS,
                  BSTYP  TYPE EBSTYP,
                  BSART  TYPE ESART,
                  LIFNR TYPE LIFNR,
               END OF TY_EKKO,

               BEGIN OF TY_EKPO,
                  EBELN  TYPE EBELN,
                  EBELP  TYPE EBELP,
                  TXZ01  TYPE TXZ01,
                  MATNR  TYPE MATNR,
                  WERKS  TYPE EWERK,
                  MENGE  TYPE BSTMG,
                  MEINS  TYPE BSTME,
                  NETPR  TYPE BPREI,
                  NETWR  TYPE BWERT,
              END OF TY_EKPO,

              BEGIN OF TY_FINAL,
                  CHK       TYPE CHAR1,
                  EBELN   TYPE EBELN,
                  BUKRS   TYPE BUKRS,
                  LIFNR     TYPE LIFNR,
                  EBELP     TYPE EBELP,
                  TXZ01     TYPE TXZ01,
                  MATNR   TYPE MATNR,
                  MENGE   TYPE BSTMG,
                  MEINS     TYPE BSTME,
                  NETPR     TYPE BPREI,
              END OF TY_FINAL.

**********Internal Table Declaration.
DATA T_EKKO  TYPE STANDARD TABLE OF TY_EKKO INITIAL SIZE 1,
             T_EKPO  TYPE STANDARD TABLE OF TY_EKPO INITIAL SIZE 1,
             T_FINAL TYPE STANDARD TABLE OF TY_FINAL INITIAL SIZE 1,
             T_FCAT  TYPE STANDARD TABLE OF LVC_S_FCAT.

*********Workarea Declaration.
DATA W_EKKO   TYPE TY_EKKO,
             W_EKPO   TYPE TY_EKPO,
             W_FINAL  TYPE TY_FINAL,
             W_FCAT   TYPE LVC_S_FCAT,
             W_LAYOUT TYPE LVC_S_LAYO.

*********Constant Declaration.
DATA LV_EBELN TYPE EKKO-EBELN,
             P_COL    TYPE INT2.


DATA GCL_CUS_CONTAINER TYPE REF TO CL_GUI_CUSTOM_CONTAINER,
             GCL_ALV_GRID      TYPE REF TO CL_GUI_ALV_GRID.

*********INITIALIZATION Event.
INITIALIZATION.
  REFRESH T_EKKO,
                       T_EKPO,
                       T_FINAL.

  CLEAR W_EKKO,
                  W_EKPO,
                  W_FINAL.

*********Selection Screen.
  SELECTION-SCREEN BEGIN OF BLOCK WITH FRAME TITLE TEXT-001.
        SELECT-OPTIONS S_EBELN FOR LV_EBELN.
  SELECTION-SCREEN END OF BLOCK A.

START-OF-SELECTION.
  PERFORM GET_EKKO.
  PERFORM GET_EKPO.

END-OF-SELECTION.
  PERFORM GET_POP_FINAL.
  PERFORM CUSTOM_CONTANER.

*&---------------------------------------------------------------------*
*&      Form  GET_EKKO
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
FORM GET_EKKO .
  SELECT EBELN
                 BUKRS
                 BSTYP
                 BSART
                 LIFNR
    FROM EKKO INTO TABLE T_EKKO WHERE EBELN IN S_EBELN.

  IF T_EKKO IS INITIAL.
    MESSAGE 'Data Not Found' TYPE 'E' DISPLAY LIKE 'I'.
  ENDIF.

ENDFORM.

*&---------------------------------------------------------------------*
*&      Form  GET_EKPO
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
FORM GET_EKPO .
  IF T_EKKO IS NOT INITIAL.
    SELECT EBELN
                    EBELP
                    TXZ01
                    MATNR
                    WERKS
                    MENGE
                    MEINS
                    NETPR
                    NETWR
      FROM EKPO INTO TABLE T_EKPO FOR ALL ENTRIES IN T_EKKO
      WHERE EBELN T_EKKO-EBELN.
  ENDIF.
ENDFORM.

*&---------------------------------------------------------------------*
*&      Form  GET_POP_FINAL
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
FORM GET_POP_FINAL .
  SORT T_EKPO BY EBELN.
  SORT T_EKKO BY EBELN.

  CLEAR W_EKPO.
  LOOP AT T_EKPO INTO W_EKPO.
    W_FINAL-EBELN W_EKPO-EBELN.
    W_FINAL-EBELP W_EKPO-EBELP.
    W_FINAL-MENGE W_EKPO-MENGE.
    W_FINAL-MEINS W_EKPO-MEINS.
    W_FINAL-NETPR W_EKPO-NETPR.
    W_FINAL-MATNR W_EKPO-MATNR.
    W_FINAL-TXZ01 W_EKPO-TXZ01.

    READ TABLE T_EKKO INTO W_EKKO WITH KEY EBELN W_EKPO-EBELN BINARY SEARCH.
    IF SY-SUBRC 0.
      W_FINAL-LIFNR W_EKKO-LIFNR.
      W_FINAL-BUKRS W_EKKO-BUKRS.
    ENDIF.

    APPEND W_FINAL TO T_FINAL.
    CLEAR W_FINAL.
  ENDLOOP.
ENDFORM.

*&---------------------------------------------------------------------*
*&      Form  CUSTOM_CONTANER
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
FORM CUSTOM_CONTANER .
  CALL SCREEN 9001.
ENDFORM.

*&---------------------------------------------------------------------*
*&      Module  STATUS_9001  OUTPUT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
MODULE STATUS_9001 OUTPUT.
  SET PF-STATUS 'ZSTATUS_9001'.
  SET TITLEBAR 'ZTITLE_9001'.
ENDMODULE.

*&---------------------------------------------------------------------*
*&      Module  FILL_FIELDCAT  OUTPUT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
MODULE FILL_FIELDCAT OUTPUT.

  PERFORM FILL_FIELDCAT USING P_COL 'CHK' ' ' 'X' 'X' 'X' '1',
                                                                   P_COL 'EBELN' 'Purchase Doc.No' ' ' ' ' ' ' ' ',
                                                                   P_COL 'EBELP' 'Item No' ' ' ' ' ' ' ' ',
                                                                   P_COL 'BUKRS' 'Company Code' ' ' ' ' ' ' ' ',
                                                                   P_COL 'LIFNR' 'Vendor' ' ' ' ' ' ' ' ',
                                                                   P_COL 'MATNR' 'Material No' ' ' ' ' ' ' ' ',
                                                                   P_COL 'TXZ01' 'Material Description' ' ' ' ' ' ' ' ',
                                                                   P_COL 'MENGE' 'Quantity' ' ' ' ' 'X' ' ',
                                                                   P_COL 'MEINS' 'Uom' ' ' ' ' ' ' ' ',
                                                                   P_COL 'NETPR' 'Price' ' ' ' ' 'X' ' '.
ENDMODULE.

*&---------------------------------------------------------------------*
*&      Module  USER_COMMAND_9001  INPUT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
MODULE USER_COMMAND_9001 INPUT.
  IF SY-UCOMM 'BACK' OR SY-UCOMM 'EXIT' OR SY-UCOMM 'CANCEL'.
    LEAVE TO SCREEN 0.
  ENDIF.
ENDMODULE.

*&---------------------------------------------------------------------*
*&      Form  FILL_FIELDCAT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
FORM FILL_FIELDCAT USING P_COL
                                                          P_FIELD TYPE CHAR20
                                                          P_DES   TYPE CHAR40
                                                          P_KEY   TYPE CHAR1
                                                          P_CHEK  TYPE CHAR1
                                                          P_EDIT  TYPE CHAR4
                                                          P_LENTH TYPE INT2.

  W_FCAT-COL_POS          P_COL.
  W_FCAT-FIELDNAME    P_FIELD.
  W_FCAT-COLTEXT         P_DES.
  W_FCAT-KEY     P_KEY.
  W_FCAT-CHECKBOX     P_CHEK.
  W_FCAT-EDIT     P_EDIT.
  W_FCAT-OUTPUTLEN   P_LENTH.
  APPEND W_FCAT TO T_FCAT.
  CLEAR W_FCAT.

ENDFORM.

*&---------------------------------------------------------------------*
*&      Module  DISPLAY_DATA  OUTPUT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
MODULE DISPLAY_DATA OUTPUT.

  W_LAYOUT-CWIDTH_OPT 'X'.
  W_LAYOUT-EDIT_MODE    'X'.
  W_LAYOUT-ZEBRA              'X'.

*********Create Object for Container.
  CREATE OBJECT GCL_CUS_CONTAINER
    EXPORTING
*     PARENT                                   = PARENT
      CONTAINER_NAME              'CC'
*     STYLE                                     = STYLE
*     LIFETIME                                = lifetime_default
*     REPID                                       = REPID
*     DYNNR                                     = DYNNR
*     NO_AUTODEF_PROGID_DYNNR     = NO_AUTODEF_PROGID_DYNNR
    EXCEPTIONS
      CNTL_ERROR                                          1
      CNTL_SYSTEM_ERROR                        2
      CREATE_ERROR                                     3
      LIFETIME_ERROR                                  4
      LIFETIME_DYNPRO_DYNPRO_LINK 5
      OTHERS                                                    6.

**********Create Object for Display Data.
  CREATE OBJECT GCL_ALV_GRID
    EXPORTING
      I_PARENT                           GCL_CUS_CONTAINER
    EXCEPTIONS
      ERROR_CNTL_CREATE  1
      ERROR_CNTL_INIT         2
      ERROR_CNTL_LINK        3
      ERROR_DP_CREATE        4
      OTHERS                              5.

**********Dispaly Data using Method.

  GCL_ALV_GRID->SET_TABLE_FOR_FIRST_DISPLAY(
    EXPORTING
*    I_BUFFER_ACTIVE                   = I_BUFFER_ACTIVE
*    I_BYPASSING_BUFFER            = I_BYPASSING_BUFFER
*    I_CONSISTENCY_CHECK        = I_CONSISTENCY_CHECK
*    I_STRUCTURE_NAME              = I_STRUCTURE_NAME
*    IS_VARIANT                                = IS_VARIANT
      I_SAVE                                          'X'
      I_DEFAULT                                  'X'
     IS_LAYOUT                                   W_LAYOUT
*    IS_PRINT                                      = IS_PRINT
*    IT_SPECIAL_GROUPS               = IT_SPECIAL_GROUPS
*    IT_TOOLBAR_EXCLUDING     = IT_TOOLBAR_EXCLUDING
*    IT_HYPERLINK                           = IT_HYPERLINK
*    IT_ALV_GRAPHICS                    = IT_ALV_GRAPHICS
*    IT_EXCEPT_QINFO                    = IT_EXCEPT_QINFO
*    IR_SALV_ADAPTER                   = IR_SALV_ADAPTER
    CHANGING
      IT_OUTTAB                                  T_FINAL
      IT_FIELDCATALOG                    T_FCAT
*    IT_SORT                                        = IT_SORT
*    IT_FILTER                                     = IT_FILTER
    EXCEPTIONS
      INVALID_PARAMETER_COMBINATION 1
      PROGRAM_ERROR                                      2
      TOO_MANY_LINES                                     3
         ).
  IF SY-SUBRC <> 0.
* Implement suitable error handling here
  ENDIF.

ENDMODULE.

Output:

No comments:

Post a Comment