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

using bdc to upload the data in internal table

Former Member
0 Likes
1,616

hi

using bdc to upload the data in internal table using these commands

1.bdc_open_group

2.bdc_insert

3.bdc_close_group

1 ACCEPTED SOLUTION
Read only

Former Member
0 Likes
1,000

It has the following 3 function modules with detailed parameter passed to it .

<b>

1.bdc_open_group

2.bdc_insert

3.bdc_close_group</b>

***INCLUDE ZBDCRECX1. 
*  When you generate the program using SHDB, you can replace it 
*  with this if you want to execute it immediately without having 
*  to process it using SM35. 
* 
*  During testing you can used the original include. 
* 
*  For example, 
*  include zbdcrecx1.   "After test 
*  include bdcrecx.     "Before test 
*  ------------------------------------- 
*  Declare your internal table as RECORD 
*  ------------------------------------- 
*  for programs doing a data transfer by creating a batch-input session 
*  and 
*  for programs doing a data transfer by CALL TRANSACTION USING 

*SELECTION-SCREEN BEGIN OF LINE. 
*  PARAMETERS SESSION RADIOBUTTON GROUP CTU.  "create session 
*  SELECTION-SCREEN COMMENT 3(20) TEXT-S07 FOR FIELD SESSION. 
*  selection-screen position 45. 
*  PARAMETERS CTU RADIOBUTTON GROUP CTU DEFAULT 'X'. "call transaction 
*  SELECTION-SCREEN COMMENT 48(20) TEXT-S08 FOR FIELD CTU. 
*SELECTION-SCREEN END OF LINE. 
PARAMETERS: SESSION NO-DISPLAY, 
            CTU     NO-DISPLAY DEFAULT 'X'. 

*SELECTION-SCREEN BEGIN OF LINE. 
*  SELECTION-SCREEN COMMENT 3(20) TEXT-S01 FOR FIELD GROUP. 
*  selection-screen position 25. 
*  PARAMETERS GROUP(12).                      "group name of session 
*  SELECTION-SCREEN COMMENT 48(20) TEXT-S05 FOR FIELD CTUMODE. 
*  selection-screen position 70. 
*  PARAMETERS CTUMODE LIKE CTU_PARAMS-DISMODE DEFAULT 'N'. 
*                                      "A: show all dynpros 
*                                      "E: show dynpro on error only 
*                                      "N: do not display dynpro 
*SELECTION-SCREEN END OF LINE. 
PARAMETERS: GROUP(12) NO-DISPLAY, 
            CTUMODE   NO-DISPLAY DEFAULT 'N'. 

*SELECTION-SCREEN BEGIN OF LINE. 
*  SELECTION-SCREEN COMMENT 3(20) TEXT-S02 FOR FIELD USER. 
*  selection-screen position 25. 
*  PARAMETERS: USER(12) DEFAULT SY-UNAME.    "user for session in batch 
*  SELECTION-SCREEN COMMENT 48(20) TEXT-S06 FOR FIELD CUPDATE. 
*  selection-screen position 70. 
*  PARAMETERS CUPDATE LIKE CTU_PARAMS-UPDMODE DEFAULT 'L'. 
*                                      "S: synchronously 
*                                      "A: asynchronously 
*                                      "L: local 
*SELECTION-SCREEN END OF LINE. 
PARAMETERS: USER(12) NO-DISPLAY DEFAULT SY-UNAME, 
            CUPDATE LIKE CTU_PARAMS-UPDMODE DEFAULT 'L' NO-DISPLAY. 

*SELECTION-SCREEN BEGIN OF LINE. 
*  SELECTION-SCREEN COMMENT 3(20) TEXT-S03 FOR FIELD KEEP. 
*  selection-screen position 25. 
*  PARAMETERS: KEEP AS CHECKBOX.       "' ' = delete session if finished 
*                                      "'X' = keep   session if finished 
*  SELECTION-SCREEN COMMENT 48(20) TEXT-S09 FOR FIELD E_GROUP. 
*  selection-screen position 70. 
*  parameters E_GROUP(12).             "group name of error-session 
*SELECTION-SCREEN END OF LINE. 
PARAMETERS: KEEP        NO-DISPLAY, 
            E_GROUP(12) NO-DISPLAY. 

