bdc sap abap

45
BDC ( Batch Data Communication ) -------------------------------- --> Every BDc program take it as a Executable Program. Legacy File ----> BDC Program ----> SAP DB --> We Have 3 Methods 1. Call Transaction` 2. Session Method 3. LSMW --> Two Types of files in SAP 1. Legacy File or local File -- Placed at Presentation Server ( DESKTOP ) 2. Sequential File. -- Placed at Application Server ( WITH IN SAP ) --> All the Sequential files are stored in AL11 tcode. --> There are 2 types of file formats 1. ASC -- No Saperator between fields 2. DAT -- Fields are saperated by TAB space --> Local Files data is uploaded into Internal table using FM GUI_UPLOAD. --> Local Files data is downloaded from Internal table using FM GUI_DOWNLOAD. Presentation Server( Local Files ) ---------------------------------- UPLOAD: ------ Two parameters 1. File Path ( c:/....... ) 2. File Type ( ASC, DAT ) EXAMPLE For UPLOAD ************************* *&---------------------------------------------------------------------*

Upload: raj-rajesh

Post on 30-Nov-2015

334 views

Category:

Documents


32 download

DESCRIPTION

Bdc Understandable programs

TRANSCRIPT

Page 1: Bdc sap abap

BDC ( Batch Data Communication )      ----------------------------------> Every BDc program take it as a Executable Program.

           Legacy File ----> BDC Program ----> SAP DB

--> We Have 3 Methods 

  1. Call Transaction`  2. Session Method  3. LSMW

--> Two Types of files in SAP

  1. Legacy File or local File  -- Placed at Presentation Server ( DESKTOP )  2. Sequential File.           -- Placed at Application Server  ( WITH IN SAP )         --> All the Sequential files are stored in AL11 tcode.

--> There are 2 types of file formats

  1. ASC -- No Saperator between fields  2. DAT -- Fields are saperated by TAB space

--> Local Files data is uploaded into Internal table using FM  GUI_UPLOAD.--> Local Files data is downloaded from Internal table using FM  GUI_DOWNLOAD.

Presentation Server( Local Files )----------------------------------

UPLOAD:------    Two parameters 

    1. File Path ( c:/....... )    2. File Type ( ASC, DAT )

 EXAMPLE For UPLOAD *************************

*&---------------------------------------------------------------------**&                     SELECTION-SCREEN*&---------------------------------------------------------------------*SELECTION-SCREEN BEGIN OF BLOCK bk1 WITH FRAME TITLE text-001.PARAMETERS : p_fname LIKE rlgrap-filename.SELECTION-SCREEN END OF BLOCK bk1.

*&---------------------------------------------------------------------**&                             TYPES

Page 2: Bdc sap abap

*&---------------------------------------------------------------------*TYPES: BEGIN OF t_lfa1,       lifnr TYPE lfa1-lifnr,       name1 TYPE lfa1-name1,       land1 TYPE lfa1-land1,       END OF t_lfa1.

*&---------------------------------------------------------------------**&                             DATA*&---------------------------------------------------------------------*DATA: i_lfa1 TYPE STANDARD TABLE OF t_lfa1,      wa_lfa1 type t_lfa1,

* Need to declare file name type as STRING to match with fucntion* module import parameters type

      v_fname type string.

*&---------------------------------------------------------------------**&                             INITIALIZATION*&---------------------------------------------------------------------*INITIALIZATION.* Initializing the File Name  p_fname = 'C:\temp\'.

*&---------------------------------------------------------------------**&                             AT SELECTION SCREEN*&---------------------------------------------------------------------*AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_fname.

* F4 functionality for File Name

  CALL FUNCTION 'F4_FILENAME'    EXPORTING      program_name  = syst-cprog      dynpro_number = syst-dynnr      field_name    = ' '    IMPORTING      file_name     = p_fname.

*&---------------------------------------------------------------------**&                     START-OF-SELECTION*&---------------------------------------------------------------------*START-OF-SELECTION.   " Start of selection os Mandatory

  MOVE: p_fname TO v_fname.

* Upload data from flat file and store it in an Internal table

  CALL FUNCTION 'GUI_UPLOAD'    EXPORTING      filename            = v_fname      filetype            = 'ASC'      has_field_separator = 'X'      read_by_line        = 'X'

Page 3: Bdc sap abap

    TABLES      data_tab            = i_lfa1.

* Display the uploaded data

  LOOP AT i_lfa1 INTO wa_lfa1.    WRITE:/ wa_lfa1-lifnr, wa_lfa1-name1, wa_lfa1-land1.  ENDLOOP.

************* EXAMPLE FOR DOWNLOAD *************************

*&---------------------------------------------------------------------**&                     SELECTION-SCREEN*&---------------------------------------------------------------------*SELECTION-SCREEN BEGIN OF BLOCK bk1 WITH FRAME TITLE text-001.PARAMETERS : p_fname LIKE rlgrap-filename.SELECTION-SCREEN END OF BLOCK bk1.

*&---------------------------------------------------------------------**&                             TYPES*&---------------------------------------------------------------------*TYPES: BEGIN OF t_lfa1,       lifnr TYPE lfa1-lifnr,       name1 TYPE lfa1-name1,       land1 TYPE lfa1-land1,       END OF t_lfa1.

*&---------------------------------------------------------------------**&                             DATA*&---------------------------------------------------------------------*DATA: i_lfa1 TYPE STANDARD TABLE OF t_lfa1,      wa_lfa1 type t_lfa1,

* Need to declare file name type as STRING to match with fucntion* module import parameters type

      v_fname type string.

*&---------------------------------------------------------------------**&                             INITIALIZATION*&---------------------------------------------------------------------*INITIALIZATION.* Initializing the File Name  p_fname = 'C:\temp\'.

*&---------------------------------------------------------------------**&                             AT SELECTION SCREEN*&---------------------------------------------------------------------*AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_fname.

Page 4: Bdc sap abap

* F4 functionality for File Name

  CALL FUNCTION 'F4_FILENAME'    EXPORTING      program_name  = syst-cprog      dynpro_number = syst-dynnr      field_name    = ' '    IMPORTING      file_name     = p_fname.

*&---------------------------------------------------------------------**&                     START-OF-SELECTION*&---------------------------------------------------------------------*START-OF-SELECTION.

  MOVE: p_fname TO v_fname.

  SELECT lifnr name1 land1    INTO TABLE i_lfa1    FROM lfa1    WHERE land1 EQ 'US'.

  IF sy-subrc EQ 0.

* Download data from Internal table and store it in Local File

    CALL FUNCTION 'GUI_DOWNLOAD'      EXPORTING        filename              = v_fname        filetype              = 'ASC'        write_field_separator = 'X'      TABLES        data_tab              = i_lfa1.    IF sy-subrc EQ 0.

* Display the Downloaded data      LOOP AT i_lfa1 INTO wa_lfa1.        WRITE:/ wa_lfa1-lifnr, wa_lfa1-name1, wa_lfa1-land1.      ENDLOOP.    ENDIF.

  ENDIF.

******** TestData ***************

101 Ram Hyd102 Raj Blr103 Viswa Dlh

Page 5: Bdc sap abap

CALL TRANSACTION :

------------------

  1. It is compatible for small amount of data only. 

  2. It process the data Synchronously. i.e., The data is updated

      at the time of execution. 

  3. It updates data both Synchronously and Asynchronously. When

      we use Synchronous mode, it always verify all the data updated

      successfully in the database. 

      When we use Asynchronous mode, the system can not wait till 

       all the data updated in the database. 

  4. It can handle only one application at a time. 

  5. It does not have Log file, we need to design logfile explicitly

      using BDCMSGCOLL stucture. 

   

