REPORT zz_mae_bdc NO STANDARD PAGE HEADING LINE-SIZE 255.
TYPE-POOLS truxs.
DATA it_raw TYPE truxs_t_text_data.
DATA: w_textout LIKE t100-text.
*Used to stores error information from CALL TRANSACTION Function Module
DATA: BEGIN OF messtab OCCURS 0.
INCLUDE STRUCTURE bdcmsgcoll.
DATA: END OF messtab.
*=== data declaration for internal table
DATA: BEGIN OF it_bdc OCCURS 0,
title_medi LIKE sza1_d0100-title_medi,
name1 LIKE addr1_data-name1,
name2 LIKE addr1_data-name2,
name4 LIKE addr1_data-name4,
sort1 LIKE addr1_data-sort1,
street LIKE addr1_data-street,
post_code1 LIKE addr1_data-post_code1,
city1 LIKE addr1_data-city1,
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: BEGIN OF ty_error,
err_msg(73) TYPE c,
title_medi LIKE sza1_d0100-title_medi,
name1 LIKE addr1_data-name1,
name2 LIKE addr1_data-name2,
name4 LIKE addr1_data-name4,
sort1 LIKE addr1_data-sort1,
street LIKE addr1_data-street,
post_code1 LIKE addr1_data-post_code1,
city1 LIKE addr1_data-city1,
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 ty_error.
DATA it_final LIKE TABLE OF it_bdc WITH HEADER LINE.
DATA bdcdata LIKE bdcdata OCCURS 0 WITH HEADER LINE.
DATA: it_error LIKE TABLE OF ty_error 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
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-NAME2'
it_final-name2.
PERFORM bdc_field USING 'ADDR1_DATA-NAME4'
it_final-name4.
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-POST_CODE1'
it_final-post_code1.
PERFORM bdc_field USING 'ADDR1_DATA-CITY1'
it_final-city1.
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 transaction to update customer instalment text
CALL TRANSACTION 'ZZ_MAE_TEST' USING bdcdata MODE 'N' UPDATE 'S'
MESSAGES INTO messtab.
*
IF sy-subrc NE 0.
*Retrieve error messages displayed during BDC update
LOOP AT messtab WHERE msgtyp = 'E'.
*Builds actual message based on info returned from Call transaction
CALL FUNCTION 'MESSAGE_TEXT_BUILD'
EXPORTING
msgid = messtab-msgid
msgnr = messtab-msgnr
msgv1 = messtab-msgv1
msgv2 = messtab-msgv2
msgv3 = messtab-msgv3
msgv4 = messtab-msgv4
IMPORTING
message_text_output = w_textout.
ENDLOOP.
* Build error table ready for output
it_error-err_msg = w_textout.
it_error-title_medi = it_final-title_medi.
it_error-name1 = it_final-name1.
it_error-name2 = it_final-name2.
it_error-name4 = it_final-name4.
it_error-sort1 = it_final-sort1.
it_error-street = it_final-street.
it_error-post_code1 = it_final-post_code1.
it_error-city1 = it_final-city1.
it_error-country = it_final-country.
it_error-region = it_final-region.
it_error-po_box = it_final-po_box.
it_error-post_code2 = it_final-post_code2.
it_error-langu = it_final-langu.
it_error-tel_number = it_final-tel_number.
it_error-fax_number = it_final-fax_number.
it_error-smtp_addr = it_final-smtp_addr.
APPEND it_error.
CLEAR it_error.
ENDIF.
SELECT SINGLE * FROM adrc
WHERE name1 = it_final-name1
AND name2 = it_final-name2
AND addr_group = 'Z_P1'
AND chckstatus <> 'D'.
IF sy-subrc = 0.
* Partnernummer generieren und im Feld ADRESS_ID speichern
PERFORM gen_adrnr
USING '*Y'
it_final-name1
lc_maint_mode
adrc-addrnumber
CHANGING adrc-address_id.
adrc-address_id = adrc-address_id.
UPDATE adrc.
ENDIF.
* Clear bdc data table
CLEAR: bdcdata.
REFRESH: bdcdata.
ENDLOOP.
*=== download error files in destop
PERFORM download.
*----------------------------------------------------------------------*
* 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
*&---------------------------------------------------------------------*
*& Form DOWNLOAD
*&---------------------------------------------------------------------*
FORM download.
DATA l_v_path_name TYPE string.
DATA file_path(5) TYPE c VALUE 'C:\'.
CONCATENATE file_path sy-datum sy-uzeit'.' 'TXT' INTO
l_v_path_name.
CALL FUNCTION 'GUI_DOWNLOAD'
EXPORTING
filename = l_v_path_name
filetype = 'ASC'
TABLES
data_tab = it_error.
ENDFORM.
No comments:
Post a Comment