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

Batch input session

Former Member
0 Kudos

Hi

Can anybody send me a sample code of BDC for sales oder or purchase order using Batch Input Session.

Thanks in advance

Aditya

3 REPLIES 3

Former Member
0 Kudos

Hi,

Instead of BDC you can write the BAPI for these 2 transactions,

for VA01 --> BAPI_SALESORDER_CREATEFROMDAT2

for ME21N --> BAPO_PO_CREATE

You can find lot of example codes in SDN

Regards

Sudheer

Former Member
0 Kudos

Here is the porgram for Purchase order

REPORT zmm0069 NO STANDARD PAGE HEADING
                                  MESSAGE-ID z0
                                  LINE-SIZE  132
                                  LINE-COUNT 65(2).


*----------------------------------------------------------------------*
*                      Internal Tables                                 *
*----------------------------------------------------------------------*

*Internal table for the purchasing info records fields.

  DATA: BEGIN OF i_inforecord OCCURS 0,

        matnr(18),
        lifnr(10),
        uom(3),
        ekgrp(3),
        planned_time(3),
        under_tol(3),
        over_tol(3),
        qty(10),
        price_cat(5),
        inco(3),
        designation(28),
        netpr(13),
        scale_qty1(10),
        scale_pr1(13),
        scale_qty2(10),
        scale_pr2(13),
        scale_qty3(13),
        scale_pr3(10),
        scale_qty4(13),
        scale_pr4(10),
        scale_qty5(13),
        scale_pr5(10),
        scale_qty6(13),
        scale_pr6(10),
        scale_qty7(13),
        scale_pr7(10),
        scale_qty8(13),
        scale_pr8(10),
        scale_qty9(13),
        scale_pr9(10),
        scale_qty10(13),
        scale_pr10(10),

        END OF i_inforecord.

** Internal table for Old and New Vendor number
  DATA : BEGIN OF i_lfb1 OCCURS 1,

         lifnr(10),
         altkn(10),

         END   OF i_lfb1.

** Declare internal table for Call Transaction and BDC Session
  DATA: i_bdc_table LIKE bdcdata OCCURS 0 WITH HEADER LINE.


*----------------------------------------------------------------------*
*                      Global Variables                                *
*----------------------------------------------------------------------*

  DATA: g_counter(2) TYPE n,
        g_field_name(18) TYPE c,
        zc_yes  TYPE syftype VALUE 'X'.


*----------------------------------------------------------------------*
*                      Selection Screen                                *
*----------------------------------------------------------------------*

  SELECTION-SCREEN BEGIN OF BLOCK a WITH FRAME TITLE text-001.

  PARAMETERS: p_fname1 TYPE localfile .

  SELECTION-SCREEN SKIP 1.

  SELECTION-SCREEN BEGIN OF BLOCK b WITH FRAME TITLE text-002.
  PARAMETERS: p_rloc1 AS CHECKBOX  DEFAULT 'X'.

  SELECTION-SCREEN BEGIN OF BLOCK c WITH FRAME TITLE text-003.
  PARAMETERS p_group(12) OBLIGATORY DEFAULT 'ZPURCHINFO'.

  SELECTION-SCREEN END OF BLOCK c.
  SELECTION-SCREEN END OF BLOCK b.
  SELECTION-SCREEN END OF BLOCK a.


**WRITE the report header
  TOP-OF-PAGE.
    INCLUDE zheading.

*----------------------------------------------------------------------*
*                      Start of selection                              *
*----------------------------------------------------------------------*

  START-OF-SELECTION.

* Load Input file
    PERFORM f_load_input_file.

* Create BDC records.
    PERFORM create_bdc_records .


*&---------------------------------------------------------------------*
*&      Form  Create_BDC_records
*&---------------------------------------------------------------------*
*       Perform the BDC for the records in the internal table
*----------------------------------------------------------------------*

  FORM create_bdc_records .

    IF NOT i_inforecord[] IS INITIAL.

** Open BDC session

      PERFORM open_bdc_session.

      SELECT lifnr altkn FROM lfb1 INTO TABLE i_lfb1
                          FOR ALL ENTRIES IN i_inforecord
                          WHERE altkn = i_inforecord-lifnr.

* Sorting the Internal table for better performance

      SORT i_lfb1 BY altkn.

      LOOP AT i_inforecord.

***Mapping Old Vendor number to the new Vendor number

        READ TABLE i_lfb1 WITH KEY altkn = i_inforecord-lifnr BINARY
                                                              SEARCH.

        IF sy-subrc EQ 0.
          i_inforecord-lifnr = i_lfb1-lifnr.
        ENDIF.


        CLEAR i_bdc_table[].
        PERFORM insert_screen_header.
*      call transaction 'ME11' using i_bdc_table
*                    mode 'A'.
*      CLEAR i_bdc_table.


      ENDLOOP.
      CLEAR i_inforecord[].

      PERFORM close_bdc_session.

