Bdc for pa40

hi
i am going to make bdc program for pa40 which is of hr module .
i want to know whether bdc program will be similar or different for hr module .
regards
Rakesh singh

hi rakesh,
check this out....
*include bdcrecx1.
TABLES: t100.
      Type Declaration                                               *
TYPES : BEGIN OF t_pa40,
*----INFO TYPE 0000
       pernr       TYPE bapip0001-pernr,    "EMPLOYEE NUMBER
       einda       TYPE dats,
       begda(10)   TYPE c,    "start date
       plans(8)    TYPE c,    "POSITION
       massn(2)    TYPE c,    "Action Type
       massg(2)    TYPE c,    "reason for action
       werks(4)    TYPE c,    "PERSONAL AREA
       persg(1)    TYPE c,    "EMPLOYEE GROUP
       persk(2)    TYPE c,    "Employee Subgroup
*----INFO TYPE 0002
       anrex(5)    TYPE c,    "Form of address text
       nachn(40)   TYPE c,    "Last Name
       vorna(40)   TYPE c,    "FIRST NAME
       inits(10)   TYPE c,    "INITIALS
       gesch(1)    TYPE c,    "gender key
       gbdat(10)   TYPE c,    "DATE OF BIRTH
       fatxt(1)    TYPE c,    "MARITAL STATUS,
      famdt(10)   TYPE c,    "DATE OF MARRIAGE,
*----INFO TYPE 0001
       btrtl(4)    TYPE c,    "Personnel Subarea
       gsber(4)    TYPE c,    "Business Area
       abkrs(2)    TYPE c,    "Payroll Area
*----INFO TYPE 0006
       anssa(4)    TYPE c,    "ADDRESS TYPE
       stras(60)   TYPE c,    "STREET
       locat(40)   TYPE c,    "2nd LINE ADDRESS
       pstlz(10)   TYPE c,    "POSTAL CODE
       ort01(40)   TYPE c,    "City
       telnr(14)   TYPE c,    "Telephone number
*----INFO TYPE 0007
       schkz(8)    TYPE c,    "Work Schedule Rule
*----INFO TYPE 0008
       trfar(2)    TYPE c,    "PAY SCALE TYPE,
       trfgb(2)    TYPE c,    "PAY SCALE AREA
       divgv(5)    TYPE c,    "Hours worked per payroll period
       trfgr(8)    TYPE c,    "Pay Scale Group
       trfst(2)    TYPE c,    "level
*----EMPLOYEE WAGE_TYPES
       lga01(4)    TYPE c,    "Wage type-----LINE ITEM 1(5000)
       lga02(4)    TYPE c,    "Wage type-----LINE ITEM 2(5010)
       lga03(4)    TYPE c,    "Wage type-----LINE ITEM 3(5020)
       lga04(4)    TYPE c,    "Wage type-----LINE ITEM 4(5030)
       lga05(4)    TYPE c,    "Wage type-----LINE ITEM 5(5040)
*----EMPLOYEE WAGE AMOUNTS
       bet01(13)   TYPE c,    "Wage Type Amount for Payments
       bet02(13)   TYPE c,    "Wage Type Amount for Payments
       bet03(13)   TYPE c,    "Wage Type Amount for Payments
       bet04(13)   TYPE c,    "Wage Type Amount for Payments
       bet05(13)   TYPE c,    "Wage Type Amount for Payments
*----INFO TYPE 0009
       bankl(15)   TYPE c,    "BANK KEY
       bankn(18)   TYPE c,    "BANK ACCOUNT NUMBER
       zlsch(1)    TYPE c,    "Payment Method,
*----info-587,588,185.
       tstid(4)    TYPE c,    "PF TRUST ID
       penid(4)    TYPE c,    "PENSION TRUST ID
       eepfn(20)   TYPE c,    "PF NUMBER,
       eepnn(20)   TYPE c,    "PENSION NUMBER
       eevpf(5)    TYPE c,    "Voluntary Provident fund
       evpfa(15)   TYPE c,    "Employee VPF Amount
       pnflg(1)    TYPE c,    "Contribution for Pension scheme flag
       ptxel(1)    TYPE c,    "Eligibility for PTax
       ictyp       LIKE p0185-ictyp,  "Id Type
       icnum       LIKE p0185-icnum,  "ID NUMBER
      auth1       LIKE p0185-auth1,  "Author
       END OF t_pa40.
      Internal table declaration                                     *
