Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
пособие авар.doc
Скачиваний:
62
Добавлен:
02.09.2019
Размер:
2.34 Mб
Скачать

Формирование структуры признаков из настроечной таблицы

В предыдущем примере по чтению инфо-куба структура признаков создается статически. Обычно признаков нужно добавить большое кол-во или формировать разные структуры в зависимости от «ситуации». Поэтому лучше формировать из настроечной таблицы:

- в настроечной таблице перечислены необходимые поля;

- структура формируется из структуры настроечной таблицы:

  CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'     EXPORTING       i_structure_name       = 'ZEXPORT_ASTK'     CHANGING       ct_fieldcat            = lt_fieldcat     EXCEPTIONS       inconsistent_interface = 1       program_error          = 2.    

Отправка e-mail сообщения из abap на внешний адрес

Представленная функция выполняет отправку произвольного сообщения электронной почты внешним адресатам. Эта возможность полезна для отправки различных уведомлений пользователям (например, уведомление об ошибочной загрузке файла).

FUNCTION Z_S_SEND_MESSAGE.

*"----------------------------------------------------------------------

*"*"Локальный интерфейс:

*" IMPORTING

*" REFERENCE(I_MSG_ADDR) TYPE STRING

*" REFERENCE(I_HEADER) TYPE STRING

*" REFERENCE(I_BODY) TYPE ZST_STRING

*"----------------------------------------------------------------------

CONSTANTS: C_CHARX(1) TYPE C VALUE 'X',

C_CHARU(1) TYPE C VALUE 'U',

C_YES(3) TYPE C VALUE 'Yes', "#EC NEEDED

C_NO(2) TYPE C VALUE 'No'. "#EC NEEDED

DATA:

* Comment data comes from function module CATSXT_SIMPLE_TEXT_EDITOR

WA_COMMENTS TYPE LINE OF CATSXT_LONGTEXT_ITAB,

IT_COMMENTS TYPE CATSXT_LONGTEXT_ITAB.

*-- Work area for all the internal tables used for Sending Mail

DATA: WA_PACKING_LIST TYPE SOPCKLSTI1,

WA_CONTENTS_TXT TYPE SOLISTI1,

WA_RECLIST TYPE SOMLRECI1.

*-- Variables used for Sending Mail

DATA: GV_SMTP_ADDR TYPE ADR6-SMTP_ADDR,

SENDER TYPE SOEXTRECI1-RECEIVER,

SEND_ADR_TYPE TYPE SO_ADR_TYP.

DATA: GV_COUNT TYPE SY-INDEX,

GV_LINE_NO TYPE SY-INDEX. "#EC NEEDED

*-- MAIL related Internal tables

DATA: WA_DOC_CHNG TYPE SODOCCHGI1, " document attributes

IT_PACKING_LIST TYPE STANDARD TABLE OF SOPCKLSTI1, " attachment table

IT_CONTENTS_TXT TYPE STANDARD TABLE OF SOLISTI1, " object text

IT_RECLIST TYPE STANDARD TABLE OF SOMLRECI1. " mail recipients

* For GUI shortcut attachment

** DATA: it_shortcut TYPE soli_tab.

* Initialize some data

GV_SMTP_ADDR = I_MSG_ADDR.

SENDER = 'NO.REPLY@adm.gazprom.ru'.

SEND_ADR_TYPE = 'SMTP'.

**Put the Email ID of approver in list of Recepients of Notification Email.

* Get the mail Id for Purchase Group Owner

CLEAR: WA_RECLIST, IT_RECLIST.

*-- Populate Mail Id's

WA_RECLIST-REC_TYPE = C_CHARU. "U = Internet address

WA_RECLIST-EXPRESS = C_CHARX. "Send express "X = Value for activated

WA_RECLIST-RECEIVER = GV_SMTP_ADDR.

APPEND WA_RECLIST TO IT_RECLIST.

CLEAR: GV_SMTP_ADDR, WA_RECLIST.

*-- If receiver table is not initial

CHECK IT_RECLIST[] IS NOT INITIAL.

*--To check Mail ID's internal table should not be Empty.

*--populate document attributes

*-- Mail subject line

CLEAR: WA_DOC_CHNG.

WA_DOC_CHNG-OBJ_NAME = 'HEADING'.

WA_DOC_CHNG-OBJ_DESCR = I_HEADER.

*-- Mail body

IF IT_COMMENTS IS NOT INITIAL.

CLEAR: WA_CONTENTS_TXT, IT_CONTENTS_TXT.

WA_CONTENTS_TXT = 'Comments from Requestor:'(029).

APPEND WA_CONTENTS_TXT TO IT_CONTENTS_TXT.

APPEND INITIAL LINE TO IT_CONTENTS_TXT.

LOOP AT IT_COMMENTS INTO WA_COMMENTS.

WA_CONTENTS_TXT = WA_COMMENTS.

APPEND WA_CONTENTS_TXT TO IT_CONTENTS_TXT.

ENDLOOP.

APPEND INITIAL LINE TO IT_CONTENTS_TXT.

ENDIF.

LOOP AT I_BODY INTO WA_CONTENTS_TXT.

APPEND WA_CONTENTS_TXT TO IT_CONTENTS_TXT.

ENDLOOP.

APPEND INITIAL LINE TO IT_CONTENTS_TXT.

*-- Document size

CLEAR: GV_LINE_NO, GV_COUNT.

DESCRIBE TABLE IT_CONTENTS_TXT LINES GV_COUNT.

GV_LINE_NO = GV_COUNT.

READ TABLE IT_CONTENTS_TXT INTO WA_CONTENTS_TXT INDEX GV_COUNT.

WA_DOC_CHNG-DOC_SIZE = ( GV_COUNT - 1 ) * 255 + STRLEN( WA_CONTENTS_TXT ).

*-- Populate packing list for body text

WA_PACKING_LIST-HEAD_START = 1.

WA_PACKING_LIST-HEAD_NUM = 0.

WA_PACKING_LIST-BODY_START = 1.

WA_PACKING_LIST-BODY_NUM = GV_COUNT."v_table_lines.

WA_PACKING_LIST-DOC_TYPE = 'RAW'.

APPEND WA_PACKING_LIST TO IT_PACKING_LIST.

CLEAR WA_PACKING_LIST.

*-- Sending the EMail document in given format

CALL FUNCTION 'SO_DOCUMENT_SEND_API1'

EXPORTING

DOCUMENT_DATA = WA_DOC_CHNG

PUT_IN_OUTBOX = C_CHARX "'X'

SENDER_ADDRESS = SENDER

SENDER_ADDRESS_TYPE = SEND_ADR_TYPE

COMMIT_WORK = C_CHARX "'X'

TABLES

PACKING_LIST = IT_PACKING_LIST

CONTENTS_TXT = IT_CONTENTS_TXT

RECEIVERS = IT_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.

IF SY-SUBRC <> 0.

MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO

WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.

ENDIF.

ENDFUNCTION.