Application Development and Automation 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: 
Read only

BDC QUERY

Former Member
0 Likes
458

HW TO CREATE BDC_OPEN_GROUP

LIST COMPLETE STEPS

3 REPLIES 3
Read only

Former Member
0 Likes
427

Hi

TABLES : MARA,MAKT.

DATA : BEGIN OF T_MARA OCCURS 0,

MATNR LIKE MARA-MATNR,

MBRSH LIKE MARA-MBRSH,

MTART LIKE MARA-MTART,

MAKTX LIKE MAKT-MAKTX,

MEINS LIKE MARA-MEINS,

END OF T_MARA.

DATA : I_BDCDATA LIKE BDCDATA OCCURS 0 WITH HEADER LINE.

SELECTION-SCREEN BEGIN OF BLOCK B1 WITH FRAME TITLE TEXT-001.

PARAMETERS: P_FILE TYPE IBIPPARMS-PATH.

SELECTION-SCREEN END OF BLOCK B1.

DATA: V_FILE TYPE STRING.

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.

.

MOVE P_FILE TO V_FILE.

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

START-OF-SELECTION.

CALL FUNCTION 'GUI_UPLOAD'

EXPORTING

FILENAME = V_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 = T_MARA

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.

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

PERFORM OPEN_GROUP.

LOOP AT T_MARA.

REFRESH I_BDCDATA.

PERFORM BDC_DYNPRO USING 'SAPLMGMM' '0060'.

PERFORM BDC_FIELD USING 'BDC_CURSOR'

'RMMG1-MTART'.

PERFORM BDC_FIELD USING 'BDC_OKCODE'

'=AUSW'.

PERFORM BDC_FIELD USING 'RMMG1-MATNR'

T_MARA-MATNR.

PERFORM BDC_FIELD USING 'RMMG1-MBRSH'

T_MARA-MBRSH.

PERFORM BDC_FIELD USING 'RMMG1-MTART'

T_MARA-MTART.

PERFORM BDC_DYNPRO USING 'SAPLMGMM' '0070'.

PERFORM BDC_FIELD USING 'BDC_CURSOR'

'MSICHTAUSW-DYTXT(02)'.

PERFORM BDC_FIELD USING 'BDC_OKCODE'

'=ENTR'.

PERFORM BDC_FIELD USING 'MSICHTAUSW-KZSEL(01)'

'X'.

PERFORM BDC_FIELD USING 'MSICHTAUSW-KZSEL(02)'

'X'.

PERFORM BDC_DYNPRO USING 'SAPLMGMM' '4004'.

PERFORM BDC_FIELD USING 'BDC_OKCODE'

'/00'.

PERFORM BDC_FIELD USING 'BDC_CURSOR'

'MAKT-MAKTX'.

PERFORM BDC_FIELD USING 'MAKT-MAKTX'

T_MARA-MAKTX.

PERFORM BDC_FIELD USING 'MARA-MEINS'

T_MARA-MEINS.

PERFORM BDC_FIELD USING 'MARA-MTPOS_MARA'

'VOLL'.

PERFORM BDC_DYNPRO USING 'SAPLMGMM' '4004'.

PERFORM BDC_FIELD USING 'BDC_OKCODE'

'/00'.

PERFORM BDC_FIELD USING 'BDC_CURSOR'

'MAKT-MAKTX'.

PERFORM BDC_FIELD USING 'MAKT-MAKTX'

T_MARA-MAKTX.

PERFORM BDC_DYNPRO USING 'SAPLSPO1' '0300'.

PERFORM BDC_FIELD USING 'BDC_OKCODE'

'=YES'.

PERFORM BDC_INSERT.

ENDLOOP.

PERFORM CLOSE_GROUP.

WRITE : /'success'.

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

FORM OPEN_GROUP .

CALL FUNCTION 'BDC_OPEN_GROUP'

EXPORTING

CLIENT = SY-MANDT

  • DEST = FILLER8

GROUP = 'naresh1'

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

ENDFORM. " open_group

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

FORM BDC_INSERT .

CALL FUNCTION 'BDC_INSERT'

EXPORTING

TCODE = 'MM01'

  • POST_LOCAL = NOVBLOCAL

  • PRINTING = NOPRINT

  • SIMUBATCH = ' '

  • CTUPARAMS = ' '