DATA : i_pa40 TYPE TABLE OF t_pa40 WITH HEADER LINE.
      bdcdata LIKE bdcdata OCCURS 0 WITH HEADER LINE.
  data definition
      Batchinputdata of single transaction
DATA:   bdcdata LIKE bdcdata    OCCURS 0 WITH HEADER LINE.
      messages of call transaction
DATA:   messtab LIKE bdcmsgcoll OCCURS 0 WITH HEADER LINE.
      error session opened (' ' or 'X')
DATA:   e_group_opened.
      message texts
DATA: l_mstring(480).
DATA: l_subrc LIKE sy-subrc.
      Variables Declaration                                          *
DATA: v_fname TYPE string,
      v_ftype(10) TYPE c VALUE 'ASC'.
      Constants Declaration                                          *
CONSTANTS: m1 VALUE 'E',
           u1 VALUE 'S'.
      Selection screen                                               *
PARAMETERS: p_fname TYPE rlgrap-filename.
      For F4                                                         *
AT SELECTION-SCREEN  ON VALUE-REQUEST FOR p_fname.
  CALL FUNCTION 'F4_FILENAME'
    IMPORTING
      file_name = p_fname.
      start of selection                                             *
START-OF-SELECTION.
  MOVE p_fname TO v_fname.
      GUI uploading                                                  *
  CALL FUNCTION 'GUI_UPLOAD'
    EXPORTING
      filename            = v_fname
      filetype            = v_ftype
      has_field_separator = 'X'
    TABLES
      data_tab            = i_pa40.
  LOOP AT i_pa40.
    REFRESH bdcdata.
