<?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 BDC PERFORMANCE!!! in Application Development and Automation Discussions</title>
    <link>https://community.sap.com/t5/application-development-and-automation-discussions/bdc-performance/m-p/884458#M52246</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi! Kindly check the codes why is it that performance is very very slow. Hope you can give me some advice on how i can improve the performance this program.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;REPORT zheg_hrpae001_mass_execution .&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;TABLES: pernr,    "Use Table PERNR to Retrieve the personnel&lt;/P&gt;&lt;P&gt;        bdcdata.  "BDC Table&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;       INFOTYPES DECLARATION                                         *&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; In this section you can declare all infotypes that you are going to *&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; use in your program.                                                *&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;INFOTYPES: 0000, "Actions&lt;/P&gt;&lt;P&gt;           0315. "Time Sheet Default&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;       TYPES/TYPE POOL DECLARATION                                   *&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; In this section you can declare all types and type pools that you   *&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; are going to use in your program.                                   *&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;TYPES: BEGIN OF t_errorall,&lt;/P&gt;&lt;P&gt;            msgid LIKE bdcmsgcoll-msgid,&lt;/P&gt;&lt;P&gt;            msgnr LIKE bdcmsgcoll-msgnr,&lt;/P&gt;&lt;P&gt;            msgv1 LIKE bdcmsgcoll-msgv1,&lt;/P&gt;&lt;P&gt;            fldname LIKE bdcmsgcoll-fldname,&lt;/P&gt;&lt;P&gt;            recno(50),&lt;/P&gt;&lt;P&gt;       END OF t_errorall.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;       DATA/VARIABLE DECLARATION                                     *&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; In this section you can define internal tables,variables and etc.   *&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;DATA: i_errorall TYPE t_errorall OCCURS 0 WITH HEADER LINE,&lt;/P&gt;&lt;P&gt;         w_errorall TYPE t_errorall,&lt;/P&gt;&lt;P&gt;         v_recordname(50).&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;DATA: i_bdcdata LIKE bdcdata OCCURS 0 WITH HEADER LINE.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;DATA: i_error2 TYPE bdcmsgcoll OCCURS 0,&lt;/P&gt;&lt;P&gt;      w_error2 TYPE bdcmsgcoll.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;DATA: v_begda TYPE dats,      "Beginning date&lt;/P&gt;&lt;P&gt;      v_date1(10) TYPE c,     "Converted Begin date&lt;/P&gt;&lt;P&gt;      v_read TYPE i,          "Counter for identifying total records&lt;/P&gt;&lt;P&gt;      v_process TYPE i,       "Counter for identifying no error record&lt;/P&gt;&lt;P&gt;       v_error TYPE i.         "Counter for identifying total errors&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;        CONSTANTS DECLARATION                                        *&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; Constants are named data objects that you create statically using   *&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; a declarative statement. They allow you to store data under a       *&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; particular name within the memory area of a program.                *&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; The value of a constant cannot be changed during the execution of   *&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; the program.                                                        *&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;CONSTANTS: c_a(1)       TYPE c VALUE 'A',       "A Value&lt;/P&gt;&lt;P&gt;           c_n(1)       TYPE c VALUE 'N',       "Background&lt;/P&gt;&lt;P&gt;           c_date(4)    TYPE c VALUE 'DYMD',    "Date format&lt;/P&gt;&lt;P&gt;           c_msgtyp(1)  TYPE c VALUE 'E',       "MSgtype E&lt;/P&gt;&lt;P&gt;           c_endda      TYPE dats VALUE '99991231', "End Date&lt;/P&gt;&lt;P&gt;***Start of Modification SIR-16196 by FEDERISOV 03/11/2005&lt;/P&gt;&lt;P&gt;           c_active     LIKE p0000-stat2 VALUE '3', "Active Employees&lt;/P&gt;&lt;P&gt;           c_inactve    LIKE p0000-stat2 VALUE '1', "Inactive Employees&lt;/P&gt;&lt;P&gt;***End of Modification by FEDERISOV 03/11/2005&lt;/P&gt;&lt;P&gt;           c_x          TYPE c VALUE 'X',       "X Indicator&lt;/P&gt;&lt;P&gt;           c_zero       TYPE n VALUE '0'.       "Zero value&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;TYPES: BEGIN OF t_0315,&lt;/P&gt;&lt;P&gt;        pernr LIKE p0315-pernr,&lt;/P&gt;&lt;P&gt;        endda LIKE p0000-endda,&lt;/P&gt;&lt;P&gt;        stat2 LIKE p0000-stat2,&lt;/P&gt;&lt;P&gt;      END OF t_0315.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;DATA: i_0315 TYPE STANDARD TABLE OF t_0315,&lt;/P&gt;&lt;P&gt;      w_0315 TYPE t_0315.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;       START-OF-SELECTION                                           *&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; This event occurs after the selection screen has been processed and*&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; before data is read using the logical database.                    *&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;START-OF-SELECTION.&lt;/P&gt;&lt;P&gt;GET pernr.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;UL&gt;&lt;LI level="2" type="ul"&gt;&lt;P&gt; PROVIDE pernr FROM p0315&lt;/P&gt;&lt;/LI&gt;&lt;LI level="2" type="ul"&gt;&lt;P&gt;         endda stat2 FROM p0000  BETWEEN pn-begda AND pn-endda&lt;/P&gt;&lt;/LI&gt;&lt;LI level="2" type="ul"&gt;&lt;P&gt;                       WHERE p0000-endda = c_endda&lt;/P&gt;&lt;/LI&gt;&lt;LI level="2" type="ul"&gt;&lt;P&gt;                       AND ( p0000-stat2 = c_active&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;P&gt;**Start of Modification SIR-16196 by FEDERISOV 03/11/2005&lt;/P&gt;&lt;UL&gt;&lt;UL&gt;&lt;LI level="2" type="ul"&gt;&lt;P&gt;                        OR p0000-stat2 = c_inactve ).&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;P&gt;**End of Modification by FEDERISOV 03/11/2005&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt; PROVIDE pernr endda  FROM p0315 BETWEEN pn-begda AND pn-endda&lt;/P&gt;&lt;P&gt;                        WHERE p0315-endda = c_endda.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;                       AND ( p0000-stat2 = c_active&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;***Start of Modification SIR-16196 by FEDERISOV 03/11/2005&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;                        OR p0000-stat2 = c_inactve ).&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;     CHECK p0000-stat2 eq c_active or p0000-stat2 eq c_inactve.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;   IF p0000-endda = c_endda&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;     and ( p0000-stat2 = c_active or p0000-stat2 = c_inactve ) *&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    IF p0315_valid = 'X'.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;     and p0315-pernr = p0000-pernr.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;     PERFORM f_determine_date.   "Determine the effective date&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;     PERFORM f_convert_date.     "Convert the effective date&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;     PERFORM f_upload.           "This will update the infotype 0315&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      w_0315-pernr = p0315-pernr.&lt;/P&gt;&lt;P&gt;      APPEND w_0315 TO i_0315.&lt;/P&gt;&lt;P&gt;      CLEAR w_0315.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    ENDIF.&lt;/P&gt;&lt;P&gt;  ENDPROVIDE.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;        END OF PROCESSING                                            *&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; End of program processing.                                          *&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;END-OF-SELECTION.&lt;/P&gt;&lt;P&gt;  LOOP AT i_0315 INTO w_0315.&lt;/P&gt;&lt;P&gt;     PERFORM f_determine_date.   "Determine the effective date&lt;/P&gt;&lt;P&gt;     PERFORM f_convert_date.     "Convert the effective date&lt;/P&gt;&lt;P&gt;     PERFORM f_upload.           "This will update the infotype 0315&lt;/P&gt;&lt;P&gt;  ENDLOOP.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  PERFORM f_report.  "Print / Audit Report&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;     FORM f_determine_date.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  Use to supply the effective date supplied in the selection screen&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;FORM f_determine_date.&lt;/P&gt;&lt;P&gt;  IF pnptimr1 = c_x.&lt;/P&gt;&lt;P&gt;    v_date1 = sy-datum.&lt;/P&gt;&lt;P&gt;  ELSEIF pnptimr6 = c_x.&lt;/P&gt;&lt;P&gt;    v_date1 = pnpbegda.&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;ENDFORM.&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;    FORM f_convert_date.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  Use to covert the date in the standard format&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;FORM f_convert_date.&lt;/P&gt;&lt;P&gt;  CALL FUNCTION '/SAPDMC/LSM_DATE_CONVERT'&lt;/P&gt;&lt;P&gt;       EXPORTING&lt;/P&gt;&lt;P&gt;            date_in             = v_date1  "Date In&lt;/P&gt;&lt;P&gt;            date_format_in      = c_date&lt;/P&gt;&lt;P&gt;            to_output_format    = c_x&lt;/P&gt;&lt;P&gt;       IMPORTING&lt;/P&gt;&lt;P&gt;            date_out            = v_date1  "Converted Date&lt;/P&gt;&lt;P&gt;       EXCEPTIONS&lt;/P&gt;&lt;P&gt;            illegal_date        = 1&lt;/P&gt;&lt;P&gt;            illegal_date_format = 2&lt;/P&gt;&lt;P&gt;            no_user_date_format = 3&lt;/P&gt;&lt;P&gt;            OTHERS              = 4.&lt;/P&gt;&lt;P&gt;&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;ENDFORM.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;    FORM f_upload.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  This will update the existing record in infotype 0315&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;FORM f_upload.&lt;/P&gt;&lt;P&gt;  CLEAR i_bdcdata.&lt;/P&gt;&lt;P&gt;  REFRESH i_bdcdata.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; PERFORM f_dynpro:&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      USING 'X' 'SAPMP50A' '1000',&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      USING ' ' 'BDC_CURSOR' 'RP50G-PERNR',&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      USING ' ' 'RP50G-PERNR' w_0315-pernr,&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      USING ' ' 'BDC_CURSOR' 'RP50G-CHOIC',&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      USING ' ' 'RP50G-CHOIC' '0315',&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      USING ' ' 'RP50G-TIMR6' 'X',&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      USING ' ' 'BDC_OKCODE' '/00'.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  PERFORM f_dynpro:&lt;/P&gt;&lt;P&gt;      USING 'X' 'SAPMP50A' '1000',&lt;/P&gt;&lt;P&gt;      USING ' ' 'BDC_CURSOR' 'RP50G-PERNR',&lt;/P&gt;&lt;P&gt;      USING ' ' 'RP50G-PERNR' w_0315-pernr,&lt;/P&gt;&lt;P&gt;      USING ' ' 'BDC_CURSOR' 'RP50G-CHOIC',&lt;/P&gt;&lt;P&gt;      USING ' ' 'RP50G-CHOIC' 'Time Sheet Defaults',&lt;/P&gt;&lt;P&gt;      USING ' ' 'RP50G-TIMR6' 'X',&lt;/P&gt;&lt;P&gt;      USING ' ' 'BDC_OKCODE' '=INS'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  PERFORM f_dynpro:&lt;/P&gt;&lt;P&gt;       USING 'X' 'MP031500' '2000',&lt;/P&gt;&lt;P&gt;       USING ' ' 'BDC_CURSOR' p0315-begda,&lt;/P&gt;&lt;P&gt;       USING ' ' 'P0315-BEGDA' v_date1,&lt;/P&gt;&lt;P&gt;       USING ' ' 'P0315-KOSTL' p0315-kostl,&lt;/P&gt;&lt;P&gt;       USING ' ' 'BDC_SUBSCR' 'ZP031500',&lt;/P&gt;&lt;P&gt;       USING ' ' 'BDC_OKCODE' '=UPD'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*Runs transaction on background&lt;/P&gt;&lt;P&gt;  CALL TRANSACTION 'PA30' USING i_bdcdata&lt;/P&gt;&lt;P&gt;                          MODE c_n UPDATE c_a&lt;/P&gt;&lt;P&gt;                          MESSAGES INTO i_error2.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  IF sy-subrc &amp;lt;&amp;gt; 0.&lt;/P&gt;&lt;P&gt;    PERFORM f_bdc_error.&lt;/P&gt;&lt;P&gt;    ADD 1 TO v_error.&lt;/P&gt;&lt;P&gt;  ELSE.&lt;/P&gt;&lt;P&gt;    ADD 1 TO v_process.&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;     Form  f_dynpro&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;     Subroutine used to populate the BDC table.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;FORM f_dynpro USING  fp_dynbegin&lt;/P&gt;&lt;P&gt;                     fp_name&lt;/P&gt;&lt;P&gt;                     fp_value.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  IF fp_dynbegin EQ 'X'.&lt;/P&gt;&lt;P&gt;    CLEAR bdcdata.&lt;/P&gt;&lt;P&gt;    bdcdata-program  = fp_name.&lt;/P&gt;&lt;P&gt;    bdcdata-dynpro   = fp_value.&lt;/P&gt;&lt;P&gt;    bdcdata-dynbegin = fp_dynbegin.&lt;/P&gt;&lt;P&gt;    APPEND bdcdata TO i_bdcdata.&lt;/P&gt;&lt;P&gt;  ELSE.&lt;/P&gt;&lt;P&gt;    CLEAR bdcdata.&lt;/P&gt;&lt;P&gt;    bdcdata-fnam = fp_name.&lt;/P&gt;&lt;P&gt;    bdcdata-fval = fp_value.&lt;/P&gt;&lt;P&gt;    APPEND bdcdata TO i_bdcdata.&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.                    " F_DYNPRO&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;     Form  f_bdc_error&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;    Check BDC Error when processing&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;FORM f_bdc_error.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  CLEAR w_error2.&lt;/P&gt;&lt;P&gt;  READ TABLE i_error2 INTO w_error2 WITH KEY msgtyp = c_msgtyp.&lt;/P&gt;&lt;P&gt;  IF sy-subrc EQ 0.&lt;/P&gt;&lt;P&gt;    MOVE: w_error2-msgnr TO w_errorall-msgnr.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;         w_error2-msgv1 TO w_errorall-msgv1,&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;         w_error2-fldname TO w_errorall-fldname.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;************************************************************************&lt;/P&gt;&lt;P&gt;*Capture errors in BDC background processing&lt;/P&gt;&lt;P&gt;************************************************************************&lt;/P&gt;&lt;P&gt;    CALL FUNCTION 'MESSAGE_TEXT_BUILD'&lt;/P&gt;&lt;P&gt;         EXPORTING&lt;/P&gt;&lt;P&gt;              msgid               = w_error2-msgid&lt;/P&gt;&lt;P&gt;              msgnr               = w_error2-msgnr&lt;/P&gt;&lt;P&gt;              msgv1               = w_error2-msgv1&lt;/P&gt;&lt;P&gt;              msgv2               = w_error2-msgv2&lt;/P&gt;&lt;P&gt;              msgv3               = w_error2-msgv3&lt;/P&gt;&lt;P&gt;              msgv4               = w_error2-msgv4&lt;/P&gt;&lt;P&gt;         IMPORTING&lt;/P&gt;&lt;P&gt;              message_text_output = w_errorall-fldname.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    CLEAR v_recordname.&lt;/P&gt;&lt;P&gt;    CONCATENATE text-001&lt;/P&gt;&lt;P&gt;                w_0315-pernr&lt;/P&gt;&lt;P&gt;                INTO v_recordname SEPARATED BY space.&lt;/P&gt;&lt;P&gt;    MOVE: v_recordname TO w_errorall-recno.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    APPEND w_errorall TO i_errorall.&lt;/P&gt;&lt;P&gt;    CLEAR i_errorall.&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.                    " f_bdc_error&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;                     Form F_OREPORT&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      Writes the summary report of the program that will provide the&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; number of records process, number errors and the location of errors&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; in the BDC.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;FORM f_report.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  v_read = v_process + v_error.&lt;/P&gt;&lt;P&gt;*Output Report&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  WRITE: text-006.&lt;/P&gt;&lt;P&gt;  ULINE.&lt;/P&gt;&lt;P&gt;  WRITE:/ ,&lt;/P&gt;&lt;P&gt;        /5 text-007,&lt;/P&gt;&lt;P&gt;         36 v_read,&lt;/P&gt;&lt;P&gt;        /5  text-008,&lt;/P&gt;&lt;P&gt;         36 v_process,&lt;/P&gt;&lt;P&gt;        /5  text-009,&lt;/P&gt;&lt;P&gt;         36 v_error.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  NEW-PAGE.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  WRITE: /5 text-003,&lt;/P&gt;&lt;P&gt;          20 text-010,&lt;/P&gt;&lt;P&gt;          60 text-004.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  ULINE.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  CLEAR w_errorall.&lt;/P&gt;&lt;P&gt;  LOOP AT i_errorall INTO w_errorall.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    WRITE: /5  w_errorall-msgnr,&lt;/P&gt;&lt;P&gt;            20  w_errorall-fldname,&lt;/P&gt;&lt;P&gt;            60  w_errorall-recno.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    CLEAR w_errorall.&lt;/P&gt;&lt;P&gt;  ENDLOOP.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Mon, 25 Apr 2005 15:44:08 GMT</pubDate>
    <dc:creator>Former Member</dc:creator>
    <dc:date>2005-04-25T15:44:08Z</dc:date>
    <item>
      <title>BDC PERFORMANCE!!!</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/bdc-performance/m-p/884458#M52246</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi! Kindly check the codes why is it that performance is very very slow. Hope you can give me some advice on how i can improve the performance this program.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;REPORT zheg_hrpae001_mass_execution .&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;TABLES: pernr,    "Use Table PERNR to Retrieve the personnel&lt;/P&gt;&lt;P&gt;        bdcdata.  "BDC Table&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;       INFOTYPES DECLARATION                                         *&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; In this section you can declare all infotypes that you are going to *&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; use in your program.                                                *&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;INFOTYPES: 0000, "Actions&lt;/P&gt;&lt;P&gt;           0315. "Time Sheet Default&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;       TYPES/TYPE POOL DECLARATION                                   *&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; In this section you can declare all types and type pools that you   *&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; are going to use in your program.                                   *&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;TYPES: BEGIN OF t_errorall,&lt;/P&gt;&lt;P&gt;            msgid LIKE bdcmsgcoll-msgid,&lt;/P&gt;&lt;P&gt;            msgnr LIKE bdcmsgcoll-msgnr,&lt;/P&gt;&lt;P&gt;            msgv1 LIKE bdcmsgcoll-msgv1,&lt;/P&gt;&lt;P&gt;            fldname LIKE bdcmsgcoll-fldname,&lt;/P&gt;&lt;P&gt;            recno(50),&lt;/P&gt;&lt;P&gt;       END OF t_errorall.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;       DATA/VARIABLE DECLARATION                                     *&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; In this section you can define internal tables,variables and etc.   *&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;DATA: i_errorall TYPE t_errorall OCCURS 0 WITH HEADER LINE,&lt;/P&gt;&lt;P&gt;         w_errorall TYPE t_errorall,&lt;/P&gt;&lt;P&gt;         v_recordname(50).&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;DATA: i_bdcdata LIKE bdcdata OCCURS 0 WITH HEADER LINE.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;DATA: i_error2 TYPE bdcmsgcoll OCCURS 0,&lt;/P&gt;&lt;P&gt;      w_error2 TYPE bdcmsgcoll.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;DATA: v_begda TYPE dats,      "Beginning date&lt;/P&gt;&lt;P&gt;      v_date1(10) TYPE c,     "Converted Begin date&lt;/P&gt;&lt;P&gt;      v_read TYPE i,          "Counter for identifying total records&lt;/P&gt;&lt;P&gt;      v_process TYPE i,       "Counter for identifying no error record&lt;/P&gt;&lt;P&gt;       v_error TYPE i.         "Counter for identifying total errors&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;        CONSTANTS DECLARATION                                        *&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; Constants are named data objects that you create statically using   *&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; a declarative statement. They allow you to store data under a       *&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; particular name within the memory area of a program.                *&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; The value of a constant cannot be changed during the execution of   *&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; the program.                                                        *&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;CONSTANTS: c_a(1)       TYPE c VALUE 'A',       "A Value&lt;/P&gt;&lt;P&gt;           c_n(1)       TYPE c VALUE 'N',       "Background&lt;/P&gt;&lt;P&gt;           c_date(4)    TYPE c VALUE 'DYMD',    "Date format&lt;/P&gt;&lt;P&gt;           c_msgtyp(1)  TYPE c VALUE 'E',       "MSgtype E&lt;/P&gt;&lt;P&gt;           c_endda      TYPE dats VALUE '99991231', "End Date&lt;/P&gt;&lt;P&gt;***Start of Modification SIR-16196 by FEDERISOV 03/11/2005&lt;/P&gt;&lt;P&gt;           c_active     LIKE p0000-stat2 VALUE '3', "Active Employees&lt;/P&gt;&lt;P&gt;           c_inactve    LIKE p0000-stat2 VALUE '1', "Inactive Employees&lt;/P&gt;&lt;P&gt;***End of Modification by FEDERISOV 03/11/2005&lt;/P&gt;&lt;P&gt;           c_x          TYPE c VALUE 'X',       "X Indicator&lt;/P&gt;&lt;P&gt;           c_zero       TYPE n VALUE '0'.       "Zero value&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;TYPES: BEGIN OF t_0315,&lt;/P&gt;&lt;P&gt;        pernr LIKE p0315-pernr,&lt;/P&gt;&lt;P&gt;        endda LIKE p0000-endda,&lt;/P&gt;&lt;P&gt;        stat2 LIKE p0000-stat2,&lt;/P&gt;&lt;P&gt;      END OF t_0315.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;DATA: i_0315 TYPE STANDARD TABLE OF t_0315,&lt;/P&gt;&lt;P&gt;      w_0315 TYPE t_0315.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;       START-OF-SELECTION                                           *&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; This event occurs after the selection screen has been processed and*&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; before data is read using the logical database.                    *&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;START-OF-SELECTION.&lt;/P&gt;&lt;P&gt;GET pernr.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;UL&gt;&lt;LI level="2" type="ul"&gt;&lt;P&gt; PROVIDE pernr FROM p0315&lt;/P&gt;&lt;/LI&gt;&lt;LI level="2" type="ul"&gt;&lt;P&gt;         endda stat2 FROM p0000  BETWEEN pn-begda AND pn-endda&lt;/P&gt;&lt;/LI&gt;&lt;LI level="2" type="ul"&gt;&lt;P&gt;                       WHERE p0000-endda = c_endda&lt;/P&gt;&lt;/LI&gt;&lt;LI level="2" type="ul"&gt;&lt;P&gt;                       AND ( p0000-stat2 = c_active&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;P&gt;**Start of Modification SIR-16196 by FEDERISOV 03/11/2005&lt;/P&gt;&lt;UL&gt;&lt;UL&gt;&lt;LI level="2" type="ul"&gt;&lt;P&gt;                        OR p0000-stat2 = c_inactve ).&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;P&gt;**End of Modification by FEDERISOV 03/11/2005&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt; PROVIDE pernr endda  FROM p0315 BETWEEN pn-begda AND pn-endda&lt;/P&gt;&lt;P&gt;                        WHERE p0315-endda = c_endda.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;                       AND ( p0000-stat2 = c_active&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;***Start of Modification SIR-16196 by FEDERISOV 03/11/2005&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;                        OR p0000-stat2 = c_inactve ).&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;     CHECK p0000-stat2 eq c_active or p0000-stat2 eq c_inactve.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;   IF p0000-endda = c_endda&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;     and ( p0000-stat2 = c_active or p0000-stat2 = c_inactve ) *&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    IF p0315_valid = 'X'.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;     and p0315-pernr = p0000-pernr.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;     PERFORM f_determine_date.   "Determine the effective date&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;     PERFORM f_convert_date.     "Convert the effective date&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;     PERFORM f_upload.           "This will update the infotype 0315&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      w_0315-pernr = p0315-pernr.&lt;/P&gt;&lt;P&gt;      APPEND w_0315 TO i_0315.&lt;/P&gt;&lt;P&gt;      CLEAR w_0315.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    ENDIF.&lt;/P&gt;&lt;P&gt;  ENDPROVIDE.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;        END OF PROCESSING                                            *&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; End of program processing.                                          *&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;END-OF-SELECTION.&lt;/P&gt;&lt;P&gt;  LOOP AT i_0315 INTO w_0315.&lt;/P&gt;&lt;P&gt;     PERFORM f_determine_date.   "Determine the effective date&lt;/P&gt;&lt;P&gt;     PERFORM f_convert_date.     "Convert the effective date&lt;/P&gt;&lt;P&gt;     PERFORM f_upload.           "This will update the infotype 0315&lt;/P&gt;&lt;P&gt;  ENDLOOP.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  PERFORM f_report.  "Print / Audit Report&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;     FORM f_determine_date.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  Use to supply the effective date supplied in the selection screen&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;FORM f_determine_date.&lt;/P&gt;&lt;P&gt;  IF pnptimr1 = c_x.&lt;/P&gt;&lt;P&gt;    v_date1 = sy-datum.&lt;/P&gt;&lt;P&gt;  ELSEIF pnptimr6 = c_x.&lt;/P&gt;&lt;P&gt;    v_date1 = pnpbegda.&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;ENDFORM.&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;    FORM f_convert_date.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  Use to covert the date in the standard format&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;FORM f_convert_date.&lt;/P&gt;&lt;P&gt;  CALL FUNCTION '/SAPDMC/LSM_DATE_CONVERT'&lt;/P&gt;&lt;P&gt;       EXPORTING&lt;/P&gt;&lt;P&gt;            date_in             = v_date1  "Date In&lt;/P&gt;&lt;P&gt;            date_format_in      = c_date&lt;/P&gt;&lt;P&gt;            to_output_format    = c_x&lt;/P&gt;&lt;P&gt;       IMPORTING&lt;/P&gt;&lt;P&gt;            date_out            = v_date1  "Converted Date&lt;/P&gt;&lt;P&gt;       EXCEPTIONS&lt;/P&gt;&lt;P&gt;            illegal_date        = 1&lt;/P&gt;&lt;P&gt;            illegal_date_format = 2&lt;/P&gt;&lt;P&gt;            no_user_date_format = 3&lt;/P&gt;&lt;P&gt;            OTHERS              = 4.&lt;/P&gt;&lt;P&gt;&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;ENDFORM.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;    FORM f_upload.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  This will update the existing record in infotype 0315&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;FORM f_upload.&lt;/P&gt;&lt;P&gt;  CLEAR i_bdcdata.&lt;/P&gt;&lt;P&gt;  REFRESH i_bdcdata.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; PERFORM f_dynpro:&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      USING 'X' 'SAPMP50A' '1000',&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      USING ' ' 'BDC_CURSOR' 'RP50G-PERNR',&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      USING ' ' 'RP50G-PERNR' w_0315-pernr,&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      USING ' ' 'BDC_CURSOR' 'RP50G-CHOIC',&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      USING ' ' 'RP50G-CHOIC' '0315',&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      USING ' ' 'RP50G-TIMR6' 'X',&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      USING ' ' 'BDC_OKCODE' '/00'.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  PERFORM f_dynpro:&lt;/P&gt;&lt;P&gt;      USING 'X' 'SAPMP50A' '1000',&lt;/P&gt;&lt;P&gt;      USING ' ' 'BDC_CURSOR' 'RP50G-PERNR',&lt;/P&gt;&lt;P&gt;      USING ' ' 'RP50G-PERNR' w_0315-pernr,&lt;/P&gt;&lt;P&gt;      USING ' ' 'BDC_CURSOR' 'RP50G-CHOIC',&lt;/P&gt;&lt;P&gt;      USING ' ' 'RP50G-CHOIC' 'Time Sheet Defaults',&lt;/P&gt;&lt;P&gt;      USING ' ' 'RP50G-TIMR6' 'X',&lt;/P&gt;&lt;P&gt;      USING ' ' 'BDC_OKCODE' '=INS'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  PERFORM f_dynpro:&lt;/P&gt;&lt;P&gt;       USING 'X' 'MP031500' '2000',&lt;/P&gt;&lt;P&gt;       USING ' ' 'BDC_CURSOR' p0315-begda,&lt;/P&gt;&lt;P&gt;       USING ' ' 'P0315-BEGDA' v_date1,&lt;/P&gt;&lt;P&gt;       USING ' ' 'P0315-KOSTL' p0315-kostl,&lt;/P&gt;&lt;P&gt;       USING ' ' 'BDC_SUBSCR' 'ZP031500',&lt;/P&gt;&lt;P&gt;       USING ' ' 'BDC_OKCODE' '=UPD'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*Runs transaction on background&lt;/P&gt;&lt;P&gt;  CALL TRANSACTION 'PA30' USING i_bdcdata&lt;/P&gt;&lt;P&gt;                          MODE c_n UPDATE c_a&lt;/P&gt;&lt;P&gt;                          MESSAGES INTO i_error2.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  IF sy-subrc &amp;lt;&amp;gt; 0.&lt;/P&gt;&lt;P&gt;    PERFORM f_bdc_error.&lt;/P&gt;&lt;P&gt;    ADD 1 TO v_error.&lt;/P&gt;&lt;P&gt;  ELSE.&lt;/P&gt;&lt;P&gt;    ADD 1 TO v_process.&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;     Form  f_dynpro&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;     Subroutine used to populate the BDC table.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;FORM f_dynpro USING  fp_dynbegin&lt;/P&gt;&lt;P&gt;                     fp_name&lt;/P&gt;&lt;P&gt;                     fp_value.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  IF fp_dynbegin EQ 'X'.&lt;/P&gt;&lt;P&gt;    CLEAR bdcdata.&lt;/P&gt;&lt;P&gt;    bdcdata-program  = fp_name.&lt;/P&gt;&lt;P&gt;    bdcdata-dynpro   = fp_value.&lt;/P&gt;&lt;P&gt;    bdcdata-dynbegin = fp_dynbegin.&lt;/P&gt;&lt;P&gt;    APPEND bdcdata TO i_bdcdata.&lt;/P&gt;&lt;P&gt;  ELSE.&lt;/P&gt;&lt;P&gt;    CLEAR bdcdata.&lt;/P&gt;&lt;P&gt;    bdcdata-fnam = fp_name.&lt;/P&gt;&lt;P&gt;    bdcdata-fval = fp_value.&lt;/P&gt;&lt;P&gt;    APPEND bdcdata TO i_bdcdata.&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.                    " F_DYNPRO&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;     Form  f_bdc_error&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;    Check BDC Error when processing&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;FORM f_bdc_error.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  CLEAR w_error2.&lt;/P&gt;&lt;P&gt;  READ TABLE i_error2 INTO w_error2 WITH KEY msgtyp = c_msgtyp.&lt;/P&gt;&lt;P&gt;  IF sy-subrc EQ 0.&lt;/P&gt;&lt;P&gt;    MOVE: w_error2-msgnr TO w_errorall-msgnr.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;         w_error2-msgv1 TO w_errorall-msgv1,&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;         w_error2-fldname TO w_errorall-fldname.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;************************************************************************&lt;/P&gt;&lt;P&gt;*Capture errors in BDC background processing&lt;/P&gt;&lt;P&gt;************************************************************************&lt;/P&gt;&lt;P&gt;    CALL FUNCTION 'MESSAGE_TEXT_BUILD'&lt;/P&gt;&lt;P&gt;         EXPORTING&lt;/P&gt;&lt;P&gt;              msgid               = w_error2-msgid&lt;/P&gt;&lt;P&gt;              msgnr               = w_error2-msgnr&lt;/P&gt;&lt;P&gt;              msgv1               = w_error2-msgv1&lt;/P&gt;&lt;P&gt;              msgv2               = w_error2-msgv2&lt;/P&gt;&lt;P&gt;              msgv3               = w_error2-msgv3&lt;/P&gt;&lt;P&gt;              msgv4               = w_error2-msgv4&lt;/P&gt;&lt;P&gt;         IMPORTING&lt;/P&gt;&lt;P&gt;              message_text_output = w_errorall-fldname.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    CLEAR v_recordname.&lt;/P&gt;&lt;P&gt;    CONCATENATE text-001&lt;/P&gt;&lt;P&gt;                w_0315-pernr&lt;/P&gt;&lt;P&gt;                INTO v_recordname SEPARATED BY space.&lt;/P&gt;&lt;P&gt;    MOVE: v_recordname TO w_errorall-recno.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    APPEND w_errorall TO i_errorall.&lt;/P&gt;&lt;P&gt;    CLEAR i_errorall.&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.                    " f_bdc_error&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;                     Form F_OREPORT&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      Writes the summary report of the program that will provide the&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; number of records process, number errors and the location of errors&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; in the BDC.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;FORM f_report.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  v_read = v_process + v_error.&lt;/P&gt;&lt;P&gt;*Output Report&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  WRITE: text-006.&lt;/P&gt;&lt;P&gt;  ULINE.&lt;/P&gt;&lt;P&gt;  WRITE:/ ,&lt;/P&gt;&lt;P&gt;        /5 text-007,&lt;/P&gt;&lt;P&gt;         36 v_read,&lt;/P&gt;&lt;P&gt;        /5  text-008,&lt;/P&gt;&lt;P&gt;         36 v_process,&lt;/P&gt;&lt;P&gt;        /5  text-009,&lt;/P&gt;&lt;P&gt;         36 v_error.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  NEW-PAGE.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  WRITE: /5 text-003,&lt;/P&gt;&lt;P&gt;          20 text-010,&lt;/P&gt;&lt;P&gt;          60 text-004.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  ULINE.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  CLEAR w_errorall.&lt;/P&gt;&lt;P&gt;  LOOP AT i_errorall INTO w_errorall.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    WRITE: /5  w_errorall-msgnr,&lt;/P&gt;&lt;P&gt;            20  w_errorall-fldname,&lt;/P&gt;&lt;P&gt;            60  w_errorall-recno.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    CLEAR w_errorall.&lt;/P&gt;&lt;P&gt;  ENDLOOP.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 25 Apr 2005 15:44:08 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/bdc-performance/m-p/884458#M52246</guid>
      <dc:creator>Former Member</dc:creator>
      <dc:date>2005-04-25T15:44:08Z</dc:date>
    </item>
    <item>
      <title>Re: BDC PERFORMANCE!!!</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/bdc-performance/m-p/884459#M52247</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi Federiso!&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Make a runtime analysis (SE30) to identify the slow parts!&lt;/P&gt;&lt;P&gt;Only when the slow statements are identified, search for alternatives makes sense (otherwise you would spend a lot of time for changes without seeing difference in total runtime).&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Regards,&lt;/P&gt;&lt;P&gt;Christian&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 25 Apr 2005 16:02:38 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/bdc-performance/m-p/884459#M52247</guid>
      <dc:creator>christian_wohlfahrt</dc:creator>
      <dc:date>2005-04-25T16:02:38Z</dc:date>
    </item>
    <item>
      <title>Re: BDC PERFORMANCE!!!</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/bdc-performance/m-p/884460#M52248</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;I already check the runtime of this program and it pass the performance. I saw the slow part of the program that was the BDC part because it updates all the records in inftotype 0315. How can i still improve the codes. It uses Logical Database PNP. Thanx!!!&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 25 Apr 2005 16:10:05 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/bdc-performance/m-p/884460#M52248</guid>
      <dc:creator>Former Member</dc:creator>
      <dc:date>2005-04-25T16:10:05Z</dc:date>
    </item>
    <item>
      <title>Re: BDC PERFORMANCE!!!</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/bdc-performance/m-p/884461#M52249</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Maybe instead of using call transaction you could insert the transactions onto the SM35 BDC queue.  You could then batch the transactions (into groups of 10 for example) and submit RSBDCSUB for each batch.  This would means that you process the BDCs in parrallel rather than the sequential approach you have now.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;It could go something like:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;PRE&gt;&lt;CODE&gt;