*SELECTION-SCREEN BEGIN OF LINE. 
*  SELECTION-SCREEN COMMENT 3(20) TEXT-S04 FOR FIELD HOLDDATE. 
*  selection-screen position 25. 
*  PARAMETERS: HOLDDATE LIKE SY-DATUM. 
*  SELECTION-SCREEN COMMENT 51(17) TEXT-S02 FOR FIELD E_USER. 
*  selection-screen position 70. 
*  PARAMETERS: E_USER(12) DEFAULT SY-UNAME.    "user for error-session 
*SELECTION-SCREEN END OF LINE. 
PARAMETERS: HOLDDATE LIKE SY-DATUM NO-DISPLAY, 
           E_USER(12) DEFAULT SY-UNAME NO-DISPLAY. 

*SELECTION-SCREEN BEGIN OF LINE. 
*  SELECTION-SCREEN COMMENT 51(17) TEXT-S03 FOR FIELD E_KEEP. 
*  selection-screen position 70. 
*  PARAMETERS: E_KEEP AS CHECKBOX.     "' ' = delete session if finished 
*                                      "'X' = keep   session if finished 
*SELECTION-SCREEN END OF LINE. 
PARAMETERS: E_KEEP NO-DISPLAY. 

*SELECTION-SCREEN BEGIN OF LINE. 
*  SELECTION-SCREEN COMMENT 51(17) TEXT-S04 FOR FIELD E_HDATE. 
*  selection-screen position 70. 
*  PARAMETERS: E_HDATE LIKE SY-DATUM. 
*SELECTION-SCREEN END OF LINE. 
* 
*SELECTION-SCREEN SKIP. 
PARAMETERS: E_HDATE LIKE SY-DATUM NO-DISPLAY. 

*SELECTION-SCREEN BEGIN OF LINE. 
*  SELECTION-SCREEN COMMENT 1(33) TEXT-S10 FOR FIELD NODATA. 
*  PARAMETERS: NODATA DEFAULT '/' LOWER CASE.          "nodata 
*SELECTION-SCREEN END OF LINE. 
PARAMETERS: NODATA DEFAULT '/' LOWER CASE NO-DISPLAY. 

*SELECTION-SCREEN BEGIN OF LINE. 
*  SELECTION-SCREEN COMMENT 1(33) FOR FIELD SMALLLOG. 
*  PARAMETERS: SMALLLOG as checkbox.  "' ' = log all transactions 
*                                     "'X' = no transaction logging 
*SELECTION-SCREEN END OF LINE. 
PARAMETERS: SMALLLOG NO-DISPLAY. 

*----------------------------------------------------------------------* 
*   data definition 
*----------------------------------------------------------------------* 
*       Batchinputdata of single transaction 
DATA:   BDCDATA LIKE BDCDATA    OCCURS 0 WITH HEADER LINE. 
*       messages of call transaction 
DATA:   MESSTAB LIKE BDCMSGCOLL OCCURS 0 WITH HEADER LINE. 
*       error session opened (' ' or 'X') 
DATA:   E_GROUP_OPENED. 
*       message texts 
TABLES: T100. 
  

*----------------------------------------------------------------------* 
*   at selection screen                                                * 
*----------------------------------------------------------------------* 
AT SELECTION-SCREEN. 
* group and user must be filled for create session 
  IF SESSION = 'X' AND 
     GROUP = SPACE OR USER = SPACE. 
    MESSAGE E613(MS). 
  ENDIF. 

*----------------------------------------------------------------------* 
*   open dataset                                                       * 
*----------------------------------------------------------------------* 
FORM OPEN_DATASET USING P_DATASET. 
  OPEN DATASET P_DATASET IN TEXT MODE. 
  IF SY-SUBRC <> 0. 
    WRITE: / TEXT-E00, SY-SUBRC. 
    STOP. 
  ENDIF. 
ENDFORM. 

*----------------------------------------------------------------------* 
*   close dataset                                                      * 
*----------------------------------------------------------------------* 
FORM CLOSE_DATASET USING P_DATASET. 
  CLOSE DATASET P_DATASET. 
ENDFORM. 

*----------------------------------------------------------------------* 
*   create batchinput session                                          * 
*   (not for call transaction using...)                                * 
*----------------------------------------------------------------------* 
FORM OPEN_GROUP. 
  IF SESSION = 'X'. 
    SKIP. 
    WRITE: /(20) 'Create group'(I01), GROUP. 
    SKIP. 
*   open batchinput group 
    CALL FUNCTION 'BDC_OPEN_GROUP' 
         EXPORTING  CLIENT   = SY-MANDT 
                    GROUP    = GROUP 
                    USER     = USER 
                    KEEP     = KEEP 
                    HOLDDATE = HOLDDATE. 
    WRITE: /(30) 'BDC_OPEN_GROUP'(I02), 
            (12) 'returncode:'(I05), 
                 SY-SUBRC. 
  ENDIF. 
