Saturday, January 6, 2018

OOPS Report using Field Symbol

REPORT ZOOPS_ALV_REPORT.

TYPES BEGIN OF TY_EKKO,
                  EBELN TYPE EBELN,
                  BUKRS TYPE BUKRS,
                  BSART TYPE ESART,
                  LIFNR TYPE ELIFN,
                  BEDAT TYPE EBDAT,
               END OF TY_EKKO,

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

             BEGIN OF TY_FINAL,
                EBELN TYPE EBELN,
                EBELP TYPE EBELP,
                BSART TYPE ESART,
                LIFNR TYPE ELIFN,
                BEDAT TYPE EBDAT,
                TXZ01 TYPE TXZ01,
                MATNR TYPE MATNR,
                MENGE TYPE BSTMG,
                MEINS TYPE BSTME,
                NETPR TYPE BPREI,
             END OF TY_FINAL.

***************Internal Table and Workarea Declaration***********
DATA IT_EKKO   TYPE STANDARD TABLE OF TY_EKKO INITIAL SIZE 1,
             IT_EKPO   TYPE STANDARD TABLE OF TY_EKPO INITIAL SIZE 1,
             IT_FINAL  TYPE STANDARD TABLE OF TY_FINAL INITIAL SIZE 1,
             IT_FCAT   TYPE SLIS_T_FIELDCAT_ALV,
             WA_EKKO   TYPE TY_EKKO,
             WA_EKPO   TYPE TY_EKPO,
             WA_FCAT   TYPE SLIS_FIELDCAT_ALV,
             WA_FINAL  TYPE TY_FINAL,
             IS_LAYOUT TYPE SLIS_LAYOUT_ALV.

************Constant Declaration**************
DATA SE_EBELN TYPE EBELN,
              P_COL    TYPE INT4.

************FieldSymbol
FIELD-SYMBOLS <FS_W_EKKO> TYPE ANY,
                                  <FS_T_EKKO> TYPE STANDARD TABLE,
                                  <FS_W_EKPO> TYPE TY_EKPO,
                                  <FS_T_EKPO> TYPE STANDARD TABLE,
                                  <W_FINAL>   TYPE ANY.

ASSIGN IT_EKKO TO <FS_T_EKKO>.
ASSIGN IT_EKPO TO <FS_T_EKPO>.

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

CLASS ZDATA DEFINITION.
  PUBLIC SECTION.
    METHODS GET_DATA.
    METHODS GET_POP_FINAL.
    METHODS GET_FILL_FIELDCAT.
ENDCLASS.