TABLES

DYNPROTAB = I_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.

ENDFORM. " BDC_INSERT

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

FORM CLOSE_GROUP .

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_group

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

FORM BDC_DYNPRO USING P_PGM P_SCR.

I_BDCDATA-PROGRAM = P_PGM.

I_BDCDATA-DYNPRO = P_SCR.

I_BDCDATA-DYNBEGIN = 'X'.

APPEND I_BDCDATA.

CLEAR I_BDCDATA.

ENDFORM. " bdc_dynpro

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

FORM BDC_FIELD USING P_FNAM P_FVAL.

I_BDCDATA-FNAM = P_FNAM.

I_BDCDATA-FVAL = P_FVAL.

APPEND I_BDCDATA.

CLEAR I_BDCDATA.

ENDFORM. " bdc_field

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

Reward If Helpfull,

Naresh

Read only

Former Member
0 Likes
427

Hi,

General flow of a BDC program is like this....

1) First create recording for the T code which you want to make BDC for... Use T code SHDB for recording.

2 ) Now save that recording and create pogram from that recording using Create Program button. give the BDC driver program name and create.

3 ) Now the general logic of BDC program goes like this....

- Upload Flat file into and internal table using function module "UPLOAD"

- OPEN BDC GROUP.

- Now loop at that internal table which contains the data from flat file.

- move data from internal table to fields of BDCDATA using automatically gebnerated code from BDC.

- CALL TRANSACTION <T CODE> using BDCDATA...

- CLOSE BDC GROUP

A sample program for the same is attatched here for your referance... just go through it..

report ztej_test_new no standard page heading line-size 255.

data bdcdata like bdcdata occurs 0 with header line.

tables: zipcldesigcat.

data : begin of itab occurs 0,

mandt like zipcldesigcat-mandt,

zdesigncd like zipcldesigcat-zdesigncd,

zdesignation like zipcldesigcat-zdesignation,

zdesigcat like zipcldesigcat-zdesigcat,

end of itab.

*INCLUDE bdcrecx1.

start-of-selection.

perform upload.

perform open.

loop at itab.

perform move.

call transaction 'SE16' using bdcdata mode 'E'.

refresh bdcdata.

endloop.

perform close.

&----


*& Form UPLOAD

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


form upload.

call function 'UPLOAD'

exporting

  • CODEPAGE = ''

filename = ''

filetype = 'DAT'

item = 'Your File'

  • FILEMASK_MASK = ' '

  • FILEMASK_TEXT = ' '

  • FILETYPE_NO_CHANGE = ' '

  • FILEMASK_ALL = ' '

  • FILETYPE_NO_SHOW = ' '

  • LINE_EXIT = ' '

  • USER_FORM = ' '

  • USER_PROG = ' '

  • SILENT = 'S'

  • IMPORTING

  • FILESIZE =

  • CANCEL =

  • ACT_FILENAME =

  • ACT_FILETYPE =

tables

data_tab = itab

exceptions

conversion_error = 1

invalid_table_width = 2

invalid_type = 3

no_batch = 4

unknown_error = 5

gui_refuse_filetransfer = 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.

*CALL FUNCTION 'ALSM_EXCEL_TO_INTERNAL_TABLE'

  • EXPORTING

  • filename = 'C:\TEST.XLS'

  • i_begin_col = 1

  • i_begin_row = 1

  • i_end_col = 3

  • i_end_row = 5

  • tables

  • intern = ITAB

  • EXCEPTIONS

  • INCONSISTENT_PARAMETERS = 1

  • UPLOAD_OLE = 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. " UPLOAD

----


  • Start new screen *

----


form bdc_dynpro using program dynpro.

clear bdcdata.

bdcdata-program = program.

bdcdata-dynpro = dynpro.

bdcdata-dynbegin = 'X'.

append bdcdata.

endform.

----


  • Insert field *

----


form bdc_field using fnam fval.

if fval <> space.

clear bdcdata.

bdcdata-fnam = fnam.

bdcdata-fval = fval.

append bdcdata.

endif.

endform.

&----


*& Form OPEN

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


form open.

call function 'BDC_OPEN_GROUP'

exporting

client = sy-mandt

  • DEST = FILLER8

