FUNCTION ZMESSAGE.
*"----------------------------------------------------------------------
*"*"本地接口:
*" IMPORTING
*" REFERENCE(BAL_S_LOG) TYPE BAL_S_LOG
*" TABLES
*" RETURN STRUCTURE BAPIRET2
*"----------------------------------------------------------------------
DATA: C_LOG_HANDLE TYPE BALLOGHNDL.
DATA:
L_S_MSG TYPE BAL_S_MSG,
L_S_PAR TYPE BAL_S_PAR,
L_S_MY_DATA TYPE BAL_S_EX06.
DATA:
L_T_LOG_HANDLE TYPE BAL_T_LOGH,
L_S_NEW_LOGNUMBER TYPE BAL_S_LGNM,
L_T_NEW_LOGNUMBERS TYPE BAL_T_LGNM.
* types of callback routines
CONSTANTS:
CONST_CALLBACK_FORM TYPE BALUET VALUE ' ',
CONST_NAME_MSG_IDENT(9) TYPE C VALUE 'MSG_IDENT',
CONST_CALLBACK_FUNCTION TYPE BALUET VALUE 'F'.
DATA:
G_IDENTIFIER(10) TYPE N,
G_LOGNUMBER TYPE BALHDR-LOGNUMBER.
* create the log header
LOOP AT RETURN.
CALL FUNCTION 'BAL_LOG_CREATE'
EXPORTING
I_S_LOG = BAL_S_LOG
IMPORTING
E_LOG_HANDLE = C_LOG_HANDLE
EXCEPTIONS
OTHERS = 1.
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
*****************************************************************************************
* create a message
CLEAR L_S_MSG.
L_S_MSG-MSGTY = RETURN-TYPE.
L_S_MSG-MSGID = RETURN-ID.
L_S_MSG-MSGNO = RETURN-NUMBER.
L_S_MSG-MSGV1 = RETURN-MESSAGE_V1.
L_S_MSG-MSGV2 = RETURN-MESSAGE_V2.
L_S_MSG-MSGV3 = RETURN-MESSAGE_V3.
L_S_MSG-MSGV4 = RETURN-MESSAGE_V4.
* define callback routine
L_S_MSG-PARAMS-CALLBACK-USEREXITP = SY-REPID.
L_S_MSG-PARAMS-CALLBACK-USEREXITF = 'CALLBACK_MSG_DETAIL'.
L_S_MSG-PARAMS-CALLBACK-USEREXITT = CONST_CALLBACK_FORM.
* define an identifer. This is used to establish the link between
* the message and its additional data
ADD 1 TO G_IDENTIFIER.
* put his identifier into the parameters of the message
L_S_PAR-PARNAME = CONST_NAME_MSG_IDENT.
L_S_PAR-PARVALUE = G_IDENTIFIER.
APPEND L_S_PAR TO L_S_MSG-PARAMS-T_PAR.
* create the message
CALL FUNCTION 'BAL_LOG_MSG_ADD'
EXPORTING
I_LOG_HANDLE = C_LOG_HANDLE
I_S_MSG = L_S_MSG
EXCEPTIONS
OTHERS = 1.
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
* save this log
INSERT C_LOG_HANDLE INTO TABLE L_T_LOG_HANDLE.
CALL FUNCTION 'BAL_DB_SAVE'
EXPORTING
I_T_LOG_HANDLE = L_T_LOG_HANDLE
IMPORTING
E_NEW_LOGNUMBERS = L_T_NEW_LOGNUMBERS
EXCEPTIONS
OTHERS = 1.
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
ENDLOOP.
ENDFUNCTION.
导入:BAL_S_LOG TYPE BAL_S_LOG
表:RETURN LIKE BAPIRET2
使用:
DATA: BAL_S_LOG TYPE BAL_S_LOG.
BAL_S_LOG-OBJECT = 'ZFSD0010'.
BAL_S_LOG-EXTNUMBER =
* define callback routine
BAL_S_LOG-PARAMS-CALLBACK-USEREXITP = SY-REPID.
BAL_S_LOG-PARAMS-CALLBACK-USEREXITF = 'CALLBACK_LOG_DETAIL'.
BAL_S_LOG-PARAMS-CALLBACK-USEREXITT = ''.
BAL_S_LOG-SUBOBJECT = 'Z01'.
CALL FUNCTION 'ZMESSAGE'
EXPORTING
BAL_S_LOG = BAL_S_LOG
TABLES
RETURN = RETURN.
配置使用的T-CODE:SLG0
查看使用的T-CODE:SLG1