sap bdc for table control exercise 1 - Transaction VD51


learn how to create bdc program for table control
Program Code

report ZVD51_BDC_TC
       no standard page heading line-size 255.

include bdcrecx1.

types : begin of tp_itab,
         kunnr(10),
         vkorg(4),
         vtweg(2),
         matnr(18),
         cust_matnr(20),
       end of tp_itab.

data : gt_itab type STANDARD TABLE OF tp_itab,
       gs_itab type tp_itab,
       gt_itab1 type STANDARD TABLE OF tp_itab,
       gs_itab1 type tp_itab.

data : gv_file type string,
       gv_sno(2) type n,
       gv_fname(60).


SELECTION-SCREEN skip.
 PARAMETERS : P_FILE TYPE IBIPPARMS-PATH OBLIGATORY.
SELECTION-SCREEN SKIP.

AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_FILE.

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


start-of-selection.

 clear : gv_file, gt_itab[].

  gv_file = p_file.

 CALL FUNCTION 'GUI_UPLOAD'
   EXPORTING
     FILENAME                      = GV_FILE
    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                      = gt_itab
*  CHANGING
*    ISSCANPERFORMED               = ' '
  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.
* Implement suitable error handling here
 ENDIF.


  gt_itab1[] = gt_itab[].

  sort gt_itab1 by kunnr vkorg vtweg.
  sort gt_itab by kunnr vkorg vtweg.

  delete ADJACENT DUPLICATES FROM gt_itab1 COMPARING kunnr vkorg vtweg.

perform open_group.

loop at gt_itab1 into gs_itab1.


perform bdc_dynpro      using 'SAPMV10A' '0100'.
perform bdc_field       using 'BDC_CURSOR'
                              'MV10A-VTWEG'.
perform bdc_field       using 'BDC_OKCODE'
                              '/00'.
perform bdc_field       using 'MV10A-KUNNR'
                              gs_itab1-kunnr.        "'5000000002'.
perform bdc_field       using 'MV10A-VKORG'
                              gs_itab1-vkorg.        "'1024'.
perform bdc_field       using 'MV10A-VTWEG'
                              gs_itab1-vtweg.         "'24'.

perform bdc_dynpro      using 'SAPMV10A' '0200'.
perform bdc_field       using 'BDC_CURSOR'
                              'MV10A-MATNR(01)'.
perform bdc_field       using 'BDC_OKCODE'
                              '/00'.

clear : GV_SNO.
loop at gt_itab into gs_itab WHERE kunnr = gs_itab1-kunnr
                               and vkorg = gs_itab1-vkorg
                               and vtweg = gs_itab1-vtweg.

 gv_sno = gv_sno + 01.
 clear : gv_fname.
 CONCATENATE 'MV10A-MATNR(' gv_sno ')' into gv_fname.

perform bdc_field       using gv_fname                "'MV10A-MATNR(01)'
                              gs_itab-matnr.          "'11000004'.

 clear : gv_fname.
 CONCATENATE 'MV10A-KDMAT(' gv_sno ')' into gv_fname.

perform bdc_field       using gv_fname               "'MV10A-KDMAT(01)'
                              gs_itab-CUST_MATNR.


clear : gs_itab.
endloop.

*perform bdc_field       using 'MV10A-MATNR(01)'
*                              '11000004'.
*perform bdc_field       using 'MV10A-MATNR(02)'
*                              '11000002'.
*perform bdc_field       using 'MV10A-MATNR(03)'
*                              '11001657'.
*perform bdc_field       using 'MV10A-KDMAT(01)'
*                              'SAND CRUSH'.
*perform bdc_field       using 'MV10A-KDMAT(02)'
*                              'CEMENT'.
*perform bdc_field       using 'MV10A-KDMAT(03)'
*                              'BRASS'.


perform bdc_dynpro      using 'SAPMV10A' '0200'.
perform bdc_field       using 'BDC_CURSOR'
                              'MV10A-MATNR(01)'.
perform bdc_field       using 'BDC_OKCODE'
                              '=SICH'.

perform bdc_transaction using 'VD51'.


clear : gs_itab1.
endloop.


perform close_group.

Post a Comment

2 Comments

Total Pageviews