BDC

*----------------------------------------------------------------------*
* INCLUDE ZINCL_BDC *
*----------------------------------------------------------------------*
DATA : _filename LIKE rlgrap-filename ,
_filetype LIKE rlgrap-filetype VALUE 'DAT'.

DATA : session(1) TYPE c VALUE ' ',
ctu(1) TYPE c VALUE 'X' ,
data_key(80),key_len TYPE i VALUE 5.
DATA : group(12) TYPE c,
ctumode(1) TYPE c .
*ctumode = p_auto.

DATA : user(12) TYPE c VALUE 'TESTING'.
*user = sy-uname.
DATA : cupdate(1) TYPE c VALUE 'L'.
DATA : keep(1) TYPE c,
e_group(12) TYPE c.
DATA : holddate LIKE sy-datum,
e_user(12) TYPE c.
*e_user = sy-uname.
*e_user = user.
DATA : e_keep(1) TYPE c VALUE ' '.
DATA : e_hdate LIKE sy-datum.
DATA: nodata VALUE '/'.

DATA: bdcdata LIKE bdcdata OCCURS 0 WITH HEADER LINE.
DATA: messtab LIKE bdcmsgcoll OCCURS 0 WITH HEADER LINE.
DATA: e_group_opened.
TABLES: t100.

DATA: smalllog.

*----------------------
* 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
FOR INPUT IN TEXT MODE
ENCODING DEFAULT.
IF sy-subrc <> 0.
WRITE: / text-e00, sy-subrc.
STOP.
ENDIF.
ENDFORM. "OPEN_DATASET
*----------------
* close dataset
*----------------
FORM close_dataset USING p_dataset.
CLOSE DATASET p_dataset.
ENDFORM. "close_dataset

*-----------------------------*
* 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
user = sy-uname
keep = keep
holddate = holddate.
WRITE: /(30) 'BDC_OPEN_GROUP'(i02),
(12) 'returncode:'(i05),
sy-subrc.
ENDIF.
ENDFORM. "open_group

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

*-----------------------------------------------------
* 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.
ctumode = p_auto.
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.
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
user = sy-uname
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. "bdc_transaction

*------------------------
* Start new screen
*------------------------
FORM bdc_dynpro USING program dynpro.
CLEAR bdcdata.
bdcdata-program = program.
bdcdata-dynpro = dynpro.
bdcdata-dynbegin = 'X'.
APPEND bdcdata.
ENDFORM. "bdc_dynpro

*--------------------
* Insert field
*--------------------
FORM bdc_field USING fnam fval.
IF fval <> nodata.
CLEAR bdcdata.
bdcdata-fnam = fnam.
bdcdata-fval = fval.
APPEND bdcdata.
ENDIF.
ENDFORM. "bdc_field

DEFINE new_scr.
clear bdcdata.
bdcdata-program = &1.
bdcdata-dynpro = &2.
bdcdata-dynbegin = 'X'.
append bdcdata.
clear bdcdata.
END-OF-DEFINITION.

DEFINE add_fld.
bdcdata-fnam = &1.
bdcdata-fval = &2.
append bdcdata.
END-OF-DEFINITION.
*----------------------
* Form update_from_file
*----------------------
DEFINE update_from_file.
call function 'WS_UPLOAD'
exporting
filename = &1
filetype = 'DAT'
tables
data_tab = &2
exceptions
conversion_error = 1
file_open_error = 2
file_read_error = 3
invalid_type = 4
invalid_table_width = 7
no_batch = 5
unknown_error = 6
gui_refuse_filetransfer = 8
customer_error = 9
others = 10.
END-OF-DEFINITION.

*----------------------
* Form download_to_file
*----------------------
DEFINE down_to_file.
call function 'DOWNLOAD'
exporting
filename = &1
filetype = 'ASC'
item = 'Download to Excel file'
tables
data_tab = &2
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
others = 10.
END-OF-DEFINITION.
* END of REPORT *

你可能感兴趣的:(C++,c,C#,Excel)