group = 'ZDESIGCAT_R'

  • HOLDDATE = FILLER8

  • KEEP = FILLER1

user = sy-uname

  • RECORD = FILLER1

  • 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. " OPEN

&----


*& Form MOVE

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


form move.

perform bdc_dynpro using 'SAPLSETB' '0230'.

perform bdc_field using 'BDC_CURSOR'

'DATABROWSE-TABLENAME'.

perform bdc_field using 'BDC_OKCODE'

'=ANLE'.

perform bdc_field using 'DATABROWSE-TABLENAME'

'ZIPCLDESIGCAT'.

perform bdc_dynpro using 'SAPLZIPCLDESIGCAT' '0001'.

perform bdc_field using 'BDC_CURSOR'

'VIM_POSITION_INFO'.

perform bdc_field using 'BDC_OKCODE'

'=NEWL'.

perform bdc_dynpro using 'SAPLZIPCLDESIGCAT' '0001'.

perform bdc_field using 'BDC_CURSOR'

'ZIPCLDESIGCAT-ZDESIGCAT(01)'.

perform bdc_field using 'BDC_OKCODE'

'=SAVE'.

perform bdc_field using 'ZIPCLDESIGCAT-ZDESIGNCD(01)'

'2101'.

perform bdc_field using 'ZIPCLDESIGCAT-ZDESIGNATION(01)'

'new'.

perform bdc_field using 'ZIPCLDESIGCAT-ZDESIGCAT(01)'

'n'.

perform bdc_dynpro using 'SAPLZIPCLDESIGCAT' '0001'.

perform bdc_field using 'BDC_CURSOR'

'ZIPCLDESIGCAT-ZDESIGNCD(02)'.

perform bdc_field using 'BDC_OKCODE'

'=ENDE'.

perform bdc_dynpro using 'SAPLSETB' '0230'.

perform bdc_field using 'BDC_OKCODE'

'/EEND'.

perform bdc_field using 'BDC_CURSOR'

'DATABROWSE-TABLENAME'.

endform. " MOVE

&----


*& Form CLOSE

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


form close.

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

Read only

Former Member
0 Likes
427

hi Rajan,

THe below program illustrates the usage of both call transaction and session method ... Please find for the same ...


REPORT  ztest_report
 NO STANDARD PAGE HEADING
                        LINE-SIZE 255
                        MESSAGE-ID ZRASH.

************************************************************************
*                 Internal Table Declarations                          *
************************************************************************
*--Internal Table for Data Uploading.
DATA : BEGIN OF IT_FFCUST OCCURS 0,
         KUNNR(10),
         BUKRS(4),
         KTOKD(4),
         ANRED(15),
         NAME1(35),
         SORTL(10),
         STRAS(35),
         ORT01(35),
         PSTLZ(10),
         LAND1(3),
         SPRAS(2),
         AKONT(10),
       END OF IT_FFCUST.

*--Internal Table to Store Error Records.
DATA : BEGIN OF IT_ERRCUST OCCURS 0,
         KUNNR(10),
         EMSG(255),
       END OF IT_ERRCUST.

*--Internal Table to Store Successful Records.
DATA : BEGIN OF IT_SUCCUST OCCURS 0,
         KUNNR(10),
         SMSG(255),
       END OF IT_SUCCUST.

*--Internal Table for Storing the BDC data.
DATA : IT_CUSTBDC LIKE BDCDATA OCCURS 0 WITH HEADER LINE.

*--Internal Table for storing the messages.
DATA : IT_CUSTMSG LIKE BDCMSGCOLL OCCURS 0 WITH HEADER LINE.

DATA : V_FLAG1(1) VALUE ' ',
"Flag used for opening session.
       V_TLINES LIKE SY-TABIX,
       "For storing total records processed.
       V_ELINES LIKE SY-TABIX,
       "For storing the no of error records.
       V_SLINES LIKE SY-TABIX.
       "For storing the no of success records.


************************************************************************
*          Selection screen                                            *
************************************************************************

SELECTION-SCREEN BEGIN OF BLOCK B1.
PARAMETERS : V_FNAME LIKE RLGRAP-FILENAME,
             V_SESNAM  LIKE RLGRAP-FILENAME.
SELECTION-SCREEN END OF BLOCK B1.

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

