antelio
5/16/2018 - 7:44 PM

ZPRFI_CHECK_REVENUE

Check Revenues Locaweb

*  &---------------------------------------------------------------------*
*  & Report  ZPRFI_CHECK_REVENUE
*  &
*  &---------------------------------------------------------------------*
*  &
*  &
*  &---------------------------------------------------------------------*

  REPORT  zprfi_check_revenue.

  TABLES: ztblw_revenue, vbap.

  PARAMETERS:
    p_month TYPE month OBLIGATORY,
    p_gjahr TYPE gjahr OBLIGATORY.
  SELECT-OPTIONS:
    s_prov FOR ztblw_revenue-provisioning.
*  PARAMETERS:
*    p_post TYPE flag AS CHECKBOX.

  RANGES:
    r_prov FOR ztblw_revenue-provisioning,
    r_post FOR ztblw_revenue-status.

  DATA: BEGIN OF t_output OCCURS 0,
    kunnr TYPE kunnr,
    vbeln TYPE vbeln,
    posnr TYPE posnr,
    zzprovisioning TYPE zel_provisioning,
    matnr TYPE matnr,
    zzstatuslog TYPE vbap-zzstatuslog,
    zzstatusfis TYPE vbap-zzstatusfis,
    zzdtdeactivated TYPE vbap-zzdtdeactivate,
    month TYPE ztblw_revenue-zmonth,
    year TYPE ztblw_revenue-zyear,
    amount TYPE ztblw_revenue-amount,
    END OF t_output.
*
*  DATA: BEGIN OF t_vbap OCCURS 0,
*    vbeln TYPE vbeln,
*    posnr TYPE posnr,
*    zzprovisioning TYPE zel_provisioning,
*    matnr TYPE matnr,
*    zzstatuslog TYPE d,
*    zzstatusfis TYPE d,
*    zzdtdeactivated TYPE d,
*    END OF t_vbap.

  DATA: BEGIN OF t_revenue OCCURS 0,
    provisioning TYPE zel_provisioning,
    zmonth TYPE month,
    zyear TYPE gjahr,
    amount TYPE ztblw_revenue-amount,
    END OF t_revenue.

  START-OF-SELECTION.
*    DATA: w_post LIKE r_post.
*    REFRESH r_post.
*    IF p_post IS NOT INITIAL.
*      MOVE 'IEQX' TO w_post.
*      APPEND w_post TO r_post.
*    ELSE.
*      MOVE 'IEQX' TO w_post.
*      APPEND w_post TO r_post.
*      MOVE 'IEQ ' TO w_post.
*      APPEND w_post TO r_post.
*    ENDIF.

    SELECT provisioning zmonth zyear SUM( amount ) AS amount
      FROM ztblw_revenue
      INTO CORRESPONDING FIELDS OF TABLE t_revenue
      WHERE zmonth = p_month
        AND zyear = p_gjahr
        AND provisioning IN s_prov
      GROUP BY provisioning zmonth zyear.

    CHECK t_revenue[] IS NOT INITIAL.

    DATA: t_vbap TYPE TABLE OF vbap,
          w_vbap LIKE LINE OF t_vbap,
          w_revenue LIKE LINE OF t_revenue,
          w_output LIKE LINE OF t_output.
    SELECT *
      FROM vbap
      INTO TABLE t_vbap
      FOR ALL ENTRIES IN t_revenue
      WHERE ( zzstatuslog <> '02'
        OR zzstatusfis <> '05' )
        AND zzprovisioning = t_revenue-provisioning.
    CHECK t_vbap[] IS NOT INITIAL.
    REFRESH t_output.


    LOOP AT t_vbap INTO w_vbap.
      CLEAR w_output.
      SELECT SINGLE kunnr FROM vbak
        INTO w_output-kunnr
        WHERE vbeln = w_vbap-vbeln.


      w_output-vbeln = w_vbap-vbeln.
      w_output-posnr = w_vbap-posnr.
      w_output-zzprovisioning = w_vbap-zzprovisioning.
      w_output-matnr = w_vbap-matnr.
      w_output-zzstatuslog = w_vbap-zzstatuslog.
      w_output-zzstatusfis = w_vbap-zzstatusfis.
      w_output-zzdtdeactivated = w_vbap-zzdtdeactivate.
      READ TABLE t_revenue INTO w_revenue WITH KEY provisioning = w_vbap-zzprovisioning.
      w_output-amount = w_revenue-amount.
      w_output-year = p_gjahr.
      w_output-month = p_month.
      APPEND w_output TO t_output.
    ENDLOOP.

    CALL FUNCTION 'HR_IT_SHOW_ANY_TABLE_ON_ALV'
      TABLES
        table    = t_output
      EXCEPTIONS
        fb_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.