Syntax :

  CALL TRANSACTION <T.Code> USING <BDCTAB> MODE <A/N/E> UPDATE <S/A>

  MESSAGES INTO <BDCMSGCOLL Int.Table>

  

                  A - All screen mode. All the screen of transaction

                      are displayed. 

                  N - No screen mode. No screen is displayed when you 

                      execute the transaction. 

                  E - Error screen. Only those screens are displayed 

                      where you have error record. 

  Steps for CALL TRANSACTION Method :

  -----------------------------------

   1. Interanal table for the data (structure similler to local file)

   2. BDCTAB like BDCDATA.

   3. Use UPLOAD/WS_UPLOAD/GUI_UPLOAD or DATASETS for upload data from

      local file to internal table (i.e. ITAB). 

   4. LOOP at Itab. 

        Populate BDCTAB table. 

        CALL TRANSACTION <T.Code> USING <BDCTAB> MODE <A/N/E>

Page 6: Bdc sap abap

             UPDATE <S/A>  MESSAGES INTO <BDCMSGCOLL Int.Table>

        Refresh BDCTAB.

      ENDLOOP.

******************************************************************************

**************

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

*&                     SELECTION-SCREEN

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

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

PARAMETERS : p_fname TYPE localfile.

SELECTION-SCREEN END OF BLOCK bk1.

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

*&                             TYPES

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

*  Type declaration for Customer data

TYPES:  BEGIN OF t_customer,

        kunnr  TYPE kna1-kunnr,

        ktokd  TYPE kna1-ktokd,

        name1  TYPE kna1-name1,

        sortl  TYPE kna1-sortl,

        ort01  TYPE kna1-ort01,

        land1  TYPE kna1-land1,

        spras  TYPE kna1-spras,

        pstlz  TYPE kna1-pstlz,

        lzone  TYPE kna1-lzone,

        END OF t_customer.

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

*&                             DATA

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

DATA: v_fname TYPE string,

*     Internal Table Declaration for Customer data

      i_customer TYPE STANDARD TABLE OF t_customer,

Page 7: Bdc sap abap

      wa_customer TYPE t_customer,

*     Internal Table Declaration for BDCDATA

      wa_bdcdata  TYPE bdcdata,

      i_bdcdata  TYPE STANDARD TABLE OF bdcdata,

*     Internal Table Declaration for BDCMSGCOLL

      wa_bdcmsgcoll TYPE bdcmsgcoll,

      i_bdcmsgcoll TYPE STANDARD TABLE OF bdcmsgcoll.

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

*&                             INITIALIZATION

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

INITIALIZATION.

* Initializing the File Name

  p_fname = 'C:\temp\'.

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

*&                             AT SELECTION SCREEN

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

AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_fname.

* F4 functionality for File Name

  CALL FUNCTION 'F4_FILENAME'

    EXPORTING

      program_name  = syst-cprog

      dynpro_number = syst-dynnr

      field_name    = ' '

    IMPORTING

      file_name     = p_fname.

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

*&                     START-OF-SELECTION

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

START-OF-SELECTION.

  v_fname = p_fname.

* Upload data from flat file and store it in an Internal table

Page 8: Bdc sap abap

  CALL FUNCTION 'GUI_UPLOAD'

    EXPORTING

      filename            = v_fname

      filetype            = 'ASC'

      has_field_separator = 'X'

      read_by_line        = 'X'

    TABLES

      data_tab            = i_customer.

* Process Customer Data

  LOOP AT i_customer INTO wa_customer.

    CLEAR wa_bdcdata.

    REFRESH i_bdcdata[].

    PERFORM bdc_dynpro      USING 'SAPMF02D' '0107'.

    PERFORM bdc_field       USING 'BDC_CURSOR'

                                  'RF02D-KTOKD'.

    PERFORM bdc_field       USING 'BDC_OKCODE'

                                  '/00'.

    PERFORM bdc_field       USING 'RF02D-KUNNR'

                                  wa_customer-kunnr.      "Customer No.

    PERFORM bdc_field       USING 'RF02D-KTOKD'

                                  wa_customer-ktokd.      "Acc.Group.

    PERFORM bdc_dynpro      USING 'SAPMF02D' '0110'.

    PERFORM bdc_field       USING 'BDC_CURSOR'

                                  'KNA1-SPRAS'.

    PERFORM bdc_field       USING 'BDC_OKCODE'

                                  '/00'.

    PERFORM bdc_field       USING 'KNA1-NAME1'

                                  wa_customer-name1.       "Name.

    PERFORM bdc_field       USING 'KNA1-SORTL'

                                  wa_customer-sortl.       "Search Term.

    PERFORM bdc_field       USING 'KNA1-ORT01'

                                  wa_customer-ort01.       "City.

    PERFORM bdc_field       USING 'KNA1-LAND1'

                                  wa_customer-land1.       "Country.

    PERFORM bdc_field       USING 'KNA1-SPRAS'

                                  wa_customer-spras.       "Language.

Page 9: Bdc sap abap

    PERFORM bdc_field       USING 'KNA1-PSTLZ'

                                  wa_customer-pstlz.       "Postol Code.

    PERFORM bdc_dynpro      USING 'SAPMF02D' '0120'.

    PERFORM bdc_field       USING 'BDC_CURSOR'

                                  'KNA1-LZONE'.

    PERFORM bdc_field       USING 'BDC_OKCODE'

                                  '=UPDA'.

    PERFORM bdc_field       USING 'KNA1-LZONE'

                                  wa_customer-lzone.       "Tran.Zone.

*   Call Transaction

    CALL TRANSACTION 'VD01' USING i_bdcdata

    MODE 'A' UPDATE 'S' MESSAGES INTO i_bdcmsgcoll.

  ENDLOOP.

  PERFORM format_message_text.

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

*&      Form  BDC_DYNPRO New Screen

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

FORM bdc_dynpro USING program  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

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

*        Insert field                                                  *

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

FORM bdc_field USING fnam fval.

  IF fval <> space.

    CLEAR wa_bdcdata.

    wa_bdcdata-fnam = fnam.

    wa_bdcdata-fval = fval.

    APPEND wa_bdcdata TO i_bdcdata.

  ENDIF.

ENDFORM.                    "BDC_FIELD

Page 10: Bdc sap abap

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

*&      Form  format_message_text

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

FORM format_message_text .

  DATA: lf_msg   TYPE string.

  WRITE:/10 'Message Id',

         35 'Megno',

         45 'Msg.Type',

         55 'Message Info'.

  LOOP AT i_bdcmsgcoll INTO wa_bdcmsgcoll.

    CALL FUNCTION 'FORMAT_MESSAGE'

      EXPORTING

        id        = wa_bdcmsgcoll-msgid

        lang      = sy-langu

        no        = wa_bdcmsgcoll-msgnr

        v1        = wa_bdcmsgcoll-msgv1

        v2        = wa_bdcmsgcoll-msgv2

        v3        = wa_bdcmsgcoll-msgv3

        v4        = wa_bdcmsgcoll-msgv4

      IMPORTING

        msg       = lf_msg

      EXCEPTIONS

        not_found = 1

        OTHERS    = 2.

    IF sy-subrc EQ 0.

      WRITE:/10 wa_bdcmsgcoll-msgid,

             35 wa_bdcmsgcoll-msgnr,

             45 wa_bdcmsgcoll-msgtyp,

             55 lf_msg.

    ENDIF.

  ENDLOOP.

ENDFORM.                    " format_message_text

Page 11: Bdc sap abap

************** Test Data ********************

A1234 0001 Ram IR Banglore IN E 522426 0000000001

BDC - Session MethodBDC (Batch Data Communication):       It Transfers or upload the data’s(records) from Legacy(Non SAP) system to SAP system. Batch input means bulk amount of data. It is a programming method. 

Types: It has two types 1. CALL TRANSACTION METHOD. 2. SESSION METHOD (C L A S S I C A L ) .