** Release the BDC sessions created
      PERFORM release_bdc.
    ENDIF.


  ENDFORM.                    " open_group


*&---------------------------------------------------------------------*
*&      Form  bdc_dynpro_start
*&---------------------------------------------------------------------*
*       Start the screen for the transfer of fields
*----------------------------------------------------------------------*

  FORM bdc_dynpro_start  USING    p_g_program_1
                                  p_g_screen.

    CLEAR i_bdc_table.
    i_bdc_table-program  = p_g_program_1.
    i_bdc_table-dynpro   = p_g_screen.
    i_bdc_table-dynbegin = 'X'.
    APPEND i_bdc_table.

  ENDFORM.                    " bdc_dynpro_start_start

*&---------------------------------------------------------------------*
*&      Form  bdc_insert_field
*&---------------------------------------------------------------------*
*        Insert field                                                  *
*----------------------------------------------------------------------*
  FORM bdc_insert_field USING f_name f_value.
    IF f_value <> space.
      CLEAR i_bdc_table.
      i_bdc_table-fnam = f_name.
      i_bdc_table-fval = f_value.
      APPEND i_bdc_table.
    ENDIF.
  ENDFORM.                    "bdc_insert_field



*&--------------------------------------------------------------------*
*&      Form  open_bdc_session
*&--------------------------------------------------------------------*
*       Open a BDC session
*---------------------------------------------------------------------*
  FORM open_bdc_session .


** Open BDC session and create and update records

    CALL FUNCTION 'BDC_OPEN_GROUP'
      EXPORTING
        client                    = sy-mandt
*       DEST                      = FILLER8
        group                     = p_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
              .
    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.                    " create_bdc_session
*&---------------------------------------------------------------------*
*&      Form  insert_screen_header
*&---------------------------------------------------------------------*
*       Screen flow for the transfer of fields
*----------------------------------------------------------------------*

  FORM insert_screen_header .


* First Screen 100

    PERFORM bdc_dynpro_start USING 'SAPMM06I' '0100'.

    PERFORM bdc_insert_field USING:'BDC_CURSOR' 'EINA-LIFNR',

                                   'BDC_OKCODE' '/00',

                                   'EINA-LIFNR' i_inforecord-lifnr,

                                   'EINA-MATNR' i_inforecord-matnr,

                                   'EINE-EKORG' '1000',

                                   'RM06I-NORMB' zc_yes.

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

* Next Screen 101

    PERFORM bdc_dynpro_start USING 'SAPMM06I' '0101'.

    PERFORM bdc_insert_field USING : 'BDC_CURSOR' 'EINA-MAHN1',

                                     'BDC_OKCODE' '/00',

                                     'EINA-MEINS' i_inforecord-uom.

*****----------------------------------------********
*Next Screen 102

    PERFORM bdc_dynpro_start USING 'SAPMM06I' '0102'.

    PERFORM bdc_insert_field USING : 'BDC_CURSOR' 'EINE-INCO2',

                                 'EINE-APLFZ' i_inforecord-planned_time,

                                 'EINE-EKGRP' i_inforecord-ekgrp,

                                 'EINE-NORBM' i_inforecord-qty.

    PERFORM bdc_insert USING  'EINE-UEBTK' ' '.

    PERFORM bdc_insert_field USING:'EINE-PEINH' i_inforecord-scale_qty1,

                                   'EINE-BPRME' i_inforecord-uom,

                                   'EINE-UNTTO' '5',

                                   'EINE-UEBTO' '25',

                                   'EINE-MEPRF' i_inforecord-price_cat,

                                   'EINE-NETPR' i_inforecord-netpr,

                                   'EINE-INCO1' i_inforecord-inco,

                                  'EINE-INCO2' i_inforecord-designation.

* Checking for Scale quantities

    IF i_inforecord-scale_qty2 = space.

      PERFORM bdc_insert_field  USING 'BDC_OKCODE' '=BU'.

      PERFORM insert_bdc_new.

    ELSE.

      PERFORM bdc_insert_field  USING 'BDC_OKCODE' '=KO'.

*****----------------------------------------********
* Next Screen 201

      PERFORM bdc_dynpro_start USING 'SAPMV13A' '0201'.

      PERFORM bdc_insert_field USING : 'BDC_CURSOR' 'RV13A-DATAB',

                                        'BDC_OKCODE' '=PSTF'.

*****----------------------------------------********
* Next Screen 201

      PERFORM bdc_dynpro_start USING 'SAPMV13A' '0201'.

      PERFORM bdc_insert_field USING : 'BDC_CURSOR' 'KONP-KSCHL(01)',

                                       'BDC_OKCODE' '=PSTF',

                                       'RV130-SELKZ(01)' zc_yes.

*****----------------------------------------********
* LAST SCREEN 303


      PERFORM bdc_dynpro_start USING 'SAPMV13A' '0303'.

      PERFORM bdc_insert_field USING : 'BDC_CURSOR' 'KONM-KBETR(03)',

                                       'BDC_OKCODE' '=SICH'.

