Application Development and Automation Discussions
Join the discussions or start your own on all things application development, including tools and APIs, programming models, and keeping your skills sharp.
cancel
Showing results for 
Search instead for 
Did you mean: 
Read only

bdc for f-02 giving errors

arijitbarman
Participant
0 Likes
1,328

Hi Abapers,

This is my present code. Can someone tell where i am going wrong as it is not updating the records from the excel file.

***INCLUDE BDCRECX1.

*  for programs doing a data transfer by creating a batch-input session

*  and

*  for programs doing a data transfer by CALL TRANSACTION USING

SELECTION-SCREEN BEGIN OF LINE.

  PARAMETERS SESSION RADIOBUTTON GROUP CTU"create session

  SELECTION-SCREEN COMMENT 3(20) TEXT-S07 FOR FIELD SESSION.

  selection-screen position 45.

  PARAMETERS CTU RADIOBUTTON GROUP  CTU.    "call transaction

  SELECTION-SCREEN COMMENT 48(20) TEXT-S08 FOR FIELD CTU.

SELECTION-SCREEN END OF LINE.

SELECTION-SCREEN BEGIN OF LINE.

  SELECTION-SCREEN COMMENT 3(20) TEXT-S01 FOR FIELD GROUP.

  selection-screen position 25.

  PARAMETERS GROUP(12).                      "group name of session

  SELECTION-SCREEN COMMENT 48(20) TEXT-S05 FOR FIELD CTUMODE.

  selection-screen position 70.

  PARAMETERS CTUMODE LIKE CTU_PARAMS-DISMODE DEFAULT 'N'.

                                      "A: show all dynpros

                                      "E: show dynpro on error only

                                      "N: do not display dynpro

SELECTION-SCREEN END OF LINE.

SELECTION-SCREEN BEGIN OF LINE.

  SELECTION-SCREEN COMMENT 3(20) TEXT-S02 FOR FIELD USER.

  selection-screen position 25.

  PARAMETERS: USER(12) DEFAULT SY-UNAME.    "user for session in batch

  SELECTION-SCREEN COMMENT 48(20) TEXT-S06 FOR FIELD CUPDATE.

  selection-screen position 70.

  PARAMETERS CUPDATE LIKE CTU_PARAMS-UPDMODE DEFAULT 'L'.

                                      "S: synchronously

                                      "A: asynchronously

                                      "L: local

SELECTION-SCREEN END OF LINE.

SELECTION-SCREEN BEGIN OF LINE.

  SELECTION-SCREEN COMMENT 3(20) TEXT-S03 FOR FIELD KEEP.

  selection-screen position 25.

  PARAMETERS: KEEP AS CHECKBOX.      "' ' = delete session if finished

                                      "'X' = keep  session if finished

  SELECTION-SCREEN COMMENT 48(20) TEXT-S09 FOR FIELD E_GROUP.

  selection-screen position 70.

  parameters E_GROUP(12).            "group name of error-session

SELECTION-SCREEN END OF LINE.

SELECTION-SCREEN BEGIN OF LINE.

  SELECTION-SCREEN COMMENT 3(20) TEXT-S04 FOR FIELD HOLDDATE.

  selection-screen position 25.

  PARAMETERS: HOLDDATE LIKE SY-DATUM.

  SELECTION-SCREEN COMMENT 51(17) TEXT-S02 FOR FIELD E_USER.

  selection-screen position 70.

  PARAMETERS: E_USER(12) DEFAULT SY-UNAME.    "user for error-session

SELECTION-SCREEN END OF LINE.

SELECTION-SCREEN BEGIN OF LINE.

  SELECTION-SCREEN COMMENT 51(17) TEXT-S03 FOR FIELD E_KEEP.

  selection-screen position 70.

  PARAMETERS: E_KEEP AS CHECKBOX.    "' ' = delete session if finished

                                      "'X' = keep  session if finished

SELECTION-SCREEN END OF LINE.

