Call Trasaction (BDC for CRMD_ORDER) in webui

Hi Experts,
I know this is not a good option to use a call transaction in webui nad we are gettinCNTL_ERROR for that too.
Our requirement is like , from custom webui report we are wants to call the BDC with some data based on the inputs.
But here we are getting an error for the statement Call Transaction.
Is it possible to use anyway/ or not allowed in webui......
please suggets alternative.......
Thanks,
Aniket

Hi,
You cannot use CALL TRANSACTION in Web UI. If you want to display standard transaction you'd have to use transaction launcher.
Let me know if you need more help.
Regards
Prasenjit

Similar Messages

  • BDC for CRMD_ORDER

    hi,
    i am trying to write BDC for crmd_order transaction as i have a requirement to create Service contract Quotation automatically in background.
    i am using "CRM_AUC_ORDER_CREATE_MULT" this function module to create Quotation, but this FM has limited input fields through which though i am able to create the quotation i want to insert few extra values for which i am trying to use BDC code to open the created quotation in change mode.
    My problem is... in item level data i have a Tab called Object List where i have to enter multiple Object IDs . But hence this field has no Screen-Field it is not getting recorded.
    Expecting expert suggestions.
    please let me know if there is any function module through which i can enter the Object ID's as well .

    Hi,
    you can never use bdc for crmd_order.
    Pl use the funtion modules: either CRM_ORDER_MAINTAIN .
    first put a break point in the function module. then manually create one order.
    then you came to know how to populate the values into the concerned sturcutes.
    Hope this will help you to get an idea.
    regards,
    Mallik

  • ERROR in Call Trasaction BDC?

    Hello,
    In call transaction method, when I uploaded 1st record it shown the message,
    data uploaded successfully, When second record uploaded, 1st record cameout
    to the screen in redcolor...What is wrong in my coding?
    <b>for info...No redundant record have been prepared for upload.</b><i></i>

    Hi Anil,
    Glad to help you,Please do reward points if problem solved.
    Thanks
    Seshu

  • Call Transaction BDC for ME9F in Background

    Hi All,
    I am posting data to ME9F transaction by using CALL TRANSACTION Method. This runs good in foreground but when i try to run this in the background its not posting the data.Could you please let me know any solution how we can resolve this issue. Thanks in advance.
    Regards,
    Suresh

    According to OSS note #708037:
    When transaction ME9F is called in a program with a batch input file, the messages are output to the spool even when they had to be deleted according to the batch input information. This occurs only when the program is called in the background.

  • Error while running a BDC for the Transaction F-02

    Hi,
           I'm getting an error <b><i>"Parking not possible during Batch Input"</i></b> while running a BDC for the transaction F-02.
           When i click on the error message it displays the message [b<i>]"In Customizing, you can control whether an error message is issued."</b></i>
            How to solve this issue?.
            Waiting for ur replies.........
    Regards
    N.Senthil

    Hi,
    When you are doing the recording in SHDB, and in the same screen where the TCODE to be recorded is given, there are options that you can choose called "Recording Parameters"...Select the checkbox which says "Not a Batch Input Session", this will set the sy-binpt variable to " "(in a recording by default it is "X")...and you will not get this error...
    Also make sure while writing the BDC program to make use of the "bdc options" parameter which has this property to switch of sy-binpt...
        Refer below theard for sample bdc code for f-02.
    https://forums.sdn.sap.com/click.jspa?searchID=5126766&messageID=1538409
    Regards

  • BDC for TCODE F150

    Hi Friends,
    I am facing problem while developing BDC for tcode F150. The last action i.e. scheduling for particular dunning date is not getting executed in my BDC.
    I am also pasting the end part of my BDC recording. Please review it and advise.
    PERFORM bdc_dynpro      USING 'SAPLF150_JOBS' '1000'.
      PERFORM bdc_field       USING 'BDC_CURSOR'
                                    'F150V-STRZT'.
      PERFORM bdc_field       USING 'BDC_OKCODE'
                                    '=JOBS'.
      PERFORM bdc_field       USING 'F150V-STRDT'
                                    rdate.
      PERFORM bdc_field       USING 'F150V-XSTRF'
                                    'X'.
        select single SPLD into p_out from USR01 where bname = sy-uname.
      perform bdc_field       using 'ITCPO-TDDEST'
                                     p_out.
      CALL TRANSACTION 'F150'
    Thank you,
    Swapnil
    Edited by: Swapnil Tawade on Sep 22, 2008 3:15 PM

    Hi,
       If u want it for  some specific plants then before populating data  to bdcdata internal table  check the conditions for which the plant fields required values to be passed  and if the condition is satisfied then pass the plant field to bdcdata table . If the condition is not satisfied then dont pass that plant field to bdcdata table bcoz  if  u r not passing any field to bdcdata table then that field is going have default values.
    Regards,
    Shafi

  • 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

  • "BDC for multiple line items of PO"

    I am using this code to move data for multiple line items of a PO. But only one is getting transferred. I am using BDC for this.
    FORM transaction_bdc .
      DATA :
      v_cnt(2) TYPE n,
      v_bst(2) TYPE n,
      v_bn TYPE i,
      v_bstpo(25),
      v_ebtyp(25),
      v_menge(25),
      v_eeind(25),
      v_xblnr(25),
      v_xblnr1(25),
      v_ebelp(2) TYPE n,
      v_ebelpt(2),
      v_menge1(11),
      v_ebt TYPE i,
      v_vebtyp LIKE ekes-ebtyp,
      v_eb(2) TYPE n,
      v_tcselflag(40),
      v_tem(2) TYPE n,
      v_correct TYPE i,
      v_file TYPE string.
      DATA: ls_outtab TYPE tb_struc.
      DATA: l_valid TYPE c,
            l_locked TYPE c.
      CALL METHOD g_grid->check_changed_data
        IMPORTING
          e_valid = l_valid.
      IF l_valid EQ 'X'.
        LOOP AT tb_output WHERE check EQ 'X' .
          MOVE-CORRESPONDING tb_output TO itab_output.
          APPEND itab_output.
          CLEAR itab_output.
        ENDLOOP.
        IF tb_output-check <> 'X'.
          MESSAGE e003 WITH text-004.
        ENDIF.
      ENDIF.
      IF itab_output[] IS NOT INITIAL.
        PERFORM open_group.
    ***looping at purchase order level.
        LOOP AT itab_output where ebelp is not initial .
          CLEAR v_bn.
          CLEAR v_ebt.
          PERFORM bdc_dynpro USING 'SAPMM06E' '0105'.
          PERFORM bdc_field USING 'BDC_CURSOR'
          'RM06E-BSTNR'.
          PERFORM bdc_field USING 'BDC_OKCODE'
          '/00'.
          PERFORM bdc_field USING 'RM06E-BSTNR'
          itab_output-ebeln.
    ***Changing alphanumeric fields and quantity fields to character type**
    *v_ebelp = tB_OUTPUT-ebelp.
    *clear v_ebelpt.
    *v_menge1 = tB_OUTPUT-menge.
    *v_ebelpt = v_ebelp.
    ***End Of Changing**
    *Checking for the exact number of the item**
          LOOP AT tb_output where ebeln = itab_output-ebeln.
            READ TABLE itab_output INDEX 1.
            IF tb_output-ebelp = itab_output-ebelp.
              exit.
            ELSE.
              v_bn = v_bn + 1.
            ENDIF.
          ENDLOOP.
    v_bst = v_bn + 1.
    *End Of Checking**
    **Mapping items**
            v_tem = 1.
            CONCATENATE 'RM06E-BSTPO(' v_bst ')' INTO v_bstpo.
            CONCATENATE 'RM06E-TCSELFLAG(' v_tem ')' INTO v_tcselflag.
            PERFORM bdc_dynpro USING 'SAPMM06E' '0120'.
            PERFORM bdc_field USING 'BDC_CURSOR'
            v_bstpo.
            PERFORM bdc_field USING 'BDC_OKCODE'
            '=DETA'.
            PERFORM bdc_field USING 'RM06E-EBELP'
            v_ebelpt.
            PERFORM bdc_dynpro USING 'SAPMM06E' '0111'.
            PERFORM bdc_field USING 'BDC_CURSOR'
            'EKPO-BSTAE'.
            PERFORM bdc_field USING 'BDC_OKCODE'
            '/00'.
            PERFORM bdc_dynpro USING 'SAPMM06E' '0120'.
            PERFORM bdc_field USING 'BDC_CURSOR'
            v_bstpo.
            PERFORM bdc_field USING 'BDC_OKCODE'
            '=BSTA'.
            PERFORM bdc_field USING 'RM06E-EBELP'
            v_ebelpt.
            PERFORM bdc_field USING v_tcselflag
            'X'.
    **Checking weather Confirmation category already exists**
            SELECT ebtyp FROM ekes INTO v_vebtyp WHERE ebelp =
            itab_output-ebelp AND ebeln = itab_output-ebeln.
            ENDSELECT.
            IF sy-dbcnt > 0.
              v_ebt = sy-dbcnt.
            ENDIF.
            v_eb = v_ebt + 1.
    **End Of Checking**
    **For Line items**
            CONCATENATE 'EKES-EBTYP(' v_eb ')' INTO v_ebtyp.
            CONCATENATE 'EKES-MENGE(' v_eb ')' INTO v_menge.
            CONCATENATE 'RM06E-EEIND(' v_eb ')' INTO v_eeind.
            CONCATENATE 'EKES-XBLNR(' v_eb ')' INTO v_xblnr.
    **End**
            PERFORM bdc_dynpro USING 'SAPLEINB' '0200'.
            PERFORM bdc_field USING 'BDC_CURSOR'
            v_xblnr.
            PERFORM bdc_field USING 'BDC_OKCODE'
            '=BU'.
            PERFORM bdc_field USING v_ebtyp
            itab_output-ebtyp.
            PERFORM bdc_field USING v_eeind
            itab_output-eindt.
            PERFORM bdc_field USING v_menge
            v_menge1.
            PERFORM bdc_field USING v_xblnr
            itab_output-xblnr.
    **End Of Mappings**
    *loop at itab_output.
            MOVE-CORRESPONDING itab_output TO ekes.
            modify ekes.
           MOVE-CORRESPONDING itab_output TO eket.
           MODIFY eket.
           MOVE-CORRESPONDING tb_output TO ekpo.
           MODIFY ekpo.
         ENDLOOP.
          CALL TRANSACTION 'ME22N'
          USING itbdc
          MODE   'E'.
          commit work.
    perform bdc_transaction using 'ME22N'.
    **End Of Purchase Order Loop**
        PERFORM close_group.
        endloop.
         endif.

    Hi Asha,
    check the below code once...
    LOOP AT tb_output where ebeln = itab_output-ebeln.
    READ TABLE itab_output INDEX 1.
    IF tb_output-ebelp = itab_output-ebelp.
    exit.
    ELSE.
    v_bn = v_bn + 1.
    ENDIF.
    ENDLOOP.
    Here you are reading the table itab_output with index 1, it means you alway reading the first record of that internal table.
    Regards,
    Satya.

  • BDC For Line Items In Sales Order

    Hello,
    I have an internal table of line items which i need it to pass it to BDC for sales order line items creation. Can anybody tell me how to do this like the logic which is used to pass the field names. I just have the material number and Quantity to be passed ..
    Thanks
    Viky

    See below code for Purchase Order :
    report zpochange.
    data : i_error like bdcmsgcoll occurs 0 with header line.
    data : i_bdcdata like bdcdata occurs 0 with header line.
    tables : ekko, ekpo.
    data :c1(10) value 'ME22',
          c2(1) value ',',c3(10).
    data : var1(20). " LIKE EKKO-EBELN.
    data : var2 like ekko-ebeln.
    data : begin of i_ekko occurs 0,
              header(2),
              ebeln like ekko-ebeln,
              end of i_ekko.
    data : begin of i_ekpo occurs 0,
    item(2),
            ebeln like ekpo-ebeln,
            ebelp like ekpo-ebelp,
            menge(10), " LIKE EKPO-MENGE,
           end of i_ekpo.
    data : v like ekpo-ebelp.
    data: begin of itab occurs 0,
             text(300),
            end of itab.
    parameters: p_file like ibipparms-path.
    *PARAMETERS: PONUMBER LIKE EKPO-EBELN.
    at selection-screen on value-request for p_file.
    call function 'F4_FILENAME'
      exporting
        program_name        = syst-cprog
        dynpro_number       = syst-dynnr
       FIELD_NAME          = ' '
      importing
        file_name           = p_file
    start-of-selection.
    *SELECT EBELN FROM EKKO INTO TABLE I_EKKO WHERE EBELN = PONUMBER.
          SELECT EBELN EBELP MENGE FROM EKPO INTO TABLE I_EKPO WHERE EBELN
    *= PONUMBER.
    perform get_data.
    *LOOP AT ITAB.
    WRITE :/ ITAB.
    ENDLOOP.
    loop at itab.
    var1 = itab-text+0(1).
    if var1 = 'H'.
    *I_EKKO-EBELN = ITAB-TEXT.
    split itab at c2 into i_ekko-header
                           i_ekko-ebeln.
    SPLIT  ITAB AT ',' INTO I_EKKO-EBELN.
                        " I_EKPO-EBELP
                        " I_EKPO-MENGE
                        " var1.
    append i_ekko.
    else.
    split itab at c2 into i_ekpo-item
                            i_ekpo-ebeln
                            i_ekpo-ebelp
                            i_ekpo-menge.
    append i_ekpo.
    endif.
    *var2 = i_ekpo-ebeln.
      MOVE VAR1 TO I_EKPO-EBELN.
      MOVE VAR1 TO I_EKKO-EBELN.
    APPEND: I_EKPO.
    *if not var1 is initial.
        split var1 at ',' into i_ekpo-ebelp
                               i_ekpo-menge.
      i_ekpo-ebeln = var2.
    append i_ekpo.
    *endif.
    endloop.
    loop at i_ekpo.
    write :/ i_ekpo.
    endloop.
    loop at i_ekko.
    perform fill_data. " TABLES I_EKPO.
    endloop.
    LOOP AT I_EKPO.
    WRITE :/ I_EKPO.
    ENDLOOP.
    *&      Form  GET_DATA
          text
    -->  p1        text
    <--  p2        text
    *LOOP AT I_ERROR.
    WRITE :/ I_ERROR.
    ENDLOOP.
    form get_data.
    call function 'WS_UPLOAD'
    exporting
       codepage                      = ' '
       filename                      = p_file
       filetype                      = 'ASC'
       headlen                       = ' '
       line_exit                     = ' '
       trunclen                      = ' '
       user_form                     = ' '
       user_prog                     = ' '
       dat_d_format                  = ' '
    IMPORTING
      FILELENGTH                    =
      tables
        data_tab                      = itab
    exceptions
       conversion_error              = 1
       file_open_error               = 2
       file_read_error               = 3
       invalid_type                  = 4
       no_batch                      = 5
       unknown_error                 = 6
       invalid_table_width           = 7
       gui_refuse_filetransfer       = 8
       customer_error                = 9
       others                        = 10
    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  FILL_DATA
          text
         -->P_I_EKPO  text
    form fill_data. " tables   i_ekpo .
    perform bdcscreen using 'SAPMM06E' '0105'.
    perform bdcfield using 'RM06E-BSTNR' i_ekko-ebeln.
    perform bdcfield using 'BDC_OKCODE' '/00'.
    loop at i_ekpo where ebeln = i_ekko-ebeln.
      V = I_EKPO-EBELP.
    perform bdcscreen using 'SAPMM06E' 0120.
    perform bdcfield using 'BDC_CURSOR' 'RM06E-EBELP'.
    perform bdcfield using 'RM06E-EBELP' i_ekpo-ebelp.
    perform bdcfield using 'BDC_OKCODE' '/00'.
    perform bdcscreen using 'SAPMM06E' 0120.
    perform bdcfield using 'BDC_CURSOR' 'EKPO-MENGE(01)'.
    perform bdcfield using 'RM06E-EBELP' i_ekpo-ebelp.
    perform bdcfield using 'EKPO-MENGE(01)' i_ekpo-menge.
    perform bdcfield using 'BDC_OKCODE' '/00'.
    *PERFORM BDCSCREEN USING 'SAPMM06E' 0120.
    *PERFORM BDCFIELD USING 'BDC_CURSOR'  'RMO6E-EBELP'.
    *CLEAR V.
    endloop.
    perform bdcfield using 'BDC_OKCODE' '=BU'.
    call transaction  c1 using i_bdcdata mode 'A'
                                       messages into i_error.
    refresh i_bdcdata.
    endform.                    " FILL_DATA
    *&      Form  BDCSCREEN
          text
         -->P_0140   text
         -->P_0120   text
    form bdcscreen using    p_program p_screen.
    i_bdcdata-program = p_program.
    i_bdcdata-dynpro = p_screen.
    i_bdcdata-dynbegin = 'X'.
    append i_bdcdata.
    clear i_bdcdata.
    endform.                    " BDCSCREEN
    *&      Form  BDCFIELD
          text
         -->P_0145   text
         -->P_I_EKPO_EBELN  text
    form bdcfield using    fnam fval.
    i_bdcdata-fnam = fnam.
    i_bdcdata-fval = fval.
    append i_bdcdata.
    clear i_bdcdata.
    endform.                    " BDCFIELD
    I hope same thing for sales order ,i mean both has Table control
    Reward Points if it is helpful
    Thanks
    Seshu

  • BDC for MIGO for GR OutBound Delivery( A01 & R05 ) from Movement Type 107 to 109

    Hi,
    I am stuck with a very typical situation need all your expertise and advices for a solution.
    We are basically trying to create change the movement type from 107 to 109 through MIGO.
    I have made a BDC recording for MIGO ( because we would like to track each delivery specifically under shipment , I know that there is a BAPI which is there to do this but it works fine if we do the shipment with Purchase Order as input which dont want in that manner )
    Process:
    1. Creating Production Order
    2. Creating Purchase Order
    3. Creating STO
    4. Deliveries
    5. PGI for Deliveries
    6. Shipment for group of outbound Deliveries
    I have created a z program where i am passing shipment number in the selection screen.
    Then it would take all the deliveries for that shipment and pass each delivery to MIGO and process it and change the status from 107 to 109.
    Interesting part here is, the code works absolutely perfect only from my ID. But when I test from other ID it is not executing, so to check where is the problem I have added mess_tab to the CALL TRANSACTION to capture what message is been populated for my ID comparing with others
    Message Captured on Others ID's:
    MSGID: 00
    MSGNR: 344
    MSGV1: SAPLMIGO
    MSGV2: 1300
    Message Captured on MY ID:
    MSGID: MIGO
    MSGNR: 012
    MSGV1: 5000005802
    MSGV2: (empty)
    This is the problem this program is executing only on MY ID, rest all ID's it is not processing.
    We have cross verified with security and basis regarding any authorization issues but nothing came up.
    Please help me what could be the issue ( WHY it is processing successfully for my and WHY NOT for other ID's)
    Below is the main code :
    CALL FUNCTION 'CONVERT_DATE_TO_EXTERNAL'                     " Converting Date format to DD/MM/YYYY
         EXPORTING
           DATE_INTERNAL            = sy-datum
         IMPORTING
           DATE_EXTERNAL            = lv_date_external
         EXCEPTIONS
           DATE_INTERNAL_IS_INVALID = 1
           OTHERS                   = 2.
           IF SY-SUBRC <> 0.                                     "#EC NEEDED
    * Implement suitable error handling here
           ENDIF.
    *   Validating input shipment number with database table VTTP
           SELECT VTTP~TKNUM
                  VTTP~TPNUM
                  VTTP~VBELN
             FROM VTTP INNER JOIN VTTK
             ON VTTP~TKNUM = VTTK~TKNUM
             INTO TABLE IT_VTTP
             WHERE VTTK~TKNUM = P_TKNUM
               AND VTTK~STDIS = 'X'.
           IF sy-subrc = 0.
    *   Validating all deliveries having same Delivery type or not
             SELECT * FROM likp INTO TABLE it_likp FOR ALL ENTRIES IN it_vttp WHERE vbeln = it_vttp-vbeln
                                                                                AND vbtyp = 'J'.
             IF sy-subrc = 0.
               CLEAR lv_lines.
               LOOP AT it_likp INTO wa_likp.
                 REFRESH:it_vbfa,BDCDATA.
    *   Validating if Delivery Type = 109 (GR already done), or Delivery Type = 107 (must process for GR )
                 SELECT * FROM vbfa INTO TABLE it_vbfa WHERE vbelv = wa_likp-vbeln
    *                                                AND vbtyp_v = 'J'
                                                         AND bwart = '109'.
                 IF sy-subrc = 0.
                   lv_flag1 = 'X'.
                 ELSE.
                   SELECT * FROM vbfa INTO TABLE it_vbfa WHERE vbelv = wa_likp-vbeln
    *                                                  AND vbtyp_v = 'J'
                                                           AND bwart = '107'.
                   IF sy-subrc NE 0.
                     MESSAGE 'No Deliveries with Movement Type "107" ' TYPE 'I'.
                   ELSE.
                     lv_flag2 = 'X'.
                     lv_lines = lv_lines + 1.
    **  BDC for MIGO
                     perform bdc_dynpro      using 'SAPLMIGO' '0001'.
                     perform bdc_field       using 'BDC_OKCODE'
                                                   '=OK_GO'.
                     perform bdc_field       using 'GODYNPRO-ACTION'
                                                   'A01'.
                     perform bdc_field       using 'GODYNPRO-REFDOC'
                                                   'R05'.
                     perform bdc_field       using 'GODEFAULT_TV-BWART'
                                                   '109'.
                     perform bdc_field       using 'BDC_CURSOR'
                                                   'GODYNPRO-OUTBOUND_DELIVERY'.
                     perform bdc_field       using 'GODYNPRO-OUTBOUND_DELIVERY'
                                                   wa_likp-vbeln. "'80019574'.
                     perform bdc_field       using 'GOHEAD-BLDAT'
                                                   lv_date_external. "'04/29/2015'.
                     perform bdc_field       using 'GOHEAD-BUDAT'
                                                   lv_date_external. "'04/29/2015'.
                     perform bdc_field       using 'GOHEAD-WEVER'
                                                   '1'.
                     perform bdc_dynpro      using 'SAPLMIGO' '0001'.
                     perform bdc_field       using 'BDC_OKCODE'
                                                   '=OK_POST1'.
                     perform bdc_field       using 'GODEFAULT_TV-BWART'
                                                   '109'.
                     perform bdc_field       using 'GOHEAD-BLDAT'
                                                   lv_date_external. "'04/29/2015'.
                     perform bdc_field       using 'GOHEAD-LFSNR'
                                                   wa_likp-vbeln. "'0080019574'.
                     perform bdc_field       using 'GOHEAD-BUDAT'
                                                   lv_date_external. "'04/29/2015'.
                     perform bdc_field       using 'GOHEAD-WEVER'
                                                   '1'.
                     perform bdc_field       using 'GODYNPRO-DETAIL_ZEILE'
                                                   '   1'.
                     perform bdc_field       using 'GOITEM-ERFME'
                                                   'EA'.
                     perform bdc_field       using 'GOITEM-ERFMG'
                                                   '1'.
                     perform bdc_field       using 'GOITEM-LSMNG'
                                                   '1'.
                     perform bdc_field       using 'GOITEM-LSMEH'
                                                   'EA'.
                     perform bdc_field       using 'GOITEM-MIGO_ELIKZ'
                                                   '1'.
                     perform bdc_field       using 'GOITEM-BWART'
                                                   '109'.
                     perform bdc_field       using 'GOITEM-LGOBE'
                                                   'RX Cross-docking'.
                     perform bdc_field       using 'BDC_CURSOR'
                                                   'GODYNPRO-DETAIL_TAKE'.
                     perform bdc_field       using 'GODYNPRO-DETAIL_TAKE'
                                                   'X'.
                     PERFORM bdc_dynpro      USING 'SAPLMIGO' '1300'.
                     PERFORM bdc_field       USING 'BDC_CURSOR'
                                                   'G_TIP_DONT_SHOW_AGAIN'.
                     PERFORM bdc_field       USING 'BDC_OKCODE'
                                                   '=OK_TIP_GO'.
                     PERFORM bdc_field       USING 'G_TIP_DONT_SHOW_AGAIN'
                                                   'X'.
    *& Avoid unncessary screens to populate while processing background.
                     LV_OPTIONS-DISMODE = 'N'.
                     LV_OPTIONS-UPDMODE = 'S'.
                     LV_OPTIONS-NOBINPT = 'X'.
                     CALL TRANSACTION 'MIGO' USING BDCDATA  OPTIONS FROM LV_OPTIONS MESSAGES INTO IT_MESSTAB1 .
                     WAIT UP TO 1 SECONDS.
                     DELETE IT_MESSTAB1 WHERE MSGTYP NE 'E'.
                     IF IT_MESSTAB1[] IS NOT INITIAL.
                       APPEND LINES OF IT_MESSTAB1 TO IT_MESSTAB.
                     ENDIF.
                   ENDIF.
                 ENDIF.
               ENDLOOP.
             ENDIF.
           ELSE.
             MESSAGE 'Shipment Number does not exists Or not Planned' TYPE 'E'.
           ENDIF.
         ELSE.
           MESSAGE 'Please insert Shipment Number' TYPE 'E'.
         ENDIF.
         IF lv_flag1 = 'X' AND lv_flag2 = 'X'.
           MESSAGE 'This shipment is processed with an inconsistent goods receipt' TYPE 'I'.
         ELSEIF lv_flag1 = 'X'.
           MESSAGE 'Shipment already been processed for these deliveries' TYPE 'I'.
         ELSEIF lv_flag2 = 'X'.
           lv_lines1 = lv_lines.
           CONDENSE lv_lines1 NO-GAPS .
           CONCATENATE lv_lines1 'Goods Receipt are posted for the shipment '
                  INTO lv_message SEPARATED BY space.
           MESSAGE  lv_message TYPE 'I'.
         ENDIF.
    * Display Messages from Message TAB.
         DELETE ADJACENT DUPLICATES FROM IT_MESSTAB.
         DATA:lv_msg TYPE string.
         LOOP AT IT_MESSTAB INTO WA_MESSTAB.
           CALL FUNCTION 'FORMAT_MESSAGE'
             EXPORTING
               ID        = WA_MESSTAB-MSGID
               NO        = WA_MESSTAB-MSGNR
               V1        = WA_MESSTAB-MSGV1
               V2        = WA_MESSTAB-MSGV2
               V3        = WA_MESSTAB-MSGV3
               V4        = WA_MESSTAB-MSGV4
             IMPORTING
               MSG       = lv_msg
             EXCEPTIONS
               NOT_FOUND = 1
               OTHERS    = 2.
           IF sy-subrc <> 0.
    * Implement suitable error handling here
           ENDIF.
           WRITE:/ lv_msg.
         ENDLOOP.
    *        Start new screen                                              *
       FORM BDC_DYNPRO USING PROGRAM DYNPRO.                 "#EC PF_NO_TYPE
         CLEAR BDCDATA.
         BDCDATA-PROGRAM  = PROGRAM.
         BDCDATA-DYNPRO   = DYNPRO.
         BDCDATA-DYNBEGIN = 'X'.
         APPEND BDCDATA.
       ENDFORM.
    *        Insert field                                                  *
       FORM BDC_FIELD USING FNAM FVAL.                       "#EC PF_NO_TYPE
         CLEAR BDCDATA.
         BDCDATA-FNAM = FNAM.
         BDCDATA-FVAL = FVAL.
         APPEND BDCDATA.
       ENDFORM.
    Thanks,
    Srini

    Hi Rob,
    Thanks for quick reply.
    I have checked the NOTE : 304122
    But there in the NOTE it says ( " BAPI, BAPI_GOODSMVT_CANCEL, BAPI_GOODSMVT_CREATE, CNTL_ERROR" )
    These BAPI's work perfectly for (purchase order as input type), but here out type is ( A01 & R05 ) we are giving DELIVERY NUMBER as input to MIGO.
    So for this scenario we cannot use those BAPI's mentioned in the NOTE.
    Also as stated earlier in the message interesting part is
    "The code works absolutely perfect only from my ID. But when I test from other ID it is not executing. Code is working exactly as expected ONLY to my ID. When i try to execute the same code from another's ID it is not working"
    So what do you think might be the issue?

  • Problem in doing BDC for XK01

    Hi all,
    i am doing BDC for XK01 with Line Item for Bank Details(Table Control..)
    With 3 Internal table
    IT_dummy to get the flat file
    IT_vend  for Header details
    IT_bank  for Item Details
    in this there is a Nested loop
    Loop at it_vend.
    perform bdc
    loop at it_bank.
    concatenate................
    endloop.
    endloop.
    because of the above nested loops..it's bit slow..
    & i am trying to do with a single internal table..
    The problem is..
    with the header data it's not picking all the item data(it's picking only one..)..help me in resolving the problem..
    Below the code..
    REPORT  ZMM_BDCTC1 NO STANDARD PAGE HEADING LINE-SIZE 255.
    PARAMETER:P_FILE TYPE RLGRAP-FILENAME.
    DATA BDCDATA LIKE BDCDATA OCCURS 0 WITH HEADER LINE.
    DATA: BEGIN OF IT_DUMMY OCCURS 0,
          TYP,
          DES(255) TYPE C,
          END OF IT_DUMMY.
    DATA:DELIMITER VALUE ',',
         cnt(4) TYPE N,
         L_FNAM(30) TYPE C,
         FILENAME TYPE STRING.
    TYPES:BEGIN OF TY_FINAL,
          N(4) TYPE C,
          LIFNR TYPE RF02K-LIFNR,
          BUKRS TYPE RF02K-BUKRS,
          EKORG TYPE RF02K-EKORG,
          KTOKK TYPE RF02K-KTOKK,
          NAME1 TYPE LFA1-NAME1,
          SORTL TYPE LFA1-SORTL,
          LAND1 TYPE LFA1-LAND1,
          AKONT TYPE LFB1-AKONT,
          FDGRV TYPE LFB1-FDGRV,
          WAERS LIKE LFM1-WAERS,
          M(4) TYPE C,
          BANKS TYPE LFBK-BANKS,
          BANKL TYPE LFBK-BANKL,
          BANKN TYPE LFBK-BANKN,
          KOINH TYPE LFBK-KOINH,
          END OF TY_FINAL.
    DATA: IT_FINAL TYPE TABLE OF TY_FINAL,
          WA_FINAL TYPE TY_FINAL.
    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.
         FILENAME = P_FILE.
         CALL FUNCTION 'GUI_UPLOAD'
           EXPORTING
             filename                      = FILENAME
            FILETYPE                      = 'ASC'
           tables
             data_tab                      = IT_DUMMY.
    START-OF-SELECTION.
    LOOP AT it_dummy.
        IF it_dummy-typ = 'H'.
          SPLIT  it_dummy-des AT delimiter INTO WA_FINAL-lifnr "Populating Header Table
                                                WA_FINAL-bukrs
                                                WA_FINAL-ekorg
                                                WA_FINAL-ktokk
                                                WA_FINAL-name1
                                                WA_FINAL-sortl
                                                WA_FINAL-land1
                                                WA_FINAL-akont
                                                WA_FINAL-fdgrv
                                                WA_FINAL-waers.
          WA_FINAL-N = WA_FINAL-N + 1.
          WA_FINAL-M = WA_FINAL-M + 1.
        ELSEIF it_dummy-typ = 'I'.
          SPLIT it_dummy-des AT delimiter INTO WA_FINAL-BANKS
                                               WA_FINAL-BANKL
                                               WA_FINAL-BANKN
                                               WA_FINAL-KOINH.
          APPEND WA_FINAL TO IT_FINAL.
        ENDIF.
      ENDLOOP.
    LOOP AT IT_FINAL INTO WA_FINAL.
    WRITE:/ WA_FINAL-N,
            WA_FINAL-LIFNR,
            WA_FINAL-BUKRS,
            WA_FINAL-EKORG,
            WA_FINAL-KTOKK,
            WA_FINAL-NAME1,
            WA_FINAL-SORTL,
            WA_FINAL-LAND1,
            WA_FINAL-AKONT,
            WA_FINAL-FDGRV,
            WA_FINAL-WAERS,
            WA_FINAL-M,
            WA_FINAL-BANKS,
            WA_FINAL-BANKL,
            WA_FINAL-BANKN,
            WA_FINAL-KOINH.
    ENDLOOP.
    data: WA_FINAL1 like line of IT_FINAL.
    clear WA_FINAL1.
    ******************BDC STARTS***********************
    CALL FUNCTION 'BDC_OPEN_GROUP'
    EXPORTING
    CLIENT      = SY-MANDT
    GROUP       = 'ZMM_BDCTAB'
    KEEP        = 'X'
    USER        = SY-UNAME.
    Clear wa_final.
    LOOP AT IT_FINAL INTO WA_FINAL.
    WA_FINAL1 = WA_FINAL.
    CLEAR BDCDATA[].
    AT NEW N.
    cnt = 1.
    perform bdc_dynpro      using 'SAPMF02K' '0100'.
    perform bdc_field       using 'BDC_CURSOR'
                                  'RF02K-KTOKK'.
    perform bdc_field       using 'BDC_OKCODE'
                                  '/00'.
    perform bdc_field       using 'RF02K-LIFNR'
                                  WA_FINAL1-LIFNR.
    perform bdc_field       using 'RF02K-BUKRS'
                                  WA_FINAL1-BUKRS.
    perform bdc_field       using 'RF02K-EKORG'
                                  WA_FINAL1-EKORG.
    perform bdc_field       using 'RF02K-KTOKK'
                                  WA_FINAL1-KTOKK.
    perform bdc_dynpro      using 'SAPMF02K' '0110'.
    perform bdc_field       using 'BDC_CURSOR'
                                  'LFA1-LAND1'.
    perform bdc_field       using 'BDC_OKCODE'
                                  '/00'.
    perform bdc_field       using 'LFA1-NAME1'
                                  WA_FINAL1-NAME1.
    perform bdc_field       using 'LFA1-SORTL'
                                  WA_FINAL1-SORTL.
    perform bdc_field       using 'LFA1-LAND1'
                                  WA_FINAL1-LAND1.
    perform bdc_dynpro      using 'SAPMF02K' '0120'. "ERROR CLEARED
    perform bdc_field       using 'BDC_CURSOR'
                                  'LFA1-KUNNR'.
    perform bdc_field       using 'BDC_OKCODE'
                                  '/00'.
    perform bdc_dynpro      using 'SAPMF02K' '0130'.
    perform bdc_field       using 'BDC_CURSOR'
                                  'LFBK-KOINH(01)'.
    perform bdc_field       using 'BDC_OKCODE'
                                  '=ENTR'.
    ENDAT.
    *ENDON.
    IF WA_FINAL1-N = WA_FINAL1-M.
    CONCATENATE  'LFBK-BANKS(' cnt ')'  INTO L_FNAM.
    perform bdc_field       using L_FNAM
                                  WA_FINAL1-BANKS.
    CONCATENATE  'LFBK-BANKL(' cnt ')'  INTO L_FNAM.
    perform bdc_field       using L_FNAM
                                  WA_FINAL1-BANKL.
    CONCATENATE  'LFBK-BANKN(' cnt ')'  INTO L_FNAM.
    perform bdc_field       using L_FNAM
                                  WA_FINAL1-BANKN.
    CONCATENATE  'LFBK-KOINH(' cnt ')'  INTO L_FNAM.
    perform bdc_field       using L_FNAM
                                  WA_FINAL1-KOINH.
    *ENDDO.
    cnt = cnt + 1.
    ENDIF.
    perform bdc_dynpro      using 'SAPMF02K' '0130'.
    perform bdc_field       using 'BDC_CURSOR'
                                  'LFBK-BANKS(01)'.
    perform bdc_field       using 'BDC_OKCODE'
                                  '=ENTR'.
    perform bdc_dynpro      using 'SAPMF02K' '0210'.
    perform bdc_field       using 'BDC_CURSOR'
                                  'LFB1-FDGRV'.
    perform bdc_field       using 'BDC_OKCODE'
                                  '/00'.
    *AT NEW LIFNR.
    perform bdc_field       using 'LFB1-AKONT'
                                  WA_FINAL1-AKONT.
    perform bdc_field       using 'LFB1-FDGRV'
                                  WA_FINAL1-FDGRV.
    perform bdc_dynpro      using 'SAPMF02K' '0215'.
    perform bdc_field       using 'BDC_CURSOR'
                                  'LFB1-ZTERM'.
    perform bdc_field       using 'BDC_OKCODE'
                                  '/00'.
    perform bdc_dynpro      using 'SAPMF02K' '0220'.
    perform bdc_field       using 'BDC_CURSOR'
                                  'LFB5-MAHNA'.
    perform bdc_field       using 'BDC_OKCODE'
                                  '/00'.
    perform bdc_dynpro      using 'SAPMF02K' '0310'.
    perform bdc_field       using 'BDC_CURSOR'
                                  'LFM1-WAERS'.
    perform bdc_field       using 'BDC_OKCODE'
                                  '/00'.
    perform bdc_field       using 'LFM1-WAERS'
                                  WA_FINAL1-WAERS.
    perform bdc_dynpro      using 'SAPMF02K' '0320'.
    perform bdc_field       using 'BDC_CURSOR'
                                  'RF02K-LIFNR'.
    perform bdc_field       using 'BDC_OKCODE'
                                  '=ENTR'.
    AT END OF M.
    CALL FUNCTION 'BDC_INSERT'
    EXPORTING
    TCODE     = 'XK01'
    TABLES
    DYNPROTAB = BDCDATA.
    ENDAT.
    CLEAR WA_FINAL1.
    CLEAR WA_FINAL.
    ENDLOOP.
    CALL FUNCTION 'BDC_CLOSE_GROUP'.
    *********************BDC ENDS***********************
           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 <> NODATA.
        CLEAR BDCDATA.
        BDCDATA-FNAM = FNAM.
        BDCDATA-FVAL = FVAL.
        APPEND BDCDATA.
    ENDIF.
    ENDFORM.
    Flat File is..
    HAAA45,1000,1000,0002,NAME45,N,IN,31000,A1,USD
    IIN,1000,1021,Name45
    IIN,1000,1022,Name45
    HAAA50,1000,1000,0002,NAME50,N,IN,31000,A1,USD
    IIN,1000,1023,Name50
    IIN,1000,1024,Name50

    Regarding avoiding the loop I have a suggestion, though I have not tried this .
    SAP help says " Using the internal table bdc_tab, you can provide any number of screens of the called transaction with input and user actions. " .
    Above implies you can load all records in the itab bdc_tab when doing call transaction. Say, your bdc_tabl has 30 records for 1 pass of the transaction. You need to update 10 vendor records. You simply load up all 300 records into bdc_tab. After every 30 record loads, you simulate a 'SAVE' press in your program but do not leave the transaction. Rather you simulate the keystroke that takes you to the first screen of XK01 after the save if not aready there, and start loading up the next transaction.

  • Problem in bdc for table control for line items

    Hi experts,
    I am runnig a bdc for ME52.
    i am just entering PR number, in the second screen i have got all the line items. I need to select these line item 10 and double click or hit enter, it takes me to screen 3, there im just checking a checkbox and saving.
    Again i need to select the line item 20 and double click or hit enter. again the same process.
    Again repeat for all the line items.
    But my problem is it is updating everytime for only line item  10. for line item 20 and others it say "no chnge in the data".
    I am pasting my code here. please check and revert me back .plz.
    DATA: w_output LIKE LINE OF i_output.
      REFRESH I_ITAB[].
      SELECT * FROM EBAN
               INTO TABLE i_itab
               WHERE banfn in s_banfn AND
                     bsart in s_bsart AND
                     bstyp in s_bstyp AND
                     matnr in s_matnr AND
                     werks in s_werks AND
                     lfdat in s_lfdat AND
                     pstyp in s_pstyp AND
                     knttp in s_knttp AND
                     estkz in s_estkz AND
                     loekz eq ' '.
      IF sy-subrc = 0.
        CLEAR: w_itab,
                 i_poitab[].
        SORT i_itab by banfn.
        LOOP AT i_itab INTO w_itab where menge GT eban-bsmng.
          IF p_close = 'X' AND p_rep = 'X'.
            IF w_itab-ebakz = 'X'.
              w_itab-ebakz = ' '.
              APPEND w_itab to i_poitab.
            ENDIF.
          ELSEIF p_open = 'X' AND p_rep = 'X'.
            IF w_itab-ebakz = ' '.
              w_itab-ebakz = 'X'.
              APPEND w_itab to i_poitab.
            ENDIF.
          ELSEIF p_close = 'X' AND p_repw = 'X'.
            IF w_itab-ebakz = ' '.
              APPEND w_itab to i_poitab.
            ENDIF.
          ELSEIF p_open = 'X' AND p_repw = 'X'.
            IF w_itab-ebakz = 'X'.
              APPEND w_itab to i_poitab.
            ENDIF.
          ENDIF.
        ENDLOOP.
      ENDIF.
      LOOP AT i_poitab into w_output.
        APPEND w_output to i_output.
       PERFORM CALL_BDC.
      endloop.
    IF p_rep = 'X'.
    PERFORM CALL_BDC.
    ENDIF.
    ENDFORM.                    " GET_DATA
    *&      Form  CALL_BDC
          text
    -->  p1        text
    <--  p2        text
    FORM CALL_BDC.
    DATA: seltab(5) TYPE N,
          seltab1(2) TYPE N,
          tempvar(30) TYPE N,
          cnt TYPE N.
    LOOP AT i_output.
    clear: seltab,
           seltab1.
    seltab = i_output-bnfpo.
    seltab1 = seltab+2(2).
    perform bdc_dynpro      using 'SAPMM06B' '0105'.
    perform bdc_field       using 'BDC_CURSOR'
                                  'EBAN-BANFN'.
    perform bdc_field       using 'BDC_OKCODE'
                                  '/00'.
    perform bdc_field       using 'EBAN-BANFN'
                                  i_output-banfn.
    perform bdc_dynpro      using 'SAPMM06B' '0106'.
    clear tempvar.
    *cnt = 1.
    concatenate 'EBAN-BNFPO(' seltab1 ')' into tempvar.
    perform bdc_field       using 'BDC_CURSOR'
                                 'EBAN-BNFPO(seltab1)'.
                                    tempvar.
    perform bdc_field       using 'BDC_OKCODE'
                                  '=DETA'.
    perform bdc_field       using 'RM06B-BNFPO'
                                  i_output-bnfpo.
    perform bdc_field       using 'RM06B-TCSELFLAG(seltab1)'
                                 'X'.
    perform bdc_dynpro      using 'SAPMM06B' '0102'.
    perform bdc_field       using 'BDC_CURSOR'
                                  'EBAN-EBAKZ'.
    perform bdc_field       using 'BDC_OKCODE'
                                  '=BU'.
    perform bdc_field       using 'EBAN-EBAKZ'
                                  i_output-ebakz.
    CALL TRANSACTION 'ME52' USING bdc_data MODE 'A'
                                   MESSAGES INTO i_bdcmsg.
        COMMIT WORK AND WAIT.
    ENDLOOP.
    ENDFORM.                    " CALL_BDC
    *&      Form  bdc_dynpro
          text
         -->P_0686   text
         -->P_0687   text
    FORM bdc_dynpro USING    program dynpro.
    CLEAR bdc_data.
      bdc_data-program  = program.
      bdc_data-dynpro   = dynpro.
      bdc_data-dynbegin = 'X'.
      APPEND bdc_data.
      CLEAR bdc_data.
    ENDFORM.   
    thanks,
    N

    Looks like table control logic is wrong -- do compare with below program...
    only table contril area
    REPORT ZPadmam
    NO STANDARD PAGE HEADING LINE-SIZE 255.
    DATA : BEGIN OF itab OCCURS 0,
    i1 TYPE i,
    lifnr LIKE rf02k-lifnr,
    bukrs LIKE rf02k-bukrs,
    ekorg LIKE rf02k-ekorg,
    ktokk LIKE rf02k-ktokk,
    anred LIKE lfa1-anred,
    name1 LIKE lfa1-name1,
    sortl LIKE lfa1-sortl,
    land1 LIKE lfa1-land1,
    akont LIKE lfb1-akont,
    fdgrv LIKE lfb1-fdgrv,
    waers LIKE lfm1-waers,
    END OF itab.
    DATA : BEGIN OF jtab OCCURS 0,
    j1 TYPE i,
    banks LIKE lfbk-banks,
    bankl LIKE lfbk-bankl,
    bankn LIKE lfbk-bankn,
    END OF jtab.
    DATA : cnt(4) TYPE n.
    DATA : fdt(20) TYPE c.
    DATA : c TYPE i.
    INCLUDE bdcrecx1.
    START-OF-SELECTION.
    CALL FUNCTION 'WS_UPLOAD'
    EXPORTING
    filename = 'C:\first1.txt'
    filetype = 'DAT'
    TABLES
    data_tab = itab.
    CALL FUNCTION 'WS_UPLOAD'
    EXPORTING
    filename = 'C:\second.txt'
    filetype = 'DAT'
    TABLES
    data_tab = jtab.
    LOOP AT itab.
    PERFORM bdc_dynpro USING 'SAPMF02K' '0100'.
    PERFORM bdc_field USING 'BDC_CURSOR'
    'RF02K-KTOKK'.
    PERFORM bdc_field USING 'BDC_OKCODE'
    '/00'.
    PERFORM bdc_field USING 'RF02K-LIFNR'
    itab-lifnr.
    PERFORM bdc_field USING 'RF02K-BUKRS'
    itab-bukrs.
    PERFORM bdc_field USING 'RF02K-EKORG'
    itab-ekorg.
    PERFORM bdc_field USING 'RF02K-KTOKK'
    itab-ktokk.
    PERFORM bdc_dynpro USING 'SAPMF02K' '0110'.
    PERFORM bdc_field USING 'BDC_CURSOR'
    'LFA1-LAND1'.
    PERFORM bdc_field USING 'BDC_OKCODE'
    '/00'.
    PERFORM bdc_field USING 'LFA1-ANRED'
    itab-anred.
    PERFORM bdc_field USING 'LFA1-NAME1'
    itab-name1.
    PERFORM bdc_field USING 'LFA1-SORTL'
    itab-sortl.
    PERFORM bdc_field USING 'LFA1-LAND1'
    itab-land1.
    PERFORM bdc_dynpro USING 'SAPMF02K' '0120'.
    PERFORM bdc_field USING 'BDC_CURSOR'
    'LFA1-KUNNR'.
    PERFORM bdc_field USING 'BDC_OKCODE'
    '/00'.
    PERFORM bdc_dynpro USING 'SAPMF02K' '0130'.
    PERFORM bdc_field USING 'BDC_CURSOR'
    'LFBK-BANKN(01)'.
    PERFORM bdc_field USING 'BDC_OKCODE'
    '=ENTR'.
    cnt = 0.
    LOOP AT jtab WHERE j1 = itab-i1.
    cnt = cnt + 1.
    CONCATENATE 'LFBK-BANKS(' cnt ')' INTO fdt.
    PERFORM bdc_field USING fdt jtab-banks.
    CONCATENATE 'LFBK-BANKL(' cnt ')' INTO fdt.
    PERFORM bdc_field USING fdt jtab-bankl.
    CONCATENATE 'LFBK-BANKN(' cnt ')' INTO fdt.
    PERFORM bdc_field USING fdt jtab-bankn.
    IF cnt = 5.
    cnt = 0.
    PERFORM bdc_dynpro USING 'SAPMF02K' '0130'.
    PERFORM bdc_field USING 'BDC_CURSOR'
    'LFBK-BANKS(01)'.
    PERFORM bdc_field USING 'BDC_OKCODE'
    '=P+'.
    PERFORM bdc_dynpro USING 'SAPMF02K' '0130'.
    PERFORM bdc_field USING 'BDC_CURSOR'
    'LFBK-BANKN(02)'.
    PERFORM bdc_field USING 'BDC_OKCODE'
    '=ENTR'.
    ENDIF.
    ENDLOOP.
    PERFORM bdc_dynpro USING 'SAPMF02K' '0130'.
    PERFORM bdc_field USING 'BDC_CURSOR'
    'LFBK-BANKS(01)'.
    PERFORM bdc_field USING 'BDC_OKCODE'
    '=ENTR'.
    PERFORM bdc_dynpro USING 'SAPMF02K' '0210'.
    PERFORM bdc_field USING 'BDC_CURSOR'
    'LFB1-FDGRV'.
    PERFORM bdc_field USING 'BDC_OKCODE'
    '/00'.
    PERFORM bdc_field USING 'LFB1-AKONT'
    itab-akont.
    PERFORM bdc_field USING 'LFB1-FDGRV'
    itab-fdgrv.
    PERFORM bdc_dynpro USING 'SAPMF02K' '0215'.
    PERFORM bdc_field USING 'BDC_CURSOR'
    'LFB1-ZTERM'.
    PERFORM bdc_field USING 'BDC_OKCODE'
    '/00'.
    PERFORM bdc_dynpro USING 'SAPMF02K' '0220'.
    PERFORM bdc_field USING 'BDC_CURSOR'
    'LFB5-MAHNA'.
    PERFORM bdc_field USING 'BDC_OKCODE'
    '/00'.
    PERFORM bdc_dynpro USING 'SAPMF02K' '0310'.
    PERFORM bdc_field USING 'BDC_CURSOR'
    'LFM1-WAERS'.
    PERFORM bdc_field USING 'BDC_OKCODE'
    '/00'.
    PERFORM bdc_field USING 'LFM1-WAERS'
    itab-waers.
    PERFORM bdc_dynpro USING 'SAPMF02K' '0320'.
    PERFORM bdc_field USING 'BDC_CURSOR'
    'RF02K-LIFNR'.
    PERFORM bdc_field USING 'BDC_OKCODE'
    '=ENTR'.
    PERFORM bdc_dynpro USING 'SAPLSPO1' '0300'.
    PERFORM bdc_field USING 'BDC_OKCODE'
    '=YES'.
    PERFORM bdc_transaction USING 'XK01'.
    ENDLOOP.
    PERFORM close_group.
    Thanks
    Seshu

  • BDC for ME22n vendor confirmation

    i am facing problem while doing BDC for ME22N . i am going for itemwise vendor confirmation.
    for first line item it is happening. but for 2nd line item it is not going.
    any help?
    this is my code. i guess some loop i have to add but where? can any body give idea?
    REPORT  ZMM_VC_UPLOAD.
    TABLES :  t100.
           Internal table declaration                                    *
    DATA : BEGIN OF it_upload OCCURS 0,
                  index(4),      "Index
                  EBELN(10),     "PO number
                 EBELP(5),      "line item PO
                  LIST(1),       "item number
                  BSTAE(4),      "Confirmation control key
                  EBTYP(2),      "Confirmation Category
                 BSTAE(4),      "Confirmation control key
                  LPEIN(1),      "Category of delivery date
                  EEIND(10),     "delivery date
                  MENGE(13),     "QTY Quantity as per vendor confirmation
                  XBLNR(20),     "ext doc
                  ERDAT(10),     "doc date
                  er_message(100),
           END OF it_upload.
    DATA: BDCDATA LIKE BDCDATA OCCURS 0 WITH HEADER LINE,
          MSGDATA LIKE BDCMSGCOLL  OCCURS 0 WITH HEADER LINE.
    *Selection Screen
    SELECTION-SCREEN BEGIN OF BLOCK B1 WITH FRAME TITLE TEXT-001.
    PARAMETER: P_FILE LIKE IBIPPARMS-PATH OBLIGATORY.  "to select a file.
    SELECTION-SCREEN END OF BLOCK B1.
    *Initialization
    INITIALIZATION.
    AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_FILE .
      PERFORM GET_FILENAME.
    start-of-selection
    START-OF-SELECTION.
      PERFORM MAKE_FILE_NAME .
      PERFORM UPLOAD_FILE.
        PERFORM BDC_PROCESS.
    perform read_messages.
    *&      Form  UPLOAD_FILE
    FORM UPLOAD_FILE .
      CALL FUNCTION 'WS_UPLOAD'
        EXPORTING
          FILENAME                = P_FILE
          FILETYPE                = 'DAT'
        TABLES
          DATA_TAB                = IT_UPLOAD .
            IF SY-SUBRC <> 0.
      ENDIF.
    ENDFORM.                    " UPLOAD_FILE
    *&      Form  bdc_process
    FORM BDC_PROCESS .
    loop at it_upload.
    LOOP AT IT_header.
    refresh bdcdata.
      perform bdc_dynpro      using 'SAPLMEGUI' '0014'.
    perform bdc_field       using 'BDC_OKCODE'
                                  '=MECHOB'.
    perform bdc_field       using 'MEPO_TOPLINE-BSART'
                                  'NB'.
    perform bdc_field       using 'DYN_6000-LIST'
                                  it_upload-list.    "'   1'.
    perform bdc_field       using 'BDC_CURSOR'
                                  'MEPO1319-MATKL'.
    perform bdc_field       using 'MEPO1319-SPINF'
                                  'X'.
    perform bdc_dynpro      using 'SAPLMEGUI' '0002'.
    perform bdc_field       using 'BDC_OKCODE'
                                  '=MEOK'.
    perform bdc_field       using 'BDC_CURSOR'
                                  'MEPO_SELECT-EBELN'.
    perform bdc_field       using 'MEPO_SELECT-EBELN'
                                  it_upload-EBELN.              "'4500195517'.
    perform bdc_field       using 'MEPO_SELECT-BSTYP_F'
                                  'X'.
    perform bdc_dynpro      using 'SAPLMEGUI' '0014'.
    perform bdc_field       using 'BDC_OKCODE'
                                  '=TABIDT14'.
    perform bdc_field       using 'BDC_CURSOR'
                                  'MEPO_TOPLINE-BSART'.
    perform bdc_field       using 'MEPO_TOPLINE-BSART'
                                  'NB'.
    perform bdc_field       using 'DYN_6000-LIST'
                                  it_upload-list.    "'   1'.
    perform bdc_field       using 'MEPO1319-SPINF'
                                  'X'.
    perform bdc_dynpro      using 'SAPLMEGUI' '0014'.
    perform bdc_field       using 'BDC_OKCODE'             "first time
                                  '/00'.
    perform bdc_field       using 'MEPO_TOPLINE-BSART'
                                  'NB'.
    perform bdc_field       using 'DYN_6000-LIST'
                                 it_upload-list.    " '   1'.
    perform bdc_field       using 'BDC_CURSOR'
                                  'MEPO1334-BSTAE'.
    perform bdc_field       using 'MEPO1334-BSTAE'
                                  it_upload-BSTAE  .                "'0005'.
    perform bdc_dynpro      using 'SAPLMEGUI' '0014'.
    perform bdc_field       using 'BDC_OKCODE'
                                  '/00'.
    perform bdc_field       using 'MEPO_TOPLINE-BSART'
                                  'NB'.
    *loop at it_item where ebeln = it_upload-ebeln.
    perform bdc_field       using 'BDC_CURSOR'
                                  'DYN_6000-LIST'.
    perform bdc_field       using 'DYN_6000-LIST'
                                  it_upload-list.    "'   1'.
    perform bdc_field       using 'MEPO1334-BSTAE'
                                  it_upload-BSTAE.                 "'0005'.
    perform bdc_field       using 'BDC_CURSOR'
                                  'EKES-ERDAT(01)'.
    perform bdc_field       using 'EKES-EBTYP(01)'
                                  it_upload-EBTYP.                 "'vc'.
    perform bdc_field       using 'RM06E-LPEIN(01)'
                                  it_upload-LPEIN.                 "'D'.
    perform bdc_field       using 'RM06E-EEIND(01)'
                                  it_upload-EEIND.                 "'15.02.2009'.
    perform bdc_field       using 'EKES-MENGE(01)'
                                  it_upload-MENGE.                 "'10'.
    perform bdc_field       using 'EKES-XBLNR(01)'
                                  it_upload-XBLNR.                 "'inv 9'.
    perform bdc_field       using 'EKES-ERDAT(01)'
                                  it_upload-ERDAT.                 "'15.02.2009'.
    perform bdc_dynpro      using 'SAPLMEGUI' '0014'.
    perform bdc_field       using 'BDC_OKCODE'
                                  '=MESAVE'.
    CALL TRANSACTION 'ME22N' USING BDCDATA MODE 'A' UPDATE 'A' MESSAGES INTO MSGDATA. 
        CLEAR: BDCDATA,BDCDATA[].
        refresh BDCDATA.
      ENDLOOP.
    ENDFORM.                    " bdc_process
           Start new screen                                              *
    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.
      IF FVAL <> ''.
        CLEAR BDCDATA.
        BDCDATA-FNAM = FNAM.
        BDCDATA-FVAL = FVAL.
        APPEND BDCDATA.
      ENDIF.
    ENDFORM.                    "BDC_FIELD
    *To get file name                                                      *
    FORM GET_FILENAME .
      CALL FUNCTION 'F4_FILENAME'
        EXPORTING
          PROGRAM_NAME  = SYST-CPROG
          DYNPRO_NUMBER = SYST-DYNNR
        IMPORTING
          FILE_NAME     = P_FILE.
      IF SY-SUBRC NE 0  .
        WRITE : / 'Enter File Name'.
      ENDIF.
    ENDFORM.                    "GET_FILENAME

    Hi Dude,
      When ur looping the item information , in your code ur
    loop at it_item where ebeln = it_upload-ebeln.
    perform bdc_field using 'BDC_CURSOR'
    'DYN_6000-LIST'.
    perform bdc_field using 'DYN_6000-LIST'
    it_upload-list. "' 1'.
    perform bdc_field using 'MEPO1334-BSTAE'
    it_upload-BSTAE. "'0005'.
    perform bdc_field using 'BDC_CURSOR'
    'EKES-ERDAT(01)'.
    perform bdc_field using 'EKES-EBTYP(01)'
    it_upload-EBTYP. "'vc'.
    perform bdc_field using 'RM06E-LPEIN(01)'
    it_upload-LPEIN. "'D'.
    perform bdc_field using 'RM06E-EEIND(01)'
    it_upload-EEIND. "'15.02.2009'.
    perform bdc_field using 'EKES-MENGE(01)'
    it_upload-MENGE. "'10'.
    perform bdc_field using 'EKES-XBLNR(01)'
    it_upload-XBLNR. "'inv 9'.
    perform bdc_field using 'EKES-ERDAT(01)'
    it_upload-ERDAT. "'15.02.2009'.
    perform bdc_dynpro using 'SAPLMEGUI' '0014'.
    perform bdc_field using 'BDC_OKCODE'
    '=MESAVE'.
    ->(01) you have to replace to variable , and every loop pass increment the varialbe value with 1.
    ex : -
    V1 = 1.
    loop at item.
    perform bdc_data using 'xyz(V1)' 
                                   it_upload-variable.
    V1 = V1 + 1.
    endloop.
    This is called as index , the table control fields are differ the field name by index only...

  • Problem in BDC for Transaction F-02

    Hi Friends,
    I am struck up in BDC for TransactionF-02.i am unable to load the data of my test data.when i am loading its loading the second record not the first record.
    Below is the test data
    H,RAWATEB,1
    M,11072006,ZE,1000,11072006,20,SAR,,,,,RAWATIB,,SALARIES,1000
    D,50,482000,3648.61,Z1,,,1000,1111,,,,,,
    D,40,113001,3648.61,Z1,,,1000,,,,,,,
    D,17,001011,3000000.00,Z1,,,1000,,,,,,,
    D,40,113001,3000000.00,Z1,,,1000,,,,,,,
    M,17082004,ZE,1000,11072006,20,SAR,,,,,RAWATIB,,SALARIES,1000
    D,50,482000,3202.82,Z1,,,1000,1112,,,,,,
    D,40,113001,3202.82,Z1,,,1000,,,,,,,
    D,50,482000,2600000.00,Z1,,,1000,1111,,,,,,
    D,40,001011,2600000.00,Z1,,,1000,,,,,,,
    T,0000000002
    <b></b>
    the report is below
    REPORT ZFGLDR0030 line-count 60
                      line-size 160
                      message-id 00.
    ====================================================================
    ****************************TABLES**********************************
    ====================================================================
    tables: bkpf.
    ====================================================================
    **************************RECORD LAYOUTS****************************
    ====================================================================
    Data: begin of bdc_tab occurs 200.
            include structure bdcdata.
    data: end   of bdc_tab.
    Data: Begin of tmp_tab occurs 200,
           fld1(255)   type   c,
          end of tmp_tab.
    DATA: BEGIN OF upload_tab OCCURS 200,
            fld1(1)    type   c,
            fld2(10)   type   c,
            fld3(10)   type   c,
            fld4(16)   type   c,
            fld5(10)   type   c,
            fld6(2)    type   c,
            fld7(4)    type   c,
            fld8(10)   type   c,
            fld9(10)   type   c,
            fld10(10)  type   c,
            fld11(10)  type   c,
            fld12(12)  type   c,
            fld13(25)  type   c,
            fld14(50)  type   c,
            fld15(4)   type   c,
            fld16(1)   type   c,
          END OF upload_tab.
    data : tmp_rec like upload_tab.
    DATA: BEGIN OF upload1_tab OCCURS 200,
            fld1(1)    type   c,
            fld2(10)   type   c,
            fld3(10)   type   c,
            fld4(16)   type   c,
            fld5(10)   type   c,
            fld6(2)    type   c,
            fld7(4)    type   c,
            fld8(10)   type   c,
            fld9(10)   type   c,
            fld10(10)  type   c,
            fld11(10)  type   c,
            fld12(12)  type   c,
            fld13(25)  type   c,
            fld14(50)  type   c,
            fld15(4)   type   c,
            fld16(1)   type   c,
          END OF upload1_tab.
    Data: upload2_tab like tmp_rec occurs 200 with header line.
    Data: Del_tab like tmp_rec occurs 200 with header line.
    DATA: V_SYTABIX TYPE I,
          v_kunnr     like knb1-kunnr,
          v_brsch     like kna1-brsch,
          v_datum     like sy-datum,
          v_tmp(1)    type c,
          v_flag      type i,
          v_ccode(10) type c,
          v_glcd(10)  type c,
          v_len       type n,
          v_rem(50)   type c,
          v_docno(12) type c,
          v_dtype(3)  type c,
          v_sno(8)    type n,
          v_upd_flag  type i,
          v_idx       like sy-tabix,
          v_budat     like bkpf-budat,
          v_fld5(10)  type c,
          v_date(10)  type c.
    ====================================================================
    *********************SELECTION-SCREEN******************************
    ====================================================================
    selection-screen: begin of block b1 with frame .
    parameters:p_fl_mct  like  rlgrap-filename
                         default 'C:\test' obligatory,
               p_sesid   like apqi-groupid default 'RAWATIB',
               p_user    like apqi-userid default sy-uname.
    selection-screen: end of block b1.
    selection-screen: begin of block b2 with frame .
    parameters:p_opt1    radiobutton group grp1 default 'X',
               p_opt2    radiobutton group grp1,
               p_budat   like bkpf-budat.
    selection-screen: end of block b2.
    ====================================================================
    Validate SELECTION-SCREEN **************************
    ====================================================================
    At Selection-screen.
      translate p_fl_mct to upper  case.
      if p_opt2 = 'X' and p_budat = '00000000'.
        message e398(00) with 'Please enter date to use as Posting date'.
      endif.
    at selection-screen on value-request for p_fl_mct.
      data : v_mask(120)          type c.
      v_mask = ',IT2 files (.),.'.
      CALL FUNCTION 'WS_FILENAME_GET'
           EXPORTING
                DEF_FILENAME     = ' '
                DEF_PATH         = ' '
                MASK             = v_mask
                TITLE            = 'File Selection for Upload'
           IMPORTING
                FILENAME         = p_fl_mct
               RC               =
           EXCEPTIONS
                INV_WINSYS       = 1
                NO_BATCH         = 2
                SELECTION_CANCEL = 3
                SELECTION_ERROR  = 4
                OTHERS           = 5.
    end-of-selection.
    ====================================================================
    *****************************CONSTANTS******************************
    ====================================================================
    ====================================================================
    *****************************VARIABLES******************************
    ====================================================================
    ====================================================================
    TOP OF PAGE*******************************
    ====================================================================
    top-of-page.
    start-of-selection.
      v_upd_flag = 0.
      perform initialise_process.
      perform bdc_open.
      perform process_upload_tab.
      perform terminate_process.
    end-of-selection.
    ====================================================================
    Form : Initialise_Process                                          *
    ====================================================================
    FORM initialise_process.
       Initialises variables                                           *
      move : sy-repid to sy-tvar0,
             sy-uname to sy-tvar1,
             p_sesid  to sy-tvar2,
             sy-pagno to sy-tvar3.
      write: sy-datum to sy-tvar4,
             sy-uzeit to sy-tvar5.
    Selecting the GL codes to be updated**********************
      call function 'WS_UPLOAD'
        EXPORTING
          FILENAME         = p_fl_mct
          FILETYPE         = 'ASC'
        TABLES
          data_tab         = Tmp_tab
        EXCEPTIONS
          CONVERSION_ERROR = 1
          FILE_OPEN_ERROR  = 2
          OTHERS           = 10.
      if sy-subrc <> 0.
        message e398(00) with 'Unable to upload data'.
      endif.
    Validation for Upload file **********************
      read table tmp_tab index 1.
      split tmp_tab-fld1 at ',' into tmp_rec-fld1
                                     tmp_rec-fld2
                                     tmp_rec-fld3
                                     tmp_rec-fld4
                                     tmp_rec-fld5
                                     tmp_rec-fld6
                                     tmp_rec-fld7
                                     tmp_rec-fld8
                                     tmp_rec-fld9
                                     tmp_rec-fld10
                                     tmp_rec-fld11
                                     tmp_rec-fld12
                                     tmp_rec-fld13
                                     tmp_rec-fld14
                                     tmp_rec-fld15
                                     v_tmp.
      if tmp_rec-fld2 <> 'RAWATEB'.
        message e398(00) with 'Invliad file format, cannot upload'.
      endif.
      loop at tmp_tab.
        clear upload_tab.
        v_tmp = tmp_tab-fld1+0(1).
        if v_tmp = 'M' or v_tmp = 'D'.
          split tmp_tab-fld1 at ',' into upload_tab-fld1
                                         upload_tab-fld2
                                         upload_tab-fld3
                                         upload_tab-fld4
                                         upload_tab-fld5
                                         upload_tab-fld6
                                         upload_tab-fld7
                                         upload_tab-fld8
                                         upload_tab-fld9
                                         upload_tab-fld10
                                         upload_tab-fld11
                                         upload_tab-fld12
                                         upload_tab-fld13
                                         upload_tab-fld14
                                         upload_tab-fld15
                                         v_tmp.
          if upload_tab-fld1 = 'M'.
            clear tmp_rec.
            move upload_tab to tmp_rec.
          else.
            clear upload1_tab.
            move upload_tab to upload1_tab.
            upload1_tab-fld10  = tmp_rec-fld2.
            upload1_tab-fld12 = tmp_rec-fld12.
            upload1_tab-fld15 = tmp_rec-fld15.
            append upload1_tab.
          endif.
          append upload_tab.
        endif.
      endloop.
    Mark the already uploaded Transaction to skip ***********
      Loop at upload_tab.
        if upload_tab-fld1 = 'M'.
          v_idx = sy-tabix.
          move upload_tab-fld24(4) to v_budat0(4).
          move upload_tab-fld22(2) to v_budat4(2).
          move upload_tab-fld20(2) to v_budat6(2).
          Select single * from bkpf where BLART = upload_tab-fld3 and
                                          BUKRS = upload_tab-fld4 and
                                          XBLNR = upload_tab-fld12 and
                                          budat = v_budat.
          if sy-subrc = 0.
            do 1000 times.
              clear del_tab.
              move upload_tab to del_tab.
              append del_tab.
              upload_tab-fld16 = '*'.
              modify upload_tab index v_idx.
              v_idx = v_idx + 1.
              Read table upload_tab index v_idx.
              if upload_tab-fld1 = 'M' or sy-subrc <> 0.
                exit.
              endif.
            enddo.
          endif.
        endif.
      endloop.
    ENDFORM.                    "initialise_process
    ====================================================================
    Form : Process_Ord_itab                                            *
    ====================================================================
    FORM process_upload_tab .
      v_flag = 0.
      loop at upload_tab where fld16 <> '*' .
    Performing the Save at the end of Transaction *************
        if upload_tab-fld1 = 'M' and v_flag = 1.
          perform load_save.
          perform bdc_insert.
        endif.
    Putting the Header information of the document ************
        if upload_tab-fld1 = 'M'.
          perform load_header.
          v_date = v_fld5.
          v_rem  = upload_tab-fld14.
          v_flag = 0.
        endif.
    Putting the Detail information of the document ************
        if upload_tab-fld1 = 'D'.
          if upload_tab-fld2 = '40' or upload_tab-fld2 = '50'  .
            perform Load_next.
            v_tmp = v_glcd.
            v_len = strlen( upload_tab-fld3 ).
            If ( v_tmp = '2' or v_tmp = '4' or v_tmp = '0' )  .
              Perform load_ccenter.
            elseif v_flag = 1.
              perform upload_blank.
            endif.
            perform load_Detail.
            v_flag = 1.
            v_glcd = upload_tab-fld3.
            v_ccode = upload_tab-fld9.
          else.
            perform Load_next.
            v_tmp = v_glcd.
            v_len = strlen( upload_tab-fld3 ).
            perform upload_blank.
            perform load_Detail_301.
            v_flag = 0.
            v_glcd = '1'.
          endif.
        endif.
      endloop.
      if v_flag = 1.
        perform load_save.
      endif.
      perform bdc_insert.
      v_upd_flag = 1.
    ENDFORM.                    "process_upload_tab
    ====================================================================
    Form : BDC_OPEN                                                   *
    ====================================================================
    FORM bdc_open.
      call function 'BDC_OPEN_GROUP'
        EXPORTING
          client = sy-mandt
          group  = p_sesid
          user   = p_user
          keep   = 'X'.
    ENDFORM.                    "bdc_open
    ====================================================================
    Form : Fill_BDC_Tab                                                *
    ====================================================================
    FORM fill_bdc_tab using dynbegin
                            name
                            value.
      if dynbegin = 'X'.
        clear bdc_tab.
        move:  name  to bdc_tab-program,
               value to bdc_tab-dynpro,
               'X'   to bdc_tab-dynbegin.
        append bdc_tab.
      else.
        clear bdc_tab.
        move:  name  to bdc_tab-fnam,
               value to bdc_tab-fval.
        append bdc_tab.
      endif.
    ENDFORM.                    "fill_bdc_tab
    ====================================================================
    Form : BDC_INSERT                                                 *
    ====================================================================
    FORM bdc_insert .
      call function 'BDC_INSERT'
        EXPORTING
          tcode     = 'F-02'
        TABLES
          dynprotab = bdc_tab.
      refresh bdc_tab.
      clear bdc_tab.
    ENDFORM.                    "bdc_insert
    ====================================================================
    Form : BDC_CLOSE                                                  *
    ====================================================================
    FORM bdc_close.
      call function 'BDC_CLOSE_GROUP'.
    ENDFORM.                    "bdc_close
    ====================================================================
    Form : Terminate_Process                                          *
    ====================================================================
    FORM terminate_process.
      perform bdc_close.
    ENDFORM.                    "terminate_process
    *&      Form  load_Header
    FORM load_Header.
      If upload_tab-fld1 = 'M'.
        v_fld5 = upload_tab-fld5.
        if p_opt2 = 'X'.
          move p_budat6(2) to v_fld50(2).
          move p_budat4(2) to v_fld52(2).
          move p_budat0(4) to v_fld54(4).
        endif.
        perform fill_bdc_tab using:
         'X' 'SAPMF05A'     '0100',
         ' ' 'BDC_CURSOR'   'RF05A-NEWKO',
         ' ' 'BKPF-BLDAT'    upload_tab-fld2,
         ' ' 'BKPF-BLART'    upload_tab-fld3,
         ' ' 'BKPF-BUKRS'    upload_tab-fld4,
         ' ' 'BKPF-BUDAT'    v_fld5,
         ' ' 'BKPF-WAERS'    upload_tab-fld7,
         ' ' 'BKPF-XBLNR'    upload_tab-fld12,
         ' ' 'BKPF-BKTXT'    upload_tab-fld13.
      Endif.
    ENDFORM.                    "load_Header
    *&      Form  load_Detail
    FORM load_Detail.
      perform fill_bdc_tab using:
       'X' 'SAPMF05A'     '0300',
       ' ' 'BDC_CURSOR'   'BSEG-WRBTR',
       ' ' 'BSEG-WRBTR'    upload_tab-fld4,
      ' ' 'BSEG-VALUT'    v_date,
       ' ' 'BSEG-SGTXT'    v_rem.
    ENDFORM.                    " LOAD_DATA
    *&      Form  load_Detail
    FORM load_Detail_301.
      perform fill_bdc_tab using:
       'X' 'SAPMF05A'     '0301',
       ' ' 'BDC_CURSOR'   'RF05A-NEWUM',
       ' ' 'BSEG-WRBTR'    upload_tab-fld4,
      ' ' 'BSEG-VALUT'    v_date,
       ' ' 'BSEG-SGTXT'    v_rem.
    ENDFORM.                    " LOAD_DATA
    *&      Form  load_Next
    FORM Load_next.
      perform fill_bdc_tab using:
       ' ' 'RF05A-NEWBS'    upload_tab-fld2,
       ' ' 'RF05A-NEWKO'    upload_tab-fld3,
       ' ' 'BDC_OKCODE'   '/00'.
    ENDFORM.                    "Load_next
    *&      Form  load_Save
    FORM Load_save.
      perform fill_bdc_tab using:
      'X' 'SAPMF05A'     '0300',
       ' ' 'BDC_OKCODE'   '=BU'.
      v_tmp = v_glcd.
      v_len = strlen( upload_tab-fld3 ).
      If ( v_tmp = '2' or v_tmp = '4' or v_tmp = '0' )  .
        Perform load_ccenter.
      elseif v_flag = 1.
        perform upload_blank.
      endif.
      perform fill_bdc_tab using:
       'X' 'SAPMF05A'     '0700',
       ' ' 'BDC_OKCODE'   '=BU'.
    ENDFORM.                    "Load_save
    *&      Form  load_CCenter
    FORM Load_Ccenter.
      perform fill_bdc_tab using:
       'X' 'SAPLKACB'     '0002',
       ' ' 'BDC_CURSOR'   'COBL-KOSTL',
      ' ' 'COBL-KOSTL'   '4200-0451',
       ' ' 'COBL-KOSTL'    v_ccode,
      ' ' 'COBL-KOSTL'   '4200-0295',
       ' ' 'BDC_OKCODE'   '/EENTE'.
    ENDFORM.                    "Load_Ccenter
    *&      Form  load_blank
    FORM UpLoad_blank.
      perform fill_bdc_tab using:
       'X' 'SAPLKACB'     '0002',
       ' ' 'BDC_OKCODE'   '/EENTE'.
    ENDFORM.                    "UpLoad_blank

    ur  code  looking  ok..
    just change  it..
    call function <b>'WS_UPLOAD'</b>--->to  <b>gui_upload</b>
    EXPORTING
    FILENAME = p_fl_mct
    FILETYPE = 'ASC'
    TABLES
    data_tab = Tmp_tab
    EXCEPTIONS
    CONVERSION_ERROR = 1
    FILE_OPEN_ERROR = 2
    OTHERS = 10.
    if sy-subrc <> 0.
    message e398(00) with 'Unable to upload data'.
    endif.

  • BDC for FB50L...URGENT

    Hi,
    I am doing the BDC for FB50L but the code doesn't seem to execute...it is giving errors...
    I am attaching the code...Please review it and help me....its really urgent...
    Your help will be really appreciated...
    REPORT  ZTEST_BDC_PARK_ACC_GL.
    DATA:
    t_document_line_item_main LIKE bapiacgl09 OCCURS 100,
    t_document_line_item_enhn LIKE bapiacextc OCCURS 100,
    t_document_line_item_amnt LIKE bapiaccr09 OCCURS 100,
    t_return LIKE bapiret2 OCCURS 100,
    wa_document_header LIKE  bapiache09,
    wa_document_line_item_main LIKE bapiacgl09,
    wa_document_line_item_enhn LIKE bapiacextc,
    wa_document_line_item_amnt LIKE bapiaccr09,
    wa_return LIKE bapiret2.
    DATA: it_bdcdata TYPE TABLE OF bdcdata,
          it_messages TYPE TABLE OF bdcmsgcoll,
          wa_messages TYPE bdcmsgcoll,
          options TYPE ctu_params.
    DATA:  idx TYPE i,
           ch3(5) TYPE c,
           fname(40) TYPE c.
    DATA: indate TYPE d,
          intdate TYPE D.
    CLEAR wa_document_header.
    wa_document_header-obj_type = space.                        "
    wa_document_header-obj_key = space.
    wa_document_header-obj_sys = space.
    wa_document_header-bus_act = 'RFBU'.
    wa_document_header-username = 'INFAUSRTEST'.
    wa_document_header-header_txt = 'BAPI__POST'.
    wa_document_header-comp_code = '1001'.
    wa_document_header-doc_date = '20070814'.
    wa_document_header-pstng_date = '20070814'.
    CLEAR wa_document_header-trans_date.
    CLEAR wa_document_header-fisc_year.
    CLEAR wa_document_header-fis_period.
    wa_document_header-doc_type = 'SY'.
    wa_document_header-ref_doc_no = 'REQUIRED'.
    wa_document_header-ac_doc_no = space.
    wa_document_header-obj_key_r = space.
    wa_document_header-reason_rev = space.
    wa_document_header-compo_acc = space.
    wa_document_header-ref_doc_no_long = space.
    wa_document_header-acc_principle = 'LGAP'.
    wa_document_header-neg_postng = space.
    wa_document_header-obj_key_inv = space.
    wa_document_header-bill_category = space.
    Fill Line Item #1
    CLEAR: wa_document_line_item_main, wa_document_line_item_enhn, wa_document_line_item_amnt.
    Fill Main Portion Of Accounting Line Item
    wa_document_line_item_main-itemno_acc = '1'.         "Accounting Document Line Item Number
    wa_document_line_item_main-gl_account = '2412001067'."HKONT - Account
    wa_document_line_item_main-item_text = 'Test BAPI'.  "SGTXT - Item Text
    wa_document_line_item_main-doc_type = space.         "BLART - Document Type
    wa_document_line_item_main-comp_code = space.        "BUKRS - Company Code
    wa_document_line_item_main-pstng_date = '20070814'.  "BUDAT - Posting Date
    wa_document_line_item_main-alloc_nmbr = space.       "ZUONR - Allocation Number
    wa_document_line_item_main-costcenter = space.       "KOSTL - Cost Center
    wa_document_line_item_main-profit_ctr = space.       "PRCTR - Profit Center
    wa_document_line_item_main-de_cre_ind = 'D'.        "NEWBS - Posting Key / Debit Credit Indicator
    wa_document_line_item_main-trade_id = space.         "RASSC - Company ID Of Trading Partner
    Fill Amount Portion Of Accounting Line Item
    wa_document_line_item_amnt-itemno_acc = '1'.          "Accounting Document Line Item Number
    wa_document_line_item_amnt-curr_type = '00'.          "Currency Type
    wa_document_line_item_amnt-currency = 'USD'.          "WAERS - Currency Key
    wa_document_line_item_amnt-amt_doccur = '239959'.      "WRBTR - Amount In Document Currency Type
    APPEND: wa_document_line_item_main TO t_document_line_item_main,
            wa_document_line_item_amnt TO t_document_line_item_amnt.
    Fill Next Line Item #2
    CLEAR: wa_document_line_item_main, wa_document_line_item_enhn, wa_document_line_item_amnt.
    Fill Main Portion Of Accounting Line Item
    wa_document_line_item_main-itemno_acc = '2'.         "Accounting Document Line Item Number
    wa_document_line_item_main-gl_account = '2412001067'."HKONT - Account
    wa_document_line_item_main-item_text = 'Test BAPI'.  "SGTXT - Item Text
    wa_document_line_item_main-doc_type = space.         "BLART - Document Type
    wa_document_line_item_main-comp_code = space.        "BUKRS - Company Code
    wa_document_line_item_main-pstng_date = '20070814'.  "BUDAT - Posting Date
    wa_document_line_item_main-alloc_nmbr = space.       "ZUONR - Allocation Number
    wa_document_line_item_main-costcenter = space.       "KOSTL - Cost Center
    wa_document_line_item_main-profit_ctr = space.       "PRCTR - Profit Center
    wa_document_line_item_main-de_cre_ind = 'C'.        "NEWBS - Posting Key / Debit Credit Indicator
    wa_document_line_item_main-trade_id = space.         "RASSC - Company ID Of Trading Partner
    Fill Enhancement Portion Of Accounting Line Item
    Fill Amount Portion Of Accounting Line Item
    wa_document_line_item_amnt-itemno_acc = '2'.          "Accounting Document Line Item Number
    wa_document_line_item_amnt-curr_type = '00'.          "Currency Type
    wa_document_line_item_amnt-currency = 'USD'.          "WAERS - Currency Key
    wa_document_line_item_amnt-amt_doccur = '-239959'.     "WRBTR - Amount In Document Currency Type
    APPEND: wa_document_line_item_main TO t_document_line_item_main,
            wa_document_line_item_amnt TO t_document_line_item_amnt.
    *************************BDC PROGRAM**************************************************************
    PERFORM bdc_dynpro TABLES it_bdcdata USING 'SAPMF05A' wa_document_header-comp_code .
    PERFORM bdc_field TABLES it_bdcdata USING 'BDC_OKCODE'
    '=BP'.
      MOVE  wa_document_header-doc_date TO indate.
      CALL FUNCTION 'CONVERT_DATE_TO_INTERNAL'
      EXPORTING
      date_external = indate
      IMPORTING
      date_internal = intdate.
      PERFORM bdc_field TABLES it_bdcdata USING 'ACGL_HEAD-BLDAT'
      INTDATE.
      perform bdc_field TABLES it_bdcdata USING 'ACGL_HEAD-WAERS'
      wa_document_line_item_amnt-currency.
      MOVE  wa_document_header-pstng_date TO indate.
      CALL FUNCTION 'CONVERT_DATE_TO_INTERNAL'
      EXPORTING
      date_external = indate
      IMPORTING
      date_internal = intdate.
      PERFORM bdc_field TABLES it_bdcdata USING 'ACGL_HEAD-BUDAT'
      INTDATE.
      perform bdc_field TABLES it_bdcdata USING 'ACGL_HEAD-XBLNR'
      wa_document_header-ref_doc_no.
      PERFORM bdc_field TABLES it_bdcdata USING 'ACGL_HEAD-BKTXT'
      wa_document_header-header_txt.
      LOOP AT t_document_line_item_main INTO wa_document_line_item_main.
        idx = idx + 1.
        ch3 = idx.
        CONCATENATE 'ACGL_ITEM-HKONT(' ch3 ')' INTO fname.
        CONDENSE fname.
        PERFORM bdc_field TABLES it_bdcdata USING fname
        wa_document_line_item_main-gl_account.
        CONCATENATE 'ACGL_ITEM-SHKZG(' ch3 ')' INTO fname.
        CONDENSE fname.
        PERFORM bdc_field TABLES it_bdcdata USING fname
        wa_document_line_item_main-de_cre_ind.
        CONCATENATE 'ACGL_ITEM-WRBTR(' ch3 ')' INTO fname.
        CONDENSE fname.
        PERFORM bdc_field TABLES it_bdcdata USING fname
        wa_document_line_item_amnt-amt_doccur.
        CONCATENATE 'ACGL_ITEM-SGTXT(' ch3 ')' INTO fname.
        CONDENSE fname.
        PERFORM bdc_field TABLES it_bdcdata USING fname
        wa_document_line_item_main-item_text .
      ENDLOOP.
      options-dismode = 'A'.
      options-nobinpt = 'X'.
      CALL TRANSACTION 'FB50' USING it_bdcdata MESSAGES INTO
      it_messages OPTIONS FROM options.
    Start new screen
    FORM bdc_dynpro TABLES it_bdcdata STRUCTURE bdcdata USING program
    dynpro
      DATA: wa_bdcdata TYPE bdcdata.
      wa_bdcdata-program = program.
      wa_bdcdata-dynpro = dynpro.
      wa_bdcdata-dynbegin = 'X'.
      APPEND wa_bdcdata TO it_bdcdata.
    ENDFORM. "BDC_DYNPRO
    Insert field
    FORM bdc_field TABLES it_bdcdata STRUCTURE bdcdata USING fnam fval.
      DATA: wa_bdcdata TYPE bdcdata.
      IF fval <> space.
        CLEAR wa_bdcdata.
        wa_bdcdata-fnam = fnam.
        wa_bdcdata-fval = fval.
        APPEND wa_bdcdata TO it_bdcdata.
      ENDIF.
    ENDFORM.                    "BDC_FIELD
    Please suggest....
    Thanks

    data : amount(16).
    This below statement is not passing value wa_document_line_item_amnt-amt_doccur into it_bdcdata-fval. So try to move it to a character field and then use the perform statement.
    PERFORM bdc_field TABLES it_bdcdata USING fname
    wa_document_line_item_amnt-amt_doccur.
    change it to:
    WRITE wa_document_line_item_amnt-amt_doccur TO AMOUNT.
    PERFORM bdc_field TABLES it_bdcdata USING fname AMOUNT.
    -Kriss

Maybe you are looking for