CDS View Used in Select + Subquery

You might also like

Download as txt, pdf, or txt
Download as txt, pdf, or txt
You are on page 1of 7

**----------------------------------------------------------------------

**CONFIDENTIAL AND PROPRIETARY


**COPYRIGHT 2015, QATAR PETROCHEMICALS PROJECT
**ALL RIGHTS RESERVED
**----------------------------------------------------------------------*
**----------------------------------------------------------------------*
** PROGRAM NAME :zhr_py_r_0032_lock_FRM
** CREATED BY :Pankaj Kumar
** CREATION DATE :2016-08-01
** DER NUMBER :PY_R_0032
** TRANSPORT NUMBER :DERK907789
** DESCRIPTION :Locked_Work_Items Report
**----------------------------------------------------------------------*
** REVISION HISTORY-----------------------------------------------------*
** REFERENCE TYPE: <DER OR TPR OR SCR>
** REFERENCE NO:
** CHANGED BY:
** CHANGE DATE: YYYY-MM-DD
** TRANSPORT NUMBER:
** DESCRIPTION:
**----------------------------------------------------------------------*
FORM fetch_data.

SELECT
report_type,
request_number,
dependent_id,
dependent_name,
personnel_number,
quota_type,
quota_number,
request_status,
amount,
error " Posting Error Message
FROM
zhr_lock_data
INTO CORRESPONDING FIELDS OF TABLE @i_lock
WHERE request_status IN @s_sts.

ENDFORM.

FORM display_report.
*Local Data Declarations
DATA: lwa_layout TYPE slis_layout_alv.
CONSTANTS: lc_a TYPE char1 VALUE 'A'. " A of type CHAR1

lwa_layout-colwidth_optimize = abap_true.
lwa_layout-zebra = abap_true.

PERFORM field_catalog.

CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'


EXPORTING
i_callback_program = sy-repid
is_layout = lwa_layout
it_fieldcat = i_fieldcat
i_default = 'X'
i_save = lc_a
* IS_VARIANT =
TABLES
t_outtab = i_lock
EXCEPTIONS
program_error = 1
OTHERS = 2.
IF sy-subrc <> 0.
* Implement suitable error handling here
ENDIF. " IF sy-subrc <> 0

ENDFORM.
*&---------------------------------------------------------------------*
*& Form FIELD_CATALOG
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM field_catalog_build USING fp_tabname TYPE slis_tabname
fp_fieldname TYPE slis_fieldname
fp_seltext_l TYPE char100. " Seltext_l of type
CHAR100.

DATA: lwa_fld TYPE slis_fieldcat_alv.

CLEAR lwa_fld.

lwa_fld-tabname = fp_tabname.
lwa_fld-fieldname = fp_fieldname.
lwa_fld-seltext_l = fp_seltext_l.

APPEND lwa_fld TO i_fieldcat.

ENDFORM.
*&---------------------------------------------------------------------*
*& Form FIELD_CATALOG
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM field_catalog .

PERFORM field_catalog_build USING :


* Report Type
'I_LOCK'(014)
'REPORT_TYPE'(002)
'REPORT_TYPE'(002),
* Request Number
'I_LOCK'(014)
'REQUEST_NUMBER'(003)
'REQUEST_NUMBER'(003),
* Dependent ID
'I_LOCK'(014)
'DEPENDENT_ID'(004)
'DEPENDENT_ID'(004),
* Dependent Name
'I_LOCK'(014)
'DEPENDENT_NAME'(005)
'DEPENDENT_NAME'(005),
* Personnel Number
'I_LOCK'(014)
'PERSONNEL_NUMBER'(006)
'PERSONNEL_NUMBER'(006),
* Quota Type
'I_LOCK'(014)
'QUOTA_TYPE'(007)
'QUOTA_TYPE'(007),
* Quota Number
'I_LOCK'(014)
'QUOTA_NUMBER'(008)
'QUOTA_NUMBER'(008),
* Request Status
'I_LOCK'(014)
'REQUEST_STATUS'(009)
'REQUEST_STATUS'(009),
* Amount
'I_LOCK'(014)
'AMOUNT'(010)
'AMOUNT'(010),
* Error
'I_LOCK'(014)
'ERROR'(011)
'ERROR'(011).