SELECTION-SCREEN BEGIN OF LINE.

  SELECTION-SCREEN COMMENT 51(17) TEXT-S04 FOR FIELD E_HDATE.

  selection-screen position 70.

  PARAMETERS: E_HDATE LIKE SY-DATUM.

SELECTION-SCREEN END OF LINE.

SELECTION-SCREEN SKIP.

SELECTION-SCREEN BEGIN OF LINE.

  SELECTION-SCREEN COMMENT 1(33) TEXT-S10 FOR FIELD NODATA.

  PARAMETERS: NODATA DEFAULT '/' LOWER CASE.          "nodata

SELECTION-SCREEN END OF LINE.

SELECTION-SCREEN BEGIN OF LINE.

  SELECTION-SCREEN COMMENT 1(33) TEXT-S11 FOR FIELD SMALLLOG.

  PARAMETERS: SMALLLOG as checkbox"' ' = log all transactions

                                      "'X' = no transaction logging

SELECTION-SCREEN END OF LINE.

*----------------------------------------------------------------------*

*  data definition

*----------------------------------------------------------------------*

*      Batchinputdata of single transaction

DATABDCDATA LIKE BDCDATA    OCCURS 0 WITH HEADER LINE.

*      messages of call transaction

DATAMESSTAB LIKE BDCMSGCOLL OCCURS 0 WITH HEADER LINE.

*      error session opened (' ' or 'X')

DATAE_GROUP_OPENED.

*      message texts

TABLES: T100.

*----------------------------------------------------------------------*

*  at selection screen                                                *

*----------------------------------------------------------------------*

AT SELECTION-SCREEN.

* group and user must be filled for create session

  IF SESSION = 'X' AND

      GROUP = SPACE OR USER = SPACE.

    MESSAGE E613(MS).

  ENDIF.

*----------------------------------------------------------------------*

*  open dataset                                                      *

*----------------------------------------------------------------------*

FORM OPEN_DATASET USING P_DATASET.

  OPEN DATASET P_DATASET

                FOR INPUT IN TEXT MODE

                ENCODING DEFAULT.

  IF SY-SUBRC <> 0.

    WRITE: / TEXT-E00, SY-SUBRC.

    STOP.

  ENDIF.

ENDFORM.

*----------------------------------------------------------------------*

*  close dataset                                                      *

*----------------------------------------------------------------------*

FORM CLOSE_DATASET USING P_DATASET.

  CLOSE DATASET P_DATASET.

ENDFORM.

*----------------------------------------------------------------------*

*  create batchinput session                                          *

*  (not for call transaction using...)                                *

*----------------------------------------------------------------------*

FORM OPEN_GROUP.

  IF SESSION = 'X'.

    SKIP.

    WRITE: /(20) 'Create group'(I01), GROUP.

    SKIP.

*  open batchinput group

    CALL FUNCTION 'BDC_OPEN_GROUP'

          EXPORTING  CLIENT  = SY-MANDT

                    GROUP    = GROUP

                    USER    = USER

                    KEEP    = KEEP

                    HOLDDATE = HOLDDATE.

    WRITE: /(30) 'BDC_OPEN_GROUP'(I02),

            (12) 'returncode:'(I05),

                  SY-SUBRC.

  ENDIF.

ENDFORM.

*----------------------------------------------------------------------*

*  end batchinput session                                            *

*  (call transaction using...: error session)                        *

*----------------------------------------------------------------------*

FORM CLOSE_GROUP.

  IF SESSION = 'X'.

*  close batchinput group

    CALL FUNCTION 'BDC_CLOSE_GROUP'.

    WRITE: /(30) 'BDC_CLOSE_GROUP'(I04),

            (12) 'returncode:'(I05),

                  SY-SUBRC.

  ELSE.

    IF E_GROUP_OPENED = 'X'.

      CALL FUNCTION 'BDC_CLOSE_GROUP'.

      WRITE: /.

      WRITE: /(30) 'Fehlermappe wurde erzeugt'(I06).

      E_GROUP_OPENED = ' '.

    ENDIF.

  ENDIF.

ENDFORM.

*----------------------------------------------------------------------*

*        Start new transaction according to parameters                *

