BDC Session Saves Data Only in Foreground

I have created a bdc program to create an SM35 session of CA02.  The wierd thing is that the session will run in background with no errors, but the data is not updated.  If I run the session in foreground the data is updated.  Have I overlooked something simple?

To see what is going on, I commented out the save at the end to force it to error out.  If I run the session in foreground the data is changed.  If I run it in display errors only mode, the data is not changed.  So it seems not to have anything to do with the save at the end.  Perhaps it is now appropriate to post some of the code.
After the data file is uploaded into the itab and the bdc group has been created, for each routing group I do the following:
  PERFORM dynpro USING:
* ***   Initial Screen   ***
      'X'   'SAPLCPDI'       '1010',
      ' '   'RC271-PLNNR'    gk_rec-groupnum,
      ' '   'BDC_OKCODE'     '/00',
* *** Header Overview  ***
      'X'   'SAPLCPDI'       '1200',
      ' '   'BDC_OKCODE'     'MTUE'.     "open material allocation screen
Then for each material allocation the data file says to delete:
  PERFORM dynpro USING:
* *** Material Allocation ***
      'X'   'SAPLCZDI'         '1010',
      ' '   'RC27X-ENTRY_ACT'  gv_entry,   "gv_entry holds row number to delete
      ' '   'BDC_OKCODE'       'ENT1',       "position button
      'X'   'SAPLCZDI'         '1010',
      ' '   'BDC_CURSOR'       'MAPL-MATNR(01)',  "place cursor on the line to delete
      ' '   'BDC_OKCODE'       'LOE',                      "delete line
      'X'   'SAPLSPO1'         '0100',
      ' '   'BDC_OKCODE'       'YES'.                      "confirm dialog
then at the end of the session:
  PERFORM dynpro USING:
        'X'   'SAPLCZDI'       '1010',
        ' '   'BDC_OKCODE'     'BACK', "leave material allocation screen
        'X'   'SAPLCPDI'       '1200',
        ' '   'BDC_OKCODE'     'BU'.  "save
Then, I insert into the bdc session using tcode ca02.  All this given the following subroutine:
FORM dynpro USING p_dynbegin TYPE any p_name TYPE any p_value TYPE any.
  CLEAR gk_bdc_tab.
  IF p_dynbegin = 'X'.
    MOVE:  p_name  TO gk_bdc_tab-program,
           p_value TO gk_bdc_tab-dynpro,
           'X'   TO gk_bdc_tab-dynbegin.
  ELSE.
    MOVE:  p_name  TO gk_bdc_tab-fnam,
           p_value TO gk_bdc_tab-fval.
  ENDIF.
  APPEND gk_bdc_tab TO gt_bdc_tab.
ENDFORM.
It seems that the cursor isn't specifying the line to delete when run in background.