ENDFORM.
*&---------------------------------------------------------------------*
*& Form FETCH_ADMIN
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM fetch_admin .

CONSTANTS : lc_pad TYPE char3 VALUE 'PAD', " Pad of type CHAR3
lc_email TYPE char1 VALUE 'E', " Email of type CHAR1
lc_target TYPE char2 VALUE 'TO', " Target of type CHAR2
lc_subty TYPE char4 VALUE '0010'. " Subty of type CHAR4

DATA : lwa_recipient TYPE zut_email_recipient. " Email Recipient list Structure

SELECT usrid_long " Communication: Long Identification/Number


FROM pa0105 " HR Master Record: Infotype 0105 (Communications)
INTO TABLE @DATA(li_email)
WHERE pernr IN
(
SELECT pernr " Personnel number
FROM pa0001 " HR Master Record: Infotype 0001 (Org. Assignment)
WHERE sachp = @lc_pad "Personnel Administrator
AND begda LE @sy-datum
AND endda GE @sy-datum )
AND begda LE @sy-datum
AND endda GE @sy-datum
AND subty = @lc_subty.

IF s_pernr IS NOT INITIAL.


SELECT usrid_long " Communication: Long Identification/Number
FROM pa0105 " HR Master Record: Infotype 0105 (Communications)
APPENDING TABLE @li_email
WHERE pernr = @s_pernr
AND begda LE @sy-datum
AND endda GE @sy-datum
AND subty = @lc_subty.
ENDIF. " IF s_pernr IS NOT INITIAL

SORT li_email.
DELETE ADJACENT DUPLICATES FROM li_email.

IF li_email IS NOT INITIAL.


LOOP AT li_email ASSIGNING FIELD-SYMBOL(<lfs_email>) .
CLEAR lwa_recipient.

lwa_recipient-recipient_type = lc_email.
lwa_recipient-recipient_target = lc_target.
lwa_recipient-recipient = <lfs_email>-usrid_long.

APPEND lwa_recipient TO i_recipient.

ENDLOOP. " LOOP AT li_email ASSIGNING FIELD-SYMBOL(<lfs_email>)


ENDIF. " IF li_email IS NOT INITIAL

ENDFORM.
*&---------------------------------------------------------------------*
*& Form SEND_EMAIL
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM send_email .

CONSTANTS : lc_sub TYPE tdobname VALUE 'LOCKED_WORKITEMS_SUB', " Name


lc_body TYPE tdobname VALUE 'LOCKED_WORKITEMS_BDY', " Name
lc_st_id TYPE tdid VALUE 'ST', " Text ID
lc_st_obj TYPE tdobject VALUE 'TEXT', " Texts:
Application Object
lc_raw TYPE so_obj_tp VALUE 'RAW'. " Code for
document class

DATA : li_lines TYPE bbpt_tline,


"Text Line
l_subject TYPE string,
lc_file_type TYPE zzexten VALUE 'XLS',
l_sender TYPE syst_uname,
"Sender
li_body TYPE bcsy_text,
"For body of email
lwa_body TYPE soli,
"For body of email
lwa_str TYPE zatcontent_st, "
Email Attachment Content
li_str TYPE STANDARD TABLE OF zatcontent_st INITIAL SIZE 0, "
Email Attachment Content
li_attachment TYPE STANDARD TABLE OF zatattachment_st INITIAL SIZE 0, "
Email Attachment
lwa_attachment TYPE zatattachment_st. "
Email Attachment

FIELD-SYMBOLS: <lfs_lines> TYPE tline. " SAPscript: Text Lines

*=========================================================
*Read email Subject from SO10 text
*=========================================================
CALL FUNCTION 'READ_TEXT'
EXPORTING
id = lc_st_id " ST
language = sy-langu
name = lc_sub
object = lc_st_obj "TEXT
TABLES
lines = li_lines
EXCEPTIONS
id = 1
language = 2
name = 3
not_found = 4
object = 5
reference_check = 6
wrong_access_to_archive = 7
OTHERS = 8.
IF sy-subrc = 0.
LOOP AT li_lines ASSIGNING <lfs_lines>.
CONCATENATE <lfs_lines>-tdline sy-datum sy-uzeit
INTO l_subject
SEPARATED BY space.
ENDLOOP. " LOOP AT li_lines ASSIGNING <lfs_lines>
ENDIF. " IF sy-subrc = 0

