Code listing for: ZSNAK_STORE_ACTIVITIES

Description: Summary Of Store Activities.

REPORT zstock_report.
TYPE-POOLS: slis.
TABLES: mbewh , bsim , makt, t001w , mseg , mkpf , mardh, t001l.


SELECTION-SCREEN BEGIN OF SCREEN 100 AS SUBSCREEN.

SELECT-OPTIONS: s_matnr FOR mardh-matnr, " Material
                s_bwkey FOR mardh-werks OBLIGATORY, "Plant
                s_lgort FOR t001l-lgort,
                s_date FOR mkpf-budat .   " Date
SELECTION-SCREEN END OF SCREEN 100.

SELECTION-SCREEN: BEGIN OF TABBED BLOCK b2 FOR 4 LINES,
                  TAB (50) title USER-COMMAND '' DEFAULT SCREEN 100,
                  END OF BLOCK b2.

INITIALIZATION.
  title = 'Summary Of Store Activites.'.

START-OF-SELECTION.

  DATA: date(2) TYPE n.
  DATA: year(4) TYPE n.
  DATA : tdate(2) TYPE n.
  DATA: fdate TYPE sy-datum, pdate TYPE sy-datum.
  DATA: fieldcat TYPE slis_t_fieldcat_alv,
         wa_fieldcat LIKE LINE OF fieldcat,
         i_sort TYPE slis_t_sortinfo_alv,
         w_sort LIKE LINE OF i_sort,
         fieldcatalog TYPE slis_fieldcat_alv,
         layout TYPE slis_layout_alv,
         sort TYPE slis_sortinfo_alv,
         gd_repid     LIKE sy-repid.

  DATA: c_user_command TYPE slis_formname VALUE 'USER_COMMAND'.
  DATA: language LIKE  sy-langu,
        dat_val LIKE  sy-datum.
  DATA: heading TYPE string,
        head1 TYPE string,
        head2 TYPE string,
        head3 TYPE string.

  DATA: test LIKE  t247-ktx.
  DATA : langu_back LIKE  sy-langu,
         longtext   LIKE  t247-ltx,
         ld_lines   TYPE i,
         message_text TYPE string.

  DATA: sl LIKE TABLE OF mardh  WITH HEADER LINE.
  DATA: mb LIKE TABLE OF mbewh  WITH HEADER LINE.
  DATA: bi LIKE TABLE OF bsim  WITH HEADER LINE.
  DATA: ms LIKE TABLE OF mseg WITH HEADER LINE.
  DATA: mk LIKE TABLE OF mkpf WITH HEADER LINE.

  DATA: BEGIN OF itab OCCURS 0,
        bwkey LIKE bsim-bwkey,      " Plant.
        matnr LIKE mbewh-matnr,     " Material Number.
        maktx LIKE makt-maktx,      " Material Description.
        bwtar LIKE bsim-bwtar,      " Valutaion Type.
        meins LIKE bsim-meins,      " Base Unit Measure.
        opqty LIKE mbewh-lbkum,     " Opening Balance Quantity.
        opbal LIKE mbewh-salk3,     " Opening Balance Value.
        recp  LIKE bsim-menge,      " Reciept Quantity.
        recpval LIKE bsim-dmbtr,    " Reciept Value.
        issue LIKE bsim-menge,      " Issue Quantity.
        issval  LIKE bsim-dmbtr,    " Issue Value.
        cloqty LIKE mbewh-lbkum,    " Closing Balance Quantity.
        clobal  LIKE mbewh-salk3,   " Closing Balance.
        rpu    LIKE mbewh-verpr,    " Rate Per Unit.
    END OF itab.
  fdate = s_date-low.

  LOOP AT s_date.
    date = s_date-low+4(2).
    year = s_date-low+0(4).
    PERFORM previous_month.
    pdate = pdate+4(2).
  ENDLOOP.

  LOOP AT s_date.
    language = 'E'.
    dat_val = s_date-low.
    PERFORM get_date.
    CONCATENATE s_date-low+6(2) '-' test '-' s_date-low+0(4)  INTO head2 SEPARATED BY space.
    IF s_date-high <> ''.
      dat_val = s_date-high.
      PERFORM get_date.
      CONCATENATE head2 'To' s_date-high+6(2) '-' test '-' s_date-high+0(4)  INTO head2 SEPARATED BY space.
    ENDIF.
  ENDLOOP.



  SELECT *
    FROM mardh
    INTO TABLE sl
    WHERE matnr IN s_matnr
    AND  werks IN s_bwkey
    AND  lgort IN s_lgort.


  SELECT *
 FROM  mbewh
 INTO TABLE mb
 WHERE matnr IN s_matnr
 AND  lfgja EQ year
 AND    bwkey IN s_bwkey
 AND   lfmon EQ date.

  SELECT *
    FROM bsim
    INTO TABLE bi
    WHERE matnr IN s_matnr
    AND gjahr EQ year
    AND bwkey IN s_bwkey
    AND budat IN s_date.

  SELECT *
    FROM mseg
    INTO TABLE ms
    WHERE matnr IN s_matnr
    AND mjahr EQ year
    AND werks IN s_bwkey.


  IF s_lgort IS NOT INITIAL.
    LOOP AT sl WHERE lfmon EQ date AND werks IN s_bwkey.
      itab-bwkey  = sl-werks.
      itab-matnr  = sl-matnr.

      SELECT SINGLE meins FROM bsim INTO itab-meins
         WHERE matnr IN s_matnr
        AND  budat IN s_date.

      SELECT SINGLE maktx FROM makt INTO itab-maktx
        WHERE matnr EQ itab-matnr.

      SELECT SINGLE verpr FROM mbewh INTO itab-rpu
      WHERE matnr EQ itab-matnr
      AND lfmon EQ date
      AND lfgja EQ year
      AND bwkey EQ itab-bwkey.

      SELECT SINGLE labst FROM mardh INTO itab-opqty
      WHERE matnr EQ itab-matnr
      AND   lfmon EQ pdate
      AND   lfgja EQ year
      and   lgort eq sl-lgort
      AND   werks EQ itab-bwkey.

      itab-opbal = itab-opqty * itab-rpu.

      SELECT SINGLE labst FROM mardh INTO itab-cloqty
      WHERE matnr EQ itab-matnr
      AND   lfmon EQ date
      AND   lfgja EQ year
            and   lgort eq sl-lgort
      AND   werks EQ itab-bwkey.

      itab-clobal = itab-cloqty * itab-rpu.
      itab-issue = 0 - ( itab-cloqty - itab-opqty - itab-recp ).
      itab-issval = itab-issue * itab-rpu.

      itab-recp = itab-cloqty + itab-issue - itab-opqty.
      itab-recpval = itab-recp * itab-rpu.

      APPEND itab.
      CLEAR itab-recp.
      CLEAR itab-recpval.
      CLEAR itab-issval.
      CLEAR itab-issue.
      CLEAR itab-opqty.
      CLEAR itab-opbal.
      CLEAR itab-cloqty.
      CLEAR itab-clobal.

    ENDLOOP.

  ELSEIF s_lgort IS INITIAL.

    LOOP AT mb WHERE lfmon EQ date AND bwkey IN s_bwkey.

      itab-bwkey  = mb-bwkey.
      itab-matnr  = mb-matnr.

      itab-bwtar = mb-bwtar.

      SELECT SINGLE meins FROM bsim INTO itab-meins
        WHERE matnr IN s_matnr
        AND  budat IN s_date.

      SELECT SINGLE maktx FROM makt INTO itab-maktx
        WHERE matnr EQ itab-matnr.

      SELECT SINGLE lbkum FROM mbewh INTO itab-opqty
        WHERE matnr EQ itab-matnr
        AND   lfmon EQ pdate
        AND   lfgja EQ year
        AND   bwkey EQ itab-bwkey
        AND   bwtar EQ itab-bwtar.


      SELECT SINGLE lbkum FROM mbewh INTO itab-cloqty
        WHERE matnr EQ itab-matnr
        AND   lfmon EQ date
        AND   lfgja EQ year
        AND   bwkey EQ itab-bwkey
        AND   bwtar EQ itab-bwtar.



      SELECT SINGLE verpr FROM mbewh INTO itab-rpu
        WHERE matnr EQ itab-matnr
        AND lfmon EQ date
        AND lfgja EQ year
        AND bwkey EQ itab-bwkey
        AND bwtar EQ itab-bwtar .


      itab-opbal = itab-opqty * itab-rpu.
      itab-clobal = itab-cloqty * itab-rpu.
      itab-issue = 0 - ( itab-cloqty - itab-opqty - itab-recp ).
      itab-issval = itab-issue * itab-rpu.

      itab-recp = itab-cloqty + itab-issue - itab-opqty.
      itab-recpval = itab-recp * itab-rpu.

      APPEND itab.
      CLEAR itab-recp.
      CLEAR itab-recpval.
      CLEAR itab-issval.
      CLEAR itab-issue.
      CLEAR itab-opqty.
      CLEAR itab-opbal.
      CLEAR itab-cloqty.
      CLEAR itab-clobal.

    ENDLOOP.
  ENDIF.
  PERFORM build_fieldcat.
  PERFORM build_layout.
  PERFORM display_alv_report.

  DESCRIBE TABLE itab LINES ld_lines.
  message_text = ld_lines.
  CONCATENATE message_text 'items displayed' INTO message_text SEPARATED BY space.
  MESSAGE s000(zhak) WITH message_text .