Similar Messages

  • I am posting data for va01 and va02 using BDC session,what happens if

    Hi,
    I am posting some data for va01 and va02 using BDC session,but what happens  if i try to post same data using call transaction.

    Hi,
    That is just another method. You can post the data using Call Transaction as well.
    Just give it a try and in case you face some problem revert back with your issue.
    We will help you to solve the same.
    Hope this helps!!!
    Regards,
    Lalit

  • Can anybody pls tell me  limitations of BDC Session & Call transaction?

    hi, Guys, this is srinivas.
    How can we deside which method is to(BDC session/ Call transaction)
    use to upload data to SAP database?
    Can we run Call Transaction in Background?
    Which is preferable for bulk data? and Why?
    how can we restart Session if any error occurs?
    Thanku?

    Hi,
    Hope it helps this......
    SAP BDC INTERVIEW QUESTIONS  & ANSWERS
    1.       What is full form of BDC Session?
    Batch Data Communication Session.
    2.       What are the steps in a BDC session?
    The first step in a BDC session is to identify the screens of the transaction that the program will process.  Next step is to write a program to build the BDC table that will be used to submit the data to SAP.  The final step is to submit the BDC table to the system in the batch mode or as a single transaction by the CALL TRANSACTION command.
    3.       How do you find the information on the current screen?
    The information on the current screen can be found by SYSTEM à STATUS command from any menu.
    4.       How do you save data in BDC tables?
    The data in BDC tables is saved by using the field name ‘BDC_OKCODE’ and field value of ‘/11’.
    5.       What is the last entry in all BDC tables?
    In all BDC tables the last entry is to save the data by using the field name BDC_OKCODE and a field value of ‘/11’.
    6.       What is a multiple line field?
    A multiple line field is a special kind of field which allows the user to enter multiple lines of data into it.
    7.       How do you populate data into a multiple line field?
    To populate data into a multiple line field, an index is added to the field name to indicate which line is to be populated by the BDC session (Line index).
    8.       Write the BDC table structure.
    BDC table structure
    FIELD                     TYPE                            DESCRIPTION
    Program                CHAR (8)                      Program name of transaction.
    DynPro                 CHAR (4)                      Screen number of transaction.
    DynBegin              CHAR (1)                      Indicator for new screen.
    Fnam                    CHAR (35)                     Name of database field from screen.
    Fval                      CHAR (80)                     Value to submit to field.
    9.       Does the CALL TRANSACTION method allow multiple transactions to be processed by SAP?
    No.  The CALL TRANSACTION method allows only a single transaction to be processed by SAP.
    10.    Does the BDC-INSERT function allow multiple transactions to be processed by SAP?
    Yes.
    11.    What is the syntax for ‘CALL TRANSACTION’?
    CALL TRANSACTION trans .
    Three possible entries are there for MODE.
                      A          -           Show all screens.
                      E          -           Show only screens with errors.
                      N          -           Show no screens.
    Regards,
    V.Balaji
    Reward if usefull

  • Error in BDC session Insert.....

    Hi All,
    Guys iam running BDC pgm for MEK1 create condition records transaction and i get an error while executing through BDC_INSERT. Its an internal error with text "Error in BDC session Insert..".The text file iam using contains 26 line items for the first contract created earlier and 30 line items for the second record. My concern is it only happens for this text file with multiple or more line items.
    While debugging i have observed that after the session has been created the first bdc insert goes well for the first header record and then it fails for the second record with an internal error "Error in BDC session Insert..".
    Does anyone have enountered such issue before or is it related to limited number of line items in MEK1 transaction.
    Any help would be appreciated.
    Thanks,
    Avinash

    report ZSESSION1
           no standard page heading line-size 255.
    *include bdcrecx1.
    DATA: BDCDATA LIKE BDCDATA OCCURS 0 WITH HEADER LINE .
    TYPES: BEGIN OF TYP_STU,
                   Z_STUDID TYPE ZSTUD1-Z_STUDID,
                   Z_STUDNAME TYPE ZSTUD1-Z_STUDNAME,
                   Z_STUDAGE TYPE ZSTUD1-Z_STUDAGE,
              END OF TYP_STU.
    DATA: IT_STU TYPE STANDARD TABLE OF TYP_STU,
              GW_STU TYPE TYP_STU,
              V_PATH TYPE STRING.
      PARAMETERS  SUREN TYPE  IBIPPARMS-PATH OBLIGATORY.
    AT SELECTION-SCREEN ON VALUE-REQUEST FOR  SUREN .
         PERFORM  GETFILE USING SUREN.
    V_PATH = SUREN.
    CALL FUNCTION 'GUI_UPLOAD'
      EXPORTING
        FILENAME                      =  V_PATH
      FILETYPE                      = 'ASC'
      HAS_FIELD_SEPARATOR           = ' '
      HEADER_LENGTH                 = 0
      READ_BY_LINE                  = 'X'
      DAT_MODE                      = ' '
      CODEPAGE                      = ' '
      IGNORE_CERR                   = ABAP_TRUE
      REPLACEMENT                   = '#'
      CHECK_BOM                     = ' '
      VIRUS_SCAN_PROFILE            =
      NO_AUTH_CHECK                 = ' '
    IMPORTING
      FILELENGTH                    =
      HEADER                        =
      TABLES
        DATA_TAB                      =  IT_STU
    EXCEPTIONS
       FILE_OPEN_ERROR               = 1
       FILE_READ_ERROR               = 2
       NO_BATCH                      = 3
       GUI_REFUSE_FILETRANSFER       = 4
       INVALID_TYPE                  = 5
       NO_AUTHORITY                  = 6
       UNKNOWN_ERROR                 = 7
       BAD_DATA_FORMAT               = 8
       HEADER_NOT_ALLOWED            = 9
       SEPARATOR_NOT_ALLOWED         = 10
       HEADER_TOO_LONG               = 11
       UNKNOWN_DP_ERROR              = 12
       ACCESS_DENIED                 = 13
       DP_OUT_OF_MEMORY              = 14
       DISK_FULL                     = 15
       DP_TIMEOUT                    = 16
       OTHERS                        = 17
    IF SY-SUBRC <> 0.
    MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
             WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
    ENDIF.
    CALL FUNCTION 'BDC_OPEN_GROUP'
    EXPORTING
       CLIENT                    = SY-MANDT
      DEST                      = FILLER8
       GROUP                     =  'SESSION1'
      HOLDDATE                  = FILLER8
       KEEP                      =  'X'
       USER                      = SY-UNAME
       RECORD                    = FILLER1
       PROG                      = SY-CPROG
      DCPFM                     = '%'
      DATFM                     = '%'
    IMPORTING
      QID                       =
    EXCEPTIONS
      CLIENT_INVALID            = 1
      DESTINATION_INVALID       = 2
      GROUP_INVALID             = 3
      GROUP_IS_LOCKED           = 4
      HOLDDATE_INVALID          = 5
      INTERNAL_ERROR            = 6
      QUEUE_ERROR               = 7
      RUNNING                   = 8
      SYSTEM_LOCK_ERROR         = 9
      USER_INVALID              = 10
      OTHERS                    = 11
    IF SY-SUBRC <> 0.
    MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
            WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
    ENDIF.
    START-OF-SELECTION.
    LOOP AT IT_STU INTO GW_STU.
    REFRESH BDCDATA.
    *perform open_group.
    perform bdc_dynpro      using 'SAPMSRD0' '0102'.
    perform bdc_field       using 'BDC_CURSOR'
                                  'RSRD1-TBMA_VAL'.
    perform bdc_field       using 'BDC_OKCODE'
                                  '=EDIT'.
    perform bdc_field       using 'RSRD1-TBMA'
                                  'X'.
    perform bdc_field       using 'RSRD1-TBMA_VAL'
                                  'ZSTUD1'.
    perform bdc_dynpro      using 'SAPLSD41' '2200'.
    perform bdc_field       using 'BDC_CURSOR'
                                  'DD02D-DDTEXT'.
    perform bdc_field       using 'BDC_OKCODE'
                                  '=TDED'.
    perform bdc_field       using 'DD02D-DDTEXT'
                                  'Stud details'.
    perform bdc_dynpro      using '/1BCDWB/DBZSTUD1' '0101'.
    perform bdc_field       using 'BDC_CURSOR'
                                  'ZSTUD1-Z_STUDAGE'.
    perform bdc_field       using 'BDC_OKCODE'
                                  '=SAVE'.
    perform bdc_field       using 'ZSTUD1-Z_STUDID'
                                  GW_STU-Z_STUDID .
    perform bdc_field       using 'ZSTUD1-Z_STUDNAME'
                                  GW_STU-Z_STUDNAME .
    perform bdc_field       using 'ZSTUD1-Z_STUDAGE'
                                 GW_STU-Z_STUDAGE .
    perform bdc_dynpro      using '/1BCDWB/DBZSTUD1' '0101'.
    perform bdc_field       using 'BDC_OKCODE'
                                  '/EBACK'.
    perform bdc_field       using 'BDC_CURSOR'
                                  'ZSTUD1-Z_STUDID'.
    perform bdc_dynpro      using 'SAPLSD41' '2200'.
    perform bdc_field       using 'BDC_CURSOR'
                                  'DD02D-DDTEXT'.
    perform bdc_field       using 'BDC_OKCODE'
                                  '=WB_BACK'.
    perform bdc_field       using 'DD02D-DDTEXT'
                                  'Stud details'.
    perform bdc_dynpro      using 'SAPMSRD0' '0102'.
    perform bdc_field       using 'BDC_CURSOR'
                                  'RSRD1-TBMA_VAL'.
    perform bdc_field       using 'BDC_OKCODE'
                                  '=BACK'.
    perform bdc_field       using 'RSRD1-TBMA'
                                  'X'.
    perform bdc_field       using 'RSRD1-TBMA_VAL'
                                  'ZSTUD1'.
    *perform bdc_transaction using 'SE11'.
    CALL FUNCTION 'BDC_INSERT'
    EXPORTING
       TCODE                  = 'SE11'
      POST_LOCAL             = NOVBLOCAL
      PRINTING               = NOPRINT
      SIMUBATCH              = ' '
      CTUPARAMS              = ' '
      TABLES
        DYNPROTAB              = BDCDATA
    EXCEPTIONS
      INTERNAL_ERROR         = 1
      NOT_OPEN               = 2
      QUEUE_ERROR            = 3
      TCODE_INVALID          = 4
      PRINTING_INVALID       = 5
      POSTING_INVALID        = 6
      OTHERS                 = 7
    IF SY-SUBRC <> 0.
    MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
            WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
    ENDIF.
    ENDLOOP.
    CALL FUNCTION 'BDC_CLOSE_GROUP'
    EXCEPTIONS
       NOT_OPEN          = 1
       QUEUE_ERROR       = 2
       OTHERS            = 3
    IF SY-SUBRC <> 0.
    MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
            WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
    ENDIF.
    *ENDLOOP.
    *perform close_group.
    *&      Form  bdc_dynpro
          text
         -->P_0207   text
         -->P_0208   text
    *FORM bdc_dynpro  USING    VALUE(P_0207)
                             VALUE(P_0208).
    *ENDFORM.                    " bdc_dynpro
    FORM BDC_DYNPRO USING PROGRAM DYNPRO.
      CLEAR BDCDATA.
      BDCDATA-PROGRAM  = PROGRAM.
      BDCDATA-DYNPRO   = DYNPRO.
      BDCDATA-DYNBEGIN = 'X'.
      APPEND BDCDATA.
    ENDFORM.                    "BDC_DYNPRO
    *&      Form  bdc_field
          text
         -->P_0212   text
         -->P_0213   text
    *FORM bdc_field  USING    VALUE(P_0212)
                            VALUE(P_0213).
    *ENDFORM.                    " bdc_field
    FORM BDC_FIELD USING FNAM FVAL.
      CLEAR BDCDATA.
      BDCDATA-FNAM = FNAM.
      BDCDATA-FVAL = FVAL.
      APPEND BDCDATA.
    ENDFORM .
    FORM GETFILE USING SUREN.
         CALL FUNCTION 'F4_FILENAME'
          EXPORTING
            PROGRAM_NAME        = SYST-CPROG
            DYNPRO_NUMBER       = SYST-DYNNR
          IMPORTING
            FILE_NAME           = SUREN.
            ENDFORM.

  • Regarding BDC session to run immediately after creation

    Hi Abapers,
    Please help me out from the following situation.
    I need to run the BDC session immediately after creating. I beleive using RSBDCSUB we can achieve it.
    If it so please let me know how can we use this.....
    Please let me know if any other solutions.
    Thanx in advance.
    will reward with points for the usefull answers.

    Hi Sir ,
    Please have a look below .Hope it is suitable and simpler solution for your question.
    Please do reward if useful.
    Thankx.
    If user want BDC in foreground use a CALL TRANSACTION and don't create a BDC butt fill a BDCDATA structure table and then
    codeCALL TRANSACTION 'transaction' USING itab[/code]
    You can specify the way to process in OPTIONS and MODE parameters.
    Look at
    Using CALL TRANSACTION USING for Data Transfer
    something like
    if foreground is initial.
    BDC_OPEN_GROUP
    endif.
    fill bdcdata
    if foreground is initial.
    BDC_INSERT
    BDC_CLOSE_GROUP
    SUBMIT RSBDCSUB WITH MAPPE = group_name
    else.
    CALL transaction USING data MODE mode.
    endif.
    CODE  --->
    code
    DATA : w_nom TYPE apq_grpn ,
    w_kbetr(16) ,
    w_datab(10) ,
    w_datbi(10) ,
    w_kpein(5) ,
    w_kmein(3) .
    CHECK is_data-flag EQ 'A' OR
    is_data-flag EQ 'B' OR
    is_data-flag EQ 'C'.
    REFRESH itg_bdcdata.
    Batch-input name.
    CONCATENATE 'Hauss_'
    sy-uzeit
    is_data-knumh+4(6)
    INTO w_nom.
    Open Batch-input.
    PERFORM p_open_bdc USING w_nom.
    Choix type cond.
    PERFORM p_bdc_dynpro USING 'SAPMV13A'
    '0100'.
    PERFORM p_bdc_field USING 'BDC_OKCODE'
    '=ANTA'.
    PERFORM p_bdc_field USING 'RV13A-KSCHL'
    gw_kschl.
    Choix de la clef.
    PERFORM p_bdc_dynpro USING 'SAPLV14A'
    '0100'.
    PERFORM p_bdc_field USING 'BDC_OKCODE'
    '=WEIT'.
    PERFORM p_bdc_field USING 'RV130-SELKZ(01)'
    'X'.
    Enregistre la nouvelle condition.
    PERFORM p_bdc_dynpro USING 'SAPMV13A'
    '1510'.
    PERFORM p_bdc_field USING 'BDC_OKCODE'
    '=SICH'.
    PERFORM p_bdc_field USING 'KOMG-VKORG'
    is_data-vkorg.
    PERFORM p_bdc_field USING 'KOMG-VTWEG'
    is_data-vtweg.
    PERFORM p_bdc_field USING 'KOMG-KUNNR'
    is_data-kunnr.
    PERFORM p_bdc_field USING 'KOMG-MATNR'
    is_data-matnr.
    PERFORM p_bdc_field USING 'KOMG-WERKS'
    is_data-werks.
    PERFORM p_bdc_field USING 'KOMG-AUART_SD'
    is_data-auart_sd.
    PERFORM p_bdc_field USING 'KOMG-INCO1(01)'
    is_data-inco1.
    WRITE is_data-kbetr2 TO w_kbetr.
    PERFORM p_bdc_field USING 'KONP-KBETR(01)'
    w_kbetr.
    WRITE is_data-kpein TO w_kpein.
    PERFORM p_bdc_field USING 'KONP-KPEIN(01)'
    w_kpein.
    WRITE is_data-kmein TO w_kmein.
    PERFORM p_bdc_field USING 'KONP-KMEIN(01)'
    w_kmein.
    WRITE is_data-datab TO w_datab.
    PERFORM p_bdc_field USING 'RV13A-DATAB(01)'
    w_datab.
    WRITE is_data-datbi TO w_datbi.
    PERFORM p_bdc_field USING 'RV13A-DATBI(01)'
    w_datbi.
    Save the transaction.
    PERFORM p_insert_bdc USING 'VK11'.
    Close the Batch-input..
    PERFORM p_close_bdc.
    COMMIT WORK AND WAIT.
    SUBMIT rsbdcsub WITH mappe = w_nom
    WITH von = sy-datum
    WITH bis = sy-datum
    EXPORTING LIST TO MEMORY
    AND RETURN.[/code]

  • What is BDC Session & Z-Program

    Hi,
    Can anyone tell me what is BDC Session & Z-Program ?
    Rajarshi

    Dear Rajarshi,
    BDC (Batch Data Communication) - is one of the methods for uploading the data. You have two options with BDC, namely Session and Call Transaction.
    First you would record a particular transaction with SHDB simulating sample transaction entry. Then you would use this recording to create a 'Z' program.
    With session method a session will be generated that needs to be processed in Transacton SM35 with Foreground, Background, or Errors only mode. You can view and analyze session log after processing the session.
    With call transaction you would specify the mode in the program itself. Hence, no session is generated in SM35 in this case.
    please visit the following link for more information:
    http://help.sap.com/saphelp_erp2005/helpdata/en/fa/097119543b11d1898e0000e8322d00/frameset.htm
    Z programs are custom programs. They could be reports, transactions, scripts, smartforms, BDCs, BAPIs etc. You would develop them if there is no SAP standard program available that meets your requirement.
    Reward points if this is helpful.
    Regards,
    Naveen.

  • BDC session error handling for IW41 transaction

    Hi,
    When the order confirmation is done by BDC session program, it is executed without any error. But if we do the same process manually, it is showing the error message as 'Posting period is Locked for 001 2012'. My question here is why this is not happening when it is executed through bdc session program.
    Anyone can help us?
    Thanks,
    Guna

    It is difficult to believe that you would get good results from background BDC process and error in foreground using same transaction and exactly the same data.  Beyond that, why is month 1 of the current year locked?    Are you absolutely sure that:
    BDC works correctly? maybe does NOT and the errors have been missed or ignored?
    Data is precisely the same for both BDC sessions?
    Same transaction is called?
    Sounds silly perhaps, but I have to believe that something is very different between the two sessions.

  • Problem in bdc session method for tcode FS00

    Hi Experts,
    problem in bdc session method, when i run this program no output is shown.
    Even it is not calling the transaction.
    code as follows.
    *& Report  Z_GL_MASTER
    *& CATEGORY         =  BDC.
    *& DESCRIPTION      =  UPLOADING G/L MASTER RECORDS.
    *& TECHNICAL CONST  =  FRANCIS REDDY.
    *& FUNTIONAL CONST  =  FICO.
    REPORT  Z_GL_MASTER.
    *& Internal  Table
    DATA : BEGIN OF IT_UPLOAD OCCURS 0,
           SAKNR LIKE  GLACCOUNT_SCREEN_KEY-SAKNR,          " ACCOUNT NUMBER.
           BUKRS LIKE  GLACCOUNT_SCREEN_KEY-BUKRS,          " COMPANY CODE.
           KTOKS LIKE GLACCOUNT_SCREEN_COA-KTOKS,           " ACCOUNT GROUP.
           XPLACCT LIKE GLACCOUNT_SCREEN_COA-XPLACCT,       " P&L STATEMEMENT.
           GVTYP LIKE  GLACCOUNT_SCREEN_COA-GVTYP,          " P&L STATEMENT TYPE.
           XBILK LIKE GLACCOUNT_SCREEN_COA-XBILK,           " BALANCE SHEET STATEMENT
           SHORT LIKE GLACCOUNT_SCREEN_COA-TXT20_ML,        " SHORT TEXT.
           LONG LIKE GLACCOUNT_SCREEN_COA-TXT50_ML,         " LONG TEXT.
           WAERS LIKE GLACCOUNT_SCREEN_CCODE-WAERS,         " ACCOUNT CURRENCY.
           XSALH LIKE GLACCOUNT_SCREEN_CCODE-XSALH,         " ONLY BALANCES IN LOCAL CURRENCY.
           MITKZ LIKE GLACCOUNT_SCREEN_CCODE-MITKZ,         " RECONCILATION ACCOUNT FOR ACCOUNT TYPEGLACCOUNT_SCREEN_CCODE-MITKZ
           XOPVW LIKE GLACCOUNT_SCREEN_CCODE-XOPVW,         " OPEN ITEM MANAGEMENT.
           XKRES LIKE GLACCOUNT_SCREEN_CCODE-XKRES,         " LINE ITEM DISPLAY.
           ZUAWA LIKE GLACCOUNT_SCREEN_CCODE-ZUAWA,         " SORT KEY.
           FSTAG LIKE GLACCOUNT_SCREEN_CCODE-FSTAG,         " FIELD STATUS GROUP.
           XGKON LIKE GLACCOUNT_SCREEN_CCODE-XGKON,         " RELAVENT CASH FLOW.
           END OF IT_UPLOAD.
    *& Internal  Table FOR BDC DATA.
    DATA : IT_BDCDATA TYPE  BDCDATA OCCURS 0  WITH HEADER LINE.
    *& DATA DECLARATIONS.
    DATA : V_FILE LIKE RLGRAP-FILENAME.
    *&  SELECTION SCREEN.
    PARAMETER : P_FILE LIKE V_FILE.
    AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_FILE.
         PERFORM GET_FILENAME.
    START-OF-SELECTION.
          PERFORM UPLOAD_DATA.
          PERFORM BDCDATA_OPEN.
          PERFORM BDC_POPULATE.
          PERFORM BDC_CLOSE.
    *&      Form  GET_FILENAME
    form GET_FILENAME .
      CALL FUNCTION 'F4_FILENAME'
       EXPORTING
         PROGRAM_NAME        = SYST-CPROG
         DYNPRO_NUMBER       = SYST-DYNNR
         FIELD_NAME          = 'P_FILE'
       IMPORTING
         FILE_NAME           = P_FILE.
    endform.                    " GET_FILENAME
    *&      Form  UPLOAD_DATA
    form UPLOAD_DATA .
    CALL FUNCTION 'WS_UPLOAD'
    EXPORTING
       FILENAME                      =  P_FILE
       FILETYPE                      = 'DAT'
      TABLES
        data_tab                     = IT_UPLOAD.
    endform.                    " UPLOAD_DATA
    *&      Form  BDCDATA_OPEN
       FORM FOR BDC_OPEN_GROUP.
    form BDCDATA_OPEN .
    CALL FUNCTION 'BDC_OPEN_GROUP'
    EXPORTING
       CLIENT                    = SY-MANDT
       GROUP                     = 'GLMASTER'
       HOLDDATE                  = SY-DATUM
       KEEP                      = 'X'
       USER                      = SY-UNAME.
    endform.                    " BDCDATA_OPEN
    *&      Form  BDC_POPULATE
      POPULATING BDC DATA .
    form BDC_POPULATE .
    loop at it_upload.
    PERFORM BDC_SUB1 USING 'X' 'SAPLGL_ACCOUNT_MASTER_MAINTAIN' '2001'.
    PERFORM BDC_SUB2 USING 'BDC_OKCODE' '=ACC_CRE'.
    PERFORM BDC_SUB2 USING 'BDC_CURSOR' 'GLACCOUNT_SCREEN_KEY-SAKNR'.
    PERFORM BDC_SUB2 USING 'GLACCOUNT_SCREEN_KEY-SAKNR'    IT_UPLOAD-SAKNR.
    PERFORM BDC_SUB2 USING 'GLACCOUNT_SCREEN_KEY-BUKRS'    IT_UPLOAD-BUKRS.
    PERFORM BDC_SUB1 USING 'X' 'SAPLGL_ACCOUNT_MASTER_MAINTAIN' '2001'.
    PERFORM BDC_SUB2 USING 'BDC_OKCODE' '=2102_GROUP'.
    PERFORM BDC_SUB2 USING 'BDC_CURSOR' 'GLACCOUNT_SCREEN_COA-KTOKS'.
    PERFORM BDC_SUB2 USING 'GLACCOUNT_SCREEN_COA-KTOKS'    IT_UPLOAD-KTOKS.
    PERFORM BDC_SUB2 USING 'GLACCOUNT_SCREEN_COA-XPLACCT'  IT_UPLOAD-XPLACCT.
    PERFORM BDC_SUB1 USING 'X' 'SAPLGL_ACCOUNT_MASTER_MAINTAIN' '2001'.
    PERFORM BDC_SUB2 USING 'BDC_OKCODE' '=2102_BS_PL'.
    PERFORM BDC_SUB2 USING 'GLACCOUNT_SCREEN_COA-GVTYP'    IT_UPLOAD-GVTYP.
    PERFORM BDC_SUB2 USING 'GLACCOUNT_SCREEN_COA-XBILK'    IT_UPLOAD-XBILK.
    PERFORM BDC_SUB1 USING 'X' 'SAPLGL_ACCOUNT_MASTER_MAINTAIN' '2001'.
    PERFORM BDC_SUB2 USING 'BDC_CURSOR' 'GLACCOUNT_SCREEN_COA-TXT20_ML'.
    PERFORM BDC_SUB2 USING 'GLACCOUNT_SCREEN_COA-TXT20_ML' IT_UPLOAD-SHORT.
    PERFORM BDC_SUB2 USING 'GLACCOUNT_SCREEN_COA-TXT50_ML' IT_UPLOAD-LONG.
    PERFORM BDC_SUB1 USING 'X' 'SAPLGL_ACCOUNT_MASTER_MAINTAIN' '2001'.
    PERFORM BDC_SUB2 USING  'BDC_OKCODE' '=TAB02'.
    PERFORM BDC_SUB2 USING 'GLACCOUNT_SCREEN_CCODE-WAERS'  IT_UPLOAD-WAERS.
    PERFORM BDC_SUB2 USING 'GLACCOUNT_SCREEN_CCODE-XSALH'  IT_UPLOAD-XSALH.
    PERFORM BDC_SUB2 USING 'GLACCOUNT_SCREEN_CCODE-MITKZ'  IT_UPLOAD-MITKZ.
    PERFORM BDC_SUB2 USING 'GLACCOUNT_SCREEN_CCODE-XOPVW'  IT_UPLOAD-XOPVW.
    PERFORM BDC_SUB2 USING 'GLACCOUNT_SCREEN_CCODE-XKRES'  IT_UPLOAD-XKRES.
    PERFORM BDC_SUB2 USING 'GLACCOUNT_SCREEN_CCODE-ZUAWA'  IT_UPLOAD-ZUAWA.
    PERFORM BDC_SUB1 USING 'X' 'SAPLGL_ACCOUNT_MASTER_MAINTAIN' '2001'.
    PERFORM BDC_SUB2 USING 'BDC_OKCODE' '=TAB03'.
    PERFORM BDC_SUB2 USING 'GLACCOUNT_SCREEN_CCODE-FSTAG' IT_UPLOAD-FSTAG.
    PERFORM BDC_SUB2 USING 'GLACCOUNT_SCREEN_CCODE-XGKON' IT_UPLOAD-XGKON.
    CALL FUNCTION 'BDC_INSERT'
      EXPORTING
        TCODE                  = 'FS00'
       TABLES
         dynprotab              = IT_BDCDATA.
    endloop.
    endform.                    " BDC_POPULATE
    *&      Form  BDC_CLOSE
    FORM FOR CLOSING BDC_GROUP
    form BDC_CLOSE .
    CALL FUNCTION 'BDC_CLOSE_GROUP'.
    endform.                    " BDC_CLOSE
    *&      Form  BDC_SUB1
       FORM FOR BDCDATA.
    form BDC_SUB1   USING  A  B  C.
    CLEAR  IT_BDCDATA.
    IT_BDCDATA-DYNBEGIN = A.
    IT_BDCDATA-PROGRAM =  B.
    IT_BDCDATA-DYNPRO =   C.
    APPEND IT_BDCDATA.
    endform.                    " BDC_SUB1
    *&      Form  BDC_SUB2
          text
    form BDC_SUB2   USING  A  B.
    CLEAR  IT_BDCDATA.
      IT_BDCDATA-FNAM = A.
      IT_BDCDATA-FVAL = B.
      APPEND IT_BDCDATA.
    endform.                    " BDC_SUB2
    Points will be  rewarded.
    Thanks in advance.
    Francis.

    Hi,
    Once the program is executed..It will a BDC session..
    THen you have to use the transaction SM35..To process the BDC session..
    Thanks,
    Naren

  • BDC session release

    Hello All,
    I have a question in BDC session method. I am using BDC insert for calling ME11, ME12 and ME15 (create, change and delete) transaction for creating purchase info records. I have a specific situation where I am looping thru an internal table and calling BDC_insert (Create, change or delete) for each record . Finally, after looping all records, submitting 'rsbdcsub' program to release the bdc sessions. Only the first record in the internal table is committed and all others are ignored. Why is this happening? Do I need to explicitly call BDC_release after every insert.
    I cannot release the session until the entire records are successfully inserted. So please suggest some solution for achieving this
    Thanks
    Ricky

    Hi All,
    Here is the code.
        CALL FUNCTION 'BDC_OPEN_GROUP'
          EXPORTING
            client                    = sy-mandt
          DEST                      = FILLER8
            group                     = l_group
          HOLDDATE                  = FILLER8
            keep                      = 'X'
            user                      = sy-uname
          RECORD                    = FILLER1
          PROG                      = SY-CPROG
        IMPORTING
          QID                       =
       EXCEPTIONS
         client_invalid            = 1
         destination_invalid       = 2
         group_invalid             = 3
         group_is_locked           = 4
         holddate_invalid          = 5
         internal_error            = 6
         queue_error               = 7
         running                   = 8
         system_lock_error         = 9
         user_invalid              = 10
         OTHERS                    = 11
    itab is an internal table which contain the input data to be processed.
    wa_tab is a work area.
    Loop at itab into wa_tab.
        if wa_tab-flag = 'A'. "Create info record
    PERFORM bdc_dynpro_start USING 'SAPMM06I' '0100'.
    PERFORM bdc_insert_field.  "This is recording program to create info record 
        call function bdc_insert
          exporting
                tcode = ME11
         tables
              dynprotab = t_bdc_table.
      elseif wa_tab-flag = 'C'. "Change info record
    PERFORM bdc_dynpro_start USING 'SAPMM06I' '0100'.
    PERFORM bdc_insert_field.  "This is recording program to change info record 
          call function bdc_insert
          exporting
                tcode = ME12
         tables
              dynprotab = t_bdc_table.
      else.   "Delete info record
    PERFORM bdc_dynpro_start USING 'SAPMM06I' '0100'.
    PERFORM bdc_insert_field.  "This is recording program to delete info record 
               call function bdc_insert
          exporting
                tcode = ME15
         tables
              dynprotab = t_bdc_table.
    Endloop.
    FORM bdc_insert_field USING f_name f_value.
      IF f_value <> space.
        CLEAR t_bdc_table.
        t_bdc_table-fnam = f_name.
        t_bdc_table-fval = f_value.
        APPEND t_bdc_table.
      ENDIF.
    ENDFORM.                    "bdc_insert_field
    form bdc_dynpro_start  using  p_g_program_1
                                  p_g_screen.
      CLEAR t_bdc_table.
      t_bdc_table-program  = p_g_program_1.
      t_bdc_table-dynpro   = p_g_screen.
      t_bdc_table-dynbegin = 'X'.
      APPEND t_bdc_table.
    endform.                    " bdc_dynpro_start
    Call function bdc_close_group.
        SUBMIT rsbdcsub WITH mappe EQ l_group
                         WITH von EQ sy-datum
                         WITH bis EQ sy-datum
                         WITH fehler EQ '.'
                         EXPORTING LIST TO MEMORY
                         AND RETURN.
    I want to call this submit only once in the program and if all records are successfully processed. Otherwise,  I need to delete the session to give it a roll back.
    Hope it is clear now. Any other approach is also welcomed. Thanks!
    Thanks
    Ricky

  • Please Help using BAPI_TRANSACTION_COMMIT in BDC session

    Hi,
      I am using custom transaction to create vendor invoices by using function module BAPI_INCOMINGINVOICE_CREATE and it creates the invoice and go to BAPI_TRANSACTION_COMMIT to commit the database updates. 
    The problem is when i am creating the invoice for multiple PO's using BDC session method this program executes only of one PO's and commits created invoice data and comes out of the program with out continuing to further steps after BAPI_TRANSACTION_COMMIT FM execution. Please advise me how to resolve this.
    Regards,
    Challa

    Hello Challa
    The command
    CALL TRANSACTION USING...
    has to optional addition
    OPTIONS FROM ls_options.
    where ls_options is of type CTU_PARAMS.
    In the documentation of CALL TRANSACTION is says that if RACOMMIT = 'X' then CALL TRANSACTION USING... is not completed by COMMIT.
    I guess the commit work does prematurely finish your BDC session if this option is initial.
    Regards
       Uwe

  • Error in BDC session for tcode MR21

    Hello all,
    I have to create one BDC session program for change in valuation price.
    i have following input parameter :
         Plant  Article                           Price, Dec 2     Price unit
         0690  000000000906671600  00000021207  00100
         the price is  212,07   a decimal sign is not included
    i have created one program but its not working.its giving runtime error CONVT_NO_NUMBER
    Edited by: Sujeet Mishra on Apr 22, 2009 3:07 PM
    LOOP AT it_final.
    *perform open_dataset using dataset.
    *perform open_dataset using p_file.
    perform open_group.
    *do.
    *read dataset dataset into record.
    *if sy-subrc <> 0. exit. endif.
    perform bdc_dynpro      using 'SAPRCKM_MR21' '0201'.
    perform bdc_field       using 'BDC_CURSOR'
                                  'MR21HEAD-BUDAT'.
    perform bdc_field       using 'BDC_OKCODE'
                                  '=ENTR'.
    *perform bdc_field       using 'MR21HEAD-BUDAT'
                                 record-BUDAT_001.
    perform bdc_field       using 'MR21HEAD-WERKS'
                                  IT_FINAL-WERKS.
    *perform bdc_field       using 'MR21HEAD-SCREEN_VARIANT'
                                 record-SCREEN_VARIANT_003.
    perform bdc_dynpro      using 'SAPRCKM_MR21' '0201'.
    perform bdc_field       using 'BDC_OKCODE'
                                  '=ENTR'.
    perform bdc_field       using 'BDC_CURSOR'
                                  'CKI_MR21_0250-NEWVALPR(01)'.
    *perform bdc_field       using 'MR21HEAD-SCREEN_VARIANT'
                                 record-SCREEN_VARIANT_004.
    perform bdc_field       using 'CKI_MR21_0250-MATNR(01)'
                                  IT_FINAL-MATNR.
    *perform bdc_field       using 'CKI_MR21_0250-BWTAR(01)'
                                 record-BWTAR_01_006.
    *perform bdc_field       using 'CKI_MR21_0250-NEWVALPR(01)'
                                 IT_FINAL-PRICE.
    perform bdc_dynpro      using 'SAPRCKM_MR21' '0201'.
    perform bdc_field       using 'BDC_OKCODE'
                                  '=SAVE'.
    perform bdc_field       using 'BDC_CURSOR'
                                  'CKI_MR21_0250-MATNR(02)'.
    *perform bdc_field       using 'MR21HEAD-SCREEN_VARIANT'
                                 record-SCREEN_VARIANT_008.
    perform bdc_transaction using 'MR21'.
    perform bdc_dynpro      using 'SAPRCKM_MR21' '0201'.
    *perform bdc_field       using 'BDC_CURSOR'
                                 'MR21HEAD-BUDAT'.
    perform bdc_field       using 'BDC_OKCODE'
                                  '=ENTR'.
    *perform bdc_field       using 'MR21HEAD-BUDAT'
                                 record-BUDAT_009.
    perform bdc_field       using 'MR21HEAD-WERKS'
                                  IT_FINAL-WERKS.
    *perform bdc_field       using 'MR21HEAD-SCREEN_VARIANT'
                                 record-SCREEN_VARIANT_011.
    perform bdc_dynpro      using 'SAPRCKM_MR21' '0201'.
    perform bdc_field       using 'BDC_OKCODE'
                                  '=ENTR'.
    perform bdc_field       using 'BDC_CURSOR'
                                  'CKI_MR21_0250-NEWVALPR(01)'.
    *perform bdc_field       using 'MR21HEAD-SCREEN_VARIANT'
                                 record-SCREEN_VARIANT_012.
    perform bdc_field       using 'CKI_MR21_0250-MATNR(01)'
                                  IT_FINAL-MATNR.
    *perform bdc_field       using 'CKI_MR21_0250-BWTAR(01)'
                                 record-BWTAR_01_014.
    perform bdc_field       using 'CKI_MR21_0250-NEWVALPR(01)'
                                  IT_FINAL-PRICE.
    perform bdc_dynpro      using 'SAPRCKM_MR21' '0201'.
    perform bdc_field       using 'BDC_OKCODE'
                                  '=SAVE'.
    perform bdc_field       using 'BDC_CURSOR'
                                  'CKI_MR21_0250-MATNR(02)'.
    *perform bdc_field       using 'MR21HEAD-SCREEN_VARIANT'
                                 record-SCREEN_VARIANT_016.
    perform bdc_transaction using 'MR21'.
    *enddo.
    perform close_group.
    *perform close_dataset using dataset.
    *perform close_dataset using p_file.
    ENDLOOP.
    Edited by: Sujeet Mishra on Apr 22, 2009 3:09 PM
    Edited by: Sujeet Mishra on Apr 23, 2009 5:56 AM

    Hello
    my amount field code
    perform bdc_field       using 'CKI_MR21_0250-NEWVALPR(01)'
                                        IT_FINAL-NEWVALPR.
    is giving dump.
    my declaration are like below :
    Generated data section with specific formatting - DO NOT CHANGE  ***
    data: begin of record,
    data element: BUDAT
            BUDAT_001(010),
    data element: WERKS_D
            WERKS_002(004),
    data element: SCREEN_VARIANT
            SCREEN_VARIANT_003(030),
    data element: SCREEN_VARIANT
            SCREEN_VARIANT_004(030),
    data element: MATNR
            MATNR_01_005(018),
    data element: BWTAR_D
            BWTAR_01_006(010),
    data element: VALPR
            NEWVALPR_01_007(015),
    data element: SCREEN_VARIANT
            SCREEN_VARIANT_008(030),
          end of record.
    End generated data section ***
    data: begin of it_final occurs 0,
            BUDAT TYPE MR21HEAD-BUDAT,
            WERKS TYPE MR21HEAD-WERKS,
            SCREEN_VARIANT TYPE MR21HEAD-SCREEN_VARIANT,
            SCREEN_VARIANT_004 TYPE MR21HEAD-SCREEN_VARIANT,
            MATNR TYPE CKI_MR21_0250-MATNR,
            BWTAR TYPE CKI_MR21_0250-BWTAR,
            NEWVALPR TYPE CKI_MR21_0250-NEWVALPR,
            SCREEN_VARIANT_008 TYPE MR21HEAD-SCREEN_VARIANT,
          end of it_final.
    please guide me.
    thanks,
    sujeet
    Edited by: Sujeet Mishra on Apr 23, 2009 12:44 PM

  • LSMW-Error during processing of BDC session change to material master MM02

    I have created an LSMW for changing material master data.  I recorded MM02 and using the "select views" screen selected the accounting 2 view and entered the information in the fields on that screen requiring changes.  I've set up all of the technical screens for the LSMW.  However, when I process the BDC session with "display errors only", the program stops at the select view screen with an error message "Select at least one view".  Any ideas how I can process through this screen so that the Accounting 2 screen opens in the BDC session?  One further note, I set that selection as a constant in the field mapping and conversion rules screen.  The field name recorded as KZSEL_05.

    hi
    one question how did you choose the view? i mean to ask by scrolling down using mouse or page down.
    the scrolling by mouse is not recognized by recording and that may be the error. so whenever you have to go down in screen please use page down not scrolling at least in LSMW.

  • Process bdc session in Background

    Hi all,
    I have created a BDC Session, Now i want to process it in Foreground not in Background.
    I know taht we use report RSBDCSUB for background processing but don't know the procedure for Forground.
    Sugess.
    Points will be sured for valuable answers.
    Thanks
    Sanket sethi

    hi,
    if you want it to be done by program then try this which is done through program
    TABLES: LFA1,
            RF02K.
    TYPES: BEGIN OF TY_ITAB,
            LIFNR LIKE RF02K-LIFNR,
            KTOKK LIKE RF02K-KTOKK,
            NAME1 LIKE LFA1-NAME1,
            SORTL LIKE LFA1-SORTL,
            LAND1 LIKE LFA1-LAND1,
            SPRAS LIKE LFA1-SPRAS,
            END OF TY_ITAB.
    DATA: T_ITAB TYPE TABLE OF TY_ITAB,
           W_ITAB TYPE TY_ITAB.
    DATA: I_BDCDATA TYPE TABLE OF BDCDATA,
           WA_BDCDATA TYPE BDCDATA.
    DATA : ITAB1 LIKE ALSMEX_TABLINE OCCURS 0 WITH HEADER LINE.
    DATA : JOBNAME(32) TYPE C,
            JOBCOUNT(8) TYPE C.
    DATA: R1 TYPE I VALUE 1,
           C1 TYPE I VALUE 1,
           R2 TYPE I VALUE 4,
           C2 TYPE I VALUE 8,
           FILEPATH LIKE RLGRAP-FILENAME.
    SELECTION-SCREEN: BEGIN OF BLOCK B1.
    PARAMETERS:P_SRCFIL LIKE RLGRAP-FILENAME.
    SELECTION-SCREEN: END OF BLOCK B1.
    AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_SRCFIL.
    PERFORM SELECT_FILE USING P_SRCFIL.
    START-OF-SELECTION.
    FILEPATH = P_SRCFIL.
    CALL FUNCTION 'ALSM_EXCEL_TO_INTERNAL_TABLE'
       EXPORTING
         FILENAME                      = FILEPATH
         I_BEGIN_COL                   = 1
         I_BEGIN_ROW                   = 1
         I_END_COL                     = 8
         I_END_ROW                     = 4
       TABLES
         INTERN                        = ITAB1.
    PERFORM ORGANIZE_UPLOADED_DATA.
    CALL FUNCTION 'BDC_OPEN_GROUP'
      EXPORTING
        CLIENT                    = SY-MANDT
       DEST                      = FILLER8
        GROUP                      = 'XK01'
       HOLDDATE                  = FILLER8
        KEEP                       = 'X'
        USER                       = SY-UNAME.
    LOOP AT T_ITAB INTO W_ITAB.
    PERFORM BDC_DYNPRO USING 'SAPMF02K' '0100'.
    PERFORM BDC_FIELD USING 'BDC_CURSOR'
    'RF02K-KTOKK'.
    PERFORM BDC_FIELD USING 'BDC_OKCODE'
    '/00'.
    PERFORM BDC_FIELD USING 'RF02K-LIFNR'
    W_ITAB-LIFNR.
    PERFORM BDC_FIELD USING 'RF02K-KTOKK'
    W_ITAB-KTOKK.
    PERFORM BDC_DYNPRO USING 'SAPMF02K' '0110'.
    PERFORM BDC_FIELD USING 'BDC_CURSOR'
    'LFA1-SPRAS'.
    PERFORM BDC_FIELD USING 'BDC_OKCODE'
    '/00'.
    PERFORM BDC_FIELD USING 'LFA1-NAME1'
    W_ITAB-NAME1.
    PERFORM BDC_FIELD USING 'LFA1-SORTL'
    W_ITAB-SORTL.
    PERFORM BDC_FIELD USING 'LFA1-LAND1'
    W_ITAB-LAND1.
    PERFORM BDC_FIELD USING 'LFA1-SPRAS'
    W_ITAB-SPRAS.
    PERFORM BDC_DYNPRO USING 'SAPMF02K' '0120'.
    PERFORM BDC_FIELD USING 'BDC_CURSOR'
    'LFA1-KUNNR'.
    PERFORM BDC_FIELD USING 'BDC_OKCODE'
    '/00'.
    PERFORM BDC_DYNPRO USING 'SAPMF02K' '0130'.
    PERFORM BDC_FIELD USING 'BDC_CURSOR'
    'LFBK-BANKS(01)'.
    PERFORM BDC_FIELD USING 'BDC_OKCODE'
    '=ENTR'.
    PERFORM BDC_DYNPRO USING 'SAPMF02K' '0380'.
    PERFORM BDC_FIELD USING 'BDC_CURSOR' 'KNVK-NAMEV(01)'.
    PERFORM BDC_FIELD USING 'BDC_OKCODE' '=ENTR'.
    CLEAR W_ITAB.
    CALL FUNCTION 'BDC_INSERT'
    EXPORTING
       TCODE                   = 'XK01'
      TABLES
        DYNPROTAB              = I_BDCDATA.
      REFRESH I_BDCDATA.
    ENDLOOP.
    CALL FUNCTION 'BDC_CLOSE_GROUP' .
    JOBNAME = 'JOB'.
      CALL FUNCTION 'JOB_OPEN'
        EXPORTING
      DELANFREP              = ' '
      JOBGROUP               = ' '
          JOBNAME                = JOBNAME
    IMPORTING
       JOBCOUNT               = JOBCOUNT
    CHANGING
      RET                    =
    EXCEPTIONS
      CANT_CREATE_JOB        = 1
      INVALID_JOB_DATA       = 2
      JOBNAME_MISSING        = 3
      OTHERS                 = 4
      IF SY-SUBRC = 0.
       MESSAGE I000(0)      WITH 'SUCCESSFUL JOB OPENING'.
    SUBMIT RSBDCSUB
    WITH MAPPE = 'XK01'
    WITH VON = SY-DATUM
    *WITH Z_VERARB = 'X'
    WITH ERR = 'X'
    WITH LOGALL = 'X'
    AND RETURN EXPORTING LIST TO MEMORY.
    ENDIF.
    CALL FUNCTION 'JOB_CLOSE'
        EXPORTING
          JOBCOUNT                          = JOBCOUNT
          JOBNAME                           = JOBNAME
    EXCEPTIONS
       CANT_START_IMMEDIATE              = 1
       INVALID_STARTDATE                 = 2
       JOBNAME_MISSING                   = 3
       JOB_CLOSE_FAILED                  = 4
       JOB_NOSTEPS                       = 5
       JOB_NOTEX                         = 6
       LOCK_FAILED                       = 7
       INVALID_TARGET                    = 8
       OTHERS                            = 9
      IF SY-SUBRC <> 0.
       MESSAGE I000(0)   WITH 'JOBCLOSE'.
    ENDIF.
    *&      Form  ORGANIZE_UPLOADED_DATA
          text
    -->  p1        text
    <--  p2        text
    FORM ORGANIZE_UPLOADED_DATA .
    SORT ITAB1 BY ROW COL.
    LOOP AT ITAB1.
    CASE ITAB1-COL.
    WHEN 1.
    W_ITAB-LIFNR = ITAB1-VALUE.
    WHEN 2.
    W_ITAB-KTOKK = ITAB1-VALUE.
    WHEN 3.
    W_ITAB-NAME1 = ITAB1-VALUE.
    WHEN 4.
    W_ITAB-SORTL = ITAB1-VALUE.
    WHEN 5.
    W_ITAB-LAND1 = ITAB1-VALUE.
    WHEN 6.
    W_ITAB-SPRAS = ITAB1-VALUE.
    ENDCASE.
    AT END OF ROW.
    APPEND W_ITAB TO T_ITAB.
    CLEAR W_ITAB.
    ENDAT.
    ENDLOOP.
    ENDFORM.                    " ORGANIZE_UPLOADED_DATA
    *&      Form  select_file
          text
         -->P_P_SRCFIL  text
    FORM SELECT_FILE  USING    P_SRCFIL.
    CALL FUNCTION 'F4_FILENAME'
    EXPORTING
       PROGRAM_NAME        = SYST-CPROG
       DYNPRO_NUMBER       = SYST-DYNNR
       FIELD_NAME          = ' '
    IMPORTING
       FILE_NAME           = P_SRCFIL
    ENDFORM.                    " select_file
    *&      Form  bdc_dynpro
          text
         -->P_0131   text
         -->P_0132   text
    FORM BDC_DYNPRO  USING   PROGRAM LIKE BDCDATA-PROGRAM DYNPRO LIKE BDCDATA-DYNPRO.
      CLEAR WA_BDCDATA.
      WA_BDCDATA-PROGRAM  = PROGRAM.
      WA_BDCDATA-DYNPRO   = DYNPRO.
      WA_BDCDATA-DYNBEGIN = 'X'.
      APPEND WA_BDCDATA TO I_BDCDATA.
    ENDFORM.                    " bdc_dynpro
    *&      Form  bdc_field
          text
         -->P_0136   text
         -->P_0137   text
    FORM BDC_FIELD  USING    FNAM LIKE BDCDATA-FNAM  FVAL TYPE ANY  .
        CLEAR WA_BDCDATA.
        WA_BDCDATA-FNAM = FNAM.
        WA_BDCDATA-FVAL = FVAL.
        APPEND WA_BDCDATA TO I_BDCDATA.
    ENDFORM.                    " bdc_field
    reward if useful,
    thanks and regards

  • Batch Input Session - Display Error Only - SM35

    Dear all,
    Need to do material master extension in MM01 and considering batch input session using mode 'display error' only.
    However,do have a concern on its performance or run time. In SM35, running in display error only mode - will there be any time out error like the ones encounter in abap reporting ?
    This is because, we will be dealing with a huge volume of data (round 2,000). Therefore would like to know, if there would be any possibility that the bdc session in sm35 will experience a time out or not .
    Appreciate it if you could shed some lights on this. Thanks in advance.

    Hello there,
    Executing MM01's batch job in background wasn't really an option. This is because, this error was encountered "Control Framework: Fatal error - GUI cannot be reached".
    Had done a search on this -- and it indicates that in background mode there isn't GUI involved. Searched result also shows that this error appears when its comes to screens with text ie. Purchase Text or Sales text. Nope, no BDC on entering text involved.
    http://www.sapfans.com/forums/viewtopic.php?f=13&t=164902&hilit=ControlFramework%3AFatalerrorGUIcannotbe+reached
    Therefore the option am considering is executing the batch job in "Display Error Only". Nonetheless, am not too sure if this will cause time out. The other reason as to this option is that -- we initially introduced CALL TRANSACTION for extending material in MM01. However, functional feedback that it was slow.
    Kindly advise - thanks in advance.

  • BDC SESSION METHOD EXPLAINED

    Hi,
    Eplained BDC Session Method
    flat file upload into sap

    ABAP BDC SESSION METHOD SAMPLE CODE
    pool of form routines
    include zmppn001.
    Define BDC Table Structure
    data: begin of itab_bdc_tab occurs 0.
    include structure bdcdata.
    data: end of itab_bdc_tab.
    Input record layout of Leagcy File
    data: begin of itab_xcel occurs 0,
    matnr(18) type c,
    werks(4) type c,
    alnag(2) type c,
    verid(4) type c,
    text1(40) type c,
    bstmi like mkal-bstmi,
    bstma like mkal-bstma,
    adatu(10) type c,
    bdatu(10) type c,
    stlal(2) type c,
    stlan(1) type c,
    serkz(1) type c,
    mdv01(8) type c,
    elpro(4) type c,
    alort(4) type c,
    end of itab_xcel.
    data: begin of lt_pp04_cache occurs 0,
    matnr like itab_xcel-matnr,
    werks like itab_xcel-werks,
    alnag like itab_xcel-alnag,
    plnnr like mapl-plnnr,
    arbpl like crhd-arbpl,
    ktext like crtx-ktext,
    end of lt_pp04_cache.
    data: v_ssnnr(4) type n,
    v_lines_in_xcel like sy-tabix,
    v_ssnname like apqi-groupid,
    v_trans_in_ssn type i,
    wa_xcel LIKE itab_xcel,
    l_tabix like sy-tabix,
    v_matnr like rc27m-matnr,
    v_plnnr like mapl-plnnr,
    v_plnal like mapl-plnal,
    v_tcode like sy-tcode value 'C223',
    v_plnty like plas-plnty value 'R',
    v_objty like crhd-objty value 'A',
    v_plpo_steus like plpo-steus value 'PP04',
    v_verwe like crhd-verwe value '0007'.
    Parameters
    selection-screen: skip 3.
    selection-screen: begin of block 1 with frame.
    parameters: p_name like rlgrap-filename
    default 'C:\My Documents\InputFile.txt'
    obligatory,
    bdc session name prefix
    p_bdcpfx(6) default 'ZPVCRT'
    obligatory,
    number for transction per BDC session
    p_trnssn type i
    default 2000 obligatory,
    retain the BDC session after successfull execution
    p_keep like apqi-qerase
    default 'X',
    user who will be executing BDC session
    p_uname like apqi-userid
    default sy-uname
    obligatory.
    selection-screen: end of block 1.
    possible entry list (F4 dropdown) for input file name
    at selection-screen on value-request for p_name.
    *-SELECT FILE FROM USERS LOCAL PC
    call function 'WS_FILENAME_GET'
    exporting
    DEF_FILENAME = ' '
    def_path = 'C:\Temp\'
    mask = ',.,..'
    mode = 'O'
    title = 'Select File '(007)
    importing
    filename = p_name
    RC =
    exceptions
    inv_winsys = 1
    no_batch = 2
    selection_cancel = 3
    selection_error = 4
    others = 5.
    if sy-subrc <> 0.
    MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
    WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
    endif.
    begin the show
    start-of-selection.
    read data from input file
    perform transfer_xcel_to_itab.
    loop at itab_xcel.
    hang on to xcel line num
    l_tabix = sy-tabix.
    each line in the xcel file marks begining of new prod.version defn
    if num-of-trnas-in-session = 0, create new BDC session
    if v_trans_in_ssn is initial.
    perform bdc_session_open.
    endif.
    begin new bdc script for rtg create trans
    fill in bdc-data for prod.version maintenance screens
    perform bdc_build_script.
    insert the bdc script as a BDC transaction
    perform bdc_submit_transaction.
    keep track of how many BDC transactions were inserted in the BDC
    session
    add 1 to v_trans_in_ssn.
    if the user-specified num of trans in BDC session is reached OR
    if end of input file is reached, close the BDC session
    if v_trans_in_ssn = p_trnssn or
    l_tabix = v_lines_in_xcel.
    perform bdc_session_close.
    clear v_trans_in_ssn.
    endif.
    endloop.
    top-of-page.
    call function 'Z_HEADER'
    EXPORTING
    FLEX_TEXT1 =
    FLEX_TEXT2 =
    FLEX_TEXT3 =
    FORM TRANSFER_XCEL_TO_ITAB *
    Transfer Xcel Spreadsheet to SAP Internal Table *
    form transfer_xcel_to_itab.
    Read the tab-delimited file into itab
    call function 'WS_UPLOAD'
    exporting
    filename = p_name
    filetype = 'DAT'
    IMPORTING
    filelength = flength
    tables
    data_tab = itab_xcel
    exceptions
    conversion_error = 1
    file_open_error = 2
    file_read_error = 3
    invalid_table_width = 4
    invalid_type = 5
    no_batch = 6
    unknown_error = 7
    others = 8.
    if sy-subrc = 0.
    sort the data
    sort itab_xcel by matnr werks.
    clear v_lines_in_xcel.
    if no data in the file - error out
    describe table itab_xcel lines v_lines_in_xcel.
    if v_lines_in_xcel is initial.
    write: / 'No data in input file'.
    stop.
    endif.
    else.
    if file upload failed - error out
    write: / 'Error reading input file'.
    stop.
    endif.
    endform.
    FORM BDC_SESSION_OPEN *
    Open BDC Session *
    form bdc_session_open.
    create bdc session name = prefix-from-selectn-screen + nnnn
    add 1 to v_ssnnr.
    concatenate p_bdcpfx v_ssnnr into v_ssnname.
    open new bdc session
    call function 'BDC_OPEN_GROUP'
    exporting
    client = sy-mandt
    group = v_ssnname
    keep = p_keep
    user = p_uname
    exceptions
    client_invalid = 1
    destination_invalid = 2
    group_invalid = 3
    group_is_locked = 4
    holddate_invalid = 5
    internal_error = 6
    queue_error = 7
    running = 8
    system_lock_error = 9
    user_invalid = 10
    others = 11.
    endform.
    FORM BDC_BUILD_SCRIPT *
    Build BDC *
    form bdc_build_script.
    data: l_arbpl like crhd-arbpl,
    l_text1 like mkal-text1,
    l_mdv01 like mkal-mdv01,
    l_mapl like mapl.
    clear bdc-data itab - begin of new bdc transaction
    clear itab_bdc_tab.
    refresh itab_bdc_tab.
    read material cross reference tables to determine sap part#
    clear : v_matnr, v_plnnr, v_plnal.
    perform read_matnr_cross_ref using itab_xcel-matnr
    itab_xcel-werks
    changing v_matnr.
    determine the version description to use
    if itab_xcel-text1 is initial.
    l_text1 = itab_xcel-verid.
    else.
    l_text1 = itab_xcel-text1.
    endif.
    determine the routing group# and group ctr# to use
    perform read_routing .
    determine the production line to use
    if itab_xcel-mdv01 is initial.
    if not provided in the file then:
    prod line = work ctr on the last PP04 op of the rtg determined above
    perform read_wc_on_last_pp04 using v_plnnr v_plnal
    changing l_mdv01.
    NOTE: when executing the above form\routine, if v_plnnr is initial
    or v_plnal is initial, THEN l_mdv01 will automatically be
    returned blank (ie initial)
    else.
    l_mdv01 = itab_xcel-mdv01.
    endif.
    build bdc script
    perform bdc_build_script_record
    fill in initial screen
    using: 'X' 'SAPLCMFV' '1000',
    ' ' 'BDC_OKCODE' '=ENTE',
    ' ' 'MKAL-WERKS' itab_xcel-werks,
    ' ' 'MKAL-MATNR' v_matnr,
    ' ' 'MKAL_ADMIN-DISPO' space,
    ' ' 'MKAL-PLNNR' space,
    ' ' 'MKAL_ADMIN-STTAG' space,
    ' ' 'MKAL-PLNNG' space,
    ' ' 'MKAL-MDV01' space,
    ' ' 'MKAL-PLNNM' space,
    click create button on initial screen and go to detail screen
    'X' 'SAPLCMFV' '1000',
    ' ' 'BDC_OKCODE' '=CREA',
    fill in the detail screen and go back to initial screen
    'X' 'SAPLCMFV' '2000',
    ' ' 'BDC_OKCODE' '=CLOS',
    ' ' 'MKAL_EXPAND-MATNR' v_matnr,
    ' ' 'MKAL_EXPAND-VERID' itab_xcel-verid,
    ' ' 'MKAL_EXPAND-TEXT1' l_text1,
    ' ' 'MKAL_EXPAND-BSTMI' itab_xcel-bstmi,
    ' ' 'MKAL_EXPAND-BSTMA' itab_xcel-bstma,
    ' ' 'MKAL_EXPAND-ADATU' itab_xcel-adatu,
    ' ' 'MKAL_EXPAND-BDATU' itab_xcel-bdatu,
    ' ' 'MKAL_EXPAND-PLTYG' v_plnty,
    ' ' 'MKAL_EXPAND-PLNNG' v_plnnr,
    ' ' 'MKAL_EXPAND-ALNAG' v_plnal,
    ' ' 'MKAL_EXPAND-STLAL' itab_xcel-stlal,
    ' ' 'MKAL_EXPAND-STLAN' itab_xcel-stlan,
    ' ' 'MKAL_EXPAND-SERKZ' itab_xcel-serkz,
    ' ' 'MKAL_EXPAND-MDV01' l_mdv01,
    ' ' 'MKAL_EXPAND-ELPRO' itab_xcel-elpro,
    ' ' 'MKAL_EXPAND-ALORT' itab_xcel-alort,
    save the production version from initial screen
    'X' 'SAPLCMFV' '1000',
    ' ' 'BDC_OKCODE' '=SAVE'.
    endform.
    FORM BDC_SUBMIT_TRANSACTION *
    Submit BDC Session *
    form bdc_submit_transaction.
    Load BDC script as a trqansction in BDC session
    call function 'BDC_INSERT'
    exporting
    tcode = v_tcode
    tables
    dynprotab = itab_bdc_tab
    exceptions
    internal_error = 01
    not_open = 02
    queue_error = 03
    tcode_invalid = 04.
    endform.
    FORM BDC_BUILD_SCRIPT_RECORD *
    form bdc_build_script_record using dynbegin name value.
    clear itab_bdc_tab.
    if dynbegin = 'X'.
    move: name to itab_bdc_tab-program,
    value to itab_bdc_tab-dynpro,
    'X' to itab_bdc_tab-dynbegin.
    else.
    move: name to itab_bdc_tab-fnam,
    value to itab_bdc_tab-fval.
    shift itab_bdc_tab-fval left deleting leading space.
    endif.
    append itab_bdc_tab.
    endform.
    FORM BDC_SESSION_CLOSE *
    Close BDC Session *
    form bdc_session_close.
    close the session
    call function 'BDC_CLOSE_GROUP'
    exceptions
    not_open = 1
    queue_error = 2
    others = 3.
    skip 2.
    if sy-subrc ne 0.
    write: / 'Error Closing BDC Session ' , 'RETURN CODE: ', sy-subrc.
    else.
    write : / 'Session created:', v_ssnname,
    50 '# of transactions:', v_trans_in_ssn.
    endif.
    endform.
    *& Form read_routing_cache
    *FORM read_routing_cache USING pi_matnr
    pi_werks
    pi_alnag
    pi_verid
    pi_mdv01.
    DATA: BEGIN OF lt_plpo OCCURS 0,
    vornr LIKE plpo-vornr,
    objty LIKE crhd-objty,
    objid LIKE crhd-objid,
    arbpl LIKE crhd-arbpl,
    END OF lt_plpo,
    l_mapl_plnnr LIKE mapl-plnnr.
    determine the routing group#
    CLEAR lt_pp04_cache.
    chk if its in the cache first, if not then get it from MAPL table
    and put it in the cache
    READ TABLE lt_pp04_cache WITH KEY matnr = pi_matnr
    werks = pi_werks
    alnag = pi_alnag.
    IF sy-subrc = 0.
    do nothing - lt_pp04_cache header line has rtg#
    ELSE.
    get the routing group # from MAPL
    SELECT plnnr INTO l_mapl_plnnr
    FROM mapl UP TO 1 ROWS
    WHERE matnr = pi_matnr AND
    werks = pi_werks AND
    plnty = 'R' AND
    plnal = pi_alnag AND
    loekz = space.
    ENDSELECT.
    put it in the cache internal table
    IF NOT l_mapl_plnnr IS INITIAL.
    lt_pp04_cache-matnr = pi_matnr.
    lt_pp04_cache-werks = pi_werks.
    lt_pp04_cache-alnag = pi_alnag.
    lt_pp04_cache-plnnr = l_mapl_plnnr.
    APPEND lt_pp04_cache.
    ENDIF.
    ENDIF.
    if the rtg# was determined AND
    -- the work center was not determined yet AND
    -- work center was really needed for this line in the input file
    then
    -- read the work center from last PP04 operation on the routing
    -- update the cache accordingly
    IF NOT lt_pp04_cache-plnnr IS INITIAL AND
    lt_pp04_cache-arbpl IS INITIAL AND
    ( pi_verid IS INITIAL OR
    pi_mdv01 IS INITIAL ).
    read the last PP04 operation
    CLEAR lt_plpo.
    REFRESH lt_plpo.
    SELECT vornr eobjty eobjid e~arbpl
    INTO CORRESPONDING FIELDS OF TABLE lt_plpo
    FROM plas AS b
    INNER JOIN plpo AS c
    ON bplnty = cplnty AND
    bplnnr = cplnnr AND
    bzaehl = czaehl
    INNER JOIN crhd AS e
    ON carbid = eobjid
    WHERE b~plnty = v_plnty AND
    b~plnnr = lt_pp04_cache-plnnr AND
    b~plnal = lt_pp04_cache-alnag AND
    c~loekz = space AND
    c~steus = v_plpo_steus AND
    e~objty = v_objty AND
    e~werks = lt_pp04_cache-werks AND
    e~verwe = v_verwe.
    SORT lt_plpo BY vornr DESCENDING.
    READ TABLE lt_plpo INDEX 1.
    IF NOT lt_plpo-arbpl IS INITIAL.
    lt_pp04_cache-arbpl = lt_plpo-arbpl.
    read work center description
    SELECT SINGLE ktext INTO lt_pp04_cache-ktext
    FROM crtx WHERE objty = lt_plpo-objty AND
    objid = lt_plpo-objid AND
    spras = sy-langu.
    the following read will get the index of the correct record to be
    updated in the cache
    READ TABLE lt_pp04_cache
    WITH KEY matnr = pi_matnr
    werks = pi_werks
    alnag = pi_alnag.
    MODIFY lt_pp04_cache
    INDEX sy-tabix
    TRANSPORTING arbpl ktext.
    ENDIF.
    ENDIF.
    *ENDFORM. " read_last_pp04_operation_cache
    *& Form read_routing
    form read_routing.
    data: begin of lt_mapl occurs 0,
    plnnr like mapl-plnnr,
    plnal like mapl-plnal,
    end of lt_mapl,
    l_arbpl like crhd-arbpl.
    get all the rtg# and grp ctr# from MAPL
    select plnnr plnal
    into corresponding fields of table lt_mapl
    from mapl
    where matnr = v_matnr and
    werks = itab_xcel-werks and
    plnty = v_plnty and "Rate Routing
    loekz = space. "with del flag = OFF
    sort lt_mapl by plnal.
    if not itab_xcel-verid is initial.
    if the verid=0001 then use the 1st good rtg-grp# and grp-ctr#
    if itab_xcel-verid = '0001'.
    read table lt_mapl index 1.
    v_plnnr = lt_mapl-plnnr.
    v_plnal = lt_mapl-plnal.
    else.
    if the verid<>0001 then use the rtg-grp# and grp-ctr# of the routing
    whose work center on the last PP04 operation matches the given verid
    loop at lt_mapl.
    clear l_arbpl.
    get the work center from the last PP04 operation
    perform read_wc_on_last_pp04 using lt_mapl-plnnr
    lt_mapl-plnal
    changing l_arbpl.
    if itab_xcel-verid = l_arbpl.
    v_plnnr = lt_mapl-plnnr.
    v_plnal = lt_mapl-plnal.
    exit.
    endif.
    endloop.
    endif.
    else.
    do nothing
    endif.
    For version IDs that are other then '0000' or 'ZWIP' :--
    if itab_xcel-verid NE '0000' and
    itab_xcel-verid NE 'ZWIP'.
    if routing group# or group counter was not determined, make the
    valid-to date 99/99/9999 so that the BDC, on execution, errors out.
    if v_plnnr is initial or
    v_plnal is initial.
    itab_xcel-bdatu = '99/99/9999'.
    endif.
    endif.
    determine the routing group#
    CLEAR lt_pp04_cache.
    chk if its in the cache first, if not then get it from MAPL table
    and put it in the cache
    READ TABLE lt_pp04_cache WITH KEY matnr = pi_matnr
    werks = pi_werks
    alnag = pi_alnag.
    IF sy-subrc = 0.
    do nothing - lt_pp04_cache header line has rtg#
    ELSE.
    get the routing group # from MAPL
    put it in the cache internal table
    IF NOT l_mapl_plnnr IS INITIAL.
    lt_pp04_cache-matnr = pi_matnr.
    lt_pp04_cache-werks = pi_werks.
    lt_pp04_cache-alnag = pi_alnag.
    lt_pp04_cache-plnnr = l_mapl_plnnr.
    APPEND lt_pp04_cache.
    ENDIF.
    ENDIF.
    if the rtg# was determined AND
    -- the work center was not determined yet AND
    -- work center was really needed for this line in the input file
    then
    -- read the work center from last PP04 operation on the routing
    -- update the cache accordingly
    IF NOT lt_pp04_cache-plnnr IS INITIAL AND
    lt_pp04_cache-arbpl IS INITIAL AND
    ( pi_verid IS INITIAL OR
    pi_mdv01 IS INITIAL ).
    read the last PP04 operation
    CLEAR lt_plpo.
    REFRESH lt_plpo.
    SELECT vornr eobjty eobjid e~arbpl
    INTO CORRESPONDING FIELDS OF TABLE lt_plpo
    FROM plas AS b
    INNER JOIN plpo AS c
    ON bplnty = cplnty AND
    bplnnr = cplnnr AND
    bzaehl = czaehl
    INNER JOIN crhd AS e
    ON carbid = eobjid
    WHERE b~plnty = v_plnty AND
    b~plnnr = lt_pp04_cache-plnnr AND
    b~plnal = lt_pp04_cache-alnag AND
    c~loekz = space AND
    c~steus = v_plpo_steus AND
    e~objty = v_objty AND
    e~werks = lt_pp04_cache-werks AND
    e~verwe = v_verwe.
    SORT lt_plpo BY vornr DESCENDING.
    READ TABLE lt_plpo INDEX 1.
    IF NOT lt_plpo-arbpl IS INITIAL.
    lt_pp04_cache-arbpl = lt_plpo-arbpl.
    read work center description
    SELECT SINGLE ktext INTO lt_pp04_cache-ktext
    FROM crtx WHERE objty = lt_plpo-objty AND
    objid = lt_plpo-objid AND
    spras = sy-langu.
    the following read will get the index of the correct record to be
    updated in the cache
    READ TABLE lt_pp04_cache
    WITH KEY matnr = pi_matnr
    werks = pi_werks
    alnag = pi_alnag.
    MODIFY lt_pp04_cache
    INDEX sy-tabix
    TRANSPORTING arbpl ktext.
    ENDIF.
    ENDIF.
    endform. " read_last_pp04_operation_cache
    *& Form read_wc_on_last_pp04
    form read_wc_on_last_pp04 using pi_plnnr
    pi_plnal
    changing pe_arbpl.
    data: begin of lt_plpo occurs 0,
    vornr like plpo-vornr,
    objty like crhd-objty,
    objid like crhd-objid,
    arbpl like crhd-arbpl,
    end of lt_plpo.
    get all the PP04 operations for the given rtg# & grp-ctr#
    select vornr eobjty eobjid e~arbpl
    into corresponding fields of table lt_plpo
    from plas as b
    inner join plpo as c
    on bplnty = cplnty and
    bplnnr = cplnnr and
    bzaehl = czaehl
    inner join crhd as e
    on carbid = eobjid
    where b~plnty = v_plnty and "Rate Routing
    b~plnnr = pi_plnnr and
    b~plnal = pi_plnal and
    c~loekz = space and "Oper Del Flag = OFF
    c~steus = v_plpo_steus and "PP04
    e~objty = v_objty. "WC Obj Type = 'A'
    read the last operation
    sort lt_plpo by vornr descending.
    read table lt_plpo index 1.
    pe_arbpl = lt_plpo-arbpl.
    endform.
    Regards.

