0% found this document useful (0 votes)
8 views8 pages

IQ09

The document outlines the ABAP report Z_IQ09, which processes data related to blocked stock and sends an email report to specified recipients. It includes data extraction, formatting of the report, and email sending functionalities. Key components include data structures, selection screens, and processing logic for generating and dispatching the report.

Uploaded by

Ameya Ranade
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
8 views8 pages

IQ09

The document outlines the ABAP report Z_IQ09, which processes data related to blocked stock and sends an email report to specified recipients. It includes data extraction, formatting of the report, and email sending functionalities. Key components include data structures, selection screens, and processing logic for generating and dispatching the report.

Uploaded by

Ameya Ranade
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
You are on page 1/ 8

*&---------------------------------------------------------------------*

*& Report Z_IQ09


*&---------------------------------------------------------------------*
*&
*&---------------------------------------------------------------------*
REPORT Z_IQ09.

TABLES :ZIQ09_EMAIL.

TYPES: BEGIN OF TY_FINAL,


PM_SELECTED TYPE PM_SELECTED,
EQTYP TYPE EQTYP,
MATNR TYPE MATNR,
MAKTX TYPE MAKTX,
SERNR TYPE GERNR,
WERK TYPE WERKS_D,
LAGER TYPE LGORT_D,
COUNT TYPE I,
EQUNR TYPE EQUNR,
STTXT TYPE J_STEXT,
LBBSA TYPE LBBSA,
ERDAT TYPE ERDAT,
ERNAM TYPE ERNAM,
AEDAZ TYPE AEDAT,
AENAZ TYPE AENAM,
* AEDAZ TYPE EQUZ_AEDAT,
* EQUZ_AEDAT TYPE AEDAZ,
EQUZ_AENAM TYPE EQUZ_AENAM,
AUFNR TYPE AUFNR,
TYPBZ TYPE TYPBZ,
USTXT TYPE J_ATEXT,
END OF TY_FINAL.

DATA:IT_RECEIVERS TYPE STANDARD TABLE OF SOMLRECI1,


WA_IT_RECEIVERS LIKE LINE OF IT_RECEIVERS,
IT_PACKING_LIST TYPE STANDARD TABLE OF SOPCKLSTI1,
GD_DOC_DATA TYPE SODOCCHGI1,
WA_IT_PACKING_LIST LIKE LINE OF IT_PACKING_LIST,
PSUBJECT(90) TYPE C,
IT_MESSAGE TYPE STANDARD TABLE OF SOLISTI1,
WA_IT_MESSAGE LIKE LINE OF IT_MESSAGE,
IT_ATTACHMENT TYPE STANDARD TABLE OF SOLISTI1 WITH HEADER LINE,
NUM_LINES TYPE I,
GV_CNT TYPE I.

DATA: IT_FINAL TYPE TABLE OF TY_FINAL.


DATA: WA_FINAL TYPE TY_FINAL.

RANGES : R_TERMAB FOR RIHEA-TERMAB,


R_AEDAT FOR EQUI-AEDAT.

"""" field symbol declartaion """""""""""""""

FIELD-SYMBOLS : <LT_PAY_DATA> TYPE ANY TABLE,


<LT_TEST> TYPE ANY.
DATA LR_PAY_DATA TYPE REF TO DATA.

START-OF-SELECTION.
PERFORM EXTACT_DATA.
IF <LT_PAY_DATA> IS NOT INITIAL.
PERFORM PROCESS_DATA.
ELSE.
MESSAGE 'Data Not Found' TYPE 'S' DISPLAY LIKE 'E'.
ENDIF.

SELECTION-SCREEN BEGIN OF BLOCK B1 WITH FRAME TITLE TEXT-001.


* PARAMETERS P_PLANT TYPE WERKS_D.
SELECT-OPTIONS : SO_PLANT FOR ZIQ09_EMAIL-PLANT NO INTERVALS.
PARAMETERS P_STOCK TYPE LBBSA DEFAULT '07' .
* PARAMETERS P_VARNT TYPE VARIANT.
SELECTION-SCREEN END OF BLOCK B1.

FORM EXTACT_DATA .