*perform open_group.
      BDC recording                                                  *
    PERFORM bdc_dynpro      USING 'SAPMP50A' '2000'.
    PERFORM bdc_field       USING 'BDC_CURSOR'
                                  'T529T-MNTXT(01)'.
    PERFORM bdc_field       USING 'BDC_OKCODE'
                                  '=PICK'.
    PERFORM bdc_field       USING 'RP50G-PERNR'
                                  i_pa40-pernr.             "'77116'.
    PERFORM bdc_field       USING 'RP50G-EINDA'
                                  i_pa40-einda.        "'13.12.2007'.
    PERFORM bdc_field       USING 'RP50G-SELEC(01)'
                                  'X'.
    PERFORM bdc_dynpro      USING 'MP000000' '2000'.
    PERFORM bdc_field       USING 'BDC_CURSOR'
                                  'PSPAR-PERSK'.
    PERFORM bdc_field       USING 'BDC_OKCODE'
                                  '=UPD'.
    PERFORM bdc_field       USING 'PSPAR-PERNR'
                                  i_pa40-pernr.        "'   77116'.
    PERFORM bdc_field       USING 'P0000-BEGDA'
                                  i_pa40-begda.        "'13.12.2007'.
    PERFORM bdc_field       USING 'P0000-ENDDA'
                                  '31.12.9999'.
    PERFORM bdc_field       USING 'P0000-MASSN'
                                  i_pa40-massn.             "'01'.
    PERFORM bdc_field       USING 'P0000-MASSG'
                                  i_pa40-massg.             "'01'.
    PERFORM bdc_field       USING 'PSPAR-PLANS'
                                  i_pa40-plans.        "'99999999'.
    PERFORM bdc_field       USING 'PSPAR-WERKS'
                                  i_pa40-werks.             "'1000'.
    PERFORM bdc_field       USING 'PSPAR-PERSG'
                                  i_pa40-persg.             "'1'.
    PERFORM bdc_field       USING 'PSPAR-PERSK'
                                  i_pa40-persk.             "'01'.
    PERFORM bdc_dynpro      USING 'MP000200' '2040'.
    PERFORM bdc_field       USING 'BDC_CURSOR'
                                  'P0002-NATIO'.
    PERFORM bdc_field       USING 'BDC_OKCODE'
                                  '=UPD'.
    PERFORM bdc_field       USING 'P0002-BEGDA'
                                  i_pa40-begda.        "'13.12.2007'.
    PERFORM bdc_field       USING 'P0002-ENDDA'
                                  '31.12.9999'.
    PERFORM bdc_field       USING 'Q0002-ANREX'
                                  i_pa40-anrex.        "'Mr'.
    PERFORM bdc_field       USING 'P0002-NACHN'
                                  i_pa40-nachn.        "'eng'.
    PERFORM bdc_field       USING 'P0002-VORNA'
                                  i_pa40-vorna.        "'lish'.
    PERFORM bdc_field       USING 'P0002-INITS'
                                  i_pa40-inits.        "'E'.
    PERFORM bdc_field       USING 'P0002-GESCH'
                                  i_pa40-gesch.             "'1'.
    PERFORM bdc_field       USING 'P0002-SPRSL'
                                  'EN'.
    PERFORM bdc_field       USING 'P0002-GBDAT'
                                  i_pa40-gbdat.        "'19.09.1985'.
    PERFORM bdc_field       USING 'Q0002-FATXT'
                                  i_pa40-fatxt.        "'Marr.'.
    PERFORM bdc_field       USING 'P0002-NATIO'
                                  'IS'.
    PERFORM bdc_dynpro      USING 'MP000100' '2000'.
    PERFORM bdc_field       USING 'BDC_CURSOR'
                                  'P0001-ABKRS'.
    PERFORM bdc_field       USING 'BDC_OKCODE'
                                  '=UPD'.
    PERFORM bdc_field       USING 'P0001-BEGDA'
                                  i_pa40-begda.        "'13.12.2007'.
    PERFORM bdc_field       USING 'P0001-ENDDA'
                                  '31.12.9999'.
    PERFORM bdc_field       USING 'P0001-BTRTL'
                                  i_pa40-btrtl.             "'1010'.
    PERFORM bdc_field       USING 'P0001-GSBER'
                                  i_pa40-gsber.             "'0001'.
    PERFORM bdc_field       USING 'P0001-ABKRS'
                                  i_pa40-abkrs.             "'01'.
    PERFORM bdc_field       USING 'P0001-PLANS'
                                  i_pa40-plans.        "'99999999'.
    PERFORM bdc_dynpro      USING 'MP000600' '2000'.
    PERFORM bdc_field       USING 'BDC_CURSOR'
                                  'P0006-TELNR'.
    PERFORM bdc_field       USING 'BDC_OKCODE'
                                  '=UPD'.
    PERFORM bdc_field       USING 'P0006-BEGDA'
                                  i_pa40-begda.        "'13.12.2007'.
    PERFORM bdc_field       USING 'P0006-ENDDA'
                                  '31.12.9999'.
    PERFORM bdc_field       USING 'P0006-STRAS'
                                  i_pa40-stras.        "'vs homes'.
    PERFORM bdc_field       USING 'P0006-LOCAT'
                                  i_pa40-locat.        "'k nagar'.
    PERFORM bdc_field       USING 'P0006-PSTLZ'
                                  i_pa40-pstlz.             "'522006'.
    PERFORM bdc_field       USING 'P0006-ORT01'
                                  i_pa40-ort01.        "'gnt'.
    PERFORM bdc_field       USING 'P0006-LAND1'
                                  'IN'.
    PERFORM bdc_field       USING 'P0006-TELNR'
                                  i_pa40-telnr.             "'2325161'.
    PERFORM bdc_dynpro      USING 'MP000600' '2000'.
    PERFORM bdc_field       USING 'BDC_OKCODE'
                                  '/ENXT'.
    PERFORM bdc_dynpro      USING 'MP000700' '2000'.
    PERFORM bdc_field       USING 'BDC_CURSOR'
                                  'P0007-SCHKZ'.
    PERFORM bdc_field       USING 'BDC_OKCODE'
                                  '=UPD'.
    PERFORM bdc_field       USING 'P0007-BEGDA'
                                  i_pa40-begda.        "'13.12.2007'.
    PERFORM bdc_field       USING 'P0007-ENDDA'
                                  '31.12.9999'.
    PERFORM bdc_field       USING 'P0007-SCHKZ'
                                  i_pa40-schkz.        "'CGEN'.
    PERFORM bdc_field       USING 'P0007-EMPCT'
                                  '  100,00'.
    PERFORM bdc_dynpro      USING 'MP000800' '2040'.
    PERFORM bdc_field       USING 'BDC_CURSOR'
                                  'P0008-TRFAR'.
    PERFORM bdc_field       USING 'BDC_OKCODE'
                                  '=UPD'.
    PERFORM bdc_field       USING 'P0008-BEGDA'
                                  i_pa40-begda.        "'13.12.2007'.
    PERFORM bdc_field       USING 'P0008-ENDDA'
                                  '31.12.9999'.
    PERFORM bdc_field       USING 'P0008-TRFAR'
                                  i_pa40-trfar.             "'01'.
    PERFORM bdc_field       USING 'P0008-BSGRD'
                                  '100,00'.
    PERFORM bdc_field       USING 'P0008-TRFGB'
                                  i_pa40-trfgb.             "'01'.
    PERFORM bdc_field       USING 'P0008-DIVGV'
                                  i_pa40-divgv.             "'192,00'.
    PERFORM bdc_field       USING 'P0008-TRFGR'
                                  i_pa40-trfgr.        "'JRMGT'.
    PERFORM bdc_field       USING 'P0008-TRFST'
                                  i_pa40-trfst.             "'01'.
    PERFORM bdc_field       USING 'P0008-ANCUR'
                                  'INR'.
    PERFORM bdc_field       USING 'Q0008-IBBEG'
                                  '27.03.2008'.
    PERFORM bdc_field       USING 'P0008-WAERS'
                                  'INR'.
    PERFORM bdc_field       USING 'Q0008-LGART(01)'
                                  i_pa40-lga01.             "'5000'.
    PERFORM bdc_field       USING 'Q0008-LGART(02)'
                                  i_pa40-lga02.             "'5001'.
    PERFORM bdc_field       USING 'Q0008-LGART(03)'
                                  i_pa40-lga03.             "'5002'.
    PERFORM bdc_field       USING 'Q0008-LGART(04)'
                                  i_pa40-lga04.             "'5020'.
    PERFORM bdc_field       USING 'Q0008-LGART(05)'
                                  i_pa40-lga05.             "'5021'.
    PERFORM bdc_field       USING 'Q0008-BETRG(01)'
                                  i_pa40-bet01.        "'              5000'.
    PERFORM bdc_field       USING 'Q0008-BETRG(02)'
                                  i_pa40-bet02.        "'              5001'.
    PERFORM bdc_field       USING 'Q0008-BETRG(03)'
                                  i_pa40-bet03.        "'              5002'.
    PERFORM bdc_field       USING 'Q0008-BETRG(04)'
                                  i_pa40-bet04.        "'              5020'.
    PERFORM bdc_field       USING 'Q0008-BETRG(05)'
                                  i_pa40-bet05.        "'              5021'.
    PERFORM bdc_dynpro      USING 'MP000900' '2000'.
    PERFORM bdc_field       USING 'BDC_CURSOR'
                                  'P0009-ZLSCH'.
    PERFORM bdc_field       USING 'BDC_OKCODE'
                                  '=UPD'.
    PERFORM bdc_field       USING 'P0009-BEGDA'
                                  i_pa40-begda.        "'13.12.2007'.
    PERFORM bdc_field       USING 'P0009-ENDDA'
                                  '31.12.9999'.
    PERFORM bdc_field       USING 'P0009-BNKSA'
                                  '0'.
    PERFORM bdc_field       USING 'Q0009-EMFTX'
                                  'lish eng'.
    PERFORM bdc_field       USING 'Q0009-BKPLZ'
                                  '522006'.
    PERFORM bdc_field       USING 'Q0009-BKORT'
                                  'gnt'.
    PERFORM bdc_field       USING 'P0009-BANKS'
                                  'IN'.
    PERFORM bdc_field       USING 'P0009-BANKL'
                                  i_pa40-bankl.        "'ICIC0000011'.
    PERFORM bdc_field       USING 'P0009-BANKN'
                                  i_pa40-bankn.             "'1403711'.
    PERFORM bdc_field       USING 'P0009-ZLSCH'
                                  i_pa40-zlsch.        "'T'.
    PERFORM bdc_field       USING 'P0009-WAERS'
                                  'INR'.
    PERFORM bdc_dynpro      USING 'MP002100' '2000'.
    PERFORM bdc_field       USING 'BDC_OKCODE'
                                  '/ENXT'.
    PERFORM bdc_dynpro      USING 'MP002100' '2040'.
    PERFORM bdc_field       USING 'BDC_OKCODE'
                                  '/ENXT'.
    PERFORM bdc_dynpro      USING 'SAPLSPO1' '0200'.
    PERFORM bdc_field       USING 'BDC_OKCODE'
                                  '=YES'.
    PERFORM bdc_dynpro      USING 'MP002800' '2000'.
    PERFORM bdc_field       USING 'BDC_OKCODE'
                                  '/ENXT'.
        If pf no and Pension no are given, then irrespective of       *
  the flat file Contribution for Pension scheme flag must be checked  *
    IF i_pa40-eepnn NE ' ' AND i_pa40-pnflg EQ ' '.
      PERFORM bdc_dynpro      USING 'MP058700' '2000'.
      PERFORM bdc_field       USING 'BDC_OKCODE'
                                     '/ENXT'.
      PERFORM bdc_dynpro      USING 'SAPLSPO1' '0200'.
      PERFORM bdc_field       USING 'BDC_OKCODE'
                                     '=YES'.
    ELSE.
      PERFORM bdc_dynpro      USING 'MP058700' '2000'.
      PERFORM bdc_field       USING 'BDC_CURSOR'
                                    'P0587-EVPFA'.
      PERFORM bdc_field       USING 'BDC_OKCODE'
                                    'UPD'.
      PERFORM bdc_field       USING 'P0587-BEGDA'
                                    i_pa40-begda.        "'13.12.2007'.
      PERFORM bdc_field       USING 'P0587-ENDDA'
                                    '31.12.9999'.
      PERFORM bdc_field       USING 'P0587-TSTID'
                                    i_pa40-tstid.           "'RPF1'.
      PERFORM bdc_field       USING 'P0587-PENID'
                                    i_pa40-penid.           "'RPF1'.
      PERFORM bdc_field       USING 'P0587-EEPFN'
                                    i_pa40-eepfn.        "'XX/XXX/999999/999999'.
      PERFORM bdc_field       USING 'P0587-EEPNN'
                                    i_pa40-eepnn.        "'XXXXX/501'.
      PERFORM bdc_field       USING 'P0587-EEVPF'
                                    i_pa40-eevpf.           "'25'.
      PERFORM bdc_field       USING 'Q0587-EEPF2'
                                    'X'.
      PERFORM bdc_field       USING 'P0587-EVPFA'
                                    i_pa40-evpfa.        "'                 1250'.
      PERFORM bdc_field       USING 'Q0587-ERPF2'
                                    'X'.
      PERFORM bdc_field       USING 'Q0587-ERPN1'
                                    'X'.
      PERFORM bdc_field       USING 'P0587-PNFLG'
                                    i_pa40-pnflg.        "'X'.
    ENDIF.
    PERFORM bdc_dynpro      USING 'MP058800' '2000'.
    PERFORM bdc_field       USING 'BDC_OKCODE'
                                  '/ENXT'.
    PERFORM bdc_dynpro      USING 'MP058800' '2000'.
    PERFORM bdc_field       USING 'BDC_CURSOR'
                                  'P0588-BEGDA'.
    PERFORM bdc_field       USING 'BDC_OKCODE'
                                  '=UPD'.
    PERFORM bdc_field       USING 'P0588-BEGDA'
                                  i_pa40-begda.        "'13.12.2007'.
    PERFORM bdc_field       USING 'P0588-ENDDA'
                                  '31.12.9999'.
    PERFORM bdc_field       USING 'Q0588-PTXEL'
                                  i_pa40-ptxel.        "'X'.
    PERFORM bdc_dynpro      USING 'MP018500' '2240'.
    PERFORM bdc_field       USING 'BDC_CURSOR'
                                  'P0185-BEGDA'.
    PERFORM bdc_field       USING 'BDC_OKCODE'
                                  '=UPD'.
    PERFORM bdc_field       USING 'P0185-BEGDA'
                                  i_pa40-begda.        "'13.12.2007'.
    PERFORM bdc_field       USING 'P0185-ENDDA'
                                  '31.12.9999'.
    PERFORM bdc_field       USING 'P0185-ICNUM'
                                  i_pa40-icnum.        "'AAAAA9999A'.
    PERFORM bdc_dynpro      USING 'SAPMP50A' '2000'.
    PERFORM bdc_field       USING 'BDC_OKCODE'
                                  '/EBCK'.
    PERFORM bdc_field       USING 'BDC_CURSOR'
                                  'RP50G-PERNR'.
