BDC PERFORMANCE!!!

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.
REPORT zheg_hrpae001_mass_execution .
TABLES: pernr,    "Use Table PERNR to Retrieve the personnel
        bdcdata.  "BDC Table
       INFOTYPES DECLARATION                                         *
In this section you can declare all infotypes that you are going to *
use in your program.                                                *
INFOTYPES: 0000, "Actions
           0315. "Time Sheet Default
       TYPES/TYPE POOL DECLARATION                                   *
In this section you can declare all types and type pools that you   *
are going to use in your program.                                   *
TYPES: BEGIN OF t_errorall,
            msgid LIKE bdcmsgcoll-msgid,
            msgnr LIKE bdcmsgcoll-msgnr,
            msgv1 LIKE bdcmsgcoll-msgv1,
            fldname LIKE bdcmsgcoll-fldname,
            recno(50),
       END OF t_errorall.
       DATA/VARIABLE DECLARATION                                     *
In this section you can define internal tables,variables and etc.   *
DATA: i_errorall TYPE t_errorall OCCURS 0 WITH HEADER LINE,
         w_errorall TYPE t_errorall,
         v_recordname(50).
DATA: i_bdcdata LIKE bdcdata OCCURS 0 WITH HEADER LINE.
DATA: i_error2 TYPE bdcmsgcoll OCCURS 0,
      w_error2 TYPE bdcmsgcoll.
DATA: v_begda TYPE dats,      "Beginning date
      v_date1(10) TYPE c,     "Converted Begin date
      v_read TYPE i,          "Counter for identifying total records
      v_process TYPE i,       "Counter for identifying no error record
       v_error TYPE i.         "Counter for identifying total errors
        CONSTANTS DECLARATION                                        *
Constants are named data objects that you create statically using   *
a declarative statement. They allow you to store data under a       *
particular name within the memory area of a program.                *
The value of a constant cannot be changed during the execution of   *
the program.                                                        *
CONSTANTS: c_a(1)       TYPE c VALUE 'A',       "A Value
           c_n(1)       TYPE c VALUE 'N',       "Background
           c_date(4)    TYPE c VALUE 'DYMD',    "Date format
           c_msgtyp(1)  TYPE c VALUE 'E',       "MSgtype E
           c_endda      TYPE dats VALUE '99991231', "End Date
***Start of Modification SIR-16196 by FEDERISOV 03/11/2005
           c_active     LIKE p0000-stat2 VALUE '3', "Active Employees
           c_inactve    LIKE p0000-stat2 VALUE '1', "Inactive Employees
***End of Modification by FEDERISOV 03/11/2005
           c_x          TYPE c VALUE 'X',       "X Indicator
           c_zero       TYPE n VALUE '0'.       "Zero value
TYPES: BEGIN OF t_0315,
        pernr LIKE p0315-pernr,
        endda LIKE p0000-endda,
        stat2 LIKE p0000-stat2,
      END OF t_0315.
DATA: i_0315 TYPE STANDARD TABLE OF t_0315,
      w_0315 TYPE t_0315.
       START-OF-SELECTION                                           *
This event occurs after the selection screen has been processed and*
before data is read using the logical database.                    *
START-OF-SELECTION.
GET pernr.
PROVIDE pernr FROM p0315
         endda stat2 FROM p0000  BETWEEN pn-begda AND pn-endda
                       WHERE p0000-endda = c_endda
                       AND ( p0000-stat2 = c_active
**Start of Modification SIR-16196 by FEDERISOV 03/11/2005
                        OR p0000-stat2 = c_inactve ).
**End of Modification by FEDERISOV 03/11/2005
PROVIDE pernr endda  FROM p0315 BETWEEN pn-begda AND pn-endda
                        WHERE p0315-endda = c_endda.
                       AND ( p0000-stat2 = c_active
***Start of Modification SIR-16196 by FEDERISOV 03/11/2005
                        OR p0000-stat2 = c_inactve ).
     CHECK p0000-stat2 eq c_active or p0000-stat2 eq c_inactve.
   IF p0000-endda = c_endda
     and ( p0000-stat2 = c_active or p0000-stat2 = c_inactve ) *
    IF p0315_valid = 'X'.
     and p0315-pernr = p0000-pernr.
     PERFORM f_determine_date.   "Determine the effective date
     PERFORM f_convert_date.     "Convert the effective date
     PERFORM f_upload.           "This will update the infotype 0315
      w_0315-pernr = p0315-pernr.
      APPEND w_0315 TO i_0315.
      CLEAR w_0315.
    ENDIF.
  ENDPROVIDE.
        END OF PROCESSING                                            *
End of program processing.                                          *
END-OF-SELECTION.
  LOOP AT i_0315 INTO w_0315.
     PERFORM f_determine_date.   "Determine the effective date
     PERFORM f_convert_date.     "Convert the effective date
     PERFORM f_upload.           "This will update the infotype 0315
  ENDLOOP.
  PERFORM f_report.  "Print / Audit Report
     FORM f_determine_date.
  Use to supply the effective date supplied in the selection screen
FORM f_determine_date.
  IF pnptimr1 = c_x.
    v_date1 = sy-datum.
  ELSEIF pnptimr6 = c_x.
    v_date1 = pnpbegda.
  ENDIF.
ENDFORM.
    FORM f_convert_date.
  Use to covert the date in the standard format
FORM f_convert_date.
  CALL FUNCTION '/SAPDMC/LSM_DATE_CONVERT'
       EXPORTING
            date_in             = v_date1  "Date In
            date_format_in      = c_date
            to_output_format    = c_x
       IMPORTING
            date_out            = v_date1  "Converted Date
       EXCEPTIONS
            illegal_date        = 1
            illegal_date_format = 2
            no_user_date_format = 3
            OTHERS              = 4.
  IF sy-subrc <> 0.
  ENDIF.
ENDFORM.
    FORM f_upload.
  This will update the existing record in infotype 0315
FORM f_upload.
  CLEAR i_bdcdata.
  REFRESH i_bdcdata.
PERFORM f_dynpro:
      USING 'X' 'SAPMP50A' '1000',
      USING ' ' 'BDC_CURSOR' 'RP50G-PERNR',
      USING ' ' 'RP50G-PERNR' w_0315-pernr,
      USING ' ' 'BDC_CURSOR' 'RP50G-CHOIC',
      USING ' ' 'RP50G-CHOIC' '0315',
      USING ' ' 'RP50G-TIMR6' 'X',
      USING ' ' 'BDC_OKCODE' '/00'.
  PERFORM f_dynpro:
      USING 'X' 'SAPMP50A' '1000',
      USING ' ' 'BDC_CURSOR' 'RP50G-PERNR',
      USING ' ' 'RP50G-PERNR' w_0315-pernr,
      USING ' ' 'BDC_CURSOR' 'RP50G-CHOIC',
      USING ' ' 'RP50G-CHOIC' 'Time Sheet Defaults',
      USING ' ' 'RP50G-TIMR6' 'X',
      USING ' ' 'BDC_OKCODE' '=INS'.
  PERFORM f_dynpro:
       USING 'X' 'MP031500' '2000',
       USING ' ' 'BDC_CURSOR' p0315-begda,
       USING ' ' 'P0315-BEGDA' v_date1,
       USING ' ' 'P0315-KOSTL' p0315-kostl,
       USING ' ' 'BDC_SUBSCR' 'ZP031500',
       USING ' ' 'BDC_OKCODE' '=UPD'.
*Runs transaction on background
  CALL TRANSACTION 'PA30' USING i_bdcdata
                          MODE c_n UPDATE c_a
                          MESSAGES INTO i_error2.
  IF sy-subrc <> 0.
    PERFORM f_bdc_error.
    ADD 1 TO v_error.
  ELSE.
    ADD 1 TO v_process.
  ENDIF.
ENDFORM.
     Form  f_dynpro
     Subroutine used to populate the BDC table.
FORM f_dynpro USING  fp_dynbegin
                     fp_name
                     fp_value.
  IF fp_dynbegin EQ 'X'.
    CLEAR bdcdata.
    bdcdata-program  = fp_name.
    bdcdata-dynpro   = fp_value.
    bdcdata-dynbegin = fp_dynbegin.
    APPEND bdcdata TO i_bdcdata.
  ELSE.
    CLEAR bdcdata.
    bdcdata-fnam = fp_name.
    bdcdata-fval = fp_value.
    APPEND bdcdata TO i_bdcdata.
  ENDIF.
ENDFORM.                    " F_DYNPRO
     Form  f_bdc_error
    Check BDC Error when processing
FORM f_bdc_error.
  CLEAR w_error2.
  READ TABLE i_error2 INTO w_error2 WITH KEY msgtyp = c_msgtyp.
  IF sy-subrc EQ 0.
    MOVE: w_error2-msgnr TO w_errorall-msgnr.
         w_error2-msgv1 TO w_errorall-msgv1,
         w_error2-fldname TO w_errorall-fldname.