ENDFORM. 

*----------------------------------------------------------------------* 
*   end batchinput session                                             * 
*   (call transaction using...: error session)                         * 
*----------------------------------------------------------------------* 
FORM CLOSE_GROUP. 
  IF SESSION = 'X'. 
*   close batchinput group 
    CALL FUNCTION 'BDC_CLOSE_GROUP'. 
    WRITE: /(30) 'BDC_CLOSE_GROUP'(I04), 
            (12) 'returncode:'(I05), 
                 SY-SUBRC. 
  ELSE. 
    IF E_GROUP_OPENED = 'X'. 
      CALL FUNCTION 'BDC_CLOSE_GROUP'. 
      WRITE: /. 
      WRITE: /(30) 'Fehlermappe wurde erzeugt'(I06). 
    ENDIF. 
  ENDIF. 
ENDFORM. 

*----------------------------------------------------------------------* 
*        Start new transaction according to parameters                 * 
*----------------------------------------------------------------------* 
FORM BDC_TRANSACTION USING TCODE. 
  DATA: L_MSTRING(480). 
  DATA: L_SUBRC LIKE SY-SUBRC. 
* batch input session 
  IF SESSION = 'X'. 
    CALL FUNCTION 'BDC_INSERT' 
         EXPORTING TCODE     = TCODE 
         TABLES    DYNPROTAB = BDCDATA. 
    IF SMALLLOG <> 'X'. 
      WRITE: / 'BDC_INSERT'(I03), 
               TCODE, 
               'returncode:'(I05), 
               SY-SUBRC, 
               'RECORD:', 
               SY-INDEX. 
    ENDIF. 
* call transaction using 
  ELSE. 
    REFRESH MESSTAB. 
    CALL TRANSACTION TCODE USING BDCDATA 
                     MODE   CTUMODE 
                     UPDATE CUPDATE 
                     MESSAGES INTO MESSTAB. 
    L_SUBRC = SY-SUBRC. 
    IF SMALLLOG <> 'X'. 
*      WRITE: / 'CALL_TRANSACTION', 
*               TCODE, 
*               'returncode:'(I05), 
*               L_SUBRC, 
*               'RECORD:', 
*               SY-INDEX. 
      IF SY-SUBRC = 0. 
         FORMAT COLOR OFF. 
         WRITE:/ 'Successfully Process ', MESSTAB, RECORD. 
      ELSE. 
         FORMAT COLOR COL_NEGATIVE. 
         WRITE:/ 'Failed Process ', MESSTAB, RECORD. 
      ENDIF. 
      LOOP AT MESSTAB. 
        SELECT SINGLE * FROM T100 WHERE SPRSL = MESSTAB-MSGSPRA 
                                  AND   ARBGB = MESSTAB-MSGID 
                                  AND   MSGNR = MESSTAB-MSGNR. 
        IF SY-SUBRC = 0. 
          L_MSTRING = T100-TEXT. 
          IF L_MSTRING CS '&1'. 
            REPLACE '&1' WITH MESSTAB-MSGV1 INTO L_MSTRING. 
            REPLACE '&2' WITH MESSTAB-MSGV2 INTO L_MSTRING. 
            REPLACE '&3' WITH MESSTAB-MSGV3 INTO L_MSTRING. 
            REPLACE '&4' WITH MESSTAB-MSGV4 INTO L_MSTRING. 
          ELSE. 
            REPLACE '&' WITH MESSTAB-MSGV1 INTO L_MSTRING. 
            REPLACE '&' WITH MESSTAB-MSGV2 INTO L_MSTRING. 
            REPLACE '&' WITH MESSTAB-MSGV3 INTO L_MSTRING. 
            REPLACE '&' WITH MESSTAB-MSGV4 INTO L_MSTRING. 
          ENDIF. 
          CONDENSE L_MSTRING. 
          WRITE: / MESSTAB-MSGTYP, L_MSTRING(250). 
        ELSE. 
          WRITE: / MESSTAB. 
        ENDIF. 
      ENDLOOP. 
      SKIP. 
    ENDIF. 