*perform bdc_transaction using 'PA40'.
    CALL TRANSACTION 'PA40' USING bdcdata
                            MODE m1
                            UPDATE u1
                            MESSAGES INTO messtab.
      Message Handling                                               *
    LOOP AT messtab.
      SELECT SINGLE * FROM t100 WHERE sprsl = messtab-msgspra
                                AND   arbgb = messtab-msgid
                                AND   msgnr = messtab-msgnr.
      IF sy-subrc = 0.
        l_mstring = t100-text.
        IF l_mstring CS '&1'.
          REPLACE '&1' WITH messtab-msgv1 INTO l_mstring.
          REPLACE '&2' WITH messtab-msgv2 INTO l_mstring.
          REPLACE '&3' WITH messtab-msgv3 INTO l_mstring.
          REPLACE '&4' WITH messtab-msgv4 INTO l_mstring.
        ELSE.
          REPLACE '&' WITH messtab-msgv1 INTO l_mstring.
          REPLACE '&' WITH messtab-msgv2 INTO l_mstring.
          REPLACE '&' WITH messtab-msgv3 INTO l_mstring.
          REPLACE '&' WITH messtab-msgv4 INTO l_mstring.
        ENDIF.
        CONDENSE l_mstring.
        WRITE: / messtab-msgtyp, l_mstring(250).
      ELSE.
        WRITE: / messtab.
      ENDIF.
    ENDLOOP.
      Success Check                                                  *