*----------------------------------------------------------------------*

FORM BDC_TRANSACTION USING TCODE.

  DATA: L_MSTRING(480).

  DATA: L_SUBRC LIKE SY-SUBRC.

* batch input session

  IF SESSION = 'X'.

    CALL FUNCTION 'BDC_INSERT'

          EXPORTING TCODE    = TCODE

          TABLES    DYNPROTAB = BDCDATA.

    IF SMALLLOG <> 'X'.

      WRITE: / 'BDC_INSERT'(I03),

                TCODE,

                'returncode:'(I05),

                SY-SUBRC,

                'RECORD:',

                SY-INDEX.

    ENDIF.

* call transaction using

  ELSE.

    REFRESH MESSTAB.

    CALL TRANSACTION TCODE USING BDCDATA

                      MODE  CTUMODE

                      UPDATE CUPDATE

                      MESSAGES INTO MESSTAB.

    L_SUBRC = SY-SUBRC.

    IF SMALLLOG <> 'X'.

      WRITE: / 'CALL_TRANSACTION',

                TCODE,

                'returncode:'(I05),

                L_SUBRC,

                'RECORD:',

                SY-INDEX.

      LOOP AT MESSTAB.

        MESSAGE ID    MESSTAB-MSGID

                TYPE  MESSTAB-MSGTYP

                NUMBER MESSTAB-MSGNR

                INTO L_MSTRING

                WITH MESSTAB-MSGV1

                      MESSTAB-MSGV2

                      MESSTAB-MSGV3

                      MESSTAB-MSGV4.

        WRITE: / MESSTAB-MSGTYP, L_MSTRING(250).

      ENDLOOP.

      SKIP.

    ENDIF.

** Erzeugen fehlermappe ************************************************

    IF L_SUBRC <> 0 AND E_GROUP <> SPACE.

      IF E_GROUP_OPENED = ' '.

        CALL FUNCTION 'BDC_OPEN_GROUP'

              EXPORTING  CLIENT  = SY-MANDT

                        GROUP    = E_GROUP

                        USER    = E_USER

                        KEEP    = E_KEEP

                        HOLDDATE = E_HDATE.

          E_GROUP_OPENED = 'X'.

      ENDIF.

      CALL FUNCTION 'BDC_INSERT'

            EXPORTING TCODE    = TCODE

            TABLES    DYNPROTAB = BDCDATA.

    ENDIF.

  ENDIF.

  REFRESH BDCDATA.

ENDFORM.

*----------------------------------------------------------------------*

*        Start new screen                                              *

*----------------------------------------------------------------------*

FORM BDC_DYNPRO USING PROGRAM DYNPRO.

  CLEAR BDCDATA.

  BDCDATA-PROGRAM  = PROGRAM.

  BDCDATA-DYNPRO  = DYNPRO.

  BDCDATA-DYNBEGIN = 'X'.

  APPEND BDCDATA.

ENDFORM.

*----------------------------------------------------------------------*

*        Insert field                                                  *

*----------------------------------------------------------------------*

FORM BDC_FIELD USING FNAM FVAL.

  IF FVAL <> NODATA.

    CLEAR BDCDATA.

    BDCDATA-FNAM = FNAM.

    BDCDATA-FVAL = FVAL.

    APPEND BDCDATA.

  ENDIF.

ENDFORM.

*&---------------------------------------------------------------------*

*& Report  ZFI_BDC_F02_SPL_INDICATORTABLE

*&

*&---------------------------------------------------------------------*

*&

*&

*&---------------------------------------------------------------------*

    INCLUDE BDCRECX1.

PARAMETER FILE LIKE RLGRAP-FILENAME DEFAULT 'C:\'.

DATA FILE1 TYPE STRING.                          "+

DATA: BEGIN OF RECORD OCCURS 0,