** Erzeugen fehlermappe ************************************************ 
    IF L_SUBRC <> 0 AND E_GROUP <> SPACE. 
      IF E_GROUP_OPENED = ' '. 
        CALL FUNCTION 'BDC_OPEN_GROUP' 
             EXPORTING  CLIENT   = SY-MANDT 
                        GROUP    = E_GROUP 
                        USER     = E_USER 
                        KEEP     = E_KEEP 
                        HOLDDATE = E_HDATE. 
         E_GROUP_OPENED = 'X'. 
      ENDIF. 
      CALL FUNCTION 'BDC_INSERT' 
           EXPORTING TCODE     = TCODE 
           TABLES    DYNPROTAB = BDCDATA. 
    ENDIF. 
  ENDIF. 
  REFRESH BDCDATA. 
ENDFORM. 

*----------------------------------------------------------------------* 
*        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 <> NODATA. 
    CLEAR BDCDATA. 
    BDCDATA-FNAM = FNAM. 
    BDCDATA-FVAL = FVAL. 
    APPEND BDCDATA. 
  ENDIF. 
ENDFORM.  

reward points if it is usefull .....

Girish

hi

using bdc to upload the data in internal table using these commands

1.bdc_open_group

2.bdc_insert

3.bdc_close_group

3 REPLIES 3
Read only

Former Member
0 Likes
1,000

Hi Senthi,

Check out this link:

http://www.sap-img.com/ab001.htm

Reward if useful!

Read only

Former Member
0 Likes
1,000

Check this code it may help u.

REPORT z_nvk_bdc_tbl NO STANDARD PAGE HEADING LINE-SIZE 255.

*INCLUDE bdcrecx1.

      • DO NOT CHANGE - the generated data section - DO NOT CHANGE ***

*

  • If it is nessesary to change the data section use the rules:

  • 1.) Each definition of a field exists of two lines

  • 2.) The first line shows exactly the comment

  • '* data element: ' followed with the data element

  • which describes the field.

  • If you don't have a data element use the

  • comment without a data element name

  • 3.) The second line shows the fieldname of the

  • structure, the fieldname must consist of

  • a fieldname and optional the character '_' and

  • three numbers and the field length in brackets

  • 4.) Each field must be type C.

*

      • Generated data section with specific formatting - DO NOT CHANGE ***

DATA: BEGIN OF record OCCURS 0,

  • data element: LIF16

lifnr_001(016),

  • data element: BUKRS

bukrs_002(004),

  • data element: KTOKK

ktokk_003(004),

  • data element: ANRED

anred_004(015),

  • data element: NAME1_GP

name1_005(035),

  • data element: SORTL

sortl_006(010),

  • data element: LAND1_GP

land1_007(003),

  • data element: KUNNR

kunnr_008(010),

  • data element: BANKS

banks_01_009(003),

  • data element: BANKK

bankl_01_010(015),

  • data element: BANKN

bankn_01_011(018),

  • data element: AKONT

akont_012(010),

  • data element: FDGRV

fdgrv_013(010),

END OF record.

DATA: IT_BDC LIKE BDCDATA OCCURS 0 WITH HEADER LINE.

DATA: V_BANKS(14), V_BANKL(14), V_BANKN(14), V_NUMC(2) TYPE N,

V_TABIX LIKE SY-TABIX.

      • End generated data section ***

START-OF-SELECTION.

perform upload_data.

PERFORM open_group.

SORT RECORD BY LIFNR_001.

LOOP AT RECORD.

V_TABIX = SY-TABIX.

AT NEW KUNNR_008.

REFRESH IT_BDC.

CLEAR V_NUMC.

PERFORM bdc_dynpro USING 'SAPMF02K' '0105'.

PERFORM bdc_field USING 'BDC_CURSOR'

'RF02K-KTOKK'.

PERFORM bdc_field USING 'BDC_OKCODE'

'/00'.

PERFORM bdc_field USING 'RF02K-LIFNR'

record-lifnr_001.

PERFORM bdc_field USING 'RF02K-BUKRS'

record-bukrs_002.

PERFORM bdc_field USING 'RF02K-KTOKK'

record-ktokk_003.

PERFORM bdc_dynpro USING 'SAPMF02K' '0110'.

PERFORM bdc_field USING 'BDC_CURSOR'

'LFA1-LAND1'.

PERFORM bdc_field USING 'BDC_OKCODE'

'/00'.

PERFORM bdc_field USING 'LFA1-ANRED'

record-anred_004.

PERFORM bdc_field USING 'LFA1-NAME1'

record-name1_005.

PERFORM bdc_field USING 'LFA1-SORTL'

record-sortl_006.

PERFORM bdc_field USING 'LFA1-LAND1'

record-land1_007.

PERFORM bdc_dynpro USING 'SAPMF02K' '0120'.

PERFORM bdc_field USING 'BDC_CURSOR'