if sy-subrc is initial.
write : i_pa40-pernr, 'is created'.
else.
write : i_pa40-pernr, 'is not cretaed'.
endif.
  ENDLOOP.
       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
Regards,
Arun.

Similar Messages

  • Hr...bdc for pa40-salary increment

    HI FRIENDS..
    M NOT ABLE TO FETCH VALUES FOR TABLE CONTORL IN PA40 T.CODE FOR SALARY INCREMENT..
    ACT D PROBLEM IS..
    THE OLD SALARY SRTUCTURE IS DIFFERENG FROM CURRENT SALARY STRUCTURE IN EXCEL SHEET..
    DOES ANY1 HAVE THE BDC FOR SALARY INCREMENT ..?
    PLS HELP..
    PTS REWRDED FOR SURE..

    Hi,
      We never write BDC for PA40.
    Write it for PA30.
    Goto SHDB tcode and record for the required infotype.
    Or you can also use any of the following FM instead of BDc.
    HR_INFOTYPE_OPERATION
    HR_MAINTAIN_MASTERDATA.
    Refer
    https://forums.sdn.sap.com/click.jspa?searchID=4208189&messageID=3188548
    https://forums.sdn.sap.com/click.jspa?searchID=4208189&messageID=1552901
    Regards

  • Creation of BDC for a part of process.

    Hi,
    We are creating a BDC for PA40 action. It has a series of Info Types which come one by one. Now our requirement is to skip the last Info Type and create a recording for the process. is this possible.
    We require this as the last Info type is Pensions Fund GB, this takes us through all the old records before we can make a new entry and the number of old records for different employees is different, hence no standard recording is possible. Can anyone suggesta way forward.
    Thank you,
    Arpita Arora

    Hi,
    In BDC program, when you are running the loop for each employee,You initially check the number of record for that employee in It0071 in that loop itself.
    in your code then write,
    Do N times.
    BDC recording to exit screen with OK_CODE = '/ENXT'
    enddo.
    This will be in the loop of each employee record.
    Thanks,
    Sutapa.

  • BDC  for actions PA40

    Hi All,
    I am going for a BDC in PA40 for hiring action.
    Please guide me is it correct to go for BDC in PA40.
    Thanks in advance.

    Hi Albert,
    I can only agree with Samuel. The only correct way to "create" a new employee is to use batch input.
    You can modify the infogroup by using your own user group. Thus you can reduce the number of infotypes (table T588D) to meet exactly your batch input demands.
    Please note, that in batch input no dynamic actions will be processed.
    Regards
    CHRIS

  • 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

  • Problem in creation of BDC for transaction phap_create

    Hello Friends,
    I am trying to create BDC for PHAP_CREATE.
    When you run a transaction a pop up window appears to select the template id.
    And in BDC it is selected by cursor position. So once selected, the value of template id cannot be changed.
    I want this as a parameter.So that each time I run a BDC I will be able to create different types of Appraisal documents i.e with different template ids.
    How to go about it???
    Regards,
    Bhushan

    Hi,
    For selecting the id, while doing recording,
    record with
    CTRL + F ( Where u can give ur id) and proceed further.

  • How to give line items in flatfile while doing BDC for Table control

    Hi all,
    I am writing BDC for Multiple line items and Transaction  is : FSE5N.
    How do i give the data in the flat file. I mean how do we give the multiple line items in flat file , i.e for second line item again we have to header data or not ?
    ex:
    1015;ALL;demo;kr;INR;01;0001;3000172;100
    1015;ALL;demo;kr;INR;01;0001;3000172;200
    for first lineitem  : 3000172;100
    for 2nd line item : 3000172; 200.
    header data : 1015;ALL;demo;kr;INR;01;0001.
    Thanks in advance
    krupali

    Hii ,
    u can give in the same format as u have done in the example.
    A       B    C     D  E    F   G        H          I
    1015;ALL;demo;kr;INR;01;0001;3000172;100
    1015;ALL;demo;kr;INR;01;0001;3000172;200
    and while writing the loop u can give
    loop at it_head.
    loop at it_head where a = it_head-A and b = it_head-B ..........upto G = it_head-G.
      endloop.
    endloop.
    check this
    http://www.sap-img.com/abap/bdc-example-using-table-control-in-bdc.htm
    Neeraj

  • 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

  • User Exit and BDC for ME22N

    Hello All,
    A code has been written in the User exit for Tcode ME22N, Which sets the indicator on PO line item. This has been done by modifying the standard itab POT by using field symbols, because the fields to be modified are shown in display mode in the tcode ME22N and cannot be done in BDC. See the below code in user exit ZXM06U43.
    DATA char(50) VALUE '(SAPLMEPO)POT[]'.
    CLEAR wa_ind.
        FIELD-SYMBOLS <f1> TYPE ANY.
    Move memory of internal table POT to field symbol f1.
        ASSIGN (char) TO <f1>.
    Move content of f1 to internal table i_ind
        i_ind[] = <f1> .
        LOOP AT i_ind INTO wa_ind.
          IF wa_ind-pstyp = '9'.            " Service PO - item category
    IF PO Line item has History per Purchasing Document as 'D'
    Set indicators on, for the line item.
            CLEAR v_cnt.
            SELECT COUNT( * ) INTO v_cnt FROM ent5100
                                         WHERE ebeln = wa_ind-ebeln
                                           AND ebelp = wa_ind-ebelp
                                           AND bewtp = 'D'.
            IF sy-subrc = 0.
              wa_ind-wepos = 'X'.            " Set Goods Receipt Indicator
              wa_ind-webre = 'X'.            " Set GR-based IV Indicator
              wa_ind-lebre = 'X'.            " Set Srv-based IV Indicator
            ELSE.
    *End of addition SAP-20070910104025 - SL36 - D01K963369
              wa_ind-wepos = ' '.            " Clear Goods Receipt Indicator
              wa_ind-webre = ' '.            " Clear GR-based IV Indicator
              wa_ind-lebre = ' '.            " Clear Srv-based IV Indicator
              wa_ind-xersy = ' '.            " Clear ERS Indicator
            ENDIF.                                           
            MODIFY i_ind FROM wa_ind INDEX sy-tabix.
          ENDIF.
        ENDLOOP.
        <f1> = i_ind[].
      ENDIF.          
    ENDIF.
    This code is in production and has been working fine.
    The requirnment is now to make this indicator work for all the Purchase order before this code has been written in the Exit. For this my functional suggests that to write a separate program using BDC for PO change and jus add a period/dot  in the short text and save it. The code has been written, the user exit and the above code is getting triggrred values are updated in internal table correctly.
    However the flags was not set or cleared when seen in the tcode ME22N . This works fine if the tcode me22n is run directly and not working in BDC.
    I have tried with ME22 without enjoy transaction in BDC changing the POT Program to SAPMM06E. It does not work.
    Please help me as why it is not uodating in the table when using BDC.
    Thanks in Advance.
    Senthil Kumar

    Hi All,
    Any luck on this??
    Thanks

  • 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

  • To Record  J1IS BDC  For Multiple Line Items

    Hi,
      Iam trying to record BDC for J1IS transaction.
    while  recording  material document which contains more than  8 line items , Only 8 line items get saved and the rest of the items doesn't get saved ,
        But when I  do this manually then  all the line items get saved,
        Can anyone give the remedy for this Problem (to record J1IS for multiple line items).
      Thanks in Advance.
    Regards,
    S.Janani.

    Hi Janani / Leo
    The problem might be that the scroll down functionality after 8 line items is not recorded in your recording.
    In order to overcome the issue, you need to check OK__CODE whicle page down and add it in recording after Number of line items are greater than 8.
    Please check below link for details:
    http://scn.sap.com/thread/1106677
    http://scn.sap.com/thread/797827
    http://scn.sap.com/thread/2037271
    Best Regards,
    Sachin

  • BDC for multiple line items (VA01)

    Hi Experts,
      I create a BDC for VA01 transaction for single line item in that now i want to upload multiple line items also with  o/p of total no. of records uploaded, no. of records posted and the no. of error records...
    Can any body explain with sample code...

    Hi,
    if the flat file is containing header and item records...
    first split those records tooo two internal tables header and item..
    Loop at header ...
      process of recording steps for header....
    Loop at item...
    here create a varialbe with char 2 .. for index value....
      process of item recording steps..
      increment the index value by 1....
      here u have to pass  'p+'  OK_CODE..
    Endloop ..(item)
    Endloop...(header)
    for more info goo through this link...
    http://www.sap-img.com/bdc.htm
    hope helpful
    Raghunath.S

  • "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?