** Header Data

      BUKRS TYPE T001-BUKRS,    "Comp code

      BLDAT(10) TYPE c,                "Doc Date

      BLART LIKE BKPF-BLART,    "Doc Type

      BUDAT(10) TYPE c,                "Posting Date

      MONAT LIKE BKPF-MONAT,    "Period

      WAERS LIKE BKPF-WAERS,    "Currency

      KURSF(6) TYPE c, " LIKE BKPF-KURSF,  "Rate

      XBLNR LIKE BKPF-XBLNR,    "Reference

      HBKTXT LIKE BKPF-BKTXT"Header Text

** Item Data

      NEWBS LIKE RF05A-NEWBS"Posting Key

      NEWKO LIKE RF05A-NEWKO"GL Account

      WRBTR(13) TYPE c, " LIKE BSEG-WRBTR,  "Amount

      NEWUM LIKE RF05A-NEWUM"Special G/L

      BUPLA LIKE BSEG-BUPLA "BUSINESS PLACE : ETRL

      SECCO LIKE BSEG-SECCO "SECTION CODE    : ETRL

*ED6K902494 samarendra 05.05.2009

      GSBER LIKE BSEG-GSBER,

*ED6K902494 samarendra 05.05.2009

      PRCTR LIKE COBL-PRCTR "PROFIT CENTER

      KOSTL LIKE COBL-KOSTL,    "Cost Center

      PS_POSID LIKE COBL-PS_POSID, "WBS Element

      NPLNR LIKE COBL-NPLNR,    "Network no

      VORNR LIKE COBL-VORNR,    "Activity

      ISGTXT LIKE BSEG-SGTXT"Item Text

      ZUONR  LIKE BSEG-ZUONR"Assignment

      ZFBDT(10) TYPE c,        " LIKE BSEG-ZFBDT,    "due date

      PERNR(8) TYPE C ,        " personnel no

      SRNO TYPE I,              "Serial No

      DMBTR(13) TYPE c,                " LIKE BSEG-DMBTR , " Local  Currency

      HKONT LIKE BSEG-HKONT,    " GL Account

      DMBE2(13) TYPE c,        " LIKE BSEG-DMBE2,  "Index Currency Amount

      END OF RECORD.

DATA: WA LIKE RECORD,

      WA_ITEM LIKE RECORD.

DATA : IT_EXCEL LIKE ALSMEX_TABLINE OCCURS 0 WITH HEADER LINE.

DATA V_FILE TYPE RLGRAP-FILENAME.

DATA: IT_ZF02T LIKE ZF02T OCCURS 0 WITH HEADER LINE,

      IT_TBSL LIKE TBSL OCCURS 0 WITH HEADER LINE,

      WA_TBSL LIKE IT_TBSL.

*---------------------------------------------*

*  AT SELECTION-SCREEN ON VALUE-REQUEST

*---------------------------------------------*

AT SELECTION-SCREEN ON VALUE-REQUEST FOR FILE.

  CALL FUNCTION 'F4_FILENAME'

    EXPORTING

      PROGRAM_NAME = SYST-CPROG

    IMPORTING

      FILE_NAME    = FILE

    EXCEPTIONS

      OTHERS      = 1.

*------------------------------------------*

*  Initialization

*------------------------------------------*

INITIALIZATION.

  CLEAR: NODATA.

*samarendra 08.05.2009

  CTUMODE = 'A'.

  CTU = 'X'.

*samarendra 08.05.2009

*------------------------------------------*

*    START-OF-SELECTION

*------------------------------------------*

START-OF-SELECTION.

  SELECT * FROM ZF02T INTO TABLE IT_ZF02T.

*ED6K902494 samarendra 07.05.2009

  SELECT * FROM TBSL INTO TABLE IT_TBSL.

*ED6K902494 samarendra 07.05.2009

  CLEAR : V_FILE.

  V_FILE = FILE.

  REFRESH : IT_EXCEL.

  CALL FUNCTION 'ALSM_EXCEL_TO_INTERNAL_TABLE'

    EXPORTING

      FILENAME                      = V_FILE

      I_BEGIN_COL                  = 1

      I_BEGIN_ROW                  = 3

      I_END_COL                    = 29

      I_END_ROW                    = 9999

    TABLES

      INTERN                        = IT_EXCEL

* EXCEPTIONS