Session Method:1. Asynchronous Processing.2. Synchronous database updates.3. Transfer of data for multiple transactions. Using FM bdc_insert.4. As compared to call transaction, this is slow.5. Best suited for bulk transfer.6. Automatic error handling.7. Error logs are created.8. The value of sy-subrc is never returned. Because records are stored  temporary in session and after the records are updated   to the database.  9. You can store the sessions and it can be used for later processing.                                                         10. it can handle small amount of data as well as large amount of data.  11. Function modules :

F4_FILENAME ( Open the legacy file [.txt or .xls]) .TEXT_CONVERT_XSL_TO_SAP ( Convert the .xls file to sap format) : Using

for only .xls files.GUI_UPLOAD : Using for only .txt files.BDC_OPEN_GROUP : To create a new session.(No session 1).BDC_INSERT :  To add a transaction to a batch input session.BDC_CLOSE_GROUP : To close the session.

Page 12: Bdc sap abap

Example 1: Session method ( .txt file) Customer(xd01) master creation:report ZRBDC_XD01_RAJA no standard page heading line-size 255.

*include bdcrecx1.

data: begin of record OCCURS 0,* data element: BUKRS        BUKRS_001(004),* data element: KTOKD        KTOKD_002(004),* data element: ANRED        ANRED_003(015),* data element: NAME1_GP        NAME1_004(035),* data element: SORTL        SORTL_005(010),* data element: ORT01_GP        ORT01_006(035),* data element: PSTLZ        PSTLZ_007(010),* data element: LAND1_GP        LAND1_008(003),* data element: REGIO        REGIO_009(003),* data element: SPRAS        SPRAS_010(002),* data element: CIVVE        CIVVE_011(001),* data element: AKONT        AKONT_012(010),      end of record.

***************GLOBAL STR BDCDATA***********************

DATA: IT_BDCDATA TYPE STANDARD TABLE OF BDCDATA,      WA_BDCDATA TYPE BDCDATA.

DATA: FILE1 TYPE STRING.

********************************************************

******************UPLOAD FLAT FILE**********************

******************SELECTION SCREEN**********************

SELECTION-SCREEN: BEGIN OF BLOCK B1 WITH FRAME.

PARAMETERS: FILE TYPE LOCALFILE OBLIGATORY.

SELECTION-SCREEN: END OF BLOCK B1.

AT SELECTION-SCREEN ON VALUE-REQUEST FOR FILE.

**********************************************************

Page 13: Bdc sap abap

******************FUNCTION MODULE************************

CALL FUNCTION 'F4_FILENAME' EXPORTING   PROGRAM_NAME        = SYST-CPROG   DYNPRO_NUMBER       = SYST-DYNNR*   FIELD_NAME          = ' ' IMPORTING   FILE_NAME           = FILE.

FILE1 = FILE.

CALL FUNCTION 'GUI_UPLOAD'  EXPORTING    filename                      = FILE1   FILETYPE                      = 'ASC'   HAS_FIELD_SEPARATOR           = 'X'*   HEADER_LENGTH                 = 0*   READ_BY_LINE                  = 'X'*   DAT_MODE                      = ' '* IMPORTING*   FILELENGTH                    =*   HEADER                        =  tables    data_tab                      = RECORD 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.

*****************************************************************OPEN SESSION*************************

Page 14: Bdc sap abap

CALL FUNCTION 'BDC_OPEN_GROUP' EXPORTING   CLIENT                    = SY-MANDT*   DEST                      = FILLER8   GROUP                     = 'demo'           "LOGON USERNAME*   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.

*** End generated data section ***

start-of-selection.

*perform open_group.

LOOP AT RECORD.

perform bdc_dynpro      using 'SAPMF02D' '0100'.perform bdc_field       using 'BDC_CURSOR'                              'RF02D-KTOKD'.perform bdc_field       using 'BDC_OKCODE'                              '/00'.perform bdc_field       using 'RF02D-BUKRS'                              record-BUKRS_001.perform bdc_field       using 'RF02D-KTOKD'                              record-KTOKD_002.perform bdc_dynpro      using 'SAPMF02D' '0110'.perform bdc_field       using 'BDC_CURSOR'                              'KNA1-SPRAS'.perform bdc_field       using 'BDC_OKCODE'                              '/00'.perform bdc_field       using 'KNA1-ANRED'

Page 15: Bdc sap abap

                              record-ANRED_003.perform bdc_field       using 'KNA1-NAME1'                              record-NAME1_004.perform bdc_field       using 'KNA1-SORTL'                              record-SORTL_005.perform bdc_field       using 'KNA1-ORT01'                              record-ORT01_006.perform bdc_field       using 'KNA1-PSTLZ'                              record-PSTLZ_007.perform bdc_field       using 'KNA1-LAND1'                              record-LAND1_008.perform bdc_field       using 'KNA1-REGIO'                              record-REGIO_009.perform bdc_field       using 'KNA1-SPRAS'                              record-SPRAS_010.perform bdc_dynpro      using 'SAPMF02D' '0120'.perform bdc_field       using 'BDC_CURSOR'                              'KNA1-LIFNR'.perform bdc_field       using 'BDC_OKCODE'                              '/00'.perform bdc_dynpro      using 'SAPMF02D' '0125'.perform bdc_field       using 'BDC_CURSOR'                              'KNA1-NIELS'.perform bdc_field       using 'BDC_OKCODE'                              '/00'.perform bdc_dynpro      using 'SAPMF02D' '0130'.perform bdc_field       using 'BDC_CURSOR'                              'KNBK-BANKS(01)'.perform bdc_field       using 'BDC_OKCODE'                              '=ENTR'.perform bdc_dynpro      using 'SAPMF02D' '0340'.perform bdc_field       using 'BDC_CURSOR'                              'RF02D-KUNNR'.perform bdc_field       using 'BDC_OKCODE'                              '=ENTR'.perform bdc_dynpro      using 'SAPMF02D' '0370'.perform bdc_field       using 'BDC_CURSOR'                              'RF02D-KUNNR'.perform bdc_field       using 'BDC_OKCODE'                              '=ENTR'.perform bdc_field       using 'KNA1-CIVVE'                              record-CIVVE_011.perform bdc_dynpro      using 'SAPMF02D' '0360'.perform bdc_field       using 'BDC_CURSOR'                              'KNVK-NAMEV(01)'.perform bdc_field       using 'BDC_OKCODE'                              '=ENTR'.perform bdc_dynpro      using 'SAPMF02D' '0210'.perform bdc_field       using 'BDC_CURSOR'                              'KNB1-AKONT'.perform bdc_field       using 'BDC_OKCODE'                              '/00'.

Page 16: Bdc sap abap

perform bdc_field       using 'KNB1-AKONT'                              record-AKONT_012.perform bdc_dynpro      using 'SAPMF02D' '0215'.perform bdc_field       using 'BDC_CURSOR'                              'KNB1-ZTERM'.perform bdc_field       using 'BDC_OKCODE'                              '/00'.perform bdc_dynpro      using 'SAPMF02D' '0220'.perform bdc_field       using 'BDC_CURSOR'                              'KNB5-MAHNA'.perform bdc_field       using 'BDC_OKCODE'                              '/00'.perform bdc_dynpro      using 'SAPMF02D' '0230'.perform bdc_field       using 'BDC_CURSOR'                              'KNB1-VRSNR'.perform bdc_field       using 'BDC_OKCODE'                              '/00'.*perform bdc_transaction using 'XD01'.

*********************************************************************USE BDC INSERT FM***********************