CL_SALV_BS_RUNTIME_INFO=>SET( EXPORTING DISPLAY = ABAP_FALSE


METADATA = ABAP_FALSE
DATA = ABAP_TRUE ).

R_TERMAB-SIGN = 'I'.
R_TERMAB-OPTION = 'BT'.
R_TERMAB-LOW = SY-DATUM.
R_TERMAB-HIGH = SY-DATUM.
APPEND R_TERMAB.
CLEAR R_TERMAB.

R_AEDAT-SIGN = 'I'.
R_AEDAT-OPTION = 'BT'.
R_AEDAT-LOW = SY-DATUM - 7.
R_AEDAT-HIGH = SY-DATUM.
APPEND R_AEDAT.
CLEAR R_AEDAT.

SUBMIT RIEQUI21
* WITH WERK EQ P_PLANT
WITH WERK IN SO_PLANT
WITH LBBSA EQ P_STOCK
* WITH VARIANT EQ P_VARNT
WITH DATUV EQ SY-DATUM
WITH DATUB EQ SY-DATUM
* WITH AEDAT IN R_AEDAT
EXPORTING LIST TO MEMORY AND RETURN.

"Read data from Memory


TRY.
CL_SALV_BS_RUNTIME_INFO=>GET_DATA_REF( IMPORTING R_DATA = LR_PAY_DATA ).
ASSIGN LR_PAY_DATA->* TO <LT_PAY_DATA>.
IF <LT_PAY_DATA> IS INITIAL.
MESSAGE 'No Data Found' TYPE 'E'.
ENDIF.

CATCH CX_SALV_BS_SC_RUNTIME_INFO.
MESSAGE 'Unable to retrieve ALV data' TYPE 'E'.
ENDTRY.

CL_SALV_BS_RUNTIME_INFO=>CLEAR_ALL( ).

LOOP AT <LT_PAY_DATA> ASSIGNING <LT_TEST>. "Transfering Data to Internal


Table

MOVE-CORRESPONDING <LT_TEST> TO WA_FINAL.

" Check if the date in wa_final equals the current date (SY-DATUM)
* IF WA_FINAL-AEDAZ = SY-DATUM."EQUZ_AEDAT = SY-DATUM.
APPEND WA_FINAL TO IT_FINAL.
* ENDIF.
CLEAR :WA_FINAL , <LT_TEST>.

ENDLOOP.

ENDFORM.

FORM PROCESS_DATA.

*&-- Assign the Email id and User id to Whom you want to Send -------------&
FREE WA_IT_RECEIVERS.

SELECT SRNO , PLANT , EMAIL FROM ZIQ09_EMAIL INTO TABLE @DATA(LT_ZIQ09_EMAIL)


WHERE PLANT IN @SO_PLANT.
* WHERE PLANT = @P_PLANT .
LOOP AT SO_PLANT[] INTO DATA(LS_PLANT).
LOOP AT LT_ZIQ09_EMAIL INTO DATA(WA_ZIQ09_EMAIL) WHERE PLANT = LS_PLANT-LOW.

WA_IT_RECEIVERS-RECEIVER = WA_ZIQ09_EMAIL-EMAIL.
WA_IT_RECEIVERS-REC_TYPE = 'U'.
WA_IT_RECEIVERS-COM_TYPE = 'INT'.
WA_IT_RECEIVERS-NOTIF_DEL = 'X'.
WA_IT_RECEIVERS-NOTIF_NDEL = 'X'.
APPEND WA_IT_RECEIVERS TO IT_RECEIVERS .
ENDLOOP.

DESCRIBE TABLE IT_RECEIVERS LINES NUM_LINES.

*********************For Date & Time*******************


DATA: LV_DATE_STRING TYPE CHAR20.
DATA: LV_TIME TYPE CHAR20.
DATA: LV_TIME_AM_PM TYPE CHAR8,
LV_HOUR TYPE CHAR2,
LV_MINUTE TYPE CHAR2,
LV_AMPM TYPE CHAR2.

WRITE SY-DATUM TO LV_DATE_STRING.


WRITE SY-UZEIT TO LV_TIME.

LV_HOUR = LV_TIME+0(2).
LV_MINUTE = LV_TIME+3(2).