*Capture errors in BDC background processing
    CALL FUNCTION 'MESSAGE_TEXT_BUILD'
         EXPORTING
              msgid               = w_error2-msgid
              msgnr               = w_error2-msgnr
              msgv1               = w_error2-msgv1
              msgv2               = w_error2-msgv2
              msgv3               = w_error2-msgv3
              msgv4               = w_error2-msgv4
         IMPORTING
              message_text_output = w_errorall-fldname.
    CLEAR v_recordname.
    CONCATENATE text-001
                w_0315-pernr
                INTO v_recordname SEPARATED BY space.
    MOVE: v_recordname TO w_errorall-recno.
    APPEND w_errorall TO i_errorall.
    CLEAR i_errorall.
  ENDIF.
ENDFORM.                    " f_bdc_error
                     Form F_OREPORT
      Writes the summary report of the program that will provide the
number of records process, number errors and the location of errors
in the BDC.
FORM f_report.
  v_read = v_process + v_error.
*Output Report
  WRITE: text-006.
  ULINE.
  WRITE:/ ,
        /5 text-007,
         36 v_read,
        /5  text-008,
         36 v_process,
        /5  text-009,
         36 v_error.
  NEW-PAGE.
  WRITE: /5 text-003,
          20 text-010,
          60 text-004.
  ULINE.
  CLEAR w_errorall.
  LOOP AT i_errorall INTO w_errorall.
    WRITE: /5  w_errorall-msgnr,
            20  w_errorall-fldname,
            60  w_errorall-recno.
    CLEAR w_errorall.
  ENDLOOP.
ENDFORM.

Hi,
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.
It could go something like:
FORM F_UPLOAD
  IF w_session_open IS INITIAL.
    CALL FUNCTION 'BDC_OPEN'.
    CLEAR: w_record_number.
    w_session_open = 'X'.
  ENDIF.
  <insert BDC logic here>.
  CALL FUNCTION 'BDC_INSERT'.
  w_record_number = w_record_number + 1.
  IF w_record_number >= 10.
    CALL FUNCTION 'BDC_CLOSE'.
    SUBMIT RSBDCSUB (passing unique BDC session name) AND RETURN.
    CLEAR: w_session_open
  ENDIF.
ENDFORM.
As RSBDCSUB creates a background job to process the BDC session, your program would continue whilst the BDC session was being processed.
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).
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.
Hope that helps.
Cheers,
Brad