CALL FUNCTION 'BDC_INSERT' EXPORTING   TCODE                  = 'XD01'*   POST_LOCAL             = NOVBLOCAL*   PRINTING               = NOPRINT*   SIMUBATCH              = ' '*   CTUPARAMS              = ' '  TABLES    dynprotab              = IT_BDCDATA[] EXCEPTIONS   INTERNAL_ERROR         = 1   NOT_OPEN               = 2   QUEUE_ERROR            = 3   TCODE_INVALID          = 4   PRINTING_INVALID       = 5   POSTING_INVALID        = 6   OTHERS                 = 7          .IF sy-subrc <> 0.* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO*         WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.ENDIF.refresh it_bdcdata.

ENDLOOP.************************************************************

*perform close_group.

******************CALL SESSION CLOSE FM*********************

Page 17: Bdc sap abap

CALL FUNCTION 'BDC_CLOSE_GROUP' EXCEPTIONS   NOT_OPEN          = 1   QUEUE_ERROR       = 2   OTHERS            = 3          .IF sy-subrc <> 0.WRITE:'SESSION CREATED go to sm35'.

* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO*         WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.ENDIF.

************************************************************

************FORM BDC_DYPRO**********************************

FORM BDC_DYNPRO USING PROGRAM DYNPRO.

CLEAR WA_BDCDATA.

WA_BDCDATA-PROGRAM = PROGRAM.WA_BDCDATA-DYNPRO = DYNPRO.WA_BDCDATA-DYNBEGIN = 'X'.

APPEND WA_BDCDATA TO IT_BDCDATA.

ENDFORM.

************************************************************

*****************FORM BDC_FIELDS**************************

FORM BDC_FIELD USING FNAM FVAL.

CLEAR WA_BDCDATA.

WA_BDCDATA-FNAM = FNAM.WA_BDCDATA-FVAL = FVAL.

APPEND WA_BDCDATA TO IT_BDCDATA.

ENDFORM.

************************************************************

record: (.txt file):1000   YB01   mr      RAJA50 IN     NAGERCOIL    629401          IN       18      EN      X        191031031000   YB01   mr      RAJA51 IN     NAGERCOIL    629401          IN       18      EN      X        19103103

Page 18: Bdc sap abap

Example 2: Session method ( .xls file) Customer(xd01) master creation:report ZRBDC_XD01_RAJA no standard page heading line-size 255.

*include bdcrecx1.TYPE-POOLS TRUXS. “This is use to data conversion in TEXT_CONVERT_XLS_TO_SAP.

data: begin of record OCCURS 0,* data element: BUKRS        BUKRS_001(004),* data element: KTOKD        KTOKD_002(004),* data element: ANRED        ANRED_003(015),* data element: NAME1_GP        NAME1_004(035),* data element: SORTL        SORTL_005(010),* data element: ORT01_GP        ORT01_006(035),* data element: PSTLZ        PSTLZ_007(010),* data element: LAND1_GP        LAND1_008(003),* data element: REGIO        REGIO_009(003),* data element: SPRAS        SPRAS_010(002),* data element: CIVVE        CIVVE_011(001),* data element: AKONT        AKONT_012(010),      end of record.

***************GLOBAL STR BDCDATA***********************

DATA: IT_BDCDATA TYPE STANDARD TABLE OF BDCDATA,      WA_BDCDATA TYPE BDCDATA.********************************************************

******************UPLOAD FLAT FILE**********************

******************SELECTION SCREEN**********************

DATA IT_RAW TYPE TRUXS_T_TEXT_DATA.PARAMETERS PATH TYPE RLGRAP-FILENAME OBLIGATORY.AT SELECTION-SCREEN ON VALUE-REQUEST FOR PATH.

**********************************************************

******************FUNCTION MODULE************************

CALL FUNCTION 'F4_FILENAME' EXPORTING   PROGRAM_NAME        = SYST-CPROG

Page 19: Bdc sap abap

   DYNPRO_NUMBER       = SYST-DYNNR   FIELD_NAME          = 'path' IMPORTING   FILE_NAME           = path.

CALL FUNCTION 'TEXT_CONVERT_XLS_TO_SAP'  EXPORTING*   I_FIELD_SEPERATOR          =*   I_LINE_HEADER              =    I_TAB_RAW_DATA             = IT_RAW    I_FILENAME                 = PATH  TABLES    I_TAB_CONVERTED_DATA       = RECORD* EXCEPTIONS*   CONVERSION_FAILED          = 1*   OTHERS                     = 2          .IF SY-SUBRC <> 0.* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO*         WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.ENDIF.

*****************************************************************OPEN SESSION*************************

CALL FUNCTION 'BDC_OPEN_GROUP' EXPORTING   CLIENT                    = SY-MANDT*   DEST                      = FILLER8   GROUP                     = 'demo'           "LOGON USERNAME*   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.

Page 20: Bdc sap abap

*** End generated data section ***

start-of-selection.

*perform open_group.

LOOP AT RECORD.

perform bdc_dynpro      using 'SAPMF02D' '0100'.perform bdc_field       using 'BDC_CURSOR'                              'RF02D-KTOKD'.perform bdc_field       using 'BDC_OKCODE'                              '/00'.perform bdc_field       using 'RF02D-BUKRS'                              record-BUKRS_001.perform bdc_field       using 'RF02D-KTOKD'                              record-KTOKD_002.perform bdc_dynpro      using 'SAPMF02D' '0110'.perform bdc_field       using 'BDC_CURSOR'                              'KNA1-SPRAS'.perform bdc_field       using 'BDC_OKCODE'                              '/00'.perform bdc_field       using 'KNA1-ANRED'                              record-ANRED_003.perform bdc_field       using 'KNA1-NAME1'                              record-NAME1_004.perform bdc_field       using 'KNA1-SORTL'                              record-SORTL_005.perform bdc_field       using 'KNA1-ORT01'                              record-ORT01_006.perform bdc_field       using 'KNA1-PSTLZ'                              record-PSTLZ_007.perform bdc_field       using 'KNA1-LAND1'                              record-LAND1_008.perform bdc_field       using 'KNA1-REGIO'                              record-REGIO_009.perform bdc_field       using 'KNA1-SPRAS'                              record-SPRAS_010.perform bdc_dynpro      using 'SAPMF02D' '0120'.perform bdc_field       using 'BDC_CURSOR'                              'KNA1-LIFNR'.perform bdc_field       using 'BDC_OKCODE'                              '/00'.perform bdc_dynpro      using 'SAPMF02D' '0125'.perform bdc_field       using 'BDC_CURSOR'                              'KNA1-NIELS'.perform bdc_field       using 'BDC_OKCODE'                              '/00'.perform bdc_dynpro      using 'SAPMF02D' '0130'.perform bdc_field       using 'BDC_CURSOR'                              'KNBK-BANKS(01)'.

Page 21: Bdc sap abap

perform bdc_field       using 'BDC_OKCODE'                              '=ENTR'.perform bdc_dynpro      using 'SAPMF02D' '0340'.perform bdc_field       using 'BDC_CURSOR'                              'RF02D-KUNNR'.perform bdc_field       using 'BDC_OKCODE'                              '=ENTR'.perform bdc_dynpro      using 'SAPMF02D' '0370'.perform bdc_field       using 'BDC_CURSOR'                              'RF02D-KUNNR'.perform bdc_field       using 'BDC_OKCODE'                              '=ENTR'.perform bdc_field       using 'KNA1-CIVVE'                              record-CIVVE_011.perform bdc_dynpro      using 'SAPMF02D' '0360'.perform bdc_field       using 'BDC_CURSOR'                              'KNVK-NAMEV(01)'.perform bdc_field       using 'BDC_OKCODE'                              '=ENTR'.perform bdc_dynpro      using 'SAPMF02D' '0210'.perform bdc_field       using 'BDC_CURSOR'                              'KNB1-AKONT'.perform bdc_field       using 'BDC_OKCODE'                              '/00'.perform bdc_field       using 'KNB1-AKONT'                              record-AKONT_012.perform bdc_dynpro      using 'SAPMF02D' '0215'.perform bdc_field       using 'BDC_CURSOR'                              'KNB1-ZTERM'.perform bdc_field       using 'BDC_OKCODE'                              '/00'.perform bdc_dynpro      using 'SAPMF02D' '0220'.perform bdc_field       using 'BDC_CURSOR'                              'KNB5-MAHNA'.perform bdc_field       using 'BDC_OKCODE'                              '/00'.perform bdc_dynpro      using 'SAPMF02D' '0230'.perform bdc_field       using 'BDC_CURSOR'                              'KNB1-VRSNR'.perform bdc_field       using 'BDC_OKCODE'                              '/00'.*perform bdc_transaction using 'XD01'.