IF LV_HOUR < 12.


LV_AMPM = 'AM'.
ELSE.
LV_HOUR = LV_HOUR - 12.
LV_AMPM = 'PM'.
ENDIF.

IF LV_HOUR = 0.
LV_HOUR = 12.
ENDIF.

LV_TIME_AM_PM = |{ LV_HOUR }:{ LV_MINUTE } { LV_AMPM }|.

* *************************************************************************

IF NUM_LINES IS NOT INITIAL.

CLEAR WA_IT_MESSAGE.
WA_IT_MESSAGE-LINE = '<html>'.
APPEND WA_IT_MESSAGE TO IT_MESSAGE.

CLEAR WA_IT_MESSAGE.
WA_IT_MESSAGE-LINE = '<head>'.
APPEND WA_IT_MESSAGE TO IT_MESSAGE.

CLEAR WA_IT_MESSAGE.
WA_IT_MESSAGE-LINE = '<body>'.
APPEND WA_IT_MESSAGE TO IT_MESSAGE.

CLEAR WA_IT_MESSAGE.
WA_IT_MESSAGE-LINE = '<p>Good Day !</p>'.
APPEND WA_IT_MESSAGE TO IT_MESSAGE.

CLEAR WA_IT_MESSAGE.
WA_IT_MESSAGE-LINE = 'Dear Team,<br>'.
APPEND WA_IT_MESSAGE TO IT_MESSAGE.

CLEAR WA_IT_MESSAGE.
WA_IT_MESSAGE-LINE = |<br><br>Please find attached the Blocked Stock casting
details as on date : { LV_DATE_STRING }, FYR|.
APPEND WA_IT_MESSAGE TO IT_MESSAGE.

CLEAR WA_IT_MESSAGE.
WA_IT_MESSAGE-LINE = |<br><br>Report includes - SAP Entries posted to blocked
stock up to { LV_TIME_AM_PM } as on date|.
APPEND WA_IT_MESSAGE TO IT_MESSAGE.

* CLEAR WA_IT_MESSAGE.
* WA_IT_MESSAGE-LINE = '<br><br><br><u>Signature :</u>'.
* APPEND WA_IT_MESSAGE TO IT_MESSAGE.

CLEAR WA_IT_MESSAGE.
WA_IT_MESSAGE-LINE = '<br><br><br>Auto-Generated from :'.
APPEND WA_IT_MESSAGE TO IT_MESSAGE.

CLEAR WA_IT_MESSAGE.
WA_IT_MESSAGE-LINE = '<br><br>SAP - Blocked Stock Report'.
APPEND WA_IT_MESSAGE TO IT_MESSAGE.

CLEAR WA_IT_MESSAGE.
WA_IT_MESSAGE-LINE = '<br><br>Thank you'.
APPEND WA_IT_MESSAGE TO IT_MESSAGE.

CLEAR WA_IT_MESSAGE.
WA_IT_MESSAGE-LINE = '</body>'.
APPEND WA_IT_MESSAGE TO IT_MESSAGE.

CLEAR WA_IT_MESSAGE.
WA_IT_MESSAGE-LINE = '</html>'.
APPEND WA_IT_MESSAGE TO IT_MESSAGE.

ENDIF.

CONCATENATE 'Selected Line'


'Equipment Chategory'
'Material'
'Material Description'
'Serial Number'
'Plant'
'Storage Location'
'Counter'
INTO IT_ATTACHMENT
SEPARATED BY CL_ABAP_CHAR_UTILITIES=>HORIZONTAL_TAB.

APPEND IT_ATTACHMENT.
CLEAR IT_ATTACHMENT.

CONCATENATE ''
'Equipment'
'System Status'
'Stock Type'
'Created On'
'Created By'
INTO IT_ATTACHMENT
SEPARATED BY CL_ABAP_CHAR_UTILITIES=>HORIZONTAL_TAB.

APPEND IT_ATTACHMENT.
CLEAR IT_ATTACHMENT.

CONCATENATE ''
'Changed On'
'Changed By'
'TS Changed'
'TS Changed By'
'Order'
'Model Number'
'User Status'
INTO IT_ATTACHMENT
SEPARATED BY CL_ABAP_CHAR_UTILITIES=>HORIZONTAL_TAB.

