‎2007 May 11 6:13 AM
‎2007 May 11 6:19 AM
Hi,
While doing call transaction, if an error occurs in updation, we declare bdcmsgcoll and store our messages in it, to retreive error message ...
Using function module 'FORMAT_MESSAGE' you can capture the messages.
Here is a sample of the program code for that:
LOOP AT it_messtab.
CALL FUNCTION 'FORMAT_MESSAGE'
EXPORTING
id = it_messtab-msgid
lang = it_messtab-msgspra
no = it_messtab-msgnr
v1 = it_messtab-msgv1
v2 = it_messtab-msgv2
IMPORTING
msg = g_msg
EXCEPTIONS
OTHERS = 0.
IF it_messtab-msgtyp = 'S'.
it_sucess-sucess_rec = g_msg.
it_sucess-lifnr = it_header-lifnr." Based on your field
it_sucess-tabix = v_lines.
APPEND it_sucess.
ELSEIF it_messtab-msgtyp = 'E'.
it_error-error_rec = g_msg.
it_error-lifnr = it_header-lifnr.
it_error-tabix = v_lines.
APPEND it_error.
ELSE.
it_info-info_rec = g_msg.
it_info-lifnr = it_header-lifnr.
it_info-tabix = v_lines.
APPEND it_info.
ENDIF.
ENDLOOP.
Regards
Sudheer
‎2007 May 11 6:14 AM
and also can any one give small example on that.
regards,
srinu.
‎2007 May 11 6:19 AM
Hi,
While doing call transaction, if an error occurs in updation, we declare bdcmsgcoll and store our messages in it, to retreive error message ...
Using function module 'FORMAT_MESSAGE' you can capture the messages.
Here is a sample of the program code for that:
LOOP AT it_messtab.
CALL FUNCTION 'FORMAT_MESSAGE'
EXPORTING
id = it_messtab-msgid
lang = it_messtab-msgspra
no = it_messtab-msgnr
v1 = it_messtab-msgv1
v2 = it_messtab-msgv2
IMPORTING
msg = g_msg
EXCEPTIONS
OTHERS = 0.
IF it_messtab-msgtyp = 'S'.
it_sucess-sucess_rec = g_msg.
it_sucess-lifnr = it_header-lifnr." Based on your field
it_sucess-tabix = v_lines.
APPEND it_sucess.
ELSEIF it_messtab-msgtyp = 'E'.
it_error-error_rec = g_msg.
it_error-lifnr = it_header-lifnr.
it_error-tabix = v_lines.
APPEND it_error.
ELSE.
it_info-info_rec = g_msg.
it_info-lifnr = it_header-lifnr.
it_info-tabix = v_lines.
APPEND it_info.
ENDIF.
ENDLOOP.
Regards
Sudheer
‎2007 May 11 6:24 AM
‎2007 May 11 7:21 AM
hi,
FM FORMAT_messages is used to display error messages cought using BDCMSGCOLL in the call transaction method.
example:
REPORT ZSR_BDC_CT_ERROR.
DATA: BEGIN OF ITAB OCCURS 0,
LIFNR LIKE RF02K-LIFNR,
KTOKK LIKE RF02K-KTOKK,
NAME1 LIKE LFA1-NAME1,
SORTL LIKE LFA1-SORTL,
LAND1 LIKE LFA1-LAND1,
SPRAS LIKE LFA1-SPRAS,
END OF ITAB.
DATA : BDCTAB LIKE BDCDATA OCCURS 0 WITH HEADER LINE,
it_error like itab occurs 0 with header line,
BDCMSG LIKE BDCMSGCOLL OCCURS 0 WITH HEADER LINE.
START-OF-SELECTION.
CALL FUNCTION 'GUI_UPLOAD'
EXPORTING
FILENAME = 'z:\ct.txt'
FILETYPE = 'ASC'
HAS_FIELD_SEPARATOR = 'X'
HEADER_LENGTH = 0
READ_BY_LINE = 'X'
DAT_MODE = ' '
CODEPAGE = ' '
IGNORE_CERR = ABAP_TRUE
REPLACEMENT = '#'
CHECK_BOM = ' '
IMPORTING
FILELENGTH =
HEADER =
TABLES
DATA_TAB = ITAB
EXCEPTIONS
FILE_OPEN_ERROR = 1
FILE_READ_ERROR = 2
NO_BATCH = 3
GUI_REFUSE_FILETRANSFER = 4
INVALID_TYPE = 5
NO_AUTHORITY = 6
UNKNOWN_ERROR = 7
BAD_DATA_FORMAT = 8
HEADER_NOT_ALLOWED = 9
SEPARATOR_NOT_ALLOWED = 10
HEADER_TOO_LONG = 11
UNKNOWN_DP_ERROR = 12
ACCESS_DENIED = 13
DP_OUT_OF_MEMORY = 14
DISK_FULL = 15
DP_TIMEOUT = 16
OTHERS = 17
.
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
LOOP AT ITAB.
REFRESH BDCTAB.
PERFORM BDC_DYNPRO USING 'SAPMF02K' '0100'.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'RF02K-KTOKK'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'/00'.
PERFORM BDC_FIELD USING 'RF02K-LIFNR'
ITAB-LIFNR.
PERFORM BDC_FIELD USING 'RF02K-KTOKK'
ITAB-KTOKK.
PERFORM BDC_DYNPRO USING 'SAPMF02K' '0110'.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'LFA1-SPRAS'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'/00'.
PERFORM BDC_FIELD USING 'LFA1-NAME1'
ITAB-NAME1.
PERFORM BDC_FIELD USING 'LFA1-SORTL'
ITAB-SORTL.
PERFORM BDC_FIELD USING 'LFA1-LAND1'
ITAB-LAND1.
PERFORM BDC_FIELD USING 'LFA1-SPRAS'
ITAB-SPRAS.
PERFORM BDC_DYNPRO USING 'SAPMF02K' '0120'.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'LFA1-KUNNR'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'/00'.
PERFORM BDC_DYNPRO USING 'SAPMF02K' '0130'.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'LFBK-BANKS(01)'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=ENTR'.
PERFORM BDC_DYNPRO USING 'SAPLSPO1' '0300'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=YES'.
CALL TRANSACTION 'XK01' USING BDCTAB MODE 'A' UPDATE 'A' MESSAGES INTO BDCMSG.
if sy-subrc <> 0.
move-corresponding itab to it_error.
endif.
READ TABLE BDCMSG WITH KEY MSGTYP = 'E'.
CALL FUNCTION 'FORMAT_MESSAGE'
EXPORTING
ID = BDCMSG-MSGID
LANG = 'EN'
NO = BDCMSG-MSGNR
V1 = BDCMSG-MSGV1
V2 = BDCMSG-MSGV2
V3 = BDCMSG-MSGV3
V4 = BDCMSG-MSGV4
IMPORTING
MSG = BDCMSG-MSGV1
EXCEPTIONS
NOT_FOUND = 1
OTHERS = 2
.
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
WRITE 😕 BDCMSG-MSGNR,BDCMSG-MSGV1.
ENDLOOP.
CALL FUNCTION 'GUI_DOWNLOAD'
EXPORTING
BIN_FILESIZE = BIN_FILESIZE
filename = 'z:\cerror.txt'
FILETYPE = 'ASC'
APPEND = ' '
WRITE_FIELD_SEPARATOR = 'X'
HEADER = '00'
TRUNC_TRAILING_BLANKS = ' '
WRITE_LF = 'X'
COL_SELECT = ' '
COL_SELECT_MASK = ' '
DAT_MODE = ' '
CONFIRM_OVERWRITE = ' '
NO_AUTH_CHECK = ' '
CODEPAGE = ' '
IGNORE_CERR = ABAP_TRUE
REPLACEMENT = '#'
WRITE_BOM = ' '
TRUNC_TRAILING_BLANKS_EOL = 'X'
WK1_N_FORMAT = ' '
WK1_N_SIZE = ' '
WK1_T_FORMAT = ' '
WK1_T_SIZE = ' '
IMPORTING
FILELENGTH = FILELENGTH
TABLES
data_tab = it_error
FIELDNAMES = FIELDNAMES
EXCEPTIONS
FILE_WRITE_ERROR = 1
NO_BATCH = 2
GUI_REFUSE_FILETRANSFER = 3
INVALID_TYPE = 4
NO_AUTHORITY = 5
UNKNOWN_ERROR = 6
HEADER_NOT_ALLOWED = 7
SEPARATOR_NOT_ALLOWED = 8
FILESIZE_NOT_ALLOWED = 9
HEADER_TOO_LONG = 10
DP_ERROR_CREATE = 11
DP_ERROR_SEND = 12
DP_ERROR_WRITE = 13
UNKNOWN_DP_ERROR = 14
ACCESS_DENIED = 15
DP_OUT_OF_MEMORY = 16
DISK_FULL = 17
DP_TIMEOUT = 18
FILE_NOT_FOUND = 19
DATAPROVIDER_EXCEPTION = 20
CONTROL_FLUSH_ERROR = 21
OTHERS = 22
.
IF sy-subrc <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
&----
*& Form dynpro
&----
*FORM BDC_DYNPRO USING P_P1
P_P2.
CLEAR BDCTAB.
BDCTAB-PROGRAM = P_P1.
BDCTAB-DYNPRO = P_P2.
BDCTAB-DYNBEGIN = 'X'.
APPEND BDCTAB.
ENDFORM. " dynpro
&----
*& Form bdc_field
&----
FORM BDC_FIELD USING P_P3
P_P4.
CLEAR BDCTAB.
BDCTAB-FNAM = P_P3.
BDCTAB-FVAL = P_P4.
APPEND BDCTAB.
ENDFORM. " bdc_field
‎2007 May 11 8:28 AM
hi srinu,
FM format_message can help u to know the message about that particular message id,
this FM mosty we can use in BDC,
just have look on following BDC report then u can get the IDEA about this FM.
REPORT zbdc_bill_docu_cre_vfo1
NO STANDARD PAGE HEADING MESSAGE-ID zsmep.
&----
*& Request ID: ECCK900136
*& Author : seshu
*& Date : 30/03/2007
*& This report Creates Billing document Details through BDC-Call transaction
*& method and download error files to the Application server with fixed lenth.
&----
*data declaration...
DATA: path TYPE string,
path1 TYPE string.
DATA: BEGIN OF g_tab_vf01 OCCURS 0,
fkart TYPE fkart,
fbuda TYPE fbuda,
fkdat TYPE fkdat,
prsdt TYPE prsdt,
vbeln TYPE vbeln.
DATA: END OF g_tab_vf01.
DATA: BEGIN OF g_tab_down OCCURS 0,
fkart TYPE fkart,
fbuda TYPE fbuda,
fkdat TYPE fkdat,
prsdt TYPE prsdt,
vbeln TYPE vbeln.
DATA: END OF g_tab_down.
DATA: BEGIN OF g_tab_succ OCCURS 0,
vbeln TYPE vbeln,
message TYPE string.
DATA: END OF g_tab_succ.
DATA: BEGIN OF g_tab_error OCCURS 0,
vbeln TYPE vbeln,
message TYPE string.
DATA: END OF g_tab_error.
DATA: BEGIN OF g_tab_message OCCURS 0,
vbeln TYPE vbeln,
message TYPE string.
DATA: END OF g_tab_message.
*delcarations for blocked alv...
TYPE-POOLS: slis.
DATA: l_tab_fieldcatlog TYPE slis_t_fieldcat_alv,
l_tab_fieldcatlog1 TYPE slis_t_fieldcat_alv,
l_layout TYPE slis_layout_alv,
l_events TYPE slis_t_event,
l_events1 TYPE slis_t_event,
l_wa_events LIKE LINE OF l_events,
l_pos TYPE i,
report TYPE sy-repid.
*itab for mapping...
DATA: BEGIN OF tab_map OCCURS 0.
INCLUDE STRUCTURE bdcdata.
DATA: END OF tab_map.
*itab for error messages...
DATA: BEGIN OF tab_error OCCURS 0.
INCLUDE STRUCTURE bdcmsgcoll.
DATA: END OF tab_error.
*selection screen declaration...
SELECTION-SCREEN BEGIN OF BLOCK b3 WITH FRAME TITLE text-004.
PARAMETERS: file2(200) TYPE c DEFAULT 'seshu'.
SELECTION-SCREEN END OF BLOCK b3.
SELECTION-SCREEN BEGIN OF BLOCK b2 WITH FRAME TITLE text-002.
PARAMETERS: file(200) TYPE c DEFAULT 'arteria'.
SELECTION-SCREEN END OF BLOCK b2.
AT SELECTION-SCREEN .
IF file2 EQ file.
MESSAGE e103(zsmep).
EXIT.
ENDIF.
*to get the source file from application server...
START-OF-SELECTION.
PERFORM call_ctm.
*display the output in blocked alv...
PERFORM disply_block_alv.
&----
*& Form call_ctm
&----
text
----
FORM call_ctm.
DATA: l_mode, l_message TYPE string,l_subrc TYPE sy-subrc.
l_mode = 'N'.
OPEN DATASET file2 FOR INPUT IN TEXT MODE ENCODING DEFAULT.
DO.
REFRESH tab_map.
READ DATASET file2 INTO g_tab_vf01.
IF sy-subrc <> 0.
EXIT.
ENDIF.
PERFORM sub USING 'SAPMV60A' '0102'.
PERFORM sub1 USING 'BDC_CURSOR'
'RV60A-PRSDT'.
PERFORM sub1 USING 'BDC_OKCODE'
'/00'.
PERFORM sub1 USING 'RV60A-FKART'
g_tab_vf01-fkart.
PERFORM sub1 USING 'RV60A-FBUDA'
g_tab_vf01-fbuda.
PERFORM sub1 USING 'RV60A-FKDAT'
g_tab_vf01-fkdat.
PERFORM sub1 USING 'RV60A-PRSDT'
g_tab_vf01-prsdt.
PERFORM sub1 USING 'KOMFK-VBELN(01)'
g_tab_vf01-vbeln.
PERFORM sub USING 'SAPMV60A' '0104'.
PERFORM sub1 USING 'BDC_CURSOR'
'VBRK-FKART'.
PERFORM sub1 USING 'BDC_OKCODE'
'=SICH'.
CALL TRANSACTION 'VF01' USING tab_map
MODE l_mode
UPDATE 'A'
MESSAGES INTO tab_error.
CLEAR l_subrc.
MOVE sy-subrc TO l_subrc.
LOOP AT tab_error.
IF l_subrc EQ 0.
IF tab_error-msgtyp EQ 'I' OR tab_error-msgtyp EQ 'S'.
CALL FUNCTION 'FORMAT_MESSAGE'
EXPORTING
id = tab_error-msgid
lang = 'EN'
no = tab_error-msgnr
v1 = tab_error-msgv1
v2 = tab_error-msgv2
v3 = tab_error-msgv3
v4 = tab_error-msgv4
IMPORTING
msg = l_message
EXCEPTIONS
not_found = 1
OTHERS = 2.
IF sy-subrc <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
MOVE: g_tab_vf01-vbeln TO g_tab_succ-vbeln,
l_message TO g_tab_succ-message.
APPEND g_tab_succ.
CLEAR g_tab_succ.
ELSEIF
tab_error-msgtyp = 'E'.
ELSE.
CALL FUNCTION 'FORMAT_MESSAGE'
EXPORTING
id = tab_error-msgid
lang = 'EN'
no = tab_error-msgnr
v1 = tab_error-msgv1
v2 = tab_error-msgv2
v3 = tab_error-msgv3
v4 = tab_error-msgv4
IMPORTING
msg = l_message
EXCEPTIONS
not_found = 1
OTHERS = 2.
IF sy-subrc <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
IF g_tab_message-message IS NOT INITIAL.
CONCATENATE g_tab_message-message l_message INTO g_tab_message-message SEPARATED BY ';'.
ELSE.
MOVE l_message TO g_tab_message-message.
ENDIF.
MOVE g_tab_vf01-vbeln TO g_tab_message-vbeln.
MOVE-CORRESPONDING g_tab_vf01 TO g_tab_down.
APPEND g_tab_down.
ENDIF.
ENDLOOP.
APPEND g_tab_message.
REFRESH: tab_error.
LOOP AT g_tab_message.
MOVE: g_tab_message-vbeln TO g_tab_error-vbeln,
g_tab_message-message TO g_tab_error-message.
APPEND g_tab_error.
ENDLOOP.
REFRESH: g_tab_message.
ENDDO.
CLEAR: g_tab_error, g_tab_down.
DELETE ADJACENT DUPLICATES FROM g_tab_succ[] COMPARING vbeln.
DELETE ADJACENT DUPLICATES FROM g_tab_error[] COMPARING vbeln.
CLOSE DATASET file2.
PERFORM dload_error_appli.
ENDFORM. "call_ctm
&----
*& Form sub
&----
text
----
-->P_0122 text
-->P_0123 text
----
FORM sub USING a b.
CLEAR tab_map.
tab_map-program = a.
tab_map-dynpro = b.
tab_map-dynbegin = 'X'.
APPEND tab_map.
ENDFORM. " sub
&----
*& Form sub1
&----
text
----
-->P_0153 text
-->P_0154 text
----
FORM sub1 USING c d.
CLEAR tab_map.
tab_map-fnam = c.
tab_map-fval = d.
APPEND tab_map.
ENDFORM. " sub1
&----
*& Form disply_block_alv
&----
text
----
--> p1 text
<-- p2 text
----
FORM disply_block_alv .
PERFORM fill_fieldcatlog.
PERFORM fill_fieldcatlog1.
PERFORM call_block_alv.
ENDFORM. " disply_block_alv
&----
*& Form fill_fieldcatlog
&----
text
----
--> p1 text
<-- p2 text
----
FORM fill_fieldcatlog .
PERFORM build_catlog USING l_pos 'G_TAB_SUCC' 'VBELN' '16' text-005.
PERFORM build_catlog USING l_pos 'G_TAB_SUCC' 'MESSAGE' '90' text-007.
ENDFORM. " fill_fieldcatlog
&----
*& Form build_catlog
&----
text
----
-->P_L_POS text
-->P_0348 text
-->P_0349 text
-->P_0350 text
-->P_TEXT_004 text
----
FORM build_catlog USING u_pos TYPE any
value(u_0348) TYPE any
value(u_0349) TYPE any
value(u_0350) TYPE any
u_text TYPE any.
DATA: l_wa_fieldcatlog TYPE slis_fieldcat_alv.
ADD 1 TO u_pos.
l_wa_fieldcatlog-col_pos = u_pos.
l_wa_fieldcatlog-tabname = u_0348.
l_wa_fieldcatlog-fieldname = u_0349.
l_wa_fieldcatlog-outputlen = u_0350.
l_wa_fieldcatlog-reptext_ddic = u_text.
APPEND l_wa_fieldcatlog TO l_tab_fieldcatlog.
ENDFORM. " build_catlog
&----
*& Form fill_fieldcatlog1
&----
text
----
--> p1 text
<-- p2 text
----
FORM fill_fieldcatlog1 .
PERFORM build_catlog1 USING l_pos 'G_TAB_MESSAGE' 'VBELN' '16' text-005.
PERFORM build_catlog1 USING l_pos 'G_TAB_MESSAGE' 'MESSAGE' '90' text-006.
ENDFORM. " fill_fieldcatlog1
&----
*& Form call_block_alv
&----
text
----
--> p1 text
<-- p2 text
----
FORM call_block_alv .
report = sy-repid.
CLEAR l_events.
l_wa_events-name = slis_ev_top_of_page.
l_wa_events-form = 'TOP_OF_PAGE'.
APPEND l_wa_events TO l_events.
CLEAR l_wa_events.
l_wa_events-name = slis_ev_top_of_page.
l_wa_events-form = 'ETOP_OF_PAGE'.
APPEND l_wa_events TO l_events1.
CALL FUNCTION 'REUSE_ALV_BLOCK_LIST_INIT'
EXPORTING
i_callback_program = report
I_CALLBACK_PF_STATUS_SET = ' '
I_CALLBACK_USER_COMMAND = ' '
IT_EXCLUDING =
.
IF g_tab_succ[] IS INITIAL.
MESSAGE s101(zsmep).
EXIT.
ELSE.
CALL FUNCTION 'REUSE_ALV_BLOCK_LIST_APPEND'
EXPORTING
is_layout = l_layout
it_fieldcat = l_tab_fieldcatlog
i_tabname = 'G_TAB_SUCC'
it_events = l_events
IT_SORT =
I_TEXT = ' '
TABLES
t_outtab = g_tab_succ
EXCEPTIONS
PROGRAM_ERROR = 1
MAXIMUM_OF_APPENDS_REACHED = 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.
ENDIF.
ENDIF.
IF g_tab_message[] IS INITIAL.
MESSAGE s102(zsmep).
ELSE.
DELETE g_tab_message WHERE vbeln EQ ''.
DELETE ADJACENT DUPLICATES FROM g_tab_message[] COMPARING vbeln.
CALL FUNCTION 'REUSE_ALV_BLOCK_LIST_APPEND'
EXPORTING
is_layout = l_layout
it_fieldcat = l_tab_fieldcatlog1
i_tabname = 'G_TAB_MESSAGE'
it_events = l_events1
IT_SORT =
I_TEXT = ' '
TABLES
t_outtab = g_tab_message
EXCEPTIONS
PROGRAM_ERROR = 1
MAXIMUM_OF_APPENDS_REACHED = 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.
ENDIF.
ENDIF.
CALL FUNCTION 'REUSE_ALV_BLOCK_LIST_DISPLAY'
EXPORTING
I_INTERFACE_CHECK = ' '
IS_PRINT =
I_SCREEN_START_COLUMN = 0
I_SCREEN_START_LINE = 0
I_SCREEN_END_COLUMN = 0
I_SCREEN_END_LINE = 0
IMPORTING
E_EXIT_CAUSED_BY_CALLER =
ES_EXIT_CAUSED_BY_USER =
EXCEPTIONS
PROGRAM_ERROR = 1
OTHERS = 2
.
IF sy-subrc <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
ENDFORM. " CALL_BLOCK_ALV
&----
*& Form top_of_page
&----
text
----
--> p1 text
<-- p2 text
----
FORM top_of_page .
WRITE: 'Success Records'.
ENDFORM. " top_of_page
&----
*& Form ETOP_OF_PAGE
&----
text
----
--> p1 text
<-- p2 text
----
FORM etop_of_page .
WRITE: 'Error Records'.
ENDFORM. " ETOP_OF_PAGE
&----
*& Form build_catlog1
&----
text
----
-->P_L_POS text
-->P_0473 text
-->P_0474 text
-->P_0475 text
-->P_TEXT_004 text
----
FORM build_catlog1 USING u_pos TYPE any
value(u_0473) TYPE any
value(u_0474) TYPE any
value(u_0475) TYPE any
u_text TYPE any.
DATA: l_wa_fieldcatlog1 TYPE slis_fieldcat_alv.
ADD 1 TO u_pos.
l_wa_fieldcatlog1-col_pos = u_pos.
l_wa_fieldcatlog1-tabname = u_0473.
l_wa_fieldcatlog1-fieldname = u_0474.
l_wa_fieldcatlog1-outputlen = u_0475.
l_wa_fieldcatlog1-reptext_ddic = u_text.
APPEND l_wa_fieldcatlog1 TO l_tab_fieldcatlog1.
ENDFORM. " build_catlog1
&----
*& Form DLOAD_ERROR_APPLI
&----
text
----
--> p1 text
<-- p2 text
----
FORM dload_error_appli .
OPEN DATASET file FOR OUTPUT IN TEXT MODE ENCODING DEFAULT.
DELETE ADJACENT DUPLICATES FROM g_tab_down[] COMPARING vbeln.
LOOP AT g_tab_down.
TRANSFER g_tab_down TO file.
ENDLOOP.
CLOSE DATASET file.
ENDFORM. " DLOAD_ERROR_APPLI
regards...
seshu.