*********************************************************************USE BDC INSERT FM***********************

CALL FUNCTION 'BDC_INSERT' EXPORTING   TCODE                  = 'XD01'*   POST_LOCAL             = NOVBLOCAL*   PRINTING               = NOPRINT

Page 22: Bdc sap abap

*   SIMUBATCH              = ' '*   CTUPARAMS              = ' '  TABLES    dynprotab              = IT_BDCDATA[] EXCEPTIONS   INTERNAL_ERROR         = 1   NOT_OPEN               = 2   QUEUE_ERROR            = 3   TCODE_INVALID          = 4   PRINTING_INVALID       = 5   POSTING_INVALID        = 6   OTHERS                 = 7          .IF sy-subrc <> 0.* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO*         WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.ENDIF.refresh it_bdcdata.

ENDLOOP.************************************************************

*perform close_group.

******************CALL SESSION CLOSE FM*********************

CALL FUNCTION 'BDC_CLOSE_GROUP' EXCEPTIONS   NOT_OPEN          = 1   QUEUE_ERROR       = 2   OTHERS            = 3          .IF sy-subrc <> 0.WRITE:'SESSION CREATED go to sm35'.

* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO*         WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.ENDIF.

************************************************************

************FORM BDC_DYPRO**********************************

FORM BDC_DYNPRO USING PROGRAM DYNPRO.

CLEAR WA_BDCDATA.

WA_BDCDATA-PROGRAM = PROGRAM.WA_BDCDATA-DYNPRO = DYNPRO.WA_BDCDATA-DYNBEGIN = 'X'.

APPEND WA_BDCDATA TO IT_BDCDATA.

ENDFORM.

Page 23: Bdc sap abap

************************************************************

*****************FORM BDC_FIELDS**************************

FORM BDC_FIELD USING FNAM FVAL.

CLEAR WA_BDCDATA.

WA_BDCDATA-FNAM = FNAM.WA_BDCDATA-FVAL = FVAL.

APPEND WA_BDCDATA TO IT_BDCDATA.

ENDFORM.

************************************************************

record: (.txt file):1000   YB01   mr      RAJA50 IN     NAGERCOIL    629401          IN       18      EN      X        191031031000   YB01   mr      RAJA51 IN     NAGERCOIL    629401          IN       18      EN      X        19103103

BDC-Call Transaction method

BDC (Batch Data Communication):

       It Transfers or upload the data’s(records) from Legacy(Non SAP) system to SAP system. Batch input means bulk amount of data. It is a programming method. 

Types: It has two types 1. CALL TRANSACTION METHOD. 2. SESSION METHOD (C L A S S I C A L ) .

Call Transaction method:          1. synchronous Processing. (Data or record)2. Synchronous and Asynchronous database updates.

Page 24: Bdc sap abap

3. Transfer of data for individual transaction.4. This is more faster than session method.5. Not suited for bulk transfer.6. No automatic error handling.7. Error logs are not created.8. The value of sy-subrc returned to 0 if successful.9. The system won't store data for later processing. This is online processing. 10. It can handle small amount of data.11. Function modules :

F4_FILENAME ( Open the legacy file [.txt or .xls]) .TEXT_CONVERT_XSL_TO_SAP ( Convert the .xls file to sap format) : Using

for only .xls files.GUI_UPLOAD : Using for only .txt files.

Step-by-Step creation:Create the recording :        Using   T-code SHDB.        Click new recording then put the recoding name and transaction code (xd01 –

customer, xk01- vender, mm01 –material master creation)  then click continue or press enter.

        Thereafter put all the required data’s into the transaction screen.  Note: Must provide the mandatory fields data’s.

        After finished recording to save and come back.        Select your record then click program button.Transfer the recording to ABAP Editor (SE38).        Put the program name in the pop up window then click continue or press enter.        Automatically open the report in se38.Define the type-pools and call the function modules.

Example 1: (call transaction to upload .xls file data) customer master creationREPORT ZBDC_VAI       NO STANDARD PAGE HEADING LINE-SIZE 255.INCLUDE BDCRECX1.

TYPE-POOLS TRUXS. “This is use to data conversion in TEXT_CONVERT_XLS_TO_SAP. 

***************internal table**************************************DATA: BEGIN OF RECORD OCCURS 0,* data element: BUKRS        BUKRS_001(004),* data element: KTOKD        KTOKD_002(004),* data element: NAME1_GP

Page 25: Bdc sap abap

        NAME1_003(035),* data element: LAND1_GP        LAND1_004(003),* data element: REGIO        REGIO_005(003),* data element: SPRAS        SPRAS_006(002),* data element: CIVVE        CIVVE_007(001),* data element: AKONT        AKONT_008(010),      END OF RECORD.

*** End generated data section ***

DATA IT_RAW TYPE TRUXS_T_TEXT_DATA.PARAMETERS PATH TYPE RLGRAP-FILENAME OBLIGATORY. AT SELECTION-SCREEN ON VALUE-REQUEST FOR PATH.  CALL FUNCTION 'F4_FILENAME'   EXPORTING     PROGRAM_NAME        = SYST-CPROG     DYNPRO_NUMBER       = SYST-DYNNR     FIELD_NAME          = 'PATH'   IMPORTING     FILE_NAME           = PATH            .CALL FUNCTION 'TEXT_CONVERT_XLS_TO_SAP'  EXPORTING*   I_FIELD_SEPERATOR          =*   I_LINE_HEADER              =    I_TAB_RAW_DATA             = IT_RAW    I_FILENAME                 = PATH  TABLES    I_TAB_CONVERTED_DATA       = RECORD* EXCEPTIONS*   CONVERSION_FAILED          = 1*   OTHERS                     = 2          .IF SY-SUBRC <> 0.* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO*         WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.ENDIF.START-OF-SELECTION.LOOP AT RECORD.

  PERFORM OPEN_GROUP.

    PERFORM BDC_DYNPRO      USING 'SAPMF02D' '0100'.    PERFORM BDC_FIELD       USING 'BDC_CURSOR'                                  'RF02D-KTOKD'.    PERFORM BDC_FIELD       USING 'BDC_OKCODE'                                  '/00'.    PERFORM BDC_FIELD       USING 'RF02D-BUKRS'