*&---------------------------------------------------------------------*
*&      Form  top-of-page
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
FORM top-of-page.
*ALV Header declarations
  DATA: t_header TYPE slis_t_listheader,
        wa_header TYPE slis_listheader,
        t_line LIKE wa_header-info,
        ld_lines TYPE i,
        ld_linesc(10) TYPE c.


* Title
  wa_header-typ  = 'H'.
  wa_header-info = 'Tri-Pack Films Limited'.
  APPEND wa_header TO t_header.
  CLEAR wa_header.

  wa_header-typ  = 'H'.
  wa_header-info = 'Summary Of Store Activities.'.
  APPEND wa_header TO t_header.
  CLEAR wa_header.

* Date
  wa_header-typ  = 'S'.
  wa_header-key = 'Report Date: '.
  wa_header-info = head2.   "todays date
  APPEND wa_header TO t_header.
  CLEAR: wa_header.

* Total No. of Records Selected
  DESCRIBE TABLE itab LINES ld_lines.
  ld_linesc = ld_lines.
  CONCATENATE 'Total No. of Records Selected: ' ld_linesc
                    INTO t_line SEPARATED BY space.
  wa_header-typ  = 'A'.
  wa_header-info = t_line.
  APPEND wa_header TO t_header.
  CLEAR: wa_header, t_line.

  CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
    EXPORTING
      it_list_commentary = t_header.
