BDC recording for transaction 'Me01'

Hi,
Can u help me in BDC recording for transaction 'ME01' .
I have no idea for transaction 'ME01' .
give sample code if possible.
Thanks

For creating source list you will check that purchasing view has been maintained for this material
Source list for resticting, purcasing a material from a specific vendor only for the period specified in source list
Regards,
Amit R.

Similar Messages

  • Bdc recording for trancastion ME01

    Hi,
    Can u help me in BDC recording for transaction 'ME01' .
    I have no idea for transaction 'ME01'  & here i like to know how to handle table ctr during bdc recording?
    give sample code if possible.
    Thanks

    See the sample attached code for ME51 using table control.
    similarly record the same for ME01 and copy the TC logic from this.
    REPORT zmm_pr_upload_mat
    NO STANDARD PAGE HEADING
    LINE-SIZE 255.
    Standard Include for Selection Screen
    INCLUDE bdcrecx1.
    Internal Table for Upload Data
    DATA: BEGIN OF i_pr OCCURS 0,
    Header Screen
    sno(3), " SNo
    bsart(004), " PR Type
    epstp(001), " Item Category
    knttp(001), " Account Assignment
    eeind(010), " Delivery Date
    lpein(001), " Category of Del Date
    werks(004), " Plant
    lgort(004), " Storage Location
    ekgrp(003), " Purchasing Group
    matkl(009), " Material Group
    bednr(010), " Tracking No
    afnam(012), " Requisitioner
    Item Details
    matnr(018), " Material No
    menge(017), " Quantity
    badat(010),
    frgdt(010),
    preis(014), " Valuation Price
    waers(005), " Currency
    peinh(005),
    wepos(001),
    repos(001),
    sakto(010), " GL Account
    kostl(010), " Cost Center
    bnfpo(005),
    END OF i_pr.
    Internal Table for header Data
    DATA: BEGIN OF it_header OCCURS 0,
    sno(3), " SNo
    bsart(004), " PR Type
    epstp(001), " Item Category
    knttp(001), " Account Assignment
    eeind(010), " Delivery Date
    werks(004), " Plant
    lgort(004), " Storage Location
    ekgrp(003), " Purchasing Group
    matkl(009), " Material Group
    bednr(010), " Tracking No
    afnam(012), " Requisitioner
    END OF it_header.
    Internal Table for Item Data
    DATA: BEGIN OF it_item OCCURS 0,
    sno(3), " SNo
    matnr(018), " Material No
    menge(017), " Quantity
    preis(014), " Valuation Price
    sakto(010), " GL Account
    kostl(010), " Cost Center
    END OF it_item.
    Data Variables & Constants
    CONSTANTS : c_x VALUE 'X'. " Flag
    DATA : v_l(2), " Counter
    v_rowno(5), " Row No
    v_2(2), " Counter
    v_rows LIKE sy-srows, " Rows in TC
    v_field(45). " String
    Parameters
    PARAMETERS: p_file LIKE ibipparms-path. " Filename
    At selection-screen on Value Request for file Name
    AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_file.
    Get the F4 Values for the File
    CALL FUNCTION 'F4_FILENAME'
    EXPORTING
    program_name = syst-cprog
    dynpro_number = syst-dynnr
    IMPORTING
    file_name = p_file.
    Start of Selection
    START-OF-SELECTION.
    Open the BDC Session
    PERFORM open_group.
    Upload the File into internal Table
    CALL FUNCTION 'UPLOAD'
    EXPORTING
    filename = p_file
    filetype = 'DAT'
    TABLES
    data_tab = i_pr
    EXCEPTIONS
    conversion_error = 1
    invalid_table_width = 2
    invalid_type = 3
    no_batch = 4
    unknown_error = 5
    gui_refuse_filetransfer = 6
    OTHERS = 7.
    IF sy-subrc <> 0.
    MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
    WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
    ENDIF.
    SORT i_pr BY sno.
    LOOP AT i_pr.
    MOVE-CORRESPONDING i_pr TO it_item.
    APPEND it_item.
    CLEAR it_item.
    AT END OF sno.
    READ TABLE i_pr INDEX sy-tabix.
    MOVE-CORRESPONDING i_pr TO it_header.
    APPEND it_header.
    CLEAR it_header.
    ENDAT.
    ENDLOOP.
    SORT it_header BY sno.
    SORT it_item BY sno.
    v_rows = sy-srows - 6.
    Upload the Data from Internal Table
    LOOP AT it_header.
    Header Data
    PERFORM bdc_dynpro USING 'SAPMM06B' '0100'.
    PERFORM bdc_field USING 'BDC_CURSOR'
    'EBAN-BEDNR'.
    PERFORM bdc_field USING 'BDC_OKCODE'
    '/00'.
    PERFORM bdc_field USING 'EBAN-BSART'
    it_header-bsart.
    PERFORM bdc_field USING 'RM06B-EPSTP'
    it_header-epstp.
    PERFORM bdc_field USING 'EBAN-KNTTP'
    it_header-knttp.
    PERFORM bdc_field USING 'RM06B-EEIND'
    it_header-eeind.
    PERFORM bdc_field USING 'RM06B-LPEIN'
    it_header-lpein.
    PERFORM bdc_field USING 'EBAN-WERKS'
    it_header-werks.
    PERFORM bdc_field USING 'EBAN-LGORT'
    it_header-lgort.
    PERFORM bdc_field USING 'EBAN-EKGRP'
    it_header-ekgrp.
    PERFORM bdc_field USING 'EBAN-MATKL'
    it_header-matkl.
    PERFORM bdc_field USING 'EBAN-BEDNR'
    it_header-bednr.
    PERFORM bdc_field USING 'EBAN-AFNAM'
    it_header-afnam.
    Item Details
    v_l = 0.
    To add no. of rows
    v_2 = 0 .
    As the screen is showing 13 rows defaulted to 130
    v_rowno = 130 .
    LOOP AT it_item WHERE sno = it_header-sno.
    v_l = v_l + 1.
    IF v_l = 14 .
    IF v_2 = 12 .
    v_2 = 12 .
    v_l = 2 .
    From second time onwards it is displaying 12 rows only
    v_rowno = v_rowno + 120 .
    PERFORM bdc_dynpro USING 'SAPMM06B' '0106'.
    PERFORM bdc_field USING 'BDC_CURSOR'
    'RM06B-BNFPO'.
    PERFORM bdc_field USING 'RM06B-BNFPO'
    v_rowno.
    PERFORM bdc_field USING 'BDC_OKCODE'
    '/00'.
    PERFORM bdc_field USING 'BDC_OKCODE'
    '/00'.
    ELSE.
    V_2 initialized to 12 for second screen purpose
    v_2 = 12 .
    v_l = 2 .
    PERFORM bdc_dynpro USING 'SAPMM06B' '0106'.
    PERFORM bdc_field USING 'BDC_CURSOR'
    'RM06B-BNFPO'.
    PERFORM bdc_field USING 'RM06B-BNFPO'
    v_rowno .
    PERFORM bdc_field USING 'BDC_OKCODE'
    '/00'.
    PERFORM bdc_field USING 'BDC_OKCODE'
    '/00'.
    ENDIF.
    ENDIF.
    PERFORM bdc_dynpro USING 'SAPMM06B' '0106'.
    PERFORM bdc_field USING 'BDC_OKCODE'
    '/00'.
    CLEAR v_field.
    CONCATENATE 'EBAN-MATNR(' v_l ')' INTO v_field.
    PERFORM bdc_field USING v_field it_item-matnr.
    CLEAR v_field.
    CONCATENATE 'EBAN-MENGE(' v_l ')' INTO v_field.
    PERFORM bdc_field USING v_field it_item-menge.
    PERFORM bdc_dynpro USING 'SAPMM06B' '0102'.
    PERFORM bdc_field USING 'BDC_CURSOR'
    'EBAN-PREIS'.
    PERFORM bdc_field USING 'BDC_OKCODE'
    '/00'.
    PERFORM bdc_field USING 'EBAN-PREIS'
    it_item-preis.
    PERFORM bdc_dynpro USING 'SAPMM06B' '0505'.
    PERFORM bdc_field USING 'BDC_CURSOR'
    'EBKN-SAKTO'.
    PERFORM bdc_field USING 'BDC_OKCODE'
    '=ENTE'.
    PERFORM bdc_field USING 'EBKN-SAKTO'
    it_item-sakto.
    Cost Center
    PERFORM bdc_dynpro USING 'SAPLKACB' '0002'.
    PERFORM bdc_field USING 'BDC_CURSOR'
    'COBL-KOSTL'.
    PERFORM bdc_field USING 'BDC_OKCODE'
    '=ENTE'.
    PERFORM bdc_field USING 'COBL-KOSTL'
    it_item-kostl.
    PERFORM bdc_field USING 'BDC_OKCODE'
    '=ENTE'.
    ENDLOOP.
    PERFORM bdc_dynpro USING 'SAPMM06B' '0106'.
    PERFORM bdc_field USING 'BDC_CURSOR'
    'RM06B-BNFPO'.
    PERFORM bdc_field USING 'BDC_OKCODE'
    '=BU'.
    Call The Transaction
    PERFORM bdc_transaction USING 'ME51'.
    ENDLOOP.
    Close the BDC Session
    PERFORM close_group.
    reward if useful
    Regards
    Vasu

  • Problem in BDC recording for transaction /J4I/015W3A

    hello all,
    i am recording for transaction /J4I/015W3A it has 4 select options if we enter all select options and press enter it will guide to another screen which has table control . i need the fill the entries there also and save the recording.
    i have completed recording with all the steps.
    if i try to run the report with this recording the problem is that  the first screen  the entries which i have entered in  select options are not defaulted and instead first enter okcode is getting triggered as there are no values on select options and enter is triggered an error message is displayed saying enter all the values .
    how can i over come this problem...........?

    hi,
      while recording, ok code will come first, for each screen you have to kept ok code at last .
      This will work.
    regards,
    pavan

  • BDC Recording for cm07 Transaction

    Hi Everyone,
    I'm doing BDC recording for CM07 transaction. In Recording, i need to give a print command  by specifying the spool title.
    For this, after opening the print window, i need to click the 'properties' button, and then select the spool title and input the value.
    But I'm unable to do the recording of this print dialog box. The recording ends as soon as I give the print command.
    Can anyone please tell me the solution to it.
    Thanks and Regards
    Rishika bawa

    Hi,
    See via transaction SHDB:
    SAPLCORU_S     0100     X
    BDC_OKCODE     BU
                                                           AFRUD-RUECK     0000000000
                                                           AFRUD-AUFNR     100051152
                                                           AFRUD-VORNR     0010
                                                           AFRUD-LMNGA     100,000
                                                           AFRUD-MEINH     PC
                                                           AFRUD-XMNGA     2,000
                                                           AFRUD-ISM01     200
                                                           AFRUD-ILE01     PC
    The table for confirmations is AFRU.
    Best regards,
    Leandro Mengue

  • Problem in creating a BDC program for transaction cj20n(project sytem)

    Hi all,
    I am trying to create project,WBS element ,network and activity using a BDC program,
      I am able to create to a recording for the transaction cj20n using tcode shdb but when i run the recording it doesnt run properly i am not able to create any thing.
    I get error saying that a particular field doesnt exist on the screen.
    Is possible to create a BDC program for transaction CJ20N ?
    Also is there any other alternative  apart from using a BAPI or a function module.
    Thanks,
    Nishant

    Hi,
        Check below link for BAPIs of transaction cj20n.
    [BAPI for cj20n|BAPI for CJ20N transaction]
    Thanks,
    Asit Purbey.

  • Bdc recording for XK02 to change vendor address

    Dear All,
    I am trying to create a bdc recording for XK02 transaction to change Address fields ( Name1 ... Name4 , House num1, street , House number supplement , city , State , Postal code etc .)
    When i open the transaction XK02 by clicking address, I see all the above fields.
    But when i try to create a recording for the same XK02 transaction through SM35, I see House no & Street as one field and House number supplement missing.
    Please let me know how can i update House num1 , Street and House num supplement seperately.
    Thanks,
    Hima

    Please chekc you entry in Country & Region.
    The region should belong to the country.
    Regards
    Bhavesh MIstry

  • Bdc recording for mek1

    hi
    i have been asked to do bdc recording for the transaction mek1 through the call transaction method.can u people plss tell me how to go abt it?

    Hi,
    You can Record using the Tcode SHDB and format the program and use.
    You can use VK11 tcode also which is similar to MEK1.
    see the sample code for VK11 ; You can change as per your requirement.
    report ZSDBDCP_PRICING no standard page heading
           line-size 255.
                               Includes
    include zbdcrecx1.
                              Internal Tables
    *--Internal Table To hold condition records data from flat file.
    Data: begin of it_pricing occurs 0,
           key(4),
           f1(4),
           f2(4),
           f3(2),
           f4(18),
           f5(16),
          end of it_pricing.
    *--Internal Table To hold condition records header  .
    data : begin of it_header occurs 0,
             key(4),
             f1(4),
             f2(4),
             f3(2),
           end of it_header.
    *--Internal Table To hold condition records details .
    data : begin of it_details occurs 0,
            key(4),
            f4(18),
            f5(16),
           end of it_details.
    data : v_sno(2),
           v_rows type i,
           v_fname(40).
    start-of-selection.
    refresh : it_pricing,it_header,it_details.
    clear  : it_pricing,it_header,it_details.
    CALL FUNCTION 'UPLOAD'
          EXPORTING
               FILENAME                = 'C:\WINDOWS\Desktop\pricing.txt'
               FILETYPE                = 'DAT'
          TABLES
               DATA_TAB                = it_pricing
          EXCEPTIONS
               CONVERSION_ERROR        = 1
               INVALID_TABLE_WIDTH     = 2
               INVALID_TYPE            = 3
               NO_BATCH                = 4
               UNKNOWN_ERROR           = 5
               GUI_REFUSE_FILETRANSFER = 6
               OTHERS                  = 7.
      WRITE : / 'Condition Records ', P_FNAME, ' on ', SY-DATUM.
      OPEN DATASET P_FNAME FOR INPUT IN TEXT MODE.
      if sy-subrc ne 0.
        write : / 'File could not be uploaded.. Check file name.'.
        stop.
      endif.
      CLEAR : it_pricing[], it_pricing.
      DO.
        READ DATASET P_FNAME INTO V_STR.
        IF SY-SUBRC NE 0.
          EXIT.
        ENDIF.
    write v_str.
    translate v_str using '#/'.
        SPLIT V_STR AT ',' INTO it_pricing-key
                                it_pricing-F1 it_pricing-F2 it_pricing-F3
                                it_pricing-F4 it_pricing-F5 .
        APPEND it_pricing.
        CLEAR it_pricing.
      ENDDO.
      IF it_pricing[] IS INITIAL.
        WRITE : / 'No data found to upload'.
        STOP.
      ENDIF.
      loop at it_pricing.
        At new key.
          read table it_pricing index sy-tabix.
          move-corresponding it_pricing to it_header.
          append it_header.
          clear it_header.
        endat.
        move-corresponding it_pricing to it_details.
        append it_details.
        clear it_details.
      endloop.
      perform open_group.
      v_rows = sy-srows - 8.
      loop at it_header.
        perform bdc_dynpro      using 'SAPMV13A' '0100'.
        perform bdc_field       using 'BDC_CURSOR'
                                      'RV13A-KSCHL'.
        perform bdc_field       using 'BDC_OKCODE'
                                      '/00'.
        perform bdc_field       using 'RV13A-KSCHL'
                                      it_header-f1.
        perform bdc_dynpro      using 'SAPMV13A' '1004'.
        perform bdc_field       using 'BDC_CURSOR'
                                      'KONP-KBETR(01)'.
        perform bdc_field       using 'BDC_OKCODE'
                                      '/00'.
        perform bdc_field       using 'KOMG-VKORG'
                                      it_header-f2.
        perform bdc_field       using 'KOMG-VTWEG'
                                       it_header-f3.
    **Table Control
        v_sno = 0.
        loop at it_details where key eq it_header-key.
          v_sno = v_sno + 1.
          clear v_fname.
          CONCATENATE 'KOMG-MATNR(' V_SNO ')' INTO V_FNAME.
          perform bdc_field       using v_fname
                                        it_details-f4.
          clear v_fname.
          CONCATENATE 'KONP-KBETR(' V_SNO ')' INTO V_FNAME.
          perform bdc_field       using v_fname
                                        it_details-f5.
          if v_sno eq v_rows.
            v_sno = 0.
            perform bdc_dynpro      using 'SAPMV13A' '1004'.
            perform bdc_field       using 'BDC_OKCODE'
                                     '=P+'.
            perform bdc_dynpro      using 'SAPMV13A' '1004'.
            perform bdc_field       using 'BDC_OKCODE'
                                     '/00'.
          endif.
        endloop.
    *--Save
        perform bdc_dynpro      using 'SAPMV13A' '1004'.
        perform bdc_field       using 'BDC_OKCODE'
                                      '=SICH'.
        perform bdc_transaction using 'VK11'.
      endloop.
      perform close_group.
    Regards,
    Anji

  • Bdc recording for sm30

    Hi,
          I am asked to do bdc recording for the transaction sm30 through call transaction method. Can u please tell me how to do that...

    Hi Buvana,
    While recording just mentioned the tcode as SM30 and then it takes you automaticcaly to that transaction code then enter the table name and press maintain tab and then select new entreis. Enter the values then save it. Press back button. Now it will take return to recording section. now u can able to see the recoding section. Generate the program automaticcaly from the recording. Now take neccessary internal tables and complete the code. Reply for any queries and reward for useful points. Take care while recording. Don't mention any wrong values.
    Regards,
    Kumar.

  • BDC recording for AS01

    hi all,
    how to do bdc recording for AS01.please send me step step by approach.

    Hi Satya,
    Welcome to SDN.
    Check this Sample program.
    REPORT ZASSET .
    INCLUDE ZASSET_INC .
    PARAMETERS: P_PCFILE LIKE RLGRAP-FILENAME.
    *PARAMETERS: P_FILE_S LIKE RLGRAP-FILENAME.
    PARAMETER : H_CHK AS CHECKBOX.
    "Proc Mode
    Include the BDC *
    **BDC DATA STUCTURE
    *DATA: BEGIN OF BDCDATA OCCURS 0.
    INCLUDE STRUCTURE BDCDATA.
    *DATA: END OF BDCDATA.
    messages of call transaction
    *DATA: MESSTAB LIKE BDCMSGCOLL OCCURS 0 WITH HEADER LINE.
    TYPE-POOLS
    TYPE-POOLS TRUXS.
    DATA IT_DATA1 TYPE TRUXS_T_TEXT_DATA.
    DATA : BEGIN OF IT_DATA OCCURS 0,
    INVZU(015),
    ANLKL(008),
    BUKRS(004),
    TXT50(100),
    SERNR(018),
    MENGE(018),
    INKEN(001),
    AKTIV(010),
    KOSTL(010),
    WERKS(004),
    STORT(010),
    ORD41(004),
    ORD42(004),
    EQANZ(001),
    LIFNR(010),
    AFASL(004),
    NDJAR(003),
    AFABG(010),
    ANLGR(012),
    ANLGR2(004),
    ANBTR01_01(016),
    ANBTR01_06(016),
    ANBTR01_16(016),
    TDATE(010),
    TCODE(004),
    TAMT(018),
    PERNR(012),
    KFZKF(015),
    SAP_ASSET(12),
    ERR_ASSET,
    END OF IT_DATA.
    DATA : BEGIN OF IT_DATA2 OCCURS 0,
    INVZU(015),
    TDATE(010),
    TCODE(004),
    TAMT(018),
    END OF IT_DATA2.
    DATA : BEGIN OF IT_DATA3 OCCURS 0,
    ITEM(003),
    INVZU(015),
    ANLKL(010),
    BUKRS(010),
    TXT50(050),
    SERNR(018),
    MENGE(018),
    INKEN(001),
    AKTIV(010),
    KOSTL(010),
    WERKS(004),
    STORT(010),
    ORD41(004),
    ORD42(004),
    EQANZ(001),
    LIFNR(010),
    AFASL(004),
    NDJAR(003),
    AFABG(010),
    ANLGR(012),
    ANLGR2(004),
    ANBTR01_01(016),
    ANBTR01_06(016),
    ANBTR01_16(016),
    TDATE(010),
    TCODE(004),
    TAMT(018),
    SAP_ASSET(12),
    ERR_ASSET,
    END OF IT_DATA3.
    SUB ASSET MASTER TABLE
    DATA : BEGIN OF IT_DATA_SUB OCCURS 0,
    INVZU_M(015),
    INVZU(015),
    BUKRS(004),
    TXT50(100),
    ANLHTXT(050),
    SERNR(018),
    MENGE(018),
    MEINS_007(003),
    XHIST_008(001),
    AKTIV(010),
    GSBER_011(004),
    KOSTL(010),
    STORT(010),
    ORD41(004),
    ORD42(004),
    EQANZ_016(001),
    LIFNR(010),
    LIEFE(030),
    NDJAR(003),
    NDPER(003),
    ANBTR01_01(016),
    ANBTR01_06(016),
    ANBTR01_16(016),
    BZDAT(010),
    BWASL(003),
    ANBTR01(016),
    ANLN1(012),
    ERR_SUB,
    SUB_CODE(012),
    ERR_SUB1,
    END OF IT_DATA_SUB.
    *& At selection-screen on value request for getting f4 help
    AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_PCFILE.
    PERFORM VALUE_REQUEST_P_FILE.
    *AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_FILE_S.
    PERFORM VALUE_REQUEST_P_FILE_S.
    START OF SELECTION *
    START-OF-SELECTION.
    To Upload the flat file datas *
    PERFORM GET_DATA.
    PERFORM UP_LOAD.
    PERFORM SUB_UPLOAD.
    WRITE :/ 'FOLLOWING ASSETS CREATED'.
    WRITE:/ 'OLD ASSET'.
    WRITE: 20 'COMPANY'.
    WRITE: 30 'SAP CODE'.
    LOOP AT IT_DATA WHERE ERR_ASSET NE 'X'.
    WRITE :/ IT_DATA-INVZU,
    20 IT_DATA-BUKRS, 30 IT_DATA-SAP_ASSET.
    ENDLOOP.
    SKIP 2.
    WRITE :/ 'FOLLOWING SUB ASSETS CREATED'.
    WRITE:/ 'OLD ASSET'.
    WRITE: 16 'OLD SUB ASSET'.
    WRITE: 35 'COMPANY'.
    WRITE: 45 'SAP CODE'.
    WRITE: 60 'SUB ASSET'.
    LOOP AT IT_DATA_SUB WHERE ERR_SUB NE 'X' AND ERR_SUB1 NE 'X'.
    WRITE :/ IT_DATA_SUB-INVZU_M,
    16 IT_DATA_SUB-INVZU,
    35 IT_DATA_SUB-BUKRS, 45 IT_DATA_SUB-ANLN1, 60
    *IT_DATA_SUB-SUB_CODE.
    ENDLOOP.
    *& Form value_request_p_file
    FORM VALUE_REQUEST_P_FILE .
    CALL FUNCTION 'F4_FILENAME'
    EXPORTING
    PROGRAM_NAME = SYST-CPROG
    DYNPRO_NUMBER = SYST-DYNNR
    FIELD_NAME = 'x'
    IMPORTING
    FILE_NAME = P_PCFILE.
    ENDFORM. " value_request_p_file
    *& Form UP_LOAD
    text
    --> p1 text
    <-- p2 text
    FORM UP_LOAD .
    SORT IT_DATA BY INVZU.
    SORT IT_DATA2 BY INVZU.
    DATA : V_LEN1 TYPE I, V_LEN2 TYPE I, V_SUBSTR1(50) ,V_SUBSTR2(50).
    perform open_dataset using dataset.
    PERFORM OPEN_GROUP.
    LOOP AT IT_DATA.
    CONDENSE IT_DATA-TXT50.
    V_LEN1 = STRLEN( IT_DATA-TXT50 ).
    IF V_LEN1 > 50.
    V_SUBSTR1 = IT_DATA-TXT50+0(50).
    V_LEN2 = V_LEN1 - 50.
    V_SUBSTR2 = IT_DATA-TXT50+50(50).
    ELSE.
    V_SUBSTR1 = IT_DATA-TXT50.
    V_SUBSTR2 = ''..
    ENDIF.
    REFRESH BDCDATA.
    PERFORM BDC_DYNPRO USING 'SAPLAIST' '0105'.
    PERFORM BDC_FIELD USING 'BDC_CURSOR'
    'ANLA-BUKRS'.
    PERFORM BDC_FIELD USING 'BDC_OKCODE'
    '/00'.
    PERFORM BDC_FIELD USING 'ANLA-ANLKL'
    IT_DATA-ANLKL.
    PERFORM BDC_FIELD USING 'ANLA-BUKRS'
    IT_DATA-BUKRS.
    PERFORM BDC_DYNPRO USING 'SAPLAIST' '1000'.
    PERFORM BDC_FIELD USING 'BDC_OKCODE'
    '=TAB02'.
    PERFORM BDC_FIELD USING 'ANLA-TXT50'
    V_SUBSTR1. "IT_DATA-TXT50.
    PERFORM BDC_FIELD USING 'ANLA-TXA50'
    V_SUBSTR2.
    PERFORM BDC_FIELD USING 'ANLA-SERNR'
    IT_DATA-SERNR.
    PERFORM BDC_FIELD USING 'ANLA-MENGE'
    IT_DATA-MENGE.
    *perform bdc_field using 'ANLA-INKEN'
    record-INKEN_006.
    PERFORM BDC_FIELD USING 'ANLA-INVZU'
    IT_DATA-INVZU.
    PERFORM BDC_FIELD USING 'BDC_CURSOR'
    'ANLA-AKTIV'.
    PERFORM BDC_FIELD USING 'ANLA-AKTIV'
    IT_DATA-AKTIV.
    PERFORM BDC_DYNPRO USING 'SAPLAIST' '1000'.
    PERFORM BDC_FIELD USING 'BDC_OKCODE'
    '=TAB03'.
    PERFORM BDC_FIELD USING 'BDC_CURSOR'
    'ANLZ-PERNR'.
    PERFORM BDC_FIELD USING 'ANLZ-PERNR'
    IT_DATA-PERNR.
    PERFORM BDC_FIELD USING 'ANLZ-KOSTL'
    IT_DATA-KOSTL.
    PERFORM BDC_FIELD USING 'ANLZ-WERKS'
    IT_DATA-WERKS.
    PERFORM BDC_FIELD USING 'ANLZ-STORT'
    IT_DATA-STORT.
    IF IT_DATA-ANLKL = 'VHCL'.
    PERFORM BDC_FIELD USING 'ANLZ-KFZKZ'
    IT_DATA-KFZKF.
    ENDIF.
    PERFORM BDC_DYNPRO USING 'SAPLAIST' '1000'.
    PERFORM BDC_FIELD USING 'BDC_OKCODE'
    '=TAB04'.
    PERFORM BDC_FIELD USING 'BDC_CURSOR'
    'ANLA-ORD42'.
    PERFORM BDC_FIELD USING 'ANLA-ORD41'
    IT_DATA-ORD41.
    PERFORM BDC_FIELD USING 'ANLA-ORD42'
    IT_DATA-ORD42.
    *perform bdc_field using 'RA02S-EQANZ'
    record-EQANZ_014.
    PERFORM BDC_DYNPRO USING 'SAPLAIST' '1000'.
    PERFORM BDC_FIELD USING 'BDC_OKCODE'
    '=TAB06'.
    PERFORM BDC_FIELD USING 'BDC_CURSOR'
    'ANLA-LIFNR'.
    PERFORM BDC_FIELD USING 'ANLA-LIFNR'
    IT_DATA-LIFNR.
    PERFORM BDC_DYNPRO USING 'SAPLAIST' '1000'.
    PERFORM BDC_FIELD USING 'BDC_OKCODE'
    '=TAB08'.
    PERFORM BDC_FIELD USING 'BDC_CURSOR'
    'ANLV-VSART'.
    PERFORM BDC_DYNPRO USING 'SAPLAIST' '1000'.
    PERFORM BDC_FIELD USING 'BDC_OKCODE'
    '=SELZ'.
    PERFORM BDC_FIELD USING 'BDC_CURSOR'
    'RA02S-XAKPLA(02)'.
    PERFORM BDC_DYNPRO USING 'SAPLAIST' '0195'.
    PERFORM BDC_FIELD USING 'BDC_CURSOR'
    'ANLB-AFASL'.
    IF IT_DATA-TCODE IS INITIAL.
    PERFORM BDC_FIELD USING 'BDC_OKCODE'
    '=ALTD'.
    ELSE.
    PERFORM BDC_FIELD USING 'BDC_OKCODE'
    '=ALTB'.
    ENDIF.
    PERFORM BDC_FIELD USING 'ANLB-ANLGR'
    IT_DATA-ANLGR.
    PERFORM BDC_FIELD USING 'ANLB-ANLGR2'
    IT_DATA-ANLGR2.
    PERFORM BDC_DYNPRO USING 'SAPLALTD' '1100'.
    IF IT_DATA-TCODE IS INITIAL.
    PERFORM BDC_FIELD USING 'BDC_OKCODE'
    '=BUCH'.
    PERFORM BDC_FIELD USING 'RALT_DYNP_STRUC-ANBTR01(01)'
    IT_DATA-ANBTR01_01.
    IF H_CHK NE 'X'.
    PERFORM BDC_FIELD USING 'RALT_DYNP_STRUC-ANBTR01(06)'
    IT_DATA-ANBTR01_06.
    ENDIF.
    ELSE.
    PERFORM BDC_FIELD USING 'BDC_OKCODE'
    '=ALTB'.
    PERFORM BDC_DYNPRO USING 'SAPLALTD' '1200'.
    PERFORM BDC_FIELD USING 'BDC_OKCODE'
    '=BUCH'.
    PERFORM BDC_FIELD USING 'RALT_DYNP_STRUC-BZDAT(01)'
    IT_DATA-TDATE.
    PERFORM BDC_FIELD USING 'RALT_DYNP_STRUC-BWASL(01)'
    IT_DATA-TCODE.
    PERFORM BDC_FIELD USING 'RALT_DYNP_STRUC-ANBTR01(01)'
    IT_DATA-TAMT.
    ENDIF.
    REFRESH MESSTAB.
    CALL TRANSACTION 'AS91' USING BDCDATA
    MODE H_MODE
    UPDATE 'S'
    MESSAGES INTO MESSTAB.
    PERFORM BDC_TRANSACTION USING 'AS91'.
    ENDLOOP..
    PERFORM CLOSE_GROUP.
    *perform close_dataset using dataset.
    ENDFORM. " UP_LOAD
    *& Form GET_DATA
    text
    --> p1 text
    <-- p2 text
    FORM GET_DATA .
    CALL FUNCTION 'TEXT_CONVERT_XLS_TO_SAP'
    EXPORTING
    I_TAB_RAW_DATA = IT_DATA1
    I_FILENAME = P_PCFILE
    TABLES
    I_TAB_CONVERTED_DATA = IT_DATA.
    IF SY-SUBRC <> 0.
    MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
    WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
    ENDIF.
    LOOP AT IT_DATA3.
    IF IT_DATA3-ITEM = '1'.
    MOVE-CORRESPONDING IT_DATA3 TO IT_DATA.
    APPEND IT_DATA.
    ELSEIF IT_DATA3-ITEM = '2'.
    IT_DATA2-INVZU = IT_DATA3-INVZU.
    IT_DATA2-TDATE = IT_DATA3-ANLKL.
    IT_DATA2-TCODE = IT_DATA3-BUKRS.
    IT_DATA2-TAMT = IT_DATA3-TXT50.
    APPEND IT_DATA2.
    ENDIF.
    ENDLOOP.
    IF NOT P_FILE_S IS INITIAL.
    CALL FUNCTION 'TEXT_CONVERT_XLS_TO_SAP'
    EXPORTING
    I_TAB_RAW_DATA = IT_DATA1
    I_FILENAME = P_FILE_S
    TABLES
    I_TAB_CONVERTED_DATA = IT_DATA_SUB.
    IF SY-SUBRC <> 0.
    MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
    WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
    ENDIF.
    ENDIF.
    ENDFORM. " GET_DATA
    FORM BDC_DYNPRO
    --> PROGRAM
    --> DYNPRO
    **FORM BDC_DYNPRO USING PROGRAM DYNPRO.
    CLEAR BDCDATA.
    BDCDATA-PROGRAM = PROGRAM.
    BDCDATA-DYNPRO = DYNPRO.
    BDCDATA-DYNBEGIN = 'X'.
    APPEND BDCDATA.
    **ENDFORM. " BDC_DYNPRO
    FORM BDC_FIELD
    --> FNAM
    --> FVAL
    **FORM BDC_FIELD USING FNAM FVAL.
    CLEAR BDCDATA.
    BDCDATA-FNAM = FNAM.
    BDCDATA-FVAL = FVAL.
    APPEND BDCDATA.
    **ENDFORM. "BDC_FIELD
    ***& Form bdc_transaction
    text
    -->TCODE text
    **FORM BDC_TRANSACTION USING TCODE.
    REFRESH MESSTAB.
    CALL TRANSACTION TCODE USING BDCDATA
    MODE H_MODE
    UPDATE 'S'
    MESSAGES INTO MESSTAB.
    **ENDFORM. " bdc_transaction
    *& Form VALUE_REQUEST_P_FILE_S
    text
    --> p1 text
    <-- p2 text
    FORM VALUE_REQUEST_P_FILE_S .
    CALL FUNCTION 'F4_FILENAME'
    EXPORTING
    PROGRAM_NAME = SYST-CPROG
    DYNPRO_NUMBER = SYST-DYNNR
    FIELD_NAME = 'x'
    IMPORTING
    FILE_NAME = P_FILE_S.
    ENDFORM. " VALUE_REQUEST_P_FILE_S
    *& Form sUB_upload
    text
    --> p1 text
    <-- p2 text
    ***FORM SUB_UPLOAD .
    DATA : V_LEN1 TYPE I, V_LEN2 TYPE I, V_SUBSTR1(50) ,V_SUBSTR2(50).
    LOOP AT IT_DATA_SUB WHERE ERR_SUB NE 'X'.
    CONDENSE IT_DATA_SUB-TXT50.
    V_LEN1 = STRLEN( IT_DATA_SUB-TXT50 ).
    IF V_LEN1 > 50.
    V_SUBSTR1 = IT_DATA_SUB-TXT50+0(50).
    V_LEN2 = V_LEN1 - 50.
    V_SUBSTR2 = IT_DATA_SUB-TXT50+50(50).
    ELSE.
    V_SUBSTR1 = IT_DATA_SUB-TXT50.
    V_SUBSTR2 = ''..
    ENDIF.
    REFRESH BDCDATA.
    PERFORM BDC_DYNPRO USING 'SAPLAIST' '0110'.
    PERFORM BDC_FIELD USING 'BDC_CURSOR'
    'ANLA-ANLN1'.
    PERFORM BDC_FIELD USING 'BDC_OKCODE'
    '=MAST'.
    PERFORM BDC_FIELD USING 'ANLA-ANLN1'
    IT_DATA_SUB-ANLN1.
    PERFORM BDC_FIELD USING 'ANLA-BUKRS'
    IT_DATA_SUB-BUKRS.
    PERFORM BDC_DYNPRO USING 'SAPLAIST' '1000'.
    PERFORM BDC_FIELD USING 'BDC_OKCODE'
    '=TAB02'.
    PERFORM BDC_FIELD USING 'ANLA-TXT50'
    V_SUBSTR1. "IT_DATA_SUB-TXT50.
    PERFORM BDC_FIELD USING 'ANLA-TXa50'
    V_SUBSTR2. "IT_DATA_SUB-TXT50.
    ****perform bdc_field using 'ANLH-ANLHTXT'
    it_data_sub-ANLHTXT_004.
    PERFORM BDC_FIELD USING 'ANLA-SERNR'
    IT_DATA_SUB-SERNR.
    PERFORM BDC_FIELD USING 'ANLA-MENGE'
    IT_DATA_SUB-MENGE.
    ****perform bdc_field using 'ANLA-MEINS'
    it_data_sub-MEINS_007.
    ****perform bdc_field using 'RA02S-XHIST'
    it_data_sub-XHIST_008.
    PERFORM BDC_FIELD USING 'ANLA-INVZU'
    IT_DATA_SUB-INVZU.
    PERFORM BDC_FIELD USING 'BDC_CURSOR'
    'ANLA-AKTIV'.
    PERFORM BDC_FIELD USING 'ANLA-AKTIV'
    IT_DATA_SUB-AKTIV.
    PERFORM BDC_DYNPRO USING 'SAPLAIST' '1000'.
    PERFORM BDC_FIELD USING 'BDC_OKCODE'
    '=TAB03'.
    PERFORM BDC_FIELD USING 'BDC_CURSOR'
    'ANLZ-GSBER'.
    ****perform bdc_field using 'ANLZ-GSBER'
    it_data_sub-GSBER_011.
    ****perform bdc_field using 'ANLZ-KOSTL'
    it_data_sub-KOSTL_012.
    PERFORM BDC_FIELD USING 'ANLZ-STORT'
    IT_DATA_SUB-STORT.
    PERFORM BDC_DYNPRO USING 'SAPLAIST' '1000'.
    PERFORM BDC_FIELD USING 'BDC_OKCODE'
    '=TAB04'.
    PERFORM BDC_FIELD USING 'BDC_CURSOR'
    'ANLA-ORD41'.
    PERFORM BDC_FIELD USING 'ANLA-ORD41'
    IT_DATA_SUB-ORD41.
    PERFORM BDC_FIELD USING 'ANLA-ORD42'
    IT_DATA_SUB-ORD42.
    ****perform bdc_field using 'RA02S-EQANZ'
    it_data_sub-EQANZ_016.
    PERFORM BDC_DYNPRO USING 'SAPLAIST' '1000'.
    PERFORM BDC_FIELD USING 'BDC_OKCODE'
    '=TAB07'.
    PERFORM BDC_FIELD USING 'BDC_CURSOR'
    'ANLA-LIFNR'.
    PERFORM BDC_FIELD USING 'ANLA-LIFNR'
    IT_DATA_SUB-LIFNR.
    ****perform bdc_field using 'ANLA-LIEFE'
    IT_DATA_SUB-LIEFE.
    PERFORM BDC_DYNPRO USING 'SAPLAIST' '1000'.
    PERFORM BDC_FIELD USING 'BDC_OKCODE'
    '=TAB08'.
    PERFORM BDC_FIELD USING 'BDC_CURSOR'
    'ANLA-LEART'.
    PERFORM BDC_DYNPRO USING 'SAPLAIST' '1000'.
    PERFORM BDC_FIELD USING 'BDC_OKCODE'
    '=SELZ'.
    PERFORM BDC_FIELD USING 'BDC_CURSOR'
    'T093T-AFBKTX(01)'.
    PERFORM BDC_DYNPRO USING 'SAPLAIST' '0195'.
    PERFORM BDC_FIELD USING 'BDC_CURSOR'
    'ANLB-NDPER'.
    PERFORM BDC_FIELD USING 'BDC_OKCODE'
    '=ALTD'.
    PERFORM BDC_FIELD USING 'ANLB-NDJAR'
    IT_DATA_SUB-NDJAR.
    PERFORM BDC_FIELD USING 'ANLB-NDPER'
    IT_DATA_SUB-NDPER.
    ****perform bdc_field using 'ANLB-AFABG'
    record-AFABG_029.
    PERFORM BDC_DYNPRO USING 'SAPLALTD' '1100'.
    PERFORM BDC_FIELD USING 'BDC_CURSOR'
    'ANLA-ANLN1'.
    IF IT_DATA_SUB-BWASL IS INITIAL.
    PERFORM BDC_FIELD USING 'BDC_OKCODE'
    '=BUCH'.
    PERFORM BDC_FIELD USING 'RALT_DYNP_STRUC-ANBTR01(01)'
    IT_DATA_SUB-ANBTR01_01.
    Accu deprn automatically calculated by system changed on 6th Aug.
    PERFORM BDC_FIELD USING 'RALT_DYNP_STRUC-ANBTR01(06)'
    IT_DATA_SUB-ANBTR01_06.
    ELSE.
    PERFORM BDC_FIELD USING 'BDC_OKCODE'
    '=ALTB'.
    PERFORM BDC_DYNPRO USING 'SAPLALTD' '1200'.
    PERFORM BDC_FIELD USING 'BDC_OKCODE'
    '/00'.
    PERFORM BDC_FIELD USING 'RALT_DYNP_STRUC-BZDAT(01)'
    IT_DATA_SUB-BZDAT.
    PERFORM BDC_FIELD USING 'RALT_DYNP_STRUC-BWASL(01)'
    IT_DATA_SUB-BWASL.
    PERFORM BDC_FIELD USING 'RALT_DYNP_STRUC-ANBTR01(01)'
    IT_DATA_SUB-ANBTR01.
    PERFORM BDC_DYNPRO USING 'SAPLALTD' '1200'.
    PERFORM BDC_FIELD USING 'BDC_CURSOR'
    'ANLA-ANLN1'.
    PERFORM BDC_FIELD USING 'BDC_OKCODE'
    '=BUCH'.
    ****perform bdc_transaction using 'AS94'.
    ENDIF.
    REFRESH MESSTAB.
    CALL TRANSACTION 'AS94' USING BDCDATA
    MODE H_MODE
    UPDATE 'S'
    MESSAGES INTO MESSTAB.
    IF SY-SUBRC = 0.
    READ TABLE MESSTAB INDEX 1.
    IT_DATA_sub-SUB_CODE = MESSTAB-MSGV1.
    DATA AN1 TYPE ANLN1.
    DATA AN2 TYPE ANLN2.
    GET PARAMETER ID 'AN2' FIELD AN2.
    IT_DATA_SUB-SUB_CODE = AN2. "MESSTAB-MSGV1.
    MODIFY IT_DATA_SUB TRANSPORTING SUB_CODE.
    ELSE.
    IT_DATA_SUB-ERR_SUB1 = 'X'.
    MODIFY IT_DATA_SUB TRANSPORTING ERR_SUB1.
    ENDIF.
    REFRESH BDCDATA.
    ENDLOOP.
    ***ENDFORM. " sUB_upload
    ****& Form SUB_UPLOAD1
    text
    ***FORM SUB_UPLOAD1 .
    LOOP AT IT_DATA_SUB WHERE ERR_SUB NE 'X'.
    PERFORM BDC_DYNPRO USING 'SAPLAIST' '0110'.
    PERFORM BDC_FIELD USING 'BDC_CURSOR'
    'ANLA-ANLN1'.
    PERFORM BDC_FIELD USING 'BDC_OKCODE'
    '=MAST'.
    PERFORM BDC_FIELD USING 'ANLA-ANLN1'
    IT_DATA_SUB-ANLN1.
    PERFORM BDC_FIELD USING 'ANLA-BUKRS'
    IT_DATA_SUB-BUKRS.
    PERFORM BDC_DYNPRO USING 'SAPLAIST' '1000'.
    PERFORM BDC_FIELD USING 'BDC_OKCODE'
    '=TAB02'.
    PERFORM BDC_FIELD USING 'ANLA-TXT50'
    IT_DATA_SUB-TXT50.
    ****perform bdc_field using 'ANLH-ANLHTXT'
    it_data_sub-ANLHTXT_004.
    PERFORM BDC_FIELD USING 'ANLA-SERNR'
    IT_DATA_SUB-SERNR.
    PERFORM BDC_FIELD USING 'ANLA-MENGE'
    IT_DATA_SUB-MENGE.
    ****perform bdc_field using 'ANLA-MEINS'
    it_data_sub-MEINS_007.
    ****perform bdc_field using 'RA02S-XHIST'
    it_data_sub-XHIST_008.
    PERFORM BDC_FIELD USING 'ANLA-INVZU'
    IT_DATA_SUB-INVZU.
    PERFORM BDC_FIELD USING 'BDC_CURSOR'
    'ANLA-AKTIV'.
    PERFORM BDC_FIELD USING 'ANLA-AKTIV'
    IT_DATA_SUB-AKTIV.
    PERFORM BDC_DYNPRO USING 'SAPLAIST' '1000'.
    PERFORM BDC_FIELD USING 'BDC_OKCODE'
    '=TAB03'.
    PERFORM BDC_FIELD USING 'BDC_CURSOR'
    'ANLZ-GSBER'.
    ****perform bdc_field using 'ANLZ-GSBER'
    it_data_sub-GSBER_011.
    ****perform bdc_field using 'ANLZ-KOSTL'
    it_data_sub-KOSTL_012.
    PERFORM BDC_FIELD USING 'ANLZ-STORT'
    IT_DATA_SUB-STORT.
    PERFORM BDC_DYNPRO USING 'SAPLAIST' '1000'.
    PERFORM BDC_FIELD USING 'BDC_OKCODE'
    '=TAB04'.
    PERFORM BDC_FIELD USING 'BDC_CURSOR'
    'ANLA-ORD41'.
    PERFORM BDC_FIELD USING 'ANLA-ORD41'
    IT_DATA_SUB-ORD41.
    PERFORM BDC_FIELD USING 'ANLA-ORD42'
    IT_DATA_SUB-ORD42.
    ****perform bdc_field using 'RA02S-EQANZ'
    it_data_sub-EQANZ_016.
    PERFORM BDC_DYNPRO USING 'SAPLAIST' '1000'.
    PERFORM BDC_FIELD USING 'BDC_OKCODE'
    '=TAB07'.
    PERFORM BDC_FIELD USING 'BDC_CURSOR'
    'ANLA-LIFNR'.
    PERFORM BDC_FIELD USING 'ANLA-LIFNR'
    IT_DATA_SUB-LIFNR.
    ****perform bdc_field using 'ANLA-LIEFE'
    IT_DATA_SUB-LIEFE.
    PERFORM BDC_DYNPRO USING 'SAPLAIST' '1000'.
    PERFORM BDC_FIELD USING 'BDC_OKCODE'
    '=TAB08'.
    PERFORM BDC_FIELD USING 'BDC_CURSOR'
    'ANLA-LEART'.
    PERFORM BDC_DYNPRO USING 'SAPLAIST' '1000'.
    PERFORM BDC_FIELD USING 'BDC_OKCODE'
    '=SELZ'.
    PERFORM BDC_FIELD USING 'BDC_CURSOR'
    'T093T-AFBKTX(01)'.
    PERFORM BDC_DYNPRO USING 'SAPLAIST' '0195'.
    PERFORM BDC_FIELD USING 'BDC_CURSOR'
    'ANLB-NDPER'.
    PERFORM BDC_FIELD USING 'BDC_OKCODE'
    '=ALTD'.
    PERFORM BDC_FIELD USING 'ANLB-NDJAR'
    IT_DATA_SUB-NDJAR.
    PERFORM BDC_FIELD USING 'ANLB-NDPER'
    IT_DATA_SUB-NDPER.
    ****perform bdc_field using 'ANLB-AFABG'
    record-AFABG_029.
    PERFORM BDC_DYNPRO USING 'SAPLALTD' '1100'.
    PERFORM BDC_FIELD USING 'BDC_CURSOR'
    'ANLA-ANLN1'.
    PERFORM BDC_FIELD USING 'BDC_OKCODE'
    '=ALTB'.
    PERFORM BDC_FIELD USING 'RALT_DYNP_STRUC-ANBTR01(01)'
    IT_DATA_SUB-ANBTR01_01.
    PERFORM BDC_FIELD USING 'RALT_DYNP_STRUC-ANBTR01(06)'
    IT_DATA_SUB-ANBTR01_06.
    PERFORM BDC_DYNPRO USING 'SAPLALTD' '1200'.
    PERFORM BDC_FIELD USING 'BDC_OKCODE'
    '/00'.
    PERFORM BDC_FIELD USING 'RALT_DYNP_STRUC-BZDAT(01)'
    IT_DATA_SUB-BZDAT.
    PERFORM BDC_FIELD USING 'RALT_DYNP_STRUC-BWASL(01)'
    IT_DATA_SUB-BWASL.
    PERFORM BDC_FIELD USING 'RALT_DYNP_STRUC-ANBTR01(01)'
    IT_DATA_SUB-ANBTR01.
    PERFORM BDC_DYNPRO USING 'SAPLALTD' '1200'.
    PERFORM BDC_FIELD USING 'BDC_CURSOR'
    'ANLA-ANLN1'.
    PERFORM BDC_FIELD USING 'BDC_OKCODE'
    '=BUCH'.
    ****perform bdc_transaction using 'AS94'.
    REFRESH MESSTAB.
    CALL TRANSACTION 'AS94' USING BDCDATA
    MODE H_MODE
    UPDATE 'S'
    MESSAGES INTO MESSTAB.
    IF SY-SUBRC = 0.
    READ TABLE MESSTAB INDEX 1.
    IT_DATA_sub-SUB_CODE = MESSTAB-MSGV1.
    DATA AN1 TYPE ANLN1.
    DATA AN2 TYPE ANLN2.
    GET PARAMETER ID 'AN2' FIELD AN2.
    IT_DATA_SUB-SUB_CODE = AN2. "MESSTAB-MSGV1.
    MODIFY IT_DATA_SUB TRANSPORTING SUB_CODE.
    ELSE.
    IT_DATA_SUB-ERR_SUB1 = 'X'.
    MODIFY IT_DATA_SUB TRANSPORTING ERR_SUB1.
    ENDIF.
    REFRESH BDCDATA.
    ENDLOOP.
    ***ENDFORM. " sUB_upload
    and one more thing i face some issues when doing bdc for AS01, so i use AS91 and AS92 for uploading by using LSMW (direct input method and recording method) and it was successful.(if u have to do coding go for BDC/BAPI or there is no coding better to choose LSMW (it is the easiest way) as of my knowledge, so before starting just analyze once which method is best for ur requirement.
    Reward Points for Useful Answers
    Thanks
    Naveen khan
    Message was edited by:
            Pattan Naveen

  • BDC code for transaction XD01

    Hi all,
    Can anyone of you provide me complete BDC code for Transaction XD01.
    An early reply will be highly appreciated and would be rewarded.
    Regards,
    Neeraj

    Hi Prakash
    hope this code will help you.
    ABAP BDC SAMPLE CODE XD01
    Table/Structure declarations. *
    TABLES : KNA1. "Customer master
    Constants declarations. *
    CONSTANTS : C_MODE VALUE 'A',
    C_UPDATE VALUE 'S',
    C_X VALUE 'X',
    C_SESS TYPE APQI-GROUPID VALUE 'ZCUSTOMER', "Session Name
    C_XD01 LIKE TSTC-TCODE VALUE 'XD01'.
    Variable declarations. *
    DATA : V_FNAME(15) VALUE SPACE, " Name of file to be created
    V_FAILREC TYPE I, " No of failed records
    V_MSG(255), " Message Text
    V_ERRREC TYPE I, " No of failed records
    V_LINES TYPE I, " No of records
    V_BANKS(15), " Table column BANKS
    V_BANKL(15), " Table column BANKL
    V_BANKN(15), " Table column BANKN
    V_TIDX(2) TYPE N. " Table row index
    *-- FLAG DECLARATIONS
    DATA : FG_DATA_EXIST VALUE 'X', " Check for data
    FG_SESSION_OPEN VALUE ' '. " Check for Session Open
    *-- MACRO DEFINITIONS
    *-- Macro for BANKS
    DEFINE BANKS.
    CLEAR V_BANKS.
    CONCATENATE 'KNBK-BANKS(' &1 ')' INTO V_BANKS.
    CONDENSE V_BANKS.
    END-OF-DEFINITION.
    *-- Macro for BANKL
    DEFINE BANKL.
    CLEAR V_BANKL.
    CONCATENATE 'KNBK-BANKL(' &1 ')' INTO V_BANKL.
    CONDENSE V_BANKL.
    END-OF-DEFINITION.
    *-- Macro for BANKN
    DEFINE BANKN.
    CLEAR V_BANKN.
    CONCATENATE 'KNBK-BANKN(' &1 ')' INTO V_BANKN.
    CONDENSE V_BANKN.
    END-OF-DEFINITION.
    Structures / Internal table declarations *
    *-- Structure to hold BDC data
    TYPES : BEGIN OF T_BDCTABLE.
    INCLUDE STRUCTURE BDCDATA.
    TYPES END OF T_BDCTABLE.
    *-- Structure to trap BDC messages
    TYPES : BEGIN OF T_MSG.
    INCLUDE STRUCTURE BDCMSGCOLL.
    TYPES : END OF T_MSG.
    *-- Structure to trap ERROR messages
    TYPES : BEGIN OF T_ERR_MSG,
    MESSAGE(255),
    END OF T_ERR_MSG.
    *--Internal table to store flat file data
    DATA : BEGIN OF IT_KNA1 OCCURS 0,
    KUNNR LIKE KNA1-KUNNR,
    KTOKD LIKE T077D-KTOKD,
    NAME1 LIKE KNA1-NAME1,
    SORTL LIKE KNA1-SORTL,
    ORT01 LIKE KNA1-ORT01,
    PSTLZ LIKE KNA1-PSTLZ,
    LAND1 LIKE KNA1-LAND1,
    SPRAS LIKE KNA1-SPRAS,
    LZONE LIKE KNA1-LZONE,
    END OF IT_KNA1.
    *--Internal table to store bank details
    DATA : BEGIN OF IT_BANK OCCURS 0,
    BANKS LIKE KNBK-BANKS,
    BANKL LIKE KNBK-BANKL,
    BANKN LIKE KNBK-BANKN,
    END OF IT_BANK.
    *-- Internal table to hold BDC data
    DATA: IT_BDCDATA TYPE STANDARD TABLE OF T_BDCTABLE WITH HEADER LINE,
    *-- Internal Table to store ALL messages
    IT_MSG TYPE STANDARD TABLE OF T_MSG WITH HEADER LINE,
    *-- Internal Table to store error messages
    IT_ERR_MSG TYPE STANDARD TABLE OF T_ERR_MSG WITH HEADER LINE.
    Selection Screen. *
    SELECTION-SCREEN BEGIN OF BLOCK B1 WITH FRAME TITLE TEXT-001.
    PARAMETERS : P_FLNAME(15) OBLIGATORY.
    SELECTION-SCREEN END OF BLOCK B1.
    SELECTION-SCREEN BEGIN OF BLOCK B2 WITH FRAME TITLE TEXT-002.
    SELECTION-SCREEN BEGIN OF LINE.
    PARAMETERS : R_LIST RADIOBUTTON GROUP GRP1.
    SELECTION-SCREEN COMMENT 5(20) TEXT-003.
    PARAMETERS : R_SESS RADIOBUTTON GROUP GRP1.
    SELECTION-SCREEN COMMENT 30(20) TEXT-004.
    SELECTION-SCREEN END OF LINE.
    SELECTION-SCREEN END OF BLOCK B2.
    Event:Initialization *
    INITIALIZATION.
    AT Selection Screen. *
    AT SELECTION-SCREEN.
    Event: Start-of-Selection *
    START-OF-SELECTION.
    V_FNAME = P_FLNAME.
    PERFORM GET_DATA.
    PERFORM GET_BANKDATA.
    PERFORM GENERATE_DATASET.
    Event: End-of-Selection *
    END-OF-SELECTION.
    IF FG_DATA_EXIST = ' '.
    MESSAGE I010 WITH TEXT-009.
    EXIT.
    ENDIF.
    PERFORM GENERATE_BDCDATA.
    PERFORM DISPLAY_ERR_RECS.
    Event: top-of-page
    TOP-OF-PAGE.
    FORM DEFINITIONS *
    *& Form get_data
    Subroutine to get the data from mard
    --> p1 text
    <-- p2 text
    FORM GET_DATA.
    CALL FUNCTION 'UPLOAD'
    EXPORTING
    CODEPAGE = ' '
    FILENAME = 'C:\XD01.TXT'
    FILETYPE = 'DAT'
    ITEM = ' '
    FILEMASK_MASK = ' '
    FILEMASK_TEXT = ' '
    FILETYPE_NO_CHANGE = ' '
    FILEMASK_ALL = ' '
    FILETYPE_NO_SHOW = ' '
    LINE_EXIT = ' '
    USER_FORM = ' '
    USER_PROG = ' '
    SILENT = 'S'
    IMPORTING
    FILESIZE =
    CANCEL =
    ACT_FILENAME =
    ACT_FILETYPE =
    TABLES
    DATA_TAB = IT_KNA1
    EXCEPTIONS
    CONVERSION_ERROR = 1
    INVALID_TABLE_WIDTH = 2
    INVALID_TYPE = 3
    NO_BATCH = 4
    UNKNOWN_ERROR = 5
    GUI_REFUSE_FILETRANSFER = 6
    OTHERS = 7
    IF SY-SUBRC <> 0.
    MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
    WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
    ENDIF.
    IF IT_KNA1[] IS INITIAL.
    FG_DATA_EXIST = ' '.
    ENDIF.
    ENDFORM. " get_data
    *& Form GENERATE_DATASET
    text
    --> p1 text
    <-- p2 text
    FORM GENERATE_DATASET.
    MESSAGE I010 WITH 'OPENING FILE IN APPLICATION SERVER'.
    **--Creating a data set in application server
    OPEN DATASET V_FNAME FOR OUTPUT IN TEXT MODE ENCODING DEFAULT.
    **---Transfering data from internal table to dataset
    MESSAGE I010 WITH 'TRANSFERING DATA FROM INETERAL TABLE TO THE FILE'.
    LOOP AT IT_KNA1.
    TRANSFER IT_KNA1 TO V_FNAME.
    ENDLOOP.
    **--Closing the dataset
    MESSAGE I010 WITH 'CLOSING THE FILE'.
    CLOSE DATASET V_FNAME.
    ENDFORM. " GENERATE_DATASET
    *& Form BDC_DYNPRO
    text
    -->P_0467 text
    -->P_0468 text
    FORM BDC_DYNPRO USING PROGRAM DYNPRO.
    CLEAR IT_BDCDATA.
    IT_BDCDATA-PROGRAM = PROGRAM.
    IT_BDCDATA-DYNPRO = DYNPRO.
    IT_BDCDATA-DYNBEGIN = 'X'.
    APPEND IT_BDCDATA.
    ENDFORM.
    *& Form BDC_FIELD
    text
    -->P_0472 text
    -->P_0473 text
    FORM BDC_FIELD USING FNAM FVAL.
    IF NOT FVAL IS INITIAL.
    CLEAR IT_BDCDATA.
    IT_BDCDATA-FNAM = FNAM.
    IT_BDCDATA-FVAL = FVAL.
    APPEND IT_BDCDATA.
    ENDIF.
    ENDFORM.
    *& Form GENERATE_BDCDATA
    text
    --> p1 text
    <-- p2 text
    FORM GENERATE_BDCDATA.
    REFRESH IT_KNA1.
    Opening dataset for reading
    OPEN DATASET V_FNAME FOR INPUT IN TEXT MODE ENCODING DEFAULT.
    Reading the file from application server
    DO.
    CLEAR: IT_KNA1,IT_BDCDATA.
    REFRESH IT_BDCDATA.
    READ DATASET V_FNAME INTO IT_KNA1.
    IF SY-SUBRC <> 0.
    EXIT.
    ELSE.
    Populate BDC Data for Initial Screen
    PERFORM : BDC_DYNPRO USING 'SAPMF02D' '0100',
    BDC_FIELD USING 'BDC_CURSOR' 'RF02D-KUNNR',
    BDC_FIELD USING 'BDC_OKCODE' '/00',
    BDC_FIELD USING 'RF02D-KUNNR' IT_KNA1-KUNNR,
    BDC_FIELD USING 'RF02D-KTOKD' IT_KNA1-KTOKD.
    Populate BDC Data for Second Screen
    PERFORM : BDC_DYNPRO USING 'SAPMF02D' '0110',
    BDC_FIELD USING 'BDC_CURSOR' 'KNA1-NAME1',
    BDC_FIELD USING 'BDC_OKCODE' '/00',
    BDC_FIELD USING 'KNA1-NAME1' IT_KNA1-NAME1,
    BDC_FIELD USING 'KNA1-SORTL' IT_KNA1-SORTL,
    BDC_FIELD USING 'KNA1-ORT01' IT_KNA1-ORT01,
    BDC_FIELD USING 'KNA1-PSTLZ' IT_KNA1-PSTLZ,
    BDC_FIELD USING 'KNA1-LAND1' IT_KNA1-LAND1,
    BDC_FIELD USING 'KNA1-SPRAS' IT_KNA1-SPRAS.
    Populate BDC Data for Third Screen
    PERFORM : BDC_DYNPRO USING 'SAPMF02D' '0120',
    BDC_FIELD USING 'BDC_CURSOR' 'KNA1-LZONE',
    BDC_FIELD USING 'BDC_OKCODE' '/00',
    BDC_FIELD USING 'KNA1-LZONE' IT_KNA1-LZONE.
    Populate BDC Data for Fourth Screen
    PERFORM : BDC_DYNPRO USING 'SAPMF02D' '0125',
    BDC_FIELD USING 'BDC_CURSOR' 'KNA1-NIELS',
    BDC_FIELD USING 'BDC_OKCODE' '/00'.
    Populate BDC Data for Table control for bank details.
    V_TIDX = '01'.
    LOOP AT IT_BANK.
    BANKS V_TIDX.
    BANKL V_TIDX.
    BANKN V_TIDX.
    PERFORM : BDC_DYNPRO USING 'SAPMF02D' '0130',
    BDC_FIELD USING 'BDC_CURSOR' V_BANKN,
    BDC_FIELD USING 'BDC_OKCODE' '=ENTR',
    BDC_FIELD USING V_BANKS IT_BANK-BANKS,
    BDC_FIELD USING V_BANKL IT_BANK-BANKL,
    BDC_FIELD USING V_BANKN IT_BANK-BANKN.
    V_TIDX = V_TIDX + 1.
    ENDLOOP.
    PERFORM : BDC_DYNPRO USING 'SAPMF02D' '0130',
    BDC_FIELD USING 'BDC_CURSOR' V_BANKS,
    BDC_FIELD USING 'BDC_OKCODE' '=UPDA'.
    CALL TRANSACTION C_XD01 USING IT_BDCDATA
    MODE C_MODE
    UPDATE C_UPDATE
    MESSAGES INTO IT_MSG.
    IF SY-SUBRC <> 0.
    *--In case of error list display
    IF R_LIST = C_X.
    V_ERRREC = V_ERRREC + 1.
    PERFORM FORMAT_MESSAGE.
    IT_ERR_MSG-MESSAGE = V_MSG.
    APPEND IT_ERR_MSG.
    CLEAR : V_MSG,IT_ERR_MSG.
    ENDIF.
    *--In case of session log
    IF R_SESS = C_X.
    *-- In case of transaction fails.
    IF FG_SESSION_OPEN = ' '.
    FG_SESSION_OPEN = C_X.
    PERFORM BDC_OPEN_GROUP.
    ENDIF. " IF FG_SESSION_OPEN = ' '.
    *-- Insert BDC Data..
    PERFORM BDC_INSERT_DATA.
    ENDIF. " IF R_SESS = C_X.
    ENDIF. " IF SY-SUBRC <> 0.
    ENDIF. " IF SY-SUBRC <> 0.
    ENDDO.
    Closing the dataset
    CLOSE DATASET V_FNAME.
    *-- Close the session if opened
    IF FG_SESSION_OPEN = C_X.
    PERFORM BDC_CLOSE_GROUP.
    CALL TRANSACTION 'SM35'.
    ENDIF.
    ENDFORM. " GENERATE_BDCDATA
    *& Form BDC_OPEN_GROUP
    text
    --> p1 text
    <-- p2 text
    FORM BDC_OPEN_GROUP.
    CALL FUNCTION 'BDC_OPEN_GROUP'
    EXPORTING
    CLIENT = SY-MANDT
    DEST = FILLER8
    GROUP = C_SESS
    HOLDDATE = FILLER8
    KEEP = C_X
    USER = SY-UNAME
    RECORD = FILLER1
    IMPORTING
    QID =
    EXCEPTIONS
    CLIENT_INVALID = 1
    DESTINATION_INVALID = 2
    GROUP_INVALID = 3
    GROUP_IS_LOCKED = 4
    HOLDDATE_INVALID = 5
    INTERNAL_ERROR = 6
    QUEUE_ERROR = 7
    RUNNING = 8
    SYSTEM_LOCK_ERROR = 9
    USER_INVALID = 10
    OTHERS = 11
    IF SY-SUBRC <> 0.
    MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
    WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
    ENDIF.
    ENDFORM. " BDC_OPEN_GROUP
    *& Form BDC_INSERT_DATA
    text
    --> p1 text
    <-- p2 text
    FORM BDC_INSERT_DATA.
    CALL FUNCTION 'BDC_INSERT'
    EXPORTING
    TCODE = C_XD01
    POST_LOCAL = NOVBLOCAL
    PRINTING = NOPRINT
    TABLES
    DYNPROTAB = IT_BDCDATA
    EXCEPTIONS
    INTERNAL_ERROR = 1
    NOT_OPEN = 2
    QUEUE_ERROR = 3
    TCODE_INVALID = 4
    PRINTING_INVALID = 5
    POSTING_INVALID = 6
    OTHERS = 7
    IF SY-SUBRC <> 0.
    MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
    WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
    ENDIF.
    ENDFORM. " BDC_INSERT_DATA
    *& Form BDC_CLOSE_GROUP
    text
    --> p1 text
    <-- p2 text
    FORM BDC_CLOSE_GROUP.
    CALL FUNCTION 'BDC_CLOSE_GROUP'
    EXCEPTIONS
    NOT_OPEN = 1
    QUEUE_ERROR = 2
    OTHERS = 3.
    IF SY-SUBRC <> 0.
    MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
    WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
    ENDIF.
    ENDFORM. " BDC_CLOSE_GROUP
    *& Form FORMAT_MESSAGE
    text
    --> p1 text
    <-- p2 text
    FORM FORMAT_MESSAGE.
    CLEAR V_LINES.
    DESCRIBE TABLE IT_MSG LINES V_LINES.
    READ TABLE IT_MSG INDEX V_LINES.
    CLEAR V_MSG.
    CALL FUNCTION 'FORMAT_MESSAGE'
    EXPORTING
    ID = IT_MSG-MSGID
    LANG = IT_MSG-MSGSPRA
    NO = IT_MSG-MSGNR
    V1 = IT_MSG-MSGV1
    V2 = IT_MSG-MSGV2
    V3 = IT_MSG-MSGV3
    V4 = IT_MSG-MSGV4
    IMPORTING
    MSG = V_MSG
    EXCEPTIONS
    NOT_FOUND = 1
    OTHERS = 2.
    IF SY-SUBRC <> 0.
    MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
    WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
    ENDIF.
    ENDFORM. " FORMAT_MESSAGE
    *& Form DISPLAY_ERR_RECS
    text
    --> p1 text
    <-- p2 text
    FORM DISPLAY_ERR_RECS.
    LOOP AT IT_ERR_MSG.
    WRITE: / IT_ERR_MSG-MESSAGE.
    ENDLOOP.
    ENDFORM. " DISPLAY_ERR_RECS
    *& Form GET_BANKDATA
    text
    --> p1 text
    <-- p2 text
    FORM GET_BANKDATA.
    IT_BANK-BANKS = 'AD'.
    IT_BANK-BANKL = '1000'.
    IT_BANK-BANKN = 'S.B A/C'.
    APPEND IT_BANK.
    IT_BANK-BANKS = 'AD'.
    IT_BANK-BANKL = 'CITY'.
    IT_BANK-BANKN = 'CURR. A/C'.
    APPEND IT_BANK.
    IT_BANK-BANKS = 'AD'.
    IT_BANK-BANKL = 'H001'.
    IT_BANK-BANKN = 'S.B A/C'.
    APPEND IT_BANK.
    reward if help.

  • BDC Recording for Sorting a coloum

    Hi All,
    I have to do BDC Recording for  a transaction.During recording i have to select a coloum and sort it ascending and then do further processing.
    BDC recording happens for sorting but not for selecting coloum.
    and hence it gives error when we process the recording  that "Select a coloum".
    can u plz tell me how to add seelcting coloum in BDC recorording.
    Thanks

    Hi,
    You should try to incorporate your functionality using FIND or POSITION button instead of going for sort option.
    Find or position button work very good in this scenerio. With find button you can find the desired entry easily.
    Hope this will solve your problem.
    Regards,
    Brajvir

  • Create BDC recording for position,job,role

    hi all,
    i want to create BDC recording for position,job,role . what is the transaction for creating postion,job, role?/??
    and i have to check wheather for one job , role is there or not? if not i have to create that role.. similiarly i have to check for position that there is corresponding job is there or not.. if not i have to create the job???
    how would i do that??
    thanks
    SAchin

    Hi Sachin,
    1) Creating BDC is an ABAP-ers job and being functional its not ur responsibility. If u really want to do that then u can do it through T.Code - SHDB.
             While creating BDC for Position u have to go through T.Cdoe - SHDB and in that give PP01 in the TRANSACTION CODE feild. Then go on for recording.  After that ask the help of an ABAP-er.
    2) To Check if a POSITION or a JOB is there, then Go to T.Code - PP01, under Obj Abbr. feild put S for POSITION and C for JOB and press enter after entering the POSITION and JOB id. U'll get the result. OK
    3) To check for ROLE, u have go to T.Code - PFCG and there check for the particular ROLE u r looking for. Here in this T.Code u can actually create, change and delete the ROLES.OK
    Hope this helps,
    ARNAV...

  • Problem in doing BDC recording for Tcode FAGLSKF

    Hi All,
    I need to make postings for Statistical key figures. For this I need to make postings using transaction FAGLSKF.
    Now my problem is that when I try to make recording for transaction FAGLSKF I could not see the values recorded for ITEM Data Table control.
    Any one having any idea as what I am missing. Your suggestions would be really helpful.
    Regards,
    Lalit

    Hi Poorna,
    Thanks a lot for the valueable feedback.
    I checked the FMs mentioned by you. These FMs make the SKF posting but these FMs do not perform any kind of validations.
    Like for example if I use tcode FAGLSKF and try to make some posting. In case I am giving some invalid input to this transaction ( e.g. wrong Statistical Key Figure Value ) , this t code does not allow us to post and immediateley thorows some error.
    Where as I use FM FAGL_FAGLSKF_PN_POST, this FM makes an entry in the table FAGLSKF_PN without any validations.
    This FM simply insert an entry to the table FAGLSKF_PN.
    Any Idea how to overcome this. I want to make the validations in the same way as done using Tcode FAGLSKF.
    Thanks a lot for your valueable inputs.
    Regards,
    Lalit

  • BDC recording for s_alr_87012090

    Hi Friends,
    My requirement :
    As we do vendor changes in xk02, the critical data like bank details, name and address are to be confirmed. so my client want, the changes done in address should not got to confirmation, so I want to do BDC recording for S_ALR_87012090 ( confir vendor changes ). and will check if only address changes are done then i will run these BDC recording .
    but i am unable to do recording.
    please help me out.
    regards
    Kumar M

    Hello Kumar M,
    What is the issue with it? Why cant you do the recording?
    BR,
    Suhas

  • After doing the recording for transaction fpcj, the values are not being se

    after doing the recording for transaction fpcj, the values are not being sent to the g/l.

    HI,
      When you are recording.. you might be creating the values... ensure that they are updated into the GL before u write program. I doubt you might have missed the save ..
    Thanks
    Mahesh

Maybe you are looking for