* Counter to Loop the Item level entry
      g_counter = 0.

      PERFORM scale_entry USING i_inforecord-scale_qty2
                                i_inforecord-scale_pr2.


      PERFORM scale_entry USING i_inforecord-scale_qty3
                                i_inforecord-scale_pr3.

      PERFORM scale_entry USING i_inforecord-scale_qty4
                                i_inforecord-scale_pr4.

      PERFORM scale_entry USING i_inforecord-scale_qty5
                                i_inforecord-scale_pr5.


      PERFORM scale_entry USING i_inforecord-scale_qty6
                                i_inforecord-scale_pr6.

      PERFORM scale_entry USING i_inforecord-scale_qty7
                                i_inforecord-scale_pr7.

      PERFORM scale_entry USING i_inforecord-scale_qty8
                                i_inforecord-scale_pr8.

      PERFORM scale_entry USING i_inforecord-scale_qty9
                                i_inforecord-scale_pr9.

      PERFORM scale_entry USING  i_inforecord-scale_qty10
                                 i_inforecord-scale_pr10.

      PERFORM insert_bdc_new.


    ENDIF.
  ENDFORM.                    " insert_screen_header

*&---------------------------------------------------------------------*
*&      Form  insert_bdc
*&---------------------------------------------------------------------*
*       Insert BDC
*----------------------------------------------------------------------*

  FORM insert_bdc_new .

    CALL FUNCTION 'BDC_INSERT'
       EXPORTING
         tcode                  = 'ME11'
*       POST_LOCAL             = NOVBLOCAL
*       PRINTING               = NOPRINT
*       SIMUBATCH              = ' '
*       CTUPARAMS              = ' '
       TABLES
         dynprotab              = i_bdc_table
    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.

    CLEAR i_bdc_table[].

  ENDFORM.                    " insert_bdc


*&---------------------------------------------------------------------*
*&      Form  close_bdc_session
*&---------------------------------------------------------------------*
*      Close the BDC session
*----------------------------------------------------------------------*

  FORM close_bdc_session .

    CALL FUNCTION 'BDC_CLOSE_GROUP'
         EXCEPTIONS
              not_open    = 1
              queue_error = 2
              OTHERS      = 3.

    IF sy-subrc <> 0.

      MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
              WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.

    ENDIF.

  ENDFORM.                    " close_bdc_session

*&---------------------------------------------------------------------*
*&      Form  f_load_input_file
*&---------------------------------------------------------------------*
*       Upload the file
*----------------------------------------------------------------------*

  FORM f_load_input_file.

* Check always Local file for upload

    IF p_rloc1 = zc_yes.

      CALL FUNCTION 'WS_UPLOAD'
           EXPORTING
                filename                = p_fname1
                filetype                = 'DAT'
           TABLES
                data_tab                = i_inforecord
           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.

        STOP.

      ENDIF.

    ENDIF.
*
  ENDFORM.                    " f_load_input_file
*&---------------------------------------------------------------------*
*&      Form  release_bdc
*&---------------------------------------------------------------------*
*      Release the session
*----------------------------------------------------------------------*

  FORM release_bdc.

    SUBMIT rsbdcsub WITH mappe EQ p_group
                    WITH von EQ sy-datum
                    WITH bis EQ sy-datum
                    WITH fehler EQ '.'
                    EXPORTING LIST TO MEMORY
                    AND RETURN.


  ENDFORM.                    " release_bdc

*&---------------------------------------------------------------------*
*&      Form  scale_entry
*&---------------------------------------------------------------------*
*       Populate the Scale quantities
*----------------------------------------------------------------------*
*      -->P_SCALE_QTY
*      -->P_SCALE_PRICE
*----------------------------------------------------------------------*
  FORM scale_entry USING    p_scale_qty
                            p_scale_price.

* Increment the Counter

    g_counter = g_counter + 1.

    IF p_scale_qty <> space.

      CONCATENATE 'KONM-KSTBM('  g_counter  ')' INTO g_field_name.

      PERFORM bdc_insert_field USING g_field_name p_scale_qty.

      CONCATENATE 'KONM-KBETR('  g_counter  ')' INTO g_field_name.

      PERFORM bdc_insert_field USING g_field_name p_scale_price.

    ENDIF.

  ENDFORM.
*&---------------------------------------------------------------------*
*&      Form  bdc_insert
*&---------------------------------------------------------------------*
*       To uncheck the Unlimited (UEBTK)
*----------------------------------------------------------------------*

  FORM bdc_insert USING  f_name f_value.
    CLEAR i_bdc_table.
    i_bdc_table-fnam = f_name.
    i_bdc_table-fval = f_value.
    APPEND i_bdc_table.
  ENDFORM.                    " bdc_insert

Reward points if it is usefull ....

Girish

Former Member
0 Kudos

thanks to everyone