Maybe you are looking for

  • How to duplicate whole site

    I have created the site in english and I need to have exact same copy of the site ( with all the links and so on) in other language ( in my case russian). How do I duplicate whole site. I know I can duplicate a single page but not the whole site. Any

  • Alv is not displying

    Hi All I am developing one ALV Report in that i am fetching data from diff tables and i am puting all internal table to one final internal table .Now i want to disply that i am using REUSE_ALV_FIELDCATALOG_MERGE FM aft that iam using REUSE_ALV_LIST_D

  • Demantra with EBS 12i

    Hi Team, I am in the process of integrating demantra with EBS 12i and following below docs Oracle Demantra Installation for Release 7.1.1 http://metalink.oracle.com/metalink/plsql/ml2_documents.showDocument?p_database_id=NOT&p_id=428495.1 Challenge i

  • Trying to edit a sequence with 1920x1080 footage and 720x480 footage

    I am editing in Final Cut Pro 7. I have a sequence Frame Size 1020x1080 Aspect Ratio HDTV 1080i 16:9 Square AppleProRes 422 LT 30 fps with footage from the Canon 5d (AppleProRes 422 LT) 1920x1080 and I would like to add footage shot on miniDV tape on

  • How can I import a pdf file into numbers so it will open with a click

    How can I import a pdf file into a spreadsheet so that it will open with a click?