*  INCONSISTENT_PARAMETERS      = 1

*  UPLOAD_OLE                    = 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.

  LOOP AT IT_EXCEL.

    CASE IT_EXCEL-COL.

      WHEN '001'.

        RECORD-BUKRS  IT_EXCEL-VALUE.

      WHEN '002'.

        RECORD-BLDAT  IT_EXCEL-VALUE.

      WHEN '003'.

        RECORD-BLART  IT_EXCEL-VALUE.

      WHEN '004'.

        RECORD-BUDAT  IT_EXCEL-VALUE.

      WHEN '005'.

        RECORD-MONAT  IT_EXCEL-VALUE.

      WHEN '006'.

        RECORD-WAERS  IT_EXCEL-VALUE.

      WHEN '007'.

        RECORD-KURSF  IT_EXCEL-VALUE.

      WHEN '008'.

        RECORD-XBLNR  IT_EXCEL-VALUE.

      WHEN '009'.

        RECORD-HBKTXT  IT_EXCEL-VALUE.

      WHEN '010'.

        RECORD-NEWBS  IT_EXCEL-VALUE.

      WHEN '011'.

        RECORD-NEWKO  IT_EXCEL-VALUE.

      WHEN '012'.

        RECORD-WRBTR  IT_EXCEL-VALUE.

      WHEN '013'.

        RECORD-NEWUM  IT_EXCEL-VALUE.

      WHEN '014'.

        RECORD-BUPLA  IT_EXCEL-VALUE.

      WHEN '015'.

        RECORD-SECCO  IT_EXCEL-VALUE.

*ED6K902494 samarendra 05.05.2009

      WHEN '016'.

        RECORD-GSBER  IT_EXCEL-VALUE.

*ED6K902494 samarendra 05.05.2009

      WHEN '017'.

        RECORD-PRCTR  IT_EXCEL-VALUE.

      WHEN '018'.

        RECORD-KOSTL  IT_EXCEL-VALUE.

      WHEN '019'.

        RECORD-PS_POSID  IT_EXCEL-VALUE.

      WHEN '020'.

        RECORD-NPLNR  IT_EXCEL-VALUE.

      WHEN '021'.

        RECORD-VORNR  IT_EXCEL-VALUE.

      WHEN '022'.

        RECORD-ISGTXT  IT_EXCEL-VALUE.

      WHEN '023'.

        RECORD-ZUONR  IT_EXCEL-VALUE.

      WHEN '024'.

        RECORD-ZFBDT  IT_EXCEL-VALUE.

      WHEN '025'.

        RECORD-PERNR  IT_EXCEL-VALUE.

      WHEN '026'.

        RECORD-SRNO  IT_EXCEL-VALUE.

      WHEN '027'.

        RECORD-DMBTR  IT_EXCEL-VALUE.

      WHEN '028'.

        RECORD-HKONT  IT_EXCEL-VALUE.

      WHEN '029'.

        RECORD-DMBE2  IT_EXCEL-VALUE.

    ENDCASE.

    AT END OF ROW.

      APPEND RECORD.

      CLEAR RECORD.

    ENDAT.

  ENDLOOP.

  DATA V_INDEX TYPE I.

  PERFORM OPEN_GROUP.

  LOOP AT RECORD.

    V_INDEX = SY-TABIX.

    IF RECORD-SRNO = 1.

      IF SY-TABIX <> 1.

        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'  WA-XBLNR.

        PERFORM BDC_FIELD      USING 'BKPF-BKTXT'  WA-HBKTXT.

        PERFORM BDC_TRANSACTION USING 'F-02'.

      ENDIF.

      CLEAR: WA.

      WA = RECORD.

      PERFORM BDC_DYNPRO      USING 'SAPMF05A' '0100'.

      PERFORM BDC_FIELD      USING 'BDC_CURSOR'  'RF05A-NEWKO'.

      PERFORM BDC_FIELD      USING 'BDC_OKCODE'  '/00'.

      PERFORM BDC_FIELD      USING 'BKPF-BLDAT'  RECORD-BLDAT.

      PERFORM BDC_FIELD      USING 'BKPF-BLART'  RECORD-BLART.

      PERFORM BDC_FIELD      USING 'BKPF-BUKRS'  RECORD-BUKRS.

      PERFORM BDC_FIELD      USING 'BKPF-BUDAT'  RECORD-BUDAT.

      PERFORM BDC_FIELD      USING 'BKPF-MONAT'  RECORD-MONAT.

      PERFORM BDC_FIELD      USING 'BKPF-WAERS'  RECORD-WAERS.

      PERFORM BDC_FIELD      USING 'BKPF-KURSF'  RECORD-KURSF.

      PERFORM BDC_FIELD      USING 'BKPF-XBLNR'  RECORD-XBLNR.

      PERFORM BDC_FIELD      USING 'BKPF-BKTXT'  RECORD-HBKTXT.

      PERFORM BDC_FIELD      USING 'RF05A-NEWBS'  RECORD-NEWBS. .

      PERFORM BDC_FIELD      USING 'RF05A-NEWKO'  RECORD-NEWKO.

      PERFORM BDC_FIELD      USING 'RF05A-NEWUM'  RECORD-NEWUM.

      PERFORM FIND_SCREEN_ON_PKEY USING V_INDEX.

    ELSE.

      PERFORM BDC_FIELD      USING 'RF05A-NEWBS'  RECORD-NEWBS."  '40'

      PERFORM BDC_FIELD      USING 'RF05A-NEWKO'  RECORD-NEWKO.

      PERFORM BDC_FIELD      USING 'RF05A-NEWUM'  RECORD-NEWUM. " SP GL

      PERFORM FIND_SCREEN_ON_PKEY USING V_INDEX.

    ENDIF.

    WA_ITEM = RECORDCLEAR: V_INDEX.

  ENDLOOP.

  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'  WA-XBLNR.

  PERFORM BDC_FIELD      USING 'BKPF-BKTXT'  WA-HBKTXT.

  PERFORM BDC_TRANSACTION USING 'F-02'.

  PERFORM CLOSE_GROUP.

