Vous êtes sur la page 1sur 3

*http://sap-abapworld.blogspot.

com/2014/07/bdc-using-call-transaction-method-
in.html
REPORT SSS.
DATA: BDCDATA LIKE BDCDATA OCCURS 0 WITH HEADER LINE.
* messages of call transaction
DATA: MESSTAB LIKE BDCMSGCOLL OCCURS 0 WITH HEADER LINE.
TYPES : BEGIN OF ty_excel,
mbrsh TYPE mbrsh,
mtart TYPE mtart,
maktx TYPE maktx,
matkl TYPE matkl,
meins TYPE meins,
END OF ty_excel.

TYPES: BEGIN OF ty_mes_res,


message TYPE string,
END OF ty_mes_res.
DATA:
gv_name TYPE rlgrap-filename,
git_upl TYPE STANDARD TABLE OF ty_excel,
gwa_upl TYPE ty_excel,
git_mess TYPE STANDARD TABLE OF bdcmsgcoll,
gwa_mess TYPE bdcmsgcoll,
git_mes_res TYPE STANDARD TABLE OF ty_mes_res,
gwa_mes_res TYPE ty_mes_res,
gv_msg TYPE string,
gv_row_num TYPE char2.

TYPES: FS_STRUCT(4096) TYPE C OCCURS 0.


DATA: G_DAT TYPE FS_STRUCT .
SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-001.
PARAMETERS : p_file TYPE ibipparms-path.
SELECTION-SCREEN END OF BLOCK b1.

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.

AT SELECTION-SCREEN.

gv_name = p_file.
CALL FUNCTION 'TEXT_CONVERT_XLS_TO_SAP'
EXPORTING
* I_FIELD_SEPERATOR =
* I_LINE_HEADER =
I_TAB_RAW_DATA = G_DAT
I_FILENAME = p_file
TABLES
I_TAB_CONVERTED_DATA = git_upl
* EXCEPTIONS
* CONVERSION_FAILED = 1
* OTHERS = 2
.
IF SY-SUBRC <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.

start-of-selection.

LOOP AT git_upl INTO gwa_upl.


MOVE sy-tabix TO gv_row_num .
REFRESH bdcdata.

perform bdc_dynpro using 'SAPLMGMM' '0060'.


perform bdc_field using 'BDC_CURSOR'
'RMMG1-MTART'.
perform bdc_field using 'BDC_OKCODE'
'/00'.
perform bdc_field using 'RMMG1-MBRSH'
gwa_upl-mbrsh."record-MBRSH_001.
perform bdc_field using 'RMMG1-MTART'
gwa_upl-mtart."record-MTART_002.
perform bdc_dynpro using 'SAPLMGMM' '0070'.
perform bdc_field using 'BDC_CURSOR'
'MSICHTAUSW-DYTXT(01)'.
perform bdc_field using 'BDC_OKCODE'
'=ENTR'.
perform bdc_field using 'MSICHTAUSW-KZSEL(01)'
'X'."record-KZSEL_01_003.
perform bdc_dynpro using 'SAPLMGMM' '4004'.
perform bdc_field using 'BDC_OKCODE'
'/00'.
perform bdc_field using 'MAKT-MAKTX'
gwa_upl-maktx."record-MAKTX_004.
perform bdc_field using 'BDC_CURSOR'
'MARA-MATKL'.
perform bdc_field using 'MARA-MEINS'
gwa_upl-meins."record-MEINS_005.
perform bdc_field using 'MARA-MATKL'
gwa_upl-matkl."record-MATKL_006.
perform bdc_dynpro using 'SAPLSPO1' '0300'.
perform bdc_field using 'BDC_OKCODE'
'=YES'.

REFRESH : git_mess,git_mes_res.
CALL TRANSACTION 'MM01'
USING bdcdata
MODE 'N'
UPDATE 'S'
MESSAGES INTO git_mess.

LOOP AT git_mess INTO gwa_mess.


CLEAR gv_msg.
CALL FUNCTION 'FORMAT_MESSAGE'
EXPORTING
id = gwa_mess-msgid
lang = '-D'
no = gwa_mess-msgnr
v1 = gwa_mess-msgv1
* V2 = SY-MSGV2
* V3 = SY-MSGV3
v4 = gwa_mess-msgv4
IMPORTING
msg = gv_msg.
MOVE gv_msg TO gwa_mes_res-message.
APPEND gwa_mes_res TO git_mes_res.
CLEAR : gwa_mes_res,gwa_mess.
ENDLOOP.
CONDENSE gv_row_num.
LOOP AT git_mes_res INTO gwa_mes_res.
WRITE : / 'Record -', gv_row_num,'|', gwa_upl-maktx HOTSPOT ON, '|',
gwa_mes_res-message COLOR 3.
HIDE gwa_upl-maktx.
ENDLOOP.
CLEAR :gv_row_num,gwa_upl.
ENDLOOP.

*perform close_group.
*perform close_dataset using dataset.
* ----------------------------------------------------------------------*
* 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 <> ''.
CLEAR BDCDATA.
BDCDATA-FNAM = FNAM.
BDCDATA-FVAL = FVAL.
APPEND BDCDATA.
ENDIF.
ENDFORM. "BDC_FIELD

Vous aimerez peut-être aussi