Similar Messages

  • Syntax problem with BDC perform

    Dear Friends,
    small problem in BDC Perform syntax but I am not getting how to do this..
    I have writen the code like this in my BDC byt its throughing the error...Here I want to do the validation on each and every field. I mean If that field values are empty i don't want to change the SAP field value.
    my code is like this.
        PERFORM dynpro USING:
        'X' 'SAPLMGMM' '0080'.
        IF NOT p_int_matl-werks IS INITIAL.
        ' ' 'RMMG1-WERKS' p_int_matl-werks.
        ENDIF.
        IF NOT p_int_matl-werks IS INITIAL.
        ' ' 'RMMG1-LGORT' p_int_matl-lgort.
          ENDIF.
        ' ' 'BDC_OKCODE' '/00'.
    pls give me exact code how to do this...
    Thanks
    Sridhar

    Hi sridher,
    1. this kind of syntax ie. IF will give error.
    2. If ur requirement is : blank value should not be put in bdc,
    3. then one way is to change / write the logic
        inside the form itself.
    4. ie. inside the routine/form DYNPRO.
    5. So, it will be then general for all performs.
    regards,
    amit m.

  • Bdc performance in "No screen" mode, on slow network, on remote server.

    Hi,
    We have created a bdc program in ABAP.
    say, our servers are installed in US. and our users are trying to execute bdc by uploading a data file from UK.
    consider that the connectivity(network) between our US office and UK office is not so goood.
    i understand that the upload of the data file will take time. but after the upload, for bdc execution, how the bdc performance gets impacted by the network performance.
    if we execute the bdc in All screen mode, i am convinced that the bdc will definetly will take a long time to execute, becasue UK user needs to press "Enter" several no. of times, and so many pings will happen to the server.
    if we execute the bdc in No Screen mode, does it meen it is completely background process.
    i mean in this case also, is the screen info passed to and from between the server(US) and the sapgui(UK).
    or
    once the data upload is over, in  No Screen mode, the entire activity is done in server, and the control comes back to sapgui at the end.
    We have put some logs, and we found that most of the time is taken by the CALL TRANSACTION statement
    CALL TRANSACTION 'PP01' USING it_bdcdata
    is there any other points to improve the bdc execution on a remote server.
    thanks in advance,
    Madhu_1980

    Hi Sandra ,
    Thanks for your suggestion throiugh the link.
    Had checked the trouble shooting for  BDC : but the scenario in which i experienc eth eproblem is little different.
    Well the Interface to create vendors was working perfectly in ALL Screen as well as NO-SCREEN mode.
    But a small requirement seem to change its execution.
    The Interface had a commented code snippet : retrieve email address from ADR6 table. Now according to the new requirement this code snippet needs to be utilized. So i uncommented that and duly passed th etable entries into the concerned screen (the code for that screen aldready exsits in the recording but not utilized since the retrieval was commented)
    Collects the email address for any vendor from ADr6 table
    Moderator message - Please respect the 2,500 character maximum when posting. Post only the relevant portions of code
    now for linking the above created vendor, FK02 BDC is maintained. In this BDC the payment transaction screen is used to link payee vendors (above created vendor)  at company code level for any principal vendors (selected from lfa1 and lfb1 table). So only two screens for linking .
    this entire code was working perfect in both A mode and  N mode  but after including the ADR6 code snippet i dont find teh similar execution in N mode.
    Could you please guide me where could i ahve made some mistake.
    thanks
    Kylie
    Edited by: kylietisha on Jun 6, 2010 5:27 PM
    Edited by: kylietisha on Jun 6, 2010 5:42 PM
    Edited by: Rob Burbank on Jun 6, 2010 4:33 PM

  • How to put a report which contains code for  BDC in background

    Hello Experts ,
    Please provide your valuable opinions on following issue,
    My BDC execution is taking longer time and it gives time out error. To avoid this problem i have created a separate report which l contains the BDC code (Call transaction ) and  i have put this report for background execution. But upon doing this My BDC code is not performing the transaction call which it was performing when it was executed individually.  In sm37 it shown the job that i am creating but nothing is actually happening as a result of transaction call.
    The code that i have written is :
    RFC code
    SUBMIT ZREPORT AND RETURN.
    RFC end
    Z_REPORT .
    PERFORM open_job.
    PERFORM get_print_parameters.
    PERFORM job_submit. here in Submit i have specified the another report name(zbdcreport) which contains the actual logic for bdc 
    PERFORM job_close.
    Report END.
    zbdcreport
    The call transaction is as follows :
    ( CALL TRANSACTION TCODE USING BDCDATA
                         MODE   'N' "CTUMODE "N
                         UPDATE 'S' "CUPDATE "S
                         MESSAGES INTO MESSTAB .)
    end zbdcreport
    Can anybody provide the reason for the error . 
    Regards,
    Uma

    Hi
    Check the code using this...
    DATA: number           TYPE tbtcjob-jobcount,
          name             TYPE tbtcjob-jobname VALUE 'JOB_TEST',
          print_parameters TYPE pri_params.
    CALL FUNCTION 'JOB_OPEN'
      EXPORTING
        jobname          = name
      IMPORTING
        jobcount         = number
      EXCEPTIONS
        cant_create_job  = 1
        invalid_job_data = 2
        jobname_missing  = 3
        OTHERS           = 4.
    IF sy-subrc = 0.
      SUBMIT submitable TO SAP-SPOOL
                        SPOOL PARAMETERS print_parameters
                        WITHOUT SPOOL DYNPRO
                        VIA JOB name NUMBER number
                        AND RETURN.
      IF sy-subrc = 0.
        CALL FUNCTION 'JOB_CLOSE'
          EXPORTING
            jobcount             = number
            jobname              = name
            strtimmed            = 'X'
          EXCEPTIONS
            cant_start_immediate = 1
            invalid_startdate    = 2
            jobname_missing      = 3
            job_close_failed     = 4
            job_nosteps          = 5
            job_notex            = 6
            lock_failed          = 7
            OTHERS               = 8.
        IF sy-subrc <> 0.
        ENDIF.
      ENDIF.
    ENDIF.

  • How to select line items in recording(BDC)

    Hi All,
    we are trying to Recording QP02 transaction ,we have inputs like material,plant,Group,Group Counter.
    after entering these inputs we will get multiful line items(inspection characteristics).we need to check one field for each item.
    How can we get this?
    Please help me?
    Thanks,
    Peddi reddy.

    Hi Kamesh,
    Thanks.
    After selecting line items i am selecting control indicators Tab.
    then Pop up screen called as (Edit characteristic control indicators) will open ,..then just pressing enter..the it will show another pop up ..here i am selecting one field(Long term Inspection)..the process has to do for all line items.
    In My program i have copied BDC performs which i got from Recording.
    Do i need to change tha performs or will it work?
    i tested in foreground with another material .... upto 3 or 4 line items its working fine.after that sytem does.t say anything.
    if i need to chage performs please help me .

  • BDC Program is not working in background mode

    Hi All,
             I hv one bdc program for tcode fb02 which is working fine in foreground mode and data is updated to each screen properly. While running the same program in Background mode data is not updated. Can u seggust the solution.
    Regards,
    Rahul S

    Hi ,
    Remove the break point in the BDC performs.
    put the break point once u complete the BDC.... otherwise execute the BDC in MODE 'E'.. error mode.
    regards,
    Rama Reddy
    Edited by: ram reddy on Nov 16, 2009 5:37 AM

  • Error in Accounting document Posting using - BDC

    While creatind document in FB01 using BDC
      PERFORM fill_dynpro_fields1 USING:
               co_true    co_program        '0100' lit_bdcdata,
               space      'BKPF-BLDAT'       it_bkpf-bldat lit_bdcdata,
               space      'BKPF-BUDAT'       it_bkpf-budat lit_bdcdata,
               space      'BKPF-BLART'       tp_type1 lit_bdcdata,
               space      'BKPF-BUKRS'       it_bkpf-bukrs lit_bdcdata,
               space      'BKPF-WAERS'       it_bkpf-waers lit_bdcdata,
               space      'BKPF-XBLNR'       it_bkpf-xblnr lit_bdcdata,
               space      'RF05A-NEWBS'      lco_postkey lit_bdcdata,
               space      'RF05A-NEWKO'      it_bseg-kunnr lit_bdcdata,
               space      'BDC_OKCODE'       co_intro lit_bdcdata,
               co_true    co_program        '0301' lit_bdcdata,
               space      'BSEG-WRBTR'       it_bseg-wrbtr lit_bdcdata,
               space      'BSEG-ZTERM'       it_bseg-zterm lit_bdcdata,
               space      'BSEG-SGTXT'       it_bseg-sgtxt lit_bdcdata,
               space      'RF05A-NEWBS'      lco_postkey1 lit_bdcdata,
               space      'RF05A-NEWKO'      it_bseg-kunnr lit_bdcdata,
               space      'BDC_OKCODE'       co_intro lit_bdcdata,
               co_true    co_program        '0301' lit_bdcdata,
               space      'BSEG-WRBTR'       it_bseg-wrbtr lit_bdcdata,
               space      'BSEG-ZTERM'       it_bseg-zterm lit_bdcdata,
               space      'BSEG-SGTXT'       it_bseg-sgtxt lit_bdcdata,
               space      'BDC_OKCODE'       co_intro lit_bdcdata.
    I am getting message like bseg-wrbtr input value is longer than screen field. but i have declare it as same type as above space      'BSEG-WRBTR'       it_bseg-wrbtr lit_bdcdata,
    Can you help me.
    Always use proper subject line

    Hi Vijay ,
    I have one more problem regarding same please help me.
    In the program i am calling the transaction FB01 twice and two different document is created of SA and DA type.
    After the program is executed i can only see the DA document created log message. But the SA document(message) is getting suppressed but the document is getting created .
    How can i get the both document no at a time once i run the program.

  • Help required in BDC for Vendor creation

    Hi ,
         I have to create vendors using bdc via trxn FK01.
    my requirement is to add multiple street adress but while recording initial screen contains only one line for street.
    how should i proceed ?
    I am working in ecc6.0.given below is my BDC.
    perform open_group.
    loop at record.
    perform bdc_dynpro      using 'SAPMF02K' '0105'.
    perform bdc_field       using 'BDC_CURSOR'
                                  'RF02K-BUKRS'.
    perform bdc_field       using 'BDC_OKCODE'
                                  '/00'.
    perform bdc_field       using 'RF02K-BUKRS'
                                  record-bukrs.
    perform bdc_field       using 'RF02K-KTOKK'
                                  record-ktokk.
    perform bdc_dynpro      using 'SAPMF02K' '0110'.
    perform bdc_field       using 'BDC_CURSOR'
                                  'LFA1-REGIO'.
    perform bdc_field       using 'BDC_OKCODE'
                                  '/00'.
    perform bdc_field       using 'LFA1-ANRED'
                                  record-anred.
    perform bdc_field       using 'LFA1-NAME1'
                                  record-name1 .
    perform bdc_field       using 'LFA1-STRAS'
                                  record-stras.
    perform bdc_field       using 'LFA1-ORT01'
                                   record-ort01.
    perform bdc_field       using 'LFA1-PSTLZ'
                                  record-pstlz.
    perform bdc_field       using 'LFA1-LAND1'
                                 record-land1.
    perform bdc_field       using 'LFA1-REGIO'
                                  record-regio.
    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 'SAPMF02K' '0210'.
    perform bdc_field       using 'BDC_CURSOR'
                                  'LFB1-ALTKN'.
    perform bdc_field       using 'BDC_OKCODE'
                                  '/00'.
    perform bdc_field       using 'LFB1-AKONT'
                                  record-akont.
    perform bdc_field       using 'LFB1-ALTKN'
                                  record-altkn.
    perform bdc_dynpro      using 'SAPMF02K' '0215'.
    perform bdc_field       using 'BDC_CURSOR'
                                  'LFB1-ZWELS'.
    perform bdc_field       using 'BDC_OKCODE'
                                  '/00'.
    perform bdc_field       using 'LFB1-REPRF'
                                  record-reprf.
    perform bdc_field       using 'LFB1-ZWELS'
                                  record-zwels.
    perform bdc_dynpro      using 'SAPMF02K' '0220'.
    perform bdc_field       using 'BDC_CURSOR'
                                  'LFB5-MAHNA'.
    perform bdc_field       using 'BDC_OKCODE'
                                  '/00'.
    perform bdc_dynpro      using 'SAPMF02K' '0610'.
    perform bdc_field       using 'BDC_OKCODE'
                                  '=UPDA'.
    perform bdc_field       using 'BDC_CURSOR'
                                  'LFB1-QLAND'.
    perform bdc_transaction using 'FK01'.
    refresh bdcdata.
    clear bdcdata.
    endloop.
    perform close_group.
    Edited by: Rachel on Jun 19, 2008 11:23 AM

    Hi,
    while recording from the SHDB, in the initail screen of FK01
    you will have the check box Use central address management. check that, you will get multiple streets.
    Thanks,
    Rajinikantth

  • BDC upload program for inoftypes 14 and 168

    Hi All,
    I am uploading IT 14 and 168 through a single BDC program. i am opening the bdc session using
    BDC_OPEN_GROUP before bdc recording. my requirement is to upload IT 168 only when uploading
    of IT 14 is successful. For this i am using the message table of the first upload(for IT14). if the message
    type is 'S'(success) then i am uploading IT168 else i am moving it to an error internal table. Please suugest
    wthr this logic is fine. Also where should i call BDC_CLOSE_GROUP. currently i am calling it after the
    PERFORM for upload of infotype 168 but it is giving error "unable to open BDC_CLOSE_GROUP".
    Can anyone suggest me the solution through some sample code.
    i am attaching here my code for your reference.
    REPORT  ZUSAHR_IN_BN_E_014_168  NO STANDARD PAGE HEADING
                            LINE-COUNT 65 LINE-SIZE 132.
    *=======================================================================
    TYPE-POOLS
    *=======================================================================
    TYPE-POOLS: slis,
                truxs.
    *=======================================================================
    TABLES
    *=======================================================================
    TABLES: pernr.
    *=======================================================================
    INFOTYPES
    *=======================================================================
    INFOTYPES: 0000,                                    "Action
               0014,                                    "Recurring payement/deductions
               0168.                                    "Insurance plan
    *=======================================================================
    TYPES
    *=======================================================================
    TYPES : BEGIN OF t_0014_0168,
             num(20) type c,         "Number
             actcode(1) type c,      "action code
             lgart LIKE p0014-lgart, "Wage Type
            betrg LIKE q0014-betrg, "Amount
             betrg(14) type c, "Amount
             bplan LIKE p0168-bplan, "Benefit plan
             bcovr like p0168-bcovr, "Insurance Option
            END OF t_0014_0168,
            BEGIN OF t_pernr,
              pernr LIKE p0002-pernr,  "personnel number
              perid like p0002-perid,  "SSN
            END OF t_pernr,
            BEGIN OF errmsg,
              pernr LIKE p0014-pernr,  "personnel number
              messg(85),              " message text
            END OF errmsg,
            BEGIN OF succmsg,
              pernr LIKE p0014-pernr,  "personnel number
             messg(85),              " message text
            END OF succmsg.
    *=======================================================================
    INTERNAL TABLES
    *=======================================================================
    DATA : i_itab TYPE STANDARD TABLE OF t_0014_0168,
           i_pernr TYPE STANDARD TABLE OF t_pernr,
           i_bdcitab TYPE STANDARD TABLE OF bdcdata ,
           i_bdcmsgcoll TYPE STANDARD TABLE OF bdcmsgcoll,
           i_errmsg TYPE STANDARD TABLE OF errmsg,
           i_succmsg TYPE STANDARD TABLE OF succmsg.
    *=======================================================================
    RANGES
    *=======================================================================
    *=======================================================================
    DATA DECLARATION
    *=======================================================================
    DATA : messg(85).
    *=======================================================================
    GLOBAL WORKAREAS
    *=======================================================================
    DATA : wa_itab TYPE t_0014_0168,
           wa_pernr TYPE t_pernr,
           wa_bdcitab TYPE bdcdata ,
           wa_bdcmsgcoll TYPE bdcmsgcoll,
           wa_errmsg TYPE errmsg,
           wa_succmsg TYPE succmsg.
    *=======================================================================
    GLOBAL VARIABLES
    *=======================================================================
    DATA : g_n1 TYPE sy-dbcnt.
    *=======================================================================
    GLOBAL CONSTANTS
    *=======================================================================
    DATA : g_x TYPE c VALUE 'X',
           g_asc    TYPE char10 VALUE 'ASC',
           g_xls(3) TYPE c VALUE 'XLS',
           g_f TYPE c VALUE 'F',
           g_1 TYPE c VALUE '1',
           g_0 TYPE c VALUE '0',
           g_u TYPE c VALUE 'U',
           g_int(3) TYPE c VALUE 'INT',
           g_raw(3) TYPE c VALUE 'RAW',
           G_A(1) TYPE C VALUE 'A',
           G_C(1) TYPE C VALUE 'C',
           G_D(1) TYPE C VALUE 'D'.
    *=======================================================================
    SELECTION-SCREEN
    *=======================================================================
    *Block for Additional selection
    SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-001.
    PARAMETERS : p_check TYPE char1 DEFAULT 'X', "check box for test run
                 p_file1 TYPE  rlgrap-filename OBLIGATORY, " upload file
                 p_file2 TYPE rlgrap-filename OBLIGATORY, " succ emp
                 p_file3 TYPE rlgrap-filename OBLIGATORY. " err emp
    SELECTION-SCREEN END OF BLOCK b1.
    *=======================================================================
    AT SELECTION-SCREEN
    *=======================================================================
    AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_file1.
      PERFORM sub_file_intake.
    *=======================================================================
    START-OF-SELECTION
    *=======================================================================
    START-OF-SELECTION.
      PERFORM sub_data_upload.
      PERFORM GET_PERNR_SSN.
    *=======================================================================
    END-OF-SELECTION
    *=======================================================================
    END-OF-SELECTION.
    *> upload the data using BDC
      PERFORM sub_bdc_upload.
    *> To display the contents of the input file for test run
      IF p_check = space.
        PERFORM sub_output.
      ELSE.
    *> To display in the messages after uploading the input file
        PERFORM sub_output_messages.
      ENDIF.
    *&      Form  sub_file_intake
          F4 on filename to accept file
    -->  p1        text
    <--  p2        text
    FORM sub_file_intake .
    To provide F4 Functionality for file path
      CALL FUNCTION 'KD_GET_FILENAME_ON_F4'
        EXPORTING
          program_name  = syst-repid
        CHANGING
          file_name     = p_file1
        EXCEPTIONS
          mask_too_long = 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.                    " sub_file_intake
    *&      Form  SUB_DATA_UPLOAD
           Upload the input file and perform the checkings.
    -->  p1        text
    <--  p2        text
    FORM SUB_DATA_UPLOAD .
    *> local variable for filename
      DATA : l_file1 TYPE string.
    *> assign value for file1.
      l_file1 = p_file1.
    *> function to upload the input file
      CALL FUNCTION 'GUI_UPLOAD'
        EXPORTING
          filename                = l_file1
          filetype                = g_asc
          has_field_separator     = g_x
        TABLES
          data_tab                = i_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.
    ENDFORM.                    " SUB_DATA_UPLOAD
    *&      Form  sub_output
          if program is on test run mode then display records
    FORM sub_output .
    *> Count the number of employee to be processed
      CLEAR g_n1.
      DESCRIBE TABLE i_itab LINES g_n1.
      IF g_n1 NE 0.
    *> if program is in test run mode then display
        LOOP AT i_itab INTO wa_itab.
          WRITE: / wa_itab-num,
                   wa_itab-lgart,
                   wa_itab-betrg,
                   wa_itab-bplan,
                   wa_itab-bcovr.
        ENDLOOP.
      ENDIF.
    ENDFORM.                    " sub_output
    *&      Form  sub_bdc_upload
          bdc upload
    FORM sub_bdc_upload .
    *> Count the number of employee to be processed
      CLEAR g_n1.
      DESCRIBE TABLE i_itab LINES g_n1.
      IF g_n1 NE 0.
        PERFORM sub_open_group.
        PERFORM sub_bdc_sessions.
       PERFORM sub_close_group.
      ELSE.
        MESSAGE e003(zmsg) WITH text-021.
      ENDIF.
    ENDFORM.                    " sub_bdc_upload
    *&      Form  sub_open_group
          bdc_open_group
    FORM sub_open_group .
    *> group name
      DATA : c_group LIKE apqi-groupid .
      c_group = text-001.
      CALL FUNCTION 'BDC_OPEN_GROUP'
        EXPORTING
          client              = sy-mandt
          group               = c_group
          holddate            = sy-datum
          keep                = g_x
          user                = sy-uname
          prog                = sy-cprog
        EXCEPTIONS
          client_invalid      = 1
          destination_invalid = 2
          group_invalid       = 3
          group_is_locked     = 4
          holddate_invalid    = 5
          internal_error      = 6
          queue_error         = 7
          running             = 8
          system_lock_error   = 9
          user_invalid        = 10
          OTHERS              = 11.
      IF sy-subrc <> 0.
        MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
                WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
      ENDIF.
    ENDFORM.                    " sub_open_group
    *&      Form  sub_close_group
          Close the BDC Session
    FORM sub_close_group .
      CALL FUNCTION 'BDC_CLOSE_GROUP'
        EXCEPTIONS
          not_open    = 1
          queue_error = 2
          OTHERS      = 3.
      IF sy-subrc <> 0.
        MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
               WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
      ENDIF.
    ENDFORM.                    " sub_close_group
    *&      Form  sub_bdc_sessions
          BDC Sessions
    FORM sub_bdc_sessions .
    *> Local Constants
      DATA: l_ctumode LIKE ctu_params-dismode VALUE 'A',
            l_cupdate LIKE ctu_params-updmode VALUE 'S',
            l_startdate(10) type c,
            l_enddate(10) type c,
            l_tcode(4) TYPE c VALUE 'PA30',
            l_info(2) TYPE c VALUE '14'.
      LOOP AT i_itab INTO wa_itab.
        perform bdc_dynpro      using 'SAPMP50A' '1000'.
       IF  wa_itab-actcode = G_A.
        perform bdc_field       using 'BDC_OKCODE'
                                      '=INS'.
       ELSEIF  wa_itab-actcode = G_D.
        perform bdc_field       using 'BDC_OKCODE'
                                      '=DEL'.
       ELSEIF  wa_itab-actcode = G_C.
        perform bdc_field       using 'BDC_OKCODE'
                                      '=MOD'.
       ENDIF.
        perform bdc_field       using 'RP50G-PERNR' wa_itab-num.
        perform bdc_field       using 'RP50G-TIMR6'
                                      'X'.
        perform bdc_field       using 'BDC_CURSOR'
                                      'RP50G-CHOIC'.
        perform bdc_field       using 'RP50G-CHOIC' l_info.
        perform bdc_dynpro      using 'MP001400' '2010'.
        perform bdc_field       using 'BDC_CURSOR'
                                      'Q0014-BETRG'.
        perform bdc_field       using 'BDC_OKCODE'
                                      '/00'.
        perform bdc_field       using 'P0014-BEGDA'
                                      '03/18/2008'.
        perform bdc_field       using 'P0014-ENDDA'
                                      '12/31/9999'.
        perform bdc_field       using 'P0014-LGART' wa_itab-lgart.
       perform bdc_field       using 'Q0014-BETRG' wa_itab-betrg.
        perform bdc_field       using 'Q0014-BETRG'
                                       wa_itab-betrg.
                                     '               248'.
       perform bdc_field       using 'P0014-BETRG' wa_itab-betrg.
        perform bdc_field       using 'P0014-WAERS'
                                      'USD'.
        perform bdc_dynpro      using 'MP001400' '2010'.
        perform bdc_field       using 'BDC_CURSOR'
                                      'P0014-BEGDA'.
        perform bdc_field       using 'BDC_OKCODE'
                                      '=UPD'.
        perform bdc_field       using 'P0014-BEGDA'
                                      '03/18/2008'.
        perform bdc_field       using 'P0014-ENDDA'
                                      '12/31/9999'.
       perform bdc_field       using 'P0014-LGART' wa_itab-lgart.
       perform bdc_field       using 'Q0014-BETRG' wa_itab-betrg.
       perform bdc_field       using 'P0014-BETRG' wa_itab-betrg.
        perform bdc_field       using 'P0014-WAERS'
                                      'USD'.
    *>  refresh the message tab
        REFRESH i_bdcmsgcoll.
        CALL TRANSACTION l_tcode USING i_bdcitab
                         MODE   l_ctumode
                         UPDATE l_cupdate
                         MESSAGES INTO i_bdcmsgcoll.
    *>  refresh the bdc data tab
        REFRESH i_bdcitab.
    *>  store the message for this pernr
        PERFORM sub_build_messages.
      ENDLOOP.
    ENDFORM.                    " sub_bdc_sessions
           Start new screen                                              *
    FORM bdc_dynpro USING program dynpro.
      CLEAR wa_bdcitab.
      wa_bdcitab-program  = program.
      wa_bdcitab-dynpro   = dynpro.
      wa_bdcitab-dynbegin = g_x.
      APPEND wa_bdcitab TO i_bdcitab.
    ENDFORM.                    "BDC_DYNPRO
           Insert field                                                  *
    FORM bdc_field USING fnam fval.
      IF fval <> space.
        CLEAR wa_bdcitab.
        wa_bdcitab-fnam = fnam.
        wa_bdcitab-fval = fval.
        APPEND wa_bdcitab TO i_bdcitab.
      ENDIF.
    ENDFORM.                    "BDC_FIELD
    *&      Form  sub_build_messages
          Generate the messages
    FORM sub_build_messages .
    *> Local Constants
      DATA : l_s TYPE c VALUE 'S'.
      LOOP AT i_bdcmsgcoll INTO wa_bdcmsgcoll.
    *> generate the message
        CALL FUNCTION 'MESSAGE_TEXT_BUILD'
          EXPORTING
            msgid               = wa_bdcmsgcoll-msgid
            msgnr               = wa_bdcmsgcoll-msgnr
            msgv1               = wa_bdcmsgcoll-msgv1
            msgv2               = wa_bdcmsgcoll-msgv2
            msgv3               = wa_bdcmsgcoll-msgv3
            msgv4               = wa_bdcmsgcoll-msgv4
          IMPORTING
            message_text_output = messg
          EXCEPTIONS
            OTHERS              = 1.
        IF sy-subrc EQ 0.
    *> if message type is 'S' then store in successful table
          IF wa_bdcmsgcoll-msgtyp = l_s.
            MOVE wa_itab-num TO wa_succmsg-pernr.
            MOVE messg TO wa_succmsg-messg.
            APPEND wa_succmsg TO i_succmsg.
            CLEAR wa_succmsg.
            PERFORM BDC_UPLOAD_168.
          ELSE.
    *> if message type is 'E' then store in error table
            MOVE wa_itab-num TO wa_errmsg-pernr.
            MOVE messg TO wa_errmsg-messg.
            APPEND wa_errmsg TO i_errmsg.
            CLEAR wa_errmsg.
          ENDIF.
        ENDIF.
      ENDLOOP.
    ENDFORM.                    " sub_build_messages
    *&      Form  sub_output_messages
          text
    -->  p1        text
    <--  p2        text
    FORM sub_output_messages .
      IF p_check = g_x.
    *> clear the count
        CLEAR g_n1.
    *> count the number of successful employees
        DESCRIBE TABLE i_succmsg LINES g_n1.
        IF g_n1 <> 0 .
    *> download success file
          PERFORM sub_succ_file.
    *> display the successful employees
          WRITE :/ text-002.
          LOOP AT i_succmsg INTO wa_succmsg.
            WRITE:/ wa_succmsg-pernr, wa_succmsg-messg.
          ENDLOOP.
        ENDIF.
    *> clear the count
        CLEAR g_n1.
    *> count the number of error employees
        DESCRIBE TABLE i_errmsg LINES g_n1.
        IF g_n1 <> 0 .
    *> download error file
          PERFORM sub_err_file.
    *> display the error employees
          WRITE :/ text-003.
          LOOP AT i_errmsg INTO wa_errmsg.
            WRITE:/ wa_errmsg-pernr,wa_errmsg-messg.
          ENDLOOP.
        ENDIF.
      ENDIF.
    ENDFORM.                   " sub_output_messages
    *&      Form  SUB_SUCC_FILE
          text
    -->  p1        text
    <--  p2        text
    FORM sub_succ_file .
    *> local variable for filename
      DATA : l_file1 TYPE string.
    *> assign value for file1.
      l_file1 = p_file2.
      CALL FUNCTION 'GUI_DOWNLOAD'
        EXPORTING
          filename                = l_file1
          filetype                = g_asc
        TABLES
          data_tab                = i_succmsg
        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 EQ 0.
        MESSAGE s003(zmsg) WITH text-006.
      ENDIF.
    ENDFORM.                    " SUB_SUCC_FILE
    *&      Form  SUB_ERR_FILE
          text
    -->  p1        text
    <--  p2        text
    FORM sub_err_file .
    *> local variable for filename
      DATA : l_file1 TYPE string.
    *> assign value for file1.
      l_file1 = p_file3.
      CALL FUNCTION 'GUI_DOWNLOAD'
        EXPORTING
          filename                = l_file1
          filetype                = g_asc
        TABLES
          data_tab                = i_errmsg
        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 EQ 0.
        MESSAGE s003(zmsg) WITH text-007.
      ENDIF.
    ENDFORM.                    " SUB_ERR_FILE
    *&      Form  GET_PERNR_SSN
          text
    -->  p1        text
    <--  p2        text
    FORM GET_PERNR_SSN .
      data : l_cnt type i.
      describe table i_itab lines l_cnt.
      if l_cnt ge 0.
        SELECT PERNR PERID FROM PA0002 INTO table i_pernr
               FOR ALL ENTRIES IN i_itab
               WHERE PERID EQ i_itab-num.
        IF SY-SUBRC EQ 0.
          PERFORM MODIFY_TABLE.
        ENDIF.
      endif.
    ENDFORM.                    " GET_PERNR_SSN
    *&      Form  MODIFY_TABLE
          text
    -->  p1        text
    <--  p2        text
    FORM MODIFY_TABLE .
      LOOP AT i_itab INTO wa_itab.
        READ TABLE i_pernr INTO wa_pernr WITH KEY perid = wa_itab-num.
        IF SY-SUBRC EQ 0.
          MOVE WA_PERNR-PERNR TO WA_ITAB-NUM.
          MODIFY i_itab FROM wa_itab.
        ENDIF.
      ENDLOOP.
    ENDFORM.                    " MODIFY_TABLE
    *&      Form  BDC_UPLOAD_168
          text
    -->  p1        text
    <--  p2        text
    FORM BDC_UPLOAD_168 .
    PERFORM sub_open_group.
      PERFORM sub_bdc_sessions_168.
      PERFORM sub_close_group.
    ENDFORM.                    " BDC_UPLOAD_168
    *&      Form  SUB_BDC_SESSIONS_168
          text
    -->  p1        text
    <--  p2        text
    FORM SUB_BDC_SESSIONS_168 .
      DATA: l_ctumode LIKE ctu_params-dismode VALUE 'A',
             l_cupdate LIKE ctu_params-updmode VALUE 'S',
             l_sdate(10) type c,
             l_edate(10) type c,
             l_tcode(4) TYPE c VALUE 'PA30',
             l_info(3) TYPE c VALUE '168'.
      LOOP AT i_itab INTO wa_itab.
        perform bdc_dynpro      using 'SAPMP50A' '1000'.
        IF  wa_itab-actcode = G_A.
          perform bdc_field       using 'BDC_OKCODE'
                                        '=INS'.
        ELSEIF  wa_itab-actcode = G_D.
          perform bdc_field       using 'BDC_OKCODE'
                                        '=DEL'.
        ELSEIF  wa_itab-actcode = G_C.
          perform bdc_field       using 'BDC_OKCODE'
                                        '=MOD'.
        ENDIF.
        perform bdc_field       using 'RP50G-PERNR' wa_itab-num.
        perform bdc_field       using 'RP50G-TIMR6'
                                      'X'.
        perform bdc_field       using 'BDC_CURSOR'
                                      'RP50G-CHOIC'.
        perform bdc_field       using 'RP50G-CHOIC' l_info.
        perform bdc_dynpro      using 'MP016800' '2000'.
        perform bdc_field       using 'BDC_OKCODE'
                                      '/00'.
        perform bdc_field       using 'P0168-BEGDA'
                                      '03/18/2008'.
        perform bdc_field       using 'P0168-ENDDA'
                                      '12/31/9999'.
        perform bdc_field       using 'BDC_CURSOR'
                                      'P0168-BCOVR'.
        perform bdc_field       using 'P0168-BPLAN' wa_itab-bplan.
        perform bdc_field       using 'P0168-BCOVR' wa_itab-bcovr.
        perform bdc_field       using 'Q0168-CSTDT'
                                      '03/18/2008'.
        perform bdc_field       using 'Q0168-EEPER'
                                      '2'.
        perform bdc_field       using 'P0168-PERIO'
                                      '2'.
        perform bdc_dynpro      using 'MP016800' '2000'.
        perform bdc_field       using 'BDC_CURSOR'
                                      'P0168-BEGDA'.
        perform bdc_field       using 'BDC_OKCODE'
                                      '=UPD'.
        perform bdc_field       using 'P0168-BEGDA'
                                      '03/18/2008'.
        perform bdc_field       using 'P0168-ENDDA'
                                      '12/31/9999'.
        perform bdc_field       using 'P0168-BPLAN' wa_itab-bplan.
        perform bdc_field       using 'P0168-BCOVR' wa_itab-bcovr.
        perform bdc_field       using 'Q0168-CSTDT'
                                      '03/18/2008'.
        perform bdc_field       using 'Q0168-EEPER'
                                      '2'.
    *>  refresh the message tab
        REFRESH i_bdcmsgcoll.
        CALL TRANSACTION l_tcode USING i_bdcitab
                         MODE   l_ctumode
                         UPDATE l_cupdate
                         MESSAGES INTO i_bdcmsgcoll.
    *>  refresh the bdc data tab
        REFRESH i_bdcitab.
    *>  store the message for this pernr
        PERFORM sub_build_messages_168.
      ENDLOOP.
    ENDFORM.                    " SUB_BDC_SESSIONS_168
    *&      Form  SUB_BUILD_MESSAGES_168
          text
    -->  p1        text
    <--  p2        text
    FORM SUB_BUILD_MESSAGES_168 .
    *> Local Constants
      DATA : l_s TYPE c VALUE 'S'.
      LOOP AT i_bdcmsgcoll INTO wa_bdcmsgcoll.
    *> generate the message
        CALL FUNCTION 'MESSAGE_TEXT_BUILD'
          EXPORTING
            msgid               = wa_bdcmsgcoll-msgid
            msgnr               = wa_bdcmsgcoll-msgnr
            msgv1               = wa_bdcmsgcoll-msgv1
            msgv2               = wa_bdcmsgcoll-msgv2
            msgv3               = wa_bdcmsgcoll-msgv3
            msgv4               = wa_bdcmsgcoll-msgv4
          IMPORTING
            message_text_output = messg
          EXCEPTIONS
            OTHERS              = 1.
        IF sy-subrc EQ 0.
    *> if message type is 'S' then store in successful table
          IF wa_bdcmsgcoll-msgtyp = l_s.
            MOVE wa_itab-num TO wa_succmsg-pernr.
            MOVE messg TO wa_succmsg-messg.
            APPEND wa_succmsg TO i_succmsg.
            CLEAR wa_succmsg.
          ELSE.
    *> if message type is 'E' then store in error table
            MOVE wa_itab-num TO wa_errmsg-pernr.
            MOVE messg TO wa_errmsg-messg.
            APPEND wa_errmsg TO i_errmsg.
            CLEAR wa_errmsg.
          ENDIF.
        ENDIF.
      ENDLOOP.
    Many thanks in advance!!!!
    Rupesh

    For the IDOC perspective, you can uses CREMAS.
    For the mass maintenance you still have XK99 (which also uses CREMAS internally)
    True there is NO BAPI
    For the BDC and the table control. Well this is not really true.
    In batchinput, instead of maintaining the rows by there Number, you should select it at the first position.
    OK-CODE /06 will open a selection screen SAPMF02K 2324. The result of the selection screen goes to the first line of the table control.
    Of course this works only in BDC
    reward points if helpful
    Edited by: Alain Bacchi  on Jun 18, 2008 8:48 AM

  • Bdc in table control

    hi friends,
    can any body plz send me one example in table contols in bdc.STEP BY STEP.
    thanks & regards
    ram

    hi,
    Here is the code.
    report zmm_update_contracts_cpy no standard page heading
                                    line-count 45
                                    line-size  115
                                    message-id zmm.
    *                  Types Declarations                                 
    types: begin of ty_ekko,
            ebeln type ekko-ebeln,
            bukrs type ekko-bukrs,
            kdate type ekko-kdate,
            kdatb type ekko-kdatb,
           end of   ty_ekko,
    *-- Structure for success and failed records
           begin of ty_status,
            bukrs type ekko-bukrs,
            ebeln type ekko-ebeln,
            kdate type ekko-kdate,
            kdatb type ekko-kdatb,
           end   of ty_status.
    *                  Internal Table Declarations                         *
    data : it_ekko    type standard table of ty_ekko    with header line,
           it_ekpo    type standard table of ekpo       with header line,
           it_success type standard table of ty_status  with header line,
           it_fail    type standard table of ty_status  with header line,
           bdcdata    type standard table of bdcdata    with header line,
           msgtab     type standard table of bdcmsgcoll with header line.
    *                  Structure  Declarations                             *
    *-- Structure for Parameter string for runtime of CALL TRANSACTION
    data : x_ctu_params type ctu_params.
    *                  Data Declarations                                   *
    data : v_bukrs      type ekko-bukrs, "Company code
           v_ebeln      type ekko-ebeln, "Contract no
           v_ekorg      type ekko-ekorg, "Purchasing Org
           v_bsart      type ekko-bsart, "Document Type
           v_kdatb      type ekko-kdatb,
           v_counter(2) type n ,"value '01',
           v_first(5)   type n,
           v_field      type string.
    *                        Selection Screen                              *
    *-- Selection screen Details
    selection-screen begin of block b1 with frame title text-001.
    select-options :
       s_bukrs for v_bukrs obligatory default '0111', "Company code
       s_ebeln for v_ebeln obligatory,                "Contract no
       s_ekorg for v_ekorg,
       s_bsart for v_bsart,
       s_dats  for v_kdatb.
    selection-screen end of block b1.
    *               Start-of-Selection                                     *
    start-of-selection.
    *-- Get data from DB table ekko based on selection-screen
      perform fetch_data.
    *-- for each record found process BDC
      perform process_bdc.
      perform init_page_head.
    *               End-of-Selection                                     *
    end-of-selection.
    *-- Display report
      perform display_report.
    *                      Top-of-page
    top-of-page.
    *--  Subroutine to print header on top of the page
      perform print_header.
      skip.
      uline.
    *&      Form  fetch_data
    *       text
    form fetch_data.
      select ebeln bukrs kdate kdatb
        from ekko
        into table it_ekko
        where ebeln in s_ebeln
          and bukrs in s_bukrs
          and bstyp = 'K'
          and bsart in s_bsart
          and ekorg in s_ekorg
          and kdatb in s_dats
          and kdate in s_dats.
      if sy-subrc <> 0.
        exit.
      else.
        select * from ekpo
          into table it_ekpo
          for all entries in it_ekko
          where ebeln = it_ekko-ebeln
            and bukrs = it_ekko-bukrs.
    *        and loekz = ''.
      endif.
    endform.                    " fetch_data
    *&      Form  process_bdc
    *       text
    form process_bdc.
      sort it_ekko by ebeln.
      sort it_ekpo by ebeln ebelp.
      loop at it_ekko.
        clear   : bdcdata.
    *              v_counter.
        refresh : bdcdata.
        perform fill_bdctable.
      endloop.
    endform.                    " process_bdc
    *        Start new screen                                              *
    form bdc_dynpro using program dynpro.
      clear bdcdata.
      bdcdata-program  = program.
      bdcdata-dynpro   = dynpro.
      bdcdata-dynbegin = 'X'.
      append bdcdata.
    endform.
    *        Insert field                                                  *
    form bdc_field using fnam fval.
      if fval <> ' '.
        clear bdcdata.
        bdcdata-fnam = fnam.
        bdcdata-fval = fval.
        append bdcdata.
      endif.
    endform.
    *&      Form  fill_bdctable
    *       text
    form fill_bdctable.
    * To have default screen size, mode and update
      x_ctu_params-defsize = 'X'.
      x_ctu_params-dismode = 'E'.
      x_ctu_params-updmode = 'S'.
      v_first = 1.
      shift v_first left DELETING leading '0'.
      perform bdc_dynpro      using 'SAPMM06E' '0205'.
      perform bdc_field       using 'BDC_CURSOR'
                                    'RM06E-EVRTN'.
      perform bdc_field       using 'BDC_OKCODE'
                                    '/00'.
      perform bdc_field       using 'RM06E-EVRTN'
                                    it_ekko-ebeln.
    *reading item data table based on header data table
      loop at it_ekpo where ebeln = it_ekko-ebeln.
        clear v_field.
        v_counter = v_counter + 1.
    *Page Down
        if v_counter = '15' .
          v_counter = '01'.
          concatenate 'RM06E-EVRTP('
                      v_counter
                      into v_field.
          perform bdc_dynpro      using 'SAPMM06E' '0220'.
          perform bdc_field       using 'BDC_CURSOR'
                                         v_field.
          perform bdc_field       using 'BDC_OKCODE'
                                        '=P+'.
          perform bdc_field       using 'RM06E-EBELP'
                                         v_first.
          v_first = v_first + 14.
    *Compare first entry in table control with line item
    *As there are some missing line items in Purchasing Document Item table
          IF V_FIRST <> IT_EKPO-EBELP.
            V_FIRST = IT_EKPO-EBELP.
          ENDIF.
        endif.
    * Check for deletion indicator
        if it_ekpo-loekz is initial.
          concatenate 'RM06E-EVRTP('
                      v_counter
                      into v_field.
          perform bdc_dynpro      using 'SAPMM06E' '0220'.
          perform bdc_field       using 'BDC_CURSOR'
                                         v_field.
          perform bdc_field       using 'BDC_OKCODE'
                                        '=DETZ'.
          perform bdc_field       using 'RM06E-EBELP'
                                         v_first."it_ekpo-ebelp.
          clear v_field.
          concatenate 'RM06E-TCSELFLAG('
                      v_counter
                      into v_field.
          perform bdc_field       using v_field
                                        'X'.
          perform bdc_dynpro      using 'SAPMM06E' '0212'.
          perform bdc_field       using 'BDC_CURSOR'
                                        'EKPO-BRGEW'.
          perform bdc_field       using 'BDC_OKCODE'
                                        '=BACK'.
          perform bdc_field       using 'EKPO-NTGEW'    "netweight
                                        '0'.
          perform bdc_field       using 'EKPO-GEWEI'    "unit
                                        'LB'.
          perform bdc_field       using 'EKPO-BRGEW'    "gross weight
                                        '0'.
        endif.
      endloop.
      perform bdc_dynpro      using 'SAPMM06E' '0220'.
      concatenate 'RM06E-EVRTP('
                  v_field
                  into v_field.
      perform bdc_field       using 'BDC_CURSOR'
                                    v_field.
      perform bdc_field       using 'BDC_OKCODE'
                                    '=BU'.
      perform bdc_dynpro      using 'SAPLSPO1' '0300'.
      perform bdc_field       using 'BDC_OKCODE'
                                    '=YES'.
    *  PERFORM BDC_FIELD       USING 'RM06E-EBELP'
    *                                '10'.
      call transaction 'ME32K' using bdcdata
                          options from x_ctu_params
                            messages into msgtab.
      clear v_counter.
      if sy-subrc = 0.
    *-- populate the success records
        clear it_success.
        it_success-ebeln = it_ekko-ebeln.
        it_success-bukrs = it_ekko-bukrs.
        it_success-kdate = it_ekko-kdate.
        it_success-kdatb = it_ekko-kdatb.
        append it_success.
      else.
    *-- populate the error records
        clear it_fail.
        it_fail-ebeln = it_ekko-ebeln.
        it_fail-bukrs = it_ekko-bukrs.
        it_fail-kdate = it_ekko-kdate.
        it_fail-kdatb = it_ekko-kdatb.
        append it_fail.
      endif.
    endform.                    " fill_bdctable
    *&      Form  display_report
    *       text
    form display_report.
      data : lv_success type i,
             lv_failure type i,
             lv_lines   type i.
      clear : lv_success,
              lv_failure,
              lv_lines.
      describe table it_success lines lv_success.
      describe table it_fail    lines lv_failure.
      lv_lines = lv_failure + lv_success.
      write : / 'Total no of records uploaded :'(002) .
      write : lv_lines.
      write : / 'Total no of successes        :'(003).
      write : lv_success.
      write : / 'Total no of errors           :'(004).
      write : lv_failure.
      if not it_success[] is initial.
        sort it_success by bukrs.
        skip 2.
        write : / 'Success Records'(005).
        loop at it_success.
          at new bukrs.
            write : /    'Company Code '(006) , it_success-bukrs.
            write : /1   'Contract'(007),
                     13  'Validity Dates'(008).
          endat.
          write : /1  it_success-ebeln,
                   13 it_success-kdatb,
                   26 it_success-kdate.
        endloop.
      endif.
      if not it_fail[] is initial.
        sort it_fail by bukrs.
        skip 2.
        write : / 'Error Records'(009).
        loop at it_fail.
          at new bukrs.
            write : /    'Company Code '(006) , it_fail-bukrs.
            write : /1   'Contract'(007),
                     13  'Validity Dates'(008).
          endat.
          write : /1  it_fail-ebeln,
                   13 it_fail-kdatb,
                   26 it_fail-kdate.
        endloop.
      endif.
    endform.                    " display_report
    Regards,
    Richa

  • Problem during Rate Routing Upload using BDC.

    Dear Sir/Madam,
    I am uploading Rate Routings using a BDC program which is working perfectly but having a single problem.
    In the initial screen of the transaction CA21(Create Rate Routing), I need to enter only the Material Number and its Plant and all the other fields should be left blank.
    But, here the group number field is automatically getting filled with the previous value and it is incrementing the group counter number. 
    I want the system to allocate different group number for  each Routing. I want the group number to be unique.
    Thanks,
    Ranjan.

    Dear Ranjan,
    While doing recording CA21. you would pass only the material number and plant (i mean you did recording of CA21 based on material number as well as plant not for routing number (group counter))
    Routing number (group counter) dynamic (In your case Internal number rage has assigned).
    So the Problem is:
    1st record of you internal table update smoothly because you program will pass only material and plant
    group counter (RC271-PLNNR) field is blank, after update 1st record system will regenerates the
    group counter number.
    ones the system updates the data it will generates Group counter number and assign to filed :(RC271-PLNNR).
    after saving the record system will go loop statement of you program. again program will call the call transaction statement with 2nd record of the internal table. call transaction statement pass the material number and plant field at ca21. but group counter number automatically poulated in the screen field because that time system can't be refresh the initial screen of CA21,
    so system will shows previous updated screen ( 1st routing record will show)
    Remove your bdc perform and add this code in your BDC perform.
    *        Start new screen                                              *
    FORM BDC_DYNPRO USING PROGRAM DYNPRO.
       CLEAR BDCDATA.
       BDCDATA-PROGRAM  = PROGRAM.
       BDCDATA-DYNPRO   = DYNPRO.
       BDCDATA-DYNBEGIN = 'X'.
       APPEND BDCDATA.
    ENDFORM.
    *        Insert field                                                  *
    FORM BDC_FIELD USING FNAM FVAL.
       IF FVAL <> SPACE.
         CLEAR BDCDATA.
         BDCDATA-FNAM = FNAM.
         BDCDATA-FVAL = FVAL.
         APPEND BDCDATA.
       ENDIF.
    *                Clearing the Group Counter                                *
       IF FVAL = SPACE.
         CLEAR BDCDATA.
         BDCDATA-FNAM = FNAM.
         BDCDATA-FVAL = FVAL.
         APPEND BDCDATA.
       ENDIF.
    above code: 1st time of call transaction FVAL = space means ( group counter field is blank)
    2nd and rest of the time FVAL <> space. means (previous record group number exists for new call transaction ) so system will be by pass with new record.
    Check with debugging mode. you will come to whats going in you code.
    Even i have go same problem while uploading routing data. i have find out solution after doing my RND.
    Regards,
    Akshath

  • Error while using BDC

    Hi Experts,
         I have used the alv list report
    for eg: the output is
    vendor.no  plant  quantity
    i had displayed quantity's sum at the end of the field(quantity),using do_sum = 'x'.
    that total amount(wrbtr) should display in FB60(in amount field)
    i had used bdc for this,but im getting the error as
    FIELD INVFO-WRBTR. input value is longer than screen field
    Can anyone suggest me on this issue.
    Regards,
    Sharmila.S

    data:value type c.
    loop at it_mseg1.
        move it_mseg1-lifnr to bdc-lifnr.
        move it_mseg1-werks to bdc-werks.
        move it_mseg1-diff to bdc-diff1.
        collect bdc.
        clear it_mseg1.
        endloop.
        value = bdc-diff1.*this is the value*
        CONDENSE value no-gaps.
    loop at bdc.
    perform bdc_dynpro      using 'SAPMF05A' '1100'.
    perform bdc_field       using 'BDC_OKCODE'
                                  '/00'.
    *perform bdc_field       using 'INVFO-WRBTR'
                                  value.*
    *perform bdc_field       using 'INVFO-WRBTR'
                                  value.*
    *perform bdc_field       using 'INVFO-WRBTR'
                                  value.*
    *perform bdc_field       using 'INVFO-WRBTR'
                                  value.*
    *perform bdc_field       using 'INVFO-WRBTR'
                                  value.*
    *perform bdc_field       using 'INVFO-WRBTR'
                                  value.*
      CALL TRANSACTION 'FB60' USING BDCDATA MODE 'A' .
    ENDLOOP.
      ENDCASE.
    ENDFORM.                    "USER_COMMAND
    Edited by: Sharmila Somasundaram on Dec 30, 2009 6:31 PM
    Edited by: Sharmila Somasundaram on Dec 30, 2009 6:52 PM

  • BDC for se38

    Hi Everybody,
    I am preparing a BDC for se38,
    I have done recording and included the functionality for bdc_dynpro and bdc_field,
    I dont know what to do next,
    i am posting the code here
    report ZRECBDCSE38
           no standard page heading line-size 255.
    include bdcrecx1.
    *DATA : IT_BDCDATA LIKE BDCDATA OCCURS 0 WITH HEADER LINE,
          IT_BDCMSGCOLL LIKE BDCMSGCOLL OCCURS 0 WITH HEADER LINE.
    selection-screen begin of block b00.
    parameters: prgname TYPE RS38M-PROGRAMM.
    selection-screen end of block b00.
    DATA: BEGIN OF IT_BDCDATA OCCURS 0.
    INCLUDE STRUCTURE BDCDATA.
    DATA: END OF IT_BDCDATA.
    DATA: BEGIN OF IT_BDCMSGCOLL OCCURS 0.
    INCLUDE STRUCTURE BDCMSGCOLL.
    DATA: END OF IT_BDCMSGCOLL.
    start-of-selection.
    *perform open_group.
    perform bdc_dynpro      using 'SAPLWBABAP' '0100'.
    perform bdc_field       using 'BDC_CURSOR'
                                  'RS38M-PROGRAMM'.
    perform bdc_field       using 'BDC_OKCODE'
                                  '=NEW'.
    perform bdc_field       using 'RS38M-PROGRAMM'
                                    prgname.
    perform bdc_field       using 'RS38M-FUNC_EDIT'
                                  'X'.
    perform bdc_dynpro      using 'SAPLSEDTATTR' '0200'.
    perform bdc_field       using 'BDC_CURSOR'
                                  'TRDIR-SUBC'.
    perform bdc_field       using 'BDC_OKCODE'
                                  '=DROPDOWN_ENTER_SC'.
    perform bdc_field       using 'RS38M-REPTI'
                                  'Test program for testing se38 BDC'.
    perform bdc_field       using 'TRDIR-SUBC'
                                  '1'.
    perform bdc_field       using 'TRDIR-FIXPT'
                                  'X'.
    perform bdc_field       using 'TRDIR-UCCHECK'
                                  'X'.
    perform bdc_dynpro      using 'SAPLSEDTATTR' '0200'.
    perform bdc_field       using 'BDC_CURSOR'
                                  'TRDIR-RSTAT'.
    perform bdc_field       using 'BDC_OKCODE'
                                  '=CONT'.
    perform bdc_field       using 'RS38M-REPTI'
                                  'Test program for testing se38 BDC'.
    perform bdc_field       using 'TRDIR-SUBC'
                                  '1'.
    perform bdc_field       using 'TRDIR-FIXPT'
                                  'X'.
    perform bdc_field       using 'TRDIR-UCCHECK'
                                  'X'.
    perform bdc_dynpro      using 'SAPLSTRD' '0100'.
    perform bdc_field       using 'BDC_CURSOR'
                                  'KO007-L_DEVCLASS'.
    perform bdc_field       using 'BDC_OKCODE'
                                  '=TEMP'.
    perform bdc_field       using 'KO007-L_AUTHOR'
                                  'RAJESHA'.
    perform bdc_dynpro      using 'SAPLS38E' '0400'.
    perform bdc_field       using 'BDC_OKCODE'
                                  '=WB_REUSE_LIB'.
    perform bdc_field       using 'BDC_CURSOR'
                                  'RSTXP-TDLINE(01)'.
    perform bdc_field       using 'RSTXP-TDFIRST'
                                  '   1'.
    *perform bdc_dynpro      using 'SAPLRLB_DISPLAY' '0110'.
    *perform bdc_field       using 'BDC_OKCODE'
                                 '=BACK'.
    perform bdc_dynpro      using 'SAPLS38E' '0400'.
    perform bdc_field       using 'BDC_OKCODE'
                                  '=WB_SAVE'.
    perform bdc_field       using 'BDC_CURSOR'
                                  'RSTXP-TDLINE(01)'.
    perform bdc_field       using 'RSTXP-TDFIRST'
                                  '   1'.
    *perform bdc_transaction using 'SE38'.
    call transaction 'SE38'. "using it_bdcdata mode 'A' update 'S' messages into it_bdcmsgcoll.
    *perform close_group.
    end-of-selection.
    *FORM bdc_field USING FNAM FVAL.
    CLEAR IT_BDCDATA.
    IT_BDCDATA-FNAM = FNAM.
    IT_BDCDATA-FVAL  = FVAL.
    APPEND IT_BDCDATA.
    *ENDFORM.
    *FORM BDC_DYNPRO USING PROG SCR.
    CLEAR IT_BDCDATA.
    IT_BDCDATA-PROGRAM = PROG.
    IT_BDCDATA-DYNPRO  = SCR.
    IT_BDCDATA-DYNBEGIN = 'X'.
    APPEND IT_BDCDATA.
    *ENDFORM.
    **form bdc_transaction using tcode.
    *endform.
    thanks a lot in advance

    according to ur coding u have tried to create a new program in se38 .
    in ur code comment this line call transaction 'SE38'.
    Now uncomment the previous line.
    perform bdc_transaction using 'SE38'.
    now execute ur program in the output screen select the call transaction radio button second one.
    Default mode is N change it to A.
    in program give new program name & click execute button
    but one thing we used to do BDC to transfer data why r u doing this with SE38 transaction better try to do with XD01, create a flat file & try then only u can understand the process.

  • BDC Program: Upload half field.

    Dear Gurus,
    I had a field which look like this, [Salesperson|http://www.pikipimp.com/pp/pimped_photo/s/image/42/144/463/mk03-compiled.JPG?ts=1236666465484]
    I want to update the high lighted place in the salesperson field on the screen base by BDC program. User gave me the CSV file with vendor code and new salesperson name only, how can I upload the CSV file with this 2 field and will not affected the business category field at the RHS?
    Please guide if possible.
    Thank you very much!!
    Warm regards

    hi,
    before modyfing field via BDC program from CSV file you must
    read current value in LFM1-VERKF:
    1. select verkf from lfm1 into zverkf where....
    2. concatenate value_from_csv_file zverkf+10 into new_field.
    (I assumed that second part of field started at 10 character)
    3. modify field via bdc:
    perform bdc_field     using 'LFM1-VERKF' new_field.
    regards,darek

  • Report not working if scheduled in background as a job

    Dear friends please help me in this.
    We are having a z report. This report works fine in foreground and wont work
    ( means it will be in active state for more than 5 days but no result will come)
    when we schedule it in background as a job.
    In this report we are using bdc code also for uploading data. the same code is
    FORM bdc_transaction USING tcode.
      CALL FUNCTION 'BDC_INSERT'
        EXPORTING
          tcode     = tcode
        TABLES
          dynprotab = webdcdata.
      WRITE: /(25) 'BDC_INSERT'(i03),
                   tcode,
              (12) 'returncode:'(i05),
                   sy-subrc.
    ENDFORM.                    "BDC_TRANSACTION
    and i am populating the data in bdc
    PERFORM bdc_dynpro      USING 'SAPLMR1M'      '6000'.
          PERFORM bdc_field       USING 'BDC_OKCODE'    'ENTR'.
          PERFORM bdc_field       USING 'BDC_CURSOR'    'INVFO-BLDAT'.
    PERFORM bdc_dynpro      USING 'SAPLMR1M'    '6000'.
          PERFORM bdc_field       USING 'BDC_OKCODE'  '=BU'.
          PERFORM bdc_field       USING 'BDC_CURSOR'  'DRSEG-RBLGP(01)'.
          CALL TRANSACTION 'MIRO' USING webdcdata MODE p_mode UPDATE 'S'
                                        MESSAGES INTO itab_msg.
    etc.
    First i am populating data into an internal table and then displaying it in the output screen. Here i hava placed a menu items like select all , deselect all , upload etc . So that user can select as many records as he want and then can select the upload button
    so that the report will call bdc to upload the data.
    when i am directly executing the report it displays the data and then
    i will select the records that are diswplayed and
    then i press tghe button upload then the data will be uploaded into
    the screens. here i am not getting any problem everything is fine.
    when i am scheduling this job in Background it will be keep on
    running but no result will be displayed. Atleast output screen
    is also not displayed. Later on i came to know that we
    cannot schedule the reports which are using bdcs in background.
    So please tell me how far it is true. Please give me a clear explaniation for this .
    Thank you so much for all the replies.

    Try to record your transaction using trans. SHDB and select the check-box "Simulate background".
    Not all the dynpro runs same in background and in foreground. Always check the background simulation: when you record, and when you run bdc in foreground.
    Kanagaraja L

Maybe you are looking for

  • Biggest display of incompetence and awful customer...

    Dear BT: CAN I PLEASE GET MY USERNAME AND PASSWORD SO THAT THE ENGINEER CAN INSTALL THE BROADBAND WHICH I ORDERED WELL OVER A MONTH AGO AND HAVE ENCOUNTERED NOTHING BUT DISMAL INCOMPETENCE EVER SINCE. Here’s the whole story: On Feb 10th I ordered Inf

  • Payment proposal list missing bank data from vendor

    when we print the payment proposal via F110 Edit>proposa>proposal list the bank details from the vendor master used to appear, however they have suddenly disappeared we use standard SAP program RFZALI20 thanks

  • GREATER THAN symbol appearing as &gt ; in SQL*Plus

    Version:11.2.0.3 OS : RHEL 5.4 We are a Software vedor firm.We have sent our SQL files to our client to execute. But the codes for various procedures and functions were failing because, in their SQL*Plus session (in Putty) the LESS THAN character < w

  • Help - Can't open Word for Windows docs because of "Spelling Checker" error

    Since updating to the new Pages of iWork 08, I've started having consistent problems opening Word documents sent to me from Windows using colleagues. When I open the .doc in Pages, an error message appears saying "Alert: Couldn't contact Spell Checke

  • How to make Firefox access the internet from Oracle Ent. Unbreakable Linux?

    Hello I have a Dell Duo Core x86 laptop that multiboots Windows 2003 Server, Windows XP and Oracle Enterprise Unbreakable Linux. I use Internet Explorer to access my email while at the library so I know my laptop can access the internet. I just insta