*&---------------------------------------------------------------------*

*&      Form  find_screen_on_pkey

*&---------------------------------------------------------------------*

*  Find screen Based on Posting Key

*----------------------------------------------------------------------*

FORM FIND_SCREEN_ON_PKEY USING V_INDEX.

  READ TABLE IT_ZF02T WITH KEY BUKRS = RECORD-BUKRS

                                NEWBS = RECORD-NEWBS

                                NEWUM = RECORD-NEWUM.

  PERFORM BDC_DYNPRO      USING 'SAPMF05A' IT_ZF02T-DYNPRO. "'0300'.

  PERFORM BDC_FIELD      USING 'BSEG-BUPLA'  RECORD-BUPLA.

  PERFORM BDC_FIELD      USING 'BSEG-SECCO'  RECORD-SECCO.

*ED6K902494  samarendra 05.05.2009

  IF RECORD-NEWBS <> '40' AND RECORD-NEWBS <> '50'.

    PERFORM BDC_FIELD      USING 'BSEG-GSBER'  RECORD-GSBER.

  ENDIF.

*ED6K902494  samarendra 05.05.2009

  PERFORM BDC_FIELD      USING 'BSEG-WRBTR'    RECORD-WRBTR.

  PERFORM BDC_FIELD      USING 'BSEG-DMBTR'    RECORD-DMBTR.

  PERFORM BDC_FIELD      USING 'BSEG-SGTXT'  RECORD-ISGTXT.

  PERFORM BDC_FIELD      USING 'BSEG-ZUONR'  RECORD-ZUONR.

  PERFORM BDC_FIELD      USING 'BSEG-ZFBDT'    RECORD-ZFBDT.

  PERFORM BDC_FIELD      USING 'BSEG-HKONT'    RECORD-HKONT.

  PERFORM BDC_FIELD      USING 'BSEG-PRCTR'    RECORD-PRCTR.

  IF RECORD-NEWBS = '40' OR RECORD-NEWBS = '50'.            "300 screen

    PERFORM BDC_FIELD      USING 'BDC_CURSOR'  'BSEG-SGTXT'.

    PERFORM BDC_FIELD      USING 'BDC_OKCODE'  '=ZK'.

    PERFORM BDC_DYNPRO      USING 'SAPLKACB' '0002'.

    IF NOT RECORD-PERNR IS INITIAL .

      PERFORM BDC_FIELD      USING 'COBL-PERNR'

                                      RECORD-PERNR . " '20005574'.

    ENDIF .

