Hi Abapers,
My requirement is that when users creating PO from ME21N or changing PO from ME22N my code will check FRGSX(Release Strategy) & FRGZU(Release status) of the current PO with the 2 fields of my ztable and it will select the email from the ztable if they are equal.
I created the implementation in BADI ME_PROCESS_PO_CUST METHOD POST but its not working.
I am pasting my code with the screen shot of the error. Please someone tell me where I am going wrong.
METHOD IF_EX_ME_PROCESS_PO_CUST~POST.
DATA: IM_TRTYP TYPE TRTYP.
DATA: LS_MEPOHEADER TYPE MEPOHEADER.
DATA: LS_MEPOITEM TYPE MEPOITEM.
DATA: IM_ITEM TYPE REF TO IF_PURCHASE_ORDER_ITEM_MM.
DATA: LV_MAILID TYPE AD_SMTPADR,
LV_DATE TYPE CHAR10,
LV_AMT TYPE CHAR15.
DATA: LT_PO_MAILS TYPE STANDARD TABLE OF ZMM_PO_MAILS,
LW_PO_MAILS TYPE ZMM_PO_MAILS.
** Declaration for mail sending.*****************************************
DATA: T_OBJBIN TYPE STANDARD TABLE OF SOLISTI1, " Attachment data
T_OBJTXT TYPE STANDARD TABLE OF SOLISTI1, " Message body
T_OBJPACK TYPE STANDARD TABLE OF SOPCKLSTI1, " Packing list
T_RECLIST TYPE STANDARD TABLE OF SOMLRECI1, " Receipient list
T_OBJHEAD TYPE STANDARD TABLE OF SOLISTI1. " Header
DATA: WA_DOCDATA TYPE SODOCCHGI1, " Document data
WA_OBJTXT TYPE SOLISTI1, " Message body
WA_OBJBIN TYPE SOLISTI1, " Attachment data
WA_OBJPACK TYPE SOPCKLSTI1, " Packing list
WA_RECLIST TYPE SOMLRECI1. " Receipient list
DATA: W_TAB_LINES TYPE I. " Table lines
**************************************************************************
IF ( SY-TCODE EQ 'ME21N' OR SY-TCODE EQ 'ME22N' ).
IF ( IM_TRTYP = 'H' OR IM_TRTYP = 'V' ).
CALL FUNCTION 'MEPOBADIEX_POST'
EXPORTING
IM_EBELN = IM_EBELN.
CALL METHOD IM_HEADER->GET_DATA
RECEIVING
RE_DATA = LS_MEPOHEADER.
CALL METHOD IM_ITEM->GET_DATA
RECEIVING
RE_DATA = LS_MEPOITEM.
IF ( LS_MEPOHEADER-FRGZU = '' OR LS_MEPOHEADER-FRGZU = 'X' OR LS_MEPOHEADER-FRGZU = 'XX' ).
SELECT * FROM ZMM_PO_MAILS
INTO TABLE LT_PO_MAILS
WHERE FRGSX = LS_MEPOHEADER-FRGSX
AND FRGZU = LS_MEPOHEADER-FRGZU.
CALL FUNCTION 'HRGPBS_HESA_DATE_FORMAT'
EXPORTING
P_DATE = LS_MEPOHEADER-AEDAT
IMPORTING
DATESTRING = LV_DATE.
CALL FUNCTION 'EFG_GEN_GET_USER_EMAIL'
EXPORTING
I_UNAME = LS_MEPOHEADER-ERNAM
IMPORTING
E_EMAIL_ADDRESS = LV_MAILID.
LV_AMT = LS_MEPOITEM-NETWR.
*...Title
WA_DOCDATA-OBJ_NAME = 'Email notification'.
*...Description
WA_DOCDATA-OBJ_DESCR = 'Pending Purchase Orders'.
*... TABLE HEADING
WA_OBJTXT-LINE = '<p> Dear Sir, </p>'.
APPEND WA_OBJTXT TO T_OBJTXT.
WA_OBJTXT-LINE = '<p> This is to inform you that below Purchase Order has been created and subjected to release. </p>'.
APPEND WA_OBJTXT TO T_OBJTXT.
* Table display
WA_OBJTXT-LINE = '<table style="MARGIN: 10px" bordercolor="#90EE90" '.
APPEND WA_OBJTXT TO T_OBJTXT.
WA_OBJTXT-LINE = ' cellspacing="0" cellpadding="3" width="950" '.
APPEND WA_OBJTXT TO T_OBJTXT.
WA_OBJTXT-LINE = ' border="1"> <tbody><tr>'.
APPEND WA_OBJTXT TO T_OBJTXT.
* Table header
WA_OBJTXT-LINE = '<th bgcolor="#90EE90">PO Number</th>'.
APPEND WA_OBJTXT TO T_OBJTXT.
WA_OBJTXT-LINE = '<th bgcolor="#90EE90">PO Amount (INR)</th>'.
APPEND WA_OBJTXT TO T_OBJTXT.
WA_OBJTXT-LINE = '<th bgcolor="#90EE90">PO Created By</th>'.
APPEND WA_OBJTXT TO T_OBJTXT.
WA_OBJTXT-LINE = '<th bgcolor="#90EE90">PO Created On</th>'.
APPEND WA_OBJTXT TO T_OBJTXT.
WA_OBJTXT-LINE = '<th bgcolor="#90EE90">PO Creator E-Mail ID</th> </tr>'.
APPEND WA_OBJTXT TO T_OBJTXT.
* Table Contents
CONCATENATE '<td>' LS_MEPOHEADER-EBELN '</td>' INTO WA_OBJTXT-LINE.
APPEND WA_OBJTXT TO T_OBJTXT.
CONCATENATE '<td>' LV_AMT '</td>' INTO WA_OBJTXT-LINE.
APPEND WA_OBJTXT TO T_OBJTXT.
CONCATENATE '<td>' LS_MEPOHEADER-ERNAM '</td>' INTO WA_OBJTXT-LINE.
APPEND WA_OBJTXT TO T_OBJTXT.
CONCATENATE '<td>' LV_DATE '</td>' INTO WA_OBJTXT-LINE.
APPEND WA_OBJTXT TO T_OBJTXT.
CONCATENATE '<td>' LV_MAILID '</td> </tr>' INTO WA_OBJTXT-LINE.
APPEND WA_OBJTXT TO T_OBJTXT.
* Table close
WA_OBJTXT-LINE = '</tbody> </table>'.
APPEND WA_OBJTXT TO T_OBJTXT.
* HTML close
WA_OBJTXT-LINE = '</body> </html> '.
APPEND WA_OBJTXT TO T_OBJTXT.
* Document data
DESCRIBE TABLE T_OBJTXT LINES W_TAB_LINES.
READ TABLE T_OBJTXT INTO WA_OBJTXT INDEX W_TAB_LINES.
WA_DOCDATA-DOC_SIZE =
( W_TAB_LINES - 1 ) * 255 + STRLEN( WA_OBJTXT ).
* Packing data
CLEAR WA_OBJPACK-TRANSF_BIN.
WA_OBJPACK-HEAD_START = 1.
WA_OBJPACK-HEAD_NUM = 0.
WA_OBJPACK-BODY_START = 1.
WA_OBJPACK-BODY_NUM = W_TAB_LINES.
* We will pass the HTML, since we have created the message body in the HTML
WA_OBJPACK-DOC_TYPE = 'HTML'.
APPEND WA_OBJPACK TO T_OBJPACK.
CLEAR LW_PO_MAILS.
READ TABLE LT_PO_MAILS INTO LW_PO_MAILS INDEX 1.
IF SY-SUBRC = 0.
WA_RECLIST-RECEIVER = LW_PO_MAILS-EMAIL.
WA_RECLIST-REC_TYPE = 'U'.
WA_RECLIST-EXPRESS = 'X'.
APPEND WA_RECLIST TO T_RECLIST.
CLEAR: WA_RECLIST.
CALL FUNCTION 'SO_NEW_DOCUMENT_ATT_SEND_API1'
EXPORTING
DOCUMENT_DATA = WA_DOCDATA
PUT_IN_OUTBOX = 'X'
COMMIT_WORK = 'X'
TABLES
PACKING_LIST = T_OBJPACK
OBJECT_HEADER = T_OBJHEAD
CONTENTS_TXT = T_OBJTXT
RECEIVERS = T_RECLIST
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.
ENDIF.
ENDIF.
ENDIF.
ENDIF.
ENDMETHOD.