APPEND IT_ATTACHMENT.
CLEAR IT_ATTACHMENT.

LOOP AT IT_FINAL INTO DATA(LS_FINAL) WHERE WERK = LS_PLANT-LOW.


MOVE-CORRESPONDING LS_FINAL TO WA_FINAL.

DATA : LV_SELECTED TYPE PM_SELECTED,


LV_EQTYP TYPE EQTYP,
LV_MATNR TYPE MATNR,
LV_MAKTX TYPE MAKTX,
LV_SERNR TYPE GERNR,
LV_WERK TYPE WERKS_D,
LV_LAGER TYPE LGORT_D,
LV_COUNT TYPE C,
LV_EQUNR TYPE EQUNR,
LV_STTXT TYPE J_STEXT,
LV_LBBSA TYPE LBBSA,
LV_ERDAT TYPE CHAR10,
LV_ERNAM TYPE ERNAM,
LV_AEDAZ TYPE CHAR10,
LV_AENAZ TYPE AENAM,
LV_EQUZ_AEDAT TYPE CHAR10,
LV_EQUZ_AENAM TYPE EQUZ_AENAM,
LV_AUFNR TYPE AUFNR,
LV_TYPBZ TYPE TYPBZ,
LV_USTXT TYPE J_ATEXT.

CONCATENATE WA_FINAL-ERDAT+6(2) '.' WA_FINAL-ERDAT+4(2) '.' WA_FINAL-


ERDAT+0(4) INTO LV_ERDAT.
CONCATENATE WA_FINAL-AEDAZ+6(2) '.' WA_FINAL-AEDAZ+4(2) '.' WA_FINAL-
AEDAZ+0(4) INTO LV_AEDAZ.
CONCATENATE WA_FINAL-AEDAZ+6(2) '.' WA_FINAL-AEDAZ+4(2) '.' WA_FINAL-
AEDAZ+0(4) INTO LV_EQUZ_AEDAT.
* CONCATENATE WA_FINAL-AEDAZ+6(2) '.' WA_FINAL-EQUZ_AEDAT+4(2) '.' WA_FINAL-
EQUZ_AEDAT+0(4) INTO LV_EQUZ_AEDAT.

CONCATENATE
WA_FINAL-PM_SELECTED
WA_FINAL-EQTYP
WA_FINAL-MATNR
WA_FINAL-MAKTX
INTO IT_ATTACHMENT SEPARATED BY
CL_ABAP_CHAR_UTILITIES=>HORIZONTAL_TAB.

CONCATENATE CL_ABAP_CHAR_UTILITIES=>NEWLINE IT_ATTACHMENT


INTO IT_ATTACHMENT.

APPEND IT_ATTACHMENT.
CLEAR IT_ATTACHMENT.

CONCATENATE ''
WA_FINAL-SERNR
WA_FINAL-WERK
WA_FINAL-LAGER
LV_COUNT
WA_FINAL-EQUNR
INTO IT_ATTACHMENT SEPARATED BY
CL_ABAP_CHAR_UTILITIES=>HORIZONTAL_TAB.
APPEND IT_ATTACHMENT.
CLEAR IT_ATTACHMENT.

CONCATENATE ''
WA_FINAL-STTXT
WA_FINAL-LBBSA
LV_ERDAT
WA_FINAL-ERNAM
LV_AEDAZ
INTO IT_ATTACHMENT SEPARATED BY
CL_ABAP_CHAR_UTILITIES=>HORIZONTAL_TAB.
APPEND IT_ATTACHMENT.
CLEAR IT_ATTACHMENT.

CONCATENATE ''
WA_FINAL-AENAZ
LV_EQUZ_AEDAT
WA_FINAL-EQUZ_AENAM
WA_FINAL-AUFNR
WA_FINAL-TYPBZ
WA_FINAL-USTXT
INTO IT_ATTACHMENT SEPARATED BY
CL_ABAP_CHAR_UTILITIES=>HORIZONTAL_TAB.
APPEND IT_ATTACHMENT.
CLEAR IT_ATTACHMENT.

CLEAR : WA_FINAL, LS_FINAL .


