2007 Jun 29 6:36 AM
hi
using bdc to upload the data in internal table using these commands
1.bdc_open_group
2.bdc_insert
3.bdc_close_group
2007 Jun 29 6:43 AM
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
2007 Jun 29 6:38 AM
2007 Jun 29 6:41 AM
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
2007 Jun 29 6:43 AM
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
| User | Count |
|---|---|
| 3 | |
| 2 | |
| 2 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 |