两个FUNCTION MODULE
热度 1已有 686 次阅读2011-7-24 17:14
|个人分类:ABAP FUNCTION|
1> MESSAGE_TEXT_BUILD 这个函数是用来拼接消息的,就是用来将消息转化成文本,可以直接输出!我们在调用其他一些函数的时候经常看到这样一段代码:
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
一条消息是由消息id、消息类型和消息号决定的。上面是用手工的方法输出一个消息。如果不想使用这种方法,我们就可以调用函数MESSAGE_TEXT_BUILD,将要输出的消息转化成可以直接输出的文本。在调用函数的时候,同样也要指定消息id、消息类型和消息号。调用函数的样式如下:
CALL FUNCTION 'MESSAGE_TEXT_BUILD'
EXPORTING
msgid = wa_bdcmsg-msgid
msgnr = wa_bdcmsg-msgnr
msgv1 = wa_bdcmsg-msgv1
msgv2 = wa_bdcmsg-msgv2
msgv3 = wa_bdcmsg-msgv3
msgv4 = wa_bdcmsg-msgv4
IMPORTING
message_text_output = g_message.
这样我们得到的g_message,就包含了消息id 消息类型等各种信息,并且可以直接输出!
2> REUSE_ALV_FIELDCATALOG_MERGE 这个函数用于ALV输出报表的时候,要填充内部表fieldcat,这个函数需要我们在se11里面建立一个结构,这个结构要与要输出数据的内部表结构一致!
CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
EXPORTING
i_program_name =sy-repid
i_structure_name = 'ZS029_LITAOREPORT3_ALV'
CHANGING
ct_fieldcat = it_field
EXCEPTIONS
inconsistent_interface = 1
program_error = 2
OTHERS = 3
.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
这样就可以填充内部表it_field了