tables: BDCMSGCOLL, T100.
DATA T_MSG LIKE T100-TEXT OCCURS 0.
DATA t_bdcdata LIKE BDCDATA OCCURS 0 WITH HEADER LINE. "定义BDC内表
DATA t_bdcmsg LIKE BDCMSGCOLL OCCURS 0 WITH HEADERINE. "定义消息内表
DATA L_MSTRIN(480). "消息字符串
CONSTANTS C_MASK(2) TYPE C VALUE ',.'.
************************************************************************
SELECTION-SCREEN BEGIN OF BLOCK B01 WITH FRAME. TITLE TEXT-B01.
PARAMETERS P_FILE LIKE RLGRAP-FILENAME OBLIGATORY.
PARAMETERS P_ERRLOG LIKE RLGRAP-FILENAME.
SELECTION-SCREEN END OF BLOCK B01.
SELECTION-SCREEN BEGIN OF BLOCK P WITH FRAME. TITLE txt2.
PARAMETERS P_R1 radiobutton group radi.
PARAMETERS P_R2 radiobutton group radi DEFAULT 'X'.
PARAMETERS P_R3 radiobutton group radi .
SELECTION-SCREEN end of BLOCK P.
PARAMETERS P_MODE(1) DEFAULT 'N'.
************************************************************************
AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_FILE.
* call file selector to get a file name for read-only.
PERFORM. CALL_FILE_SELECTOR USING C_MASK
'O'
'Open File'(001)
P_FILE.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_ERRLOG.
* call file selector to get a file name for over-write.
PERFORM. CALL_FILE_SELECTOR USING C_MASK
'S'
'New File'(002)
P_ERRLOG.
CALL FUNCTION 'WS_UPLOAD'
EXPORTING
filename = p_file
filetype = 'DAT'
TABLES
data_tab = t_fields
EXCEPTIONS
conversion_error = 1
file_open_error = 2
file_read_error = 3
invalid_type = 4
no_batch = 5
unknown_error = 6
invalid_table_width = 7
gui_refuse_filetransfer = 8
customer_error = 9
no_authority = 10
OTHERS = 11.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
PERFORM. BDC_DYNPRO USING 'SAPDM06Q' '0200'.
PERFORM. BDC_FIELD USING 'BDC_CURSOR' 'EQUK-WERKS'
REFRESH T_BDCMSG.
CALL TRANSACTION 'MEQ1' USING T_BDCDATA MODE P_MODE UPDATE 'S'
MESSAGES INTO T_BDCMSG.
IF SY-SUBRC <> 0.
DESCRIBE TABLE T_BDCMSG.
READ TABLE T_BDCMSG INTO BDCMSGCOLL INDEX SY-TFILL.
IF SY-SUBRC = 0.
PERFORM. GET_MESSAGE. "USING T100-TEXT BDCMSGCOLL-MSGID
ENDIF.
ENDIF.
REFRESH bdcdata. "Notice don't forget
FORM. BDC_DYNPRO USING VALUE(program)
VALUE(dynpro).
CLEAR t_bdcdata.
t_bdcdata-program = program.
t_bdcdata-dynpro = dynpro.
t_bdcdata-dynbegin = 'X'.
APPEND t_bdcdata.
ENDFORM. " BDC_DYNPRO
FORM. BDC_FIELD USING VALUE(fnam)
VALUE(fval).
CLEAR t_bdcdata.
t_bdcdata-fnam = fnam.
t_bdcdata-fval = fval.
APPEND t_bdcdata.
ENDFORM. " BDC_FIELD
FORM. GET_MESSAGE .
WRITE : / '消息类型', 20 '消息内容'.
LOOP AT T_BDCMSG.
SELECT SINGLE * FROM T100 WHERE SPRSL = T_BDCMSG-MSGSPRA
AND ARBGB = T_BDCMSG-MSGID
AND MSGNR = T_BDCMSG-MSGNR.
IF SY-SUBRC = 0.
L_MSTRING = T100-TEXT.
IF L_MSTRING CS '&1'.
REPLACE '&1' WITH T_BDCMSG-MSGV1 INTO L_MSTRING.
REPLACE '&2' WITH T_BDCMSG-MSGV2 INTO L_MSTRING.
REPLACE '&3' WITH T_BDCMSG-MSGV3 INTO L_MSTRING.
REPLACE '&4' WITH T_BDCMSG-MSGV4 INTO L_MSTRING.
ELSE.
REPLACE '&' WITH T_BDCMSG-MSGV1 INTO L_MSTRING.
REPLACE '&' WITH T_BDCMSG-MSGV2 INTO L_MSTRING.
REPLACE '&' WITH T_BDCMSG-MSGV3 INTO L_MSTRING.
REPLACE '&' WITH T_BDCMSG-MSGV4 INTO L_MSTRING.
ENDIF.
CONDENSE L_MSTRING.
WRITE: / T_BDCMSG-MSGTYP, 20 L_MSTRING.
ELSE.
WRITE: / T_BDCMSG.
ENDIF.
ENDLOOP.
FORM. CALL_FILE_SELECTOR USING P_C_MASK type C
Value(P_MODE)
Value(P_TITLE)
P_FILE.
CALL FUNCTION 'WS_FILENAME_GET'
EXPORTING
* DEF_FILENAME = ' '
* DEF_PATH = ' '
MASK = P_C_MASK
MODE = P_MODE
TITLE = P_TITLE
IMPORTING
FILENAME = P_FILE
* RC =
EXCEPTIONS
INV_WINSYS = 1
NO_BATCH = 2
SELECTION_CANCEL = 3
SELECTION_ERROR = 4
OTHERS = 5
.
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/11216390/viewspace-368920/ ,如需转载,请注明出处,否则将追究法律责任。