Page 26: Bdc sap abap

                                  RECORD-BUKRS_001.    PERFORM BDC_FIELD       USING 'RF02D-KTOKD'                                  RECORD-KTOKD_002.    PERFORM BDC_DYNPRO      USING 'SAPMF02D' '0110'.    PERFORM BDC_FIELD       USING 'BDC_CURSOR'                                  'KNA1-REGIO'.    PERFORM BDC_FIELD       USING 'BDC_OKCODE'                                  '/00'.    PERFORM BDC_FIELD       USING 'KNA1-NAME1'                                  RECORD-NAME1_003.    PERFORM BDC_FIELD       USING 'KNA1-LAND1'                                  RECORD-LAND1_004.    PERFORM BDC_FIELD       USING 'KNA1-REGIO'                                  RECORD-REGIO_005.    PERFORM BDC_FIELD       USING 'KNA1-SPRAS'                                  RECORD-SPRAS_006.    PERFORM BDC_DYNPRO      USING 'SAPMF02D' '0120'.    PERFORM BDC_FIELD       USING 'BDC_CURSOR'                                  'KNA1-LIFNR'.    PERFORM BDC_FIELD       USING 'BDC_OKCODE'                                  '/00'.    PERFORM BDC_DYNPRO      USING 'SAPMF02D' '0125'.    PERFORM BDC_FIELD       USING 'BDC_CURSOR'                                  'KNA1-NIELS'.    PERFORM BDC_FIELD       USING 'BDC_OKCODE'                                  '/00'.    PERFORM BDC_DYNPRO      USING 'SAPMF02D' '0130'.    PERFORM BDC_FIELD       USING 'BDC_CURSOR'                                  'KNBK-BANKS(01)'.    PERFORM BDC_FIELD       USING 'BDC_OKCODE'                                  '=ENTR'.    PERFORM BDC_DYNPRO      USING 'SAPMF02D' '0340'.    PERFORM BDC_FIELD       USING 'BDC_CURSOR'                                  'RF02D-KUNNR'.    PERFORM BDC_FIELD       USING 'BDC_OKCODE'                                  '=ENTR'.    PERFORM BDC_DYNPRO      USING 'SAPMF02D' '0370'.    PERFORM BDC_FIELD       USING 'BDC_CURSOR'                                  'RF02D-KUNNR'.    PERFORM BDC_FIELD       USING 'BDC_OKCODE'                                  '=ENTR'.    PERFORM BDC_FIELD       USING 'KNA1-CIVVE'                                  RECORD-CIVVE_007.    PERFORM BDC_DYNPRO      USING 'SAPMF02D' '0360'.    PERFORM BDC_FIELD       USING 'BDC_CURSOR'                                  'KNVK-NAMEV(01)'.    PERFORM BDC_FIELD       USING 'BDC_OKCODE'                                  '=ENTR'.    PERFORM BDC_DYNPRO      USING 'SAPMF02D' '0210'.    PERFORM BDC_FIELD       USING 'BDC_CURSOR'                                  'KNB1-AKONT'.    PERFORM BDC_FIELD       USING 'BDC_OKCODE'

Page 27: Bdc sap abap

                                  '/00'.    PERFORM BDC_FIELD       USING 'KNB1-AKONT'                                  RECORD-AKONT_008.    PERFORM BDC_DYNPRO      USING 'SAPMF02D' '0215'.    PERFORM BDC_FIELD       USING 'BDC_CURSOR'                                  'KNB1-ZTERM'.    PERFORM BDC_FIELD       USING 'BDC_OKCODE'                                  '/00'.    PERFORM BDC_DYNPRO      USING 'SAPMF02D' '0220'.    PERFORM BDC_FIELD       USING 'BDC_CURSOR'                                  'KNB5-MAHNA'.    PERFORM BDC_FIELD       USING 'BDC_OKCODE'                                  '/00'.    PERFORM BDC_DYNPRO      USING 'SAPMF02D' '0230'.    PERFORM BDC_FIELD       USING 'BDC_CURSOR'                                  'KNB1-VRSNR'.    PERFORM BDC_FIELD       USING 'BDC_OKCODE'                                  '/00'.    PERFORM BDC_DYNPRO      USING 'SAPMF02D' '0610'.    PERFORM BDC_FIELD       USING 'BDC_OKCODE'                                  '/00'.    PERFORM BDC_FIELD       USING 'BDC_CURSOR'                                  'RF02D-KUNNR'.    PERFORM BDC_TRANSACTION USING 'XD01'.

  PERFORM CLOSE_GROUP.

  ENDLOOP.

Excel sheet data: ( .xls file)1000  ZMUM       RAJ1   IN   20      EN    x        16443100  1000  ZMUM       RAJ2   IN    20      EN    x        16443100  

Example 2: (call transaction to upload .txt file data) customer master creation:

report ZBDC_VAI  no standard page heading line-size 255.

include bdcrecx1.data: begin of record OCCURS 0,* data element: BUKRS        BUKRS_001(004),* data element: KTOKD        KTOKD_002(004),* data element: ANRED        ANRED_003(015),* data element: NAME1_GP        NAME1_004(035),* data element: LAND1_GP        LAND1_005(003),* data element: SPRAS        SPRAS_006(002),

Page 28: Bdc sap abap

* data element: CIVVE        CIVVE_007(001),* data element: AKONT        AKONT_008(010),      end of record.

*** End generated data section ***

data: file1 TYPE string.

PARAMETERS: file TYPE rlgrap-filename OBLIGATORY.AT SELECTION-SCREEN on VALUE-REQUEST FOR file.

 CALL FUNCTION 'F4_FILENAME'   EXPORTING     PROGRAM_NAME        = SYST-CPROG     DYNPRO_NUMBER       = SYST-DYNNR     FIELD_NAME          = 'file'   IMPORTING     FILE_NAME           = file            .

file1 = file.

 CALL FUNCTION 'GUI_UPLOAD'   EXPORTING     FILENAME                      = file1   FILETYPE                      = 'ASC'   HAS_FIELD_SEPARATOR           = 'x'*    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                      = record*  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

Page 29: Bdc sap abap

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

start-of-selection.

loop at record.

perform open_group.

perform bdc_dynpro      using 'SAPMF02D' '0100'.perform bdc_field       using 'BDC_CURSOR'                              'RF02D-KTOKD'.perform bdc_field       using 'BDC_OKCODE'                              '/00'.perform bdc_field       using 'RF02D-BUKRS'                              record-BUKRS_001.perform bdc_field       using 'RF02D-KTOKD'                              record-KTOKD_002.perform bdc_dynpro      using 'SAPMF02D' '0110'.perform bdc_field       using 'BDC_CURSOR'                              'KNA1-SPRAS'.perform bdc_field       using 'BDC_OKCODE'                              '/00'.perform bdc_field       using 'KNA1-ANRED'                              record-ANRED_003.perform bdc_field       using 'KNA1-NAME1'                              record-NAME1_004.perform bdc_field       using 'KNA1-LAND1'                              record-LAND1_005.perform bdc_field       using 'KNA1-SPRAS'                              record-SPRAS_006.perform bdc_dynpro      using 'SAPMF02D' '0120'.perform bdc_field       using 'BDC_CURSOR'                              'KNA1-LIFNR'.perform bdc_field       using 'BDC_OKCODE'                              '/00'.perform bdc_dynpro      using 'SAPMF02D' '0125'.perform bdc_field       using 'BDC_CURSOR'                              'KNA1-NIELS'.perform bdc_field       using 'BDC_OKCODE'                              '/00'.perform bdc_dynpro      using 'SAPMF02D' '0130'.perform bdc_field       using 'BDC_CURSOR'

