在ABAP ZPROGRAM中触发自定义事件

时间:2016-06-07 10:46:52

标签: sap abap erp

我正在开发ABAP。 我需要在ABAP Z程序中触发自定义事件。 任何人都可以告诉我如何在Z程序中调用自定义事件来发送电子邮件。 (请注意:这不是工作流程,我需要在Z程序中完成此任务)。

3 个答案:

答案 0 :(得分:1)

您的描述有点模糊,因此一般来说,如果您谈到按下按钮并触发以下操作,您可能需要:

  • 在GUI-Status中为应用程序工具栏定义一个按钮,其中包含单击按钮时使用的自定义功能代码
  • 在dynpro屏幕的元素列表中添加带有“屏幕元素类型”= OK的gloabl常规属性
  • 在PAI模块中检查此全局属性以获取自定义功能代码值,然后执行/调用sendEmail函数

答案 1 :(得分:0)

您应该在事务SM62中创建自定义事件。在程序中,调用功能模块BP_EVENT_RAISE,以引发自定义事件。 “eventid”是您之前在SM62创建的事件的名称。

答案 2 :(得分:0)

使用以下代码示例通过调用功能模块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.