'LFA1-KUNNR'.

PERFORM bdc_field USING 'BDC_OKCODE'

'/00'.

PERFORM bdc_field USING 'LFA1-KUNNR'

record-kunnr_008.

PERFORM bdc_dynpro USING 'SAPMF02K' '0130'.

PERFORM bdc_field USING 'BDC_CURSOR'

'LFBK-BANKN(01)'.

PERFORM bdc_field USING 'BDC_OKCODE'

'=ENTR'.

ENDAT.

V_NUMC = V_NUMC + 1.

CONCATENATE 'LFBK-BANKS(' V_NUMC ')' INTO V_BANKS.

CONCATENATE 'LFBK-BANKL(' V_NUMC ')' INTO V_BANKL.

CONCATENATE 'LFBK-BANKN(' V_NUMC ')' INTO V_BANKN.

PERFORM bdc_field USING V_BANKS

record-banks_01_009.

PERFORM bdc_field USING V_BANKL

record-bankl_01_010.

PERFORM bdc_field USING V_BANKN

record-bankn_01_011.

AT END OF KUNNR_008.

READ TABLE RECORD INDEX V_TABIX.

PERFORM bdc_dynpro USING 'SAPMF02K' '0130'.

PERFORM bdc_field USING 'BDC_CURSOR'

'LFBK-BANKS(01)'.

PERFORM bdc_field USING 'BDC_OKCODE'

'=ENTR'.

PERFORM bdc_dynpro USING 'SAPMF02K' '0210'.

PERFORM bdc_field USING 'BDC_CURSOR'

'LFB1-FDGRV'.

PERFORM bdc_field USING 'BDC_OKCODE'

'=UPDA'.

PERFORM bdc_field USING 'LFB1-AKONT'

record-akont_012.

PERFORM bdc_field USING 'LFB1-FDGRV'

record-fdgrv_013.

PERFORM bdc_transaction USING 'FK01'.

ENDAT.

ENDLOOP.

PERFORM close_group.

----


  • Start new screen *

----


FORM BDC_DYNPRO USING PROGRAM DYNPRO.

CLEAR IT_BDC.

IT_BDC-PROGRAM = PROGRAM.

IT_BDC-DYNPRO = DYNPRO.

IT_BDC-DYNBEGIN = 'X'.

APPEND IT_BDC.

ENDFORM.

----


  • Insert field *

----


FORM BDC_FIELD USING FNAM FVAL.

IF FVAL <> ' '.

CLEAR IT_BDC.

IT_BDC-FNAM = FNAM.

IT_BDC-FVAL = FVAL.

APPEND IT_BDC.

ENDIF.

ENDFORM.

&----


*& Form upload_data

&----


form upload_data .

CALL FUNCTION 'WS_UPLOAD'

EXPORTING

  • CODEPAGE = ' '

FILENAME = 'c:\bank.txt'

FILETYPE = 'ASC'

  • HEADLEN = ' '

  • LINE_EXIT = ' '

  • TRUNCLEN = ' '

  • USER_FORM = ' '

  • USER_PROG = ' '

  • DAT_D_FORMAT = ' '

  • IMPORTING

  • FILELENGTH =

TABLES

data_tab = record

  • 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

  • NO_AUTHORITY = 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. " upload_data

&----


*& Form open_group

&----


form open_group .

CALL FUNCTION 'BDC_OPEN_GROUP'

EXPORTING

CLIENT = SY-MANDT

  • DEST = FILLER8

GROUP = 'Z_NVK_TBL'

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

&----


*& Form close_group

&----


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_transaction

&----


  • text

----


  • -->P_0209 text

----


form bdc_transaction using T_CODE.

CALL FUNCTION 'BDC_INSERT'

EXPORTING

TCODE = T_CODE

  • POST_LOCAL = NOVBLOCAL

  • PRINTING = NOPRINT

  • SIMUBATCH = ' '

  • CTUPARAMS = ' '

TABLES

dynprotab = IT_BDC

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

Regards

Read only

Former Member
0 Likes
1,001

It has the following 3 function modules with detailed parameter passed to it .

<b>

1.bdc_open_group

2.bdc_insert

3.bdc_close_group</b>

***INCLUDE ZBDCRECX1. 
*  When you generate the program using SHDB, you can replace it 
*  with this if you want to execute it immediately without having 
*  to process it using SM35. 
* 
*  During testing you can used the original include. 
* 
*  For example, 
*  include zbdcrecx1.   "After test 
*  include bdcrecx.     "Before test 
*  ------------------------------------- 
*  Declare your internal table as RECORD 
*  ------------------------------------- 
*  for programs doing a data transfer by creating a batch-input session 
*  and 
*  for programs doing a data transfer by CALL TRANSACTION USING 