Page 30: Bdc sap abap

                              'KNBK-BANKS(01)'.perform bdc_field       using 'BDC_OKCODE'                              '=ENTR'.perform bdc_dynpro      using 'SAPMF02D' '0340'.perform bdc_field       using 'BDC_CURSOR'                              'RF02D-KUNNR'.perform bdc_field       using 'BDC_OKCODE'                              '=ENTR'.perform bdc_dynpro      using 'SAPMF02D' '0370'.perform bdc_field       using 'BDC_CURSOR'                              'RF02D-KUNNR'.perform bdc_field       using 'BDC_OKCODE'                              '=ENTR'.perform bdc_field       using 'KNA1-CIVVE'                              record-CIVVE_007.perform bdc_dynpro      using 'SAPMF02D' '0360'.perform bdc_field       using 'BDC_CURSOR'                              'KNVK-NAMEV(01)'.perform bdc_field       using 'BDC_OKCODE'                              '=ENTR'.perform bdc_dynpro      using 'SAPMF02D' '0210'.perform bdc_field       using 'BDC_CURSOR'                              'KNB1-AKONT'.perform bdc_field       using 'BDC_OKCODE'                              '/00'.perform bdc_field       using 'KNB1-AKONT'                              record-AKONT_008.perform bdc_dynpro      using 'SAPMF02D' '0215'.perform bdc_field       using 'BDC_CURSOR'                              'KNB1-ZTERM'.perform bdc_field       using 'BDC_OKCODE'                              '/00'.perform bdc_dynpro      using 'SAPMF02D' '0220'.perform bdc_field       using 'BDC_CURSOR'                              'KNB5-MAHNA'.perform bdc_field       using 'BDC_OKCODE'                              '/00'.perform bdc_dynpro      using 'SAPMF02D' '0230'.perform bdc_field       using 'BDC_CURSOR'                              'KNB1-VRSNR'.perform bdc_field       using 'BDC_OKCODE'                              '/00'.perform bdc_dynpro      using 'SAPMF02D' '0610'.perform bdc_field       using 'BDC_OKCODE'                              '/00'.perform bdc_field       using 'BDC_CURSOR'                              'RF02D-KUNNR'.perform bdc_transaction using 'XD01'.

perform close_group.

ENDLOOP.

Page 31: Bdc sap abap

Record: ( .txt file)

1000  ZMUM       mr     RAJ1   IN   EN    x        16443100  1000  ZMUM       mr     RAJ2   IN    EN    x        16443100  

ALV POPUP DISPLAY REPO*&---------------------------------------------------------------------**& Report  ZR_ALV_POPUP*&*&---------------------------------------------------------------------**&*&*&---------------------------------------------------------------------*

REPORT  ZR_ALV_POPUP.TABLES: VBAP.TYPE-POOLS: SLIS.

DATA: BEGIN OF IT_VBAP OCCURS 10,     VBELN TYPE VBAP-VBELN,     POSNR TYPE VBAP-VBELN,     END OF IT_VBAP.DATA: FC TYPE SLIS_T_FIELDCAT_ALV WITH HEADER LINE.

PARAMETERS: P_VBELN TYPE VBAP-VBELN.

SELECT * FROM VBAP INTO CORRESPONDING FIELDS OF TABLE IT_VBAP WHERE VBELN = P_VBELN.

PERFORM FIELDCAT.PERFORM DISPLAY.

*&---------------------------------------------------------------------**&      Form  fieldcat*&---------------------------------------------------------------------**       text*----------------------------------------------------------------------*FORM FIELDCAT.

  FC-FIELDNAME = 'VBELN'.  FC-SELTEXT_L = 'salse doc no'.  APPEND FC.  CLEAR FC.

Page 32: Bdc sap abap

  FC-FIELDNAME = 'POSNR'.  FC-SELTEXT_L = 'salse doc ITEM'.  APPEND FC.  CLEAR FC.

ENDFORM.                    "fieldcat

*&---------------------------------------------------------------------**&      Form  DISPLAY*&---------------------------------------------------------------------**       text*----------------------------------------------------------------------*FORM DISPLAY.  CALL FUNCTION 'REUSE_ALV_POPUP_TO_SELECT'    EXPORTING*     I_TITLE                       =*     I_SELECTION                   = 'X'*     I_ALLOW_NO_SELECTION          =     I_ZEBRA                       = 'X'*     I_SCREEN_START_COLUMN         = 0*     I_SCREEN_START_LINE           = 0*     I_SCREEN_END_COLUMN           = 0*     I_SCREEN_END_LINE             = 0*     I_CHECKBOX_FIELDNAME          =*     I_LINEMARK_FIELDNAME          =*     I_SCROLL_TO_SEL_LINE          = 'X'      I_TABNAME                     = 'IT_VBAP'*     I_STRUCTURE_NAME              =     IT_FIELDCAT                   = FC[]*     IT_EXCLUDING                  =*     I_CALLBACK_PROGRAM            =*     I_CALLBACK_USER_COMMAND       =*     IS_PRIVATE                    =*   IMPORTING*     ES_SELFIELD                   =*     E_EXIT                        =    TABLES      T_OUTTAB                      = IT_VBAP*   EXCEPTIONS*     PROGRAM_ERROR                 = 1*     OTHERS                        = 2            .  IF SY-SUBRC <> 0.* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO*         WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.  ENDIF.

ENDFORM.                    "DISPLAY 

RESULT:

Page 33: Bdc sap abap

ALV Interactive report 3 list                       *&---------------------------------------------------------------------**& Report  ZR_ALV_INETR_PO*&*&---------------------------------------------------------------------**&*&*&---------------------------------------------------------------------*

REPORT  ZR_ALV_INETR_PO_3LIST.

TABLES: EKKO, EKPO,LFA1.TYPE-POOLS: SLIS.TYPES: BEGIN OF ST_EKKO,     EBELN TYPE EKKO-EBELN,     BUKRS TYPE EKKO-BUKRS,     BSTYP TYPE EKKO-BSTYP,     BSART TYPE EKKO-BSART,

Page 34: Bdc sap abap

     LIFNR TYPE EKKO-LIFNR,     ERNAM TYPE EKKO-ERNAM,     AEDAT TYPE EKKO-BEDAT,      END OF ST_EKKO.

TYPES: BEGIN OF ST_EKPO,      EBELN TYPE EKPO-EBELN,      EBELP TYPE EKPO-EBELP,      MATNR TYPE EKPO-MATNR,      MENGE TYPE EKPO-MENGE,      NETPR TYPE EKPO-NETPR,  END OF ST_EKPO.

DATA: IT_EKKO TYPE TABLE OF ST_EKKO,      IT_EKPO TYPE TABLE OF ST_EKPO,      WA_EKKO TYPE ST_EKKO,      WA_EKPO TYPE ST_EKPO.

DATA: IT_FC1 TYPE SLIS_T_FIELDCAT_ALV,      IT_FC2 TYPE SLIS_T_FIELDCAT_ALV,      WA_FC1 TYPE SLIS_FIELDCAT_ALV,      WA_FC2 TYPE SLIS_FIELDCAT_ALV.

DATA: IT_LH1 TYPE SLIS_T_LISTHEADER,      IT_LH2 TYPE SLIS_T_LISTHEADER,      WA_LH1 TYPE SLIS_LISTHEADER,      WA_LH2 TYPE SLIS_LISTHEADER,      LINE TYPE I,      LINE1(10) TYPE C,      T_LINE LIKE WA_LH1-INFO.

SELECT-OPTIONS: S_EBELN FOR EKPO-EBELN.

PERFORM GETDATA1.PERFORM FIELDCAT1.PERFORM DISPLAY1.

FORM GETDATA1.  SELECT EBELN EBELP MATNR MENGE NETPR FROM EKPO INTO TABLE IT_EKPO WHERE EBELN IN S_EBELN.ENDFORM.

FORM FIELDCAT1.

  CLEAR: WA_FC1.  WA_FC1-TABNAME = 'IT_EKPO'.  WA_FC1-FIELDNAME = 'EBELN'.  WA_FC1-SELTEXT_S = 'PO DOC NO'.  WA_FC1-COL_POS = 1.  APPEND WA_FC1 TO IT_FC1.

  CLEAR: WA_FC1.  WA_FC1-TABNAME = 'IT_EKPO'.