FORM F_UPLOAD

  IF w_session_open IS INITIAL.
    CALL FUNCTION 'BDC_OPEN'.
    CLEAR: w_record_number.
    w_session_open = 'X'.
  ENDIF.

  &amp;lt;insert BDC logic here&amp;gt;.

  CALL FUNCTION 'BDC_INSERT'.
  w_record_number = w_record_number + 1.

  IF w_record_number &amp;gt;= 10.
    CALL FUNCTION 'BDC_CLOSE'.
    SUBMIT RSBDCSUB (passing unique BDC session name) AND RETURN.
    CLEAR: w_session_open
  ENDIF.
ENDFORM.
&lt;/CODE&gt;&lt;/PRE&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;As RSBDCSUB creates a background job to process the BDC session, your program would continue whilst the BDC session was being processed. &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;As the sessions are being handled in SM35 you would also get a much nicer record of the errors, and it would allow you to replay them and correct interactively (rather than just having an error report).&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Of course, this is just a quick sketch of a possible solution, but you could adapt the technique to suit the specifics of your implementation.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Hope that helps.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Cheers,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Brad&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 25 Apr 2005 19:09:52 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/bdc-performance/m-p/884461#M52249</guid>
      <dc:creator>Former Member</dc:creator>
      <dc:date>2005-04-25T19:09:52Z</dc:date>
    </item>
    <item>
      <title>Re: BDC PERFORMANCE!!!</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/bdc-performance/m-p/884462#M52250</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Forgot to mention.  As RSBDCSUB will create a seperate background job for each batch of 10 transactions, these batches will also process in parrallel (if you have free batch work processes on your application server(s)).&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Thus, you will get parrallel processing between your program and the BDC sessions, and further parrallel processing between the BDC sessions themselves.  You should see a dramatic increase in the overall performance.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Care should be taken, however, so as not to flood your system with batch jobs and lock out critical processing.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Cheers,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Brad&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Message was edited by: Brad Williams&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 25 Apr 2005 19:22:38 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/bdc-performance/m-p/884462#M52250</guid>
      <dc:creator>Former Member</dc:creator>
      <dc:date>2005-04-25T19:22:38Z</dc:date>
    </item>
    <item>
      <title>Re: BDC PERFORMANCE!!!</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/bdc-performance/m-p/884463#M52251</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi Van,&lt;/P&gt;&lt;P&gt;    The performance could be due to the index LIF on infotype 315. The system rebuilds the index after every insert via your BDC. Delete the index LIF by navigating to transaction SE11-&amp;gt;Database Utility-&amp;gt;Indexes and clicking on "Delete database index". After running your BDC , go back to SE11 and click on "Create database Index" and then click on "Activate and adjust database".&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Prakash Singh&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 25 Apr 2005 19:40:46 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/bdc-performance/m-p/884463#M52251</guid>
      <dc:creator>Former Member</dc:creator>
      <dc:date>2005-04-25T19:40:46Z</dc:date>
    </item>
  </channel>
</rss>