*SELECTION-SCREEN BEGIN OF LINE. 
*  PARAMETERS SESSION RADIOBUTTON GROUP CTU.  "create session 
*  SELECTION-SCREEN COMMENT 3(20) TEXT-S07 FOR FIELD SESSION. 
*  selection-screen position 45. 
*  PARAMETERS CTU RADIOBUTTON GROUP CTU DEFAULT 'X'. "call transaction 
*  SELECTION-SCREEN COMMENT 48(20) TEXT-S08 FOR FIELD CTU. 
*SELECTION-SCREEN END OF LINE. 
PARAMETERS: SESSION NO-DISPLAY, 
            CTU     NO-DISPLAY DEFAULT 'X'. 

*SELECTION-SCREEN BEGIN OF LINE. 
*  SELECTION-SCREEN COMMENT 3(20) TEXT-S01 FOR FIELD GROUP. 
*  selection-screen position 25. 
*  PARAMETERS GROUP(12).                      "group name of session 
*  SELECTION-SCREEN COMMENT 48(20) TEXT-S05 FOR FIELD CTUMODE. 
*  selection-screen position 70. 
*  PARAMETERS CTUMODE LIKE CTU_PARAMS-DISMODE DEFAULT 'N'. 
*                                      "A: show all dynpros 
*                                      "E: show dynpro on error only 
*                                      "N: do not display dynpro 
*SELECTION-SCREEN END OF LINE. 
PARAMETERS: GROUP(12) NO-DISPLAY, 
            CTUMODE   NO-DISPLAY DEFAULT 'N'. 

*SELECTION-SCREEN BEGIN OF LINE. 
*  SELECTION-SCREEN COMMENT 3(20) TEXT-S02 FOR FIELD USER. 
*  selection-screen position 25. 
*  PARAMETERS: USER(12) DEFAULT SY-UNAME.    "user for session in batch 
*  SELECTION-SCREEN COMMENT 48(20) TEXT-S06 FOR FIELD CUPDATE. 
*  selection-screen position 70. 
*  PARAMETERS CUPDATE LIKE CTU_PARAMS-UPDMODE DEFAULT 'L'. 
*                                      "S: synchronously 
*                                      "A: asynchronously 
*                                      "L: local 
*SELECTION-SCREEN END OF LINE. 
PARAMETERS: USER(12) NO-DISPLAY DEFAULT SY-UNAME, 
            CUPDATE LIKE CTU_PARAMS-UPDMODE DEFAULT 'L' NO-DISPLAY. 

*SELECTION-SCREEN BEGIN OF LINE. 
*  SELECTION-SCREEN COMMENT 3(20) TEXT-S03 FOR FIELD KEEP. 
*  selection-screen position 25. 
*  PARAMETERS: KEEP AS CHECKBOX.       "' ' = delete session if finished 
*                                      "'X' = keep   session if finished 
*  SELECTION-SCREEN COMMENT 48(20) TEXT-S09 FOR FIELD E_GROUP. 
*  selection-screen position 70. 
*  parameters E_GROUP(12).             "group name of error-session 
*SELECTION-SCREEN END OF LINE. 
PARAMETERS: KEEP        NO-DISPLAY, 
            E_GROUP(12) NO-DISPLAY. 

*SELECTION-SCREEN BEGIN OF LINE. 
*  SELECTION-SCREEN COMMENT 3(20) TEXT-S04 FOR FIELD HOLDDATE. 
*  selection-screen position 25. 
*  PARAMETERS: HOLDDATE LIKE SY-DATUM. 
*  SELECTION-SCREEN COMMENT 51(17) TEXT-S02 FOR FIELD E_USER. 
*  selection-screen position 70. 
*  PARAMETERS: E_USER(12) DEFAULT SY-UNAME.    "user for error-session 
*SELECTION-SCREEN END OF LINE. 
PARAMETERS: HOLDDATE LIKE SY-DATUM NO-DISPLAY, 
           E_USER(12) DEFAULT SY-UNAME NO-DISPLAY. 

*SELECTION-SCREEN BEGIN OF LINE. 
*  SELECTION-SCREEN COMMENT 51(17) TEXT-S03 FOR FIELD E_KEEP. 
*  selection-screen position 70. 
*  PARAMETERS: E_KEEP AS CHECKBOX.     "' ' = delete session if finished 
*                                      "'X' = keep   session if finished 
*SELECTION-SCREEN END OF LINE. 
PARAMETERS: E_KEEP NO-DISPLAY. 