Page 35: Bdc sap abap

  WA_FC1-FIELDNAME = 'EBELP'.  WA_FC1-SELTEXT_S = 'PO DOC ITEM'.  WA_FC1-COL_POS = 2.  APPEND WA_FC1 TO IT_FC1.

  CLEAR: WA_FC1.  WA_FC1-TABNAME = 'IT_EKPO'.  WA_FC1-FIELDNAME = 'MATNR'.  WA_FC1-SELTEXT_S = 'MATERIAL NO'.  WA_FC1-COL_POS = 3.  APPEND WA_FC1 TO IT_FC1.

  CLEAR: WA_FC1.  WA_FC1-TABNAME = 'IT_EKPO'.  WA_FC1-FIELDNAME = 'MENGE'.  WA_FC1-SELTEXT_S = 'QUANTITY'.  WA_FC1-COL_POS = 4.  APPEND WA_FC1 TO IT_FC1.

  CLEAR: WA_FC1.  WA_FC1-TABNAME = 'IT_EKPO'.  WA_FC1-FIELDNAME = 'NETPR'.  WA_FC1-SELTEXT_S = 'NET PRICE'.  WA_FC1-COL_POS = 5.  APPEND WA_FC1 TO IT_FC1.

ENDFORM.

FORM TOP_OF_PAGE1.

  CLEAR WA_LH1.  WA_LH1-TYP = 'H'.  WA_LH1-INFO = 'PURCHASE ORDER ITEM DATA'.  APPEND WA_LH1 TO IT_LH1.

  CLEAR WA_LH1.  WA_LH1-TYP = 'S'.  WA_LH1-KEY = 'DATE:'.  CONCATENATE SY-DATUM+6(2) SY-DATUM+4(2) SY-DATUM(4) INTO WA_LH1-INFO SEPARATED BY '/'.  APPEND WA_LH1 TO IT_LH1.

  CLEAR WA_LH1.  DESCRIBE TABLE IT_EKPO LINES LINE.  LINE1 = LINE.  CONCATENATE 'TOTAL NO OF RECORD SELECTED' LINE1 INTO T_LINE SEPARATED BY SPACE.  WA_LH1-TYP = 'A'.  WA_LH1-INFO = T_LINE.  APPEND WA_LH1 TO IT_LH1.

  CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'    EXPORTING

Page 36: Bdc sap abap

      IT_LIST_COMMENTARY       = IT_LH1.

REFRESH IT_LH1.CLEAR: WA_LH1.ENDFORM.

FORM DISPLAY1.  CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'  EXPORTING     I_CALLBACK_PROGRAM                = SY-REPID     I_CALLBACK_USER_COMMAND           = 'USER_COMMAND'     I_CALLBACK_TOP_OF_PAGE            = 'TOP_OF_PAGE1'     I_BACKGROUND_ID                   = 'ALV_BACKGROUND'     IT_FIELDCAT                       = IT_FC1    TABLES      T_OUTTAB                          = IT_EKPO .ENDFORM.

form  USER_COMMAND USING R_UCOMM LIKE SY-UCOMM RS_SELF TYPE SLIS_SELFIELD.  CASE R_UCOMM.    WHEN '&IC1'.      READ TABLE IT_EKPO INTO WA_EKPO INDEX RS_SELF-TABINDEX.      PERFORM FIELDCAT2.      PERFORM GETDATA2.      PERFORM DISPLAY2.  ENDCASE.ENDFORM.

FORM GETDATA2.  SELECT EBELN BUKRS BSTYP BSART ERNAM AEDAT FROM EKKO INTO CORRESPONDING FIELDS OF TABLE IT_EKKO WHERE EBELN = WA_EKPO-EBELN.ENDFORM.

FORM FIELDCAT2.  CLEAR: WA_FC2.  WA_FC2-TABNAME = 'IT_EKKO'.  WA_FC2-FIELDNAME = 'EBELN'.  WA_FC2-SELTEXT_S = 'PO DOC NO'.  WA_FC2-COL_POS = 1.  APPEND WA_FC2 TO IT_FC2.

  CLEAR: WA_FC2.  WA_FC2-TABNAME = 'IT_EKKO'.  WA_FC2-FIELDNAME = 'BUKRS'.  WA_FC2-SELTEXT_S = 'COMPANY CODE'.  WA_FC2-COL_POS = 2.  APPEND WA_FC2 TO IT_FC2.

  CLEAR: WA_FC2.  WA_FC2-TABNAME = 'IT_EKKO'.  WA_FC2-FIELDNAME = 'BUTYP'.  WA_FC2-SELTEXT_S = 'PO DOC CAT'.  WA_FC2-COL_POS = 3.

Page 37: Bdc sap abap

  APPEND WA_FC2 TO IT_FC2.

  CLEAR: WA_FC2.  WA_FC2-TABNAME = 'IT_EKKO'.  WA_FC2-FIELDNAME = 'BSART'.  WA_FC2-SELTEXT_S = 'PO DOC TYPE'.  WA_FC2-COL_POS = 4.  APPEND WA_FC2 TO IT_FC2.

  CLEAR: WA_FC2.ENDFORM.

FORM DISPLAY2.CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY' EXPORTING   I_CALLBACK_PROGRAM                = SY-REPID   I_CALLBACK_USER_COMMAND           = 'USER_COMMAND2'   I_CALLBACK_TOP_OF_PAGE            = 'TOP_OF_PAGE2'   IT_FIELDCAT                       = IT_FC2  TABLES    T_OUTTAB                          = IT_EKKO.

CLEAR: WA_FC2.REFRESH IT_FC2.ENDFORM.

FORM TOP_OF_PAGE2.

  CLEAR WA_LH1.  WA_LH1-TYP = 'H'.  WA_LH1-INFO = 'PURCHASE ORDER HEADER DATA'.  APPEND WA_LH1 TO IT_LH1.

  CLEAR WA_LH1.  WA_LH1-TYP = 'S'.  WA_LH1-KEY = 'DATE:'.  CONCATENATE SY-DATUM+6(2) SY-DATUM+4(2) SY-DATUM(4) INTO WA_LH1-INFO SEPARATED BY '/'.  APPEND WA_LH1 TO IT_LH1.

  CLEAR: WA_LH1,LINE,LINE1,T_LINE.  DESCRIBE TABLE IT_EKKO LINES LINE.  LINE1 = LINE.  CONCATENATE 'TOTAL NO OF RECORD SELECTED' LINE1 INTO T_LINE SEPARATED BY SPACE.  WA_LH1-TYP = 'A'.  WA_LH1-INFO = T_LINE.  APPEND WA_LH1 TO IT_LH1.

  CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'    EXPORTING      IT_LIST_COMMENTARY       = IT_LH1.

Page 38: Bdc sap abap

REFRESH IT_LH1.CLEAR: WA_LH1.ENDFORM.

FORM USER_COMMAND2 USING R_UCOMM2 LIKE SY-UCOMM RS_SELF2 TYPE SLIS_SELFIELD.  READ TABLE IT_EKKO INTO WA_EKKO INDEX RS_SELF2-TABINDEX.

  PERFORM FIELDCAT3.  PERFORM DISPLAY3.

ENDFORM.

FORM FIELDCAT3.CLEAR: WA_FC2,IT_FC2.  WA_FC2-TABNAME = 'IT_EKKO'.  WA_FC2-FIELDNAME = 'ERNAM'.  WA_FC2-SELTEXT_S = 'ENTER BY NAME'.  WA_FC2-COL_POS = 1.  APPEND WA_FC2 TO IT_FC2.

  CLEAR: WA_FC2.  WA_FC2-TABNAME = 'IT_EKKO'.  WA_FC2-FIELDNAME = 'AEDAT'.  WA_FC2-SELTEXT_S = 'CREATED DATE'.  WA_FC2-COL_POS = 2.  APPEND WA_FC2 TO IT_FC2.

ENDFORM.

FORM DISPLAY3.  CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'   EXPORTING     I_GRID_TITLE                      = 'VENDER DETAILS'     IT_FIELDCAT                       = IT_FC2   TABLES     T_OUTTAB                          = IT_EKKO            .    CLEAR: WA_FC2.  REFRESH IT_FC2.ENDFORM. 

RESULT:

  Basic list