我正在ABAP中开发。我需要在 ABAP Z 程序中触发自定义事件。任何人都可以告诉我如何在 Z 程序中调用自定义事件来发送电子邮件。(请注意:这不是工作流程,我需要在Z程序中完成此任务)。
您的描述有点模糊,因此一般来说,如果您谈论要按下的按钮和要触发的以下操作,您可能需要:
- 在
- GUI-Status 中为应用程序工具栏定义一个按钮,其中包含单击按钮时使用的自定义函数代码
- 将"屏幕元素类型"= 确定的全局常规属性添加到 Dynpro 屏幕的元素列表中
- 在 PAI 模块中检查此全局属性以获取自定义函数代码值,然后执行/调用您的 sendEmail 函数
您应该在事务 SM62 中创建自定义事件。在程序中,调用函数模块BP_EVENT_RAISE,以引发自定义事件。"eventid"是您之前在 SM62 上创建的事件的名称。
使用以下代码示例,通过调用函数模块SO_NEW_DOCUMENT_SEND_API1(SAPoffice:发送新文档)以 ABAP z 程序代码发送电子邮件:
* Data Declarations
DATA: LT_MAILSUBJECT TYPE SODOCCHGI1.
DATA: LT_MAILRECIPIENTS TYPE STANDARD TABLE OF SOMLREC90 WITH HEADER LINE.
DATA: LT_MAILTXT TYPE STANDARD TABLE OF SOLI WITH HEADER LINE.
* Recipients
LT_MAILRECIPIENTS-REC_TYPE = 'U'.
LT_MAILRECIPIENTS-RECEIVER = 'sheetal@gmail.com'.
APPEND LT_MAILRECIPIENTS .
CLEAR LT_MAILRECIPIENTS .
* Subject.
LT_MAILSUBJECT-OBJ_NAME = 'TEST'.
LT_MAILSUBJECT-OBJ_LANGU = SY-LANGU.
LT_MAILSUBJECT-OBJ_DESCR = 'Mail Subject'.
* Mail Contents
LT_MAILTXT = 'This is a test mail'.
APPEND LT_MAILTXT. CLEAR LT_MAILTXT.
* Send Mail
CALL FUNCTION 'SO_NEW_DOCUMENT_SEND_API1'
EXPORTING
DOCUMENT_DATA = LT_MAILSUBJECT
TABLES
OBJECT_CONTENT = LT_MAILTXT
RECEIVERS = LT_MAILRECIPIENTS
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 EQ 0.
COMMIT WORK.
* Push mail out from SAP outbox
SUBMIT RSCONN01 WITH MODE = 'INT' AND RETURN.
ENDIF.