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.