START-OF-SELECTION.
*-- Form to upload flatfile data into the internal table.
  PERFORM FORM_UPLOADFF.

************************************************************************
*        TOP-OF-PAGE                                                   *
************************************************************************
TOP-OF-PAGE.
  WRITE:/ 'Details of the error and success records for the transaction'
  .
  ULINE.
  SKIP.


************************************************************************
*          End of Selection                                            *
************************************************************************
END-OF-SELECTION.
*-- Form to Generate a BDC from the Uploaded Internal table
  PERFORM FORM_BDCGENERATE.

*--To write the totals and the session name.
  PERFORM FORM_WRITEOP.



*&---------------------------------------------------------------------*
*&      Form  form_uploadff
*&---------------------------------------------------------------------*
*     Form to upload flatfile data into the internal table.
*----------------------------------------------------------------------*
FORM FORM_UPLOADFF .

*--Variable to change the type of the parameter file name.
  DATA : LV_FILE TYPE STRING.

  LV_FILE = V_FNAME.

*--Function to upload the flat file to the internal table.
  CALL FUNCTION 'GUI_UPLOAD'
    EXPORTING
      FILENAME                      =  LV_FILE
*     FILETYPE                      = 'ASC'
      HAS_FIELD_SEPARATOR           = 'X'
*     HEADER_LENGTH                 = 0
*     READ_BY_LINE                  = 'X'
*     DAT_MODE                      = ' '
*   IMPORTING
*     FILELENGTH                    =
*     HEADER                        =
    TABLES
      DATA_TAB                      = IT_FFCUST
    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.
*--Deleting the headings from the internal table.
    DELETE IT_FFCUST INDEX 1.
*--Getting the total number of records uploaded.
    DESCRIBE TABLE IT_FFCUST LINES V_TLINES.

  ENDIF.


ENDFORM.                    " form_uploadff
*&---------------------------------------------------------------------*
*&      Form  Form_bdcgenerate
*&---------------------------------------------------------------------*
*     Form to Generate a BDC from the Uploaded Internal table
*----------------------------------------------------------------------*
FORM FORM_BDCGENERATE .

*--Generating the BDC table for the fields of the internal table.
  LOOP AT IT_FFCUST.
    PERFORM POPULATEBDC USING :
                                'X' 'SAPMF02D' '0105',
                                ' ' 'BDC_OKCODE'  '/00' ,
                                ' ' 'RF02D-KUNNR' IT_FFCUST-KUNNR,
                                ' ' 'RF02D-BUKRS' IT_FFCUST-BUKRS,
                                ' ' 'RF02D-KTOKD' IT_FFCUST-KTOKD,
                                'X' 'SAPMF02D' '0110' ,
                                ' ' 'BDC_OKCODE'  '/00',
                                ' ' 'KNA1-ANRED'  IT_FFCUST-ANRED,
                                ' ' 'KNA1-NAME1' IT_FFCUST-NAME1,
                                ' ' 'KNA1-SORTL'  IT_FFCUST-SORTL,
                                ' ' 'KNA1-STRAS' IT_FFCUST-STRAS,
                                ' ' 'KNA1-ORT01' IT_FFCUST-ORT01,
                                ' ' 'KNA1-PSTLZ' IT_FFCUST-PSTLZ,
                                ' ' 'KNA1-LAND1' IT_FFCUST-LAND1,
                                ' ' 'KNA1-SPRAS' IT_FFCUST-SPRAS,

                                'X' 'SAPMFO2D' '0120',	
                                ' ' 'BDC_OKCODE'  '/00',

                                'X' 'SAPMF02D' '0125',	
                                ' ' 'BDC_OKCODE'  '/00',

                                'X' 'SAPMF02D' '0130',	
                                ' ' 'BDC_OKCODE'  '=ENTR',

                                'X' 'SAPMF02D' '0340',	
                                ' ' 'BDC_OKCODE'  '=ENTR',

                                'X' 'SAPMF02D' '0360',
                                ' ' 'BDC_OKCODE'  '=ENTR',

                                'X' 'SAPMF02D' '0210',	
                                ' ' 'KNB1-AKONT'  IT_FFCUST-AKONT,
                                ' ' 'BDC_OKCODE'  '/00',

                                'X' 'SAPMF02D' '0215',
                                ' ' 'BDC_OKCODE'  '/00',

                                'X' 'SAPMF02D' '0220',	
                                ' ' 'BDC_OKCODE'  '/00',

                                'X' 'SAPMF02D' '0230',	
                                ' ' 'BDC_OKCODE'  '=UPDA'.