*SELECTION-SCREEN BEGIN OF LINE. 
*  SELECTION-SCREEN COMMENT 51(17) TEXT-S04 FOR FIELD E_HDATE. 
*  selection-screen position 70. 
*  PARAMETERS: E_HDATE LIKE SY-DATUM. 
*SELECTION-SCREEN END OF LINE. 
* 
*SELECTION-SCREEN SKIP. 
PARAMETERS: E_HDATE LIKE SY-DATUM NO-DISPLAY. 

*SELECTION-SCREEN BEGIN OF LINE. 
*  SELECTION-SCREEN COMMENT 1(33) TEXT-S10 FOR FIELD NODATA. 
*  PARAMETERS: NODATA DEFAULT '/' LOWER CASE.          "nodata 
*SELECTION-SCREEN END OF LINE. 
PARAMETERS: NODATA DEFAULT '/' LOWER CASE NO-DISPLAY. 

*SELECTION-SCREEN BEGIN OF LINE. 
*  SELECTION-SCREEN COMMENT 1(33) FOR FIELD SMALLLOG. 
*  PARAMETERS: SMALLLOG as checkbox.  "' ' = log all transactions 
*                                     "'X' = no transaction logging 
*SELECTION-SCREEN END OF LINE. 
PARAMETERS: SMALLLOG NO-DISPLAY. 

*----------------------------------------------------------------------* 
*   data definition 
*----------------------------------------------------------------------* 
*       Batchinputdata of single transaction 
DATA:   BDCDATA LIKE BDCDATA    OCCURS 0 WITH HEADER LINE. 
*       messages of call transaction 
DATA:   MESSTAB LIKE BDCMSGCOLL OCCURS 0 WITH HEADER LINE. 
*       error session opened (' ' or 'X') 
DATA:   E_GROUP_OPENED. 
*       message texts 
TABLES: T100. 
  

*----------------------------------------------------------------------* 
*   at selection screen                                                * 
*----------------------------------------------------------------------* 
AT SELECTION-SCREEN. 
* group and user must be filled for create session 
  IF SESSION = 'X' AND 
     GROUP = SPACE OR USER = SPACE. 
    MESSAGE E613(MS). 
  ENDIF. 

*----------------------------------------------------------------------* 
*   open dataset                                                       * 
*----------------------------------------------------------------------* 
FORM OPEN_DATASET USING P_DATASET. 
  OPEN DATASET P_DATASET IN TEXT MODE. 
  IF SY-SUBRC <> 0. 
    WRITE: / TEXT-E00, SY-SUBRC. 
    STOP. 
  ENDIF. 
ENDFORM. 

*----------------------------------------------------------------------* 
*   close dataset                                                      * 
*----------------------------------------------------------------------* 
FORM CLOSE_DATASET USING P_DATASET. 
  CLOSE DATASET P_DATASET. 
ENDFORM. 

*----------------------------------------------------------------------* 
*   create batchinput session                                          * 
*   (not for call transaction using...)                                * 
*----------------------------------------------------------------------* 
FORM OPEN_GROUP. 
  IF SESSION = 'X'. 
    SKIP. 
    WRITE: /(20) 'Create group'(I01), GROUP. 
    SKIP. 
*   open batchinput group 
    CALL FUNCTION 'BDC_OPEN_GROUP' 
         EXPORTING  CLIENT   = SY-MANDT 
                    GROUP    = GROUP 
                    USER     = USER 
                    KEEP     = KEEP 
                    HOLDDATE = HOLDDATE. 
    WRITE: /(30) 'BDC_OPEN_GROUP'(I02), 
            (12) 'returncode:'(I05), 
                 SY-SUBRC. 
  ENDIF. 
ENDFORM. 

*----------------------------------------------------------------------* 
*   end batchinput session                                             * 
*   (call transaction using...: error session)                         * 
*----------------------------------------------------------------------* 
FORM CLOSE_GROUP. 
  IF SESSION = 'X'. 
*   close batchinput group 
    CALL FUNCTION 'BDC_CLOSE_GROUP'. 
    WRITE: /(30) 'BDC_CLOSE_GROUP'(I04), 
            (12) 'returncode:'(I05), 
                 SY-SUBRC. 
  ELSE. 
    IF E_GROUP_OPENED = 'X'. 
      CALL FUNCTION 'BDC_CLOSE_GROUP'. 
      WRITE: /. 
      WRITE: /(30) 'Fehlermappe wurde erzeugt'(I06). 
    ENDIF. 
  ENDIF. 