Maybe you are looking for

  • Erro 610 - NT2011.004 - NFe de devolução

    Bom dia a todos, A SEFAZ soltou a NT2011/005 para fazer algumas validações e uma delas é a 610: Rejeição: Total da NF difere do somatório dos Valores compõe o valor Total da NF, porém o processo que tenho aqui no cliente e uma nota de devolução, a em

  • DO NOT BUY UNLESS...

    I purchased a copy of the ARD software for around $300 (already ridiculous!)@ the biltmore apple store in az after asking one of the kids that worked there if by installing it on my PowerBook G4 laptop (connecting via airport express trough cable mod

  • Weblogic 10.3.0 : Loosing a stateless session bean in the bean pool

    Hi, We have a strange situation where we loose a Stateless SessionBean in a Bean Pool in Weblogic 10.3.0 Since we only have one bean in the pool, this effectively hangs all incoming calls. We do not want more than one instance in the pool because of

  • Flash drive dead?

    My dad's 4 GB duracell flash drive no longer works. I plug it in, and it show up in "computer" as USB drive, but when I click on it, It says "no media in the drive". fdisk -l does not see it. Gparted doesn't see it either. In XP, it shows up in my co

  • Kammera geht nicht bildschirm wird schwarz

    Bei meinem ipod touch geht die kamera nicht - der Bildschirm wird nur blau! Woran liegt das?