*--Calling the transaction 'fd01'.
    CALL TRANSACTION 'FD01' USING IT_CUSTBDC MODE 'N' UPDATE 'S'
    MESSAGES INTO IT_CUSTMSG.
    IF SY-SUBRC <> 0.
*--Populating the error records internal table.
      IT_ERRCUST-KUNNR = IT_FFCUST-KUNNR.
      APPEND IT_ERRCUST.
      CLEAR IT_ERRCUST.
*--Opening a session if there is an error record.
      IF V_FLAG1 = ' '.
        PERFORM FORM_OPENSESSION.
        V_FLAG1 = 'X'.
      ENDIF.
*--Inserting the error records into already open session.
      IF V_FLAG1 = 'X'.
        PERFORM FORM_INSERT.
      ENDIF.
*--Populating the Success records internal table.
    ELSE.
      IT_SUCCUST-KUNNR = IT_FFCUST-KUNNR.
      APPEND IT_SUCCUST.
      CLEAR IT_SUCCUST.
    ENDIF.
*--Displaying the messages.
    IF NOT IT_CUSTMSG[] IS INITIAL.
      PERFORM FORM_FORMATMSG.
    ENDIF.
*--Clearing the message and bdc tables.
    CLEAR : IT_CUSTBDC[],IT_CUSTMSG[].
  ENDLOOP.

*--Getting the total no of error records.
  DESCRIBE TABLE IT_ERRCUST LINES V_ELINES.

*--Getting the total no of successful records.
  DESCRIBE TABLE IT_SUCCUST LINES V_SLINES.

*--Closing the session only if it is open.
  IF V_FLAG1 = 'X'.
    PERFORM FORM_CLOSESESS.
  ENDIF.


ENDFORM.                    " Form_bdcgenerate


*&---------------------------------------------------------------------*
*&      Form  populatebdc
*&---------------------------------------------------------------------*
*       FOrm to Populate the BDC table.
*----------------------------------------------------------------------*
FORM POPULATEBDC  USING    VALUE(P_0178)
                           VALUE(P_0179)
                           VALUE(P_0180).

  IF P_0178 = 'X'.
    IT_CUSTBDC-PROGRAM = P_0179.
    IT_CUSTBDC-DYNPRO = P_0180.
    IT_CUSTBDC-DYNBEGIN = 'X'.
  ELSE.
    IT_CUSTBDC-FNAM = P_0179.
    IT_CUSTBDC-FVAL = P_0180.
  ENDIF.

  APPEND IT_CUSTBDC.
  CLEAR IT_CUSTBDC.


ENDFORM.                    " populatebdc


*&---------------------------------------------------------------------*
*&      Form  FORM_OPENSESSION
*&---------------------------------------------------------------------*
*       Form to Open a session.
*----------------------------------------------------------------------*
FORM FORM_OPENSESSION .

*--Variable to convert the given session name into reqd type.
  DATA : LV_SESNAM(12).

  LV_SESNAM = V_SESNAM.

*--Opening a session.
  CALL FUNCTION 'BDC_OPEN_GROUP'
   EXPORTING
     CLIENT                    = SY-MANDT
     GROUP                     = LV_SESNAM
     HOLDDATE                  = '20040805'
     KEEP                      = 'X'
     USER                      = SY-UNAME
     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.
    WRITE :/ 'Session not open'.
  ENDIF.


ENDFORM.                    " FORM_OPENSESSION
*&---------------------------------------------------------------------*
*&      Form  FORM_INSERT
*&---------------------------------------------------------------------*
*       fORM TO INSERT ERROR RECOED INTO A SESSION.
*----------------------------------------------------------------------*
FORM FORM_INSERT .

*--Inserting the record into session.
  CALL FUNCTION 'BDC_INSERT'
    EXPORTING
      TCODE                  = 'FD01'