ENDFORM. 

*----------------------------------------------------------------------* 
*        Start new transaction according to parameters                 * 
*----------------------------------------------------------------------* 
FORM BDC_TRANSACTION USING TCODE. 
  DATA: L_MSTRING(480). 
  DATA: L_SUBRC LIKE SY-SUBRC. 
* batch input session 
  IF SESSION = 'X'. 
    CALL FUNCTION 'BDC_INSERT' 
         EXPORTING TCODE     = TCODE 
         TABLES    DYNPROTAB = BDCDATA. 
    IF SMALLLOG <> 'X'. 
      WRITE: / 'BDC_INSERT'(I03), 
               TCODE, 
               'returncode:'(I05), 
               SY-SUBRC, 
               'RECORD:', 
               SY-INDEX. 
    ENDIF. 
* call transaction using 
  ELSE. 
    REFRESH MESSTAB. 
    CALL TRANSACTION TCODE USING BDCDATA 
                     MODE   CTUMODE 
                     UPDATE CUPDATE 
                     MESSAGES INTO MESSTAB. 
    L_SUBRC = SY-SUBRC. 
    IF SMALLLOG <> 'X'. 
*      WRITE: / 'CALL_TRANSACTION', 
*               TCODE, 
*               'returncode:'(I05), 
*               L_SUBRC, 
*               'RECORD:', 
*               SY-INDEX. 
      IF SY-SUBRC = 0. 
         FORMAT COLOR OFF. 
         WRITE:/ 'Successfully Process ', MESSTAB, RECORD. 
      ELSE. 
         FORMAT COLOR COL_NEGATIVE. 
         WRITE:/ 'Failed Process ', MESSTAB, RECORD. 
      ENDIF. 
      LOOP AT MESSTAB. 
        SELECT SINGLE * FROM T100 WHERE SPRSL = MESSTAB-MSGSPRA 
                                  AND   ARBGB = MESSTAB-MSGID 
                                  AND   MSGNR = MESSTAB-MSGNR. 
        IF SY-SUBRC = 0. 
          L_MSTRING = T100-TEXT. 
          IF L_MSTRING CS '&1'. 
            REPLACE '&1' WITH MESSTAB-MSGV1 INTO L_MSTRING. 
            REPLACE '&2' WITH MESSTAB-MSGV2 INTO L_MSTRING. 
            REPLACE '&3' WITH MESSTAB-MSGV3 INTO L_MSTRING. 
            REPLACE '&4' WITH MESSTAB-MSGV4 INTO L_MSTRING. 
          ELSE. 
            REPLACE '&' WITH MESSTAB-MSGV1 INTO L_MSTRING. 
            REPLACE '&' WITH MESSTAB-MSGV2 INTO L_MSTRING. 
            REPLACE '&' WITH MESSTAB-MSGV3 INTO L_MSTRING. 
            REPLACE '&' WITH MESSTAB-MSGV4 INTO L_MSTRING. 
          ENDIF. 
          CONDENSE L_MSTRING. 
          WRITE: / MESSTAB-MSGTYP, L_MSTRING(250). 
        ELSE. 
          WRITE: / MESSTAB. 
        ENDIF. 
      ENDLOOP. 
      SKIP. 
    ENDIF. 
** Erzeugen fehlermappe ************************************************ 
    IF L_SUBRC <> 0 AND E_GROUP <> SPACE. 
      IF E_GROUP_OPENED = ' '. 
        CALL FUNCTION 'BDC_OPEN_GROUP' 
             EXPORTING  CLIENT   = SY-MANDT 
                        GROUP    = E_GROUP 
                        USER     = E_USER 
                        KEEP     = E_KEEP 
                        HOLDDATE = E_HDATE. 
         E_GROUP_OPENED = 'X'. 
      ENDIF. 
      CALL FUNCTION 'BDC_INSERT' 
           EXPORTING TCODE     = TCODE 
           TABLES    DYNPROTAB = BDCDATA. 
    ENDIF. 
  ENDIF. 
  REFRESH BDCDATA. 
ENDFORM. 

*----------------------------------------------------------------------* 
*        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 <> NODATA. 
    CLEAR BDCDATA. 
    BDCDATA-FNAM = FNAM. 
    BDCDATA-FVAL = FVAL. 
    APPEND BDCDATA. 
  ENDIF. 
ENDFORM.  

reward points if it is usefull .....

Girish