CLEAR : LV_SELECTED ,LV_EQTYP , LV_MATNR ,LV_MAKTX, LV_SERNR,LV_WERK,
LV_LAGER , LV_COUNT , LV_EQUNR , LV_STTXT , LV_LBBSA , LV_ERDAT ,
LV_ERNAM ,
LV_AEDAZ , LV_AENAZ,LV_EQUZ_AEDAT , LV_EQUZ_AENAM , LV_AUFNR ,
LV_TYPBZ , LV_USTXT.

ENDLOOP.

DATA(LV_SUB) = |SAP Blocked Stock Report - as on { LV_DATE_STRING }


{ LV_TIME_AM_PM } |.
DESCRIBE TABLE IT_MESSAGE LINES DATA(LV_LINE).

" pack the data as RAW


CLEAR WA_IT_PACKING_LIST.
REFRESH IT_PACKING_LIST.
WA_IT_PACKING_LIST-TRANSF_BIN = SPACE.
WA_IT_PACKING_LIST-HEAD_START = 1.
WA_IT_PACKING_LIST-HEAD_NUM = 0.
WA_IT_PACKING_LIST-BODY_START = 1.
WA_IT_PACKING_LIST-BODY_NUM = LV_LINE.
WA_IT_PACKING_LIST-DOC_TYPE = 'HTM'.
APPEND WA_IT_PACKING_LIST TO IT_PACKING_LIST.
CLEAR : WA_IT_PACKING_LIST.

" pack the data as excel


WA_IT_PACKING_LIST-TRANSF_BIN = 'X'.
WA_IT_PACKING_LIST-HEAD_START = 1.
WA_IT_PACKING_LIST-HEAD_NUM = 1.
WA_IT_PACKING_LIST-BODY_START = 1.
WA_IT_PACKING_LIST-BODY_NUM = LINES( IT_ATTACHMENT ).
WA_IT_PACKING_LIST-DOC_TYPE = 'XLSX'. " You can give RAW incase if you want
just a txt file.
WA_IT_PACKING_LIST-OBJ_NAME = 'BKPF.xlsx'.
WA_IT_PACKING_LIST-OBJ_DESCR = 'IQ09' && 'OUTPUT' && '.XLSX'.
APPEND WA_IT_PACKING_LIST TO IT_PACKING_LIST.
CLEAR : WA_IT_PACKING_LIST.

GD_DOC_DATA-OBJ_NAME = 'MAILATTCH'.
GD_DOC_DATA-OBJ_LANGU = SY-LANGU.
GD_DOC_DATA-OBJ_DESCR = LV_SUB.
GD_DOC_DATA-SENSITIVTY = 'F'.
GV_CNT = LINES( IT_ATTACHMENT ).
GD_DOC_DATA-DOC_SIZE = ( GV_CNT - 1 ) * 255 + STRLEN( IT_ATTACHMENT ).

CALL FUNCTION 'SO_NEW_DOCUMENT_ATT_SEND_API1'


EXPORTING
DOCUMENT_DATA = GD_DOC_DATA
PUT_IN_OUTBOX = 'X'
COMMIT_WORK = 'X'
TABLES
PACKING_LIST = IT_PACKING_LIST
CONTENTS_BIN = IT_ATTACHMENT
CONTENTS_TXT = IT_MESSAGE
RECEIVERS = IT_RECEIVERS
EXCEPTIONS
TOO_MANY_RECEIVERS = 1
DOCUMENT_NOT_SENT = 2
DOCUMENT_TYPE_NOT_EXIST = 3
OPERATION_NO_AUTHORIZATION = 4
PARAMETER_ERROR = 5
X_ERROR = 6
ENQUEUE_ERROR = 7
OTHERS = 8.
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ELSE.
DATA(LV_FLAG) = 'X'.
ENDIF.
REFRESH: IT_ATTACHMENT,IT_RECEIVERS .
ENDLOOP.
IF LV_FLAG IS NOT INITIAL.
MESSAGE ' Mail Sent Successfully' TYPE 'S' DISPLAY LIKE 'S'.
ENDIF.
CLEAR:LV_FLAG.
ENDFORM.

You might also like