<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Re: capturing bdc messages and modifying internal table in Application Development and Automation Discussions</title>
    <link>https://community.sap.com/t5/application-development-and-automation-discussions/capturing-bdc-messages-and-modifying-internal-table/m-p/3427285#M823137</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;While doing call transaction, if an error occurs in updation, we declare bdcmsgcoll and store our messages in it, but how to retreive error message from it .&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Internal table BDCMSG like BDCMSGCOLL.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Syntax:&lt;/P&gt;&lt;P&gt;DATA KTAB LIKE BDCMSGCOLL OCCURS 0 WITH HEADER LINE.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Example code:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;tables zemptab1.&lt;/P&gt;&lt;P&gt;data: begin of itab1 occurs 0,&lt;/P&gt;&lt;P&gt;     str(255),&lt;/P&gt;&lt;P&gt;     end of itab1.&lt;/P&gt;&lt;P&gt;data: begin of itab occurs 0,&lt;/P&gt;&lt;P&gt;      zempid3 like zemptab1-zempid3,&lt;/P&gt;&lt;P&gt;      zename3 like zemptab1-zename3,&lt;/P&gt;&lt;P&gt;      zedepid like zemptab1-zedepid,&lt;/P&gt;&lt;P&gt;      zsalkey like zemptab1-zsalkey,&lt;/P&gt;&lt;P&gt;      salary like zemptab1-salary,&lt;/P&gt;&lt;P&gt;end of itab.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;data bdc_data like bdcdata occurs 0 with header line.&lt;/P&gt;&lt;P&gt;data: bdcmsg like bdcmsgcoll occurs 0 with header line.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;data: var1 like rlgrap-filename.&lt;/P&gt;&lt;P&gt;data : name1 type string.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;call function 'KD_GET_FILENAME_ON_F4'&lt;/P&gt;&lt;P&gt;  exporting&lt;/P&gt;&lt;P&gt;    program_name  = syst-repid&lt;/P&gt;&lt;P&gt;    dynpro_number = syst-dynnr&lt;/P&gt;&lt;P&gt;  changing&lt;/P&gt;&lt;P&gt;    file_name     = var1.&lt;/P&gt;&lt;P&gt;if sy-subrc &amp;lt;&amp;gt; 0.&lt;/P&gt;&lt;P&gt;endif.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;name1 = var1.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;call function 'GUI_UPLOAD'&lt;/P&gt;&lt;P&gt;  exporting&lt;/P&gt;&lt;P&gt;    filename                      = name1&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  FILETYPE                      = 'ASC'&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;   has_field_separator           = 'X'&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  HEADER_LENGTH                 = 0&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  READ_BY_LINE                  = 'X'&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  DAT_MODE                      = ' '&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  CODEPAGE                      = ' '&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  IGNORE_CERR                   = ABAP_TRUE&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  REPLACEMENT                   = '#'&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  CHECK_BOM                     = ' '&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  VIRUS_SCAN_PROFILE            =&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;IMPORTING&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  FILELENGTH                    =&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  HEADER                        =&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  tables&lt;/P&gt;&lt;P&gt;    data_tab                      = itab.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;EXCEPTIONS&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  FILE_OPEN_ERROR               = 1&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  FILE_READ_ERROR               = 2&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  NO_BATCH                      = 3&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  GUI_REFUSE_FILETRANSFER       = 4&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  INVALID_TYPE                  = 5&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  NO_AUTHORITY                  = 6&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  UNKNOWN_ERROR                 = 7&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  BAD_DATA_FORMAT               = 8&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  HEADER_NOT_ALLOWED            = 9&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  SEPARATOR_NOT_ALLOWED         = 10&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  HEADER_TOO_LONG               = 11&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  UNKNOWN_DP_ERROR              = 12&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  ACCESS_DENIED                 = 13&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  DP_OUT_OF_MEMORY              = 14&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  DISK_FULL                     = 15&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  DP_TIMEOUT                    = 16&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  OTHERS                        = 17&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;         .&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*IF sy-subrc &amp;lt;&amp;gt; 0.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;        WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;loop at itab1.&lt;/P&gt;&lt;P&gt;split itab1-str at ',' into itab-zempid3 itab-zename3 itab-zedepid itab-zsalkey." ITAB-SALARY.&lt;/P&gt;&lt;P&gt;append itab.&lt;/P&gt;&lt;P&gt;endloop.&lt;/P&gt;&lt;P&gt;loop at itab.&lt;/P&gt;&lt;P&gt;insert into zemptab1 values itab.&lt;/P&gt;&lt;P&gt;if sy-subrc = 0.&lt;/P&gt;&lt;P&gt;message 'RECORDS INSERTED SUCCESSFULLY' type 'S'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;else.&lt;/P&gt;&lt;P&gt;perform proginfo using 'SAPLSD41' '2200'.&lt;/P&gt;&lt;P&gt;perform fldinfo using zemptab1-zempid3 itab-zempid3.&lt;/P&gt;&lt;P&gt;perform fldinfo using zemptab1-zename3 itab-zename3.&lt;/P&gt;&lt;P&gt;perform fldinfo using zemptab1-zedepid itab-zedepid.&lt;/P&gt;&lt;P&gt;perform fldinfo using zemptab1-zsalkey itab-zsalkey.&lt;/P&gt;&lt;P&gt;perform fldinfo using zemptab1-salary itab-salary.&lt;/P&gt;&lt;P&gt;endif.&lt;/P&gt;&lt;P&gt;endloop.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;call transaction 'SM30' using bdc_data mode 'N' messages into bdcmsg.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;loop at bdcmsg.&lt;/P&gt;&lt;P&gt;write : / bdcmsg.&lt;/P&gt;&lt;P&gt;endloop.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;form proginfo using program dynpro.&lt;/P&gt;&lt;P&gt;clear bdc_data.&lt;/P&gt;&lt;P&gt;bdc_data-program = program.&lt;/P&gt;&lt;P&gt;bdc_data-dynpro = dynpro.&lt;/P&gt;&lt;P&gt;bdc_data-dynbegin = 'X'.&lt;/P&gt;&lt;P&gt;append bdc_data.&lt;/P&gt;&lt;P&gt;endform.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;form fldinfo using fnam fval.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;IF FVAL &amp;lt;&amp;gt; NODATA.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;clear bdc_data.&lt;/P&gt;&lt;P&gt;bdc_data-fnam = fnam.&lt;/P&gt;&lt;P&gt;bdc_data-fval = fval.&lt;/P&gt;&lt;P&gt;append bdc_data.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;ENDIF.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;endform.&lt;/P&gt;&lt;P&gt;*******************************************************************&lt;/P&gt;&lt;P&gt;Using function module 'FORMAT_MESSAGE' you can capture the messages. &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Here is a sample of the program code for that: &lt;/P&gt;&lt;P&gt;    &lt;/P&gt;&lt;P&gt;  LOOP AT it_messtab. &lt;/P&gt;&lt;P&gt;  CALL FUNCTION 'FORMAT_MESSAGE' &lt;/P&gt;&lt;P&gt;    EXPORTING &lt;/P&gt;&lt;P&gt;      id     = it_messtab-msgid &lt;/P&gt;&lt;P&gt;      lang   = it_messtab-msgspra &lt;/P&gt;&lt;P&gt;      no     = it_messtab-msgnr &lt;/P&gt;&lt;P&gt;      v1     = it_messtab-msgv1 &lt;/P&gt;&lt;P&gt;      v2     = it_messtab-msgv2 &lt;/P&gt;&lt;P&gt;    IMPORTING &lt;/P&gt;&lt;P&gt;    msg    =  g_msg &lt;/P&gt;&lt;P&gt;  EXCEPTIONS &lt;/P&gt;&lt;P&gt;      OTHERS = 0. &lt;/P&gt;&lt;P&gt;  IF it_messtab-msgtyp = 'S'. &lt;/P&gt;&lt;P&gt;    it_sucess-sucess_rec = g_msg. &lt;/P&gt;&lt;P&gt;    it_sucess-lifnr = it_header-lifnr." Based on your field &lt;/P&gt;&lt;P&gt;    it_sucess-tabix = v_lines. &lt;/P&gt;&lt;P&gt;    APPEND it_sucess. &lt;/P&gt;&lt;P&gt;  ELSEIF it_messtab-msgtyp = 'E'. &lt;/P&gt;&lt;P&gt;    it_error-error_rec = g_msg. &lt;/P&gt;&lt;P&gt;    it_error-lifnr = it_header-lifnr. &lt;/P&gt;&lt;P&gt;    it_error-tabix = v_lines. &lt;/P&gt;&lt;P&gt;    APPEND it_error. &lt;/P&gt;&lt;P&gt;  ELSE. &lt;/P&gt;&lt;P&gt;    it_info-info_rec = g_msg. &lt;/P&gt;&lt;P&gt;    it_info-lifnr    = it_header-lifnr. &lt;/P&gt;&lt;P&gt;    it_info-tabix    = v_lines. &lt;/P&gt;&lt;P&gt;    APPEND it_info. &lt;/P&gt;&lt;P&gt;  ENDIF. &lt;/P&gt;&lt;P&gt;ENDLOOP. &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Hope this solves ur problem,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Regards,&lt;/P&gt;&lt;P&gt;Sri&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Fri, 15 Feb 2008 12:00:18 GMT</pubDate>
    <dc:creator>Former Member</dc:creator>
    <dc:date>2008-02-15T12:00:18Z</dc:date>
    <item>
      <title>capturing bdc messages and modifying internal table</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/capturing-bdc-messages-and-modifying-internal-table/m-p/3427284#M823136</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;hi experts,&lt;/P&gt;&lt;P&gt;my requirement in VA01 BDC is to capture the error messages which gets generated during BDC transaction and then highlight that error message into the last column of internal table of that particular errornous row.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Pls help.&lt;/P&gt;&lt;P&gt;Thanks,&lt;/P&gt;&lt;P&gt;Gaurav&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 13 Feb 2008 04:03:03 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/capturing-bdc-messages-and-modifying-internal-table/m-p/3427284#M823136</guid>
      <dc:creator>Former Member</dc:creator>
      <dc:date>2008-02-13T04:03:03Z</dc:date>
    </item>
    <item>
      <title>Re: capturing bdc messages and modifying internal table</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/capturing-bdc-messages-and-modifying-internal-table/m-p/3427285#M823137</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;While doing call transaction, if an error occurs in updation, we declare bdcmsgcoll and store our messages in it, but how to retreive error message from it .&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Internal table BDCMSG like BDCMSGCOLL.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Syntax:&lt;/P&gt;&lt;P&gt;DATA KTAB LIKE BDCMSGCOLL OCCURS 0 WITH HEADER LINE.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Example code:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;tables zemptab1.&lt;/P&gt;&lt;P&gt;data: begin of itab1 occurs 0,&lt;/P&gt;&lt;P&gt;     str(255),&lt;/P&gt;&lt;P&gt;     end of itab1.&lt;/P&gt;&lt;P&gt;data: begin of itab occurs 0,&lt;/P&gt;&lt;P&gt;      zempid3 like zemptab1-zempid3,&lt;/P&gt;&lt;P&gt;      zename3 like zemptab1-zename3,&lt;/P&gt;&lt;P&gt;      zedepid like zemptab1-zedepid,&lt;/P&gt;&lt;P&gt;      zsalkey like zemptab1-zsalkey,&lt;/P&gt;&lt;P&gt;      salary like zemptab1-salary,&lt;/P&gt;&lt;P&gt;end of itab.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;data bdc_data like bdcdata occurs 0 with header line.&lt;/P&gt;&lt;P&gt;data: bdcmsg like bdcmsgcoll occurs 0 with header line.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;data: var1 like rlgrap-filename.&lt;/P&gt;&lt;P&gt;data : name1 type string.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;call function 'KD_GET_FILENAME_ON_F4'&lt;/P&gt;&lt;P&gt;  exporting&lt;/P&gt;&lt;P&gt;    program_name  = syst-repid&lt;/P&gt;&lt;P&gt;    dynpro_number = syst-dynnr&lt;/P&gt;&lt;P&gt;  changing&lt;/P&gt;&lt;P&gt;    file_name     = var1.&lt;/P&gt;&lt;P&gt;if sy-subrc &amp;lt;&amp;gt; 0.&lt;/P&gt;&lt;P&gt;endif.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;name1 = var1.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;call function 'GUI_UPLOAD'&lt;/P&gt;&lt;P&gt;  exporting&lt;/P&gt;&lt;P&gt;    filename                      = name1&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  FILETYPE                      = 'ASC'&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;   has_field_separator           = 'X'&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  HEADER_LENGTH                 = 0&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  READ_BY_LINE                  = 'X'&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  DAT_MODE                      = ' '&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  CODEPAGE                      = ' '&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  IGNORE_CERR                   = ABAP_TRUE&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  REPLACEMENT                   = '#'&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  CHECK_BOM                     = ' '&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  VIRUS_SCAN_PROFILE            =&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;IMPORTING&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  FILELENGTH                    =&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  HEADER                        =&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  tables&lt;/P&gt;&lt;P&gt;    data_tab                      = itab.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;EXCEPTIONS&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  FILE_OPEN_ERROR               = 1&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  FILE_READ_ERROR               = 2&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  NO_BATCH                      = 3&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  GUI_REFUSE_FILETRANSFER       = 4&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  INVALID_TYPE                  = 5&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  NO_AUTHORITY                  = 6&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  UNKNOWN_ERROR                 = 7&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  BAD_DATA_FORMAT               = 8&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  HEADER_NOT_ALLOWED            = 9&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  SEPARATOR_NOT_ALLOWED         = 10&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  HEADER_TOO_LONG               = 11&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  UNKNOWN_DP_ERROR              = 12&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  ACCESS_DENIED                 = 13&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  DP_OUT_OF_MEMORY              = 14&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  DISK_FULL                     = 15&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  DP_TIMEOUT                    = 16&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  OTHERS                        = 17&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;         .&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*IF sy-subrc &amp;lt;&amp;gt; 0.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;        WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;loop at itab1.&lt;/P&gt;&lt;P&gt;split itab1-str at ',' into itab-zempid3 itab-zename3 itab-zedepid itab-zsalkey." ITAB-SALARY.&lt;/P&gt;&lt;P&gt;append itab.&lt;/P&gt;&lt;P&gt;endloop.&lt;/P&gt;&lt;P&gt;loop at itab.&lt;/P&gt;&lt;P&gt;insert into zemptab1 values itab.&lt;/P&gt;&lt;P&gt;if sy-subrc = 0.&lt;/P&gt;&lt;P&gt;message 'RECORDS INSERTED SUCCESSFULLY' type 'S'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;else.&lt;/P&gt;&lt;P&gt;perform proginfo using 'SAPLSD41' '2200'.&lt;/P&gt;&lt;P&gt;perform fldinfo using zemptab1-zempid3 itab-zempid3.&lt;/P&gt;&lt;P&gt;perform fldinfo using zemptab1-zename3 itab-zename3.&lt;/P&gt;&lt;P&gt;perform fldinfo using zemptab1-zedepid itab-zedepid.&lt;/P&gt;&lt;P&gt;perform fldinfo using zemptab1-zsalkey itab-zsalkey.&lt;/P&gt;&lt;P&gt;perform fldinfo using zemptab1-salary itab-salary.&lt;/P&gt;&lt;P&gt;endif.&lt;/P&gt;&lt;P&gt;endloop.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;call transaction 'SM30' using bdc_data mode 'N' messages into bdcmsg.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;loop at bdcmsg.&lt;/P&gt;&lt;P&gt;write : / bdcmsg.&lt;/P&gt;&lt;P&gt;endloop.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;form proginfo using program dynpro.&lt;/P&gt;&lt;P&gt;clear bdc_data.&lt;/P&gt;&lt;P&gt;bdc_data-program = program.&lt;/P&gt;&lt;P&gt;bdc_data-dynpro = dynpro.&lt;/P&gt;&lt;P&gt;bdc_data-dynbegin = 'X'.&lt;/P&gt;&lt;P&gt;append bdc_data.&lt;/P&gt;&lt;P&gt;endform.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;form fldinfo using fnam fval.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;IF FVAL &amp;lt;&amp;gt; NODATA.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;clear bdc_data.&lt;/P&gt;&lt;P&gt;bdc_data-fnam = fnam.&lt;/P&gt;&lt;P&gt;bdc_data-fval = fval.&lt;/P&gt;&lt;P&gt;append bdc_data.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;ENDIF.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;endform.&lt;/P&gt;&lt;P&gt;*******************************************************************&lt;/P&gt;&lt;P&gt;Using function module 'FORMAT_MESSAGE' you can capture the messages. &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Here is a sample of the program code for that: &lt;/P&gt;&lt;P&gt;    &lt;/P&gt;&lt;P&gt;  LOOP AT it_messtab. &lt;/P&gt;&lt;P&gt;  CALL FUNCTION 'FORMAT_MESSAGE' &lt;/P&gt;&lt;P&gt;    EXPORTING &lt;/P&gt;&lt;P&gt;      id     = it_messtab-msgid &lt;/P&gt;&lt;P&gt;      lang   = it_messtab-msgspra &lt;/P&gt;&lt;P&gt;      no     = it_messtab-msgnr &lt;/P&gt;&lt;P&gt;      v1     = it_messtab-msgv1 &lt;/P&gt;&lt;P&gt;      v2     = it_messtab-msgv2 &lt;/P&gt;&lt;P&gt;    IMPORTING &lt;/P&gt;&lt;P&gt;    msg    =  g_msg &lt;/P&gt;&lt;P&gt;  EXCEPTIONS &lt;/P&gt;&lt;P&gt;      OTHERS = 0. &lt;/P&gt;&lt;P&gt;  IF it_messtab-msgtyp = 'S'. &lt;/P&gt;&lt;P&gt;    it_sucess-sucess_rec = g_msg. &lt;/P&gt;&lt;P&gt;    it_sucess-lifnr = it_header-lifnr." Based on your field &lt;/P&gt;&lt;P&gt;    it_sucess-tabix = v_lines. &lt;/P&gt;&lt;P&gt;    APPEND it_sucess. &lt;/P&gt;&lt;P&gt;  ELSEIF it_messtab-msgtyp = 'E'. &lt;/P&gt;&lt;P&gt;    it_error-error_rec = g_msg. &lt;/P&gt;&lt;P&gt;    it_error-lifnr = it_header-lifnr. &lt;/P&gt;&lt;P&gt;    it_error-tabix = v_lines. &lt;/P&gt;&lt;P&gt;    APPEND it_error. &lt;/P&gt;&lt;P&gt;  ELSE. &lt;/P&gt;&lt;P&gt;    it_info-info_rec = g_msg. &lt;/P&gt;&lt;P&gt;    it_info-lifnr    = it_header-lifnr. &lt;/P&gt;&lt;P&gt;    it_info-tabix    = v_lines. &lt;/P&gt;&lt;P&gt;    APPEND it_info. &lt;/P&gt;&lt;P&gt;  ENDIF. &lt;/P&gt;&lt;P&gt;ENDLOOP. &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Hope this solves ur problem,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Regards,&lt;/P&gt;&lt;P&gt;Sri&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 15 Feb 2008 12:00:18 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/capturing-bdc-messages-and-modifying-internal-table/m-p/3427285#M823137</guid>
      <dc:creator>Former Member</dc:creator>
      <dc:date>2008-02-15T12:00:18Z</dc:date>
    </item>
  </channel>
</rss>

