Você está na página 1de 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,
EKORG TYPE EKORG,
KTOKK TYPE KTOKK,
NAME1 TYPE NAME1,
LAND1 TYPE LAND1,
END OF ty_excel.

*RF02K-EKORG
*RF02K-KTOKK
*LFA1-NAME1
*LFA1-LAND1

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 'SAPMF02K' '0107'.
perform bdc_field using 'BDC_CURSOR'
'RF02K-KTOKK'.
perform bdc_field using 'BDC_OKCODE'
'/00'.
perform bdc_field using 'RF02K-EKORG'
gwa_upl-EKORG."record-MTART_001.
'icfc'.
perform bdc_field using 'RF02K-KTOKK'
gwa_upl-KTOKK."record-MTART_002.
'v005'.
perform bdc_dynpro using 'SAPMF02K' '0110'.
perform bdc_field using 'BDC_CURSOR'
'LFA1-LAND1'.
perform bdc_field using 'BDC_OKCODE'
'=UPDA'.
perform bdc_field using 'LFA1-NAME1'
gwa_upl-NAME1."record-MTART_003.
'ppp'.
perform bdc_field using 'LFA1-LAND1'
gwa_upl-LAND1."record-MTART_003.
'in'.
perform bdc_field using 'BDC_OKCODE'
'=YES'.

REFRESH : git_mess,git_mes_res.
CALL TRANSACTION 'MK01'
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-EKORG 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

Você também pode gostar