*            i_logo             = 'Z_LOGO'.


ENDFORM. "top-of-page
*&---------------------------------------------------------------------*
*&      Form  previous_month
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
FORM previous_month.
  CALL FUNCTION 'OIL_GET_PREV_MONTH'
    EXPORTING
      i_date = fdate
    IMPORTING
      e_date = pdate.
  .
ENDFORM. "previous_month

*&---------------------------------------------------------------------*
*&      Form  get_date
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
FORM get_date.
  CALL FUNCTION 'ISP_GET_MONTH_NAME'

  EXPORTING
   date               = dat_val
    language           = language
*   MONTH_NUMBER       = '00'
 IMPORTING
   langu_back         = langu_back
   longtext           = longtext
   shorttext          = test
 EXCEPTIONS
   calendar_id        = 1
   date_error         = 2
   not_found          = 3
   wrong_input        = 4
   OTHERS             = 5
          .
  IF sy-subrc <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
*         WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
  ENDIF.


ENDFORM. "get_date


*&---------------------------------------------------------------------*
*&      Form  build_fieldcat
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
FORM build_fieldcat .

  fieldcatalog-tabname     = 'itab'.
  fieldcatalog-fieldname   = 'BWKEY'.
  fieldcatalog-seltext_m   = 'PLANT'.
  fieldcatalog-key         = 'X'.
  APPEND fieldcatalog TO fieldcat.
  CLEAR  fieldcatalog.


  fieldcatalog-tabname     = 'itab'.
  fieldcatalog-fieldname   = 'MATNR'.
  fieldcatalog-seltext_m   = 'Matt No.'.
  fieldcatalog-key         = 'X'.
  APPEND fieldcatalog TO fieldcat.
  CLEAR  fieldcatalog.

  fieldcatalog-tabname     = 'itab'.
  fieldcatalog-fieldname   =  'MAKTX'.
  fieldcatalog-seltext_m   = 'Matt Description'.
  fieldcatalog-key         = 'X'.
  APPEND fieldcatalog TO fieldcat.
  CLEAR  fieldcatalog.

  fieldcatalog-tabname     = 'itab'.
  fieldcatalog-fieldname   =  'BWTAR'.
  fieldcatalog-seltext_m   = 'Valuation Type'.
  fieldcatalog-key         = 'X'.
  APPEND fieldcatalog TO fieldcat.
  CLEAR  fieldcatalog.

  fieldcatalog-tabname     = 'itab'.
  fieldcatalog-fieldname   = 'MEINS'.
  fieldcatalog-seltext_m   = 'UOM'.
  " fieldcatalog-key       = 'X'.
  APPEND fieldcatalog TO fieldcat.
  CLEAR  fieldcatalog.

  fieldcatalog-tabname     = 'itab'.
  fieldcatalog-fieldname   = 'OPQTY'.
  fieldcatalog-seltext_m   = 'Opening Bal Qty'.
  fieldcatalog-do_sum      = 'X'.
  APPEND fieldcatalog TO fieldcat.
  CLEAR  fieldcatalog.

  fieldcatalog-tabname     = 'itab'.
  fieldcatalog-fieldname   = 'OPBAL'.
  fieldcatalog-seltext_m   = 'Opening Bal (RS)'.
  fieldcatalog-do_sum      = 'X'.
  APPEND fieldcatalog TO fieldcat.
  CLEAR  fieldcatalog.

  fieldcatalog-tabname     = 'itab'.
  fieldcatalog-fieldname   = 'RECP'.
  fieldcatalog-seltext_m   = 'Receipts Qty'.
  fieldcatalog-do_sum      = 'X'.
  APPEND fieldcatalog TO fieldcat.
  CLEAR  fieldcatalog.

  fieldcatalog-tabname     = 'itab'.
  fieldcatalog-fieldname   = 'RECPVAL'.
  fieldcatalog-seltext_m   = 'Receipt Value (RS)'.
  fieldcatalog-do_sum      = 'X'.
  APPEND fieldcatalog TO fieldcat.
  CLEAR  fieldcatalog.

  fieldcatalog-tabname     = 'itab'.
  fieldcatalog-fieldname   = 'ISSUE'.
  fieldcatalog-seltext_m   = 'Issues Qty'.
  fieldcatalog-do_sum      = 'X'.
  APPEND fieldcatalog TO fieldcat.
  CLEAR  fieldcatalog.

  fieldcatalog-tabname     = 'itab'.
  fieldcatalog-fieldname   = 'ISSVAL'.
  fieldcatalog-seltext_m   = 'Issue Value (RS)'.
  fieldcatalog-do_sum      = 'X'.
  APPEND fieldcatalog TO fieldcat.
  CLEAR  fieldcatalog.

  fieldcatalog-tabname     = 'itab'.
  fieldcatalog-fieldname   = 'CLOQTY'.
  fieldcatalog-seltext_m   = 'Closing Bal Qty'.
  fieldcatalog-do_sum      = 'X'.
  APPEND fieldcatalog TO fieldcat.
  CLEAR  fieldcatalog.

  fieldcatalog-tabname     = 'itab'.
  fieldcatalog-fieldname   = 'CLOBAL'.
  fieldcatalog-seltext_m   = 'Closing Bal (RS)'.
  fieldcatalog-do_sum      = 'X'.
  APPEND fieldcatalog TO fieldcat.
  CLEAR  fieldcatalog.

  fieldcatalog-tabname     = 'itab'.
  fieldcatalog-fieldname   = 'RPU'.
  fieldcatalog-seltext_m   = 'Rate/Unit (RS)'.
  APPEND fieldcatalog TO fieldcat.
  CLEAR  fieldcatalog.

  CLEAR: w_sort,i_sort[].
  w_sort-spos = 1.
  w_sort-fieldname = 'BWKEY'.
  w_sort-up = 'X'.
  w_sort-subtot = 'X'.
  APPEND w_sort TO i_sort.
  CLEAR w_sort.


  w_sort-spos = 1.
  w_sort-fieldname = 'MAKTX'.
  w_sort-up = 'X'.
  w_sort-subtot = 'X'.
  APPEND w_sort TO i_sort.
  CLEAR w_sort.
ENDFORM. " build_fieldcat

*&---------------------------------------------------------------------*
*&      Form  build_layout
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
FORM build_layout .
  layout-no_input          = 'X'.
  layout-colwidth_optimize = 'X'.
  layout-zebra          = 'X'.
ENDFORM. "build_layout


*&---------------------------------------------------------------------*
*&      Form  display_alv_report
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
FORM display_alv_report .
  gd_repid = sy-repid.

  CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
    EXPORTING
      i_callback_program     = gd_repid
      i_callback_top_of_page = 'TOP-OF-PAGE'
      is_layout              = layout     " i_callback_user_command = c_user_command
      it_fieldcat            = fieldcat
      it_sort                = i_sort
      i_save                 = 'A'
    TABLES
      t_outtab               = itab    " it_sort = sort
    EXCEPTIONS
      program_error          = 1
      OTHERS                 = 2.
ENDFORM. " display_alv_report


*Selection texts
*----------------------------------------------------------
* S_BWKEY D       .
* S_DATE D       .
* S_LGORT D       .
* S_MATNR D       .


*Messages
*----------------------------------------------------------
*
* Message class: ZHAK
*000   &