*ED6K902494  samarendra 05.05.2009

    PERFORM BDC_FIELD      USING 'COBL-GSBER'

                                    RECORD-GSBER .

*ED6K902494  samarendra 05.05.2009

    PERFORM BDC_FIELD      USING 'COBL-PRCTR'

                                    RECORD-PRCTR .      " 'pcatest01'.

    PERFORM BDC_FIELD      USING 'COBL-KOSTL'    RECORD-KOSTL.

    PERFORM BDC_FIELD      USING 'COBL-PS_POSID' RECORD-PS_POSID.

    PERFORM BDC_FIELD      USING 'COBL-NPLNR'    RECORD-NPLNR.

    PERFORM BDC_FIELD      USING 'COBL-VORNR'    RECORD-VORNR.

    V_INDEX = V_INDEX + 1.

    READ  TABLE RECORD INDEX V_INDEX.

    IF SY-SUBRC <> 0 OR RECORD-SRNO = 1.

      PERFORM BDC_DYNPRO      USING 'SAPMF05A' '0330'.

      PERFORM BDC_FIELD      USING 'BDC_CURSOR'  'BSEG-CCBTC'.

      PERFORM BDC_FIELD      USING 'BDC_OKCODE'  '=BS'.

******************* Index Currency vijay start

      V_INDEX = V_INDEX - 1.                                "25-09-08

      READ  TABLE RECORD INDEX V_INDEX.

      PERFORM BDC_FIELD      USING 'BSEG-DMBE2'  RECORD-DMBE2.

      PERFORM BDC_FIELD      USING 'BDC_CURSOR'  'BSEG-DMBE2'.

*          perform bdc_field      using 'BDC_OKCODE'  '=BU'.          ""Vijay

      PERFORM BDC_FIELD      USING 'BDC_OKCODE'  '/00'.

      V_INDEX = V_INDEX + 1.

      READ  TABLE RECORD INDEX V_INDEX.

******************* Index Currency vijay end

    ELSE.

      PERFORM BDC_DYNPRO      USING 'SAPMF05A' '0330'.

      PERFORM BDC_FIELD      USING 'BDC_CURSOR'  'RF05A-NEWKO'.

      PERFORM BDC_FIELD      USING 'BDC_OKCODE'  '/00'.

******************* Index Currency vijay start

      V_INDEX = V_INDEX - 1.

      READ  TABLE RECORD INDEX V_INDEX.

      PERFORM BDC_FIELD      USING 'BSEG-DMBE2'  RECORD-DMBE2.

      PERFORM BDC_FIELD      USING 'BDC_CURSOR'  'BSEG-DMBE2'.

      PERFORM BDC_FIELD      USING 'BDC_OKCODE'  '/00'.

      V_INDEX = V_INDEX + 1.

      READ  TABLE RECORD INDEX V_INDEX.

******************* Index Currency vijay end

    ENDIF.

    V_INDEX = V_INDEX - 1.

    READ TABLE RECORD INDEX V_INDEX.

  ELSE.

    V_INDEX = V_INDEX + 1.

    READ  TABLE RECORD INDEX V_INDEX.

    IF SY-SUBRC <> 0 OR RECORD-SRNO = 1.

      PERFORM BDC_DYNPRO      USING 'SAPMF05A' IT_ZF02T-DYNPRO.

      PERFORM BDC_FIELD      USING 'BDC_CURSOR'  'BSEG-SGTXT'.

      PERFORM BDC_FIELD      USING 'BDC_OKCODE'  '=BU'.

    ELSE.

      PERFORM BDC_DYNPRO      USING 'SAPMF05A' IT_ZF02T-DYNPRO.

      PERFORM BDC_FIELD      USING 'BDC_CURSOR'  'BSEG-SGTXT'.

      PERFORM BDC_FIELD      USING 'BDC_OKCODE'      '/00'.    "'=ZK'.

    ENDIF.

    V_INDEX = V_INDEX - 1.

    READ TABLE RECORD INDEX V_INDEX.

