Wednesday, September 23, 2020

Total and Subtotal Reports in SAP ABAP.

 

Total and Subtotal Reports in SAP ABAP.


Total and Subtotal 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