Thursday, February 13, 2020

Total and Subtotal Report Example in SAP ABAP.


Total and Subtotal Program Example in SAP ABAP.



REPORT  ZREPORTS_TOTAL.

TABLES: ekko.
TYPE-POOLS: slis.
DATA: wa_fcat   TYPE lvc_s_fcat,
      it_fcat   TYPE lvc_t_fcat,
      wa_layout TYPE lvc_s_layo,
      wa_top    TYPE slis_listheader,
      it_top    TYPE slis_t_listheader.

TYPES: BEGIN OF ty_ekko,
ebeln TYPE ekko-ebeln,
aedat TYPE ekko-aedat,
END OF ty_ekko.
DATA: wa_ekko TYPE ty_ekko,
      it_ekko TYPE TABLE OF ty_ekko.

TYPES: BEGIN OF ty_ekpo,
ebeln TYPE ekpo-ebeln,
ebelp TYPE ekpo-ebelp,
matnr TYPE ekpo-matnr,
werks TYPE ekpo-werks,
menge TYPE ekpo-menge,
meins TYPE ekpo-meins,
END OF ty_ekpo.
DATA: wa_ekpo TYPE ty_ekpo,
      it_ekpo TYPE TABLE OF ty_ekpo.

TYPES: BEGIN OF ty_out,
ebeln TYPE char15,
ebelp TYPE char5,
matnr TYPE ekpo-matnr,
werks TYPE ekpo-werks,
menge TYPE ekpo-menge,
meins TYPE ekpo-meins,
color TYPE char4,
bold  TYPE lvc_t_styl,
END OF ty_out.
DATA: wa_out TYPE ty_out,
      it_out TYPE TABLE OF ty_out.

INITIALIZATION.
SELECT-OPTIONS s_aedat FOR ekko-aedat.

START-OF-SELECTION.
PERFORM get_ekko.
PERFORM get_ekpo.

END-OF-SELECTION.
PERFORM prepare_output.
PERFORM field_catalog.
PERFORM alv_grid_display.

TOP-OF-PAGE.
PERFORM top_of_page.
*&---------------------------------------------------------------------*
*&      Form  GET_EKKO
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
FORM get_ekko .

SELECT ebeln aedat FROM ekko
INTO TABLE it_ekko
WHERE aedat IN s_aedat.

ENDFORM.
*&---------------------------------------------------------------------*
*&      Form  GET_EKPO
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
FORM get_ekpo .

IF it_ekko IS NOT INITIAL.
SELECT ebeln ebelp matnr werks menge meins
FROM ekpo INTO TABLE it_ekpo
FOR ALL ENTRIES IN it_ekko
WHERE ebeln = it_ekko-ebeln
AND matnr NE ' '.

IF sy-subrc = 0.
SORT it_ekpo BY ebeln ebelp.
ENDIF.
ENDIF.

ENDFORM.
*&---------------------------------------------------------------------*
*&      Form  PREPARE_OUTPUT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
FORM prepare_output .

DATA: lw_bold TYPE lvc_s_styl,
      lt_bold TYPE lvc_t_styl.

IF it_ekpo IS NOT INITIAL.
LOOP AT it_ekpo INTO wa_ekpo.
wa_out-ebeln = wa_ekpo-ebeln.
wa_out-ebelp = wa_ekpo-ebelp.
wa_out-matnr = wa_ekpo-matnr.
SHIFT wa_out-matnr LEFT DELETING LEADING '0'.
wa_out-werks = wa_ekpo-werks.
wa_out-menge = wa_ekpo-menge.
wa_out-meins = wa_ekpo-meins.
APPEND wa_out TO it_out.
CLEAR: wa_out.

AT END OF ebeln.
SUM.
wa_out-ebeln = 'SUB TOTAL'.
wa_out-menge = wa_ekpo-menge.
wa_out-color = 'C200'.
lw_bold-style = '00000121'.
INSERT lw_bold INTO lt_bold INDEX 1.
wa_out-bold = lt_bold.
FREE lt_bold.

APPEND wa_out TO it_out.
CLEAR: wa_out, lw_bold, wa_ekpo.
ENDAT.

AT LAST.
SUM.
wa_out-ebeln = 'GRAND TOTAL'.
wa_out-menge = wa_ekpo-menge.
wa_out-color = 'C210'.
lw_bold-style = '00000121'.
INSERT lw_bold INTO lt_bold INDEX 1.
wa_out-bold = lt_bold.
FREE lt_bold.

APPEND wa_out TO it_out.
CLEAR: wa_out, lw_bold, wa_ekpo.
ENDAT.
ENDLOOP.
ENDIF.

FREE it_ekpo.

ENDFORM.
*&---------------------------------------------------------------------*
*&      Form  FIELD_CATALOG
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
FORM field_catalog .

DATA: lv_col TYPE i VALUE 0.

lv_col            = 1 + lv_col.
wa_fcat-col_pos   = lv_col.
wa_fcat-fieldname = 'EBELN'.
wa_fcat-reptext   = 'Purchase Order'.
APPEND wa_fcat TO it_fcat.
CLEAR wa_fcat.

lv_col            = 1 + lv_col.
wa_fcat-col_pos   = lv_col.
wa_fcat-fieldname = 'EBELP'.
wa_fcat-reptext   = 'Item'.
APPEND wa_fcat TO it_fcat.
CLEAR wa_fcat.

lv_col            = 1 + lv_col.
wa_fcat-col_pos   = lv_col.
wa_fcat-fieldname = 'MATNR'.
wa_fcat-reptext   = 'Material'.
APPEND wa_fcat TO it_fcat.
CLEAR wa_fcat.

lv_col            = 1 + lv_col.
wa_fcat-col_pos   = lv_col.
wa_fcat-fieldname = 'WERKS'.
wa_fcat-reptext   = 'Plant'.
APPEND wa_fcat TO it_fcat.
CLEAR wa_fcat.

lv_col            = 1 + lv_col.
wa_fcat-col_pos   = lv_col.
wa_fcat-fieldname = 'MENGE'.
wa_fcat-reptext   = 'Quantity'.
APPEND wa_fcat TO it_fcat.
CLEAR wa_fcat.

lv_col            = 1 + lv_col.
wa_fcat-col_pos   = lv_col.
wa_fcat-fieldname = 'MEINS'.
wa_fcat-reptext   = 'Unit'.
APPEND wa_fcat TO it_fcat.
CLEAR wa_fcat.

wa_layout-zebra      = 'X'.
wa_layout-cwidth_opt = 'X'.
wa_layout-info_fname = 'COLOR'.
wa_layout-stylefname = 'BOLD'.

ENDFORM.
*&---------------------------------------------------------------------*
*&      Form  ALV_GRID_DISPLAY
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
FORM alv_grid_display .

CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY_LVC'
EXPORTING
  i_callback_program     = sy-repid
  i_callback_top_of_page = 'TOP_OF_PAGE'
  is_layout_lvc          = wa_layout
  it_fieldcat_lvc        = it_fcat
TABLES
  t_outtab               = it_out
EXCEPTIONS
  program_error          = 1
  OTHERS                 = 2.


ENDFORM.
*&---------------------------------------------------------------------*
*&      Form  TOP_OF_PAGE
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
FORM top_of_page .

REFRESH it_top.

wa_top-typ  = 'H'.
wa_top-info = 'Purchasing List'.
APPEND wa_top TO it_top.
CLEAR wa_top.

CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
EXPORTING
  it_list_commentary = it_top.

ENDFORM.

No comments:

Post a Comment