*ED6K902494  added reading it_tbsl table samarendra 07.05.2009

    CLEAR WA_TBSL.

    READ TABLE IT_TBSL INTO WA_TBSL WITH KEY BSCHL = RECORD-NEWBS.

    IF WA_TBSL-KOART = 'D'.

*      if record-newbs = '09' or record-newbs = '19'.

      PERFORM BDC_FIELD      USING 'BDC_OKCODE' '=ZK'.

      PERFORM BDC_DYNPRO      USING 'SAPMF05A' '0331'.

      PERFORM BDC_FIELD      USING 'BDC_CURSOR' 'BSEG-DMBE2'.

      PERFORM BDC_FIELD      USING 'BDC_OKCODE' '/00'.

      PERFORM BDC_FIELD      USING 'BSEG-DMBE2' RECORD-DMBE2.

      PERFORM BDC_FIELD      USING 'BDC_CURSOR'  'BSEG-DMBE2'.

      PERFORM BDC_FIELD      USING 'BDC_OKCODE'  '/00'.

    ELSEIF WA_TBSL-KOART = 'K'.

*ED6K902494  added "newbs" condition for '09' samarendra 06.05.2009

***********************        ************** index 26-08-08

      PERFORM BDC_FIELD      USING 'BDC_OKCODE' '=ZK'.

      PERFORM BDC_DYNPRO      USING 'SAPMF05A' '0332'.

      PERFORM BDC_FIELD      USING 'BDC_CURSOR' 'BSEG-DMBE2'.

      PERFORM BDC_FIELD      USING 'BDC_OKCODE' '/00'.

      PERFORM BDC_FIELD      USING 'BSEG-DMBE2' RECORD-DMBE2.

      PERFORM BDC_FIELD      USING 'BDC_CURSOR'  'BSEG-DMBE2'.

      PERFORM BDC_FIELD      USING 'BDC_OKCODE'  '/00'.

    ENDIF.

***************        ************** index 26-08-08

  ENDIF.

ENDFORM.                    " find_screen_on_pkey

3 REPLIES 3
Read only

RaymondGiuseppi
Active Contributor
0 Likes
1,054

What did you try, which errors did you get during BDC execution (session/transaction)

  • BDC not generated
  • Excel not/wrong read
  • Error raised by transaction
  • What else

At least describe the error, a plain "that doesn't perform well" wont raise correct answers...

Regards,

Raymond

Read only

0 Likes
1,054

Sir,

I am using call transaction and getting this error after the 1st screen.

S

Field BSEG-SECCO. does not exist in the screen SAPMF05A 0300

S

Field BSEG-DMBTR. does not exist in the screen SAPMF05A 0300


Please help me to resolve this.

Read only

0 Likes
1,054

For Fields:

  • SECCO : check field status group of the account number for fields available, mandatory or hidden
    Hint: in FS00 tab Create/Bank/Interest, double-click, in Abap you can use FM like FI_GET_FIELD_SELECTION_STRING  and FI_CHECK_ACCOUNT_ASSIGNMENT.
  • DMBTR : WRBTR is only available when BKPF-WAERS and T001-WAERS differ.
    Hint: Else it would always be the same amount.

Other solutions (not building a BDC from record and scratch)

  • Use a BAPI (BAPI_ACC_DOCUMENT_POST or old BAPI_ACC_GL_POSTING_POST)
  • Use the FM POSTING_INTERFACE_START, POSTING_INTERFACE_DOCUMENT and POSTING_INTERFACE_END
    Hint: Those FM receive your list of fields/values and build the BDC

Use search tool on those, there are already multiple discussions and documents.

Regards,

Raymond