Thursday, June 12, 2008

BDC Session Method

REPORT zz_mae_bdc NO STANDARD PAGE HEADING LINE-SIZE 255.
TYPE-POOLS truxs.
DATA it_raw TYPE truxs_t_text_data.
*=== data declaration for internal table
DATA: BEGIN OF it_bdc OCCURS 0,
title_medi LIKE sza1_d0100-title_medi,
name1 LIKE addr1_data-name1,
sort1 LIKE addr1_data-sort1,
street LIKE addr1_data-street,
city2 LIKE addr1_data-city2,
post_code1 LIKE addr1_data-post_code1,
country LIKE addr1_data-country,
region LIKE addr1_data-region,
po_box LIKE addr1_data-po_box,
post_code2 LIKE addr1_data-post_code2,
langu LIKE addr1_data-langu,
tel_number LIKE sza1_d0100-tel_number,
fax_number LIKE sza1_d0100-fax_number,
smtp_addr LIKE sza1_d0100-smtp_addr,
END OF it_bdc.

DATA it_final LIKE TABLE OF it_bdc WITH HEADER LINE.
DATA bdcdata LIKE bdcdata OCCURS 0 WITH HEADER LINE.
*=== selection screen for input
SELECTION-SCREEN: BEGIN OF BLOCK b1 WITH FRAME TITLE tit.
SELECTION-SCREEN SKIP 1.
PARAMETERS: p_file TYPE rlgrap-filename.
SELECTION-SCREEN SKIP 1.
SELECTION-SCREEN: END OF BLOCK b1.
*=== initilization
INITIALIZATION.
MOVE 'FILE NAME' TO tit.
*=== selection screen for F4 help
AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_file.
CALL FUNCTION 'F4_FILENAME'
EXPORTING
field_name = 'P_FILE'
IMPORTING
file_name = p_file.

START-OF-SELECTION.
*=== To convert XLS to SAP
CALL FUNCTION 'TEXT_CONVERT_XLS_TO_SAP'
EXPORTING
* I_FIELD_SEPERATOR = 'X'
* I_LINE_HEADER = 'X'
i_tab_raw_data = it_raw
i_filename = p_file
TABLES
i_tab_converted_data = it_final.
* EXCEPTIONS
* CONVERSION_FAILED = 1
* OTHERS = 2


CALL FUNCTION 'BDC_OPEN_GROUP'
EXPORTING
client = sy-mandt
* DEST = FILLER8
group = 'ZQM_TEST_MAE'
* HOLDDATE = FILLER8
keep = 'X'
user = sy-uname.

LOOP AT it_final.
PERFORM bdc_dynpro USING 'SAPLSZA1' '0101'.
PERFORM bdc_field USING 'BDC_CURSOR'
'ADDR1_DATA-COUNTRY'.
PERFORM bdc_field USING 'BDC_OKCODE'
'=SAVE'.
PERFORM bdc_field USING 'SZA1_D0100-TITLE_MEDI'
it_final-title_medi.
PERFORM bdc_field USING 'ADDR1_DATA-NAME1'
it_final-name1.
PERFORM bdc_field USING 'ADDR1_DATA-SORT1'
it_final-sort1.
PERFORM bdc_field USING 'ADDR1_DATA-STREET'
it_final-street.
PERFORM bdc_field USING 'ADDR1_DATA-CITY2'
it_final-city2.
PERFORM bdc_field USING 'ADDR1_DATA-POST_CODE1'
it_final-post_code1.
PERFORM bdc_field USING 'ADDR1_DATA-COUNTRY'
it_final-country.
PERFORM bdc_field USING 'ADDR1_DATA-REGION'
it_final-region.
PERFORM bdc_field USING 'ADDR1_DATA-PO_BOX'
it_final-po_box.
PERFORM bdc_field USING 'ADDR1_DATA-POST_CODE2'
it_final-post_code2.
PERFORM bdc_field USING 'ADDR1_DATA-LANGU'
it_final-langu.
PERFORM bdc_field USING 'SZA1_D0100-TEL_NUMBER'
it_final-tel_number.
PERFORM bdc_field USING 'SZA1_D0100-FAX_NUMBER'
it_final-fax_number.
PERFORM bdc_field USING 'SZA1_D0100-SMTP_ADDR'
it_final-smtp_addr.
CALL FUNCTION 'BDC_INSERT'
EXPORTING
tcode = 'ZZ_MAE_TEST'
TABLES
dynprotab = bdcdata
.
IF sy-subrc <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
REFRESH bdcdata.
ENDLOOP.
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.
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.

No comments:

Powered By Blogger