CLEAR li_lines[].

*=========================================================
*Read email Body from SO10 text
*=========================================================
CALL FUNCTION 'READ_TEXT'
EXPORTING
id = lc_st_id " ST
language = sy-langu
name = lc_body
object = lc_st_obj "TEXT
TABLES
lines = li_lines
EXCEPTIONS
id = 1
language = 2
name = 3
not_found = 4
object = 5
reference_check = 6
wrong_access_to_archive = 7
OTHERS = 8.
IF sy-subrc = 0.
LOOP AT li_lines ASSIGNING <lfs_lines>.
lwa_body = <lfs_lines>-tdline.
APPEND lwa_body TO li_body.
CLEAR lwa_body.
ENDLOOP. " LOOP AT li_lines ASSIGNING <lfs_lines>
ENDIF. " IF sy-subrc = 0

*=========================================================
* Create Attachment - Log
*=========================================================
PERFORM set_header CHANGING lwa_str-line.

APPEND lwa_str TO li_str.

DATA : lc_quota TYPE char20, " Quota of type CHAR20


lc_amount TYPE char20. " Amount of type CHAR20

LOOP AT i_lock ASSIGNING FIELD-SYMBOL(<lfs_lock>).

CLEAR : lc_quota,
lc_amount.
lc_quota = <lfs_lock>-quota_number.
lc_amount = <lfs_lock>-amount.

CONCATENATE <lfs_lock>-report_type
<lfs_lock>-request_number
<lfs_lock>-dependent_id
<lfs_lock>-dependent_name
<lfs_lock>-personnel_number
<lfs_lock>-quota_type
lc_quota
<lfs_lock>-request_status
lc_amount
<lfs_lock>-error
INTO lwa_str-line SEPARATED BY cl_abap_char_utilities=>horizontal_tab.

APPEND lwa_str TO li_str.


ENDLOOP. " LOOP AT i_lock ASSIGNING FIELD-SYMBOL(<lfs_lock>)

lwa_attachment-f_name = 'Locked Work Items'(012).


lwa_attachment-f_exten = lc_file_type.
lwa_attachment-f_content = li_str.
lwa_attachment-f_zip_flag = abap_true.
APPEND lwa_attachment TO li_attachment.
CLEAR lwa_attachment.

*===========================================================
* Set Sender
*===========================================================
l_sender = sy-uname.

*===========================================================
* Set Email
*===========================================================

IF i_recipient IS NOT INITIAL.


* Call this function module for sending emails
CALL FUNCTION 'Z_AT_SEND_EMAIL'
EXPORTING
im_format = lc_raw
im_senduser = l_sender
im_subject = l_subject
im_mail_attachment = li_attachment
TABLES
t_recepient_list = i_recipient
t_mail_body = li_body
EXCEPTIONS
email_error = 1
sender_conflict = 2
OTHERS = 3.

IF sy-subrc IS INITIAL.
COMMIT WORK.
ENDIF. " IF sy-subrc IS INITIAL

ENDIF. " IF i_recipient IS NOT INITIAL

ENDFORM.
*&---------------------------------------------------------------------*
*& Form SET_HEADER
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* <--P_LWA_STR_LINE text
*----------------------------------------------------------------------*
FORM set_header CHANGING p_string.
CONCATENATE
'REPORT_TYPE'(002)
'REQUEST_NUMBER'(003)
'DEPENDENT_ID'(004)
'DEPENDENT_NAME'(005)
'PERSONNEL_NUMBER'(006)
'QUOTA_TYPE'(007)
'QUOTA_NUMBER'(008)
'REQUEST_STATUS'(009)
'AMOUNT'(010)
'ERROR'(011)
INTO p_string SEPARATED BY cl_abap_char_utilities=>horizontal_tab.

ENDFORM.

You might also like