*     POST_LOCAL             = NOVBLOCAL
*     PRINTING               = NOPRINT
*     SIMUBATCH              = ' '
*     CTUPARAMS              = ' '
    TABLES
      DYNPROTAB              = IT_CUSTBDC
    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.
    WRITE :/ 'Unable to insert the record'.
  ENDIF.


ENDFORM.                    " FORM_INSERT
*&---------------------------------------------------------------------*
*&      Form  FORM_CLOSESESS
*&---------------------------------------------------------------------*
*       Form to Close the Open Session.
*----------------------------------------------------------------------*
FORM FORM_CLOSESESS .


  CALL FUNCTION 'BDC_CLOSE_GROUP'
    EXCEPTIONS
      NOT_OPEN    = 1
      QUEUE_ERROR = 2
      OTHERS      = 3.
  IF SY-SUBRC <> 0.
  ENDIF.



ENDFORM.                    " FORM_CLOSESESS
*&---------------------------------------------------------------------*
*&      Form  FORM_FORMATMSG
*&---------------------------------------------------------------------*
*       Form to format messages.
*----------------------------------------------------------------------*
FORM FORM_FORMATMSG .

*--Var to store the formatted msg.
  DATA : LV_MSG(255).


  CALL FUNCTION 'FORMAT_MESSAGE'
    EXPORTING
      ID        = SY-MSGID
      LANG      = SY-LANGU
      NO        = SY-MSGNO
      V1        = SY-MSGV1
      V2        = SY-MSGV2
      V3        = SY-MSGV3
      V4        = SY-MSGV4
    IMPORTING
      MSG       = LV_MSG
    EXCEPTIONS
      NOT_FOUND = 1
      OTHERS    = 2.
  IF SY-SUBRC = 0.

    WRITE :/ LV_MSG.

  ENDIF.
  ULINE.


ENDFORM.                    " FORM_FORMATMSG
*&---------------------------------------------------------------------*
*&      Form  form_writeop
*&---------------------------------------------------------------------*
*       To write the totals and the session name.
*----------------------------------------------------------------------*
FORM FORM_WRITEOP .

  WRITE :/ 'Total Records Uploaded :',V_TLINES,
           / 'No of Error Records :',V_ELINES,
           / 'No of Success Records :',V_SLINES,
           / 'Name of the Session :',V_SESNAM.
  ULINE.

ENDFORM.                    " form_writeop



*  if routeindicator is initial.
*   LOOP AT IT_YMMEE00090.
*      LV_LENGTH = STRLEN( IT_YMMEE00090-CHANGETYPE ).
*      IF SY-TABIX = '1'.
*        IF  IT_YMMEE00090-CHANGETYPE = 'B' AND LV_LENGTH = 1.
*          ROUTEINDICATOR = 'S'.
*        ELSEIF IT_YMMEE00090-CHANGETYPE = 'R' AND LV_LENGTH = 1.
*          ROUTEINDICATOR = 'S'.
*        ELSEIF IT_YMMEE00090-CHANGETYPE = 'S' AND LV_LENGTH = 1.
*          ROUTEINDICATOR = 'S'.
*        ELSEIF IT_YMMEE00090-CHANGETYPE CA 'BRSCD' AND LV_LENGTH GT 1
*                                          AND LV_LENGTH LE 5.
*          ROUTEINDICATOR = 'S'.
*        ENDIF.
*      ELSE.
*        IF  IT_YMMEE00090-CHANGETYPE = 'B' AND LV_LENGTH = 1 AND
*                                         ROUTEINDICATOR = 'S'.
*          ROUTEINDICATOR = 'S'.
*        ELSEIF IT_YMMEE00090-CHANGETYPE = 'R' AND LV_LENGTH = 1 AND
*                                         ROUTEINDICATOR = 'S'.
*          ROUTEINDICATOR = 'S'.
*        ELSEIF IT_YMMEE00090-CHANGETYPE = 'S' AND LV_LENGTH = 1 AND
*                                         ROUTEINDICATOR = 'S'.
*          ROUTEINDICATOR = 'S'.
*        ELSEIF IT_YMMEE00090-CHANGETYPE CA 'BRSCD' AND LV_LENGTH GT 1
*                  AND LV_LENGTH LE 5 AND ROUTEINDICATOR = 'S'.
*          ROUTEINDICATOR = 'S'.
*        ENDIF.
*      ENDIF.
*  ENDLOOP.
* endif.