Using keyboardevent (newbie)

Hi all,
In my file, I have an introduction playing over and over.  When someone hits the "K" button, I need the file to immediately go to and play a frame labeled "waterdepth".  What am I missing below?  I keep getting an error saying that "keyboard event cannot be loaded."
Help!
import flash.events.KeyboardEvent;
stage.addEventListener(KeyboardEvent.KEY_DOWN, waterdepth);
function waterdepth(e:KeyboardEvent):void {
    if(event.keyCode == 75) {
        gotoandPlay("waterdepth");

don't you see an error???
use:
import flash.events.KeyboardEvent;
stage.addEventListener(KeyboardEvent.KEY_DOWN, waterdepth);
function waterdepth(e:KeyboardEvent):void {
    if(e.keyCode == 75) {
        gotoandPlay("waterdepth");

Similar Messages

  • How to achieve good non-interlaced video using compressor (newbie question)

    Dear all,
    I am completely at sea but I know that I have to use the "none" setting for the field order and cannot for the life of me work this out.
    Now- I usually export direct from Final Cut Pro (H.264, best quality etc etc) but this time the exported QT file just will not de-interlace (not my footage but I have to deliver the edit), come **** or high water.
    So- a kind soul said to use Compressor... And to not use any field ordering.
    But HOW? I watched videos, sought to use the instructions given me here but am still totally lost.
    What I did:
    1. Launched Compressor,
    2. Dragged in the self-contained reference QT file from my desktop,
    3. Picked a setting (H.264 which has field reordering ON by default),
    4. Dropped the "setting" into the blue field to right of clip thumb,
    5. Double-clicked the "setting" and then-
    6. picked the "Encoder" button, as instructed but cannot change the Field Order.
    Because Compressor is completely new to me I don't know if I ought to NOT pick a setting until I have it how I want it, saved it as a "custom setting" and THEN bring it into the project or if I am to do it once brought in to the project. Either way- how to change the field order to "none". Or should I pick a de-interlace filter? Just that I have been looking and testing and nothing I do creates a de-interlaced final file.
    All the tutorial videos I have watched (erm- about 5 now) go over exporting and how to pick your settings from those which exist but what I need to know is how to change a setting to suit (ie get rid of the evil interlacing).
    I am hoping someone here can give me a very simple step by step or point me in the direction of one.

    Let me see if I can wrap my head around what you're trying to do. You started with an HD timeline 1280 x 720 (16:9). Into this you want to add your SD PAL clips, shrunk down for a picture in picture effect (a completely different concept from multicam.) But your shrunk down clips have nasty interlacing, and the one clip which was meant to be full frame looks like rubbish, right? Sorry but there's no way to blow a clip up 180% and have it look even halfway decent. At least not in FCP. Compressor has an upscale algorithm, available in the same Frame Controls tab where you did the de-interlacing, which can give you somewhat better results. There's also a plug-in from Red Giant called Instant HD which may or may not yield better results than Compressor.
    Here's where you went wrong. The clips to be shrunk should have been deinterlaced before bringing them into FCP, and into your sequence. Go ahead and do this, using the ProRes 422 setting, with the deinterlacing technique from before.
    Your sequence in FCP is fine, except that you want to change its compressor to ProRes 422 so that it matches your newly imported de-interlaced clips.
    You want to de-interlace your P2 1080i clips beforehand as well. The other change to make to your sequence is to change Field Dominance to None.
    If you've already finished your edit, you can still do all of the de-interlacing, outputting all of the results to a new folder. But you have to do every source clip in its entirety if you want to re-link to retain your edit.
    When Compressor's done - this will probably take all night - open your FCP project, select all the source clips, right-click and choose Reconnect Media. Locate the newly de-interlaced ProRes clips and Connect.
    Then you only need to export your sequence as a Quicktime Movie, Current Settings, Self-contained. This will give you a pristine master which will play fine on your computer, and from which you may then use Compressor to create a web or dvd version as needed.

  • Using Timestamp - newbie

    Hi,
    I've got a question on how to use TimeStamp?...which timestamp class/method to use?..etc,etc...
    I'm using JDeveloper with Oracle 8i and it's a distributed database environment.
    I've got a single UI for order entry and Ineedto capture the timestamp from the UI and put it into the tables using JDBC - is there such a sample available somewhere or can anyone help me, please?....this is for an assignment and it's due wednesday (9th Oct)- australian time...& this is the only part of it that I havent been able to figure out yet thanks!!...appreciate any help..

    Hi,
    thanks very much for that - I did go thru the forums and there was stuff on timestamp but not on what I needed to do - I managed to get it going using oracle's 'to_date' function so it's ok now....took me all afternoon but I finally got it happening (only in my li'l trial date table that I made for it - but hey at least it works) .. now to integrate into the actual assignment!!....thanks heaps, ciao,

  • FB05 posting problem using POSTING_INTERFACE_CLEARING

    Hi All,
      I have a problem posting FB05 using POSTING_INTERFACE_CLEARING.My requirement is to select open item based on document number and then create another leg for that open item using GL account,posting key and amount that matches the selected open item amount.
    I am not sure whether I am not doing the right thing because I get an error 'Difference is too large for  clearing'. If I actually go to FB05 and 'choose open item' for document number and try to hit 'Save' on the list of open items screen,I get the same error. I then  select 'Charge off difference' and it takes me to screen that is quite similar to FB01 and I enter the other leg of the entry i.e posting key,acct no,amount etc.I want to replicate the same process using funtion module.I am sending you the code,please help me.
    start-of-selection.
      i_splitinput-compcode = '0410'.
      i_splitinput-currency = 'USD'.
      i_splitinput-amount = '299'.
      i_splitinput-reference = '90286483'.
      i_splitinput-date = '20090320'.
      i_splitinput-type = 'D'.
      i_splitinput-clearingacct = '101002'.
      append i_splitinput.
      loop at i_splitinput.
        at first.
          perform posting_interface_start using 'C'.
        endat.
        at new currency.
          perform f_create_document_header using i_splitinput-compcode
                                                 i_splitinput-currency.
        endat.
        perform f_create_document_items .
        at end of currency.
          perform f_post_gl_document.
        endat.
        at last.
          perform f_posting_interface_end.
        endat.
      endloop.
    *&      Form  posting_interface_start
          text
         -->P_P_TYPE  text
    form posting_interface_start  using    p_type.
      data lv_mode type c value 'N'.
      if p_type = 'C'.
        call function 'POSTING_INTERFACE_START'
          exporting
            i_function         = 'C'
            i_mode             = lv_mode
            i_update           = 'S'
          exceptions
            client_incorrect   = 1
            function_invalid   = 2
            group_name_missing = 3
            mode_invalid       = 4
            update_invalid     = 5
            others             = 6.
        if sy-subrc <> 0.
          message 'Error initializing posting interface'(e05) type 'I'.
        endif.
      endif.
    endform.                    " posting_interface_start
    *&      Form  f_create_document_header
          text
    -->  p1        text
    <--  p2        text
    form f_create_document_header using p_compcode p_currency.
      data: l_waers type waers,
    l_postdate(10) type c,
    l_docdate(10),
    l_bktxt type bktxt,
    l_blart type blart.
    *---Convert dates to proper format MM/DD/YYYY
      write p_pstdat to l_postdate mm/dd/yyyy.
      write p_docdat to l_docdate  mm/dd/yyyy.
      i_ftpost-stype = 'K'.   "Header
      i_ftpost-count = 1.
      perform ftpost_field using: 'BKPF-BUKRS' p_compcode,  "Company Cd
                                  'BKPF-WAERS' p_currency,  "Doc Currency
                                  'BKPF-BLART' p_doctyp,  "Doc Type
                                  'BKPF-BLDAT' l_docdate,   "Doc Date
                                  'BKPF-BUDAT' l_postdate,   "Posting Dt
                                  'BKPF-BKTXT' p_doctxt,  "Header Text
                                  'BKPF-XBLNR' p_ref,     "Ref Doc
                                  'RF05A-AUGTX' 'Test'.  "Clearing item text
    *creditnote to your own
    *debit to customer but sometimes you post credit
    *payor-vendor +ve    payee-customer  -ve
      i_ftpost-count = 0.
    endform.                    " f_create_document_header
    *&      Form  ftpost_field
          text
         -->P_1045   text
         -->P_PA_BUKRS  text
    form ftpost_field using field_name type any
                            field_value type any.
      i_ftpost-fnam = field_name.
      i_ftpost-fval = field_value.
      append i_ftpost.
    endform.                    " ftpost_field
    *&      Form  f_create_document_items
          text
    -->  p1        text
    <--  p2        text
    form f_create_document_items .
    *concatenate i_splitinput
      i_ftclear-agkoa  = 'D'."D-cust, v-vend
      i_ftclear-agkon  = '1041048'."cust/ven acct
      i_ftclear-agbuk  = i_splitinput-compcode.
      i_ftclear-xnops  = 'X'.
      i_ftclear-xfifo  = space.
      i_ftclear-agums  = space.
      i_ftclear-avsid  = space.
      i_ftclear-selfd  = 'BELNR'.
      i_ftclear-selvon = i_splitinput-reference.
      i_ftclear-selbis = 'Test'.                              
      collect i_ftclear.clear i_ftclear.
    i_ftclear-selvon = '101002'.
    i_ftclear-selbis = '101002'.                           
    append i_ftclear.
      i_ftpost-stype = 'P'.  "Details
      i_ftpost-count = i_ftpost-count + 1.
      perform ftpost_field using: 'RF05A-NEWBS' '15',      "Post Key
                                  'RF05A-NEWKO' '1071990',   "GL Account
                                  'BSEG-WRBTR'  '299',     "DC Amount
                                  'BSEG-SGTXT'  'SAN'.      "Item Text
                                 'BSEG-ZUONR'  i_post-merchant_id.
    *lt_ftclear-selvon = p_doc2.
    *lt_ftclear-selbis = p_doc2.
    *APPEND lt_ftclear.
    endform.                    " f_create_document_items
    *&      Form  f_post_gl_document
          text
    -->  p1        text
    <--  p2        text
    form f_post_gl_document .
      refresh i_blntab.
      clear i_blntab.
      call function 'POSTING_INTERFACE_CLEARING'
        exporting
          i_auglv                          = 'UMBUCHNG'
          i_tcode                          = 'FB05'
        I_SGFUNCT                        = ' '
        I_NO_AUTH                        = ' '
        importing
          e_msgid                          = v_msgid
          e_msgno                          = v_msgno
          e_msgty                          = v_msgty
          e_msgv1                          = v_msgv1
          e_msgv2                          = v_msgv2
          e_msgv3                          = v_msgv3
          e_msgv4                          = v_msgv4
          e_subrc                          = g_subrc
        tables
          t_blntab                         = i_blntab
          t_ftclear                        = i_ftclear
          t_ftpost                         = i_ftpost
          t_fttax                          = i_fttax
       exceptions
         clearing_procedure_invalid       = 1
         clearing_procedure_missing       = 2
         table_t041a_empty                = 3
         transaction_code_invalid         = 4
         amount_format_error              = 5
         too_many_line_items              = 6
         company_code_invalid             = 7
         screen_not_found                 = 8
         no_authorization                 = 9
         others                           = 10
      if sy-subrc <> 0.
        v_message = 'Posting Interface Error.'.
      endif.
        CALL FUNCTION 'FORMAT_MESSAGE'
          EXPORTING
            id        = v_msgid
            lang      = sy-langu
            no        = v_msgno
            v1        = v_msgv1
            v2        = v_msgv2
            v3        = v_msgv3
            v4        = v_msgv4
          IMPORTING
            msg       = v_message
          EXCEPTIONS
            not_found = 1
            OTHERS    = 2.
    WRITE : V_MESSAGE.
    endform.                    " f_post_gl_document
    *&      Form  f_posting_interface_end
          text
    -->  p1        text
    <--  p2        text
    form f_posting_interface_end .
      call function 'POSTING_INTERFACE_END'
        exporting
          i_bdcimmed              = ' '
        exceptions
          session_not_processable = 1
          others                  = 2.
      if sy-subrc <> 0.
      endif.
    endform.                    " f_posting_interface_end
    Thanks in advance.

    Hi Abaper,
      This is in continuation of my previous email,I am sending you my code.Please take a look and let me know your suggestions.Also can you please share with me your code if you have ever worked with FB05.
    Also I have debugged and found that at the end on program SAFM05A screen 0733 ,the code enters document number BELNR and does okcode - /11. This takes to the screen SAPDF05X  screen 3100 where it does try to save.I believe 3100 is a final screen according to the FM code but there is something I may not be passing which is not allowing it to save.
    *Session header
          perform populate_xbgr00.
          append xbgr00 to dataset.
        write p_docdat to p_docdat mm/dd/yy.
        write p_pstdat to p_pstdat mm/dd/yy.
    *Document header
              perform populate_xbbkpf using
                i_splitinput-compcode
                p_docdat
                p_pstdat
                p_doctyp
                 i_splitinput-currency
                sum_inprec_hd_tmp-xblnr
                'Test'.
              append xbbkpf to dataset.
    *bbseg bselk and bselp
            perform populate_xbbseg .
    *********forms
    form populate_xbgr00 .
      move '0' to xbgr00-stype.
      move 'zsan' to xbgr00-group.
      move sy-mandt to xbgr00-mandt.
      move sy-uname to xbgr00-usnam.
      move 'X' to xbgr00-xkeep.
    move space to xbgr00-xkeep.
      move '/' to xbgr00-nodata.
    endform.                    " populate_xbgr00
    form populate_xbbkpf  using  p1 p2 p3 p4 p5  p7.
      move '1' to xbbkpf-stype.
      move 'FB05' to xbbkpf-tcode.
      move p2 to xbbkpf-bldat.
      move p4 to xbbkpf-blart.
      move p1 to xbbkpf-bukrs.
      move p3 to xbbkpf-budat.
      move '/' to xbbkpf-monat.
      move p5 to xbbkpf-waers.
      move '/' to xbbkpf-kursf.
      move '/' to xbbkpf-belnr.
      move '/' to xbbkpf-wwert.
    move p6 to xbbkpf-xblnr.
      move '/' to xbbkpf-bvorg.
      move p7 to xbbkpf-bktxt.
      move '/' to xbbkpf-pargb.
      move 'UMBUCHNG' to xbbkpf-auglv.
    endform.
    form populate_xbbseg  .
      move '2' to xbbseg-stype.
      move 'BBSEG' to xbbseg-tbnam.
      move '15'  to xbbseg-newbs.
      move '100'  to xbbseg-wrbtr.
      move 'Assign'  to xbbseg-zuonr.
      move 'Itemtext'  to xbbseg-sgtxt.
      move I_SPLITINPUT-CLEARINGACCT to xbbseg-newko.        "G/L
      append xbbseg to dataset.
    xbselk-stype = '2'.
    xbselk-agkon = 'CUST0010'.
    xbselk-agbuk = i_splitinput-compcode.
    xbselk-agkoa = 'K'.
    xbselk-sende = '/'.
    xbselk-tbnam = 'BSELK'.
    XBSELK-XNOPS = 'X'.
    append xbselk to dataset.
    xbselp-stype = '2'.
    xbselp-feldn_1 = 'BELNR'.
    xbselp-slvon_1 = i_splitinput-reference.
    xbselp-slbis_1 = 'Test'.
    xbselp-tbnam = 'BSELP'.
    append xbselp to dataset.
    endform
    Edited by: abap78 on Mar 23, 2009 5:10 AM

  • Help newbie debugger ?

    Guys is there a FREE and easy to use for newbie debugger ? I am not debugging windowsXP so i dont need super duper. What i am looking for is a program where i can watch it run through the code and i can stop/pause slow down watch value change etc etc basic functions. Can you guys help me out.

    i got this error:
    Note that JAVA_HOME is the path to the JDK, while JSWAT_HOME is the path to the jswat.jar file. The <JAVA_HOME>\lib directory must contain the tools.jar file in order for JSwat to start. This file contains the JPDA classes (com.sun.jdi) used by JSwat. If the file containing these classes is located elsewhere in your system, you must make the appropriate change to the command used to invoke JSwat.
    when trying to run bat file. so i updated code and ran it , like this
    java -Djava.ext.dirs=C:\Program Files\j2sdk_nb\j2sdk1.4.2\lib -jar C:\jswat-2.27\jswat-2.27\jswat.jar
    ran that windo pop up then went away.
    i will try again later

  • Call transaction error handling

    how to maintain the log i.e sucess/failures like below.
    Line No.     Success/ Failure  Document No     Error Details
    1     S     Doc 740000001     
    2     S     Doc 740000002     
    3     F          Co- code does not exist
    4     F          GL Account does not exist
    I'm getting only one last document no: but i need all the documents to be displayed i.e either success/failures.
    below is my code.
    TYPES: BEGIN OF ty_filedata,
           bukrs TYPE bukrs,           "Company code
           blart TYPE blart,           "Document type
           bldat TYPE char10,          "Document Date
           budat TYPE char10,          "Posting date
           xblnr TYPE xblnr,           "Reference
           bktxt TYPE bktxt,           "Document Header text
           waers TYPE waers,           "Currency
           newbs TYPE bschl,           "Posting Key for the next line item
           wrbtr TYPE char10,          "Amount
           zuonr LIKE bsik-zuonr,      "Assignment
           sgtxt TYPE sgtxt,           "Text
           newko TYPE hkont,           "Account for the next line item
           END OF ty_filedata.
    TYPES: BEGIN OF ty_detail_log,
             item_no TYPE i,        " Item line no.
             status(1) TYPE c,      " Status - success/failure
             doc_no TYPE bkpf-belnr," Document No.
             message TYPE string,   " Message
           END OF ty_detail_log.
    *&             DATA declaration of internal tables
         Internal Table declaration for excel data
    DATA:  it_itab TYPE STANDARD TABLE OF alsmex_tabline INITIAL SIZE 0,
        Internal Table declaration for upload data
          it_upload TYPE STANDARD TABLE OF ty_filedata INITIAL SIZE 0,
        Internal Table Declaration for BDCDATA
          it_bdcdata  TYPE STANDARD TABLE OF bdcdata,
        Internal Table Declaration for BDCMSGCOLL
          it_bdcmsgcoll TYPE STANDARD TABLE OF bdcmsgcoll,
        Internal Table Declaration for FILENMAE
          lf_fname TYPE rlgrap-filename.
         t_err_log  TYPE STANDARD TABLE OF ty_err
                           INITIAL SIZE 0,  " table for validation error log
         t_DETAIL_LOG TYPE STANDARD TABLE OF TY_DETAIL_LOG.
         C_MSGNO TYPE BDC_MNR VALUE '312',
    *&             DATA declaration of work area
        Work Area declaration for Excel Data
    DATA: w_itab TYPE alsmex_tabline,
        Work Area declaration for upload data
          w_upload TYPE ty_filedata,
        Work Area declaration for upload data
          w_upload_n TYPE ty_filedata,
        Work Area declaration for upload data
          w_bdcdata TYPE bdcdata,
        Work Area declaration for upload data
          w_bdcmsgcoll TYPE bdcmsgcoll,
          w_detail_log TYPE ty_detail_log.
    *&                     SELECTION-SCREEN
    SELECTION-SCREEN: BEGIN OF BLOCK bk1 WITH FRAME TITLE text-001.
    PARAMETERS:p_file TYPE rlgrap-filename.          " MODIF ID G1.
    SELECTION-SCREEN:  END OF BLOCK bk1.
    *&                             AT SELECTION SCREEN
    AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_file.
      CALL FUNCTION 'KD_GET_FILENAME_ON_F4'
        EXPORTING
          dynpro_number = syst-dynnr
        CHANGING
          file_name     = p_file
        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.
    *&                     START-OF-SELECTION
    START-OF-SELECTION.
      DATA:  lw_itab TYPE alsmex_tabline.
      lf_fname = p_file.
      CALL FUNCTION 'ALSM_EXCEL_TO_INTERNAL_TABLE'
        EXPORTING
          filename                = lf_fname
          i_begin_col             = '1'
          i_begin_row             = '6'
          i_end_col               = '12'
          i_end_row               = '999'
        TABLES
          intern                  = it_itab[]
        EXCEPTIONS
          inconsistent_parameters = 1
          upload_ole              = 2
          OTHERS                  = 3.
      IF sy-subrc <> 0.
    *MESSAGE S205(ZF_COMMON_MSGS_FIN1) DISPLAY LIKE C_E.
    MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
            WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
      ENDIF.
    ELSE.
      IF it_itab IS NOT INITIAL.
        SORT it_itab BY row col.
    DELETE it_itab WHERE row LT 6.
        LOOP AT it_itab INTO lw_itab.
          w_itab = lw_itab.
          AT NEW row.
            CLEAR: w_upload.
          ENDAT.
          CASE w_itab-col.
            WHEN '0001'.
              w_upload-bukrs = w_itab-value.
            WHEN '0002'.
              w_upload-blart = w_itab-value.
            WHEN '0003'.
              w_upload-bldat = w_itab-value.
            WHEN '0004'.
              w_upload-budat = w_itab-value.
            WHEN '0005'.
              w_upload-xblnr = w_itab-value.
            WHEN '0006'.
              w_upload-bktxt = w_itab-value.
            WHEN '0007'.
              w_upload-waers = w_itab-value.
            WHEN '0008'.
              w_upload-newbs = w_itab-value.
            WHEN '0009'.
              w_upload-wrbtr = w_itab-value.
            WHEN '0010'..
              w_upload-zuonr = w_itab-value.
            WHEN '0011'.
              w_upload-sgtxt = w_itab-value.
            WHEN '0012'.
              w_upload-newko = w_itab-value.
          ENDCASE.
          AT END OF row.
            APPEND w_upload TO it_upload.
            CLEAR: w_upload.
          ENDAT.
        ENDLOOP.
    *endif.
      ENDIF.
      DATA: lw_upload TYPE ty_filedata,
            lv_lines TYPE sy-tabix,
            lv_index TYPE sy-tabix.
      DESCRIBE TABLE it_upload LINES lv_lines.
      LOOP AT it_upload INTO lw_upload.
        lv_index = sy-tabix.
        w_upload = lw_upload.
        IF NOT w_upload-bukrs IS INITIAL.
          IF lv_index GT 1.
           CALL TRANSACTION 'FB01' USING it_bdcdata
                   MODE 'N' UPDATE 'S' MESSAGES INTO it_bdcmsgcoll.
           PERFORM fr_format_message_text.
            REFRESH: it_bdcdata.
          ENDIF.
          PERFORM bdc_dynpro      USING 'SAPMF05A' '0100'.
          PERFORM bdc_field       USING 'BDC_CURSOR'
                                        'BKPF-XBLNR'.
          PERFORM bdc_field       USING 'BDC_OKCODE'
                                        '/00'.
          PERFORM bdc_field       USING 'BKPF-BLDAT'
                                        w_upload-bldat.
          PERFORM bdc_field       USING 'BKPF-BLART'
                                        w_upload-blart.
          PERFORM bdc_field       USING 'BKPF-BUKRS'
                                        w_upload-bukrs.
          PERFORM bdc_field       USING 'BKPF-BUDAT'
                                        w_upload-budat.
          PERFORM bdc_field       USING 'BKPF-WAERS'
                                        w_upload-waers.
          PERFORM bdc_field       USING 'BKPF-XBLNR'
                                        w_upload-xblnr.
    *perform bdc_field       using 'FS006-DOCID'
          PERFORM bdc_field       USING 'RF05A-NEWBS'
                                        w_upload-newbs.
          PERFORM bdc_field       USING 'RF05A-NEWKO'
                                        w_upload-newko.
        ENDIF.
        IF lv_index NE lv_lines.
          lv_index = lv_index + 1.
          READ TABLE it_upload INTO w_upload_n INDEX lv_index.
          PERFORM bdc_dynpro      USING 'SAPMF05A' '0300'.
          PERFORM bdc_field       USING 'BDC_CURSOR'
                                        'BSEG-WRBTR'.
          PERFORM bdc_field       USING 'BDC_OKCODE'
                                        '/00'.
          PERFORM bdc_field       USING 'BSEG-WRBTR'
                                        w_upload-wrbtr.
          PERFORM bdc_field       USING 'RF05A-NEWBS'
                                  w_upload_n-newbs.
          PERFORM bdc_field       USING 'RF05A-NEWKO'
                                  w_upload_n-newko.
        ELSE.
          PERFORM bdc_dynpro      USING 'SAPMF05A' '0300'.
          PERFORM bdc_field       USING 'BDC_CURSOR'
                                        'BSEG-WRBTR'.
          PERFORM bdc_field       USING 'BDC_OKCODE'
                                        '=BU'.
          PERFORM bdc_field       USING 'BSEG-WRBTR'
                                       w_upload-wrbtr.
        ENDIF.
        PERFORM bdc_dynpro      USING 'SAPLKACB' '0002'.
        PERFORM bdc_field       USING 'BDC_CURSOR'
                                      'COBL-ANLN1'.
        PERFORM bdc_field       USING 'BDC_OKCODE'
                                      '=ENTE'.
      ENDLOOP.
      CALL TRANSACTION 'FB01' USING it_bdcdata
              MODE 'N' UPDATE 'S' MESSAGES INTO it_bdcmsgcoll.
      PERFORM fr_format_message_text .
      REFRESH: it_bdcdata.
    *&      Form  BDC_DYNPRO
    FORM bdc_dynpro USING program  dynpro.
      CLEAR w_bdcdata.
      w_bdcdata-program  = program.
      w_bdcdata-dynpro   = dynpro.
      w_bdcdata-dynbegin = 'X'.
      APPEND w_bdcdata TO it_bdcdata.
    ENDFORM.                    "BDC_DYNPRO
           Insert field                                                  *
    FORM bdc_field USING fnam fval.
      IF fval <> space.
        CLEAR w_bdcdata.
        w_bdcdata-fnam = fnam.
        w_bdcdata-fval = fval.
        APPEND w_bdcdata TO it_bdcdata.
      ENDIF.
    ENDFORM.                    "BDC_FIELD
    *&      Form  fr_format_message_text
    FORM fr_format_message_text.
      DATA: lf_msg   TYPE string.
      WRITE:/ sy-uline(125).
      FORMAT COLOR 1 INTENSIFIED ON.
      WRITE : /1 sy-vline,
               2  text-041 ,  "'record Number',
               16 sy-vline,
               17 text-042 ,  " 'success/failure',
               35  sy-vline,
               36 text-043,   " 'document no',
               55 sy-vline,
               56 text-044,   "'Error details',
               125 sy-vline.
      WRITE:/ sy-uline(125).
      LOOP AT it_bdcmsgcoll INTO w_bdcmsgcoll.
        CALL FUNCTION 'FORMAT_MESSAGE'
          EXPORTING
            id        = w_bdcmsgcoll-msgid
            lang      = sy-langu
            no        = w_bdcmsgcoll-msgnr
            v1        = w_bdcmsgcoll-msgv1
            v2        = w_bdcmsgcoll-msgv2
            v3        = w_bdcmsgcoll-msgv3
            v4        = w_bdcmsgcoll-msgv4
          IMPORTING
            msg       = lf_msg
          EXCEPTIONS
            not_found = 1
            OTHERS    = 2.
        IF sy-subrc EQ 0.
          WRITE:/01 sy-vline,
                  02 sy-tabix,
                  16 sy-vline,
                  17 w_bdcmsgcoll-msgtyp,
                  35 sy-vline,
                  36 w_bdcmsgcoll-msgv1,
                  55 sy-vline,
                  56 lf_msg,
                  125 sy-vline.
          WRITE:/ sy-uline(125).
        ENDIF.
      ENDLOOP.
    ENDFORM.                    "fr_format_message_text
    Thanks in advance.

    Hi Neelima,
    Just put the following code within that LOOP...ENDLOOP statement.
    LOOP AT it_upload INTO lw_upload.
      CALL TRANSACTION 'FB01' USING it_bdcdata
      MODE 'N' UPDATE 'S' MESSAGES INTO it_bdcmsgcoll.
      PERFORM fr_format_message_text .
      REFRESH: it_bdcdata.
    ENDLOOP.
    Regards,
    R.Nagarajan.
    We can -

  • Adding Data to the database for SAP Transactions

    Hi
    I'm new to the whole ABAP. I would like to enquire about adding transaction data in SAP through ABAP but it must be immediate.
    I know that one can use a BAPI to add data and can rollback if any problems occur.
    But if no BAPI exists how does one write code to add a document to the SAP database but with everything SAP transaction requires like the BAPI. What is the process and how???
    So let say I wanted to do FB01 which is SAP FI document and must be immediate. There is a BAPI that exists for it but if there was not one how would I do this???
    I know one can also use BDC but that creates a batch and then needs to be executed in SM35, I want a way to add data for two or three SAP transactions, if any problems occur with any of the steps rollback everything else commit everything to the database.
    Any simple detail examples (code) that satisfy the above will be greatly appreciated and REWARDED.
    Thanks in advance

    Luis,
    i have a code exactly same BDC for FB01.
    refer:
    REPORT z_etching_fb01
           NO STANDARD PAGE HEADING LINE-SIZE 255.
    *etching invoice load
    INCLUDE bdcrecx1.
    TYPE-POOLS: truxs , slis.
    *PARAMETERS: dataset(132) LOWER CASE DEFAULT
    *                              'c:\temp\etchingload.txt'.
    PARAMETER: pfile LIKE rlgrap-filename." OBLIGATORY.
    SELECTION-SCREEN BEGIN OF BLOCK a WITH FRAME TITLE text-001.
    PARAMETER:    p_kunnr LIKE kna1-kunnr OBLIGATORY,           "kna1-kunnr
                  p_bukrs LIKE bseg-bukrs,
                  p_mwskz LIKE t007a-mwskz OBLIGATORY,"t007a-mwskz
                  p_prctr LIKE cepc-prctr OBLIGATORY,"cepc-prctr
    *            p_newko LIKE ska1-saknr OBLIGATORY DEFAULT 41000000,"
                p_budat LIKE bkpf-budat OBLIGATORY ,
                p_hkont LIKE bseg-hkont OBLIGATORY DEFAULT 41000000 ,
                p_waers TYPE waers OBLIGATORY DEFAULT 'GBP'."tcurr-waers
    SELECTION-SCREEN END OF BLOCK a.
    SELECTION-SCREEN BEGIN OF BLOCK b WITH FRAME TITLE text-002.
    PARAMETER : report AS CHECKBOX DEFAULT 'X'.
    SELECTION-SCREEN END OF BLOCK b.
    ***    DO NOT CHANGE - the generated data section - DO NOT CHANGE    ***
    *   If it is nessesary to change the data section use the rules:
    *   1.) Each definition of a field exists of two lines
    *   2.) The first line shows exactly the comment
    *       '* data element: ' followed with the data element
    *       which describes the field.
    *       If you don't have a data element use the
    *       comment without a data element name
    *   3.) The second line shows the fieldname of the
    *       structure, the fieldname must consist of
    *       a fieldname and optional the character '_' and
    *       three numbers and the field length in brackets
    *   4.) Each field must be type C.
    *** Generated data section with specific formatting - DO NOT CHANGE  ***
    *                          ALV                                           *
    DATA: it_fieldcat     TYPE    slis_t_fieldcat_alv,
          wa_fieldcat     LIKE    LINE OF it_fieldcat,
          it_top_of_page  TYPE    slis_t_listheader,
          ls_layout       TYPE    slis_layout_alv,
          gt_events       TYPE    slis_t_event.
    DATA: it_raw TYPE truxs_t_text_data.
    DATA: BEGIN OF record,
    * data element: BLDAT
            bldat_001(010),   "Invoice Date
    * data element: BLART
            blart_002(002),   " Doc Type DR or DG if credit
    * data element: BUKRS
            bukrs_003(004),   " Company Code
    * data element: BUDAT
            budat_004(010),   "Posting Date
    * data element: MONAT
            monat_005(002),   "period"
    * data element: WAERS
            waers_006(005),   "Currency
    * data element: XBLNR1
            xblnr_007(016),   "Invoice Number
    * data element: BKTXT
            bktxt_008(025),   "PO number
    * data element: SAEOBJART
            docid_009(010),
    * data element: NEWBS
            newbs_010(002),   "posting Key
    * data element: NEWKO
            newko_011(017),   "Customer number or GL account
    * data element: WRBTR
            wrbtr_012(016),   "Amount
    * data element: DZTERM
            zterm_013(004),
    * data element: DZBD1T
            zbd1t_014(003),
    * data element: DZFBDT
            zfbdt_015(010),
    * data element: DZUONR
            zuonr_016(018),   "Invoice Number
    * data element: SGTXT
            sgtxt_017(050),   " PO number
    * data element: NEWBS
            newbs_018(002),
    * data element: NEWKO
            newko_019(017),   "GL Account
    * data element: WRBTR
            wrbtr_020(016),   "Amount
    * data element: MWSKZ
            mwskz_021(002),   "Tax
    * data element: DZUONR
            zuonr_022(018),   "Invoice Number
    * data element: SGTXT
            sgtxt_023(050),   "PO Number
    * data element: PRCTR
            prctr_024(010),   "Profit Center
    * data element: WRBTR
            wrbtr_025(016),   " Amount
    * data element: MWSKZ
            mwskz_026(002),   "Tax
    * data element: DZUONR
            zuonr_027(018),   "Invoice Number
    * data element: SGTXT
            sgtxt_028(050),   "PO Number
    * data element: FMORE
            fmore_029(001),
    * data element: PRCTR
            prctr_030(010),   "Pr Center
    * data element: FWSTE
            fwste_01_031(016),
          END OF record.
    DATA: BEGIN OF it_excel OCCURS 0,
    * data element: XBLNR1
          xblnr_007(016),   "Invoice Number
    * data element: BLDAT
          bldat_001(010),   "Invoice Date
    * data element: WRBTR
          wrbtr_012(016),   "Amount
    * data element: WRBTR
          wrbtr_025(016),   " Tax Amount
    * data element: WRBTR
          wrbtr_020(016),   "Gross Amount
    * data element: BLART
          blart_002(002),   " No of units
    * data element: MONAT
          monat_005(002),   "No of units second test"
    * data element: BKTXT
            bktxt_008(025),   "PO number
    * data element: SGTXT
          sgtxt_017(050),   " PO number
    * data element: BUKRS
          bukrs_003(004),   " Company Code
    * data element: BUDAT
          budat_004(010),   "Posting Date
    *        budat_004 TYPE string,   "Posting Date
    * data element: WAERS
          waers_006(005),   "Currency*
    * data element: NEWKO
          newko_011(017),   "Customer number or GL account
    * data element : kunnr
          kunnr_019(010),   " customer
          mwskz(002),
         prctr(010),
          date(002),
          month(002),
    ** data element: BKTXT
    *      bktxt_008(025),   "PO number
    ** data element: SAEOBJART
    *      docid_009(010),
    ** data element: NEWBS
    *      newbs_010(002),   "posting Key
    ** data element: DZTERM
    *      zterm_013(004),
    ** data element: DZBD1T
    *      zbd1t_014(003),
    ** data element: DZFBDT
    *      zfbdt_015(010),
    ** data element: DZUONR
    *      zuonr_016(018),   "Invoice Number
    ** data element: NEWBS
    *      newbs_018(002),
    ** data element: NEWKO
    *      newko_019(017),   "GL Account
    ** data element: MWSKZ
    *      mwskz_021(002),   "Tax
    ** data element: DZUONR
    *      zuonr_022(018),   "Invoice Number
    ** data element: SGTXT
    *      sgtxt_023(050),   "PO Number
    ** data element: PRCTR
    *      prctr_024(010),   "Profit Center
    ** data element: MWSKZ
    *      mwskz_026(002),   "Tax
    ** data element: DZUONR
    *      zuonr_027(018),   "Invoice Number
    ** data element: SGTXT
    *      sgtxt_028(050),   "PO Number
    ** data element: FMORE
    *      fmore_029(001),
    ** data element: PRCTR
    *      prctr_030(010),   "Pr Center
    ** data element: FWSTE
    *      fwste_01_031(016),
        END OF it_excel.
    DATA : BEGIN OF it_bkpf OCCURS 0,
            belnr LIKE bkpf-belnr,
            budat LIKE bkpf-budat,
            bldat LIKE bkpf-bldat,
            xblnr LIKE bkpf-xblnr,
            bktxt LIKE bkpf-bktxt,
            total LIKE bseg-dmbtr,
            numdocs TYPE p DECIMALS 0,
            END OF it_bkpf,
            BEGIN OF it_bseg OCCURS 0,
              belnr LIKE bseg-belnr,
              dmbtr LIKE bseg-dmbtr,
              mwsts LIKE bseg-mwsts,
              pswsl LIKE bseg-pswsl,
              END OF it_bseg,
              BEGIN OF it_final OCCURS 0,
                belnr LIKE bkpf-belnr,
                budat LIKE bkpf-budat,
                bldat LIKE bkpf-bldat,
                xblnr LIKE bkpf-xblnr,
                bktxt LIKE bkpf-bktxt,
                dmbtr LIKE bseg-dmbtr,
                mwsts LIKE bseg-mwsts,
                pswsl LIKE bseg-pswsl,
                END OF it_final.
    ***** End generated data section ***
    AT SELECTION-SCREEN ON VALUE-REQUEST FOR pfile.
      PERFORM sub_browse_file. "Get file name
    START-OF-SELECTION.
      PERFORM sub_data_load.  " Transfer excel into internal table.
      PERFORM sub_calc_excel.
      IF report = 'X'.
    *    PERFORM data_selection.
    *    PERFORM data_move.
    *********************************GET ALV  DATA
        PERFORM alv_get_data.
    *********************************ALV GRID DATA
        PERFORM alv_grid.
      ENDIF.
    *if report = ''.
    *  PERFORM write.
    *  PERFORM open_dataset USING dataset.
      PERFORM open_group.
    *  DO.
    *    READ DATASET dataset INTO record.
      LOOP AT it_excel.
    *   IF sy-subrc <> 0. EXIT. ENDIF.
        PERFORM bdc_dynpro      USING 'SAPMF05A' '0100'.
        PERFORM bdc_field       USING 'BDC_CURSOR'
                                      'RF05A-NEWKO'.
        PERFORM bdc_field       USING 'BDC_OKCODE'
                                      '/00'.
        PERFORM bdc_field       USING 'BKPF-BLDAT'
                                      it_excel-bldat_001.
        PERFORM bdc_field       USING 'BKPF-BLART'
                                      'DR'." record-blart_002.
        PERFORM bdc_field       USING 'BKPF-BUKRS'
                                      it_excel-bukrs_003.
        PERFORM bdc_field       USING 'BKPF-BUDAT'
                                      it_excel-budat_004.
        PERFORM bdc_field       USING 'BKPF-MONAT'
                                    '3'. "record-monat_005.
        PERFORM bdc_field       USING 'BKPF-WAERS'
                                      it_excel-waers_006.
        PERFORM bdc_field       USING 'BKPF-XBLNR'
                                      it_excel-xblnr_007.
        PERFORM bdc_field       USING 'BKPF-BKTXT'
                                      it_excel-bktxt_008.
        PERFORM bdc_field       USING 'FS006-DOCID'
                                     '*' ."record-docid_009.
        PERFORM bdc_field       USING 'RF05A-NEWBS'
                                    '01'." record-newbs_010.
        PERFORM bdc_field       USING 'RF05A-NEWKO'
                                    it_excel-kunnr_019  .
        PERFORM bdc_dynpro      USING 'SAPMF05A' '0301'.
        PERFORM bdc_field       USING 'BDC_CURSOR'
                                      'RF05A-NEWKO'.
        PERFORM bdc_field       USING 'BDC_OKCODE'
                                      '/00'.
        PERFORM bdc_field       USING 'BSEG-WRBTR'
                                    it_excel-wrbtr_020."  it_excel-wrbtr_012.
        PERFORM bdc_field       USING 'BSEG-ZTERM'
                                      'NT30' ."  record-zterm_013.
        PERFORM bdc_field       USING 'BSEG-ZBD1T'
                                      '30'."record-zbd1t_014.
        PERFORM bdc_field       USING 'BSEG-ZFBDT'
                                      it_excel-bldat_001."record-zfbdt_015.
        PERFORM bdc_field       USING 'BSEG-ZUONR'
                                      it_excel-xblnr_007."record-zuonr_016.
        PERFORM bdc_field       USING 'BSEG-SGTXT'
                                      it_excel-sgtxt_017.
        PERFORM bdc_field       USING 'RF05A-NEWBS'
                                     '50'." record-newbs_018.
        PERFORM bdc_field       USING 'RF05A-NEWKO'
                                   it_excel-newko_011."  record-newko_019."Gl account
        PERFORM bdc_dynpro      USING 'SAPMF05A' '0300'.
        PERFORM bdc_field       USING 'BDC_CURSOR'
                                      'BSEG-SGTXT'.
        PERFORM bdc_field       USING 'BDC_OKCODE'
                                      '/00'.
        PERFORM bdc_field       USING 'BSEG-WRBTR'
                                      it_excel-wrbtr_012."changes from 12 to 20
        PERFORM bdc_field       USING 'BSEG-MWSKZ'
                                     it_excel-mwskz." record-mwskz_021.
        PERFORM bdc_field       USING 'BSEG-ZUONR'
                                    it_excel-xblnr_007."  record-zuonr_022.
        PERFORM bdc_field       USING 'BSEG-SGTXT'
                                     it_excel-sgtxt_017."  record-sgtxt_023.
        PERFORM bdc_dynpro      USING 'SAPLKACB' '0002'.
        PERFORM bdc_field       USING 'BDC_CURSOR'
                                      'COBL-PRCTR'.
        PERFORM bdc_field       USING 'BDC_OKCODE'
                                      '=ENTE'.
        PERFORM bdc_field       USING 'COBL-PRCTR'
                                    it_excel-prctr ." record-prctr_024.
        PERFORM bdc_dynpro      USING 'SAPMF05A' '0300'.
        PERFORM bdc_field       USING 'BDC_CURSOR'
                                      'BSEG-WRBTR'.
        PERFORM bdc_field       USING 'BDC_OKCODE'
                                      '=STER'.
        PERFORM bdc_field       USING 'BSEG-WRBTR'
                                     it_excel-wrbtr_012." it_excel-wrbtr_025.
        PERFORM bdc_field       USING 'BSEG-MWSKZ'
                                      it_excel-mwskz.
        PERFORM bdc_field       USING 'BSEG-ZUONR'
                                     it_excel-xblnr_007." record-zuonr_027.
        PERFORM bdc_field       USING 'BSEG-SGTXT'
                                     it_excel-sgtxt_017." record-sgtxt_028.
        PERFORM bdc_field       USING 'DKACB-FMORE'
                                     'X' ."record-fmore_029.
        PERFORM bdc_dynpro      USING 'SAPLKACB' '0002'.
        PERFORM bdc_field       USING 'BDC_CURSOR'
                                      'COBL-PARGB'.
        PERFORM bdc_field       USING 'BDC_OKCODE'
                                      '=ENTE'.
        PERFORM bdc_field       USING 'COBL-PRCTR'
                                     it_excel-prctr." record-prctr_030.
        PERFORM bdc_dynpro      USING 'SAPLTAX1' '0300'.
        PERFORM bdc_field       USING 'BDC_CURSOR'
                                      'BSET-FWSTE(01)'.
        PERFORM bdc_field       USING 'BDC_OKCODE'
                                      '=GOBU'.
        PERFORM bdc_field       USING 'BSET-FWSTE(01)'
                                    it_excel-wrbtr_025."  record-fwste_01_031.
        PERFORM bdc_transaction USING 'FB01'.
        REFRESH:bdcdata,messtab.
      ENDLOOP.
      REFRESH:bdcdata.
    **    PERFORM bdc_dynpro      USING 'SAPMF05A' '0100'.
    *    PERFORM bdc_field       USING 'BDC_CURSOR'
    *                                  'RF05A-NEWKO'.
    *    PERFORM bdc_field       USING 'BDC_OKCODE'
    *                                  '/00'.
    *    PERFORM bdc_field       USING 'BKPF-BLDAT'
    *                                  record-bldat_001.
    *    PERFORM bdc_field       USING 'BKPF-BLART'
    *                                  record-blart_002.
    *    PERFORM bdc_field       USING 'BKPF-BUKRS'
    *                                  record-bukrs_003.
    *    PERFORM bdc_field       USING 'BKPF-BUDAT'
    *                                  record-budat_004.
    *    PERFORM bdc_field       USING 'BKPF-MONAT'
    *                                  record-monat_005.
    *    PERFORM bdc_field       USING 'BKPF-WAERS'
    *                                  record-waers_006.
    *    PERFORM bdc_field       USING 'BKPF-XBLNR'
    *                                  record-xblnr_007.
    *    PERFORM bdc_field       USING 'BKPF-BKTXT'
    *                                  record-bktxt_008.
    *    PERFORM bdc_field       USING 'FS006-DOCID'
    *                                  record-docid_009.
    *    PERFORM bdc_field       USING 'RF05A-NEWBS'
    *                                  record-newbs_010.
    *    PERFORM bdc_field       USING 'RF05A-NEWKO'
    *                                  record-newko_011.
    *    PERFORM bdc_dynpro      USING 'SAPMF05A' '0301'.
    *    PERFORM bdc_field       USING 'BDC_CURSOR'
    *                                  'RF05A-NEWKO'.
    *    PERFORM bdc_field       USING 'BDC_OKCODE'
    *                                  '/00'.
    *    PERFORM bdc_field       USING 'BSEG-WRBTR'
    *                                  record-wrbtr_012.
    *    PERFORM bdc_field       USING 'BSEG-ZTERM'
    *                                  record-zterm_013.
    *    PERFORM bdc_field       USING 'BSEG-ZBD1T'
    *                                  record-zbd1t_014.
    *    PERFORM bdc_field       USING 'BSEG-ZFBDT'
    *                                  record-zfbdt_015.
    *    PERFORM bdc_field       USING 'BSEG-ZUONR'
    *                                  record-zuonr_016.
    *    PERFORM bdc_field       USING 'BSEG-SGTXT'
    *                                  record-sgtxt_017.
    *    PERFORM bdc_field       USING 'RF05A-NEWBS'
    *                                  record-newbs_018.
    *    PERFORM bdc_field       USING 'RF05A-NEWKO'
    *                                  record-newko_019.
    *    PERFORM bdc_dynpro      USING 'SAPMF05A' '0300'.
    *    PERFORM bdc_field       USING 'BDC_CURSOR'
    *                                  'BSEG-SGTXT'.
    *    PERFORM bdc_field       USING 'BDC_OKCODE'
    *                                  '/00'.
    *    PERFORM bdc_field       USING 'BSEG-WRBTR'
    *                                  record-wrbtr_020.
    *    PERFORM bdc_field       USING 'BSEG-MWSKZ'
    *                                  record-mwskz_021.
    *    PERFORM bdc_field       USING 'BSEG-ZUONR'
    *                                  record-zuonr_022.
    *    PERFORM bdc_field       USING 'BSEG-SGTXT'
    *                                  record-sgtxt_023.
    *    PERFORM bdc_dynpro      USING 'SAPLKACB' '0002'.
    *    PERFORM bdc_field       USING 'BDC_CURSOR'
    *                                  'COBL-PRCTR'.
    *    PERFORM bdc_field       USING 'BDC_OKCODE'
    *                                  '=ENTE'.
    *    PERFORM bdc_field       USING 'COBL-PRCTR'
    *                                  record-prctr_024.
    *    PERFORM bdc_dynpro      USING 'SAPMF05A' '0300'.
    *    PERFORM bdc_field       USING 'BDC_CURSOR'
    *                                  'BSEG-WRBTR'.
    *    PERFORM bdc_field       USING 'BDC_OKCODE'
    *                                  '=STER'.
    *    PERFORM bdc_field       USING 'BSEG-WRBTR'
    *                                  record-wrbtr_025.
    *    PERFORM bdc_field       USING 'BSEG-MWSKZ'
    *                                  record-mwskz_026.
    *    PERFORM bdc_field       USING 'BSEG-ZUONR'
    *                                  record-zuonr_027.
    *    PERFORM bdc_field       USING 'BSEG-SGTXT'
    *                                  record-sgtxt_028.
    *    PERFORM bdc_field       USING 'DKACB-FMORE'
    *                                  record-fmore_029.
    *    PERFORM bdc_dynpro      USING 'SAPLKACB' '0002'.
    *    PERFORM bdc_field       USING 'BDC_CURSOR'
    *                                  'COBL-PARGB'.
    *    PERFORM bdc_field       USING 'BDC_OKCODE'
    *                                  '=ENTE'.
    *    PERFORM bdc_field       USING 'COBL-PRCTR'
    *                                  record-prctr_030.
    *    PERFORM bdc_dynpro      USING 'SAPLTAX1' '0300'.
    *    PERFORM bdc_field       USING 'BDC_CURSOR'
    *                                  'BSET-FWSTE(01)'.
    *    PERFORM bdc_field       USING 'BDC_OKCODE'
    *                                  '=GOBU'.
    *    PERFORM bdc_field       USING 'BSET-FWSTE(01)'
    *                                  record-fwste_01_031.
    *    PERFORM bdc_transaction USING 'FB01'.
    *  ENDDO.
      PERFORM close_group.
    *  PERFORM close_dataset USING dataset.
    *endif.
    *&      Form  sub_browse_file
    *       text
    *  -->  p1        text
    *  <--  p2        text
    FORM sub_browse_file .
      CALL FUNCTION 'F4_FILENAME'
       EXPORTING
         program_name        = syst-cprog
         dynpro_number       = syst-dynnr
    *   FIELD_NAME          = ' '
       IMPORTING
         file_name           = pfile.
    ENDFORM.                    " sub_browse_file
    *&      Form  sub_data_load
    *       text
    *  -->  p1        text
    *  <--  p2        text
    FORM sub_data_load .
      CALL FUNCTION 'TEXT_CONVERT_XLS_TO_SAP'
        EXPORTING
    *     I_FIELD_SEPERATOR          =
          i_line_header              = 'X'
          i_tab_raw_data             = it_raw
          i_filename                 = pfile
        TABLES
          i_tab_converted_data       = it_excel[]
    *   EXCEPTIONS
    *     CONVERSION_FAILED          = 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_data_load
    **&      Form  data_selection
    **       text
    **  -->  p1        text
    **  <--  p2        text
    *FORM data_selection .
    *  SELECT * FROM bkpf
    *      INTO CORRESPONDING FIELDS OF TABLE it_bkpf
    *      WHERE budat = p_budat AND
    *      bukrs = p_bukrs.
    *  IF NOT it_bkpf[] IS INITIAL.
    *    SELECT belnr dmbtr mwsts pswsl
    *        FROM bseg INTO TABLE it_bseg
    *        FOR ALL ENTRIES IN it_bkpf
    *        WHERE belnr = it_bkpf-belnr AND
    *        kunnr = p_kunnr AND
    *        hkont = p_hkont AND
    *        pswsl = p_waers.
    *  ENDIF.
    *ENDFORM.                    " data_selection
    **&      Form  data_move
    **       text
    **  -->  p1        text
    **  <--  p2        text
    *FORM data_move.
    *  SORT : it_bseg BY belnr,
    *          it_bkpf BY belnr.
    *  LOOP AT it_bseg.
    *    it_final-dmbtr = it_bseg-dmbtr.
    *    it_final-belnr = it_bseg-belnr.
    *    it_final-mwsts = it_bseg-mwsts.
    *    it_final-pswsl = it_bseg-pswsl.
    *    READ TABLE it_bkpf WITH KEY belnr = it_bseg-belnr BINARY SEARCH.
    *    IF sy-subrc = 0.
    *      it_final-budat = it_bkpf-budat.
    *      it_final-bldat = it_bkpf-bldat.
    *      it_final-xblnr = it_bkpf-xblnr.
    *      it_final-bktxt = it_bkpf-bktxt.
    *    ENDIF.
    *    APPEND it_final.
    *    CLEAR it_final.
    *  ENDLOOP.
    *ENDFORM.                    " data_move
    *&      Form  alv_get_data
    *       text
    *  -->  p1        text
    *  <--  p2        text
    FORM alv_get_data .
      CLEAR it_fieldcat.
    ***************** Document number
    *  wa_fieldcat-col_pos    = '1'.                    " ALV O/P COL-1
      wa_fieldcat-fieldname  = 'XBLNR_007'.
      wa_fieldcat-seltext_m  = 'Document number'.
      wa_fieldcat-just       = 'L'.
      wa_fieldcat-no_zero(1) = 'X'.
      wa_fieldcat-outputlen  = 15.
      wa_fieldcat-tabname    = 'IT_EXCEL'.
      APPEND wa_fieldcat TO it_fieldcat.
      CLEAR wa_fieldcat.
    ***************** Posting Date
    *  wa_fieldcat-col_pos    = '2'.                    " ALV O/P COL-1
      wa_fieldcat-fieldname  = 'BUDAT_004'.
      wa_fieldcat-seltext_m  = 'Posting Date'.
      wa_fieldcat-just       = 'L'.
      wa_fieldcat-no_zero(1) = 'X'.
      wa_fieldcat-outputlen  = 20.
      wa_fieldcat-tabname    = 'IT_EXCEL'.
      APPEND wa_fieldcat TO it_fieldcat.
      CLEAR wa_fieldcat.
    ******************** Document Date
    *  wa_fieldcat-col_pos    = '3'.                     " ALV O/P COL-2
      wa_fieldcat-fieldname  = 'BLDAT_001'.
      wa_fieldcat-seltext_m  = 'Document Date'.
      wa_fieldcat-just       = 'L'.
      wa_fieldcat-tabname    = 'IT_EXCEL'.
      wa_fieldcat-outputlen  = 15.
      APPEND wa_fieldcat TO it_fieldcat.
      CLEAR wa_fieldcat.
    ********************* REFERENCE DOCUMENT
    **  wa_fieldcat-col_pos    = '4'.                     " ALV O/P COL-2
    *  wa_fieldcat-fieldname  = 'XBLNR'.
    *  wa_fieldcat-seltext_m  = 'REFERENCE DOCUMENT'.
    *  wa_fieldcat-just       = 'L'.
    *  wa_fieldcat-tabname    = 'IT_EXCEL'.
    **  wa_fieldcat-outputlen  = 15.
    *  APPEND wa_fieldcat TO it_fieldcat.
    *  CLEAR wa_fieldcat.
    ***************** DOCUMENT HEADER TEXT
    *  wa_fieldcat-col_pos    = '5'.                     " ALV O/P COL-3
      wa_fieldcat-fieldname  = 'SGTXT_017'.
      wa_fieldcat-seltext_m  = 'DOCUMENT HEADER TEXT'.
      wa_fieldcat-just       = 'L'.
      wa_fieldcat-tabname    = 'IT_EXCEL'.
    *  wa_fieldcat-outputlen  = 15.
      APPEND wa_fieldcat TO it_fieldcat.
      CLEAR wa_fieldcat.
    *******************Invoice Net amount
    *  wa_fieldcat-col_pos    = '6'.                     " ALV O/P COL-4
      wa_fieldcat-fieldname  = 'WRBTR_012'.
      wa_fieldcat-seltext_m  = 'Invoice Net amount'.
      wa_fieldcat-just       = 'L'.
      wa_fieldcat-tabname    = 'IT_EXCEL'.
    *  wa_fieldcat-outputlen  = 15.
      APPEND wa_fieldcat TO it_fieldcat.
      CLEAR wa_fieldcat.
    *********** Tax Amount
    *  wa_fieldcat-col_pos    = '7'.                     " ALV O/P COL-5
      wa_fieldcat-fieldname  = 'WRBTR_025'.
      wa_fieldcat-seltext_m  = 'Tax Amount'.
      wa_fieldcat-just       = 'L'.
    * wa_fieldcat-no_zero(1) = 'X'.
      wa_fieldcat-tabname    = 'IT_EXCEL'.
      APPEND wa_fieldcat TO it_fieldcat.
      CLEAR wa_fieldcat.
    *********** NEt Amount
    *  wa_fieldcat-col_pos    = '7'.                     " ALV O/P COL-5
      wa_fieldcat-fieldname  = 'WRBTR_020'.
      wa_fieldcat-seltext_m  = 'Net Amount'.
      wa_fieldcat-just       = 'L'.
    * wa_fieldcat-no_zero(1) = 'X'.
      wa_fieldcat-tabname    = 'IT_EXCEL'.
      APPEND wa_fieldcat TO it_fieldcat.
      CLEAR wa_fieldcat.
    *********** General ledger currency
    *  wa_fieldcat-col_pos    = '7'.                     " ALV O/P COL-5
      wa_fieldcat-fieldname  = 'WAERS_006'.
      wa_fieldcat-seltext_l  = 'General ledger currency'.
      wa_fieldcat-just       = 'L'.
    * wa_fieldcat-no_zero(1) = 'X'.
      wa_fieldcat-outputlen  = 25.
      wa_fieldcat-tabname    = 'IT_EXCEL'.
      APPEND wa_fieldcat TO it_fieldcat.
      CLEAR wa_fieldcat.
    ENDFORM.                    " alv_get_data
    *&      Form  alv_grid
    *       text
    *  -->  p1        text
    *  <--  p2        text
    FORM alv_grid .
    *  PERFORM fill_list_header USING it_top_of_page[].
    *  PERFORM event-build USING gt_events[].
      PERFORM fill_layout USING ls_layout.
    MESSAGE 'Please press F3 to generate a session or call transaction method after getting report!' TYPE 'I'.
      CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
        EXPORTING
          i_callback_program = sy-repid
          is_layout          = ls_layout
          it_fieldcat        = it_fieldcat
          it_events          = gt_events[]
          i_save             = 'A'
        TABLES
          t_outtab           = it_excel
        EXCEPTIONS
          program_error      = 1
          OTHERS             = 2.
      IF sy-subrc <> 0.
        MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
                WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
      ENDIF.
    ENDFORM.                    " alv_grid
    *                                     FORM FILL_LAYOUT                      *
    FORM fill_layout  USING    p_ls_layout  TYPE slis_layout_alv.
      p_ls_layout-zebra       = 'X'.
      p_ls_layout-cell_merge  = 'X'.
    ENDFORM.                                                         "fill_layout
    *&      Form  sub_calc_excel
    *       text
    *  -->  p1        text
    *  <--  p2        text
    FORM sub_calc_excel .
          data: idate TYPE sy-datum,
              tdat8 type string.
      LOOP AT it_excel.
        CONCATENATE  it_excel-blart_002 '/' it_excel-monat_005 '/' it_excel-bktxt_008 INTO
            it_excel-sgtxt_017.
        it_excel-bukrs_003 = p_bukrs.
    *    it_excel-budat_004 = p_budat.
        it_excel-waers_006 = p_waers.
        it_excel-newko_011 = p_hkont.
        it_excel-kunnr_019 = p_kunnr.
        it_excel-mwskz     = p_mwskz.
        it_excel-prctr     = p_prctr.
        idate              = p_budat.
        CALL FUNCTION 'DATUMSAUFBEREITUNG'
         EXPORTING
    *       FLAGM                 = ' '
    *       FLAGW                 = ' '
           IDATE                 = idate
    *       IMONT                 = ' '
    *       IWEEK                 = ' '
         IMPORTING
    *       MDAT4                 =
    *       MDAT6                 =
    *       TDAT4                 =
    *       TDAT6                 =
            TDAT8                 = tdat8
    *       WDAT4                 =
    *       WDAT6                 =
    *     EXCEPTIONS
    *       DATFM_UNGUELTIG       = 1
    *       DATUM_UNGUELTIG       = 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.
          it_excel-budat_004 = tdat8.
    *    CONCATENATE it_excel-budat_004+4(2) '/' it_excel-budat_004+6(2) '/'  it_excel-budat_004+0(4)
    *                INTO it_excel-budat_004.
    *    SPLIT it_excel-bldat_001 AT '/' INTO it_excel-month it_excel-date.
    *    CONCATENATE it_excel-date '.' it_excel-month '.' it_excel-bldat_001+6(4) INTO it_excel-bldat_001.
        MODIFY it_excel.
        CLEAR it_excel.
      ENDLOOP.
    ENDFORM.                    " sub_calc_excel
    *&      Form  write
    *       text
    *  -->  p1        text
    *  <--  p2        text
    *form write .
    *OPEN DATASET dataset FOR OUTPUT IN TEXT MODE ENCODING DEFAULT.
    *data: wa_excel like line of it_excel.
    *loop at it_excel into wa_excel.
    *TRANSFER wa_excel to dataset.
    *endloop.
    *CLOSE DATASETdataset.
    *endform.                    " write

  • Bdc transaction problem

    hi,
    i am create a programm for f-27 type DG by bdc session method
    when i execute it on 3rd screen of execution it ask for the values for PAYMENT TERMS but in manual entry OF F-27 it does not TAKE ANY PAYMENT TERMS. plz check my code and tell me where is the problem in coding.
    CODES:
    REPORT zcrdtdgupld
           NO STANDARD PAGE HEADING LINE-SIZE 255.
    *INCLUDE zdata_declarations.
              I N T E R N A L  T A B L E                           *
    DATA: BEGIN OF wa_data,
           bldat     TYPE  BDC_FVAL, "Document Date10
           blart     TYPE  BDC_FVAL, "Document Type
           bukrs     TYPE  BDC_FVAL, "Company Code
           budat     TYPE  BDC_FVAL, "Posting Date10
           monat     TYPE  BDC_FVAL, "Period
           waers     TYPE  BDC_FVAL, "Currency
           xblnr     TYPE  BDC_FVAL, "Reference Field
           docid     TYPE  BDC_FVAL, "Document ID
           newbs     TYPE  BDC_FVAL, "Posting  Key
           newko     TYPE  BDC_FVAL, "Account Code
           wrbtr     TYPE  BDC_FVAL, "Amount in Documentcurrency
           zfbdt     TYPE  BDC_FVAL, "Baseline Date10
           newbs2    TYPE  BDC_FVAL, "Account Key2
           newko2    TYPE  BDC_FVAL, "Account code2
           wrbtr2    TYPE  BDC_FVAL, "bseg-wrbtr,"Amount2
           kostl     TYPE  BDC_FVAL, " cost center
           prctr     TYPE  BDC_FVAL, " profit center
           END OF wa_data.
                          D A T A                                     *
    DATA: it_data    LIKE TABLE OF wa_data.
    DATA: it_bdcdata TYPE TABLE OF bdcdata.
    DATA: wa_bdcdata LIKE LINE OF it_bdcdata.
    DATA: v_file     TYPE string.
                 S E L E C T I O N  S C R E E N                       *
    SELECTION-SCREEN BEGIN OF BLOCK b.
    PARAMETERS : pa_file LIKE fc03tab-pl00_file OBLIGATORY.
    SELECTION-SCREEN END OF BLOCK b.
                    AT SELECTION-SCREEN                               *
    AT SELECTION-SCREEN ON VALUE-REQUEST FOR pa_file.
      PERFORM get_file USING pa_file.
               S T A R T  O F  S E L E C T I O N                      *
    START-OF-SELECTION.
      v_file = pa_file.
    *uploading flat file into internal table
      PERFORM upload_file USING v_file CHANGING it_data.
    *open the session
      PERFORM open_session.
    *POPULATING THE BDCDATA
      LOOP AT it_data INTO wa_data.
        REFRESH it_bdcdata.
        PERFORM bdc_dynpro      USING 'SAPMF05A' '0100' 'X'.
        PERFORM bdc_field       USING 'BDC_CURSOR' 'RF05A-NEWKO'.
        PERFORM bdc_field       USING 'BDC_OKCODE' '/00'.
        PERFORM bdc_field       USING 'BKPF-BLDAT'  wa_data-bldat.
        PERFORM bdc_field       USING 'BKPF-BLART'  wa_data-blart.
        PERFORM bdc_field       USING 'BKPF-BUKRS'  wa_data-bukrs.
        PERFORM bdc_field       USING 'BKPF-BUDAT'  wa_data-budat.
        PERFORM bdc_field       USING 'BKPF-MONAT'  wa_data-monat.
        PERFORM bdc_field       USING 'BKPF-WAERS'  wa_data-waers.
        PERFORM bdc_field       USING 'BKPF-XBLNR'  wa_data-xblnr.
        PERFORM bdc_field       USING 'FS006-DOCID' wa_data-docid.
        PERFORM bdc_field       USING 'RF05A-NEWBS' wa_data-newbs.
        PERFORM bdc_field       USING 'RF05A-NEWKO' wa_data-newko.
        PERFORM bdc_dynpro      USING 'SAPMF05A' '0301' 'X'.
        PERFORM bdc_field       USING 'BDC_CURSOR' 'BSEG-WRBTR'.
        PERFORM bdc_field       USING 'BDC_OKCODE' '/00'.
        PERFORM bdc_field       USING 'BSEG-WRBTR'  wa_data-wrbtr.
        PERFORM bdc_field       USING 'BSEG-ZFBDT'  wa_data-zfbdt.
        PERFORM bdc_field       USING 'RF05A-NEWBS' wa_data-newbs2.
        PERFORM bdc_field       USING 'RF05A-NEWKO' wa_data-newko2.
        PERFORM bdc_dynpro      USING 'SAPMF05A' '0300' 'X'.
        PERFORM bdc_field       USING 'BDC_CURSOR' 'BSEG-WRBTR'.
        PERFORM bdc_field       USING 'BDC_OKCODE' '=BU'.
        PERFORM bdc_field       USING 'BSEG-WRBTR' wa_data-wrbtr2.
        PERFORM bdc_dynpro      USING 'SAPLKACB' '0002' 'X'.
        PERFORM bdc_field       USING 'BDC_CURSOR' 'COBL-PRCTR'.
        PERFORM bdc_field       USING 'BDC_OKCODE' '=ENTE'.
       PERFORM bdc_field       USING 'COBL-KOSTL' wa_data-kostl. "'101902'
        PERFORM bdc_field       USING 'COBL-PRCTR' wa_data-prctr.
        PERFORM bdc_insert USING 'F-27' it_bdcdata.
      ENDLOOP.
    *close the session
      PERFORM close_session.
    *&      Form  get_file
          text
         -->P_PA_FILE  text
    FORM get_file  USING    p_pa_file.
      CALL FUNCTION 'KD_GET_FILENAME_ON_F4'
        EXPORTING
          program_name = syst-repid
          field_name   = 'PA_FILE'
        CHANGING
          file_name    = pa_file.
      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.                    " get_file
    *&      Form  upload_file
          text
         -->P_V_FILE  text
         <--P_IT_DATA  text
    FORM upload_file  USING    p_v_file
                      CHANGING p_it_data LIKE it_data.
      CALL FUNCTION 'GUI_UPLOAD'
        EXPORTING
          filename                      = p_v_file
       filetype                      = 'DAT'
        has_field_separator           = '#'
        TABLES
          data_tab                      = p_it_data.
      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.                    " upload_file
    *&      Form  open_session
          text
    -->  p1        text
    <--  p2        text
    FORM open_session .
      CALL FUNCTION 'BDC_OPEN_GROUP'
       EXPORTING
         client                    = sy-mandt
      DEST                      = FILLER8
         group                     = 'JAYANT'
      HOLDDATE                  = FILLER8
         keep                      = 'X'
         user                      = sy-uname.
      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.                    " open_session
    *&      Form  bdc_dynpro
          text
         -->P_0043   text
         -->P_0044   text
    FORM bdc_dynpro  USING  program TYPE BDC_PROG
                            dynpro  TYPE BDC_DYNR
                            dynbegin TYPE BDC_START.
      wa_bdcdata-program  = program.
      wa_bdcdata-dynpro   = dynpro.
      wa_bdcdata-dynbegin = dynbegin.
      APPEND wa_bdcdata TO it_bdcdata.
      CLEAR wa_bdcdata.
    ENDFORM.                    " bdc_dynpro
    *&      Form  bdc_field
          text
         -->P_0048   text
         -->P_0049   text
    FORM bdc_field  USING  fnam TYPE FNAM_____4
                           fval TYPE BDC_FVAL.
      wa_bdcdata-fnam = fnam.
      wa_bdcdata-fval = fval.
      APPEND wa_bdcdata TO it_bdcdata.
      CLEAR wa_bdcdata.
    ENDFORM.                    " bdc_field
    *&      Form  bdc_insert
          text
         -->P_0183   text
         -->P_IT_BDCDATA  text
    FORM bdc_insert  USING    p_tcode TYPE sytcode
                              p_it_bdcdata LIKE it_bdcdata.
      CALL FUNCTION 'BDC_INSERT'
        EXPORTING
          tcode     = p_tcode
        TABLES
          dynprotab = p_it_bdcdata.
    ENDFORM.                    " bdc_insert
    *&      Form  close_session
          text
    -->  p1        text
    <--  p2        text
    FORM close_session .
      CALL FUNCTION 'BDC_CLOSE_GROUP'.
    ENDFORM.                    "close_session
    plz help me in this programm
    thanks
    jayant.

    why not post this in the ABAP forum?
    You expect Basis people to help you on this one?

  • Urgent plz BDC

    hi gurus,
    i have a problem in bdc programm there is 3 screen using transaction f-27
    there is two amount field as(wrbtr,wrbtr2)
    two screen are run fine but the 3 screen does't take data automatically from flat file plz help me its urgent see my codes and give me solution.
    TYPES: BEGIN OF it_output,
           bldat(10)  TYPE  C,           "Document Date
           blart      TYPE  bkpf-blart,  "Document Type
           bukrs      TYPE  bkpf-bukrs,  "Company Code
           budat(10)  TYPE  C,           "Posting Date
           monat      TYPE  bkpf-monat,  "Period
           waers      TYPE  bkpf-waers,  "Currency
           xblnr      TYPE  bkpf-xblnr,  "Reference Field
           docid      TYPE  fs006-docid, "Document ID
           newbs      TYPE  rf05a-newbs, "Posting  Key
           newko      TYPE  rf05a-newko, "Account Code
           wrbtr(16)  TYPE  C,           "Amount in Document currency
           zfbdt(10)  TYPE  C,           "Baseline Date
           newbs2     TYPE  rf05a-newbs, "Account Key2
           newko2     TYPE  rf05a-newko, "Account code2
           wrbtr2(16) TYPE  C,           "Amount2
           END OF it_output.
    DATA lt_output  TYPE  it_output OCCURS 0 WITH HEADER LINE.
    DATA it_bdc     LIKE  bdcdata OCCURS 0 WITH HEADER LINE.
    DATA it_messtab LIKE  bdcmsgcoll OCCURS 1 WITH HEADER LINE.
                               D A T A                                   *
    DATA: message TYPE string.
    DATA: p_file1 type string.
             S E L E C T - O P T I O N S / P A R A M E T E R S           *
    SELECTION-SCREEN BEGIN OF BLOCK block0 WITH FRAME.
    PARAMETERS : p_file  LIKE rlgrap-filename OBLIGATORY.
    SELECTION-SCREEN END OF BLOCK block0.
             A T  S E L E C T I O N - S C R E E N                        *
    AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_file.
      CALL FUNCTION 'KD_GET_FILENAME_ON_F4'
        EXPORTING
          static    = 'X'
          mask      = space
        CHANGING
          file_name = p_file.
                   S T A R T - O F - S E L E C T I O N
    START-OF-SELECTION.
      PERFORM  upload.
      PERFORM  bdc.
      PERFORM  write_message.
    *&      Form  bdc
          text
    FORM bdc.
      LOOP AT lt_output.
        READ TABLE lt_output INDEX 1.
        PERFORM bdc_dynpro      USING 'SAPMF05A' '0100'.
        PERFORM bdc_field       USING 'BDC_CURSOR' 'RF05A-NEWKO'.
        PERFORM bdc_field       USING 'BDC_OKCODE' '/00'.
        PERFORM bdc_field       USING 'BKPF-BLDAT'  lt_output-bldat.
        PERFORM bdc_field       USING 'BKPF-BLART'  lt_output-blart.
        PERFORM bdc_field       USING 'BKPF-BUKRS'  lt_output-bukrs.
        PERFORM bdc_field       USING 'BKPF-BUDAT'  lt_output-budat.
        PERFORM bdc_field       USING 'BKPF-MONAT'  lt_output-monat.
        PERFORM bdc_field       USING 'BKPF-WAERS'  lt_output-waers.
        PERFORM bdc_field       USING 'BKPF-XBLNR'  lt_output-xblnr.
        PERFORM bdc_field       USING 'FS006-DOCID' lt_output-docid.
        PERFORM bdc_field       USING 'RF05A-NEWBS' lt_output-newbs.
        PERFORM bdc_field       USING 'RF05A-NEWKO' lt_output-newko.
        PERFORM bdc_dynpro      USING 'SAPMF05A' '0302'.
        PERFORM bdc_field       USING 'BDC_CURSOR' 'RF05A-NEWKO'.
        PERFORM bdc_field       USING 'BDC_OKCODE' '/00'.
        PERFORM bdc_field       USING 'BSEG-WRBTR'  lt_output-wrbtr.
        PERFORM bdc_field       USING 'BSEG-ZFBDT'  lt_output-zfbdt.
        PERFORM bdc_field       USING 'RF05A-NEWBS' lt_output-newbs2."newbs2
        PERFORM bdc_field       USING 'RF05A-NEWKO' lt_output-newko2."newko2
        PERFORM bdc_dynpro      USING 'SAPMF05A' '0301'.
        PERFORM bdc_field       USING 'BDC_CURSOR' 'BSEG-WRBTR'.
        PERFORM bdc_field       USING 'BDC_OKCODE' '=BU'.
        PERFORM bdc_field       USING 'BSEG-WRBTR'  lt_output-wrbtr2."wrbtr2
       PERFORM bdc_field       USING 'BSEG-MWSKZ' '**'.
       PERFORM bdc_field       USING 'BSEG-ZTERM' 'C007'.
       PERFORM bdc_field       USING 'BSEG-ZBD1T' '7'.
        CALL TRANSACTION 'F-27' USING it_bdc mode 'A'
                               MESSAGES INTO it_messtab.
        CLEAR it_bdc. REFRESH it_bdc.
      ENDLOOP.
    ENDFORM.                    "bdc
    *&      Form  write_message
          text
    FORM write_message.
      LOOP AT it_messtab .
        CLEAR message.
        CALL FUNCTION 'FORMAT_MESSAGE'
          EXPORTING
            id   = sy-msgid
            lang = 'EN'
            no   = sy-msgno
            v1   = sy-msgv1
            v2   = sy-msgv2
            v3   = sy-msgv3
            v4   = sy-msgv4
          IMPORTING
            msg  = message.
        CASE it_messtab-msgtyp.
          WHEN 'S'.
            WRITE:/ message.
            CLEAR message.
          WHEN 'E'.
            FORMAT COLOR 6 ON.
            WRITE:/ message.
            CLEAR message.
        ENDCASE.
      ENDLOOP.
    ENDFORM.                    "write_message
          FORM BDC_DYNPRO                                               *
    -->  PROGRAM                                                       *
    -->  DYNPRO                                                        *
    FORM bdc_dynpro USING program dynpro.
      it_bdc-program  = program.
      it_bdc-dynpro   = dynpro.
      it_bdc-dynbegin = 'X'.
      APPEND it_bdc.
      CLEAR it_bdc.
    ENDFORM.                    "BDC_DYNPRO
          FORM                                                          *
    FORM bdc_field USING fnam fval.
      it_bdc-fnam = fnam.
      it_bdc-fval = fval.
      APPEND it_bdc.
      CLEAR it_bdc.
    ENDFORM.                    "BDC_FIELD
    *&      Form  upload
          text
    -->  p1        text
    <--  p2        text
    FORM upload .
    p_file1 = p_file.
    CALL FUNCTION 'GUI_UPLOAD'
      EXPORTING
        filename                      = p_file1
       FILETYPE                      = 'DAT'
      tables
        data_tab                      = lt_output
    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.                    " upload
    i am also send u my flat file the client says that in amount filed of 3rd screen we will give the * asterick or other amount plz take it.
    thank
    plz help me.
    jay
    Edited by: jayant kumar on Apr 30, 2008 12:42 PM

    hi jayant,
    Declare '**'  as a character constant and pass this constant to the Subroutine.
    data : c_astrick type char2 value '**'.
    PERFORM bdc_field USING 'BSEG-MWSKZ c_astrick.
    Reward points if it is helpful.
    Regards,
    srilatha.

  • BDC For T-Code F-02

    Dear Friends,
    Do anybody has the code for BDC for Transaction Code F-02.
    If anybody has plz send me.
    Thanks & Reg,
    Nishant

    try this:
    REPORT zfir_f02
           NO STANDARD PAGE HEADING LINE-SIZE 255.
    INCLUDE bdcrecx1.
    TYPES : BEGIN OF tp_flatfile,
            bldat(10),
            doctyp(2),
            comp(4),
            postdate(10),
            period(2),
            currency(5),
            reference(16),
            htext(25),
            postkey(2),
            account(17),
            amount(16),
            profit(10),
            assign(18),
            text(50),
            busarea(4),
            cost(10),
            bline(10),
            base(16),
            postkey2(2),
            account2(17),
            amount2(16),
            profit2(10),
            assign2(18),
            text2(50),
            busarea2(4),
            END OF tp_flatfile.
    DATA : t_flatfile TYPE TABLE OF tp_flatfile WITH HEADER LINE.
    DATA : g_file TYPE string.
    CLASS cl_abap_char_utilities DEFINITION LOAD.
    CONSTANTS:con_tab  TYPE c VALUE cl_abap_char_utilities=>horizontal_tab.
    SELECTION-SCREEN BEGIN OF BLOCK blk1 WITH FRAME.
    PARAMETERS :  p_file LIKE rlgrap-filename OBLIGATORY.
    SELECTION-SCREEN END OF BLOCK blk1.
    *C-- Selection Screen VALUE-REQUEST FOR File path
    AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_file.
      CALL FUNCTION 'F4_FILENAME'
        EXPORTING
          program_name  = syst-cprog
          dynpro_number = syst-dynnr
        IMPORTING
          file_name     = p_file.
      g_file = p_file.
    *START-OF-SELECTION.
      CALL FUNCTION 'GUI_UPLOAD'
        EXPORTING
          filename                = g_file
          filetype                = 'ASC'
          has_field_separator     = 'X'
        TABLES
          data_tab                = t_flatfile
        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.
         loop at t_flatfile.
         write:/ t_flatfile-doctyp,t_flatfile-amount.
         endloop.
    START-OF-SELECTION.
      PERFORM open_group.
      LOOP AT t_flatfile.
        PERFORM bdc_dynpro      USING 'SAPMF05A' '0100'.
        PERFORM bdc_field       USING 'BDC_CURSOR'
                                      'RF05A-NEWKO'.
        PERFORM bdc_field       USING 'BDC_OKCODE'
                                      '/00'.
        PERFORM bdc_field       USING 'BKPF-BLDAT'
                                      t_flatfile-bldat.
        PERFORM bdc_field       USING 'BKPF-BLART'
                                      t_flatfile-doctyp.
        PERFORM bdc_field       USING 'BKPF-BUKRS'
                                      t_flatfile-comp.
        PERFORM bdc_field       USING 'BKPF-BUDAT'
                                      t_flatfile-postdate.
        PERFORM bdc_field       USING 'BKPF-MONAT'
                                      t_flatfile-period.
        PERFORM bdc_field       USING 'BKPF-WAERS'
                                      t_flatfile-currency.
        PERFORM bdc_field       USING 'BKPF-XBLNR'
                                      t_flatfile-reference.
        PERFORM bdc_field       USING 'BKPF-BKTXT'
                                      t_flatfile-htext.
        PERFORM bdc_field       USING 'FS006-DOCID'
        PERFORM bdc_field       USING 'RF05A-NEWBS'
                                      t_flatfile-postkey.
        PERFORM bdc_field       USING 'RF05A-NEWKO'
                                      t_flatfile-account.
        CASE t_flatfile-postkey.
          WHEN '40' OR '50'.
            PERFORM bdc_dynpro      USING 'SAPMF05A' '0300'.
            PERFORM bdc_field       USING 'BDC_CURSOR'
                                          'BSEG-SGTXT'.
            PERFORM bdc_field       USING 'BDC_OKCODE'
                                          '/00'.
            PERFORM bdc_field       USING 'BSEG-WRBTR'
                                          t_flatfile-amount.
            PERFORM bdc_field       USING 'BSEG-ZUONR'
                                          t_flatfile-assign.
            PERFORM bdc_field       USING 'BSEG-SGTXT'
                                          t_flatfile-text.
        IF t_flatfile-postkey = '40' and t_flatfile-account > '300000'.
                PERFORM bdc_field       USING 'DKACB-FMORE'
                                          'X'.
        ENDIF.
            PERFORM bdc_dynpro      USING 'SAPLKACB' '0002'.
            PERFORM bdc_field       USING 'BDC_CURSOR'
                                          'COBL-KOSTL'.
            PERFORM bdc_field       USING 'BDC_OKCODE'
                                          '=ENTE'.
            PERFORM bdc_field       USING 'COBL-GSBER'
                                          t_flatfile-busarea.
           PERFORM bdc_field       USING 'BDC_OKCODE'
                                         '=ENTE'.
            PERFORM bdc_field       USING 'COBL-KOSTL'
                                          t_flatfile-cost.
            PERFORM bdc_field       USING 'COBL-PRCTR'
                                          t_flatfile-profit.
            PERFORM bdc_dynpro      USING 'SAPMF05A' '0300'.
            PERFORM bdc_field       USING 'BDC_CURSOR'
                                          'RF05A-NEWKO'.
            PERFORM bdc_field       USING 'BDC_OKCODE'
                                          '/00'.
            PERFORM bdc_field       USING 'RF05A-NEWBS'
                                          t_flatfile-postkey2.
            PERFORM bdc_field       USING 'RF05A-NEWKO'
                                          t_flatfile-account2.
            PERFORM debit_credit.
          WHEN '21' OR '31' OR '24' OR '34'.
    **perform bdc_field       using 'RF05A-NEWBS'
                                 '31'.
    **perform bdc_field       using 'RF05A-NEWKO'
                                 '25000'.
         PERFORM bdc_field       USING 'DKACB-FMORE'
                                       'X'.
         PERFORM bdc_dynpro      USING 'SAPMF05A' '0302'.
         PERFORM bdc_field       USING 'BDC_CURSOR'
                                       'RF05A-NEWKO'.
         PERFORM bdc_field       USING 'BDC_OKCODE'
                                       '/00'.
         PERFORM bdc_dynpro      USING 'SAPLKACB' '0002'.
         PERFORM bdc_field       USING 'BDC_CURSOR'
                                       'COBL-GSBER'.
         PERFORM bdc_field       USING 'BDC_OKCODE'
                                       '=ENTE'.
         PERFORM bdc_field       USING 'COBL-GSBER'
                                       t_flatfile-busarea.
         PERFORM bdc_field       USING 'COBL-KOSTL'
                                       t_flatfile-cost.
            PERFORM bdc_dynpro      USING 'SAPMF05A' '0302'.
            PERFORM bdc_field       USING 'BDC_CURSOR'
                                          'RF05A-NEWKO'.
            PERFORM bdc_field       USING 'BDC_OKCODE'
                                          '/00'.
            PERFORM bdc_field       USING 'BSEG-WRBTR'
                                          t_flatfile-amount.
            PERFORM bdc_field       USING 'BSEG-GSBER'
                                          t_flatfile-busarea.
            PERFORM bdc_field       USING 'BSEG-ZFBDT'
                                          t_flatfile-bline.
            PERFORM bdc_field       USING 'BSEG-SKFBT'
                                          t_flatfile-base.
            PERFORM bdc_field       USING 'BSEG-ZUONR'
                                          t_flatfile-assign.
            PERFORM bdc_field       USING 'BSEG-SGTXT'
                                          t_flatfile-text.
            PERFORM bdc_field       USING 'RF05A-NEWBS'
                                          t_flatfile-postkey2.
            PERFORM bdc_field       USING 'RF05A-NEWKO'
                                          t_flatfile-account2.
           PERFORM bdc_dynpro      USING 'SAPLFWTD' '0100'.
           PERFORM bdc_field       USING 'BDC_CURSOR'
                                         'WITH_ITEM-WT_WITHCD(01)'.
           PERFORM bdc_field       USING 'BDC_OKCODE'
                                         '=GO'.
            PERFORM debit_credit.
         PERFORM bdc_dynpro      USING 'SAPMF05A' '0300'.
         PERFORM bdc_field       USING 'BDC_CURSOR'
                                       'RF05A-NEWKO'.
         PERFORM bdc_field       USING 'BDC_OKCODE'
                                       '/00'.
         PERFORM bdc_field       USING 'BSEG-WRBTR'
                                       t_flatfile-amount2.
         PERFORM bdc_field       USING 'BSEG-ZUONR'
                                       t_flatfile-assign2.
         PERFORM bdc_field       USING 'BSEG-SGTXT'
                                       t_flatfile-text2.
         PERFORM bdc_dynpro      USING 'SAPLKACB' '0002'.
         PERFORM bdc_field       USING 'BDC_CURSOR'
                                       'COBL-GSBER'.
         PERFORM bdc_field       USING 'BDC_OKCODE'
                                       '=ENTE'.
         PERFORM bdc_field       USING 'COBL-GSBER'
                                       t_flatfile-busarea2.
         PERFORM bdc_field       USING 'COBL-KOSTL'
                                       t_flatfile-cost.
         PERFORM bdc_field       USING 'COBL-PRCTR'
                                       t_flatfile-profit2.
         PERFORM bdc_dynpro      USING 'SAPMF05A' '0300'.
         PERFORM bdc_field       USING 'BDC_CURSOR'
                                       'RF05A-NEWKO'.
         PERFORM bdc_field       USING 'BDC_OKCODE'
                                       '=BU'.
         PERFORM bdc_dynpro      USING 'SAPLKACB' '0002'.
         PERFORM bdc_field       USING 'BDC_CURSOR'
                                       'COBL-GSBER'.
         PERFORM bdc_field       USING 'BDC_OKCODE'
                                       '=ENTE'.
          WHEN '01' OR '11' OR '04' OR '14' OR '07' OR '17'.
    *perform bdc_field       using 'RF05A-NEWBS'
                                 '11'.
    *perform bdc_field       using 'RF05A-NEWKO'
                                 '1'.
            PERFORM bdc_dynpro      USING 'SAPMF05A' '0301'.
            PERFORM bdc_field       USING 'BDC_CURSOR'
                                          'BSEG-SGTXT'.
            PERFORM bdc_field       USING 'BDC_OKCODE'
                                          '/00'.
            PERFORM bdc_field       USING 'BSEG-WRBTR'
                                          t_flatfile-amount.
            PERFORM bdc_field       USING 'BSEG-MWSKZ'
            PERFORM bdc_field       USING 'BSEG-GSBER'
                                          t_flatfile-busarea.
            IF NOT t_flatfile-bline IS INITIAL.
              PERFORM bdc_field       USING 'BSEG-ZFBDT'
                                            t_flatfile-bline.
            ENDIF.
            IF NOT t_flatfile-base IS INITIAL.
              PERFORM bdc_field       USING 'BSEG-SKFBT'
                                            t_flatfile-base.
            ENDIF.
            PERFORM bdc_field       USING 'BSEG-ZUONR'
                                          t_flatfile-assign.
            PERFORM bdc_field       USING 'BSEG-SGTXT'
                                          t_flatfile-text.
            PERFORM bdc_field       USING 'RF05A-NEWBS'
                                          t_flatfile-postkey2.
            PERFORM bdc_field       USING 'RF05A-NEWKO'
                                          t_flatfile-account2.
            PERFORM debit_credit.
        ENDCASE.
    *perform bdc_dynpro      using 'SAPMF05A' '0301'.
    *perform bdc_field       using 'BDC_CURSOR'
                                 'BSEG-WRBTR'.
    *perform bdc_field       using 'BDC_OKCODE'
                                 '=AB'.
    *perform bdc_field       using 'BSEG-WRBTR'
                                 '3,000.00'.
    *perform bdc_field       using 'BSEG-MWSKZ'
    *perform bdc_field       using 'BSEG-GSBER'
                                 'VUSO'.
    *perform bdc_field       using 'BSEG-ZFBDT'
                                 '19.07.2005'.
    *perform bdc_field       using 'BSEG-SKFBT'
                                 '3,000.00'.
    *perform bdc_field       using 'BSEG-ZUONR'
                                 'ASSIGN'.
    *perform bdc_field       using 'BSEG-SGTXT'
                                 'TEXT'.
    PERFORM bdc_dynpro      USING 'SAPMF05A' '0700'.
    PERFORM bdc_field       USING 'BDC_CURSOR'
                                   'RF05A-NEWBS'.
    PERFORM bdc_field       USING 'BDC_OKCODE'
                                   '=BU'.
    *perform bdc_field       using 'BKPF-XBLNR'
                                 'REF'.
    *perform bdc_field       using 'BKPF-BKTXT'
                                 'text'.
        PERFORM bdc_transaction USING 'F-02'.
      ENDLOOP.
      PERFORM close_group.
    *&      Form  debit_credit
          text
    FORM debit_credit.
    **SRINI
    IF t_flatfile-postkey = '40' OR t_flatfile-postkey = '50'.
      PERFORM bdc_dynpro      USING 'SAPLKACB' '0002'.
      PERFORM bdc_field       USING 'BDC_CURSOR'
                                    'COBL-GSBER'.
      PERFORM bdc_field       USING 'BDC_OKCODE'
                                    '=ENTE'.
    ENDIF.
    ***SRINI
      PERFORM bdc_dynpro      USING 'SAPMF05A' '0300'.
      PERFORM bdc_field       USING 'BDC_CURSOR'
                                    'RF05A-NEWKO'.
      PERFORM bdc_field       USING 'BDC_OKCODE'
                                    '/00'.
      PERFORM bdc_field       USING 'BSEG-WRBTR'
                                    t_flatfile-amount2.
      PERFORM bdc_field       USING 'BSEG-ZUONR'
                                    t_flatfile-assign2.
      PERFORM bdc_field       USING 'BSEG-SGTXT'
                                    t_flatfile-text2.
      PERFORM bdc_dynpro      USING 'SAPLKACB' '0002'.
      PERFORM bdc_field       USING 'BDC_CURSOR'
                                   'COBL-KOSTL'.
                                    'COBL-GSBER'.
      PERFORM bdc_field       USING 'BDC_OKCODE'
                                    '=ENTE'.
      PERFORM bdc_field       USING 'COBL-GSBER'
                                    t_flatfile-busarea2.
         PERFORM bdc_field       USING 'COBL-KOSTL'
                                       t_flatfile-cost.
      PERFORM bdc_field       USING 'COBL-PRCTR'
                                    t_flatfile-profit2.
      PERFORM bdc_dynpro      USING 'SAPMF05A' '0300'.
      PERFORM bdc_field       USING 'BDC_CURSOR'
                                    'RF05A-NEWKO'.
      PERFORM bdc_field       USING 'BDC_OKCODE'
                                    '=BU'.
      PERFORM bdc_dynpro      USING 'SAPLKACB' '0002'.
      PERFORM bdc_field       USING 'BDC_CURSOR'
                                    'COBL-GSBER'.
      PERFORM bdc_field       USING 'BDC_OKCODE'
                                    '=ENTE'.
    ENDFORM.                    "debit_credit
    regards,
    Bikash

  • Syntax error

    Hi abappers
    I am using the following code in my program.
    i  m getting a syntax error that i do not understand? can any body help me out with this.
    Regards
    Narendiran Rathinavelu
    *& Report  ZTEST_RECUPLOAD
    REPORT  ZTEST_RECUPLOAD.
    *include bdcrecx1.
    ******************Selection screen************************************
    SELECTION-SCREEN BEGIN OF BLOCK 1 WITH FRAME TITLE TEXT-T01 .
    PARAMETERS P_FILE   TYPE RLGRAP-FILENAME OBLIGATORY.
    PARAMETERS P_SESSN  TYPE APQI-GROUPID DEFAULT 'RECURRING'.
    PARAMETERS P_SESSN2 TYPE APQI-GROUPID DEFAULT 'RECURRING_E'.
    SELECTION-SCREEN END OF BLOCK 1.
    ********************Type declaration**********************************
    *type for data input table
    TYPES : BEGIN OF TY_DATA,
            BUKRS    TYPE T001-BUKRS,         "Company code
            BLART    TYPE BKPF-BLART,         "Document type
           BUDAT    TYPE BKPF-BUDAT,         "Posting date
            DBBDT    TYPE BKDF-DBBDT,         "First run
            DBATR    TYPE BKDF-DBATR,         "Next run
            DBEDT    TYPE BKDF-DBEDT,         "last run
            DBMON    TYPE BKDF-DBMON,         "Run frequency
            DBTAG    TYPE BKDF-DBTAG,         "Run date
           DBZHL    TYPE BKDF-DBZHL,         "no of runs
            XBLNR    TYPE BKPF-XBLNR,         "reference(site)
            BKTXT    TYPE BKPF-BKTXT,         "document header data
           USNAM    TYPE BKPF-USNAM,         "User name
           CPUDT    TYPE BKPF-CPUDT,         "Entry date
            BSCHL_1  TYPE BSEG-BSCHL,         "Posting key 1 item
            HKONT_1  TYPE BSEG-HKONT,         "Account 1 item
            DESC_1   TYPE CHAR40,             "Description vendor/GL 1 item
            MWSKZ_1  TYPE BSEG-MWSKZ,         "Tax code 1 item
           MWSTS1_1 TYPE BSEG-MWSTS,         "Tax Amount 1 item
            MWSTS2_1 TYPE BSEG-MWSTS,         "Amount is local currency 1 item
           MWSTS3_1 TYPE BSEG-MWSTS,         "Amount is foreign currency 1 item
            SGTXT_1  TYPE BSEG-SGTXT,         "Item text 1 item
            ZUONR_1  TYPE BSEG-ZUONR,         "Assignment 1 item
            BSCHL_2  TYPE BSEG-BSCHL,         "Posting key 2 item
            HKONT_2  TYPE BSEG-HKONT,         "Account 2 item
            DESC_2   TYPE CHAR40,             "Description vendor/GL 2 item
            MWSKZ_2  TYPE BSEG-MWSKZ,         "Tax code 2 item
           MWSTS1_2 TYPE BSEG-MWSTS,         "Tax Amount 2 item
            MWSTS2_2 TYPE BSEG-MWSTS,         "Amount is local currency 2 item
           MWSTS3_2 TYPE BSEG-MWSTS,         "Amount is foreign currency 2 item
            KOSTL    TYPE COBL-KOSTL,         "Cost center
            AUFNR    TYPE COBL-AUFNR,         "Internal order number
            SGTXT_2  TYPE BSEG-SGTXT,         "Item text 2 item
            ZUONR_2  TYPE BSEG-ZUONR,         "Assignment 2 item
          END OF TY_DATA.
    *type for data error table
    TYPES : BEGIN OF TY_ERROR,
             BUKRS    TYPE T001-BUKRS,         "Company code
            BLART    TYPE BKPF-BLART,         "Document type
           BUDAT    TYPE BKPF-BUDAT,         "Posting date
            DBBDT    TYPE BKDF-DBBDT,         "First run
            DBATR    TYPE BKDF-DBATR,         "Next run
            DBEDT    TYPE BKDF-DBEDT,         "last run
            DBMON    TYPE BKDF-DBMON,         "Run frequency
            DBTAG    TYPE BKDF-DBTAG,         "Run date
           DBZHL    TYPE BKDF-DBZHL,         "no of runs
            XBLNR    TYPE BKPF-XBLNR,         "reference(site)
            BKTXT    TYPE BKPF-BKTXT,         "document header data
           USNAM    TYPE BKPF-USNAM,         "User name
           CPUDT    TYPE BKPF-CPUDT,         "Entry date
            BSCHL_1  TYPE BSEG-BSCHL,         "Posting key 1 item
            HKONT_1  TYPE BSEG-HKONT,         "Account 1 item
            DESC_1   TYPE CHAR40,             "Description vendor/GL 1 item
            MWSKZ_1  TYPE BSEG-MWSKZ,         "Tax code 1 item
           MWSTS1_1 TYPE BSEG-MWSTS,         "Tax Amount 1 item
            MWSTS2_1 TYPE BSEG-MWSTS,         "Amount is local currency 1 item
           MWSTS3_1 TYPE BSEG-MWSTS,         "Amount is foreign currency 1 item
            SGTXT_1  TYPE BSEG-SGTXT,         "Item text 1 item
            ZUONR_1  TYPE BSEG-ZUONR,         "Assignment 1 item
            BSCHL_2  TYPE BSEG-BSCHL,         "Posting key 2 item
            HKONT_2  TYPE BSEG-HKONT,         "Account 2 item
            DESC_2   TYPE CHAR40,             "Description vendor/GL 2 item
            MWSKZ_2  TYPE BSEG-MWSKZ,         "Tax code 2 item
           MWSTS1_2 TYPE BSEG-MWSTS,         "Tax Amount 2 item
            MWSTS2_2 TYPE BSEG-MWSTS,         "Amount is local currency 2 item
           MWSTS3_2 TYPE BSEG-MWSTS,         "Amount is foreign currency 2 item
            KOSTL    TYPE COBL-KOSTL,         "Cost center
            AUFNR    TYPE COBL-AUFNR,         "Internal order number
            SGTXT_2  TYPE BSEG-SGTXT,         "Item text 2 item
            ZUONR_2  TYPE BSEG-ZUONR,         "Assignment 2 item
          END OF TY_ERROR.
    ********************Data declaration***********************************
    DATA : T_DATA TYPE TABLE OF TY_DATA,   "Table to upload correct entries
           T_ERROR TYPE TABLE OF TY_ERROR. "Table to upload error data
    DATA : W_DATA TYPE TY_DATA,            "workarea for t_data
           W_ERROR TYPE TY_ERROR.          "workarea for t_error
    DATA : T_BDCDATA TYPE TABLE OF BDCDATA,
           W_BDCDATA TYPE BDCDATA.
    DATA : T_SEL_FILE TYPE FILETABLE,
           W_RETURN_CODE TYPE I VALUE '0',
           W_SEL_FILE LIKE LINE OF T_SEL_FILE.
    DATA : T_DATAIN TYPE TABLE OF TY_DATA,
           W_DATAIN TYPE string.
    DATA : W_FILE TYPE STRING.
    ********************At Selection Screen*********************************
    *selection screen validations
    AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_FILE.
      CALL METHOD CL_GUI_FRONTEND_SERVICES=>FILE_OPEN_DIALOG
        EXPORTING
          WINDOW_TITLE            = 'Select File for upload'
       DEFAULT_EXTENSION       =
       DEFAULT_FILENAME        =
          FILE_FILTER             = '*.xls'
       WITH_ENCODING           =
       INITIAL_DIRECTORY       =
       MULTISELECTION          =
        CHANGING
          FILE_TABLE              = T_SEL_FILE
          RC                      = W_RETURN_CODE
       USER_ACTION             =
       FILE_ENCODING           =
        EXCEPTIONS
          FILE_OPEN_DIALOG_FAILED = 1
          CNTL_ERROR              = 2
          ERROR_NO_GUI            = 3
          NOT_SUPPORTED_BY_GUI    = 4
          OTHERS                  = 5
      IF SY-SUBRC <> 0.
        MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
                   WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
      ENDIF.
      IF W_RETURN_CODE <> -1.
        READ TABLE T_SEL_FILE INTO W_SEL_FILE INDEX 1.
        CLEAR P_FILE.
        MOVE W_SEL_FILE TO P_FILE.
      ENDIF.
    *at selection screen
    AT SELECTION-SCREEN ON P_SESSN.
      IF P_SESSN IS INITIAL.
        P_SESSN = 'RECURRING'.
      ENDIF.
    AT SELECTION-SCREEN ON P_SESSN2.
      IF P_SESSN2 IS INITIAL.
        P_SESSN2 = 'RECURRING_E'.
      ENDIF.
    *********************Start of Selection ****************************
    START-OF-SELECTION.
      OPEN DATASET P_FILE FOR INPUT IN TEXT MODE ENCODING DEFAULT.
    *error message when file not found.
      IF SY-SUBRC <> 0.
        MESSAGE 'File Not Found' TYPE 'E'.
      ENDIF.
      DO.
        READ DATASET P_FILE INTO w_datain.
        IF SY-SUBRC EQ 0.
          perform pre_process_record using w_datain
                                     changing w_data.
          PERFORM VALIDATE_DATA TABLES T_DATA
                                       T_ERROR
                                USING  W_DATA.
        ELSE.
          EXIT.
        ENDIF.
      ENDDO.
      CLOSE DATASET P_FILE.
    *check if any error has occured.
      IF T_ERROR[] IS NOT INITIAL.
        PERFORM FILL_BDC_TABLE TABLES T_ERROR
                                      T_BDCDATA
                               USING  P_SESSN2.
      ENDIF.
    *Check if any records are present to be uploaded.
      IF T_DATA[] IS NOT INITIAL.
        PERFORM FILL_BDC_TABLE TABLES T_DATA
                                      T_BDCDATA
                               USING  P_SESSN.
      ELSE.
        WRITE :/ 'No Correct Records were found to create session in SM35',
               / 'Please Check the File'.
      ENDIF.
    *&      Form  validate_data
          Sub routine to check correctness of the uploaded data.
         -->P_T_DATA  table to upload correct entries
         -->P_T_ERROR table to upload erroneous entries
         -->P_W_DATA  current record
    FORM VALIDATE_DATA  TABLES   P_T_DATA STRUCTURE  W_DATA
                                 P_T_ERROR STRUCTURE W_ERROR
                        USING    P_W_DATA.
      DATA : L_W_LIFNR TYPE LFA1-LIFNR,
             L_W_SAKNR TYPE SKA1-SAKNR.
      DATA:  L_W_DATA  TYPE TY_DATA,
             L_W_ERROR TYPE TY_ERROR.
      MOVE P_W_DATA TO L_W_DATA.
      DATA : L_FG_ERROR TYPE C,
             L_W_DATE   TYPE SY-DATUM.
      CONSTANTS : C_X       TYPE C VALUE 'X',
                  C_O2CA(4) TYPE C VALUE 'O2CA',
                  C_ZK_1(2) TYPE C VALUE 'ZK',
                  C_ZK_2(2) TYPE C VALUE 'zk',
                  C_NUM(17) TYPE C VALUE '01234567890/.-, ',
                  C_31(2)   TYPE C VALUE '31',
                  C_40(2)   TYPE C VALUE '40'.
      L_FG_ERROR = SPACE.
      DO.
    *check document type is 'ZK'
        IF NOT L_W_DATA-BLART NE C_ZK_1 OR
           L_W_DATA-BLART NE C_ZK_2.
          L_FG_ERROR = C_X.
          EXIT.
        ENDIF.
    *check 1 item text fields are filled by numeric value.
        IF NOT L_W_DATA-SGTXT_1 CO C_NUM.
          L_FG_ERROR = C_X.
          EXIT.
        ENDIF.
    *check 2 item text fields are filled by date.
        MOVE L_W_DATA-SGTXT_2 TO L_W_DATE.
        CALL FUNCTION 'DATE_CHECK_PLAUSIBILITY'
          EXPORTING
            DATE                      = L_W_DATE
          EXCEPTIONS
            PLAUSIBILITY_CHECK_FAILED = 1
            OTHERS                    = 2.
        IF SY-SUBRC <> 0.
          L_FG_ERROR = C_X.
          EXIT.
        ENDIF.
    *check first posting key is '31'
        IF NOT L_W_DATA-BSCHL_1 EQ C_31.
          L_FG_ERROR = C_X.
          EXIT.
        ENDIF.
    *check second posting key is '40'
        IF NOT L_W_DATA-BSCHL_2 EQ C_40.
          L_FG_ERROR = C_X.
          EXIT.
        ENDIF.
    *check valid Vendor
        SELECT SINGLE LIFNR FROM LFA1 INTO L_W_LIFNR
                            WHERE LIFNR = L_W_DATA-HKONT_1.
        IF SY-SUBRC <> 0.
          L_FG_ERROR = C_X.
          EXIT.
        ENDIF.
    *check valid G/L account.
        SELECT SINGLE SAKNR FROM SKA1 INTO L_W_SAKNR
                            WHERE KTOPL = C_O2CA AND
                                  SAKNR = L_W_DATA-HKONT_2.
        IF SY-SUBRC <> 0.
          L_FG_ERROR = C_X.
          EXIT.
        ENDIF.
    *check 1 item assignment contains numeric value
        IF NOT L_W_DATA-ZUONR_1 CO C_NUM.
          L_FG_ERROR = C_X.
          EXIT.
        ENDIF.
    *check 2 item assigment contains date value
        MOVE L_W_DATA-ZUONR_2 TO L_W_DATE.
        CALL FUNCTION 'DATE_CHECK_PLAUSIBILITY'
          EXPORTING
            DATE                      = L_W_DATE
          EXCEPTIONS
            PLAUSIBILITY_CHECK_FAILED = 1
            OTHERS                    = 2.
        IF SY-SUBRC <> 0.
          L_FG_ERROR = C_X.
          EXIT.
        ENDIF.
    *check if no error has occured
        IF NOT L_FG_ERROR EQ C_X.
          EXIT.
        ENDIF.
      ENDDO.
    *check error flag and insert error text.
      CASE L_FG_ERROR.
        WHEN C_X.                        "When error has occured.
          APPEND L_W_DATA TO P_T_ERROR.
        WHEN OTHERS.                     "When no error has occured.
          APPEND L_W_DATA TO P_T_DATA.
      ENDCASE.
    ENDFORM.                    " validate_data
    *&      Form  download_error_log
          Sub routine to download the error log
         -->P_T_ERROR  error log
    FORM DOWNLOAD_ERROR_LOG  TABLES   P_T_ERROR STRUCTURE W_ERROR.
      DATA : L_FILENAME TYPE STRING,
             L_PATH     TYPE STRING,
             L_FULLPATH TYPE STRING.
      CALL METHOD CL_GUI_FRONTEND_SERVICES=>FILE_SAVE_DIALOG
        EXPORTING
          WINDOW_TITLE         = 'Save the Error log'
        CHANGING
          FILENAME             = L_FILENAME
          PATH                 = L_PATH
          FULLPATH             = L_FULLPATH
        EXCEPTIONS
          CNTL_ERROR           = 1
          ERROR_NO_GUI         = 2
          NOT_SUPPORTED_BY_GUI = 3
          OTHERS               = 4.
      IF SY-SUBRC <> 0.
        MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
                WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
      ENDIF.
      CHECK L_FULLPATH IS NOT INITIAL.
      CALL FUNCTION 'GUI_DOWNLOAD'
        EXPORTING
          FILENAME                = L_FULLPATH
          FILETYPE                = 'ASC'
          WRITE_FIELD_SEPARATOR   = 'X'
        TABLES
          DATA_TAB                = P_T_ERROR
        EXCEPTIONS
          FILE_WRITE_ERROR        = 1
          NO_BATCH                = 2
          GUI_REFUSE_FILETRANSFER = 3
          INVALID_TYPE            = 4
          NO_AUTHORITY            = 5
          UNKNOWN_ERROR           = 6
          HEADER_NOT_ALLOWED      = 7
          SEPARATOR_NOT_ALLOWED   = 8
          FILESIZE_NOT_ALLOWED    = 9
          HEADER_TOO_LONG         = 10
          DP_ERROR_CREATE         = 11
          DP_ERROR_SEND           = 12
          DP_ERROR_WRITE          = 13
          UNKNOWN_DP_ERROR        = 14
          ACCESS_DENIED           = 15
          DP_OUT_OF_MEMORY        = 16
          DISK_FULL               = 17
          DP_TIMEOUT              = 18
          FILE_NOT_FOUND          = 19
          DATAPROVIDER_EXCEPTION  = 20
          CONTROL_FLUSH_ERROR     = 21
          OTHERS                  = 22.
      IF SY-SUBRC <> 0.
        MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
                WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
      ENDIF.
    ENDFORM.                    " download_error_log
    *&      Form  fill_bdc_table
          bdc session is created in SM35
         -->P_T_DATA     correct data
         -->P_T_BDCDATA  bdcdata
         -->P_P_SESSN    session name
    FORM FILL_BDC_TABLE  TABLES   P_T_DATA STRUCTURE W_DATA
                                  P_T_BDCDATA STRUCTURE BDCDATA
                         USING    P_P_SESSN.
      DATA : L_W_DATA TYPE TY_DATA.    "workarea for t_data
      CONSTANTS: C_EUR(3) TYPE C VALUE 'EUR'.
    *open batch
      PERFORM OPEN_GROUP USING P_P_SESSN.
      LOOP AT P_T_DATA INTO L_W_DATA.
    *clear the bdc table
        REFRESH P_T_BDCDATA.
    *initial screen
        PERFORM BDC_DYNPRO TABLES P_T_BDCDATA
                           USING  'SAPMF05A' '0106'.
        PERFORM : BDC_FIELD TABLES P_T_BDCDATA USING 'BDC_CURSOR' 'BKPF-WAERS',
                  BDC_FIELD TABLES P_T_BDCDATA USING 'BDC_OKCODE' '/00',            "enter
                  BDC_FIELD TABLES P_T_BDCDATA USING 'BKPF-BUKRS' L_W_DATA-BUKRS,   "company code
                  BDC_FIELD TABLES P_T_BDCDATA USING 'BKDF-DBBDT' L_W_DATA-DBBDT,   "first run on
                  BDC_FIELD TABLES P_T_BDCDATA USING 'BKDF-DBATR' L_W_DATA-DBATR,   "next run on
                  BDC_FIELD TABLES P_T_BDCDATA USING 'BKDF-DBEDT' L_W_DATA-DBEDT,   "last run on
                  BDC_FIELD TABLES P_T_BDCDATA USING 'BKDF-DBMON' L_W_DATA-DBMON,   "run frequency
                  BDC_FIELD TABLES P_T_BDCDATA USING 'BKDF-DBTAG' L_W_DATA-DBTAG,   "run date
                  BDC_FIELD TABLES P_T_BDCDATA USING 'BKPF-BLART' L_W_DATA-BLART,   "document type
                  BDC_FIELD TABLES P_T_BDCDATA USING 'BKPF-WAERS' C_EUR,            "currency
                  BDC_FIELD TABLES P_T_BDCDATA USING 'BKPF-XBLNR' L_W_DATA-XBLNR,   "reference
                  BDC_FIELD TABLES P_T_BDCDATA USING 'BKPF-BKTXT' L_W_DATA-BKTXT,   "document header data
                  BDC_FIELD TABLES P_T_BDCDATA USING 'RF05A-NEWBS' L_W_DATA-BSCHL_1,"posting key
                  BDC_FIELD TABLES P_T_BDCDATA USING 'RF05A-NEWKO' L_W_DATA-HKONT_1."account no
    *second screen (First line item)
        PERFORM BDC_DYNPRO TABLES P_T_BDCDATA
                           USING 'SAPMF05A' '0302'.
        PERFORM : BDC_FIELD TABLES P_T_BDCDATA USING 'BDC_CURSOR' 'RF05A-NEWKO',
                  BDC_FIELD TABLES P_T_BDCDATA USING 'BDC_OKCODE' '/00',              "enter
                  BDC_FIELD TABLES P_T_BDCDATA USING 'BSEG-WRBTR' L_W_DATA-MWSTS2_1,  "amount in LC
                  BDC_FIELD TABLES P_T_BDCDATA USING 'BSEG-MWSKZ' L_W_DATA-MWSKZ_1,   "tax code
                  BDC_FIELD TABLES P_T_BDCDATA USING 'BSEG-ZUONR' L_W_DATA-ZUONR_1,   "assignment
                  BDC_FIELD TABLES P_T_BDCDATA USING 'BSEG-SGTXT' L_W_DATA-SGTXT_1,   "item level text
                  BDC_FIELD TABLES P_T_BDCDATA USING 'RF05A-NEWBS' L_W_DATA-BSCHL_2,  "posting key
                  BDC_FIELD TABLES P_T_BDCDATA USING 'RF05A-NEWKO' L_W_DATA-HKONT_2.  "account no
    *third screen (Second line item)
        PERFORM BDC_DYNPRO TABLES P_T_BDCDATA
                           USING 'SAPMF05A' '0300'.
        PERFORM : BDC_FIELD TABLES P_T_BDCDATA USING 'BDC_CURSOR' 'BSEG-EBELN',
                  BDC_FIELD TABLES P_T_BDCDATA USING 'BDC_OKCODE' '=AB',              "overview button
                  BDC_FIELD TABLES P_T_BDCDATA USING 'BSEG-WRBTR' L_W_DATA-MWSTS2_2,  "amount in LC
                  BDC_FIELD TABLES P_T_BDCDATA USING 'BSEG-MWSKZ' L_W_DATA-MWSKZ_2,   "tax code
                  BDC_FIELD TABLES P_T_BDCDATA USING 'BSEG-ZUONR' L_W_DATA-ZUONR_2,   "assigment
                  BDC_FIELD TABLES P_T_BDCDATA USING 'BSEG-SGTXT' L_W_DATA-SGTXT_2.   "item text
    *fourth screen (pop up)
        PERFORM BDC_DYNPRO TABLES P_T_BDCDATA
                           USING 'SAPLKACB' '0002'.
        PERFORM : BDC_FIELD TABLES P_T_BDCDATA USING 'BDC_CURSOR' 'COBL-KOSTL',
                  BDC_FIELD TABLES P_T_BDCDATA USING 'BDC_OKCODE' '=ENTE',            "ok button
                  BDC_FIELD TABLES P_T_BDCDATA USING 'COBL-KOSTL' L_W_DATA-KOSTL,     "cost center
                  BDC_FIELD TABLES P_T_BDCDATA USING 'COBL-AUFNR' L_W_DATA-AUFNR.     "order number
    *fifth screen
        PERFORM BDC_FIELD TABLES P_T_BDCDATA
                          USING 'SAPMF05A' '0070'.
        PERFORM : BDC_FIELD TABLES P_T_BDCDATA USING 'BDC_CURSOR' 'RF05A-NEWBS',
                  BDC_FIELD TABLES P_T_BDCDATA USING 'BDC_OKCODE' '=BU'.              "save document
        PERFORM BDC_INSERT TABLES P_T_BDCDATA
                            USING 'ZREC_ENTRY'.
      ENDLOOP.
    *close the batch.
      PERFORM CLOSE_GROUP.
    ENDFORM.                    " fill_bdc_table
    *&      Form  bdc_dynpro
          bdc screen insert sub routine
         -->P_T_BDCDATA  BDC table
         -->P_PROGRAM    Program name
         -->P_SCREEN     Screen no
    FORM BDC_DYNPRO  TABLES   P_T_BDCDATA STRUCTURE BDCDATA
                     USING    VALUE(P_PROGRAM)
                              VALUE(P_SCREEN).
      CONSTANTS C_X TYPE C VALUE 'X'.
      DATA L_W_BDCDATA TYPE BDCDATA.
      L_W_BDCDATA-PROGRAM = P_PROGRAM.
      L_W_BDCDATA-DYNPRO = P_SCREEN.
      L_W_BDCDATA-DYNBEGIN = C_X.
      APPEND L_W_BDCDATA TO P_T_BDCDATA.
    ENDFORM.                    " bdc_dynpro
    *&      Form  bdc_field
          bdc field screen routine
         -->P_T_BDCDATA  BDC table
         -->P_FIELD    Field name
         -->P_VALUE      Value
    FORM BDC_FIELD  TABLES   P_T_BDCDATA STRUCTURE BDCDATA
                    USING    VALUE(P_FIELD)
                             VALUE(P_VALUE).
      DATA L_W_BDCDATA TYPE BDCDATA.     "Work area
      L_W_BDCDATA-FNAM = P_FIELD.
      L_W_BDCDATA-FVAL = P_VALUE.
      APPEND L_W_BDCDATA TO P_T_BDCDATA.
    ENDFORM.                    " bdc_field
    *&      Form  open_group
          bdc  open group in sm35
         -->P_P_SESSN  session name
    FORM OPEN_GROUP  USING    P_P_SESSN.
      CONSTANTS C_X TYPE C VALUE 'X'.
      CALL FUNCTION 'BDC_OPEN_GROUP'
        EXPORTING
          CLIENT              = SY-MANDT
          GROUP               = P_P_SESSN
          KEEP                = C_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.                    " open_group
    *&      Form  bdc_insert
          bdc insert in sm35
         -->P_T_BDCDATA  bdcdata table
         -->P_tcode      transaction
    FORM BDC_INSERT  TABLES   P_T_BDCDATA STRUCTURE BDCDATA
                     USING    VALUE(P_TCODE).
      CALL FUNCTION 'BDC_INSERT'
        EXPORTING
          TCODE            = P_TCODE
        TABLES
          DYNPROTAB        = P_T_BDCDATA
        EXCEPTIONS
          INTERNAL_ERROR   = 1
          NOT_OPEN         = 2
          QUEUE_ERROR      = 3
          TCODE_INVALID    = 4
          PRINTING_INVALID = 5
          POSTING_INVALID  = 6
          OTHERS           = 7.
      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.                    " bdc_insert
    *&      Form  close_group
          bdc close group in sm35
    FORM 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.                    " close_group
    *&      Form  pre_process_record
          text
         -->P_W_DATAIN  text
         <--P_W_DATA  text
    FORM pre_process_record  USING    P_W_DATAIN
                             CHANGING P_W_DATA.
    move p_w_datain to p_w_data-bukrs.
    ENDFORM.                    " pre_process_record

    copy paste this code
    *& Report ZTEST_RECUPLOAD
    REPORT ZTEST_RECUPLOAD.
    *include bdcrecx1.
    *******************Selection screen*************************************
    SELECTION-SCREEN BEGIN OF BLOCK 1 WITH FRAME TITLE TEXT-T01 .
    PARAMETERS P_FILE TYPE RLGRAP-FILENAME OBLIGATORY.
    PARAMETERS P_SESSN TYPE APQI-GROUPID DEFAULT 'RECURRING'.
    PARAMETERS P_SESSN2 TYPE APQI-GROUPID DEFAULT 'RECURRING_E'.
    SELECTION-SCREEN END OF BLOCK 1.
    *********************Type declaration***********************************
    *type for data input table
    TYPES : BEGIN OF TY_DATA,
    BUKRS TYPE T001-BUKRS, "Company code
    BLART TYPE BKPF-BLART, "Document type
    * BUDAT TYPE BKPF-BUDAT, "Posting date
    DBBDT TYPE BKDF-DBBDT, "First run
    DBATR TYPE BKDF-DBATR, "Next run
    DBEDT TYPE BKDF-DBEDT, "last run
    DBMON TYPE BKDF-DBMON, "Run frequency
    DBTAG TYPE BKDF-DBTAG, "Run date
    * DBZHL TYPE BKDF-DBZHL, "no of runs
    XBLNR TYPE BKPF-XBLNR, "reference(site)
    BKTXT TYPE BKPF-BKTXT, "document header data
    * USNAM TYPE BKPF-USNAM, "User name
    * CPUDT TYPE BKPF-CPUDT, "Entry date
    BSCHL_1 TYPE BSEG-BSCHL, "Posting key 1 item
    HKONT_1 TYPE BSEG-HKONT, "Account 1 item
    DESC_1 TYPE CHAR40, "Description vendor/GL 1 item
    MWSKZ_1 TYPE BSEG-MWSKZ, "Tax code 1 item
    * MWSTS1_1 TYPE BSEG-MWSTS, "Tax Amount 1 item
    MWSTS2_1 TYPE BSEG-MWSTS, "Amount is local currency 1 item
    * MWSTS3_1 TYPE BSEG-MWSTS, "Amount is foreign currency 1 item
    SGTXT_1 TYPE BSEG-SGTXT, "Item text 1 item
    ZUONR_1 TYPE BSEG-ZUONR, "Assignment 1 item
    BSCHL_2 TYPE BSEG-BSCHL, "Posting key 2 item
    HKONT_2 TYPE BSEG-HKONT, "Account 2 item
    DESC_2 TYPE CHAR40, "Description vendor/GL 2 item
    MWSKZ_2 TYPE BSEG-MWSKZ, "Tax code 2 item
    ** MWSTS1_2 TYPE BSEG-MWSTS, "Tax Amount 2 item
    MWSTS2_2 TYPE BSEG-MWSTS, "Amount is local currency 2 item
    * MWSTS3_2 TYPE BSEG-MWSTS, "Amount is foreign currency 2 item
    KOSTL TYPE COBL-KOSTL, "Cost center
    AUFNR TYPE COBL-AUFNR, "Internal order number
    SGTXT_2 TYPE BSEG-SGTXT, "Item text 2 item
    ZUONR_2 TYPE BSEG-ZUONR, "Assignment 2 item
    END OF TY_DATA.
    *type for data error table
    TYPES : BEGIN OF TY_ERROR,
    BUKRS TYPE T001-BUKRS, "Company code
    BLART TYPE BKPF-BLART, "Document type
    * BUDAT TYPE BKPF-BUDAT, "Posting date
    DBBDT TYPE BKDF-DBBDT, "First run
    DBATR TYPE BKDF-DBATR, "Next run
    DBEDT TYPE BKDF-DBEDT, "last run
    DBMON TYPE BKDF-DBMON, "Run frequency
    DBTAG TYPE BKDF-DBTAG, "Run date
    * DBZHL TYPE BKDF-DBZHL, "no of runs
    XBLNR TYPE BKPF-XBLNR, "reference(site)
    BKTXT TYPE BKPF-BKTXT, "document header data
    * USNAM TYPE BKPF-USNAM, "User name
    * CPUDT TYPE BKPF-CPUDT, "Entry date
    BSCHL_1 TYPE BSEG-BSCHL, "Posting key 1 item
    HKONT_1 TYPE BSEG-HKONT, "Account 1 item
    DESC_1 TYPE CHAR40, "Description vendor/GL 1 item
    MWSKZ_1 TYPE BSEG-MWSKZ, "Tax code 1 item
    * MWSTS1_1 TYPE BSEG-MWSTS, "Tax Amount 1 item
    MWSTS2_1 TYPE BSEG-MWSTS, "Amount is local currency 1 item
    * MWSTS3_1 TYPE BSEG-MWSTS, "Amount is foreign currency 1 item
    SGTXT_1 TYPE BSEG-SGTXT, "Item text 1 item
    ZUONR_1 TYPE BSEG-ZUONR, "Assignment 1 item
    BSCHL_2 TYPE BSEG-BSCHL, "Posting key 2 item
    HKONT_2 TYPE BSEG-HKONT, "Account 2 item
    DESC_2 TYPE CHAR40, "Description vendor/GL 2 item
    MWSKZ_2 TYPE BSEG-MWSKZ, "Tax code 2 item
    * MWSTS1_2 TYPE BSEG-MWSTS, "Tax Amount 2 item
    MWSTS2_2 TYPE BSEG-MWSTS, "Amount is local currency 2 item
    * MWSTS3_2 TYPE BSEG-MWSTS, "Amount is foreign currency 2 item
    KOSTL TYPE COBL-KOSTL, "Cost center
    AUFNR TYPE COBL-AUFNR, "Internal order number
    SGTXT_2 TYPE BSEG-SGTXT, "Item text 2 item
    ZUONR_2 TYPE BSEG-ZUONR, "Assignment 2 item
    END OF TY_ERROR.
    *********************Data declaration************************************
    DATA : T_DATA TYPE TABLE OF TY_DATA, "Table to upload correct entries
    T_ERROR TYPE TABLE OF TY_ERROR. "Table to upload error data
    DATA : W_DATA type TY_DATA, "workarea for t_data
    W_ERROR TYPE TY_ERROR. "workarea for t_error
    DATA : T_BDCDATA TYPE TABLE OF BDCDATA,
    W_BDCDATA TYPE BDCDATA.
    DATA : T_SEL_FILE TYPE FILETABLE,
    W_RETURN_CODE TYPE I VALUE '0',
    W_SEL_FILE LIKE LINE OF T_SEL_FILE.
    DATA : T_DATAIN TYPE TABLE OF TY_DATA,
    W_DATAIN TYPE string.
    DATA : W_FILE TYPE STRING.
    *********************At Selection Screen**********************************
    *selection screen validations
    AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_FILE.
    CALL METHOD CL_GUI_FRONTEND_SERVICES=>FILE_OPEN_DIALOG
    EXPORTING
    WINDOW_TITLE = 'Select File for upload'
    * DEFAULT_EXTENSION =
    * DEFAULT_FILENAME =
    FILE_FILTER = '*.xls'
    * WITH_ENCODING =
    * INITIAL_DIRECTORY =
    * MULTISELECTION =
    CHANGING
    FILE_TABLE = T_SEL_FILE
    RC = W_RETURN_CODE
    * USER_ACTION =
    * FILE_ENCODING =
    EXCEPTIONS
    FILE_OPEN_DIALOG_FAILED = 1
    CNTL_ERROR = 2
    ERROR_NO_GUI = 3
    NOT_SUPPORTED_BY_GUI = 4
    OTHERS = 5
    IF SY-SUBRC <> 0.
    MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
    WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
    ENDIF.
    IF W_RETURN_CODE <> -1.
    READ TABLE T_SEL_FILE INTO W_SEL_FILE INDEX 1.
    CLEAR P_FILE.
    MOVE W_SEL_FILE TO P_FILE.
    ENDIF.
    *at selection screen
    AT SELECTION-SCREEN ON P_SESSN.
    IF P_SESSN IS INITIAL.
    P_SESSN = 'RECURRING'.
    ENDIF.
    AT SELECTION-SCREEN ON P_SESSN2.
    IF P_SESSN2 IS INITIAL.
    P_SESSN2 = 'RECURRING_E'.
    ENDIF.
    *********************Start of Selection ****************************
    START-OF-SELECTION.
    OPEN DATASET P_FILE FOR INPUT IN TEXT MODE ENCODING DEFAULT.
    *error message when file not found.
    IF SY-SUBRC <> 0.
    MESSAGE 'File Not Found' TYPE 'E'.
    ENDIF.
    DO.
    READ DATASET P_FILE INTO w_datain.
    IF SY-SUBRC EQ 0.
    perform pre_process_record using w_datain
    changing w_data.
    PERFORM VALIDATE_DATA TABLES T_DATA
    T_ERROR
    USING W_DATA.
    ELSE.
    EXIT.
    ENDIF.
    ENDDO.
    CLOSE DATASET P_FILE.
    *check if any error has occured.
    IF T_ERROR[] IS NOT INITIAL.
    PERFORM FILL_BDC_TABLE TABLES T_ERROR
    T_BDCDATA
    USING P_SESSN2.
    ENDIF.
    *Check if any records are present to be uploaded.
    IF T_DATA[] IS NOT INITIAL.
    PERFORM FILL_BDC_TABLE TABLES T_DATA
    T_BDCDATA
    USING P_SESSN.
    ELSE.
    WRITE :/ 'No Correct Records were found to create session in SM35',
    / 'Please Check the File'.
    ENDIF.
    *& Form validate_data
    * Sub routine to check correctness of the uploaded data.
    * -->P_T_DATA table to upload correct entries
    * -->P_T_ERROR table to upload erroneous entries
    * -->P_W_DATA current record
    FORM VALIDATE_DATA TABLES P_T_DATA STRUCTURE W_DATA
    P_T_ERROR STRUCTURE W_ERROR
    USING P_W_DATA structure w_data .
    DATA : L_W_LIFNR TYPE LFA1-LIFNR,
    L_W_SAKNR TYPE SKA1-SAKNR.
    DATA: L_W_DATA TYPE TY_DATA,
    L_W_ERROR TYPE TY_ERROR.
    MOVE P_W_DATA TO L_W_DATA.
    DATA : L_FG_ERROR TYPE C,
    L_W_DATE TYPE SY-DATUM.
    CONSTANTS : C_X TYPE C VALUE 'X',
    C_O2CA(4) TYPE C VALUE 'O2CA',
    C_ZK_1(2) TYPE C VALUE 'ZK',
    C_ZK_2(2) TYPE C VALUE 'zk',
    C_NUM(17) TYPE C VALUE '01234567890/.-, ',
    C_31(2) TYPE C VALUE '31',
    C_40(2) TYPE C VALUE '40'.
    L_FG_ERROR = SPACE.
    DO.
    *check document type is 'ZK'
    IF NOT L_W_DATA-BLART NE C_ZK_1 OR
    L_W_DATA-BLART NE C_ZK_2.
    L_FG_ERROR = C_X.
    EXIT.
    ENDIF.
    *check 1 item text fields are filled by numeric value.
    IF NOT L_W_DATA-SGTXT_1 CO C_NUM.
    L_FG_ERROR = C_X.
    EXIT.
    ENDIF.
    *check 2 item text fields are filled by date.
    MOVE L_W_DATA-SGTXT_2 TO L_W_DATE.
    CALL FUNCTION 'DATE_CHECK_PLAUSIBILITY'
    EXPORTING
    DATE = L_W_DATE
    EXCEPTIONS
    PLAUSIBILITY_CHECK_FAILED = 1
    OTHERS = 2.
    IF SY-SUBRC <> 0.
    L_FG_ERROR = C_X.
    EXIT.
    ENDIF.
    *check first posting key is '31'
    IF NOT L_W_DATA-BSCHL_1 EQ C_31.
    L_FG_ERROR = C_X.
    EXIT.
    ENDIF.
    *check second posting key is '40'
    IF NOT L_W_DATA-BSCHL_2 EQ C_40.
    L_FG_ERROR = C_X.
    EXIT.
    ENDIF.
    *check valid Vendor
    SELECT SINGLE LIFNR FROM LFA1 INTO L_W_LIFNR
    WHERE LIFNR = L_W_DATA-HKONT_1.
    IF SY-SUBRC <> 0.
    L_FG_ERROR = C_X.
    EXIT.
    ENDIF.
    *check valid G/L account.
    SELECT SINGLE SAKNR FROM SKA1 INTO L_W_SAKNR
    WHERE KTOPL = C_O2CA AND
    SAKNR = L_W_DATA-HKONT_2.
    IF SY-SUBRC <> 0.
    L_FG_ERROR = C_X.
    EXIT.
    ENDIF.
    *check 1 item assignment contains numeric value
    IF NOT L_W_DATA-ZUONR_1 CO C_NUM.
    L_FG_ERROR = C_X.
    EXIT.
    ENDIF.
    *check 2 item assigment contains date value
    MOVE L_W_DATA-ZUONR_2 TO L_W_DATE.
    CALL FUNCTION 'DATE_CHECK_PLAUSIBILITY'
    EXPORTING
    DATE = L_W_DATE
    EXCEPTIONS
    PLAUSIBILITY_CHECK_FAILED = 1
    OTHERS = 2.
    IF SY-SUBRC <> 0.
    L_FG_ERROR = C_X.
    EXIT.
    ENDIF.
    *check if no error has occured
    IF NOT L_FG_ERROR EQ C_X.
    EXIT.
    ENDIF.
    ENDDO.
    *check error flag and insert error text.
    CASE L_FG_ERROR.
    WHEN C_X. "When error has occured.
    APPEND L_W_DATA TO P_T_ERROR.
    WHEN OTHERS. "When no error has occured.
    APPEND L_W_DATA TO P_T_DATA.
    ENDCASE.
    ENDFORM. " validate_data
    *& Form download_error_log
    * Sub routine to download the error log
    * -->P_T_ERROR error log
    FORM DOWNLOAD_ERROR_LOG TABLES P_T_ERROR STRUCTURE W_ERROR.
    DATA : L_FILENAME TYPE STRING,
    L_PATH TYPE STRING,
    L_FULLPATH TYPE STRING.
    CALL METHOD CL_GUI_FRONTEND_SERVICES=>FILE_SAVE_DIALOG
    EXPORTING
    WINDOW_TITLE = 'Save the Error log'
    CHANGING
    FILENAME = L_FILENAME
    PATH = L_PATH
    FULLPATH = L_FULLPATH
    EXCEPTIONS
    CNTL_ERROR = 1
    ERROR_NO_GUI = 2
    NOT_SUPPORTED_BY_GUI = 3
    OTHERS = 4.
    IF SY-SUBRC <> 0.
    MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
    WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
    ENDIF.
    CHECK L_FULLPATH IS NOT INITIAL.
    CALL FUNCTION 'GUI_DOWNLOAD'
    EXPORTING
    FILENAME = L_FULLPATH
    FILETYPE = 'ASC'
    WRITE_FIELD_SEPARATOR = 'X'
    TABLES
    DATA_TAB = P_T_ERROR
    EXCEPTIONS
    FILE_WRITE_ERROR = 1
    NO_BATCH = 2
    GUI_REFUSE_FILETRANSFER = 3
    INVALID_TYPE = 4
    NO_AUTHORITY = 5
    UNKNOWN_ERROR = 6
    HEADER_NOT_ALLOWED = 7
    SEPARATOR_NOT_ALLOWED = 8
    FILESIZE_NOT_ALLOWED = 9
    HEADER_TOO_LONG = 10
    DP_ERROR_CREATE = 11
    DP_ERROR_SEND = 12
    DP_ERROR_WRITE = 13
    UNKNOWN_DP_ERROR = 14
    ACCESS_DENIED = 15
    DP_OUT_OF_MEMORY = 16
    DISK_FULL = 17
    DP_TIMEOUT = 18
    FILE_NOT_FOUND = 19
    DATAPROVIDER_EXCEPTION = 20
    CONTROL_FLUSH_ERROR = 21
    OTHERS = 22.
    IF SY-SUBRC <> 0.
    MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
    WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
    ENDIF.
    ENDFORM. " download_error_log
    *& Form fill_bdc_table
    * bdc session is created in SM35
    * -->P_T_DATA correct data
    * -->P_T_BDCDATA bdcdata
    * -->P_P_SESSN session name
    FORM FILL_BDC_TABLE TABLES P_T_DATA STRUCTURE W_DATA
    P_T_BDCDATA STRUCTURE BDCDATA
    USING P_P_SESSN.
    DATA : L_W_DATA TYPE TY_DATA. "workarea for t_data
    CONSTANTS: C_EUR(3) TYPE C VALUE 'EUR'.
    *open batch
    PERFORM OPEN_GROUP USING P_P_SESSN.
    LOOP AT P_T_DATA INTO L_W_DATA.
    *clear the bdc table
    REFRESH P_T_BDCDATA.
    *initial screen
    PERFORM BDC_DYNPRO TABLES P_T_BDCDATA
    USING 'SAPMF05A' '0106'.
    PERFORM : BDC_FIELD TABLES P_T_BDCDATA USING 'BDC_CURSOR' 'BKPF-WAERS',
    BDC_FIELD TABLES P_T_BDCDATA USING 'BDC_OKCODE' '/00', "enter
    BDC_FIELD TABLES P_T_BDCDATA USING 'BKPF-BUKRS' L_W_DATA-BUKRS, "company code
    BDC_FIELD TABLES P_T_BDCDATA USING 'BKDF-DBBDT' L_W_DATA-DBBDT, "first run on
    BDC_FIELD TABLES P_T_BDCDATA USING 'BKDF-DBATR' L_W_DATA-DBATR, "next run on
    BDC_FIELD TABLES P_T_BDCDATA USING 'BKDF-DBEDT' L_W_DATA-DBEDT, "last run on
    BDC_FIELD TABLES P_T_BDCDATA USING 'BKDF-DBMON' L_W_DATA-DBMON, "run frequency
    BDC_FIELD TABLES P_T_BDCDATA USING 'BKDF-DBTAG' L_W_DATA-DBTAG, "run date
    BDC_FIELD TABLES P_T_BDCDATA USING 'BKPF-BLART' L_W_DATA-BLART, "document type
    BDC_FIELD TABLES P_T_BDCDATA USING 'BKPF-WAERS' C_EUR, "currency
    BDC_FIELD TABLES P_T_BDCDATA USING 'BKPF-XBLNR' L_W_DATA-XBLNR, "reference
    BDC_FIELD TABLES P_T_BDCDATA USING 'BKPF-BKTXT' L_W_DATA-BKTXT, "document header data
    BDC_FIELD TABLES P_T_BDCDATA USING 'RF05A-NEWBS' L_W_DATA-BSCHL_1,"posting key
    BDC_FIELD TABLES P_T_BDCDATA USING 'RF05A-NEWKO' L_W_DATA-HKONT_1."account no
    *second screen (First line item)
    PERFORM BDC_DYNPRO TABLES P_T_BDCDATA
    USING 'SAPMF05A' '0302'.
    PERFORM : BDC_FIELD TABLES P_T_BDCDATA USING 'BDC_CURSOR' 'RF05A-NEWKO',
    BDC_FIELD TABLES P_T_BDCDATA USING 'BDC_OKCODE' '/00', "enter
    BDC_FIELD TABLES P_T_BDCDATA USING 'BSEG-WRBTR' L_W_DATA-MWSTS2_1, "amount in LC
    BDC_FIELD TABLES P_T_BDCDATA USING 'BSEG-MWSKZ' L_W_DATA-MWSKZ_1, "tax code
    BDC_FIELD TABLES P_T_BDCDATA USING 'BSEG-ZUONR' L_W_DATA-ZUONR_1, "assignment
    BDC_FIELD TABLES P_T_BDCDATA USING 'BSEG-SGTXT' L_W_DATA-SGTXT_1, "item level text
    BDC_FIELD TABLES P_T_BDCDATA USING 'RF05A-NEWBS' L_W_DATA-BSCHL_2, "posting key
    BDC_FIELD TABLES P_T_BDCDATA USING 'RF05A-NEWKO' L_W_DATA-HKONT_2. "account no
    *third screen (Second line item)
    PERFORM BDC_DYNPRO TABLES P_T_BDCDATA
    USING 'SAPMF05A' '0300'.
    PERFORM : BDC_FIELD TABLES P_T_BDCDATA USING 'BDC_CURSOR' 'BSEG-EBELN',
    BDC_FIELD TABLES P_T_BDCDATA USING 'BDC_OKCODE' '=AB', "overview button
    BDC_FIELD TABLES P_T_BDCDATA USING 'BSEG-WRBTR' L_W_DATA-MWSTS2_2, "amount in LC
    BDC_FIELD TABLES P_T_BDCDATA USING 'BSEG-MWSKZ' L_W_DATA-MWSKZ_2, "tax code
    BDC_FIELD TABLES P_T_BDCDATA USING 'BSEG-ZUONR' L_W_DATA-ZUONR_2, "assigment
    BDC_FIELD TABLES P_T_BDCDATA USING 'BSEG-SGTXT' L_W_DATA-SGTXT_2. "item text
    *fourth screen (pop up)
    PERFORM BDC_DYNPRO TABLES P_T_BDCDATA
    USING 'SAPLKACB' '0002'.
    PERFORM : BDC_FIELD TABLES P_T_BDCDATA USING 'BDC_CURSOR' 'COBL-KOSTL',
    BDC_FIELD TABLES P_T_BDCDATA USING 'BDC_OKCODE' '=ENTE', "ok button
    BDC_FIELD TABLES P_T_BDCDATA USING 'COBL-KOSTL' L_W_DATA-KOSTL, "cost center
    BDC_FIELD TABLES P_T_BDCDATA USING 'COBL-AUFNR' L_W_DATA-AUFNR. "order number
    *fifth screen
    PERFORM BDC_FIELD TABLES P_T_BDCDATA
    USING 'SAPMF05A' '0070'.
    PERFORM : BDC_FIELD TABLES P_T_BDCDATA USING 'BDC_CURSOR' 'RF05A-NEWBS',
    BDC_FIELD TABLES P_T_BDCDATA USING 'BDC_OKCODE' '=BU'. "save document
    PERFORM BDC_INSERT TABLES P_T_BDCDATA
    USING 'ZREC_ENTRY'.
    ENDLOOP.
    *close the batch.
    PERFORM CLOSE_GROUP.
    ENDFORM. " fill_bdc_table
    *& Form bdc_dynpro
    * bdc screen insert sub routine
    * -->P_T_BDCDATA BDC table
    * -->P_PROGRAM Program name
    * -->P_SCREEN Screen no
    FORM BDC_DYNPRO TABLES P_T_BDCDATA STRUCTURE BDCDATA
    USING VALUE(P_PROGRAM)
    VALUE(P_SCREEN).
    CONSTANTS C_X TYPE C VALUE 'X'.
    DATA L_W_BDCDATA TYPE BDCDATA.
    L_W_BDCDATA-PROGRAM = P_PROGRAM.
    L_W_BDCDATA-DYNPRO = P_SCREEN.
    L_W_BDCDATA-DYNBEGIN = C_X.
    APPEND L_W_BDCDATA TO P_T_BDCDATA.
    ENDFORM. " bdc_dynpro
    *& Form bdc_field
    * bdc field screen routine
    * -->P_T_BDCDATA BDC table
    * -->P_FIELD Field name
    * -->P_VALUE Value
    FORM BDC_FIELD TABLES P_T_BDCDATA STRUCTURE BDCDATA
    USING VALUE(P_FIELD)
    VALUE(P_VALUE).
    DATA L_W_BDCDATA TYPE BDCDATA. "Work area
    L_W_BDCDATA-FNAM = P_FIELD.
    L_W_BDCDATA-FVAL = P_VALUE.
    APPEND L_W_BDCDATA TO P_T_BDCDATA.
    ENDFORM. " bdc_field
    *& Form open_group
    * bdc open group in sm35
    * -->P_P_SESSN session name
    FORM OPEN_GROUP USING P_P_SESSN.
    CONSTANTS C_X TYPE C VALUE 'X'.
    CALL FUNCTION 'BDC_OPEN_GROUP'
    EXPORTING
    CLIENT = SY-MANDT
    GROUP = P_P_SESSN
    KEEP = C_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. " open_group
    *& Form bdc_insert
    * bdc insert in sm35
    * -->P_T_BDCDATA bdcdata table
    * -->P_tcode transaction
    FORM BDC_INSERT TABLES P_T_BDCDATA STRUCTURE BDCDATA
    USING VALUE(P_TCODE).
    CALL FUNCTION 'BDC_INSERT'
    EXPORTING
    TCODE = P_TCODE
    TABLES
    DYNPROTAB = P_T_BDCDATA
    EXCEPTIONS
    INTERNAL_ERROR = 1
    NOT_OPEN = 2
    QUEUE_ERROR = 3
    TCODE_INVALID = 4
    PRINTING_INVALID = 5
    POSTING_INVALID = 6
    OTHERS = 7.
    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. " bdc_insert
    *& Form close_group
    * bdc close group in sm35
    FORM 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. " close_group
    *& Form pre_process_record
    * text
    * -->P_W_DATAIN text
    * <--P_W_DATA text
    FORM pre_process_record USING P_W_DATAIN
    CHANGING P_W_DATA structure w_data.
    move p_w_datain to p_w_data-bukrs.
    ENDFORM. " pre_process_record

  • F-02 BDC

    Hi Expert,
      Very Good Morning to All .
         i'm working on BDC Program for F-02  ( G/L Account Posting ) ,but its not able to run only when posting key is '25' apart from '25' posting key it works very fine .is there any one help me to solve this issue following is my current code ..
    REPORT zcfi_sal_f02
            NO STANDARD PAGE HEADING LINE-SIZE 255.
    TYPE-POOLS: truxs.
    DATA: BEGIN OF itab OCCURS 0,
             srno(10),
             bldat(12),
             blart(2),
             bukrs(4),
             budat(12),
             monat(4),
             waers(5),
             xblnr(30),
             bktxt(30),
             newbs(2),
             newko(12),
             wrbtr(18),
             kostl(12),
             prctr(10),
             zuonr(10),
             sgtxt(30),
           END OF itab,
           itab1 LIKE TABLE OF itab WITH HEADER LINE,
           cnt   TYPE i.
    *Data decleration for Error Message
    DATA: t_msg TYPE TABLE OF bdcmsgcoll,   " Collecting Error messages
           w_msg TYPE bdcmsgcoll,
           w_msg1(51).
    *Structure for error message
    TYPES : BEGIN OF ty_s_error,
               msg_err(300) TYPE c,
             END OF ty_s_error.
    DATA: it_output TYPE TABLE OF ty_s_error,
           wa_output LIKE LINE OF it_output,
           wa_error TYPE string.
    DATA : scrn_no LIKE bdcdata-dynpro.
    DATA : scrn_no1 LIKE bdcdata-dynpro.
    DATA : bdcdata LIKE bdcdata OCCURS 0 WITH HEADER LINE.
    DATA: fieldnmknam TYPE bdcdata-fnam.
    DATA : BEGIN OF itab_lfbw OCCURS 0,
    witht TYPE lfbw-witht,
    wt_withcd TYPE lfbw-wt_withcd,
    wt_subjct TYPE lfbw-wt_subjct,
    END OF itab_lfbw.
    DATA : i TYPE i.
    DATA : ven_ind.
    DATA : no_lines TYPE sy-tabix.
    DATA : gsber(4),xref1(20),xref2(20),xref3(20).
    DATA : bukrs(4).
    *DATA : filename TYPE string.
    *Selection Screen
    ***parameters : f_file like rlgrap-filename,
    ***             ctu_mode like ctu_params-dismode default 'A'.
    PARAMETERS : f_file LIKE rlgrap-filename,
    ***             e_file   TYPE rlgrap-filename OBLIGATORY,       " Error File Path
                  ctu_mode LIKE ctu_params-dismode DEFAULT 'A'.
    AT SELECTION-SCREEN ON VALUE-REQUEST FOR f_file.
       CALL FUNCTION 'F4_FILENAME'
    * EXPORTING
    * PROGRAM_NAME = 'ZMM02_BDC'
    * DYNPRO_NUMBER = SYST-DYNNR
    ** FIELD_NAME = ' '
       IMPORTING
       file_name = f_file.
    *START OF SELECTION
    START-OF-SELECTION.
       PERFORM upload_data.
       PERFORM bdc_execution.
    END-OF-SELECTION.
    * Uploading data file to internal table. *
    FORM upload_data.
       DATA : raw_data TYPE truxs_t_text_data.
       CALL FUNCTION 'TEXT_CONVERT_XLS_TO_SAP'
       EXPORTING
    * I_FIELD_SEPERATOR =
      i_line_header = 'X'
       i_tab_raw_data = raw_data
       i_filename = f_file
       TABLES
       i_tab_converted_data = itab[]
      EXCEPTIONS
      conversion_failed = 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.
       itab1[] = itab[].
       DELETE ADJACENT DUPLICATES FROM itab COMPARING srno.
    ENDFORM. "upload_data
    *&      Form  bdc_execution
    *       text
    FORM bdc_execution.
       LOOP AT itab.
         cnt = 1.
         PERFORM bdc_dynpro      USING 'SAPMF05A' '0100'.
         PERFORM bdc_field       USING 'BDC_CURSOR'
                                       'RF05A-NEWKO'.
         PERFORM bdc_field       USING 'BDC_OKCODE'
                                       '/00'.
         PERFORM bdc_field       USING 'BKPF-BLDAT'
                                       itab-bldat.                     "'02.03.2013'.
         PERFORM bdc_field       USING 'BKPF-BLART'
                                       itab-blart.                     "'SA'.
         PERFORM bdc_field       USING 'BKPF-BUKRS'
                                       itab-bukrs.               "'1000'.
         PERFORM bdc_field       USING 'BKPF-BUDAT'
                                       itab-budat.                     "'02.03.2013'.
         PERFORM bdc_field       USING 'BKPF-MONAT'
                                       itab-monat.               "'3'.
         PERFORM bdc_field       USING 'BKPF-WAERS'
                                       itab-waers.                     "'INR'.
         PERFORM bdc_field       USING 'BKPF-XBLNR'
                                       itab-xblnr.                     "'Salary_Test2'.
         PERFORM bdc_field       USING 'BKPF-BKTXT'
                                       itab-bktxt.                     "'Salary upload'.
         PERFORM bdc_field       USING 'FS006-DOCID'
         PERFORM bdc_field       USING 'RF05A-NEWBS'
                                       itab-newbs.               "'50'.
         PERFORM bdc_field       USING 'RF05A-NEWKO'
                                       itab-newko.                     "'15030019'.
         CASE itab-newbs.
           WHEN '50'.
             PERFORM bdc_dynpro      USING 'SAPMF05A' '0300'.
             PERFORM bdc_field       USING 'BDC_CURSOR'
                                           'BSEG-SGTXT'.
             PERFORM bdc_field       USING 'BDC_OKCODE'
                                           '/00'.
             PERFORM bdc_field       USING 'BSEG-WRBTR'
                                           itab-wrbtr.           "'100'.
             PERFORM bdc_field       USING 'BSEG-ZUONR'
                                           itab-zuonr.           "'1110'.
             PERFORM bdc_field       USING 'BSEG-SGTXT'
                                           itab-sgtxt.                     "'pf for the month jan-12'.
             PERFORM bdc_field       USING 'DKACB-FMORE'
                                           'X'.
             PERFORM bdc_dynpro      USING 'SAPLKACB' '0002'.
             PERFORM bdc_field       USING 'BDC_CURSOR'
                                           'COBL-PRCTR'.
             PERFORM bdc_field       USING 'BDC_OKCODE'
                                           '=ENTE'.
             PERFORM bdc_field       USING 'COBL-KOSTL'
                                           itab-kostl.                    ""'11000000'.
             PERFORM bdc_field       USING 'COBL-PRCTR'
                                           itab-prctr.           "'1110'.
             PERFORM bdc_dynpro      USING 'SAPMF05A' '0300'.
             PERFORM bdc_field       USING 'BDC_CURSOR'
                                           'BSEG-WRBTR'.
             PERFORM bdc_field       USING 'BDC_OKCODE'
                                           '=AB'.
             PERFORM bdc_dynpro      USING 'SAPLKACB' '0002'.
             PERFORM bdc_field       USING 'BDC_CURSOR'
                                           'COBL-PRCTR'.
             PERFORM bdc_field       USING 'BDC_OKCODE'
                                           '=ENTE'.
           WHEN '40'.
             PERFORM bdc_dynpro      USING 'SAPMF05A' '0300'.
             PERFORM bdc_field       USING 'BDC_CURSOR'
                                           'BSEG-SGTXT'.
             PERFORM bdc_field       USING 'BDC_OKCODE'
                                           '/00'.
             PERFORM bdc_field       USING 'BSEG-WRBTR'
                                           itab-wrbtr.           ""'100'.
             PERFORM bdc_field       USING 'BSEG-ZUONR'
                                           itab-zuonr.          ""'21 March'.
             PERFORM bdc_field       USING 'BSEG-SGTXT'
                                           itab-sgtxt.                    ""'21 March 2013'.
             PERFORM bdc_field       USING 'DKACB-FMORE'
                                           'X'.
             PERFORM bdc_dynpro      USING 'SAPLKACB' '0002'.
             PERFORM bdc_field       USING 'BDC_CURSOR'
                                           'COBL-KOSTL'.
             PERFORM bdc_field       USING 'BDC_OKCODE'
                                           '=ENTE'.
             PERFORM bdc_field       USING 'COBL-KOSTL'
                                           itab-kostl.                    ""'11000000'.
             PERFORM bdc_field       USING 'COBL-PRCTR'
                                           itab-prctr.           ""'1000'.
             PERFORM bdc_dynpro      USING 'SAPMF05A' '0300'.
             PERFORM bdc_field       USING 'BDC_CURSOR'
                                           'BSEG-WRBTR'.
             PERFORM bdc_field       USING 'BDC_OKCODE'
                                           '=AB'.
              PERFORM bdc_dynpro      USING 'SAPLKACB' '0002'.
             PERFORM bdc_field       USING 'BDC_CURSOR'
                                           'COBL-KOSTL'.
             PERFORM bdc_field       USING 'BDC_OKCODE'
                                           '=ENTE'.
           WHEN '25'.
              PERFORM bdc_dynpro      USING 'SAPMF05A' '0302'.
              PERFORM bdc_field       USING 'BDC_CURSOR'
                                            'RF05A-NEWKO'.
              PERFORM bdc_field       USING 'BDC_OKCODE'
                                           '/00'.
              PERFORM bdc_field       USING 'BSEG-WRBTR'
                                             itab-wrbtr.           ""'100'.
              PERFORM bdc_field       USING 'BSEG-ZUONR'
                                             itab-zuonr.          ""'21 March'.
              PERFORM bdc_field       USING 'BSEG-SGTXT'
                                             itab-sgtxt.                    ""'21 March 2013'.
              PERFORM bdc_field       USING 'RF05A-NEWBS'
                                             itab-NEWBS.
              PERFORM bdc_field       USING 'RF05A-NEWKO'
                                             itab-NEWKO.
              PERFORM bdc_field       USING 'DKACB-FMORE'
                                            'X'.
              PERFORM bdc_dynpro      USING 'SAPMF05A' '0002'.
              PERFORM bdc_field       USING 'BDC_CURSOR'
                                            '=ENTE'.
              PERFORM bdc_field       USING 'COBL-PRCTR'
                                           itab-prctr.           ""'1000'.
              PERFORM bdc_dynpro      USING 'SAPMF05A' '0302'.
             PERFORM bdc_field       USING 'BDC_CURSOR'
                                           'BSEG-WRBTR'.
             PERFORM bdc_field       USING 'BDC_OKCODE'
                                           '=AB'.
             PERFORM bdc_dynpro      USING 'SAPLKACB' '0002'.
             PERFORM bdc_field       USING 'BDC_CURSOR'
                                           'COBL-PRCTR'.
             PERFORM bdc_field       USING 'BDC_OKCODE'
                                           '=ENTE'.
         ENDCASE.
         LOOP AT itab1 WHERE srno = itab-srno.
           CASE cnt.
             WHEN '1'.
               CLEAR cnt.
             WHEN OTHERS.
               CASE itab1-newbs.
                 WHEN '50'.
                   PERFORM bdc_dynpro      USING 'SAPMF05A' '0700'.
                   PERFORM bdc_field       USING 'BDC_CURSOR'
                                                 'RF05A-NEWKO'.
                   PERFORM bdc_field       USING 'BDC_OKCODE'
                                                 '/00'.
                   PERFORM bdc_field       USING 'BKPF-XBLNR'
                                                 itab1-xblnr.                 "'SALARY_TEST2'.
                   PERFORM bdc_field       USING 'BKPF-BKTXT'
                                                 itab1-bktxt.                 "'Salary upload'.
                   PERFORM bdc_field       USING 'RF05A-NEWBS'
                                                 itab1-newbs.    "'50'.
                   PERFORM bdc_field       USING 'RF05A-NEWKO'
                                                 itab1-newko.                 "'15030021'.
                   PERFORM bdc_dynpro      USING 'SAPMF05A' '0300'.
                   PERFORM bdc_field       USING 'BDC_CURSOR'
                                                 'BSEG-SGTXT'.
                   PERFORM bdc_field       USING 'BDC_OKCODE'
                                                 '/00'.
                   PERFORM bdc_field       USING 'BSEG-WRBTR'
                                                 itab1-wrbtr.    "'100'.
                   PERFORM bdc_field       USING 'BSEG-ZUONR'
                                                 itab1-zuonr.    "'1110'.
                   PERFORM bdc_field       USING 'BSEG-SGTXT'
                                                 itab1-sgtxt.                  "'pf for the month jan-12'.
                   PERFORM bdc_field       USING 'DKACB-FMORE'
                                                 'X'.
                   PERFORM bdc_dynpro      USING 'SAPLKACB' '0002'.
                   PERFORM bdc_field       USING 'BDC_CURSOR'
                                                 'COBL-PRCTR'.
                   PERFORM bdc_field       USING 'BDC_OKCODE'
                                                 '=ENTE'.
                   PERFORM bdc_field       USING 'COBL-KOSTL'
                                                 itab1-kostl.                    ""'11000000'.
                   PERFORM bdc_field       USING 'COBL-PRCTR'
                                                 itab1-prctr.    "'1110'.
                   PERFORM bdc_dynpro      USING 'SAPMF05A' '0300'.
                   PERFORM bdc_field       USING 'BDC_CURSOR'
                                                 'BSEG-WRBTR'.
                   PERFORM bdc_field       USING 'BDC_OKCODE'
                                                 '=AB'.
                   PERFORM bdc_dynpro      USING 'SAPLKACB' '0002'.
                   PERFORM bdc_field       USING 'BDC_CURSOR'
                                                 'COBL-PRCTR'.
                   PERFORM bdc_field       USING 'BDC_OKCODE'
                                                 '=ENTE'.
                 WHEN '40'.
                   PERFORM bdc_dynpro      USING 'SAPMF05A' '0700'.
                   PERFORM bdc_field       USING 'BDC_CURSOR'
                                                 'RF05A-NEWKO'.
                   PERFORM bdc_field       USING 'BDC_OKCODE'
                                                 '/00'.
                   PERFORM bdc_field       USING 'BKPF-XBLNR'
                                                 itab1-xblnr.                    ""'REF TEXT'.
                   PERFORM bdc_field       USING 'BKPF-BKTXT'
                                                 itab1-bktxt.                    ""'DOC HEAD TEXT'.
                   PERFORM bdc_field       USING 'RF05A-NEWBS'
                                                 itab1-newbs.    ""'40'.
                   PERFORM bdc_field       USING 'RF05A-NEWKO'
                                                 itab1-newko.                    ""'42010010'.
                   PERFORM bdc_dynpro      USING 'SAPMF05A' '0300'.
                   PERFORM bdc_field       USING 'BDC_CURSOR'
                                                 'BSEG-SGTXT'.
                   PERFORM bdc_field       USING 'BDC_OKCODE'
                                                 '/00'.
                   PERFORM bdc_field       USING 'BSEG-WRBTR'
                                                 itab1-wrbtr.    ""'123'.
                   PERFORM bdc_field       USING 'BSEG-ZUONR'
                                                 itab1-zuonr.    ""'1000'.
                   PERFORM bdc_field       USING 'BSEG-SGTXT'
                                                 itab1-sgtxt.                    ""'SALARY TEXT'.
                   PERFORM bdc_field       USING 'DKACB-FMORE'
                                                 'X'.
                   PERFORM bdc_dynpro      USING 'SAPLKACB' '0002'.
                   PERFORM bdc_field       USING 'BDC_CURSOR'
                                                 'COBL-PRCTR'.
                   PERFORM bdc_field       USING 'BDC_OKCODE'
                                                 '=ENTE'.
                   PERFORM bdc_field       USING 'COBL-KOSTL'
                                                 itab1-kostl.                    ""'11000260'.
                   PERFORM bdc_field       USING 'COBL-PRCTR'
                                                 itab1-prctr.    ""'1000'.
                   PERFORM bdc_dynpro      USING 'SAPMF05A' '0300'.
                   PERFORM bdc_field       USING 'BDC_CURSOR'
                                                 'BSEG-WRBTR'.
                   PERFORM bdc_field       USING 'BDC_OKCODE'
                                                 '=AB'.
                   PERFORM bdc_dynpro      USING 'SAPLKACB' '0002'.
                   PERFORM bdc_field       USING 'BDC_CURSOR'
                                                 'COBL-KOSTL'.
                   PERFORM bdc_field       USING 'BDC_OKCODE'
                                                 '=ENTE'.
                 WHEN '34'.
                   PERFORM bdc_dynpro      USING 'SAPMF05A' '0700'.
                   PERFORM bdc_field       USING 'BDC_CURSOR'
                                                 'RF05A-NEWKO'.
                   PERFORM bdc_field       USING 'BDC_OKCODE'
                                                 '/00'.
                   PERFORM bdc_field       USING 'BKPF-XBLNR'
                                                 itab1-xblnr.                 "'SALARY_TEST2'.
                   PERFORM bdc_field       USING 'BKPF-BKTXT'
                                                 itab1-bktxt.                 "'DOC HEAD TEXT'.
                   PERFORM bdc_field       USING 'RF05A-NEWBS'
                                                 itab1-newbs.    "'34'.
                   PERFORM bdc_field       USING 'RF05A-NEWKO'
                                                 itab1-newko.    "'EMP1266'.
                   PERFORM bdc_dynpro      USING 'SAPMF05A' '0302'.
                   PERFORM bdc_field       USING 'BDC_CURSOR'
                                                 'BSEG-SGTXT'.
                   PERFORM bdc_field       USING 'BDC_OKCODE'
                                                 '/00'.
                   PERFORM bdc_field       USING 'BSEG-WRBTR'
                                                 itab1-wrbtr.    "'50'.
                   PERFORM bdc_field       USING 'BSEG-ZUONR'
                                                 itab1-zuonr.    "'1110'.
                   PERFORM bdc_field       USING 'BSEG-SGTXT'
                                                 itab1-sgtxt.                  "'aaa'.
                   PERFORM bdc_dynpro      USING 'SAPMF05A' '0302'.
                   PERFORM bdc_field       USING 'BDC_CURSOR'
                                                 'BSEG-WRBTR'.
                   PERFORM bdc_field       USING 'BDC_OKCODE'
                                                 '=AB'.
                 WHEN '35'.
                   PERFORM bdc_dynpro      USING 'SAPMF05A' '0700'.
                   PERFORM bdc_field       USING 'BDC_CURSOR'
                                                 'RF05A-NEWKO'.
                   PERFORM bdc_field       USING 'BDC_OKCODE'
                                                 '/00'.
                   PERFORM bdc_field       USING 'BKPF-XBLNR'
                                                 itab1-xblnr.                 "'SALARY_TEST2'.
                   PERFORM bdc_field       USING 'BKPF-BKTXT'
                                                 itab1-bktxt.                 "'Salary upload'.
                   PERFORM bdc_field       USING 'RF05A-NEWBS'
                                                 itab1-newbs.    "'35'.
                   PERFORM bdc_field       USING 'RF05A-NEWKO'
                                                 itab1-newko.    "'EMP1266'.
                   PERFORM bdc_dynpro      USING 'SAPMF05A' '0302'.
                   PERFORM bdc_field       USING 'BDC_CURSOR'
                                                 'BSEG-SGTXT'.
                   PERFORM bdc_field       USING 'BDC_OKCODE'
                                                 '/00'.
                   PERFORM bdc_field       USING 'BSEG-WRBTR'
                                                 itab1-wrbtr.    "'1000'.
                   PERFORM bdc_field       USING 'BSEG-ZUONR'
                                                 itab1-zuonr.    "'1110'.
                   PERFORM bdc_field       USING 'BSEG-SGTXT'
                                                 itab1-sgtxt.                  "'Advance recovered2'.
                   PERFORM bdc_dynpro      USING 'SAPMF05A' '0302'.
                   PERFORM bdc_field       USING 'BDC_CURSOR'
                                                 'BSEG-WRBTR'.
                   PERFORM bdc_field       USING 'BDC_OKCODE'
                                                 '=AB'.
                 WHEN '25'.
                   PERFORM bdc_dynpro      USING 'SAPMF05A' '0700'.
                   PERFORM bdc_field       USING 'BDC_CURSOR'
                                                 'RF05A-NEWKO'.
                   PERFORM bdc_field       USING 'BDC_OKCODE'
                                                 '/00'.
                   PERFORM bdc_field       USING 'BKPF-XBLNR'
                                                 itab1-xblnr.                 "'SALARY_TEST2'.
                   PERFORM bdc_field       USING 'BKPF-BKTXT'
                                                 itab1-bktxt.                 "'Salary upload'.
                   PERFORM bdc_field       USING 'RF05A-NEWBS'
                                                 itab1-newbs.    "'25'.
                   PERFORM bdc_field       USING 'RF05A-NEWKO'
                                                 itab1-newko.    "'EMP1266'.
                   PERFORM bdc_dynpro      USING 'SAPMF05A' '0302'.
                   PERFORM bdc_field       USING 'BDC_CURSOR'
                                                 'BSEG-SGTXT'.
                   PERFORM bdc_field       USING 'BDC_OKCODE'
                                                 '/00'.
                   PERFORM bdc_field       USING 'BSEG-WRBTR'
                                                 itab1-wrbtr.    "'1000'.
                   PERFORM bdc_field       USING 'BSEG-ZUONR'
                                                 itab1-zuonr.    "'1110'.
                   PERFORM bdc_field       USING 'BSEG-SGTXT'
                                                 itab1-sgtxt.                  "'Advance recovered11'.
                   PERFORM bdc_dynpro      USING 'SAPMF05A' '0302'.
                   PERFORM bdc_field       USING 'BDC_CURSOR'
                                                 'BSEG-WRBTR'.
                   PERFORM bdc_field       USING 'BDC_OKCODE'
                                                 '=AB'. 
                 WHEN '24'.
                   PERFORM bdc_dynpro      USING 'SAPMF05A' '0700'.
                   PERFORM bdc_field       USING 'BDC_CURSOR'
                                                 'RF05A-NEWKO'.
                   PERFORM bdc_field       USING 'BDC_OKCODE'
                                                 '/00'.
                   PERFORM bdc_field       USING 'BKPF-XBLNR'
                                                 itab1-xblnr.                 "'SALARY_TEST2'.
                   PERFORM bdc_field       USING 'BKPF-BKTXT'
                                                 itab1-bktxt.                 "'Salary upload'.
                   PERFORM bdc_field       USING 'RF05A-NEWBS'
                                                 itab1-newbs.    "'24'.
                   PERFORM bdc_field       USING 'RF05A-NEWKO'
                                                 itab1-newko.    "'600003'.
                   PERFORM bdc_dynpro      USING 'SAPMF05A' '0302'.
                   PERFORM bdc_field       USING 'BDC_CURSOR'
                                                 'BSEG-SGTXT'.
                   PERFORM bdc_field       USING 'BDC_OKCODE'
                                                 '/00'.
                   PERFORM bdc_field       USING 'BSEG-WRBTR'
                                                 itab1-wrbtr.    "'60'.
                   PERFORM bdc_field       USING 'BSEG-ZUONR'
                                                 itab1-zuonr.    "'1110'.
                   PERFORM bdc_field       USING 'BSEG-SGTXT'
                                                 itab1-sgtxt.                  "' WEST_CGF_Direct /salary exp/jan-12'.
                   PERFORM bdc_dynpro      USING 'SAPMF05A' '0302'.
                   PERFORM bdc_field       USING 'BDC_CURSOR'
                                                 'BSEG-WRBTR'.
                   PERFORM bdc_field       USING 'BDC_OKCODE'
                                                 '=AB'.
               ENDCASE.
           ENDCASE.
         ENDLOOP.
         PERFORM bdc_dynpro      USING 'SAPMF05A' '0700'.
         PERFORM bdc_field       USING 'BDC_CURSOR'
                                       'RF05A-NEWBS'.
         PERFORM bdc_field       USING 'BDC_OKCODE'
                                       '=BU'.
         CALL TRANSACTION 'F-02' USING bdcdata
         MODE ctu_mode
         UPDATE 'S'
         MESSAGES INTO t_msg.
         REFRESH: bdcdata, t_msg.
         CLEAR: bdcdata, t_msg, w_msg.
         CLEAR: itab, itab1.
       ENDLOOP.
    ENDFORM .                    "bdc_execution
    *&      Form  bdc_dynpro
    *       text
    *      -->PROGRAM    text
    *      -->DYNPRO     text
    FORM bdc_dynpro USING program dynpro.
       CLEAR bdcdata.
       bdcdata-program = program.
       bdcdata-dynpro = dynpro.
       bdcdata-dynbegin = 'X'.
       APPEND bdcdata.
    ENDFORM. "BDC_DYNPRO
    * Insert field *
    FORM bdc_field USING fnam fval.
       CLEAR bdcdata.
       IF fval <> space.
         bdcdata-fnam = fnam.
         bdcdata-fval = fval.
         APPEND bdcdata.
       ENDIF.
    ENDFORM. "BDC_FIELD

    If you really don't want to use a BAPI (whatever your actual reasons) you could let Sap do it for you and do not worry about the screen numbers and sequence.
    Look at scn for following FM :
    POSTING_INTERFACE_START
    POSTING_INTERFACE_DOCUMENT
    POSTING_INTERFACE_END
    Also note that F-02 is FB01 in  disguise (with SA / 40 default values on first screen)
    Regards,
    Raymond

  • Problem in bdc PROG

    Dear All,
                Iam facing the problem in BDC Program..the code is..
    LOOP AT IT_RECORD.
    perform bdc_dynpro      using 'SAPMF05A' '0300'.
    perform bdc_field       using 'BDC_CURSOR'  'RF05A-NEWKO'.
    perform bdc_field       using 'BDC_OKCODE'  '/00'.
    perform bdc_field       using 'BSEG-WRBTR'                IT_RECORD-vramt.  "'100000'.
    perform bdc_field       using 'RF05A-NEWBS'                          it_record-pkey.  "'50'.
    perform bdc_field       using 'RF05A-NEWKO'                          it_Record-vrac.  "'24450024'.
    perform bdc_field       using 'DKACB-FMORE'                          'X'.
    perform bdc_dynpro      using 'SAPLKACB' '0002'.
    perform bdc_field       using 'BDC_CURSOR'  'COBL-GSBER'.
    perform bdc_field       using 'BDC_OKCODE'  '=ENTE'.
    perform bdc_field       using 'COBL-GSBER'                            it_record-gsber.  "'KABA' .
    COUNT = COUNT + 1.
    WRITE:/ COUNT.
    IF COUNT = 4.
      perform bdc_dynpro      using 'SAPMF05A' '0302'.
      perform bdc_field       using 'BDC_CURSOR'
                                    'BSEG-GSBER'.
      perform bdc_field       using 'BDC_OKCODE'
                                    '/00'.
      perform bdc_field       using 'BSEG-WRBTR'                        IT_RECORD-VRAMT.   "'50000'.
      perform bdc_field       using 'BSEG-MWSKZ'                           '**'.
      perform bdc_field       using 'BSEG-GSBER'                        IT_RECORD-GSBER ."'kaba'.
      perform bdc_field       using 'BSEG-ZFBDT'                           '03.12.2007'.
      perform bdc_dynpro      using 'SAPMF05A' '0302'.
      perform bdc_field       using 'BDC_CURSOR'
                                    'BSEG-WRBTR'.
      perform bdc_field       using 'BDC_OKCODE'
                                    '=BS'.
      perform bdc_field       using 'BSEG-WRBTR'                          IT_RECORD-VRAMT. "'50,000.00'.
      perform bdc_field       using 'BSEG-MWSKZ'
      perform bdc_field       using 'BSEG-BUPLA'                            '1800'.
      perform bdc_field       using 'BSEG-GSBER'                            IT_RECORD-GSBER."'KABA'.
      perform bdc_field       using 'BSEG-ZFBDT'                            '03.12.2007'.
      perform bdc_dynpro      using 'SAPMF05A' '0700'.
      perform bdc_field       using 'BDC_CURSOR'
                                    'RF05A-NEWBS'.
      perform bdc_field       using 'BDC_OKCODE'
                                    '=BU'.
      CALL TRANSACTION 'F-02' USING BDCDATA MODE 'A'.
    ELSE.
      CONTINUE.
    ENDIF.
    ENDLOOP.
    here iam using 4 line item(in text file) ..if count = 4 its not going to next screen, its repeating..its not simulating and posting the doc..
    pls guide me friends.

    hi i send the code here, if u can understand clear it..
    report ZBDC_FI_MVF_02 no standard page heading line-size 255.
    DATA : BEGIN OF IT_RECORDS OCCURS 0,
           BLDAT LIKE BKPF-BLDAT,
           BLART LIKE BKPF-BLART,
           BUKRS LIKE BKPF-BUKRS,
           BUDAT LIKE BKPF-BUDAT,
           MONAT LIKE BKPF-MONAT,
           WAERS LIKE BKPF-WAERS,
           NEWBS LIKE RF05A-NEWBS,
           NEWKO LIKE RF05A-NEWKO,
           END OF IT_RECORDS.
    DATA : BEGIN OF IT_RECORD OCCURS 0,
           VRAMT(15),  " LIKE BSEG-WRBTR,
           PKEY  LIKE RF05A-NEWBS,
           VrAC(10),  " LIKE RF05A-NEWKO,
           GSBER LIKE COBL-GSBER,
           END OF IT_RECORD.
    DATA : BDCDATA LIKE BDCDATA OCCURS 0 WITH HEADER LINE,
           DATE1 LIKE SY-DATUM,
           DATE2 LIKE SY-DATUM,
           LOOP(3).
           DATA : COUNT(3).
    start-of-selection.
      PERFORM GET_DATA1.
      PERFORM GET_DATA2.
      PERFORM PROCESS_DATA.
    FORM PROCESS_DATA.
    perform bdc_dynpro      using 'SAPMF05A' '0100'.
    perform bdc_field       using 'BDC_CURSOR'
                                  'RF05A-NEWKO'.
    perform bdc_field       using 'BDC_OKCODE'
                                  '/00'.
        date1 = it_RecordS-bldat.
        CONCATENATE DATE16(2) DATE14(2) DATE1+0(4) INTO DATE1.
    perform bdc_field       using 'BKPF-BLDAT'               DATE1.  "'03.12.2007'.
    perform bdc_field       using 'BKPF-BLART'               IT_RECORDS-BLART.  "'SA'.
    perform bdc_field       using 'BKPF-BUKRS'               IT_RECORDS-BUKRS.  "'1800'.
        date2 = it_RecordS-bUdat.
        CONCATENATE DATE26(2) DATE24(2) DATE2+0(4) INTO DATE2.
    perform bdc_field       using 'BKPF-BUDAT'               DATE2.  "'03.12.2007'.
    perform bdc_field       using 'BKPF-MONAT'               IT_RECORDS-MONAT.  "'9'.
    perform bdc_field       using 'BKPF-WAERS'               IT_RECORDS-WAERS.  "'INR'.
    perform bdc_field       using 'FS006-DOCID'              '*'.
    perform bdc_field       using 'RF05A-NEWBS'               IT_RECORDS-NEWBS.  "'40'.
    perform bdc_field       using 'RF05A-NEWKO'               IT_RECORDS-NEWKO.  "'24450024'.
    *perform bdc_field       using 'RF05A-NEWBS'               IT_RECORDS-PKEY.  "'50'.
    *perform bdc_field       using 'RF05A-NEWKO'               IT_RECORDS-VENAC.  "'24450024'.
    *perform bdc_field       using 'DKACB-FMORE'  'X'.
    COUNT = '0'.
    LOOP AT IT_RECORD.
    perform bdc_dynpro      using 'SAPMF05A' '0300'.
    perform bdc_field       using 'BDC_CURSOR'  'RF05A-NEWKO'.
    perform bdc_field       using 'BDC_OKCODE'  '/00'.
    perform bdc_field       using 'BSEG-WRBTR'                IT_RECORD-vramt.  "'100000'.
    perform bdc_field       using 'RF05A-NEWBS'                          it_record-pkey.  "'50'.
    perform bdc_field       using 'RF05A-NEWKO'                          it_Record-vrac.  "'24450024'.
    perform bdc_field       using 'DKACB-FMORE'                          'X'.
    perform bdc_dynpro      using 'SAPLKACB' '0002'.
    perform bdc_field       using 'BDC_CURSOR'  'COBL-GSBER'.
    perform bdc_field       using 'BDC_OKCODE'  '=ENTE'.
    perform bdc_field       using 'COBL-GSBER'                            it_record-gsber.  "'KABA' .
    COUNT = COUNT + 1.
    IF COUNT = 4.
    clear count.
      perform bdc_dynpro      using 'SAPMF05A' '0302'.
      perform bdc_field       using 'BDC_CURSOR'
                                    'BSEG-GSBER'.
      perform bdc_field       using 'BDC_OKCODE'
                                    '/00'.
      perform bdc_field       using 'BSEG-WRBTR'                        IT_RECORD-VRAMT.   "'50000'.
      perform bdc_field       using 'BSEG-MWSKZ'                           '**'.
      perform bdc_field       using 'BSEG-GSBER'                        IT_RECORD-GSBER ."'kaba'.
      perform bdc_field       using 'BSEG-ZFBDT'                           '03.12.2007'.
      perform bdc_dynpro      using 'SAPMF05A' '0302'.
      perform bdc_field       using 'BDC_CURSOR'
                                    'BSEG-WRBTR'.
      perform bdc_field       using 'BDC_OKCODE'
                                    '=BS'.
      perform bdc_field       using 'BSEG-WRBTR'                          IT_RECORD-VRAMT. "'50,000.00'.
      perform bdc_field       using 'BSEG-MWSKZ'
      perform bdc_field       using 'BSEG-BUPLA'                            '1800'.
      perform bdc_field       using 'BSEG-GSBER'                            IT_RECORD-GSBER."'KABA'.
      perform bdc_field       using 'BSEG-ZFBDT'                            '03.12.2007'.
      perform bdc_dynpro      using 'SAPMF05A' '0700'.
      perform bdc_field       using 'BDC_CURSOR'
                                    'RF05A-NEWBS'.
      perform bdc_field       using 'BDC_OKCODE'
                                    '=BU'.
      CALL TRANSACTION 'F-02' USING BDCDATA MODE 'A'.
    ELSE.
      CONTINUE.
    ENDIF.
    ENDLOOP.
    perform bdc_dynpro      using 'SAPMF05A' '0302'.
    perform bdc_field       using 'BDC_CURSOR'
                                   'BSEG-GSBER'.
    perform bdc_field       using 'BDC_OKCODE'
                                   '/00'.
    perform bdc_field       using 'BSEG-WRBTR'                '50000'.
    perform bdc_field       using 'BSEG-MWSKZ'                '**'.
    perform bdc_field       using 'BSEG-GSBER'                'kaba'.
    perform bdc_field       using 'BSEG-ZFBDT'                '03.12.2007'.
    perform bdc_dynpro      using 'SAPMF05A' '0302'.
    perform bdc_field       using 'BDC_CURSOR'
                                   'BSEG-WRBTR'.
    perform bdc_field       using 'BDC_OKCODE'
                                   '=BS'.
    perform bdc_field       using 'BSEG-WRBTR'                IT_RECORD-VRAMT.  "'50,000.00'.
    perform bdc_field       using 'BSEG-MWSKZ'                '**'.
    perform bdc_field       using 'BSEG-BUPLA'                '1800'.
    perform bdc_field       using 'BSEG-GSBER'                IT_RECORD-GSBER.  "'KABA'.
    perform bdc_field       using 'BSEG-ZFBDT'                '03.12.2007'.
    perform bdc_dynpro      using 'SAPMF05A' '0700'.
    perform bdc_field       using 'BDC_CURSOR'
                                   'RF05A-NEWBS'.
    perform bdc_field       using 'BDC_OKCODE'
                                   '=BU'.
    perform bdc_transaction using 'F-02'.
    *CALL TRANSACTION 'F-02' USING BDCDATA MODE 'A'.
      ENDFORM.
           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  GET_DATA
    form GET_DATA1 .
      CALL FUNCTION 'UPLOAD'
       EXPORTING
         FILENAME                      = 'C:\MVF-02_1.txt'
         FILETYPE                      = 'DAT'
        TABLES
         data_tab                      = IT_RECORDS
       EXCEPTIONS
         CONVERSION_ERROR              = 1
         INVALID_TABLE_WIDTH           = 2
         INVALID_TYPE                  = 3
         NO_BATCH                      = 4
         UNKNOWN_ERROR                 = 5
         GUI_REFUSE_FILETRANSFER       = 6
         OTHERS                        = 7.
      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.                    " GET_DATA
    *&      Form  GET_DATA2
    form GET_DATA2 .
      CALL FUNCTION 'UPLOAD'
       EXPORTING
         FILENAME                      = 'C:\MVF-02_2.TXT'
         FILETYPE                      = 'DAT'
        TABLES
         data_tab                      = IT_RECORD
       EXCEPTIONS
         CONVERSION_ERROR              = 1
         INVALID_TABLE_WIDTH           = 2
         INVALID_TYPE                  = 3
         NO_BATCH                      = 4
         UNKNOWN_ERROR                 = 5
         GUI_REFUSE_FILETRANSFER       = 6
         OTHERS                        = 7
      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.                    " GET_DATA2

  • Problem in BDC: Not Picking the second entry of file

    Dear Friends,
    I have been working on a BDC and have been facing a problem. This code uploads the first entry of my file properly but repeats the same entry again second time, doesn't refresh or take the second entry of the file.
    Please have a look at the code & suggest the necessary corrections.
    Regards,
    Alok.
    report ZFBPS_BDC
           no standard page heading line-size 255.
    data: bdcdata1 like bdcdata occurs 0 with header line.
    data : vf_index type i.
    *include bdcrecx1.
    DATA: BEGIN OF ENTRIES OCCURS 0,
            RECNO(5),
            NEWBS(2),
            NEWKO(17),
            NEWNUM(1),
            WRBTR(13),
            GSBER(4),
            KOSTL(10),
            SECCO(4),
            ZFBDT(8),
            zuonr(18),
            SGTXT(50),
            FMORE(1),
            HKONT(10),
            PRCTR(10),
            AUFNR(3),
            MWSKZ(2),
            XBLNR(16),
            BKTXT(25),
    END OF ENTRIES.
    DATA: TEMP(8),
          DOCDATE(8),
          SPLGL(1),
          PKEY(2),
          GL(17),
          VCHAMT(13),
          BUSAREA(4),
          SECCODE(4),
          FBDT(8),
          zzuonr(18),
          COSTCEN(10),
          AUFNR(3),
          SGTXT(50).
    data : vf_start_col type i value '1',      "start column
           vf_start_row type i value '1',      "start row
           vf_end_col   type i value '256',    "maximum column
           vf_end_row   type i value '65536',  "maximum row
           p_text(20).                         "stores error messages
    Internal Table
    data : it_excel type  kcde_cells occurs 0 with header line.
    */ Field symbol
    field-symbols : <fs>.
    parameters: p_file   LIKE rlgrap-filename MEMORY ID M01,
                NOHEADER AS CHECKBOX.
    parameters: COMPANY(4) TYPE C DEFAULT 'SCL',
                GROUP(12) TYPE C DEFAULT 'BDCTEST',
                USER(12) TYPE C DEFAULT SY-UNAME,
                KEEP(1) TYPE C DEFAULT 'X',
                POSTDATE LIKE SY-DATUM DEFAULT SY-DATUM,
                DOC_TYPE(2) TYPE C DEFAULT 'KR',
                HOLDDATE LIKE SY-DATUM.
    ***********************************************upload data from excel
    CALL FUNCTION 'KCD_EXCEL_OLE_TO_INT_CONVERT'
      EXPORTING
        filename                      = p_file
        i_begin_col                   = VF_START_COL
        i_begin_row                   = VF_START_ROW
        i_end_col                     = VF_END_COL
        i_end_row                     = VF_END_ROW
      tables
        intern                        = IT_EXCEL
    EXCEPTIONS
       INCONSISTENT_PARAMETERS       = 1
       UPLOAD_OLE                    = 2
       OTHERS                        = 3 .
    IF sy-subrc <> 0.
              WRITE: / 'EXCEL UPLOAD FAILED :', p_file, SY-SUBRC.
    else.
      sort it_excel by row col.
          loop at it_excel.
         IF NOHEADER = 'X'
        AND It_EXCEL-row = 1.
          CONTINUE.
        ENDIF.
         vf_index = it_excel-col.
       assign component vf_index of structure ENTRIES to <fs>.
            move  it_excel-value to <fs>.
          at end of row.
            append ENTRIES.
            clear ENTRIES.
          endat.
          endloop.
      endif.
    start-of-selection.
    LOOP AT ENTRIES.
      WRITE: /  ENTRIES-RECNO,
                ENTRIES-NEWBS,
                ENTRIES-NEWKO,
                ENTRIES-NEWNUM,
                ENTRIES-WRBTR,
                ENTRIES-GSBER,
                ENTRIES-SECCO,
                ENTRIES-ZFBDT,
                ENTRIES-ZUONR,
                ENTRIES-SGTXT.
    ENDLOOP.
    WRITE: / 'THIS IS THE BDC PROGRAM FOR SAMTEL'.
    perform bdc_dynpro      using 'SAPMF05A' '0100'.
    perform bdc_field       using 'BDC_OKCODE' '/00'.
    PERFORM BDC_FIELD       USING 'BDC_CURSOR' 'RF05A-NEWKO'.
    TEMP = POSTDATE.
    DOCDATE = TEMP+6(2).
    DOCDATE2(2) = TEMP4(2).
    DOCDATE4(4) = TEMP0(4).
    *PERFORM BDC_FIELD USING 'BKPF-BLDAT' DOCDATE.
    *PERFORM BDC_FIELD USING 'BKPF-BLART' DOC_TYPE.
    *PERFORM BDC_FIELD USING 'BKPF-BUKRS' COMPANY.
    *PERFORM BDC_FIELD USING 'BKPF-WAERS' 'INR'.
    *PERFORM BDC_FIELD USING 'BKPF-BUDAT' DOCDATE.
    *PERFORM BDC_FIELD USING 'BKPF-XBLNR' 'Deepak'.
    *PERFORM BDC_FIELD USING 'BKPF-BKTXT' 'Sahib'.
    LOOP AT ENTRIES.
    REFRESH BDCDATA1.
    perform bdc_dynpro      using 'SAPMF05A' '0100'.
    perform bdc_field       using 'BDC_CURSOR'
                                  'RF05A-NEWKO'.
    perform bdc_field       using 'BDC_OKCODE'
                                  '/00'.
    PERFORM BDC_FIELD USING 'BKPF-BLDAT' DOCDATE.
    PERFORM BDC_FIELD USING 'BKPF-BLART' DOC_TYPE.
    PERFORM BDC_FIELD USING 'BKPF-BUKRS' COMPANY.
    PERFORM BDC_FIELD USING 'BKPF-WAERS' 'INR'.
    PERFORM BDC_FIELD USING 'BKPF-BUDAT' DOCDATE.
    PERFORM BDC_FIELD USING 'BKPF-XBLNR' 'Deepak'.
    PERFORM BDC_FIELD USING 'BKPF-BKTXT' 'Sahib'.
    perform bdc_field       using 'RF05A-NEWBS'
                                  ENTRIES-NEWBS.
    perform bdc_field       using 'RF05A-NEWKO'
                                  ENTRIES-NEWKO.
    perform bdc_dynpro      using 'SAPMF05A' '0300'.
    perform bdc_field       using 'BDC_CURSOR'
                                  'BSEG-SGTXT'.
    perform bdc_field       using 'BDC_OKCODE'
                                  '/00'.
    perform bdc_field       using 'BSEG-WRBTR'
                                  ENTRIES-WRBTR.
    perform bdc_field       using 'BSEG-ZUONR'
                                  ENTRIES-ZUONR.
    perform bdc_field       using 'BSEG-SGTXT'
                                  ENTRIES-SGTXT.
    perform bdc_field       using 'DKACB-FMORE'
                                  ENTRIES-FMORE.
    perform bdc_dynpro      using 'SAPLKACB' '0002'.
    perform bdc_field       using 'BDC_CURSOR'
                                  'COBL-KOSTL'.
    perform bdc_field       using 'BDC_OKCODE'
                                  '=ENTE'.
    perform bdc_field       using 'COBL-GSBER'
                                  ENTRIES-GSBER.
    perform bdc_field       using 'COBL-KOSTL'
                                  ENTRIES-KOSTL.
    perform bdc_dynpro      using 'SAPMF05A' '0300'.
    perform bdc_field       using 'BDC_CURSOR'
                                  'RF05A-NEWKO'.
    perform bdc_field       using 'BDC_OKCODE'
                                  '/00'.
    perform bdc_field       using 'BSEG-WRBTR'
                                  ENTRIES-WRBTR.
    perform bdc_field       using 'BSEG-ZUONR'
                                  ENTRIES-ZUONR.
    perform bdc_field       using 'BSEG-SGTXT'
                                  ENTRIES-SGTXT.
    perform bdc_field       using 'RF05A-NEWBS'
                                  ENTRIES-NEWBS.
    perform bdc_field       using 'RF05A-NEWKO'
                                  ENTRIES-NEWKO.
    perform bdc_field       using 'DKACB-FMORE'
                                  ENTRIES-FMORE.
    perform bdc_dynpro      using 'SAPLKACB' '0002'.
    perform bdc_field       using 'BDC_CURSOR'
                                  'COBL-GSBER'.
    perform bdc_field       using 'BDC_OKCODE'
                                  '=ENTE'.
    perform bdc_field       using 'COBL-GSBER'
                                  ENTRIES-GSBER.
    perform bdc_field       using 'COBL-KOSTL'
                                  ENTRIES-KOSTL.
    perform bdc_field       using 'COBL-PRCTR'
                                  ENTRIES-PRCTR.
    perform bdc_dynpro      using 'SAPMF05A' '0300'.
    perform bdc_field       using 'BDC_CURSOR'
                                  'RF05A-NEWKO'.
    perform bdc_field       using 'BDC_OKCODE'
                                  '/00'.
    perform bdc_field       using 'BSEG-WRBTR'
                                  ENTRIES-WRBTR.
    perform bdc_field       using 'BSEG-SGTXT'
                                  ENTRIES-SGTXT.
    perform bdc_field       using 'RF05A-NEWBS'
                                  ENTRIES-NEWBS.
    perform bdc_field       using 'RF05A-NEWKO'
                                  ENTRIES-NEWKO.
    perform bdc_field       using 'DKACB-FMORE'
                                  ENTRIES-FMORE.
    perform bdc_dynpro      using 'SAPLKACB' '0002'.
    perform bdc_field       using 'BDC_CURSOR'
                                  'COBL-GSBER'.
    perform bdc_field       using 'BDC_OKCODE'
                                  '=ENTE'.
    perform bdc_field       using 'COBL-GSBER'
                                  ENTRIES-GSBER.
    perform bdc_dynpro      using 'SAPMF05A' '0300'.
    perform bdc_field       using 'BDC_CURSOR'
                                  'BSEG-WRBTR'.
    perform bdc_field       using 'BDC_OKCODE'
                                  '/00'.
    perform bdc_field       using 'BSEG-WRBTR'
                                  ENTRIES-WRBTR.
    perform bdc_field       using 'DKACB-FMORE'
                                  ENTRIES-FMORE.
    perform bdc_dynpro      using 'SAPLKACB' '0002'.
    perform bdc_field       using 'BDC_CURSOR'
                                  'COBL-GSBER'.
    perform bdc_field       using 'BDC_OKCODE'
                                  '=ENTE'.
    perform bdc_field       using 'COBL-GSBER'
                                  ENTRIES-GSBER.
    perform bdc_dynpro      using 'SAPMF05A' '0300'.
    perform bdc_field       using 'BDC_CURSOR'
                                  'RF05A-NEWKO'.
    perform bdc_field       using 'BDC_OKCODE'
                                  '/00'.
    perform bdc_field       using 'BSEG-WRBTR'
                                  ENTRIES-WRBTR.
    perform bdc_field       using 'BSEG-SGTXT'
                                  ENTRIES-SGTXT.
    perform bdc_field       using 'RF05A-NEWBS'
                                  ENTRIES-NEWBS.
    perform bdc_field       using 'RF05A-NEWKO'
                                  ENTRIES-NEWKO.
    perform bdc_field       using 'DKACB-FMORE'
                                  ENTRIES-FMORE.
    perform bdc_dynpro      using 'SAPLKACB' '0002'.
    perform bdc_field       using 'BDC_CURSOR'
                                  'COBL-GSBER'.
    perform bdc_field       using 'BDC_OKCODE'
                                  '=ENTE'.
    perform bdc_field       using 'COBL-GSBER'
                                  ENTRIES-GSBER.
    perform bdc_dynpro      using 'SAPMF05A' '0300'.
    perform bdc_field       using 'BDC_CURSOR'
                                  'RF05A-NEWKO'.
    perform bdc_field       using 'BDC_OKCODE'
                                  '/00'.
    perform bdc_field       using 'BSEG-WRBTR'
                                  ENTRIES-WRBTR.
    perform bdc_field       using 'BSEG-SGTXT'
                                  ENTRIES-SGTXT.
    perform bdc_field       using 'RF05A-NEWBS'
                                  ENTRIES-NEWBS.
    perform bdc_field       using 'RF05A-NEWKO'
                                  ENTRIES-NEWKO.
    perform bdc_field       using 'DKACB-FMORE'
                                  ENTRIES-FMORE.
    perform bdc_dynpro      using 'SAPLKACB' '0002'.
    perform bdc_field       using 'BDC_CURSOR'
                                  'COBL-GSBER'.
    perform bdc_field       using 'BDC_OKCODE'
                                  '=ENTE'.
    perform bdc_field       using 'COBL-GSBER'
                                  ENTRIES-GSBER.
    perform bdc_dynpro      using 'SAPMF05A' '0300'.
    perform bdc_field       using 'BDC_CURSOR'
                                  'RF05A-NEWKO'.
    perform bdc_field       using 'BDC_OKCODE'
                                  '/00'.
    perform bdc_field       using 'BSEG-WRBTR'
                                  ENTRIES-WRBTR.
    perform bdc_field       using 'BSEG-SGTXT'
                                  ENTRIES-SGTXT.
    perform bdc_field       using 'RF05A-NEWBS'
                                  ENTRIES-NEWBS.
    perform bdc_field       using 'RF05A-NEWKO'
                                  ENTRIES-NEWKO.
    perform bdc_field       using 'DKACB-FMORE'
                                  ENTRIES-FMORE.
    perform bdc_dynpro      using 'SAPLKACB' '0002'.
    perform bdc_field       using 'BDC_CURSOR'
                                  'COBL-GSBER'.
    perform bdc_field       using 'BDC_OKCODE'
                                  '=ENTE'.
    perform bdc_field       using 'COBL-GSBER'
                                  ENTRIES-GSBER.
    perform bdc_dynpro      using 'SAPMF05A' '0302'.
    perform bdc_field       using 'BDC_CURSOR'
                                  'BSEG-SGTXT'.
    perform bdc_field       using 'BDC_OKCODE'
                                  '=AB'.
    perform bdc_field       using 'BSEG-HKONT'
                                  ENTRIES-HKONT.
    perform bdc_field       using 'BSEG-WRBTR'
                                  ENTRIES-WRBTR.
    perform bdc_field       using 'BSEG-MWSKZ'
                                  ENTRIES-MWSKZ.
    perform bdc_field       using 'BSEG-ZFBDT'
                                  ENTRIES-ZFBDT.
    perform bdc_field       using 'BSEG-SGTXT'
                                  ENTRIES-SGTXT.
    perform bdc_dynpro      using 'SAPLFWTD' '0100'.
    perform bdc_field       using 'BDC_CURSOR'
                                  'WITH_ITEM-WT_WITHCD(01)'.
    perform bdc_field       using 'BDC_OKCODE'
                                  '=GO'.
    perform bdc_dynpro      using 'SAPMF05A' '0700'.
    perform bdc_field       using 'BDC_CURSOR'
                                  'RF05A-NEWBS'.
    perform bdc_field       using 'BDC_OKCODE'
                                  '=BS'.
    perform bdc_field       using 'BKPF-XBLNR'
                                  ENTRIES-XBLNR.
    perform bdc_field       using 'BKPF-BKTXT'
                                  ENTRIES-BKTXT.
    perform bdc_dynpro      using 'SAPMF05A' '0700'.
    perform bdc_field       using 'BDC_CURSOR'
                                  'RF05A-NEWBS'.
    perform bdc_field       using 'BDC_OKCODE'
                                  '=BU'.
    perform bdc_field       using 'BKPF-XBLNR'
                                  ENTRIES-XBLNR.
    perform bdc_field       using 'BKPF-BKTXT'
                                  ENTRIES-BKTXT.
    perform bdc_field       using 'BDC_OKCODE'
                                  '=YES'.
    call transaction 'FB01' using bdcdata1 mode 'A'.
    ENDLOOP.
           Start new screen                                              *
    form bdc_dynpro using program dynpro.
       clear bdcdata1.
      bdcdata1-program  = program.
      bdcdata1-dynpro   = dynpro.
      bdcdata1-dynbegin = 'X'.
    append bdcdata1.
    endform.
           Insert field                                                  *
    form bdc_field using fnam fval.
       clear bdcdata1.
        bdcdata1-fnam = fnam.
        bdcdata1-fval = fval.
    append bdcdata1.
    endform.

    Hi
    You better use LSMW instaed of using BDC for FB01 Transaction. The Problem is not with REFRESH.
    Regards,
    Anji

  • Pop of prctr field in programm

    hi,
    i make a bdc using f-27 call trans.
    there it is work fine but a problem in 3rd screen that at time of saving amount data at 3rd screen the (coding block name screen)----> are pop up in this the profit centre field are given as( whaildummy) this is given by me and then data is saved but i want that it directly save as we run the tcode f-27 in actual way witout codes this screen are not come but in my codes it will come at 3rd screen with popup and after given profit centre it save in company code.
    plz help me i am wait for u'r rply plz
    thanks
    jayant
    i am send the codes and flat file
    report ZF27TEST
           no standard page heading line-size 255.
                        I N T E R N A L  T A B L E                       *
    TYPES: BEGIN OF it_output,
           bldat(10)  TYPE  C,           "Document Date
           blart      TYPE  bkpf-blart,  "Document Type
           bukrs      TYPE  bkpf-bukrs,  "Company Code
           budat(10)  TYPE  C,           "Posting Date
           monat      TYPE  bkpf-monat,  "Period
           waers      TYPE  bkpf-waers,  "Currency
           xblnr      TYPE  bkpf-xblnr,  "Reference Field
           docid      TYPE  fs006-docid, "Document ID
           newbs      TYPE  rf05a-newbs, "Posting  Key
           newko      TYPE  rf05a-newko, "Account Code
           wrbtr(16)  TYPE  C,           "Amount in Document currency
           zfbdt(10)  TYPE  C,           "Baseline Date
           newbs2     TYPE  rf05a-newbs, "Account Key2
           newko2     TYPE  rf05a-newko, "Account code2
           wrbtr2(16) TYPE  C,           "Amount2
    END OF it_output.
    DATA lt_output  TYPE  it_output OCCURS 0 WITH HEADER LINE.
    DATA it_bdc     LIKE  bdcdata OCCURS 0 WITH HEADER LINE.
    DATA it_messtab LIKE  bdcmsgcoll OCCURS 1 WITH HEADER LINE.
                               D A T A                                   *
    DATA: message TYPE string.
    DATA: p_file1 type string.
             S E L E C T - O P T I O N S / P A R A M E T E R S           *
    SELECTION-SCREEN BEGIN OF BLOCK block0 WITH FRAME.
    PARAMETERS : p_file  LIKE rlgrap-filename OBLIGATORY.
    SELECTION-SCREEN END OF BLOCK block0.
             A T  S E L E C T I O N - S C R E E N                        *
    AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_file.
      CALL FUNCTION 'KD_GET_FILENAME_ON_F4'
        EXPORTING
          static    = 'X'
          mask      = space
        CHANGING
          file_name = p_file.
                   S T A R T - O F - S E L E C T I O N
    START-OF-SELECTION.
      PERFORM  upload.
      PERFORM  bdc.
      PERFORM  write_message.
    *&      Form  bdc
          text
    FORM bdc.
      LOOP AT lt_output.
        READ TABLE lt_output INDEX 1.
    perform bdc_dynpro      using 'SAPMF05A' '0100'.
    perform bdc_field       using 'BDC_CURSOR' 'RF05A-NEWKO'.
    perform bdc_field       using 'BDC_OKCODE' '/00'.
    perform bdc_field       using 'BKPF-BLDAT' lt_output-bldat.
    perform bdc_field       using 'BKPF-BLART' lt_output-blart.
    perform bdc_field       using 'BKPF-BUKRS' lt_output-bukrs.
    perform bdc_field       using 'BKPF-BUDAT' lt_output-budat.
    perform bdc_field       using 'BKPF-MONAT' lt_output-monat.
    perform bdc_field       using 'BKPF-WAERS' lt_output-waers.
    perform bdc_field       using 'BKPF-XBLNR' lt_output-xblnr.
    perform bdc_field       using 'FS006-DOCID' lt_output-docid.
    perform bdc_field       using 'RF05A-NEWBS' lt_output-newbs.
    perform bdc_field       using 'RF05A-NEWKO' lt_output-newko.
    perform bdc_dynpro      using 'SAPMF05A' '0302'.
    perform bdc_field       using 'BDC_CURSOR' 'RF05A-NEWKO'.
    perform bdc_field       using 'BDC_OKCODE' '/00'.
    perform bdc_field       using 'BSEG-WRBTR' lt_output-wrbtr.
    *perform bdc_field       using 'BSEG-ZTERM' 'V030'.
    *perform bdc_field       using 'BSEG-ZBD1T' '30'.
    *perform bdc_field       using 'BSEG-ZFBDT' '08.04.2008'.
    perform bdc_field       using 'RF05A-NEWBS' lt_output-newbs2.
    perform bdc_field       using 'RF05A-NEWKO' lt_output-newko2.
    perform bdc_dynpro      using 'SAPMF05A' '0300'.
    perform bdc_field       using 'BDC_CURSOR' 'BSEG-WRBTR'.
    perform bdc_field       using 'BDC_OKCODE' '=BU'.
    perform bdc_field       using 'BSEG-WRBTR' lt_output-wrbtr2.
    perform bdc_field       using 'DKACB-FMORE' 'X'.
    CALL TRANSACTION 'F-27' USING it_bdc mode 'A'
                               MESSAGES INTO it_messtab.
        CLEAR it_bdc. REFRESH it_bdc.
      ENDLOOP.
    ENDFORM.                    "bdc
    *&      Form  write_message
          text
    FORM write_message.
      LOOP AT it_messtab .
        CLEAR message.
        CALL FUNCTION 'FORMAT_MESSAGE'
          EXPORTING
            id   = sy-msgid
            lang = 'EN'
            no   = sy-msgno
            v1   = sy-msgv1
            v2   = sy-msgv2
            v3   = sy-msgv3
            v4   = sy-msgv4
          IMPORTING
            msg  = message.
        CASE it_messtab-msgtyp.
          WHEN 'S'.
            WRITE:/ message.
            CLEAR message.
          WHEN 'E'.
            FORMAT COLOR 6 ON.
            WRITE:/ message.
            CLEAR message.
        ENDCASE.
      ENDLOOP.
    ENDFORM.                    "write_message
          FORM BDC_DYNPRO                                               *
    -->  PROGRAM                                                       *
    -->  DYNPRO                                                        *
    FORM bdc_dynpro USING program dynpro.
      it_bdc-program  = program.
      it_bdc-dynpro   = dynpro.
      it_bdc-dynbegin = 'X'.
      APPEND it_bdc.
      CLEAR it_bdc.
    ENDFORM.                    "BDC_DYNPRO
          FORM                                                          *
    FORM bdc_field USING fnam fval.
      it_bdc-fnam = fnam.
      it_bdc-fval = fval.
      APPEND it_bdc.
      CLEAR it_bdc.
    ENDFORM.                    "BDC_FIELD
    *&      Form  upload
          text
    -->  p1        text
    <--  p2        text
    FORM upload .
    p_file1 = p_file.
    CALL FUNCTION 'GUI_UPLOAD'
      EXPORTING
        filename                      = p_file1
       FILETYPE                      = 'DAT'
      tables
        data_tab                      = lt_output
    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.                    " upload
    F O R M A L   E N D - O F - P R O G R A M                           *
    flat file is
    30.04.2008     DA     8601     30.04.2008     4     CNY     REF1           31     90001     500     30.04.2008     40     3990000002     500
    in between REF1 and pstky 31 there is blank tab for DOCID
    thanks

    Hello Suresh,
    The pop-up comes due to an inconsistent settings maintained in SE54. There is a flag called 'Compare Flag', which I am assuming, has been set to Automatically Adjustable in SE54.
    But beyond this, you have manually adjusted the screen parameters, which contradict with the Compare flag settings.
    Goto SE54, and change the flag to Adjustable in Dialog and save the SE54.
    The pop-up should be eliminated.
    Regards,
    Rekha

Maybe you are looking for