CLASS ZDATA IMPLEMENTATION.
  METHOD GET_DATA.
    SELECT EBELN
                    BUKRS
                    BSART
                    LIFNR
                    BEDAT
      FROM EKKO INTO TABLE <FS_T_EKKO> WHERE EBELN IN S_EBELN.

    IF IT_EKKO IS NOT INITIAL.
      SELECT EBELN
                      EBELP
                      TXZ01
                      MATNR
                      MENGE
                      MEINS
                      NETPR
        FROM EKPO INTO TABLE <FS_T_EKPO> FOR ALL ENTRIES IN IT_EKKO
        WHERE EBELN IT_EKKO-EBELN.
    ENDIF.
  ENDMETHOD.

  METHOD GET_POP_FINAL.
    LOOP AT <FS_T_EKPO> ASSIGNING <FS_W_EKPO>.

      ASSIGN COMPONENT 'EBELN' OF STRUCTURE <FS_W_EKPO> TO <W_FINAL>.
      IF <W_FINAL> IS ASSIGNED.
        WA_FINAL-EBELN <W_FINAL>.
      ENDIF.
      UNASSIGN <W_FINAL>.

      ASSIGN COMPONENT 'EBELP' OF STRUCTURE <FS_W_EKPO> TO <W_FINAL>.
      IF <W_FINAL> IS ASSIGNED.
        WA_FINAL-EBELP <W_FINAL>.
      ENDIF.
      UNASSIGN <W_FINAL>.

      READ TABLE <FS_T_EKKO> ASSIGNING <FS_W_EKKO> WITH KEY ('EBELN'<FS_W_EKPO>-EBELN.
      IF SY-SUBRC 0.
        ASSIGN COMPONENT 'BSART' OF STRUCTURE <FS_W_EKKO> TO <W_FINAL>.
        IF <W_FINAL> IS ASSIGNED.
          WA_FINAL-BSART <W_FINAL>.
        ENDIF.
        UNASSIGN <W_FINAL>.

        ASSIGN COMPONENT 'LIFNR' OF STRUCTURE <FS_W_EKKO> TO <W_FINAL>.
        IF <W_FINAL> IS ASSIGNED.
          WA_FINAL-LIFNR <W_FINAL>.
        ENDIF.
        UNASSIGN <W_FINAL>.

        ASSIGN COMPONENT 'BEDAT' OF STRUCTURE <FS_W_EKKO> TO <W_FINAL>.
        IF <W_FINAL> IS ASSIGNED.
          WA_FINAL-BEDAT <W_FINAL>.
        ENDIF.
        UNASSIGN <W_FINAL>.
      ENDIF.

      ASSIGN COMPONENT 'MENGE' OF STRUCTURE <FS_W_EKPO> TO <W_FINAL>.
      IF <W_FINAL> IS ASSIGNED.
        WA_FINAL-MENGE <W_FINAL>.
      ENDIF.
      UNASSIGN <W_FINAL>.

      ASSIGN COMPONENT 'MEINS' OF STRUCTURE <FS_W_EKPO> TO <W_FINAL>.
      IF <W_FINAL> IS ASSIGNED.
        WA_FINAL-MEINS <W_FINAL>.
      ENDIF.
      UNASSIGN <W_FINAL>.

      ASSIGN COMPONENT 'NETPR' OF STRUCTURE <FS_W_EKPO> TO <W_FINAL>.
      IF <W_FINAL> IS ASSIGNED.
        WA_FINAL-NETPR <W_FINAL>.
      ENDIF.

      APPEND WA_FINAL TO IT_FINAL.
      CLEAR WA_FINAL.

    ENDLOOP.

  ENDMETHOD.

  METHOD GET_FILL_FIELDCAT.
    PERFORM GET_FILL_FCAT USING P_COL 'EBELN' 'Purchase Doc.No' 10,
                                                                      P_COL 'EBELP' 'Purchase Item' 10,
                                                                      P_COL 'BSART' 'Doc. Type' 4,
                                                                      P_COL 'LIFNR' 'Vendor Account Number' 10,
                                                                      P_COL 'BEDAT' 'Purchasing Document Date' 8,
                                                                      P_COL 'MATNR' 'Material Number' 18,
                                                                      P_COL 'TXZ01' 'Material Description' 40,
                                                                      P_COL 'MENGE' 'Quantity' 13,
                                                                      P_COL 'MEINS' 'Unit of Measure' 3,
                                                                      P_COL 'NETPR' 'Net Price' 11.


    PERFORM DISPLAY_DATA.

  ENDMETHOD.

ENDCLASS.

*&---------------------------------------------------------------------*
*&      Form  GET_FILL_FCAT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
FORM GET_FILL_FCAT USING P_COL
                                                           P_FIELD TYPE CHAR20
                                                           P_DES TYPE CHAR40
                                                           P_LEN TYPE INT4.

  P_COL P_COL + 1.
  WA_FCAT-COL_POS P_COL.
  WA_FCAT-FIELDNAME P_FIELD.
  WA_FCAT-SELTEXT_L P_DES.
  APPEND WA_FCAT TO IT_FCAT.

ENDFORM.


*&---------------------------------------------------------------------*
*&      Form  DISPLAY_DATA
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
FORM DISPLAY_DATA .

  IS_LAYOUT-COLWIDTH_OPTIMIZE 'X'.
  IS_LAYOUT-ZEBRA 'X'.

  CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
    EXPORTING
*     I_INTERFACE_CHECK                 = ' '
*     I_BYPASSING_BUFFER                = ' '
*     I_BUFFER_ACTIVE                   = ' '
      I_CALLBACK_PROGRAM                SY-REPID
*     I_CALLBACK_PF_STATUS_SET          = ' '
*     I_CALLBACK_USER_COMMAND           = ' '
*     I_CALLBACK_TOP_OF_PAGE            = ' '
*     I_CALLBACK_HTML_TOP_OF_PAGE       = ' '
*     I_CALLBACK_HTML_END_OF_LIST       = ' '
      IS_LAYOUT     IS_LAYOUT
      IT_FIELDCAT   IT_FCAT
*     IT_EXCLUDING  = IT_EXCLUDING
*     IT_SPECIAL_GROUPS                 = IT_SPECIAL_GROUPS
*     IT_SORT       = IT_SORT
*     IT_FILTER     = IT_FILTER
*     IS_SEL_HIDE   = IS_SEL_HIDE
      I_DEFAULT     'X'
      I_SAVE        'X'
    TABLES
      T_OUTTAB      IT_FINAL
    EXCEPTIONS
      PROGRAM_ERROR 1.

ENDFORM.

START-OF-SELECTION.
  DATA V_REF TYPE REF TO ZDATA.
  CREATE OBJECT V_REF.

  V_REF->GET_DATA).

END-OF-SELECTION.
  V_REF->GET_POP_FINAL).
  V_REF->GET_FILL_FIELDCAT).



No comments:

Post a Comment