Friday, January 15, 2016

List of Vendor Open Items

*&---------------------------------------------------------------------*
*& Report  ZVENDOR_OP_SUMMARY
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*

REPORT  ZVENDOR_OP_SUMMARY.

TABLESBSEGBKPF.

TYPE-POOLS SLIS.

DATAFIELDCATALOG TYPE SLIS_T_FIELDCAT_ALV WITH HEADER LINE,
      GD_TAB_GROUP TYPE SLIS_T_SP_GROUP_ALV,
      GD_LAYOUT    TYPE SLIS_LAYOUT_ALV,
      GD_REPID     LIKE SY-REPID,
      GT_EVENTS     TYPE SLIS_T_EVENT,
      GD_PRNTPARAMS TYPE SLIS_PRINT_ALV.

DATAV_BELNR TYPE BSEG-BELNR.

SELECT-OPTIONS  V_SAKNR FOR BSEG-SAKNR.
SELECT-OPTIONS  V_GSBER FOR BSEG-GSBER.
SELECT-OPTIONS  V_LIFNR FOR BSEG-LIFNR.

TYPES BEGIN OF TY_BSEG,
        BUKRS TYPE BSEG-BUKRS,
        LIFNR TYPE BSEG-LIFNR,
        SAKNR TYPE BSEG-SAKNR,
        HKONT TYPE BSEG-HKONT,
        GSBER TYPE BSEG-GSBER,
        COUNT TYPE I,
        DMBTR TYPE BSEG-DMBTR,
        NAME1 TYPE NAME1_GP,
       END OF TY_BSEG.

DATAITAB TYPE STANDARD TABLE OF TY_BSEG WITH HEADER LINE.
DATAWA TYPE TY_BSEG.

DATAIT_BSIK TYPE STANDARD TABLE OF BSIK WITH HEADER LINE.
DATAWA_BSIK LIKE LINE OF IT_BSIK.

DATAV_COUNT TYPE I.
DATAX_BUKRS TYPE BSEG-BUKRS.
DATAX_LIFNR TYPE BSEG-LIFNR.
DATAX_GSBER TYPE BSEG-GSBER.
DATAX_SAKNR TYPE BSEG-SAKNR.
DATAX_HKONT TYPE BSEG-HKONT.
DATAX_DMBTR TYPE BSEG-DMBTR.

SELECT COUNT(*SUMDMBTR BUKRS LIFNR GSBER SAKNR HKONT FROM BSIK INTO (V_COUNTX_DMBTRX_BUKRSX_LIFNRX_GSBERX_SAKNRX_HKONT)
WHERE BUKRS 'RCFL' AND
  SAKNR IN V_SAKNR AND
  LIFNR IN V_LIFNR AND
  GSBER IN V_GSBER
  GROUP BY BUKRS LIFNR GSBER SAKNR HKONT
  ORDER BY GSBER.
  WA-BUKRS X_BUKRS.
  WA-LIFNR X_LIFNR.
  WA-GSBER X_GSBER.
  WA-SAKNR X_SAKNR.
  WA-HKONT X_HKONT.
  WA-COUNT V_COUNT.
  WA-DMBTR X_DMBTR.
  APPEND WA TO ITAB.
ENDSELECT.

DATAV_NAME1 TYPE NAME1_GP.
LOOP AT ITAB INTO WA.
SELECT NAME1 FROM LFA1 INTO (V_NAME1)
  WHERE LIFNR WA-LIFNR.
  WA-NAME1 V_NAME1.
  MODIFY ITAB FROM WA.
  ENDSELECT.
ENDLOOP.


PERFORM BUILD_FIELDCATALOG.
PERFORM BUILD_LAYOUT.
PERFORM DISPLAY_ALV_REPORT.

FORM BUILD_FIELDCATALOG .
  FIELDCATALOG-FIELDNAME   'BUKRS'.
  FIELDCATALOG-SELTEXT_M   'Company Code'.
  FIELDCATALOG-COL_POS     1.
  APPEND FIELDCATALOG TO FIELDCATALOG.
  CLEAR  FIELDCATALOG.

  FIELDCATALOG-FIELDNAME   'LIFNR'.
  FIELDCATALOG-SELTEXT_M   'Vendor'.
  FIELDCATALOG-COL_POS     2.
  APPEND FIELDCATALOG TO FIELDCATALOG.
  CLEAR  FIELDCATALOG.

  FIELDCATALOG-FIELDNAME   'NAME1'.
  FIELDCATALOG-SELTEXT_M   'Vendor Name'.
  FIELDCATALOG-COL_POS     3.
  APPEND FIELDCATALOG TO FIELDCATALOG.
  CLEAR  FIELDCATALOG.

  FIELDCATALOG-FIELDNAME   'GSBER'.
  FIELDCATALOG-SELTEXT_M   'Business Area'.
  FIELDCATALOG-COL_POS     4.
  APPEND FIELDCATALOG TO FIELDCATALOG.
  CLEAR  FIELDCATALOG.

  FIELDCATALOG-FIELDNAME   'SAKNR'.
  FIELDCATALOG-SELTEXT_M   'GL Account'.
  FIELDCATALOG-COL_POS     5.
  APPEND FIELDCATALOG TO FIELDCATALOG.
  CLEAR  FIELDCATALOG.

  FIELDCATALOG-FIELDNAME   'HKONT'.
  FIELDCATALOG-SELTEXT_M   'Sub-GL Account'.
  FIELDCATALOG-COL_POS     6.
  APPEND FIELDCATALOG TO FIELDCATALOG.
  CLEAR  FIELDCATALOG.

  FIELDCATALOG-FIELDNAME   'COUNT'.
  FIELDCATALOG-SELTEXT_M   'Open Item'.
  FIELDCATALOG-COL_POS     7.
  APPEND FIELDCATALOG TO FIELDCATALOG.
  CLEAR  FIELDCATALOG.

  FIELDCATALOG-FIELDNAME   'DMBTR'.
  FIELDCATALOG-SELTEXT_M   'Total Amount'.
  FIELDCATALOG-COL_POS     8.
  APPEND FIELDCATALOG TO FIELDCATALOG.
  CLEAR  FIELDCATALOG.

ENDFORM.                    " BUILD_FIELDCATALOG

FORM BUILD_LAYOUT .
GD_LAYOUT-NO_INPUT          'X'.
  GD_LAYOUT-COLWIDTH_OPTIMIZE 'X'.
  GD_LAYOUT-TOTALS_TEXT       'TOTALS'(201).
ENDFORM.                    " BUILD_LAYOUT

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'  "SEE FORM
            I_CALLBACK_USER_COMMAND 'USER_COMMAND'
*            I_GRID_TITLE           = OUTTEXT
            IS_LAYOUT               GD_LAYOUT
            IT_FIELDCAT             FIELDCATALOG[]
*            IT_SPECIAL_GROUPS       = GD_TABGROUP
            IT_EVENTS               GT_EVENTS
            IS_PRINT                GD_PRNTPARAMS
            I_SAVE                  'X'
*            IS_VARIANT              = Z_TEMPLATE
       TABLES
            T_OUTTAB                ITAB

       EXCEPTIONS
            PROGRAM_ERROR           1
            OTHERS                  2.
  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.                    " DISPLAY_ALV_REPORT